VF学习第4章(2)_第1页
VF学习第4章(2)_第2页
VF学习第4章(2)_第3页
VF学习第4章(2)_第4页
VF学习第4章(2)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三,循环结构根据给定的条件重复执行某个程序段,这称为循环。VFP提供了多种循环结构,它们是当循环、FORNEXT循环和表文件扫描循环。1.当循环格式为DO WHILE LOOP EXIT ENDDO,4.2时,程序的控制结构和功能:判断条件的值,如果为真,执行DO和ENDDO之间的命令序列(循环体),然后判断条件的值,重复循环体的过程。如果条件为假,跳出循环并执行ENDDO的下一个命令。描述:1)循环结构从DO WHILE开始,到ENDDO结束,它们必须成对出现。2) EXIT可以立即跳出循环并执行ENDDO的下一个命令,并且可以出现在循环中的任何地方。3) LOOP可以将控制转到循环结构的

2、开始,并根据条件的值决定是否开始新的循环,它也可以出现在循环中的任何位置。4.2程序的控制结构,4)循环结构可以自己嵌套,也可以与各种形式的选择结构嵌套。即,循环体可以是序列结构、分支结构或循环结构。例1: c=0,而C6 c=C1?C ENDDO示例2: t=1延迟程序DO,而t=10000t=t1enddo,4.2程序控制结构,示例3:在RSDA找到“男性”的记录。DBF使用RSDA做而不是EOF()如果性别=“女性”跳过循环结束DISP等待“继续显示?”到y如果上面(y)“退出endif skip enddo”,4.2程序控制结构,示例4:在GZ薪资管理表中计算请病假的员工人数。DBF,

3、并显示他们的姓名、部门和病假。(反用法)清除N=0使用GZ,但不使用EOF()如果病假0 N=N 1?姓名、部门、病假ENDIF SKIP ENDDO?病假人数=,N USE,4.2程序的控制结构,例5:在人事管理表中,统计了具有专业职称的副教授人数和这些人的工资总额。(计数器和累加器)清除存储0到N,A使用RSDA,而不是EOF()如果职称=“副教授”N=N 1 A=A工资ENDIF SKIP ENDDO使用? number=,n?”工资总额=“,A,4.2程序的控制结构,练习:1)从键盘输入N个学生的考试成绩,并找出这N个学生的总成绩。2)求出f(n)=1 2 3 n,并给出n的任意值,然

4、后我们就可以计算f(n)。3)写一个程序来找出任意数的阶乘。4)实现计算的自编程序:P=1 1/(2*2) 1/(10*10)。4.2程序控制结构,2。FORNEXT循环格式:for=下一步退出循环,for,4.2程序控制结构,描述:1)正或负。默认情况下,默认值为1。2)初始值、最终值和步长可以是表达式(包括数值)。如果有变量,变量值必须提前赋值。3)当步长值为负值时,初始值应大于最终值;当步长值为正值时,初始值应小于最终值。功能:该命令中的内存变量(也称为循环变量)类似于计数器,其值由初始值、最终值和步长值决定。通过判断内存变量值是否在指定范围内,确定循环体是否重复执行。4.2程序的控制结

5、构,例1:对于I=1至10步骤2?下一个输出:1 3 5 7 9对于I=10到1步骤2?I NEXT输出结果:108 64 2,4.2程序控制结构,示例2:查找f (n)=1 23 n。输入n :到n s=0的值,i=1到n s=s i next?总和是:s是f(n)=1 * 2 * 3 * n。输入n :到n s=1的值,i=1到n s=s*i下一个?这个数的阶乘是:s,4.2。程序的控制结构,示例3:以正负顺序输出1100之间的所有整数。明白吗?对于I=1到100?如果i/10=int(i/10),十位数字何时换行?Endif next为I=1至1000000延迟next,4.2程序控制结

6、构,如果i/10=int(i/10),I=100至1步长-1?endif?接下来,4.2程序控制结构,例4:对于给定的自然数k,求不大于k的奇数的和。清除输入“请输入一个:的自然数”至k s=0,I=1至k步骤=s I下一步?不大于“ltrim(str(k)”的奇数之和为:“ltrim(str(s),4.2程序的控制结构,3。表扫描循环格式:扫描同时退出循环结束扫描功能:对于当前表的指定记录,循环体依次重复执行。它仅适用于带有表的操作。4.2程序的控制结构,示例:输出最年轻的三位教授的信息。清除日期使用rsda索引()-出生日期为rq n=0?姓名、性别、出生日期、基本工资、职称扫描=教授,如

7、果n3?名称、性别、dtoc(出生日期)、str(分娩,7,2)、n=n1否则退出endif endscan use、4.2控制程序结构、4 .可以嵌套多个循环周期,根据它们的位置称为外部循环和内部循环。嵌套原则:(正确)(错误)嵌套执行过程:首先执行外循环,然后逐步执行内循环。每次执行一个外部循环,所有的内部循环都应该被执行,也就是说,内部循环的执行次数应该和外部循环的次数一样多。4.2程序控制结构,练习:1)找出所有价格超过p的数字、名称和价格。016-1车床62044.61-037-2磨床241292.12。外环控制输出记录和内环控制虚线。4.2程序的控制结构,2)在屏幕上打印以下图案。

8、外环控制行数,内环控制行数,每行的起始位置设置在内环和外环之间。4.2程序的控制结构,概要:1。DO WHILE是最常用的命令,它可以在任何情况下替代其他两个命令。2.扫描的工作模式是专为在工作台内移动而设计的。1)在随后的每个周期中,扫描会自动向后移动记录指针。2)扫描的默认功能是“全部”,其他范围条款(休息、下一个或记录)可用于将扫描限制在某个记录范围内。3)扫描只处理表,它的可用模式比“一边做一边做”更受限制。3.FOR将内存变量设置为计数器,将其设置为初始值,并指定一个限制值。当计数器超过极限值时,它退出FOR循环。此功能便于累加和计数操作。4.2程序的控制结构,4.3.1子程序和过程

9、当处理负责任的问题时,程序通常是多模块程序。子程序和程序是FoxPro编程中的重要概念,是实现编程模块化的主要手段。大多数程序模块是子程序和过程,可以被其他程序调用。1.子程序、过程及其特征1)概念:主程序:一个不被任何程序调用而调用其他程序的程序。子程序(过程):被调用的程序。子程序(过程)的嵌套:一个子程序或过程调用其他子程序或过程。多模块程序2)子程序和主程序的区别子程序的最后一条语句通常是RETURN,因此控制可以转移到调用的上级程序,但是主程序不需要包含这个命令。子程序的第一个命令可以是PARAMENTS命令,用来传递参数,但是这个命令在主程序中通常是不存在的。3)子程序和过程的区别

10、:子程序必须独立于调用程序并保存在。PRG文件,而程序可以放在调用程序的后面,并保存在与调用程序相同的文件中。子程序的开头没有特殊的语句,但程序的第一条语句必须是:PROCESSE,4.3,多模块程序,2。带有参数的子程序的调用和返回命令允许带一个带有参数转移的子句。描述:1)参数中的参数可以是内存变量或表达式,但是变量必须被赋予初始值。2)调用子程序时,参数应传递给子程序,子程序中必须设置相应的参数才能接受语句。需要参数命令。,4.3多模块程序,格式:PARAMENTS函数:指定内存变量接收DO命令发送的参数值,返回主程序时,将内存变量值返回给调用程序中对应的内存变量。注意:参数必须是被调用

11、程序的第一条语句。命令中的参数依次对应于调用命令的WITH子句中的参数,因此参数的数量必须相同。4.3多模块程序示例1:设计一个子程序来计算花园面积,并用主程序中的参数调用它。清除主程序Ymj=0 5,10说“请输入半径:”获取bj默认值0读取zcx与bj,Ymj? circle area=,ymj parameters r,s子程序(zcx.prg) s=pi()*r2 return,4.3多模块程序,示例2:输入矩形的长度和宽度,并调用子程序来查找矩形的面积。清除主程序输入矩形的长度是:到一个输入矩形的宽度是:到一个区域面积=0。矩形区域是33,360,子程序z=x * y返回,y,z是4

12、.3多模块程序。3.虽然过程子程序的应用使程序模块化,但在大型程序设计中经常使用很多子程序,即需要存储很多PRG文件,并且磁盘读写频繁,导致可读性差。调用时,无法再打开文件。解决方法:使用过程语句。特点:它可以作为一个独立的PRG文件存在,也可以作为一个PRG文件与主程序同时存在。4.3多模块程序,格式:PRocESS示例:ymj=0 5,10表示“请输入半径:”获取bj默认值0读取用bj做GC,ymj 7,10表示“圆面积为:”获取ymj PRocESS GC参数r,s=pi()* r * r转,4.3多模块程序,清除主程序1。prgymj=0.5,10表示请输入半径为:的过程文件getbj

13、缺省值为0读取带有bj的do GC,ymj在2 7,10天的:的圆区域内获取ymj程序gc 2。PRG参数r,s=pi () * R2,4.3,多模块程序,4.3.2变量的范围在FoxPro中,变量根据变量的不同范围分为两类,即全局变量:变量的范围是FoxPro系统的整个运行过程。局部变量:作用域只是主程序及其被调用的子程序和过程的变量。示例:在命令窗口中输入:a=100 b=2,为两个内存变量赋值,然后编写zyy.prg,4.3多模块程序,* zyy.prg t=a*b? t=,str (t,4)显示t=200? a=,str (a,4)显示a=100。如果返回命令,再次显示两个变量:a仍然

14、显示200?t表示“找不到变量t”。从这个例子可以看出,a是一个全局变量,而t只在程序zyy.prg中工作,所以它是一个局部变量。4.3多模块程序,全局变量域中局部变量的定义方法1)在FoxPro命令窗口中定义和使用的内存变量是全局变量,在退出FoxPro系统之前始终有效。全局变量也可以通过使用以下命令之一来清除:释放清除所有清除内存2)在程序中,变量可以通过语句来定义。如果未指定,系统默认为局部变量(如上面例子中的t),其范围是生成该变量的程序以及该程序调用的子程序和过程。4.3多模块程序,3)用public语句定义全局变量:格式:PUBLIC用PUBLIC定义的全局变量必须先定义后使用,否则会出现语法错误。例如,a=name在默认情况下被定义为全局变量,而在默认情况下被定义为局部变量public a,这与前者相矛盾。4)用私有语句定义局部变量:格式:私有,4.3多模块程序,例如,编写一个程序并计算S=1!2!3!10!思考:使用程序或子程序来寻找阶乘。清除程序jc公共t私有s=0 t=1对于k=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论