计算机二级VF第六章 程序设计基础Word文档下载推荐.docx
《计算机二级VF第六章 程序设计基础Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机二级VF第六章 程序设计基础Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
![计算机二级VF第六章 程序设计基础Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/26/f0adcc33-7843-422f-a19c-76c36ae57dbb/f0adcc33-7843-422f-a19c-76c36ae57dbb1.gif)
*以上是得到年月日星期的字符数据
?
"
今天是:
+YY+"
年"
+MM+"
月"
+DD+"
日,星期"
+XQ
*以上为程序主体部分
SETTALKON
RETURN
3.保存文件并关闭程序编辑界面(Ctrl+W)
4.在命令窗口输入运行程序的命令:
DOSX1
编写程序SX2.PRG完成如下操作:
打开表DJKS,显示所有性别为男且成绩合格的记录,将结果保存在表文件NAN.DBF中,关闭所有表文件
*SX2.PRG
CLOSEDATAALL&
&
程序中有表文件打开
SETSAFEOFF
*以上是环境设置
USEDJKS
DISPFOR性别="
男"
ANDMIN(笔试,上机)>
=60
COPYTONANFOR性别="
*以上是程序主体
CLOSDATAALL
SETSAFEON
上机模拟题第五十套第三题
*PROGZH.PRG
CLOSEDATAALL
SELECOUNT(DISTDHDW)FROMGNHTINTOARRAYDH
SELECOUNT(DISTGHDW)FROMGNHTINTOARRAYGH
SELESUM(JHSL)FROMGNHTINTOARRAYJH
UPDAJIEGUOSETNUM=DHWHERENAME="
订货单位数"
UPDAJIEGUOSETNUM=GHWHERENAME="
供货单位数"
UPDAJIEGUOSETNUM=JHWHERENAME="
订货总数"
上机模拟题第九套第三题
要点:
UPDATESCORE1SET总成绩=考试成绩+IIF(三好生,20,IIF(优秀干部,10,IIF(少数民族,5,0)))
SELE学号,总成绩FROMSCORE1ORDERBY2,1INTOTABLEZCJ
上机模拟题第一套第三题
UPDASCORESET学分=IIF(物理>
=60,2,0)+IIF(高数>
=60,3,0)+IIF(英语>
=60,4,0)
SELE学号,学分FROMSCOREORDERBY2,1DESCINTOTABLEXF
三、简单的输入命令
1.INPUT命令
格式:
INPUT[字符表达式]TO<
内存变量>
功能:
当系统执行到本命令时,会等待用户从键盘输入数据,用户可以输入任意合法的表达式。
当用户以回车结束输入时,系统将表达式的值存入指定的内存变量。
2.ACCEPT命令
ACCEPT[字符表达式]TO<
与INPUT基本相同,但会将用户输入的一切内容都当作字符型常量保存在指定的内存变量中。
3.WAIT命令
WAIT[字符表达式][TO<
][WINDOW[AT<
行>
<
列>
]][TIMEOUT<
N>
]
与ACCEPT命令相似,保存字符型数据的输入,但只能接受一位字符的输入。
说明:
(1)如果<
字符表达式>
为空串,则不显示任何提示。
如果此项省略则显示系统的默认提示“按任意键继续…”
(2)<
如果省略,则本命令相当于暂停命令
(3)WINDOW选项如果存在,则提示信息会显示在指定窗口
(4)TIMEOUT可以指定系统的等待时间
编写程序SX3.PRG,要求由用户输入圆半径,计算机返回该圆的面积
*SX3.PRG
SETTALKOFF
CLEAR
INPUT[请输入圆半径:
]TOR
?
PI()*R^2
SETTALKON
RETURN
编写程序SX4.PRG,由用户输入表名称,计算机查询该表的全部信息
*SX4.PRG
ACCEPT[请输入要查询的表名称:
]TOBM
SELE*FROM&
BM
SETTLAKON
CLOSDATAALL
编写程序SX5.PRG,由用户输入考生姓名,计算机在DJKS.DBF表中查询考生的信息进行显示
*SX5.PRG
ACCEPT'
请输入考生的姓名:
'
TOXM
SELE*FROMDJKSWHERE姓名=XM
编写程序SX6.PRG,由用户输入结论信息,计算机在DJKS.DBF表中查询符合的信息进行显示,并将结果保存在以结论命名的表中(如:
优秀.DBF)
*SX6.PRG
ACCEPT'
请输入结论:
TOJL
SELE*FROMDJKSWHERE结论=JL
SELE*FROMDJKSWHERE结论=JLINTOTABLE&
JL
第二节程序的基本结构
在标准化程序设计中,程序一般分为三种基本结构:
顺序结构、选择结构和循环结构。
一、顺序结构的程序设计
顺序结构是最简单的程序结构,它按命令在程序文件中的先后次序依次执行。
二、分支选择结构程序设计
1.IF…ELSE…ENDIF分支
IF<
条件>
<
语句序列1>
[ELSE
<
语句序列2>
ENDIF
当条件成立时,计算机将执行<
当条件不成立,将判断是否有ELSE选项存在,如存在,则执行<
反之,什么都不执行。
编写程序FZ1.PRG,由用户输入考生姓名,计算机返回该考生的相关信息
*FZ1.PRG
USEDJKS
ACCEPT"
请输入要查询的考生姓名:
LOCAFOR姓名=XM
IFFOUND()
DISPFOR姓名=XM
ELSE
查无此人!
USE
2.DOCASE…ENDCASE分支
DOCASE
CASE<
条件1>
条件2>
…
条件n>
语句序列n>
[OTHERWISE
语句序列>
ENDCASE
当系统执行到DOCASE语句时,会顺序对各个CASE后的条件做出判断,并执行第一个满足条件的CASE后的语句序列。
如果所有的CASE后条件均不满足,则判断是否有OTHERWISE选项存在,如存在,则执行OTHERWISE后的语句序列,反之,什么都不执行。
编写程序FZ2.PRG,根据用户输入的存款年限返回存款的利率.1年以内为0.03,3年以内0.05,5年以内0.07,5年以上0.09
*FZ2.PRG
INPUT"
请输入存款年限:
TONX
CASENX<
1ORINT(NX)<
>
NX
输入有误,只能输入不小于1的整数!
CASENX=1
0.03"
=3
0.05"
=5
0.07"
OTHER
0.09"
编写程序FZ3.PRG,根据用户输入的身高(CM),体重(KG)来判断体形
*FZ3.PRG
ACCEPT"
请输入姓名:
请输入性别:
TOXB
INPUT"
请输入身高(CM):
TOSG
请输入体重(KG):
TOTZ
CH=IIF(XB="
"
先生"
女士"
)
DOCASE
CASESG-115>
TZ
TX="
有些偏瘦!
ZG="
加强营养!
CASESG-105<
有些偏胖!
加强锻炼!
OTHER
完全正常!
继续保持!
ENDCASE
XM+CH+"
您的体形"
+TX+"
请"
+ZG
三、循环结构程序设计
1.DOWHILE…ENDDO循环
DOWHILE<
[LOOP]
[EXIT]
[RETURN]
ENDDO
功能:
当条件成立时,系统会执行DOWHILE与ENDDO之间的循环体;
当遇到ENDDO语句,系统会回到DOWHILE处对条件再次进行判断,直到条件不成立,系统才会执行ENDDO后的语句。
说明:
LOOP:
回到本层循环开始处,重新判断条件
EXIT:
跳出本层循环
编写程序XH1.PRG,计算从1累加至100的结果
*XH1.PRG
S=1
N=100
DOWHILEN<
=100
S=S+N
N=N+1
S
编写程序XH2.PRG,逐条显示DJKS表中的所有记录
*XH2.PRG
DOWHILE!
EOF()
DISP
WAITTIME3
SKIP
ENDDO
编写程序XH3.PRG,逐条显示DJKS表中所有成绩合格的考生信息
*XH3.PRG
LOCAFORMIN(笔试,上机)>
DOWHILFOUND()
CONTINUE
上机模拟题第五十六套第三题
*PROG1.PRG
USETABLE3
ZAP
USECHENGJI
INDEXON学号TAGSY
SELE0
USEXUESHENG
SETRELATIONTO学号INTOCHENGJI
GOTOP
IFA.数学<
60
INSERTINTOTABLE3VALUES(B.学号,B.姓名,"
数学"
A.数学)
IFA.英语<
英语"
A.英语)
IFA.信息技术<
信息技术"
A.信息技术)
SKIP
SELE*FROMTABLE3ORDERBY分数,学号DESCINTOTABLELSH
SELETABLE3
APPEFROMLSH
*注意:
表文件TABLE3.DBF要事先建立
2.FOR…ENDFOR循环
FOR<
循环变量>
=<
初值>
TO<
终值>
[STEP<
步长>
循环体>
ENDFOR|NEXT
用于指定次数的循环。
执行该语句时,首先将初值赋给循环变量,然后判断循环条件是否成立(若步长为正值,循环条件为<
=<
;
若步长为负值,循环条件为<
>
)。
若循环条件成立,则执行循环体,然后循环变量增加一个步长值,并再次判断循环条件是否成立。
的默认值为1。
编写程序XH4.PRG,显示100到999之间的"
水仙花数"
水仙花数是指各位数的立方和等于这个数本身
*XH4.PRG
FORN=100TO999
A=INT(N/100)
B=INT(N/10)%10
C=N%10
*A,B,C分别为N的百位数字,十位数字和个位数字
IFA^3+B^3+C^3=N
N
ENDIF
ENDFOR
3.SCAN…ENDSCAN循环
SCAN[范围][条件]
ENDSCAN
用于处理表中的记录。
执行该语句时,记录指针自动、依次地在当前表的指定范围内满足条件的记录上移动,对每一条记录执行循环体内的命令。
编写程序XH5.PRG,逐条显示DJKS中所有性别为男且成绩合格的考生信息
*XH5.PRG
SCANFOR性别="
CLOSEDATAALL
上机模拟题第三套第三题
USESCORE_FS
SCAN
XK=0
IF物理#-1
REPL平均分WITH平均分+物理
XK=XK+1
IF高数#-1
REPL平均分WITH平均分+高数
IF英语#-1
REPL平均分WITH平均分+英语
REPL平均分WITH平均分/XK
ENDSCAN
SELE学号,平均分FROMSCORE_FSORDERBY平均分DESC,学号INTOTABLEPJF
第三节多模块程序
一、过程的定义和调用
1.定义过程:
PROCEDURE|FUNCTION<
过程名>
[RETURN[表达式]]
ENDPROC|ENDFUNC
2.调用模块:
1)打开过程文件
SETPROCEDURETO[<
过程文件名列表>
[ADDITIVE]]
2)使用过程
DO<
|<
2:
(…)
编写程序LX1.PRG
*LX1.PRG
DOWHIL.T.
INPUT[请选择:
1.姓名查询2.结论查询3.考场查询4.退出]TOXZ
CASEXZ=1
DOSUB1
CASEXZ=2
DOSUB2
CASEXZ=3
DOSUB3
OTHER
WAIT"
谢谢使用,再见!
TIME3
*以上为主模块,以下为各子模块过程
PROCSUB1
ACCEPT[请输入姓名:
]TOXM
SELE*FROMDJKSWHERE姓名=XM
ENDPROC
PROCSUB2
ACCEPT[请输入结论:
]TOJL
SELE*FROMDJKSWHERE结论=JL
PROCSUB3
ACCEPT[请输入考场:
]TOKC
SELE*FROMDJKSWHERE考场=KC
二、参数传递
1.接受参数的命令
PARAMETERS形参变量名列表(私有)
LPARAMETERS形参变量名列表(局部)
2.传递参数的命令
格式1:
DO<
WITH实参变量名列表
格式2:
(实参变量名列表)
注意:
1.实参可以是常量、变量,也可以是一般形式的表达式。
调用模块程序时,系统会自动把实参传递给对应的形参(因此,形参个数必需不少于实参,多出的形参取初值.F.)
2.如果实参是变量,则本次传递为按引用传递,此时,实参与形参其实是同一个变量,如果形参的值发生变化,则实参也同时改变
3.如果实参是表达式,则为按值传递。
编写程序LX2.PRG,通过参数传递计算最大公约数
*LX2.PRG
请输入第1个自然数:
TON1
请输入第2个自然数:
TON2
DOSUBWITHMAX(N1,N2),MIN(N1,N2)
PROCSUB
PARAA,B
FORN=BTO1STEP–1
IFA%N=0ANDB%N=0
最大公约数为:
+ALLT(STR(N))
EXIT
编写自定义函数"
CDATE(D)"
*CDATE.PRG
PARARQ
IFVARTYPE(RQ)<
D"
&
D必须是大写
RQ=DATE()
XRQ=DTOC(RQ,1)
YY=LEFT(XRQ,4)
MM=SUBS(XRQ,5,2)
DD=RIGHT(XRQ,2)
XQ="
XQ=SUBS(XQ,DOW(RQ)*2-1,2)
FHZ=YY+"
RETURNFHZ
注:
保存完毕后,在命令窗口输入
CDATE(),CDATE({^2008-8-8})
三、变量的作用域
1.公共变量(在任何模块中都可以使用的变量,要先建立后使用)
PUBLIC<
内存变量名列表>
2.私有变量(在程序中直接使用,不用事先定义,可用于本模块以及其下属的各层模块,建立该变量的模块执行结束后,变量会自动清除)
3.局部变量(只能在建立它的模块中使用,要先建立后使用)
LOCAL<
4.屏蔽上层模块中可能出现的变量
PRIVATE<
PRIVATE[LIKE<
通配符>
]|[EXCEPT<