江苏省计算机等级考试VFP第三章归纳.docx
- 文档编号:5702900
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:13
- 大小:84.12KB
江苏省计算机等级考试VFP第三章归纳.docx
《江苏省计算机等级考试VFP第三章归纳.docx》由会员分享,可在线阅读,更多相关《江苏省计算机等级考试VFP第三章归纳.docx(13页珍藏版)》请在冰豆网上搜索。
江苏省计算机等级考试VFP第三章归纳
第四讲
程序设计
考点1:
程序文件的建立与执行
▪程序的建立或修改:
modifycommand<文件名>
•程序文件的扩展名为.prg
▪程序文件的运行:
do<程序文件>
✓运行程序文件时,系统会对程序文件(.prg)进行编译,生成“伪编译”程序(.fxp),执行程序实际上是执行.fxp文件
✓程序执行过程中,遇到以下命令作用:
•CANCEL:
终止程序运行,清除所有私有变量,返回到命令窗口
•DO:
转去执行另一个程序
▪数据输入输出命令:
•格式1:
INPUT字符表达式TO内存变量
功能:
该命令等待用户从键盘输入数据,当用户回车后,系统将表达式的值存入指定的内存变量
注:
输入的数据可以是常量、变量,也可以是表达式,但不能不输入任何内容直接按回车键。
输入字符串时必须加定界符,输入逻辑型常量时要用圆点定界(如.T.,.F.),则输入日期时间型常量时要用大括号(如{^2001-03-01})。
例:
INPUT"输入二次项系数:
"TOa
INPUT“X="TOx
▪格式2:
ACCEPT字符表达式TO内存变量
功能:
该命令等待用户从键盘输入字符串,当用
户回车后,系统将表达式的值存入指定的内存变
量。
注:
该命令只能接收字符串。
用户在输入字符串时
不需要加定界符;否则,系统会把定界符作为字符
串本身的一部分。
如果不输入任何内容而直接按回
车键,系统会把空串赋给指定的内存变量。
例:
ACCEPT TO A
▪格式3:
WAIT字符表达式TO内存变量
WINDOWTIMEOUT数值表达式
功能:
该命令显示字符表达式的值作为提示信息
,暂停程序的执行,直到用户按任意键或单击鼠
标时继续程序运行。
注:
<内存变量>用来保存用户输入的字符,其类
型为字符型。
TIMEOUT子句用来设定等待时间(秒)
例:
WAIT“输入无效,请重输…”WINDOW
TIMEOUT5:
在VFP主窗口显示一提示窗口,显示
信息“输入无效,请重输…”,之后程序暂停输入,
5秒后或按任意键提示窗口关闭,程序继续执行。
考点2:
程序基本结构
▪顺序结构
▪选择|分支结构
•If…else…endif
•Docase…case…Otherwise…EndCase
▪循环结构
•For…..EndFor
•Dowhile…EndDo
•Scan….EndScan
▪IF<条件>
<语句序列1>
else
<语句序列2>
endif
<语句序列3>
当条件为.T.时,先执行语句序列1,再执行语句
序列3;当条件为.F.时,先执行语句序列2,再执行语句
序列3;
▪IF语句可以嵌套,但不能交叉,即最先出现的if和最后出现的endif成对,最后出现的if和最先出现的endif成对
例1:
下列程序段的输出结果是
ACCEPT TO A
IF A=[]
S=0
ENDIF
S=1
?
S
RETURN
A.0 B.1 C.由A的值决定 D.程序出错
例2:
下列程序运行后,x的值为30,y的值为-2。
CLEAR
x=26
y=0
IFINT(x/2)=x/2
y=mod(x,3)
x=x+4
ENDIF
IFINT(x/3)=x/3
y=mod(x,-4)
ENDIF
?
x
?
y
例3:
下程序最后在屏幕显示的结果是:
A.oneB.two C.three D.four
SETEXACTON
s=“ni”+SPACE
(2)
IFs==“ni”
IFs=“ni”
?
“one”
ELSE
?
“two”
ENDIF
ELSE
IFs=“ni”
?
“three”
ELSE
?
“four”
ENDIF
ENDIF
RETURN
▪DOCASE
CASE<条件1>
<语句序列1>
CASE<条件2>
<语句序列2>
……
CASE<条件n>
<语句序列n>
OTHERWISE<语句序列n+1>
ENDCASE<语句序列n+2>
▪依次判断CASE后的条件是否成立,若某个
CASE后的条件成立,则执行其后的语句序列,然
后执行ENDCASE后的语句序列;
若所有CASE后的条件都不成立,则执行
OTHERWISE后的语句序列,然后执行ENDCASE
后的语句序列。
▪只有最先成立的CASE条件后的语句序列被执行
▪DOCASE和ENDCASE必须成对使用
例:
执行下列程序后,输出到屏幕上的结果为:
Clear
Store5toa,b
Store1toc,d
d=b^2-4*a*c
Docase
cased<0
d=100
cased=0
d=200
cased>0
d=300
ENDCASE
?
d
▪DOWHILE<条件>
<语句序列1>
[LOOP]
[EXIT]
ENDDO
<语句序列2>
•循环体:
<语句序列1>
•先判断DOWHILE后的条件是否成立,若为.T.则执行循环体,执行到ENDDO时返回DOWHILE重新判断条件是否成立,若为.T.则继续执行循环体;若为.F.则结束循环,转去执行ENDDO后的语句。
•LOOP:
结束循环体的本次执行,转去DOWHILE重新判断循环条件是否成立
•EXIT:
结束循环体的执行,转去执行ENDDO后的语句。
例1:
如下程序显示的结果是【13】。
s=1
i=0
dowhilei<8
s=s+i
i=i+2
enddo
?
s
例2:
执行下列程序,显示的结果是 KROW 。
one=”WORK”
two=“”
a=LEN(one)
i=a
DO WHILE i>=1
two=two+SUBSTR(one,i,1)
i=i-1
ENDDO
?
two
例3:
执行以下程序,屏幕显示为:
1015
x=8
DOWHILE.T.
x=x+1
IFx=INT(X/4)*5
?
?
x
ELSE
LOOP
ENDIF
IFx>10
EXIT
ENDIF
ENDDO
例4:
完善下列程序,使其产生10个随机的大写英文字母:
CLEAR
i=1
DOWHILEi<=10
k=INT(RAND()*100)+1
IFk>=65ANDk<=90
?
CHR(k)
i=i+1
ENDIF
ENDDO
例5:
下列程序段执行以后,内存标量y的
值是:
CLEAR
x=12345
y=0
DOWHILEX>0
y=y+x%10
x=int(x/10)
ENDDO
?
y
A.54321B.12345C.51D.15
考点2:
程序基本结构
FOR循环变量=初值to终值STEP步长
循环体
[LOOP]
[EXIT]
▪ENDFOR循环条件:
循环变量<=终值(步长为正)
循环变量>=终值(步长为负)
▪若循环条件成立,则执行循环体;每执行循环体,循环变量会增加一步长值,并再次判断循环条件是否成立,成立则继续执行循环体,不成立则执行ENDFOR后的语句序列。
▪步长值可正可负,默认为1.
▪LOOP:
结束循环体的本次执行,循环变量增加一个步长值,再次判断循环条件是否成立。
语句序列
例1:
运行下列程序后显示结果为:
南大信管系
CLEAR
C=”南京大学信息管理系”
FORI=1TOLEN(C)/2
IFI%2<>0
?
?
SUBS(C,2*I-1,2)
ENDIF
ENDFOR
例2:
完善下列程序以显示7~~1000以内能被7整除、且含有数字5的所有整数(例如35、、、、、、、、、、56、105等)。
FORn=7TO1000step7
ch=allt(str(n))
IF“5”$ch
?
n
ENDIF
ENDFOR
例3:
)完善下列程序,使程序的运行结果如右图所示。
CLEAR
FORi=1TO9
FORj=1TO9
IFi<=j
?
?
STR(i,1)+"*"+STR(j,1)+"="+STR(i*j,2)+SPACE
(2)
ENDIF
ENDFOR
?
ENDFOR
例4:
下列程序用来计算数列2/1,3/2,5/3,…,
155/18,173/19,192/20,…的前20项之和。
CLEAR
m=2
s=0
FORi=1to20
s=s+m/i
m=m+i
ENDFOR
?
s
例5:
执行下列程序后,输出到屏幕上的结果为:
3
CLEAR
cstring=“VisualFoxPro”
nresult=0
m=len(cstring)
FORn=1tom
c=SUBSTR(cstring,n,1)
IF!
BETWEEN(ASC(c),ASC(“A”),ASC(“Z”))
LOOP
ENDIF
nresult=nresult+1
ENDFOR
?
nresult
考点3:
过程或自定义函数
▪过程定义
PROCEDURE过程名
PARAMETERS形式参数列表
<命令序列>
RETURN<表达式>
ENDPROC
•形式参数最多27个
•RETURN<表达式>:
指定过程的返回值
•RETURN:
返回值为.T.
自定义函数:
FUNCTION函数名
PARAMETERS形式参数列表
<命令序列>
RETURN<表达式>
ENDFUNC
▪过程或自定义函数的调用与执行
•格式1:
DO过程名with实参1,实参2,……
•格式2:
过程名(实参1,实参2,……)
✓参数个数和数据类型必须和过程或自定义函数中所定义的参数个数及数据类型一致。
✓打开过程文件的命令:
setprocedureto过程名
▪参数传递的2种方式:
按值传递和引用传递
•格式1如果实参是变量名,地址传递.
实参是常量,值传递.
•格式2默认按值传递
•Setudfparmstovalue/reference改变格式2参数的传递方式,但对格式1不起作用
•Setudfparmstovalue按值传递,形参的改变不会影响实参的取值
•Setudfparmstoreference按引用传递,形参改变时实参也随之改变
▪无论哪种格式,一个参数用()括号括起后,就按照值传递.
▪无论哪种格式,一个参数前加@就按照引用传递.
▪从变量的作用域划分,内存变量分为全局变量,私有变量,局部变量.
▪全局变量(PUBLIC)
✓在任何模块中均可使用,又称公共变量
✓先定义后使用
例:
publicx,y
✓定义后未赋值前其初值为.F.
✓在命令窗口中直接使用的变量是全局变量
▪私有变量(private)
✓在建立它的模块及其下属模块中使用
✓先定义后使用
例:
privatex,y
✓没有通过public和local声明在程序中直接使用的变量是私有变量
▪局部变量(local)
✓在建立它的模块中使用,不能在上层或下层模块使用
✓先定义后使用
例:
localx,y
✓定义后未赋值前其初值为.F.
例1:
下列程序段执行以后,内存变量A和B的值是( )。
CLEAR
A=10
B=20
SETUDFPARMSTOREFERENCE
DOSQWITH(A),B&&参数是值传送,B是引用传送
?
A,B
PROCEDURESQ
PARAMETERSX1,Y1
X1=X1*X1
Y1=2*X1
ENDPROC
A.10200 B.100200C.10020 D.1020
例2:
在VisualFoxPro中,有如下程序:
*程序名:
TEST.PRG*子程序:
SUB1
SETTALKOFFPROCEDURESUB1
PRIVATEX,YLOCALX
X="数据库"X="应用"
Y="管理系统"Y="系统"
DOSUB1X=X+Y
?
X+YRETURN
RETURN
执行命令DOTEST后,屏幕显示的结果应是
数据库系统
例3:
下列程序段执行以后,内存变量X和Y的值是:
CLEAR
STORE3TOX
STORE5TOY
PLUS((X),Y)
?
X,Y
PROCEDUREPLUS
PARAMETERSA1,A2
A1=A1+A2
A2=A1+A2
ENDPROC
A.813 B.313 C.35 D.85
例4:
完善下列自定义函数STR_RV(),要求其功能为将一个字符串进行“反序”。
例如STR_RV(“ABCD”)的返回值为“DCBA”
FUNCTIONSTR_RV()
PARAMETERSC
p=SPACE(0)
DOWHILELEN(C)>0
x=ASC(left(C,1))
IFx>127
p=LEFT(c,2)+p
c=SUBSTR(c,3)
ELSE
p=LEFT(c,1)+p
c=SUBSTR(C,2)
ENDIF
ENDDO
returnp
ENDFUNCTION
例5:
执行下列主程序后,输出结果为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 计算机等级考试 VFP 第三 归纳