2012年计算机二级VFP程序设计基础课后习题及答案
第七章 程序设计基础
大纲要求
1、 命令文件的建立与运行:
(1) 程序文件的建立。
(2) 简单的交互式输入输出命令。
(3) 应用程序的调试与执行。
2、 结构化程序设计:
(1) 顺序结构程序设计。
(2) 选择结构程序设计。
(3) 循环结构程序设计。
3、 过程与过程调用。
(1) 子程序设计与调用。
(2) 过程与过程文件。
(3) 局部变量和全局变量、过程调用中的参数传递。
4、用户定义对话框(MESSAGEBOX)的使用。
知识要点
1.Visual FoxPro的工作方式
Visual FoxPro系统提供有三种工作方式:即命令操作方式、菜单操作方式及程序文件操作方式。
2. 程序的概念
有关此Visual FoxPro程序的几点说明 :
(1).注释语句
【格式1】NOTE <注释内容>
【格式2】*<注释内容>
【格式3】&&<注释内容>
【功能】为程序行加注释说明,以增强程序文件的易读性。
(2).对话开关语句
【格式】SET TALK OFF|ON
【功能】关闭或打开命令执行时的对话开关
(3).命令的分行
Visual FoxPro 程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。
2.建立或修改程序文件
可用两种方式调用系统内置的文本编辑器建立或修改程序文件 :
命令方式
MODIFY COMMAND [<盘符>] [<路径>]〈程序文件名〉
或
MODIFY FILE [<盘符>] [<路径>]〈程序文件名〉
菜单方式
打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,
再选择“新建文件”
3.保存程序
程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按Ctrl+W复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按钮保存程序文件并退出文本编辑器。程序文件的默认扩展名是.PRG。
4.执行程序
程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。
(1)菜单方式
① 单击【程序】|【运行】菜单项,打开“运行”对话框,选择程序文件,单击“运行”按钮;
② 从文件列表框中选择要运行的程序文件,打开该程序文
件,并单击“运行”命令按钮。
(2)命令方式
【格式】DO [<盘符>][<路径>\]<文件名>
【功能】执行指定<盘符>、<路径>下的程序文件
注意:
执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕。以下是终止程序运行的几个常用命令:
1. CANCAL:终止程序运行,清除所有私有变量,返回命令窗口。
2. DO:转去执行另一个程序。
3. RETURN:结束当前程序的执行,返回到调用它的上级程序,若无上级程序则返回到命令窗口。
4. QUIT:退出VF 系统,返回到操作系统。
例题:
1.在Visual FoxPro 中,程序文件的扩展名为____。
A..prg
B.. qpr
C..scx
D..sct
[解析] 本题考查的知识点是程序文件的扩展名。在V1sual FoxPro中,程序文件的扩展名为.prg。
答案A 是程序文件的扩展名。选项B 是生成的查询程序文件的扩展名。选项C 是表单文件的扩展名。选项D 是表单备注文件的扩展名。
[答案] A
2.在Visual FoxPro 中,用来建立程序文件的命令是____。
A.OPEN COMMAND<文件名>
B.CREATE COMMAND<文件名>
C.MODIFY COMMAND<文件名>
D.以上答案都不对
[解析] 本题考查的知识点是建立程序文件的命令的使用。在VisualFoxPro 中,建立程序文件的命令是MODIFY COMMAND<文件名>。
选项A 和B 语法错误。选项C 是建立程序文件的命令。选项 D的说法错误
[答案] C
6.输入命令 INPUT
【格式】INPUT [<提示信息>] TO <内存变量>
【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量 ,可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将输入的数据赋值给<内存变量>。
注意:
(1)如果选用<字符表达式>,那么系统会首先显示该表达式的值,作为提示信息。
(2)输入的数据可以是常量、变量、表达式。但不能不输入任何内容直接按回车。
(3)输入字符串时必须加定界符,逻辑常量必须用圆点定界,日期常量用大括号(如{^2004-12-23})
[举例]
1.输入”张航”到XM 变量中。
INPUT ”请输入员工姓名:” TO XM
请输入员工姓名:”李小林”
? XM
李小林
2.输入逻辑值到HF 变量中表示婚姻状况。
INPUT ”已婚否:” TO HF
已婚否:.T.
? HF
.T.
7.输入命令 ACCEPT
【格式】ACCEPT [<提示信息>] TO <内存变量>
【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。该命令只接受字符型数据,输入的字符串不需要加定界符
注意:
(1)如果选用<字符表达式>,那么系统会首先显示该表达式的值,作为提示信息。
(2)该命令只能接收字符串。在输入字符串时不需要加定界符。
(3)如果不输入任何内容直接按回车。系统会把空串赋给指定的内存变量。
【例1】输入“平衡”到XM 变量中。
ACCEPT ”请输入教师姓名:” TO XM
请输入教师姓名:平衡
? XM
平衡
【例2】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为 PA1.PRG。
MODI COMMAND PA1
SET TALK OFF
CLEAR
ACCEPT "请输入数据库名:" TO A
OPEN DATABASE &&A
ACCEPT "请输入表名:" TO B
USE &&B
LIST
USE
SET TALK ON
RETURN
8.WAIT 命令
【格式】WAIT [<提示信息>][TO<内存变量>] [WINDOW [AT<行>,<列>]] [NOWAIT] [CLEAR|NOCLEAR] [TIMEOUT<数值表达式>]
【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。
若选择可选项[TO <内存变量>],将输入的单个字符作为字符型数据赋给指定的<内存变量>;若用户是按Enter 键或单击鼠标,<内存变量>的值为空串。
若省略所有可选项,屏幕显示“键入任意键继续……”默认提示信息 。
【例】在STUDENT 数据库的STUD 表中显示任意一个系学生的情况。
程序文件
名为PA2.PRG
SET TALK OFF
CLEAR
OPEN DATABASE 学生管理
USE 学生
WAIT "请输入待查学生的学号(1-3):" TO N
IF VAL(N)<1 .OR. VAL(N)>3
WAIT "输入无效,结束程序运行!" WINDOW TIMEOUT 5
RETURN
ELSE
STORE "0"+N TO AAA
LIST FOR 学号=AAA
ENDIF
CLOSE DATABASE
SET TALK ON
RETURN
三条输入命令的异同
INPUT 命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束
ACCEPT 命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;
WAIT 命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;
相关推荐:
2012年计算机二级VFP全真模拟试题及答案解析汇总
2012年计算机二级VFP习题及答案汇总
2012年计算机二级VFP课后练习题及答案汇总
例 题
1.下列关于Visual FoxPro输入输出指令的说法不正确的是____。
A.INPUT命令用来从键盘输入数据
B.用INPUT命令输入数据时,若不输入任何数据,直接按回车键,则系统会把空字符赋给指定的内存变量
C.ACCEPT命令只能接收字符串
D.WAIT命令能暂停程序执行,直到用户按任意键或单击鼠标时继续程序
[解析] 本题考查的知识点是一些基础知识。本题一目了然选择B。
[答案] B
8.程序结构
是指程序中命令或语句执行的流程结构。Visual FoxPro 提供了三种基本结构: 顺序结构、选择结构、循环结构。
9.顺序结构程序设计
是程序中最简单、最基本的结构。使用该结构只需先把过程的各个步骤详细列出,然后将有关命令按处理的逻辑顺序自上而下排列起来。
Visual FoxPro 就能按程序排列的顺序,一条接一条地依次执行。
10. 分支结构形式有如下三种:
(1).单向分支
单向分支语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。
(1)语句格式:
IF〈条件表达式〉
〈命令行序列〉
ENDIF
条件式
真
语句序列
假
ENDIF 之后语句
(2)语句功能:
该语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,执行〈命令行序列〉;否则,执行ENDIF 后面的第一条命令。
【例】求一元二次方程AX2+BX+C=0的实根。程序文件名为PA3.PRG。
SET TALK OFF
CLEAR
INPUT "A=" TO A
INPUT "B=" TO B
INPUT "C=" TO C
Z=B^2-4*A*C
IF Z>=0
X1=(-B+SQRT(Z))/(2*A)
X2=(-B-SQRT(Z))/(2*A)
? X1,X2
ENDIF
SET TALK ON
RETURN
(2).双向分支
双向分支语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。
1)语句格式:
IF〈条件表达式〉
〈命令行序列1〉
ELSE
〈命令行序列2〉
ENDIF
2)语句功能:
该语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,执行〈命令行序列1〉中的命令;否则,执行〈命令行序列2〉中的命令;执行完〈命令行序列1〉或〈命令行序列2〉后都将执行ENDIF 后面的第一条命令。
真
条件式
假
语句序列1 语句序列2
ENDIF 后面语句
【例】编写一密码校验程序(假设密码为ABC)。程序文件名为PA4.PRG。
SET TALK OFF
CLEAR
ACCEPT “请输入您的密码:” TO AAA
IF AAA=”ABC”
CLEAR
? ”欢迎使用本系统!”
ELSE
? ”密码错误!”
WAIT
QUIT
ENDIF
SET TALK ON
(3).多向分支
多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行 。
(1)语句格式:
DO CASE
CASE〈条件表达式1〉
<命令行序列1〉
CASE〈条件表达式2〉
<命令行序列2〉
… …
CASE〈条件表达式N〉
〈命令行序列N〉]
[OTHERWISE
〈命令行序列N+1〉]
ENDCASE
【例】假设收入(P)与税率(R)的关系如下表,编程求税金。程序文件名为PA5.PRG。
0 P<800
真
条件式2
语句序列1
ENDCASE 后面语句
条件式1
Otherwise
条件式2
真
语句序列2
真
语句序列n-1
有
语句序列n
无
R= 0.05 800 ≤ P<2000
0.08 2000≤P<5000
0.1 P≥5000
SET TALK OFF
CLEAR
INPUT “请输入收入:” TO P
DO CASE
CASE P<800
R=0
CASE P<2000
R=0.05
CASE P<5000
R=0.08
OTHERWISE
R=0.1
ENDCASE
TAX=P*R
? ”税金为:”,TAX
SET TALK ON
RETURN
(2)语句功能:
该语句根据给出的N 个〈条件表达式〉的值,选择N+1 个〈命令行序列〉中的一个执行。当所有CASE 中〈条件表达式〉的值都是假时,如果有OTHERWISE 项,则执行〈命令行序列N+1〉,再执行ENDCASE后面的第一条命令;否则,直接执行ENDCASE 后面的第一条命令。
(4).使用分支语句应注意的几点
1)IF… … ENDIF 和DO CASE… … ENDCASE 必须配对使用,DO CASE 与第一个CASE〈条件表达式〉之间不应有任何命令。
2)〈条件表达式〉可以是各种表达式或函数的组合,其值必须是逻辑值。
3)〈命令行序列〉可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。
4)DO CASE… … ENDCASE 命令,每次最多只能执行一个〈命令行序列〉。在多个CASE 项的〈条件表达式〉值为真时,只执行第一个〈条件表达式〉值为真的〈命令行序列〉,然后执行ENDCASE 的后面的第一条命令。
【例】下面程序段的功能是计算—个函数f(x)的值,请写出表达式。
SET TALK OFF
INPUT“请输入x 值:”TO x
DO CASE
CASE x<-l
f=0
CASE X<1
f=2*x*x-x
CASE x<5
f=x
OTHERWISE
f=0
ENDCASE
? ‘f(X)=’,f
SET TALK ON
RETURN
由以上程序得A:f(x)=____。
[解析] 本题考查的知识点是用分支语句来实现求一个函数的值。由分支语句的特点和程序的结构可知, 函数f(x)是一个分段函数,我们可以较为容易地写出函数的表达式:
[答案]
0 (x <-1 或 x >5)
f(x)= 2x2-x (-1<= x <1)
x (1<= x <5)
11.循环结构程序设计
循环结构也称为重复结构,是指程序在执行过程中,其中的某段代码被重复执行若干次。被重复执行的代码段通常称为循环体。
Visual FoxPro 支持循环结构的语句包括:
DOWHILE—ENDDO、
FOR—ENDFOR
SCAN—ENDSCAN 语句。
ENDDO 后面的语句
条件表达式
真
循环体
假
(1). DO WHILE 循环语句
【格式1】DO WHILE <条件表达式>
<语句序列>
ENDDO
【功能】执行该语句时,先判断<条件表达式>是否成立,如果为真,执行<循环体>,执行到ENDDO 时,返回到DO WHILE,再判断<条件表达式>。若条件为假,则结束循环,执行ENDDO 后面的语句。
【格式2】
DO WHILE <条件表达式>
<语句序列1>
[LOOP]
<语句序列2>
[EXIT]
<语句序列3>
ENDDO
LOOP 语句:强行返回到循环开始语句。
EXIT 语句:强行跳出循环,接着执行
ENDDO 后的语句
DO WHILE 循环一般由如下部分组成:
①初始部分。通常位于程序开头,用来保证循环程序能够开始执行。如果第一次判断条件时,条件为假,则循环体一次都部执行。
②工作部分,即循环体。这部分除了需要重复执行的命令外、还应包括对于循环控制变量的修改,使循环进行有限次以后能够自动终止。
③控制部分。控制部分应保证循环程序按预定条件恰到好处地执行完毕。做到这一点,不仅要选择适当的入口条件,还要给有关的量设定适当的初值,并在循环体中对有关的量进行适当的修改,关键在于这三者恰到好处地配合。
相关推荐:
2012年计算机二级VFP全真模拟试题及答案解析汇总
2012年计算机二级VFP习题及答案汇总
2012年计算机二级VFP课后练习题及答案汇总
【例1】编程求1+2+3+……+100 之和。程序文件名为PA6.PRG。
SET TALK OFF
CLEAR
S=0
I=1
DO WHILE I<=100
ENDDO 后面的语句
条件表达式
真
假
循环体
[LOOP]
[EXIT]
S=S+I
I=I+1
ENDDO
? ”1+2+3+……+100=”,S
SET TALK ON
RETURN
【例2】逐条显示在“学生管理”数据库的“学生”表中性别为“男”的所有记录。程序文件名为PA7.PRG。
SET TALK OFF
CLEAR
OPEN DATABASE 学生管理
USE 学生
DO WHILE .NOT. EOF()
IF 性别=”男”
DISPLAY
ENDIF
SKIP
ENDDO
CLOSE DATABASE
SET TALK ON
RETURN
【例3】编程显示“学生管理”数据库的“学生”表中除“李宁”以外的所有记录。程序文件名为PA8.PRG。
SET TALK OFF
CLEAR
OPEN DATABASE STUDENT
USE STUD
DO WHILE .NOT. EOF()
IF 姓名=”李宁”
SKIP
LOOP
ENDIF
DISPLAY
SKIP
ENDDO
CLOSE DATABASE
SET TALK ON
RETURN
(2).FOR 循环语句
【格式】
FOR <循环变量>=<初值> TO <终值> [STEP<步长>]<循环体>
ENDFOR|NEXT
使用FOR 循环语句的有关说明:
① 省略STEP <步长>,则〈步长〉为默认值1;
②〈初值〉、〈终值〉和〈步长〉都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;
③ 可以在循环体内改变循环变量的值,但会改变循环执行次数;
④ EXIT 和LOOP 命令可以出现在循环体内。执行LOOP 命令时,结束本次循环,循环变量增加一个步长值,返回FOR 循环头判断循环条件是否成立。执行EXIT 命令时,程序跳出循环,执行循环尾后面的语句
【例】从键盘输入10 个数,编程找出其中的最大值和最小值。程序文
件名为PA9.PRG。
SET TALK OFF
CLEAR
INPUT “请从键盘输入一个数:” TO A
STORE A TO MAX,MIN
FOR I=2 TO 10
INPUT “请从键盘输入一个数:” TO A
IF MAX<A
MAX=A
ENDIF
IF MIN>A
MIN=A
ENDIF
ENDFOR
? “最大值为:” , MAX
? “最小值为:” , MIN
SET TALK ON
RETURN
(3).“指针”型循环控制语句
“指针”型循环控制语句,即根据用户设置的表中的当前记录指针,决定循环体内语句的执行次数据。
1)语句格式:
SCAN[〈范围〉][FOR〈条件表达式1〉
[ WHILE 〈条件表达式2〉]]
〈命令行序列〉
ENDSCAN
2)语句功能:
该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数EOF()的值,若其值为“真”,则结束循环,否则,结合〈条件表达式1〉或〈条件表达式2〉,执行〈命令行序列〉,记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF()的值,直到函数EOF()的值为真时结束循环。
【例】输出“学生管理”数据库的“学生”表中所有团员的姓名和地址。
程序文件名为PA10.PRG。
SET TALK OFF
CLEAR
OPEN DATABASE 学生管理
USE STUD
SCAN FOR 是否团员
? 姓名,地址
ENDSCAN
CLOSE DATABASE
SET TALK ON
RETURN
(4).使用循环语句时应注意的几点
(1)DO WHILE 和ENDDO、FOR 和ENDFOR、SCAN 和ENDSCAN必须配对使用。
(2)〈命令行序列〉可以是任何FoxPro 命令或语句,也可以是循环语句,即可以为多重循环。
(3)〈循环变量〉应是数值型的内存变量或数组元素。
(4)EXIT 和LOOP 命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。EXIT 的功能是跳出循环,转去执行ENDDO、ENDFOR、ENDSCAN 后面的第一条命令;LOOP 的功能是转回到循环的开始处,重新对“条件”进行判断,相当于执行了一次ENDDO、ENDFOR、ENDSCAN 命令,它可以改变〈命令行序列〉中部分命令的执行次数。EXIT、LOOP 可以出现在〈命令行序列〉的任意位置。
(5).多重循环
多重循环即循环的嵌套,是在一个循环结构的循环体中又包含另一个循环。我们称外层循环为外循环,被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包含在外循环的循环体中,不能相互交叉。正确的嵌套关系如:
DO WHILE <条件表达式1>
<语句序列11>
DO WHILE <条件表达式2>
<语句序列21>
DO WHILE <条件表达式3>
<语句序列3>
ENDDO
<语句行序列22>
ENDDO
<语句行序列12>
ENDDO
例题:
【例】编程输出下三角形乘法口诀表。程序文件名为PA11.PRG。
SET TALK OFF
CLEAR
X=1
DO WHILE X<=9
Y=1
DO WHILE Y<=X
S=X*Y
?? STR(Y,1)+"*"+STR(X,1)+"="+STR(S,2)+" "
Y=Y+1
ENDDO
?
X=X+1
ENDDO
SET TALK ON
RETURN
例 题
1.在Visual FoxPro 中,结构化程序设计的三种基本逻辑结构是____。
A.顺序结构、选择结构、循环结构
B.选择结构、分支语句、循环结构
C.顺序结构、分支语句、选择结构
D.选择结构、嵌套结构、分支语句
[解析] 本题考查的知识点是结构化程序设计的三种基本结构。在Visual FoxPro 中,结构化程序设计的三种基本结构是顺序结构、选择结构、循环结构。选项A 中的三种结构正确。选项B 中缺少顺序结构,另外分支语句错误,分支语句支持选择结构。但不是三种基本结构之一。
选项C 中缺少循环结构,分支语句错误。选项D 嵌套结构和分支语句错误。
[答案] A
2. Visual FoxPro 支持循环结构的语句包括____。
A.DO WHILE—ENDDO
B.FOR—ENDFOR
C.SCAN—ENDSCAN
D.A, B, C
[解析] 本题考查的知识点是Visual FoxPro 中支持循环结构的语句。Visual FoxPro 支持循环结构的语句包括DO WHILE—ENDDO,FOR—ENDFOR, SCAN—ENDSCAN。 因此正确答案为D。
[答案] D
3.下列____组语句可以将变量A,B 值互换。
A.A=B
B.A=(A 十B)/2B=A B=(A—B)/2
C.A=A 十B
D.A=C B=A—B C=B A=A—B B=A
[解析] 在Visual FoxPro 的某些程序设计中,往往需要将两个变量值互换。这一问题不难解决,但容易出错。仔细分析便知选项C 正确。
[答案] C
4.用VFP 表达式表示“X 是小于100 的非负数”,正确的是____。
A.0<=X<100
B.0<=X<100
C.0<=X AND X<100
D.0<=X OR X<100
[解析]选项A,B 是错误的VFP 表达式,同时根据题意应用逻辑性与AND 来表示。所以选项C是正确的。
[答案] C
5.下列程序的运行结果是____。
INPUT”请输入a 的值:“TO a
INPUT”请输入b 的值:“TO b
INPUT”请输入c 的值:“TO c
IF MAX(a,b)<c
? MAX(a,b)
ELSE
IF MIN(a, b)<c
? c
ELSE
? MIN(a,b)
ENDIF
ENDIF
运行:
2 回车
5 回车
19 回车
A2 B.5
C 19 D. 2,5,19
[解析] 这是一个求3 个数的中间数(其值大小居中)的程序段。本题输入的3 个数值是2,5,19,由此可知运行的结果是5。
[答案] B
6.程序是____。
[解析] 本题考查的知识点是程序的概念。在Visual FoxPro 中,程序是能够完成一定任务的命令的有序集合。
[答案] 能够完成一定任务的命令的有序集合
7.执行FOR—ENDFOR 语句时,若步长为____值,则循环条件为(循环变量)<=(终值);若步长为____值,则循环条件为(循环变量)>=(终值)。
[解析] 由于执行该语句时,若循环条件成立,则执行循环体,然后循环体变量增加一个步长值,并再次判断循环条件是否成立,以确定是否再次执行循环体。若步长为正值,则循环体变量递增,循环条件为(循环变量)<=(终值);若步长为负值,则循环变量递加,循环条件为(循环变量)>=(终值)。
[答案] 正; 负
相关推荐:
2012年计算机二级VFP全真模拟试题及答案解析汇总
2012年计算机二级VFP习题及答案汇总
2012年计算机二级VFP课后练习题及答案汇总
8.现有程序段如下,S 的值为____。
S=O
i=l
DO WHILE i<=l OO
S=S 十i
i=i 十1
ENDDO
? ”S“, S
[解析] 本题中程序的功能是有DO WHILE—ENDDO语句实现从自然数l 到100 之间的数相加。于是S=1 十2 十3 十……十100 的结果为5050。
[答案] 5050
9.在Visual FoxPro 中,____语句实现一种扩展的选择结构,它可以根据条件从多组代码中选择一组执行。
[解析] 在Visual FoxPro 中,分支(DO CASE-ENDCASE)语句实现了一种扩展的选择结构,它可以根据条件从多组代码中选择一组执行。当题目中有多组条件时,用它比用IF—ENDIF 语句更简捷,令程序更加清晰明了。
[答案] 多分支或DO CASE-ENDCASE
11. 过程及过程调用
Visual FoxPro 与其他高级语言一样,支持结构化程序设计方法,允许将若干命令或语句组合在一起作为整体调用,这些可独立存在并可整体调用的命令语句组合称为过程 。
(1).调用过程语句,即执行已有的过程。
语句格式:
DO 〈过程名〉 WITH <参数表>
语句功能:执行以〈过程名〉为名的过程。
(2).过程返回语句,即返回过程的调用处。
语句格式:
RETURN[TO MASTER|TO〈过程名〉]
语句功能:将控制返回到调用程序中调用命令的下一语句。
12. 外部过程
外部过程也叫子程序,和主程序一样是以程序文件(.PRG)的形式单独存储在磁盘上。子程序是指能被其他程序调用的程序。通常情况下,被调用的称为子程序,调用它的称为主程序。子程序中必须使用的—条命令是返回命令RETURN,格式为:
RETURN[<表达式>|TO MASTER|TO<程序文件名>=
功能是返回到调用该子程序的上级程序
【例】分别建立如下程序文件,
*正在执行主程序MAIN.PRG
SET TALK OFF
clear
DO PA11
SET TALK ON
*PA11.PRG
? "正在执行PA11"
RETURN
13. 内部过程:
把多个过程组织在一个文件中(这个文件称之为过程文件),或者把过程放在调用它的程序文件的末尾。
Visual FoxPro 为了识别过程文件或者程序文件中的不同过程,规定过程文件或者程序文件中的过程必需用PROCEDURE 语句说明。其格式为:
PROCEDURE <过程名>
<命令序列>
[RETURN [<表达式>]]
【例】建立如下程序文件,过程放在程序文件中
* MAIN.PRG
SET TALK OFF
? ”正在执行主程序”
DO SUB1
SET TALK ON
Procedure SUB1
? ”正在执行SUB1”
RETURN
14.过程文件的建立
过程文件的建立方法与程序文件相同。可用MODIFY COMMAND<过程文件名>命令或调用其他文字编辑软件来建立。
过程文件的结构一般为:
PROCEDURE <过程名1>
<命令序列1>
RETURN
PROCEDURE <过程名2>
<命令序列2>
RETURN
…
PROCEDURE <过程名N>
<命令序列N>
RETURN
(1).过程文件的调用
调用某过程文件中的过程时,必须先打开该过程文件,打开过程文件命令为:
【格式】SET PROCEDURE TO <过程文件名>任何时候系统只能打开一个过程文件,当打开一 个新的过程文件时,原已打开的过程文件自动关闭。
(2).过程文件的关闭
关闭过程文件可用下列命令:
【格式1】 SET PROCEDURE TO
【格式2】 CLOSE PROCEDURE
【例】用过程文件实现对“学生管理”数据库的“学生”表进行查询、删除和插入操作。
主程序如下:
* PA12. PRG && 主程序文件名
SET TALK OFF
CLEAR
OPEN DATABASE 学生管理
SET PROCEDURE TO PROCE && 打开过程文
USE 学生
INDEX ON 姓名 TO XM
DO WHILE .T. && 显示菜单
CLEAR
@ 2,20 SAY “学籍管理系统”
@ 4,20 SAY “A:按姓名查询”
@ 6,20 SAY “B:按记录号删除”
过程文件如下:
*PROCE.PRG && 过程文件名
PROCEDURE PROCE1 && 查询过程
CLEAR
ACCEPT ”请输入姓名:” TO NAME
SEEK NAME
IF FOUND()
DISPLAY
ELSE
? ”查无此人”
ENDIF
WAIT
RETURN
PROCEDURE PROCE2 && 删除记录过程
CLEAR
INPUT ”请输入要删除的记录号:” TO N
GO N
DELETE
WAIT ”物理删除吗Y/N:” TO FLAG
IF FLAG=”Y” .OR. ”y”
PACK
ENDIF
RETURN
PROCEDURE PROCE3 && 插入新的记录过程
CLEAR
APPEND
RETURN
15.过程调用中的参数传递
过程可以有零个或多个参数,多个参数由逗号隔开带参程调用命令在主程序中的调用格式:
(1).有参过程中的形式参数定义
有参过程中的形式参数定义语句为:
【格式】PARAMETERS <参数表>
该语句必需是过程中第一条语句。<参数表>中的参数可以是任意合法的内存变量名。
(2).程序与被调用过程间的参数传递
程序与被调用过程间的参数传递是通过过程调用语句DO <过程名>WITH <参数表>中WITH <参数表>子句来实现的。
【说明】
(1)DO 命令<参数表>中参数称为实际参数,PARAMATERS 命令<参数表>中的参数称为形式参数。两个<参数表>中的参数必须相容,即个数相同,类型和位置一一对应;
(2)实际参数可以是任意合法表达式,形式参数是过程中的局部变量,用来接收对应实际参数的值;
(3)Visual FoxPro 的参数传递规则为:如果实际参数是常数或表达式则传值,如果实际参数是变量则传址,即传递的不是实参变量的值而是实参变量的地址,这样,过程中对形参变量值的改变也将使实参变量值改变。如果实参是内存变量而又希望进行值传递,可以用圆括号将该内存变量括起来,强制该变量以值方式传递数据
【例】用参数传递编程,计算圆的面积。* 主程序名PA13
SET TALK OFF
CLEAR
S=0
INPUT "请输入圆的半径:" TO R
DO AREA WITH R,S
? "圆的面积为:",S
SET TALK ON
?
PROCEDURE AREA && 计算面积的过程
PARA X,Y && 形参说明
Y=3.1416*X**2
RETURN
SET TALK ON
16.变量的作用域
程序设计离不开变量,如果以变量的作用来分,内存变量分为公共变量、私有变量和局部变量。
(1).公共变量
公共变量是指在所有程序模块中都可以使用的内存变量。公共变量要先建立后使用。
【格式】PUBLIC <内存变量表>
该命令的功能是建立公共的内存变量,并为它们赋初值逻辑假.F.
【说明】
1)当定义多个变量时,各变量名之间用逗号隔开;
2)用PUBLIC 语句定义过的内存变量,在程序执行期间可以在任何层次的程序模块中使用;
3)变量定义语句要放在使用此变量的语句之前,否则会出错;
4)任何已经定义为公共变量的变量,可以用PUBLIC 语句再定义,但不允许重新定义为局部变量;
5)使用公共变量可以增强模块间的通用性,但会降低模块间的独立性。
相关推荐:
2012年计算机二级VFP全真模拟试题及答案解析汇总
2012年计算机二级VFP习题及答案汇总
2012年计算机二级VFP课后练习题及答案汇总
(2).局部变量
局部变量是指在建立它的程序以及被此程序调用的程序中有效的内存变量。
【格式】LOCAL <内存变量表>
【功能】该命令的功能是建立指定的内存变量,并为它们赋初值逻辑假.F.
【说明】
1)由于该命令LOCAL 与LOCATE 的前4 各字母相同,所以这条命令的动词不能缩写。
2)在程序中没有被说明为公共变量的内存变量都被看作是局部变量。
在子程序中可以用PRIVATE 命令隐藏主程序中可能存在的变量,使这些变量在子程序中暂时无效。命令格式为:
【格式1】PRIVATE <内存变量表>
【格式2】PRIVATE ALL [LIKE | EXCEPT <通配符>]
【说明】
(1)用PRIVATE 语句说明的内存变量,只能在本程序及其下属过程中使用,退出程序时,变量自动释放;
(2)用PRIVATE 语句在过程中说明的局部变量,可以与上层调用程序出现的内存变量同名,但它们是不同的变量,在执行被调用过程期间,上层过程中的同名变量将被隐藏。
(3).私有变量
在程序中直接使用而由系统自动隐含建立的变量都是私有变量。私有变量的作用域是建立它的模块及其下属的各层模块。一旦建立它的模块程序运行结束,这些私有变量将自动清除。
(P179-P181)
17.调用调试器
调用调试器的方法一般有两种:
①选择“工具”菜单中的“调试器”命令。
②在命令窗口输入DEBUG 命令。
在Visual FoxPro 中,打开“调试器”窗口后,可以选择地打开5个子窗口:跟踪、监视、局部、调用堆栈、调试输出。系统默认显示:监视、局部和调用堆栈三个子窗口。
18.程序调试
是指在发现程序有错误的情况下,确定出错的位置并纠正错误,其中关键是确定出错的位置。
例 题
1.在Visual FoxPro 中,用于调用模块程序的命令是____。
A.PROCEDURE<过程名>
B.SET PROCEDURE TO<过程文件>
C.FUNCTION<过程名>
D.DO<件名>|过程名>WAIT<实参>
[解析] 在Visual FoxPro 中,PROCEDURE|FUNCTION 命令表示一个过程的开始,并命名过程名, 而SET PROCEDURE TO<过程文件>命令的功能则是打开过程文件。四个选项中,只有DO<文件名>|<过程名>WAIT<实参>才是调用模块程序的格式。因此正确答案为D。
[答案] D2. 假设主过程和子程序中都建立了同一个变量,为了避免子程序的运行在无意间改变主程序中的变量的取值,可以用____使此变量在子程序中暂时无效。
A.PRIVATE
B.LOVAL
C.LOCATE
D.CLOSE
[解析]本题正确选项是A,PRIVATE 命令的作用是隐藏指定在上层模块中可能存在的内存变量,使这些变量在当前程序中暂时无效。
[答案] A3.在Visual FoxPro 中,打开过程文件的命令格式是____[<过程文件1>[,<过程序文件2>,……]][ADDITIVE];关闭个别过程文件的命令是____<过程文件1>[,<过程文件2>,……]
[解析]本题考察了过程文件的操作命令。我们只有熟悉了visualFoxPro 的各种命令格式和他们的功能,才能熟练的编程和进行表单,菜单操作。
[答案] SET PROCEDURE TO;RELEASE PROCEDURE
4.PARAMETERS 命令声明的形参变量被看作是模块程序中建立的____变量;LPARAMETERS 命令声明的形参变量被看作是模块程序中建立的____变量
[解析]本题考察的知试点是有关变量作用域的知识。PARAMTERS 和LPARMETERS 命令声明的形参变量变量的作用域属性分别为私有变量和局部变量。
[答案] 私有;局部
5.在程序中没有通过PUBLIC 和LOCAL 命令声明,而由系统自动隐含建立的变量都是____变量。
[解析] 在Visual FoxPro 中,系统默认的变量都是私有变量。
[答案] 私有
19. 用户定义对话框 MESSAGEBOX( )函数:
1.格式:
MESSAGEBOX(CMessageText,[nDialogboxType[,CTitleBarText]])
2.功能: 该函数用于显示一个信息框。
3. 说明:
1) CMessageText:表示显示在信息框中的正文内容。
2) nDialogboxType:确定消息框中要显示哪些按钮和图标。如果没有nDialogboxType;则默认消息框中只有“确定”按钮
3)CTitleBarText:表示出现在消息框标题栏中的文本。
a) 0~5:表示出现在信息框中的按钮,如表1 所示。
表1 按钮类型和数目
b) 16, 32, 48, 64 :表示出现在消息框中的图标;
c) 0,256,512 :表示消息框中哪些是默认按钮。
表2 图标类型
表3 默认按钮
例如:
1+64+256 表示消息框中有“确定”,“取消”按钮,有信息号图标,“取消”按钮是默认按钮。
3+32+512:表示消息框中有“是”,“否”,“取消”按钮,有问号图标,“取消”按钮是默认按钮。 ....MESSAGEBOX()函数的返回值是一个数值,用于确定在消息框中选择了哪个按钮。例如,消息框中有“取消”按钮,那么按Esc 键或单击“取消”按钮时,就会返回2。
值 按 钮
0 只有“确定”按钮
1 具有“确定”和“取消”按钮
2 具有“终止”、“重试”和“忽略”按钮
3 具有“是”、“否”和“取消”按钮
4 具有“是”和“否”按钮
5 具有“重试”和“取消”按钮
值 图 标
16 停止图标
32 问号图标
48 感叹号图标
64 信息图标
值 默认按钮
0 第一个按钮
256 第二个按钮
512 第三个按钮
表4 MESS()函数的返回值
【例1】显示“要将更改保存到PA13.PRG 中吗?”,有“是”、“否”、“取消”按钮,有“问号”图标,“是”为默认按钮。
? MESSAGEBOX(“ 要将更改保存到PA13.PRG 中吗? ”,
3+32+0,
“VFP6.0 数据库注释”)
编程举例
1.编程计算半径为10 的圆面积。
[解析] 编程的结构如下:
SET TALK OFF
R=10
? ‘半径为10 的圆面积:’ + LTRIM(STR(R*R*3.14) )
SET TALK ON
INPUT ’请输入一个值’ TO Y
IF Y<0 &&Y<0
X=-l
ELSE &&Y>0, 还需进一步区分Y>0 和
返回值 对应按钮
1 “确定”按钮
2 “取消”按钮
3 “终止”按钮
4 “重试”按钮
5 “忽略”按钮
6 “是”按钮
7 “否”按钮
Y=0
IF Y=0 &&Y=0
X=0
ELSE &&Y>0
X=l
ENDIF
ENDIF
? X
SET TALK ON
3.编程计算x=1 十2 十…十10
[解析] 编程的过程如下:
SET TALK OFF
I=l &&初始化循环控制变量
x=0 &&初始化累加结果存放单元
DO WHILE I<=10
X=x+I &&将I 加到S中
I=I+1 &&修改循环控制变量
ENDDO
? ‘x=’+LTRIM(STR(x)) &&输出结果
SET TALK ON
[解析] 编程的过程如下:
SET TALK OFF
INPUT"请输入成绩" TO SC
IF SC>=90
GRADE="A"
ELSE
IF SC>=75
GRADE="B"
ELSE
IF SC>=60
GRADE="C"
ELSE
4.输入一个成绩,按如下原则给
出相应等级:
A:90—100
B:75 — 89
C:60 —74
D:0 — 59
GRADE="D"
ENDIF
ENDIF
ENDIF
? LTRIM(STR(SC))+'分对应的等级是:'+GRADE
SET TALK ON
相关推荐:
2012年计算机二级VFP全真模拟试题及答案解析汇总
2012年计算机二级VFP习题及答案汇总
2012年计算机二级VFP课后练习题及答案汇总
一.选择题
1.在Visual FoxPro 中,用来建立程序文件的命令是_(A)_。
A.OPEN COMMAND<文件名>
B.MODIFY<文件名>
C.MODIFY COMMAND<文件名>
D.以上答案都不对
2.在Visual FoxPro 中,INPUT 命令用来_(A)_。
A.暂停执行程序,将键盘输入的数据送入指定的内存变量后再继续执行
B.结束当前程序的执行,返回调用它的上一级程序
C.暂停执行程序,将键盘输入的字符串送入指定内存变量后继续执行
D.以上答案都不正确
3.在Visual FoxPro 中,执行程序文件的命令是_(A)_。
A.DO<文件名>
B.OPEN<文件名>
C.MODIFY<文件名>
D.以上答案都不对
4.在Visual FoxPro 中,QUIT 命令用来_(D)_。
A.终止运行程序
B.执行另外一个程序
C.结束当前程序的执行,返回调用它的上一级程序
D.退出应用程序
5.在Visual FoxPro 中,程序文件的默认扩展名为_(B)__。
A. .pgr
B. .prg
C. .cdx
D. .dCX
6.保存程序文件的快捷键为_(C)_。
A.Ctrl 十W
B.Shin 十w
C.Ctrl 十S
D.Shift 十S
7.在“命令”窗口中输入DEBUG 命令的结果是_(A)_。
A.打开“调试器”窗口
B.判‘开“跟踪”窗口
C.打开“局部”窗口
D.打开“监视”窗口
8.在Visual FoxPro 中,打开“调试器”窗口后,默认显示_(C)_三个子窗口。
A.跟踪、监视、调试输出
B.监视、局部、调试输出
C.调用堆栈、监视、局部
D.以上答案都不对
9.在Visual FoxPro 中,包括_(D)_程序结构。
A.顺序结构
B.选择结构
C.循环结构
D.A, B,C
二.填空题
1.程序是____。它被存放在称为____或____的文本文件中。
(能够完成一定任务的命令的有序集合,程序文件,命令文件)
2.在Visual FoxPro 中,程序结构是指____。
(程序结构是指程序中命令或语句执行的流程结构。)
3.在Visual FoxPro 中,程序调试是指____。
(在发现程序有错误时,确定出现的位置并纠正错误)
4.在Visual FoxPro 中,支持选择结构的语句有____。
(条件语句,分支语句)
三.编程题
1.试编写一个程序,求一元二次方程ax2+bx+c=0 的根。
1.根据一元二次方程的系a,b,c 的取值,有以下几种情况:
(1)当a≠0 时,有两个根设delta=b2-4ac
当delta>0 时,方程有两个不同的实根
当delta=0 时,方程合两个相同的实根
当delta<o 时,方程有两个不问的虚根
(2)当a=0 时,b≠0 时,有一个根
(3)当a=0 时,b=0 时,方程无意义
根据以上的分析画出流程图,如下所示:
如 果 delta>0
真 有 两 个 实 根
如 果 delta=0
真 有 两 个 相 等 实 根
假
假 有 两 个 相 异 虚 根
如果 b<>0
真 有 一 个 根
方 程 无 意 义
有了流程图,编写这个程序的思路就清晰了,编写程序如下:
程序文件名: PA14.PRG
功能:求一元二次方程的根
SET TALK OFF
CLEAR
INPUT "请输入a 的值:" TO a
INPUT "请输入b 的值:" TO b
INPUT "请输入c 的值:" TO c
IF a<>0 &&有两个根
delta=b^2-4*a*c
re=-b/(2*a)
IF delta>0 &&有两个不同实根
sb=SQRT(delta)/2*a
? "方程有两个实根:"
pl="Xl="+STR(re+sb, 9, 4)
p2="X2="+STR(re-sb, 9, 4)
? Pl
? P2
ELSE
IF delta=0 &&有两个相同实根
? "方程有两个相同的实根:"
? "x1=x2="+STR(re,9, 4)
ELSE
xb=SQRT(-delta)/(2*a) &&仅有两个虚报
? "方程有两个虚根"
p1="xl="+STR(re,7,3)+"+"+IIF(xb=1,"", STR((xb),
7, 3))+"i"
p2="x2="+STR(re,7,3)+"+"+IIF(xb=1,"", STR((xb),
7, 3))+"i"
? p1
? p2
ENDIF
ENDIF
ENDIF
IF a=0 &&仅有一个根
ygz=-b/C
? "方程仅有一个根:"
? "X="+STR(ygZ)
ENDIF
2.我国古代数学家张丘建在“算经”里提出一个世界数学史上有名的百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁,母,雏各几何?
【分析】设公鸡x 只,母鸡y 只,小鸡z 只,依题意可列出以下方程组:
x+y+z=100
5x+3y+z/3=100
这是一个不定方程,无法直接求解。可用“穷举法”,将各种可能组合一一测试,然后将符合条件的组合输出即可。为了使编程思路更加清晰,画出如下流程图:
编写程序如下:
*程序文件名:PA16.PRG
set talk off
CLEAR
K=2
FOR X=1 to 100
真 输出X,Y,Z
如果 5*X+3*Y+Z/3=100
Z 100-X-Y
Y从1-100
X从1-100
FOR Y=1 to 100
Z=100-X-Y
IF 5*X+3*Y+Z/3=100
?"鸡翁:"+STR(X,3)
?"鸡母:"+STR(Y,3)
?"鸡雏:"+STR(Z,3)
K=K+1
ENDIF
ENDFOR
ENDFOR
set talk on
....编写程序的一个重要原则就是要简洁高效,并且尽可能少地占用计算机内存空间,特别是在编制大型软件时,这一点显得尤其重要。
本章小结
本章是二级考试中考核考生的是编程能力的。是复习的重点也是难点。在笔试考核中分值所占比例不会太大,但上机考核却占着很大的分值比例。所以希望大家一定要认真复习。问过很多同学一个问题:“编程难吗?”,得到的回答基本是一致的,“难!”,我个人看法是,对于非计算机专业或刚刚接触编程的同学,首先要读经典的程序,理解思路,掌握编程思想,然后加以分类总结,并且要在理解的基础上记忆。当然,不是见一个程序就背一个程序、一行不差地背,而是要总结类型题,重点背的是思路,再有第四章的基础,一切迎刃而解。
相关推荐:
2012年计算机二级VFP全真模拟试题及答案解析汇总
2012年计算机二级VFP习题及答案汇总
2012年计算机二级VFP课后练习题及答案汇总