




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4章章 结构化程序设计结构化程序设计本章内容本章内容 程序和算法的概念 结构化程序的三种逻辑结构 运用三种逻辑结构编写结构化程序 子程序、过程和自定义函数的 概念及使用4.14.1结构化程序设计基础结构化程序设计基础 4.1.1 4.1.1 结构化程序的概念结构化程序的概念 4.1.2 4.1.2 结构化程序文件的建立结构化程序文件的建立 4.1.34.1.3结构化程序文件的执行结构化程序文件的执行4.14.1结构化程序设计基础结构化程序设计基础 1程序的概念 程序是解决实际问题的计算机语言语句的有序集合。程序设计是用计算机能够接收的形式,把解决问题的步骤用程序设计语言描述出来的工作过程。
2、 2算法的概念及其描述 算法的概念 算法是指解决给定问题的有穷操作步骤的准确而又完整的描述。 算法有4个特征: 有穷性。算法在执行有穷的操作步骤后必须结束。 确定性。算法的计算规则及相应的计算步骤必须唯一确定,无二义。 可行性。每一个步骤在有限时间内必须完成。 数据输入和信息输出。算法要求有原始的数据输入,至少有一个有效信息的输出。4.14.1结构化程序设计基础结构化程序设计基础 算法的描述 算法可以用多种方法进行描述。常用的有程序流程图、结构化框图(N-S图)和伪码表示。 3结构化程序的概念 结构化程序由三种基本逻辑(顺序、选择和循环)组成的程序,结构化程序有如下特点。 程序的执行路径只有一
3、个入口,一个出口。 程序中任何一个位置都存在从入口的一个路径,经过该结点到达出口。 无死循环。4.1.2 4.1.2 结构化程序文件的建立结构化程序文件的建立 VFP所建立的文件称为源程序,也称命令文件,是由一系列VFP命令组成的程序。其扩展名为.PRG。源程序在执行时自动翻译成目标文件,其扩展名为.FXP。 VFP本身提供了程序编辑器,可以用菜单方式、项目管理器或者命令窗口中输入命令来创建程序文件。4.1.2 4.1.2 结构化程序文件的建立结构化程序文件的建立 1用菜单方式创建程序文件 选择“文件”菜单中的“新建”命令,选择“程序”单选按钮,再单击“新建文件”命令即可创建程序文件。 2用项
4、目管理器创建程序文件 新建一个项目文件,打开项目管理器,选择项目管理器中的“全部”或“代码”选项卡的“程序”选项,再单击“新建”按钮,即可打开程序编辑窗口。 3用命令窗口创建程序文件 在命令窗口键入命令:“MODIFY COMMAND 程序文件名”,回车即可打开程序编辑窗口。在程序窗口输入、编辑完成程序代码后,保存文件即可。4.1.34.1.3结构化程序文件的执行结构化程序文件的执行 1程序文件的打开 在项目管理器中,选择要打开的程序文件,然后选择“修改”按钮,即可打开程序文件并显示在程序编辑窗口,可以对其进行编辑修改,或使用命令:“MODIFY COMMAND”,回车也可打开程序文件。 2程
5、序文件的执行 在项目中的文件,打开项目后,选中要运行的程序文件,再单击“运行”按钮,即可运行该程序。在命令窗口中使用命令:“DO ”,回车也可运行该程序。 运行程序时,若有错误,将会出现错误提示窗口,并且提示是什么样的错误,单击“取消”回到程序的编辑窗口进行修改,修改完成后保存文件即可。程序执行后,生成扩展名为.FXP文件,主文件名同命令文件同名。4.2 4.2 顺序结构程序设计顺序结构程序设计 4.2.14.2.1辅助语句辅助语句 4.2.2 4.2.2 输入命令输入命令 4.2.3 4.2.3 格式输入格式输入/ /出命令出命令 4.2.44.2.4顺序结构程序设计顺序结构程序设计4.2.
6、14.2.1辅助语句辅助语句 1注释语句 格式一:NOTE 格式二: * 格式三:& 说明:注释语句是非执行语句,对程序进行注释,帮助阅读理解源程序。格式一和格式二,放在一行的开头,对前后程序段进行注释;格式三,放在某条语句的后面对本语句注释。 2系统初始化命令 格式:CLEAR ALL 说明:清除所有内存变量和数组,关闭所有打开的各类文件,选择1号工作区为当前工作区,使系统恢复到初始状态。4.2.14.2.1辅助语句辅助语句 3清屏命令 格式:CLEAR 说明:清除当前屏幕上所有信息,光标定位在屏幕左上角。 4信息显示控制命令 格式:SET TALK ON|OFF 说明:在ON状态即
7、会话状态,有些命令执行后,会在屏幕上返回有关信息,实现与用户“对话”(TALK)。这不仅会减慢程序的运行速度,而且还会与程序本身的输出相互夹杂,引起混淆。所以通常在程序的开始设置为OFF,关闭对话。在程序的末尾设置为ON状态,打开对话。默认为ON状态。 5警告信息显示控制命令 格式:SET SAFETY ON|OFF4.2.14.2.1辅助语句辅助语句 说明:为了安全,在执行一些不能再恢复的操作前,系统在屏幕上显示“警告信息”提示谨慎操作。如ZAP命令删除记录,INDEX 命令是否覆盖文件等。设置OFF状态将不作提示直接操作,默认为ON状态。 6返回语句 格式:RETURN TO MASTER
8、|TO | 说明:结束程序的执行。TO MASTER直接返回到主程序,如果程序是被另一程序调用,则返回到调用程序,否则返回到命令窗口。4.2.2 4.2.2 输入命令输入命令 1输入一个字符命令(等待命令) 格式:WAITTOWINDOWAT,NOWAITTIMEOUT 功能:暂停程序执行,等待用户单击键盘上的一个键,并继续执行。 说明:该命令只能从键盘接收一个字符,为提示语,缺省为“按任意键继续”。 选TO短语将接收的字符赋值给内存变量。 选择WINDOW短语,则将提示语显示在屏幕右上角的窗口中;再选AT项,提示语在屏幕指定坐标位置显示;缺省WINDOW在光标当前位置显示。 选NOWAIT短
9、语,显示提示语后,光标仍处于当前控制窗口中。 选TIMEOUT短语,以秒为单位给出最大等待时间,若不按键则自动终止该命令。4.2.2 4.2.2 输入命令输入命令 例4-1:在学生学籍管理数据库的xsda表中显示任意一个系学生的情况。 编写程序代码如下: OPEN DATABASE 学生学籍管理 USE xsda WAIT 请输入待查学生的学号(1-3): TO N IF VAL(N)3 WAIT 输入无效,结束程序运行! WINDOW TIMEOUT 5 RETURN ELSE STORE 0+N TO AAA LIST FOR 学号=AAA ENDIF CLOSE DATABASE RET
10、URN4.2.2 4.2.2 输入命令输入命令 2输入字符串命令 格式:ACCEPT TO 功能:从键盘输入一个字符串常量赋给内存变量。 说明:输入的字符串不用定界符括起来,若使用定界符,则定界符将成为字符串的内容,输入完按回车结束。 例4-2:从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。 编写程序代码如下: CLEAR SET TALK OFF ACCEPT 请输入数据库名: TO A4.2.2 4.2.2 输入命令输入命令 ACCEPT 请输入数据库名: TO A OPEN DATABASE &A ACCEPT 请输入表名: TO B USE &B LIST
11、USE SET TALK ON RETURN 3输入任意类型数据命令 格式:INPUT TO 功能:从键盘输入数值型、字符型、日期型、逻辑型、货币型数据给内存变量。4.2.2 4.2.2 输入命令输入命令 说明:输入的常量必须用符号表示出数据类型,输入完按回车结束。注意:若输入的不是数值型数据,一定要加定界符。例输入逻辑真值,要输入“.T.”。 例4-3:已知存在一个学生表,打开学生表,显示前几个学生的情况。 编写程序代码如下: CLEAR SET TALK OFF USE 学生 INPUT “请输入一个数:”TO X & 从键盘输入一个数 LIST NEXT X USE RETURN
12、4.2.3 4.2.3 格式输入格式输入/ /出命令出命令 格式: SAY|GET 功能:在屏幕指定位置输入或输出表达式的值。 说明:(1)SAY在指定位置输出表达式的值。 (2)GET 在指定位置输入表达式的值。 如:4,4 SAY “HELLO!” &在4行,4列输出HELLO! 6,6 GET X PICTURE “99” &在6行,6列输入数据给变量X READ注意:GET必须和READ结合用,PICTURE “99”定义某变量的输出格式4.2.44.2.4顺序结构程序设计顺序结构程序设计 所谓顺序结构就是各条命令按它们在程序中排列的先后次序、自上而下地执行。对于大多数
13、的顺序结构程序设计的一般步骤如下: 1建立数学模型 对于需要计算机解决的实际问题,首先要找出解决该问题的数学模型或数学公式。通常需要设定问题中的变量并合理命名,然后确定解决问题的方法或数学公式。为计算机解决该问题打好基础。 2确定算法及描述 确定了模型以后,就需要确定用计算机解决问题的步骤。在顺序结构程序设计中,其算法可以描述为: 为已知变量赋值; 根据公式求未知量; 输出计算结果。 3编写程序代码 确定了算法以后,根据VFP的语法规则和命令格式在程序窗口中输入程序代码。输入完毕后,保存程序文件。4.2.44.2.4顺序结构程序设计顺序结构程序设计 例4-4:假设已经有一个教师表,输入教师的名
14、字,把教师的职称改成“教授”。 编写程序代码如下: CLEAR SET TALK OFF USE 教师 ACCEPT “请输入要修改的教师的名字:” TO X LOCATE FOR 姓名=X REPL 职称 WITH 教授 DISP USE SET TALK ON RETURN4.3 4.3 分支结构程序设计分支结构程序设计 4.3.1 IF分支语句 4.3.2 IIF4.3.2 IIF函数函数 4.3.3 IF4.3.3 IF分支语句的嵌套分支语句的嵌套 4.3.44.3.4多重分支语句多重分支语句4.3 4.3 分支结构程序设计分支结构程序设计 一般情况下,程序运行都是顺序执行。但有时处理
15、的问题可能有两种或多种情况,要根据具体的条件选择其中的一种。在VFP中,程序的分支结构是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序执行。 分支结构又称为选择结构,是VFP的基本结构之一。VFP提供了IF语句和DO CASE语句两种形式。用IF语句描述两分支比较方便,如果是多分支可用IF语句的嵌套,但这样编写的程序可读性差,这时可用DO CASE多分支语句实现比较方便。4.3.1 IF4.3.1 IF分支语句分支语句 格式:IF ELSE ENDIF 功能:如果条件表达式的值为.T.,则执行语句组1,然后执行ENDIF的后续语句,而当条件不满足且具有ELSE语句,则执行语句组2
16、,若无ELSE语句,则执行ENDIF的后续语句。 说明:IF、ELSE、ENDIF各占一行,每一个IF都必须有一个ENDIF与之对应,即必须成对出现。条件可以为关系表达式或者逻辑表达式。语句组1或者语句组2可以包含IF语句,即可以嵌套。4.3.1 IF4.3.1 IF分支语句分支语句 例4-5:求一元二次方程AX2BXC0的实根。 编写程序代码如下: CLEAR SET TALK OFF INPUT A= TO A INPUT B= TO B INPUT C= TO C Z=B2-4*A*C IF Z=0 X1=(-B+SQRT(Z)/(2*A) X2=(-B-SQRT(Z)/(2*A) ?
17、X1,X2 ENDIF SET TALK ON RETURN4.3.2 IIF4.3.2 IIF函数函数 VFP提供了IIF函数,利用该函数可以实现简单的分支结构。其语法格式如下: 格式:IIF(,) 功能:若有值为.T.时,函数返回的值,否则,函数返回的值。 说明:两个表达式的可以是任意类型,且允许两个表达式的类型不同。4.3.2 IIF4.3.2 IIF函数函数 例4-6:从键盘输入两个数,比较两个数的大小,输出最大值。 编写程序代码如下: CLEAR SET TALK OFF INPUT “请输入第一个数:” TO X INPUT “请输入第二个数:” TO Y MAX=IIF( XY,
18、X,Y) ? ”最大的数为:”,MAX SET TALK ON RETURN4.3.3 IF4.3.3 IF分支语句的嵌套分支语句的嵌套 有时在实际情况中,程序结构超过2个分支选择,这时就需要用IF分支语句的嵌套。 格式:IF ELSE IF ELSE ENDIF ENDIF注意:每个ELSE和最近的IF嵌套,每个ENDIF和最近的IF嵌套。 例4-7从键盘上输入三个数,比较三个数的大小,输出最大的那个数。 编写程序代码如下: CLEAR SET TALK OFF INPUT “请输入第一个数:” TO X INPUT “请输入第二个数:” TO Y INPUT “请输入第三个数:” TO Z
19、 IF XY AND XZ ? ”最大的数为:” ,X ELSE IF YZ ? ”最大的数为:” ,Y ELSE ? ”最大的数为:” ,Z ENDIF ENDIF RETURN4.3.44.3.4多重分支语句多重分支语句 多重分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。此时如果用IF分支语句的嵌套实现,则会使程序的长度增加,复杂度增加,这时就可以用多重分支语句DO CASE实现。 格式:DO CASE CASE CASE CASE OTHERWISE ENDCASE4.3.44.3.4多重分支语句多重分支语句 功能:在执行该语句时,系统依次查看每一个CASE后面的
20、条件表达式的值,若有条件表达式的值满足要求,则执行该条件下的语句组,然后执行ENDCASE后面的语句,而不再查看其他的CASE条件语句。而当所有CASE条件都不满足,且没有OTHERWISE选项时,则不执行任何语句,直接执行ENDCASE后面的语句;若有OTHERWISE选项时,则执行OTHERWISE后面的语句组,再执行ENDCASE后面的语句。 例4-8:函数F(X)是一个分段函数,当X5,F(X)=0当-1=X1,F(X)=2X2-X,当1=X5,F(X)=X。4.3.44.3.4多重分支语句多重分支语句 编写程序代码如下: INPUT “请输入X值:” TO X DO CASE CAS
21、E X-L F=0 CASE X1 F=2*X*X-X CASE X5 F=X OTHERWISE F0 ENDCASE ? ”F(X)”,F RETURN4.4 4.4 循环结构程序设计循环结构程序设计 4.4.1 FOR4.4.1 FOR循环循环 4.4.2 DO WHILEENDDO4.4.2 DO WHILEENDDO循环循环 4.4.3 4.4.3 循环结构的嵌套循环结构的嵌套 4.4.4 SCAN4.4.4 SCAN循环循环4.4 4.4 循环结构程序设计循环结构程序设计 循环结构是在给定的条件下反复执行某些相同的操作,而且在循环中用到的数据的变化是有一定的规律。这种被反复执行的操
22、作称为循环,被重复执行的语句序列称为循环体。循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构 。 VFP提供了3种循环语句:FORENDFOR、DO WHILEENDDO、SCANENDSCAN来实现循环结构,FOR语句一般用于实现循环次数已知的循环,DO WHILE语句用于实现循环次数未知的循环。4.4.1 FOR4.4.1 FOR循环循环 格式:FOR=TOSTEP EXIT LOOP ENDFOR|NEXT 功能:根据设定的循环次数,重复执行,即循环体。系统执行FOR语句时,先把的值(即初值)赋给循环变量,然后判断是否大于
23、或小于的值(即终值),若是,则结束循环,否则执行循环体内的语句;然后循环变量增加一个的值(即步长),再与终值比较,若它仍不超过终值,则再次执行循环体;直到循环变量超过终值,结束循环。步长为1可省略。4.4.1 FOR4.4.1 FOR循环循环 说明:循环变量只能是内存变量。 ENDFOR|NEXT可以任选一个,两者等价。 在循环体内,EXIT语句和LOOP语句是可选项。在循环体内存在两个语句时若执行EXIT语句,将无条件地跳出循环,执行ENDFOR后面的语句,EXIT语句又称无条件结束循环语句;若执行LOOP语句,立即返回到FOR语句,重新进行FOR语句。LOOP语句只能在循环语句中使用。 步
24、长为数值,可正可负。步长为正时,循环变量大于终值;步长为负时,循环变量小于终值。若步长为0时,只要进入循环,则将永远执行循环体,不会终止,形成死循环。4.4.1 FOR4.4.1 FOR循环循环 例4-9:输出10以内的数字。 编写程序代码如下: CLEAR SET TALK OFF FOR I=1 TO 10 ? I ENDFOR SET TALK ON RETURN4.4.2 DO WHILEENDDO4.4.2 DO WHILEENDDO循环循环 格式:DO WHILE LOOP EXIT ENDDO 功能:当DO WHILE语句中的值为真时,反复执行DO WHILE与ENDDO之间的语
25、句。直到的值为假,结束循环,执行ENDDO之后的语句。 说明:LOOP语句和EXIT语句与FOR循环中的含义相同。 例4-10:逐条显示在“学生学籍管理”数据库的“xsda”表中性别为“男”的所有记录。 编写程序代码如下: CLEAR SET TALK OFF OPEN DATABASE 学生学籍管理 USE xsda DO WHILE .NOT. EOF() IF 性别=”男” DISPLAY ENDIF SKIP ENDDO CLOSE DATABASE SET TALK ON RETURN4.4.3 4.4.3 循环结构的嵌套循环结构的嵌套 在一个循环语句的循环体内又完整地包含了另一个循
26、环语句,称为循环的嵌套。FOR循环和DO WHILE循环可以相互嵌套,即FOR循环可以嵌套FOR循环,也可以嵌套DO WHILE循环;DO WHILE循环可以嵌套FOR循环,也可以嵌套DO WHILE循环。 例4-11:输出九九乘法表。 编写程序代码如下: CLEAR FOR I=1 TO 9 FOR J= 1 TO I T=I*J ? STR(I,1)+*+STR(J,1)+=+STR(T,2)+SPACE(2) ENDFOR ? ENDFOR RETURN4.4.4 SCAN4.4.4 SCAN循环循环 该语句是为处理数据表而设计的循环语句。SCAN循环能自动对数据表中满足条件的记录进行扫
27、描处理。 格式:SCAN FOR/WHILE EXIT LOOP ENDSCAN 功能:自动对数据表中满足条件的记录进行扫描处理。范围、条件缺省时,对所有记录进行处理。 说明:通过循环依次处理给定范围符合条件的每一条记录,语句本身自动移动记录指针。LOOP语句和EXIT语句的含义和用法与前面相同。4.4.4 SCAN4.4.4 SCAN循环循环 例4-12:输出“学生学籍管理”数据库的“xsda”表中所有团员的姓名。 编写程序代码如下: CLEAR SET TALK OFF OPEN DATABASE 学生学籍管理 USE xsda SCAN IF 是否团员= .T. ? 姓名 ENDIF E
28、NDSCAN CLOSE DATABASE SET TALK ON RETURN4.5 4.5 模块结构程序设计模块结构程序设计 4.5.1 4.5.1 子程序及调用子程序及调用 4.5.2 4.5.2 过程及其调用过程及其调用 4.5.3 4.5.3 自定义函数自定义函数4.5 4.5 模块结构程序设计模块结构程序设计 应用程序一般都是多模块程序,可包含多个程序模块。采用模块化的程序结构使得程序的编写与调试、系统的维护都很方便,也便于以后的扩充。程序的模块化的具体形式有子程序、过程和函数。 模块可以是主程序、子程序和自定义函数。在一个程序中调用另一个程序,这个被其他程序调用的程序就叫子程序,
29、而调用它的程序称为主程序。4.5.1 4.5.1 子程序及调用子程序及调用1子程序的调用及形参定义 VFP中子程序与主程序一样,都可以用“MODIFY COMMAND”命令来建立和修改和存盘,扩展名也为.PRG,不同的是在每个子程序中至少要有一个返回语句RETURN。用“DO”命令调用子程序,如果主程序在调用子程序时需要传递参数,可以采用带参数的子程序调用方式。 形式参数的定义 格式:PARAMETERS 功能:接受调用命令中的相应实参值,并在调用结束后返回对应参数的结果值。 说明:是用逗号分开的内存变量,个数和类型与调用它的实参表是对应的。 PARAMETERS必须是程序的第一个可执行语句,
30、否则会出错。4.5.1 4.5.1 子程序及调用子程序及调用 如果实参是一个数组变量(不必带维数),则形参自动定义为一个同样的数组。 调用子程序的命令 格式:DO WITH 功能:调用指定的子程序。 说明:WITH是带参数的子程序调用,此时,子程序中必须有PARAMETERS语句,用于定义接受实参的形参。 实参表是用逗号分开的表达式或变量。如果实参是表达式,则先计算表达式的值,在传给形参;如果实参是变量,则传递的是变量的地址。这时形参和实参实际上是一个变量,在子程序中形参值的改变将会带回到主程序的实参中,这种情况称为引用传递。 例4-13:设计一个计算圆的面积的子程序。要求在主程序中带参数调用
31、它。 编写程序代码如下: 主程序代码: CLEAR SET TALK OFF STORE 0 TO BJ,YMJ INPUT “请输入圆的半径” TO BJ DO SUB WITH BJ,YMJ &调用子程序SUB求圆的面积 ? “圆的面积=”,YMJ SET TALK ON RETURN 求圆的面积的子程序代码: PARMETERS R,S &接收实参语句 S=PI()*R*R RETURN4.5.1 4.5.1 子程序及调用子程序及调用 2返回主程序语句 格式:RETURN|TO MASTER|TO 功能:终止当前运行的程序,返回主程序或指定的程序。 说明:若在命令窗口中调
32、用子程序,则返回到命令窗口;如果在子程序中调用另外的子程序,则返回到调用处的下一条语句。 TO MASTER是可选项,若选择此项,则不管哪一级调用,都返回到最上级主程序。 TO 是可选项,若选择此项,则返回到指定过程。 3内存变量的作用域 在VFP中,根据内存变量的定义或创建时间的不同,内存变量的作用域可分为全局变量、局部变量、私有变量。 全局变量 全局变量是指在上下各级程序中都有效的内存变量,可以任意改变和引用,当程序执行完后,其值仍然保存。全局变量可用PUBLIC来定义,其语法格式如下: 格式一:PUBLIC 或 PUBLICARRAY(,),(,) 功能:定义内存变量名表中的变量或数组为
33、全局变量 说明:在命令窗口中定义的所有变量均为全局变量,在程序中的全局变量必须先定义后使用。全局变量的作用域是从定义它的位置开始到程序运行结束有效,除非使用RELEASE命令或CLEAR ALL命令清除它。4.5.1 4.5.1 子程序及调用子程序及调用 例4-14:全局变量示例 主程序代码: PUBLIC A A=1 DO PP ?A SET TALK ON RETURN 子程序代码: PUBLIC B B=A A=2 RETURN 输出结果为:24.5.1 4.5.1 子程序及调用子程序及调用 局部变量 程序中未加任何说明定义的变量是局部变量,局部变量只能在创建它们的位置开始,到定义它的程
34、序结束为止,在它们所属的程序停止运行时,局部变量将被释放。 例4-15:局部变量示例 主程序代码: A=10 DO SUB ?A RETURN 子程序代码: A=2 RETURN 结果是:2 &首先输出A的值为24.5.1 4.5.1 子程序及调用子程序及调用 私有变量 用PRIVATR定义的变量为私有变量。私有变量仅存当前程序中有效。通过PRIVATE可将在被调用程序中定义的变量在当前程序中隐藏起来,这样可以在当前程序停止运行后,所有被声明为私有的变量和数组均可重新被访问。 格式一:PRIVATR 格式二:PRIVATR ALLLIKE|EXCEPT 功能:定义内存变量名表中的变量或
35、指定的变量定义为私有变量 说明:若选择ALL,则将所有内存变量定义为私有变量。 若选择ALL LIKE仅把符合的内存变量定义为私有变量;若选择ALL EXCEPT 仅把不符合的内存变量定义为私有变量。例4-16:私有变量示例主程序代码:CLEARSET TALK OFFPRIVATE ZX=1Y=2Z=3?“主程序中输出X,Y,Z的值:”,X,Y,ZDO PP &调用子程序PP? ”调用子程序后X,Y,Z的值:”,X,Y,ZSET TALK ONRETURN*子程序代码:PRIVATE XX=4Y=5Z=6RETURN输出结果如下:主程序中输出X,Y,Z的值:1 2 3调用子程序后X,
36、Y,Z的值:4 5 64.5.2 4.5.2 过程及其调用过程及其调用 程序设计时,常常有些运算或处理程序是相同的,为了避免繁琐,可以将这些相同的部分写成独立的程序段,称为子程序,在VFP中也叫过程。每个过程都有一个名字,叫做过程名,VFP中的过程名最多可有254个字符,可以使用汉字、英文字母、数字等,但不能使用扩展名。 随着子程序的增多,每调用一次访问磁盘一次,影响磁盘的寿命,还存在子程序的嵌套,管理文件比较困难,这时可以把很多的源代码放在一个文件中,这个文件叫过程文件。 1建立过程文件 建立过程文件的方法同建立一般命令文件一样,默认扩展名为.PRG,过程文件中可以包含若干个过程,最多可包含
37、128个子过程。一个过程的命令格式如下:4.5.2 4.5.2 过程及其调用过程及其调用 格式:PROCEDURE()|PARAMETERS() RETURNTO MASTER| ENDPROC 说明:过程名是标示符,不同于文件名,它没有扩展名,最多254个字符,定义规则同变量名。 过程如果用参数传递数据,形参表有两种形式表示:一是放在过程名后面的圆括号中;二是使用参数传递语句PARAMETERS(),但要紧放在过程标识语句PROCEDURE之后。形参的表示只能取其中的一种。 RETURN语句可以缺省,在过程最后系统隐含有该语句。若RETURN后面有选项,则返回时将表达式的值返回给调用程序。4
38、.5.2 4.5.2 过程及其调用过程及其调用 2打开过程文件 在调用过程文件中的过程之前,一定要先打开过程文件。打开过程文件的命令格式如下: 格式:SET PROCEDURE TO,ADDITIVE 功能:打开一个或多个过程文件,以供其它的程序调用其中的过程。 说明:打开过程文件语句一般放在主程序的开头。若选择ADDITIVE选项,则在打开新的过程文件时,不关闭已打开的过程文件,否则关闭已打开的过程文件。 3调用过程 格式一:DOWITH 格式二:=() 功能:调用指定的过程。4.5.2 4.5.2 过程及其调用过程及其调用 说明:若选选项,则把实参的值传递给形参。 打开过程文件后,就可以随
39、时用该语句调用其中的过程。该语句也可以调用本程序中的过程,以及程序嵌套中任一个程序所包含的过程,也可以调用子程序。 过程被调用时,一般查找被调用过程的顺序是:(1)本程序中的过程,(2)已打开过程文件中的过程,(3)程序嵌套中某程序中的过程,(4)与过程名相同的独立命令文件(子程序)。 例4-17:过程调用显示任意行和列的“*”。 主程序代码编写如下: CLEAR INPUT 行数 N= TO N INPUT 列数 M= TO M SET PROCEDURE TO XING.PRG DO XING WITH N,M &带参数调用过程 RETURN 过程代码XING.PRG如下 PROC
40、EDURE XING(I,J) FOR L=1 TO I FOR K=1 TO J ?* ENDFOR ? ENDFOR RETURN ENDPROCEDURE4.5.2 4.5.2 过程及其调用过程及其调用4关闭过程文件 格式:SET PROCEDURE TO 或 CLOSE PROCEDURE 此外,CLOSE ALL、CLEAR ALL在关闭所有文件时也关闭过程文件。4.5.3 4.5.3 自定义函数自定义函数 VFP系统为用户提供了很多函数,但也允许用户自己根据需要定义某种运算或操作的函数。同函数与过程(或子程序)一样具有某一功能,但是函数可以在表达式中调用,返回一个函数值。 每一个自定义函数都对应于一个程序,它与过程及子程序非常相似,而且存储形式也相仿。在程序中使用自定义函数,能使程序清晰简捷。 自定义函数可以置于调用程序之后,与调用程序存放在同一个文件中,称为依附自定义函数,也可以独立于调用程序存放在过程文件中,称为独立自定义函数。 4.5.3 4.5.3 自定义函数自定义函数1独立自定义函数 独立自定义函数与子程序很相似,它所对应的程序单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国天然碱项目商业计划书
- 中国氮磷钾复合肥项目投资计划书
- 中国增韧剂项目商业计划书
- 中国庚酸烯丙酯项目创业计划书
- 浅谈小学数学情智课堂实践探究的重要性
- 伊春市中医院脊柱骨盆固定技术专项考核
- 中国中空玻璃丁基胶项目商业计划书
- 哈尔滨市人民医院护理管理创新与变革管理理论试题
- 唐山市人民医院放疗科住院医师规范化培训考核
- 中国天然橡胶及制品项目投资计划书
- DB64∕T 1561-2022 养老机构安宁服务规范
- 图书馆建设项目数字化方案
- 药食同源培训
- 音乐传播三试题及答案
- 秦朝服饰设计分享
- 麻醉疼痛护理科普知识精讲
- 子宫脱垂的中医护理查房
- 冷库修建合同协议书范本
- 企业文化课件讲解内容
- 2025年乡村振兴战略技能知识考试题与答案
- 【课件】急性百草枯农药中毒
评论
0/150
提交评论