欢迎来到天天文库
浏览记录
ID:42840434
大小:275.31 KB
页数:28页
时间:2019-09-23
《循环结构也称为重复结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、循环结构也称为重复结构,是指按照一定的条件重复执行具有特定功能的一段程序。循环结构是结构化程序的第三种基本结构,主要用来处理有规律的重复运算。7.1概述【例7.1】计算并输出1+2+3+…+100的和。【例7.2】假设某个单位要进行工资调整。现将工资数据库GZ.DBF中职称为“工人”的基本工资增加10元,将职称为“助工”的基本工资增加15元,将职称为“工程师”的基本工资增加25元,将职称为“高工”的基本工资增加30元,并对各类调资人数进行统计。循环结构是由以下三部分组成的:⑴设置初值:指对循环操作中使用的一些内存变量赋初值,也称为循环的初始化。⑵循环体:指每次循环要重复执行的操作。⑶循
2、环控制条件:指决定循环是否执行的条件,可以用一个关系表达式或逻辑表达式来表示。当循环控制条件为“真”时,执行循环体,否则将退出循环。7.2循环结构的实现命令Foxpro提供了三类循环命令,即DOWHILE循环、FOR循环和SCAN循环。7.2.1DOWHILE循环【格式】DOWHILE<条件><循环体>ENDDO其中,“DOWHILE”和“ENDDO”为关键字,<条件>表示循环控制条件,可以是关系表达式或逻辑表达式,<循环体>为DOWHILE循环的重复执行部分,由一条或多条Foxpro命令组成,也可以为三种基本结构。【功能】当<条件>成立时执行循环体,否则将退出循环。【说明】⑴“DOWH
3、ILE”和“ENDDO”分别表示循环结构的入口和出口,二者必须一起使用才能构成循环结构,缺一不可。⑵若循环条件一开始就不成立,则循环体一次也不执行。⑶在循环体内必须至少有一条命令与循环控制条件发生联系,其执行结果应当改变循环控制条件,使循环执行若干次后能够正常结束,否则将产生“死循环”(永无休止的循环)。⑷编程时,DOWHILE<条件>和ENDDO应分别各占一行。【例7.3】用DOWHILE循环编写例7.1的程序。【例7.4】用DOWHILE循环编写例7.2的程序。7.2.2FOR循环【格式】FOR<循环变量>=<循环变量初值>TO<循环变量终值>[STEP<循环变量增量>]<循环体>E
4、NDFOR|NEXT其中,FOR和ENDFOR(或NEXT)为关键字,分别表示循环的开始(入口)和结束(出口)。循环变量为一内存变量,在FOR循环中要指定循环变量的初值、终值和增量(或步长),<循环变量初值>、<循环变量终值>和<循环变量增量>可以是数值型常量、变量或表达式。<循环体>为FOR循环的重复执行部分,由一条或多条Foxpro命令组成,也可以为三种基本结构。【功能】实现指定次数的计数循环。FOR循环的执行过程如下:⑴将循环变量赋初值,即循环变量=循环变量初值,并记下终值和增量。⑵将循环变量的值与终值比较,若“超过”终值,则退出FOR循环,否则执行循环体。⑶执行ENDFOR(或N
5、EXT)命令,将循环变量增加一个增量,即循环变量=循环变量+循环变量增量。⑷将增值后的循环变量再与终值比较,即重复⑵、⑶、⑷,直到循环变量的值“超过”终值为止。【说明】⑴FOR和ENDFOR(或NEXT)必须成对出现,二者缺一不可。⑵FOR循环中循环变量的增量可以为正,也可以为负。为正时表示递增循环,即循环变量的初值≤循环变量的终值。为负时表示递减循环,即循环变量的初值≥循环变量的终值。当增量为1时,可以省略STEP<循环变量增量>。⑶FOR循环的执行次数为INT((终值-初值)/增量+1)⑷ENDFOR(或NEXT)命令有二个作用:①将循环变量增加一个增量;②将增值后的循环变量再次与终
6、值进行比较。⑸FOR循环的结束条件是循环变量的值“超过”终值,而不是等于终值。对于递增循环,循环结束条件是循环变量的值大于终值;对于递减循环,循环结束条件是循环变量的值小于终值。例:求n!(prog7_5.prg)7.2.3SCAN循环【格式】SCAN[NOOPTIMIZE][<范围>][FOR<条件>][WHILE<条件>]<循环体>ENDSCAN其中,SCAN和ENDSCAN分别表示循环的开始和结束,<范围>选项指定SCAN命令所要扫描的数据库的范围,可以是ALL、NEXTn、REST或RECORDn,缺省范围为ALL,即整个数据库。带FOR<条件>可扫描指定范围内满足条件的数据,使
7、用WHILE<条件>可决定何时结束SCAN循环。【功能】对当前数据库中指定范围内满足条件的记录进行扫描,并按设置的条件来执行循环体。【说明】⑴SCAN和ENDSCAN必须成对出现,二者缺一不可。⑵SCAN循环主要用于数据库的处理,因此在执行SCAN命令之前,必须首先打开要处理的数据库。⑶SCAN循环能够自动将数据库记录指针移到下一条记录并测试是否满足当前的条件,所以在SCAN...ENDSCAN的循环体内,不需要使用记录指针移动命令
此文档下载收益归作者所有