VF学习第4章(2).ppt

上传人:hyn****60 文档编号:70754838 上传时间:2023-01-27 格式:PPT 页数:36 大小:90.50KB
返回 下载 相关 举报
VF学习第4章(2).ppt_第1页
第1页 / 共36页
VF学习第4章(2).ppt_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《VF学习第4章(2).ppt》由会员分享,可在线阅读,更多相关《VF学习第4章(2).ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、三、循环结构三、循环结构三、循环结构三、循环结构 按照给定的条件重复执行某一程序段称为循环。按照给定的条件重复执行某一程序段称为循环。按照给定的条件重复执行某一程序段称为循环。按照给定的条件重复执行某一程序段称为循环。VFPVFP提供了多种循环结构,它们是当循环、提供了多种循环结构,它们是当循环、提供了多种循环结构,它们是当循环、提供了多种循环结构,它们是当循环、FORFORNEXTNEXT循环、表文件扫描循环。循环、表文件扫描循环。循环、表文件扫描循环。循环、表文件扫描循环。1 1、当循环、当循环、当循环、当循环格式:格式:格式:格式:DO WHILE DO WHILE LOOPLOOP E

2、XITEXIT ENDDO ENDDO4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 功能:功能:功能:功能:判断条件的取值,若为判断条件的取值,若为判断条件的取值,若为判断条件的取值,若为”真真真真”就执行就执行就执行就执行DO DO 与与与与ENDDOENDDO之间的命令序列之间的命令序列之间的命令序列之间的命令序列(循环体循环体循环体循环体),而后再判断条,而后再判断条,而后再判断条,而后再判断条件的取值,重复循环体的过程。条件为件的取值,重复循环体的过程。条件为件的取值,重复循环体的过程。条件为件的取值,重复循环体的过程。条件为”假假假假”,就,就,就,就跳出

3、循环执行跳出循环执行跳出循环执行跳出循环执行ENDDOENDDO的下一条命令。的下一条命令。的下一条命令。的下一条命令。说明:说明:说明:说明:1)1)循环结构从循环结构从循环结构从循环结构从DO WHILEDO WHILE开始,到开始,到开始,到开始,到ENDDOENDDO结束,结束,结束,结束,二者必须成对出现。二者必须成对出现。二者必须成对出现。二者必须成对出现。2)EXIT2)EXIT能立即跳出循环,执行能立即跳出循环,执行能立即跳出循环,执行能立即跳出循环,执行ENDDOENDDO的下一条的下一条的下一条的下一条命令,可出现在循环体内的任何位置上。命令,可出现在循环体内的任何位置上。

4、命令,可出现在循环体内的任何位置上。命令,可出现在循环体内的任何位置上。3)LOOP3)LOOP可把控制转到循环结构的开始,并根据可把控制转到循环结构的开始,并根据可把控制转到循环结构的开始,并根据可把控制转到循环结构的开始,并根据条件的取值决定是否开始一次新的循环,也可出现条件的取值决定是否开始一次新的循环,也可出现条件的取值决定是否开始一次新的循环,也可出现条件的取值决定是否开始一次新的循环,也可出现在循环体内的任何位置上在循环体内的任何位置上在循环体内的任何位置上在循环体内的任何位置上 。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 4)4)循环结构也能自身嵌

5、套,还能与选择结构的各循环结构也能自身嵌套,还能与选择结构的各循环结构也能自身嵌套,还能与选择结构的各循环结构也能自身嵌套,还能与选择结构的各种形式嵌套。即循环体可以是顺序结构、分支结构种形式嵌套。即循环体可以是顺序结构、分支结构种形式嵌套。即循环体可以是顺序结构、分支结构种形式嵌套。即循环体可以是顺序结构、分支结构或循环结构。或循环结构。或循环结构。或循环结构。例例例例1 1:C=0C=0 DO WHILE C6 DO WHILE C6 C=C+1C=C+1?C?C ENDDO ENDDO例例例例2 2:t=1t=1&延时程序延时程序延时程序延时程序 do while t=10000do w

6、hile t=10000t=t+1t=t+1 enddoenddo 4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例3 3:查找:查找:查找:查找RSDA.DBFRSDA.DBF中性别为中性别为中性别为中性别为“男男男男”的记录。的记录。的记录。的记录。USE RSDAUSE RSDADO WHILE NOT EOF()DO WHILE NOT EOF()IF IF 性别性别性别性别=“=“女女女女”SKIPSKIPLOOPLOOP ENDIF ENDIF DISP DISP WAIT“WAIT“继续显示吗继续显示吗继续显示吗继续显示吗?”TO Y?”TO Y

7、 IF UPPER(Y)“IF UPPER(Y)“”EXITEXIT ENDIF ENDIF SKIP SKIPENDDOENDDO4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例4 4:统计工资管理表:统计工资管理表:统计工资管理表:统计工资管理表GZ.DBFGZ.DBF中有病事假的职工人数,中有病事假的职工人数,中有病事假的职工人数,中有病事假的职工人数,并显示姓名、部门和病事假。并显示姓名、部门和病事假。并显示姓名、部门和病事假。并显示姓名、部门和病事假。(计数器的用法计数器的用法计数器的用法计数器的用法)CLEAR CLEAR N=0 N=0 USE

8、GZ USE GZ DO WHILE NOT EOF()DO WHILE NOT EOF()IF IF 病事假病事假病事假病事假00 N=N+1 N=N+1?姓名,部门,病事假姓名,部门,病事假姓名,部门,病事假姓名,部门,病事假 ENDIFENDIF SKIPSKIP ENDDO ENDDO?“病事假人数病事假人数病事假人数病事假人数=”=”,NN USE USE 4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 姓名姓名姓名姓名部门部门部门部门病事假病事假病事假病事假张三张三张三张三计算机系计算机系计算机系计算机系0 0李四李四李四李四路桥系路桥系路桥系路桥系2 2

9、王五王五王五王五汽车系汽车系汽车系汽车系1 1例例例例5 5:在人事管理数表中,统计出职称是副教授的人数以及这:在人事管理数表中,统计出职称是副教授的人数以及这:在人事管理数表中,统计出职称是副教授的人数以及这:在人事管理数表中,统计出职称是副教授的人数以及这些人的工资总数。些人的工资总数。些人的工资总数。些人的工资总数。(计数器与累加器计数器与累加器计数器与累加器计数器与累加器)CLEAR CLEAR STORE 0 TO N STORE 0 TO N,A A USE RSDA USE RSDA DO WHILE NOT EOF()DO WHILE NOT EOF()IF IF 职称职称职称

10、职称=“=“副教授副教授副教授副教授”N=N+1N=N+1 A=A+A=A+工资工资工资工资ENDIFENDIFSKIPSKIP ENDDO ENDDO USE USE?“人数人数人数人数=”=”,NN?“工资总数工资总数工资总数工资总数=”=”,A A4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 练习练习练习练习:1)1)从键盘上输入从键盘上输入从键盘上输入从键盘上输入NN个学生的考试成绩,求这个学生的考试成绩,求这个学生的考试成绩,求这个学生的考试成绩,求这NN个学个学个学个学 生的成绩总分。生的成绩总分。生的成绩总分。生的成绩总分。2)2)求求求求f(nf(n

11、)=1+2+3+n)=1+2+3+n,任意给出一个,任意给出一个,任意给出一个,任意给出一个n n值,值,值,值,便可算出便可算出便可算出便可算出f(nf(n)。3)3)编写一个求任意数阶乘的程序。编写一个求任意数阶乘的程序。编写一个求任意数阶乘的程序。编写一个求任意数阶乘的程序。4)4)自编程序,使其实现计算:自编程序,使其实现计算:自编程序,使其实现计算:自编程序,使其实现计算:P=1+1/(2*2)+1/(10*10)P=1+1/(2*2)+1/(10*10)。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 2 2、FORNEXTFORNEXT循环循环循环循环格

12、式:格式:格式:格式:FOR FOR =TO TO STEP STEP EXIT EXIT LOOP LOOP NEXT NEXT ENDFORENDFOR4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 说明:说明:说明:说明:1)1)可正可负。缺省时,默认为可正可负。缺省时,默认为可正可负。缺省时,默认为可正可负。缺省时,默认为+1+1。2)2)初值、终值与步长都可为表达式初值、终值与步长都可为表达式初值、终值与步长都可为表达式初值、终值与步长都可为表达式(包括数值包括数值包括数值包括数值),若其中含有变量,变量值必须预先赋值。若其中含有变量,变量值必须预先赋值。若

13、其中含有变量,变量值必须预先赋值。若其中含有变量,变量值必须预先赋值。3)3)当步长值为负时,初值应大于终值;当步长值当步长值为负时,初值应大于终值;当步长值当步长值为负时,初值应大于终值;当步长值当步长值为负时,初值应大于终值;当步长值为正时,初值应小于终值。为正时,初值应小于终值。为正时,初值应小于终值。为正时,初值应小于终值。功能:功能:功能:功能:本命令中的内存变量本命令中的内存变量本命令中的内存变量本命令中的内存变量(又称循环变量又称循环变量又称循环变量又称循环变量)类似于计数器,类似于计数器,类似于计数器,类似于计数器,它的取值由初值、终值与步长值来确定。通过判断它的取值由初值、终

14、值与步长值来确定。通过判断它的取值由初值、终值与步长值来确定。通过判断它的取值由初值、终值与步长值来确定。通过判断内存变量的取值是否在指定范围之中来确定循环体内存变量的取值是否在指定范围之中来确定循环体内存变量的取值是否在指定范围之中来确定循环体内存变量的取值是否在指定范围之中来确定循环体是否重复执行。是否重复执行。是否重复执行。是否重复执行。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例1 1:FOR I=1 TO 10 STEP 2FOR I=1 TO 10 STEP 2?I I NEXT NEXT 输出结果:输出结果:输出结果:输出结果:1 3 5 7

15、 91 3 5 7 9 FOR I=10 TO 1 STEP -2 FOR I=10 TO 1 STEP -2?I I NEXT NEXT 输出结果:输出结果:输出结果:输出结果:1010 8 6 4 2 8 6 4 24.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例2 2:求:求:求:求f(nf(n)=1+2+3+n)=1+2+3+n。input input 请输入请输入请输入请输入n n的数值的数值的数值的数值:to n:to n s=0s=0 for i=1 to nfor i=1 to n s=s=s+is+i nextnext?所求的总和为所求的总和

16、为所求的总和为所求的总和为:,s:,s求求求求f(nf(n)=1*2*3*n)=1*2*3*n。input input 请输入请输入请输入请输入n n的数值的数值的数值的数值:to n:to ns=1s=1for i=1 to nfor i=1 to n s=s*i s=s*inextnext?该数的阶乘为该数的阶乘为该数的阶乘为该数的阶乘为:,s:,s4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例3 3:正序、逆序输出:正序、逆序输出:正序、逆序输出:正序、逆序输出1 1100100之间的所有整数。之间的所有整数。之间的所有整数。之间的所有整数。clear

17、clear?for I=1 to 100 for I=1 to 100?str(I,4)?str(I,4)if i/10=int(i/10)if i/10=int(i/10)&满十个数字换行满十个数字换行满十个数字换行满十个数字换行?endifendif next next for I=1 to 1000000 for I=1 to 1000000&延时延时延时延时 nextnext 4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构?for I=100 to 1 step -1 for I=100 to 1 step -1if i/10=int(i/10)if i/10

18、=int(i/10)?endifendif?str(I,4)?str(I,4)next next 4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例4 4:对给定的自然数:对给定的自然数:对给定的自然数:对给定的自然数k k,求不大于,求不大于,求不大于,求不大于k k的奇数之和。的奇数之和。的奇数之和。的奇数之和。Clear Clear Input“Input“请输入一个自然数请输入一个自然数请输入一个自然数请输入一个自然数:”to k:”to k S=0 S=0 For I=1 to k step 2 For I=1 to k step 2S=S=s+Is+

19、I Next Next?”?”不大于不大于不大于不大于”+ltrim(str(kltrim(str(k)+”)+”的奇数之和为的奇数之和为的奇数之和为的奇数之和为:”+:”+ltrim(str(sltrim(str(s)4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 3 3、表扫描循环、表扫描循环、表扫描循环、表扫描循环格式:格式:格式:格式:SCAN SCAN FOR WHILE FOR WHILE EXITEXIT LOOPLOOP ENDSCAN ENDSCAN功能:功能:功能:功能:对当前表的指定记录,依次重复执行循环体。它只对当前表的指定记录,依次重复执行循

20、环体。它只对当前表的指定记录,依次重复执行循环体。它只对当前表的指定记录,依次重复执行循环体。它只适用与表的操作。适用与表的操作。适用与表的操作。适用与表的操作。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 例例例例:输出最年轻的三位教授的信息。:输出最年轻的三位教授的信息。:输出最年轻的三位教授的信息。:输出最年轻的三位教授的信息。clear clear use use rsdarsda index on date()-index on date()-出生日期出生日期出生日期出生日期 to to rqrq n=0 n=0?姓名姓名姓名姓名 性别性别性别性别 出生日

21、期出生日期出生日期出生日期 基本工资基本工资基本工资基本工资 scan for scan for 职称职称职称职称=教授教授教授教授 if n3if n3?姓名姓名姓名姓名+性别性别性别性别+dtocdtoc(出生日期出生日期出生日期出生日期)+)+strstr(工工工工 资资资资,7,2),7,2)n=n+1 n=n+1elseelse exit exitendifendif endscanendscan use use4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 四、多重循环四、多重循环四、多重循环四、多重循环 循环可以嵌套,按其所处的位置分别称为外循环和循环可

22、以嵌套,按其所处的位置分别称为外循环和循环可以嵌套,按其所处的位置分别称为外循环和循环可以嵌套,按其所处的位置分别称为外循环和内循环。内循环。内循环。内循环。嵌套原则:嵌套原则:嵌套原则:嵌套原则:(正确正确正确正确)()(错误错误错误错误)嵌套执行过程:嵌套执行过程:嵌套执行过程:嵌套执行过程:先执行外层循环,然后逐级执行内循环。每执行一先执行外层循环,然后逐级执行内循环。每执行一先执行外层循环,然后逐级执行内循环。每执行一先执行外层循环,然后逐级执行内循环。每执行一次外循环后要执行所有的内循环,即外层循环次数次外循环后要执行所有的内循环,即外层循环次数次外循环后要执行所有的内循环,即外层循

23、环次数次外循环后要执行所有的内循环,即外层循环次数有多少,内循环就应执行多少遍。有多少,内循环就应执行多少遍。有多少,内循环就应执行多少遍。有多少,内循环就应执行多少遍。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 练习练习练习练习:1)1)在在在在sb.dbfsb.dbf中找出所有价格超过中找出所有价格超过中找出所有价格超过中找出所有价格超过P P的编号、名称与价的编号、名称与价的编号、名称与价的编号、名称与价格。要求在每个输出行后再输出一个虚线行。格。要求在每个输出行后再输出一个虚线行。格。要求在每个输出行后再输出一个虚线行。格。要求在每个输出行后再输出一个虚线

24、行。016-1 016-1 车床车床车床车床 62044.6162044.61-037-2 037-2 磨床磨床磨床磨床 241292.12241292.12-210-1 210-1 轿车轿车轿车轿车 151000.00151000.00-本例用本例用本例用本例用FORFOR循环生成虚线循环生成虚线循环生成虚线循环生成虚线(由由由由3030个个个个“-”-”号构成号构成号构成号构成)。外循环控制输出记录,内循环控制输出虚线。外循环控制输出记录,内循环控制输出虚线。外循环控制输出记录,内循环控制输出虚线。外循环控制输出记录,内循环控制输出虚线。4.2 4.2 程序的控制结构程序的控制结构程序的控

25、制结构程序的控制结构 2)2)在屏幕上打印生成如下图案。在屏幕上打印生成如下图案。在屏幕上打印生成如下图案。在屏幕上打印生成如下图案。外循环控制行数,内循环控制每行的个数,在内、外循环控制行数,内循环控制每行的个数,在内、外循环控制行数,内循环控制每行的个数,在内、外循环控制行数,内循环控制每行的个数,在内、外循环之间设置每行的起始位置。外循环之间设置每行的起始位置。外循环之间设置每行的起始位置。外循环之间设置每行的起始位置。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 总结总结总结总结:1 1、DO WHILE DO WHILE 是最常用的命令,并具有能在所有条是

26、最常用的命令,并具有能在所有条是最常用的命令,并具有能在所有条是最常用的命令,并具有能在所有条件下替代其余两种的特点。件下替代其余两种的特点。件下替代其余两种的特点。件下替代其余两种的特点。2 2、SCANSCAN的工作方式专门为在表内移动而设计。的工作方式专门为在表内移动而设计。的工作方式专门为在表内移动而设计。的工作方式专门为在表内移动而设计。1)SCAN 1)SCAN在每一次后续循环时自动后移记录指针。在每一次后续循环时自动后移记录指针。在每一次后续循环时自动后移记录指针。在每一次后续循环时自动后移记录指针。2)SCAN2)SCAN的默认作用是的默认作用是的默认作用是的默认作用是ALLA

27、LL,可加以其它的作用域,可加以其它的作用域,可加以其它的作用域,可加以其它的作用域子句子句子句子句(REST(REST、NEXTNEXT或或或或RECORD)RECORD)将将将将SCANSCAN限制在某限制在某限制在某限制在某个范围的记录中。个范围的记录中。个范围的记录中。个范围的记录中。3)SCAN3)SCAN只处理表,其可使用方式比只处理表,其可使用方式比只处理表,其可使用方式比只处理表,其可使用方式比DO WHILEDO WHILE有限。有限。有限。有限。3 3、FORFOR设一个内存变量作为计数器,将它设为初使设一个内存变量作为计数器,将它设为初使设一个内存变量作为计数器,将它设为

28、初使设一个内存变量作为计数器,将它设为初使值,并规定一个限值,当计数器超过限值时就退出值,并规定一个限值,当计数器超过限值时就退出值,并规定一个限值,当计数器超过限值时就退出值,并规定一个限值,当计数器超过限值时就退出FORFOR循环。这种特点方便于累加、计数操作。循环。这种特点方便于累加、计数操作。循环。这种特点方便于累加、计数操作。循环。这种特点方便于累加、计数操作。4.2 4.2 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 4.3.1 4.3.1 子程序与过程子程序与过程子程序与过程子程序与过程 在处理较负责问题的时候,程序一般都是多模块程序。在处理较负责问题的时候,程序一

29、般都是多模块程序。在处理较负责问题的时候,程序一般都是多模块程序。在处理较负责问题的时候,程序一般都是多模块程序。子程序与过程是子程序与过程是子程序与过程是子程序与过程是FoxProFoxPro程序设计的重要概念,是实现程序设计的重要概念,是实现程序设计的重要概念,是实现程序设计的重要概念,是实现程序设计模块化的主要手段。程序设计模块化的主要手段。程序设计模块化的主要手段。程序设计模块化的主要手段。程序模块大多为子程序和过程,他们可被其他程序调程序模块大多为子程序和过程,他们可被其他程序调程序模块大多为子程序和过程,他们可被其他程序调程序模块大多为子程序和过程,他们可被其他程序调用。用。用。用

30、。1 1、子程序、过程及其特点、子程序、过程及其特点、子程序、过程及其特点、子程序、过程及其特点 1)1)概念:概念:概念:概念:主程序:调用其他程序而自身不被任何程序调用的主程序:调用其他程序而自身不被任何程序调用的主程序:调用其他程序而自身不被任何程序调用的主程序:调用其他程序而自身不被任何程序调用的程序。程序。程序。程序。子程序子程序子程序子程序(过程过程过程过程):被调用的程序。:被调用的程序。:被调用的程序。:被调用的程序。子程序子程序子程序子程序(过程过程过程过程)的嵌套:一个子程序或过程调用其他的嵌套:一个子程序或过程调用其他的嵌套:一个子程序或过程调用其他的嵌套:一个子程序或过

31、程调用其他子程序或过程。子程序或过程。子程序或过程。子程序或过程。4.3 4.3 多模块程序多模块程序多模块程序多模块程序 2)2)子程序与主程序的区别:子程序与主程序的区别:子程序与主程序的区别:子程序与主程序的区别:子程序的最后一条语句通常为子程序的最后一条语句通常为子程序的最后一条语句通常为子程序的最后一条语句通常为RETURNRETURN,以便,以便,以便,以便将控制转到调用他的上级程序处,而在主程序中则将控制转到调用他的上级程序处,而在主程序中则将控制转到调用他的上级程序处,而在主程序中则将控制转到调用他的上级程序处,而在主程序中则不必包含该命令。不必包含该命令。不必包含该命令。不必

32、包含该命令。子程序的第一条命令可以是子程序的第一条命令可以是子程序的第一条命令可以是子程序的第一条命令可以是PARAMETERSPARAMETERS命令,命令,命令,命令,用来实现参数的传递,而主程序中通常没有这条命用来实现参数的传递,而主程序中通常没有这条命用来实现参数的传递,而主程序中通常没有这条命用来实现参数的传递,而主程序中通常没有这条命令。令。令。令。3)3)子程序与过程的区别:子程序与过程的区别:子程序与过程的区别:子程序与过程的区别:子程序必须独立于调用程序,以子程序必须独立于调用程序,以子程序必须独立于调用程序,以子程序必须独立于调用程序,以.PRG.PRG文件存盘,文件存盘,

33、文件存盘,文件存盘,而过程可以放在调用程序的后面,与调用程序以同而过程可以放在调用程序的后面,与调用程序以同而过程可以放在调用程序的后面,与调用程序以同而过程可以放在调用程序的后面,与调用程序以同一文件存盘。一文件存盘。一文件存盘。一文件存盘。子程序中没有专门用于开头的语句,而过程的第子程序中没有专门用于开头的语句,而过程的第子程序中没有专门用于开头的语句,而过程的第子程序中没有专门用于开头的语句,而过程的第一条语句必须是:一条语句必须是:一条语句必须是:一条语句必须是:PROCEDURE PROCEDURE 4.3 4.3 多模块程序多模块程序多模块程序多模块程序 2 2、带参数子程序的调用

34、和返回、带参数子程序的调用和返回、带参数子程序的调用和返回、带参数子程序的调用和返回 DO DO命令允许带一个命令允许带一个命令允许带一个命令允许带一个WITHWITH子句,用来进行参数传子句,用来进行参数传子句,用来进行参数传子句,用来进行参数传递。递。递。递。格式:格式:格式:格式:DO DO WITH WITH IN IN 2说明:说明:说明:说明:1)1)中的参数可以是内存变量或表达式,中的参数可以是内存变量或表达式,中的参数可以是内存变量或表达式,中的参数可以是内存变量或表达式,但其中的变量一定须赋初值。但其中的变量一定须赋初值。但其中的变量一定须赋初值。但其中的变量一定须赋初值。2

35、)2)调用子程序时参数要传送给子程序,子程序中调用子程序时参数要传送给子程序,子程序中调用子程序时参数要传送给子程序,子程序中调用子程序时参数要传送给子程序,子程序中也必须设置相应的参数来接受语句。需要使用也必须设置相应的参数来接受语句。需要使用也必须设置相应的参数来接受语句。需要使用也必须设置相应的参数来接受语句。需要使用PARAMETERSPARAMETERS命令。命令。命令。命令。4.3 4.3 多模块程序多模块程序多模块程序多模块程序 格式:格式:格式:格式:PARAMETERS PARAMETERS 功能:功能:功能:功能:指定内存变量以接收指定内存变量以接收指定内存变量以接收指定内

36、存变量以接收DODO命令发送的参数值,返回命令发送的参数值,返回命令发送的参数值,返回命令发送的参数值,返回主程序时把内存变量值回送给调用程序中相应的内主程序时把内存变量值回送给调用程序中相应的内主程序时把内存变量值回送给调用程序中相应的内主程序时把内存变量值回送给调用程序中相应的内存变量。存变量。存变量。存变量。注意注意注意注意:PARAMETERSPARAMETERS必须是被调用程序的第一个语句。必须是被调用程序的第一个语句。必须是被调用程序的第一个语句。必须是被调用程序的第一个语句。命令中的参数依次与调用命令命令中的参数依次与调用命令命令中的参数依次与调用命令命令中的参数依次与调用命令W

37、ITHWITH子句中的参子句中的参子句中的参子句中的参数相对应,故两者参数个数必须相同。数相对应,故两者参数个数必须相同。数相对应,故两者参数个数必须相同。数相对应,故两者参数个数必须相同。4.3 4.3 多模块程序多模块程序多模块程序多模块程序 例例例例1 1:设计一个计算园面积的子程序,要求在主程序:设计一个计算园面积的子程序,要求在主程序:设计一个计算园面积的子程序,要求在主程序:设计一个计算园面积的子程序,要求在主程序中带参数调用它。中带参数调用它。中带参数调用它。中带参数调用它。clear clear&主程序主程序主程序主程序 YmjYmj=0=0 5,10 say “5,10 sa

38、y “请输入半径请输入半径请输入半径请输入半径:”get :”get bjbj default default 0 0 read read do do zcxzcx with with bj,ymjbj,ymj?”?”圆面积圆面积圆面积圆面积=”,=”,ymjymj parameters parameters r,sr,s&子程序子程序子程序子程序(zcx.prgzcx.prg)s=pi()*r2 s=pi()*r2 return return 4.3 4.3 多模块程序多模块程序多模块程序多模块程序 例例例例2 2:输入长方形的长和宽,调用子程序求长方形的:输入长方形的长和宽,调用子程序求长

39、方形的:输入长方形的长和宽,调用子程序求长方形的:输入长方形的长和宽,调用子程序求长方形的面积。面积。面积。面积。Clear Clear&主程序主程序主程序主程序 Input Input 长方形的长为长方形的长为长方形的长为长方形的长为:to a:to a Input Input 长方形的宽为长方形的宽为长方形的宽为长方形的宽为:to b:to b Area=0 Area=0 Do Do zcxzcx with with a,b,areaa,b,area?长方形的面积为长方形的面积为长方形的面积为长方形的面积为:,area:,area parameters parameters x,y,zx,

40、y,z&子程序子程序子程序子程序 z=x*y z=x*y return return 4.3 4.3 多模块程序多模块程序多模块程序多模块程序 3 3、过程、过程、过程、过程 子程序的运用虽使程序实现了模块化,但在较大的子程序的运用虽使程序实现了模块化,但在较大的子程序的运用虽使程序实现了模块化,但在较大的子程序的运用虽使程序实现了模块化,但在较大的程序设计中,往往要使用很多子程序,即需要存储程序设计中,往往要使用很多子程序,即需要存储程序设计中,往往要使用很多子程序,即需要存储程序设计中,往往要使用很多子程序,即需要存储很多个很多个很多个很多个PRGPRG文件,频繁读写磁盘,可读性差,调用文

41、件,频繁读写磁盘,可读性差,调用文件,频繁读写磁盘,可读性差,调用文件,频繁读写磁盘,可读性差,调用时可能会出现不能再打开文件的情况。时可能会出现不能再打开文件的情况。时可能会出现不能再打开文件的情况。时可能会出现不能再打开文件的情况。解决方法:使用过程语句。解决方法:使用过程语句。解决方法:使用过程语句。解决方法:使用过程语句。特点:特点:特点:特点:可以以独立的可以以独立的可以以独立的可以以独立的PRGPRG文件存在,也可与主程序同时文件存在,也可与主程序同时文件存在,也可与主程序同时文件存在,也可与主程序同时以一个以一个以一个以一个PRGPRG文件存在。文件存在。文件存在。文件存在。4.

42、3 4.3 多模块程序多模块程序多模块程序多模块程序 格式:格式:格式:格式:PROCEDURE PROCEDURE 例例例例:ymjymj=0=0 5,10 say “5,10 say “请输入半径请输入半径请输入半径请输入半径:”get :”get bjbj default default 0 0 read read do do gcgc with with bj,ymjbj,ymj 7,10 say ”7,10 say ”圆面积为圆面积为圆面积为圆面积为:”get :”get ymjymj procedure procedure gcgc parameter parameter r,sr

43、,s s=pi()*r*r s=pi()*r*r return return 4.3 4.3 多模块程序多模块程序多模块程序多模块程序 clear clear&主程序主程序主程序主程序1.prg1.prg ymjymj=0=0 5,10 say 5,10 say 请输入半径请输入半径请输入半径请输入半径:get :get bjbj default 0 default 0 read read do do gcgc with with bj,ymjbj,ymj in 2 in 2 7,10 say 7,10 say 圆面积为圆面积为圆面积为圆面积为:get :get ymjymj procedur

44、e procedure gcgc&过程文件过程文件过程文件过程文件2.prg2.prg parameters parameters r,sr,s s=pi()*r2 s=pi()*r2 4.3 4.3 多模块程序多模块程序多模块程序多模块程序 4.3.2 4.3.2 变量的作用域变量的作用域变量的作用域变量的作用域 在在在在FoxProFoxPro中,根据变量作用域的不同将变量分为中,根据变量作用域的不同将变量分为中,根据变量作用域的不同将变量分为中,根据变量作用域的不同将变量分为两类,即全局变量和局部变量。两类,即全局变量和局部变量。两类,即全局变量和局部变量。两类,即全局变量和局部变量。全

45、局变量:作用域为全局变量:作用域为全局变量:作用域为全局变量:作用域为FoxProFoxPro系统运行全过程的变系统运行全过程的变系统运行全过程的变系统运行全过程的变量。量。量。量。局部变量:作用域仅为主程序及其被调用子程序和局部变量:作用域仅为主程序及其被调用子程序和局部变量:作用域仅为主程序及其被调用子程序和局部变量:作用域仅为主程序及其被调用子程序和过程的变量。过程的变量。过程的变量。过程的变量。例例例例:在在在在commandcommand窗口输入:窗口输入:窗口输入:窗口输入:a=100a=100b=2b=2 为两个内存变量赋值,然后编写为两个内存变量赋值,然后编写为两个内存变量赋值

46、,然后编写为两个内存变量赋值,然后编写zyy.prgzyy.prg。4.3 4.3 多模块程序多模块程序多模块程序多模块程序*zyy.prgzyy.prg t=a*b t=a*b?”t=”,str(t,4)?”t=”,str(t,4)&显示显示显示显示t=200t=200?”a=”,str(a,4)?”a=”,str(a,4)&显示显示显示显示a=100a=100 如回到如回到如回到如回到commandcommand再次显示两个变量:再次显示两个变量:再次显示两个变量:再次显示两个变量:?a?a&仍然显示仍然显示仍然显示仍然显示200200?t?t&显示显示显示显示”变量变量变量变量t t找不

47、到找不到找不到找不到”由此例子可看出,由此例子可看出,由此例子可看出,由此例子可看出,a a是全局变量,而是全局变量,而是全局变量,而是全局变量,而t t仅在程序仅在程序仅在程序仅在程序zyy.prgzyy.prg中起作用,所以它是局部变量。中起作用,所以它是局部变量。中起作用,所以它是局部变量。中起作用,所以它是局部变量。4.3 4.3 多模块程序多模块程序多模块程序多模块程序 全局变量域局部变量的定义方法全局变量域局部变量的定义方法全局变量域局部变量的定义方法全局变量域局部变量的定义方法 1)1)在在在在FoxProFoxPro命令窗口命令窗口命令窗口命令窗口(Command)(Comma

48、nd)中定义和使用的中定义和使用的中定义和使用的中定义和使用的内存变量是全局变量,在退出内存变量是全局变量,在退出内存变量是全局变量,在退出内存变量是全局变量,在退出FoxProFoxPro系统前总是系统前总是系统前总是系统前总是有效的。利用下列命令之一也可清除全局变量:有效的。利用下列命令之一也可清除全局变量:有效的。利用下列命令之一也可清除全局变量:有效的。利用下列命令之一也可清除全局变量:releasereleaseclear allclear allclear memoryclear memory 2)2)在程序中,变量可以用语句定义,如不加说明,在程序中,变量可以用语句定义,如不加说

49、明,在程序中,变量可以用语句定义,如不加说明,在程序中,变量可以用语句定义,如不加说明,系统默认是局部变量系统默认是局部变量系统默认是局部变量系统默认是局部变量(如上例中的如上例中的如上例中的如上例中的t)t),其作用域为,其作用域为,其作用域为,其作用域为产生此变量的程序及该程序所调用的子程序和过程。产生此变量的程序及该程序所调用的子程序和过程。产生此变量的程序及该程序所调用的子程序和过程。产生此变量的程序及该程序所调用的子程序和过程。4.3 4.3 多模块程序多模块程序多模块程序多模块程序 3)3)用用用用publicpublic语句定义全局变量:语句定义全局变量:语句定义全局变量:语句定

50、义全局变量:格式:格式:格式:格式:PUBLIC PUBLIC 用用用用PUBLICPUBLIC定义的全局变量必须先定义,后使用,定义的全局变量必须先定义,后使用,定义的全局变量必须先定义,后使用,定义的全局变量必须先定义,后使用,否则将产生一个语法错误。否则将产生一个语法错误。否则将产生一个语法错误。否则将产生一个语法错误。例如例如例如例如:a=a=姓名姓名姓名姓名 默认为局部变量默认为局部变量默认为局部变量默认为局部变量public apublic a 后定义为全局变量,与前矛盾后定义为全局变量,与前矛盾后定义为全局变量,与前矛盾后定义为全局变量,与前矛盾 4)4)用用用用privatep

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁