§5.2.3循环结构程序设计——For循环语句VisualFoxPro主讲人:胡凤娇重庆文理学院软件工程学院11级计科班复习1、顺序结构常用的程序语言和格式2、条件结构常用的程序语言和格式输入语句INPUT“提示文字”;变量列表输出语句PRINT“提示文字”;变量列表赋值语句变量=表达式(2)IF条件成立THEN语句1ELSE语句2ENDIF(1)IF条件成立THEN语句ENDIF循环问题的提出:编写程序,用于计算1到10的累加之和。CLEARNSum=1NSum=NSum+2NSum=NSum+3…...NSum=NSum+9NSum=NSum+10?[1到10的累加之和为]+STR(NSum)RETURN如果将1到10的累加和改为1到100累加和,我们又该怎么办呢?在解决实际问题时,有许多操作,特别是对大量数据的处理,往往需要重复进行。在程序中这种处理要求反复执行某段程序,而且每次使用的数据都按一定规律变化,这种程序结构称为循环结构。循环结构介绍VFP提供了三种循环结构语句:条件(当)循环DOWHILE/ENDDO语句步长(计数)循环FOR/ENDFOR循环语句数据表扫描循环SACN/ENDSACN语句FOR循环变量=初值TO终值[STEP步长]语句序列[IF逻辑表达式LOOP|EXITENDIF]ENDFOR1、FOR…ENDFOR语句(步长(计数)循环)步长是循环控制变量在每一次循环后变化的数值可为正数;也可为负数省略STEP步长时,等价于STEP1循环体中可以包含EXIT命令和LOOP命令:执行EXIT命令时,退出整个循环执行LOOP命令时,结束本次循环LOOP和EXIT语句通常与IF分支语句相结合使用,以决定是否结束本次循环或是否彻底退出循环格式:该语句通常用于已知循环次数情况下的循环结构。将初值赋给循环变量循环变量=终值LOOP循环短路命令EXIT循环断路命令语句序列循环体循环变量自动增加一个步长NYFOR循环命令说明•首先将初值赋于循环控制变量•如果不超过终值,就执行语句序列•之后循环控制变量的值自动增加步长•再与终值比较,如果仍不超过终值,则再次执行语句序列•如此反复,直到循环变量的值超过终值时退出循环,执行ENDFOR语句后面的语句解决问题:编程计算1到100的累加之和。CLEARS=0&&S存放和值N=1FORI=1TO100STEP1&&I为循环变量S=S+N&&Sn-1+N赋SnN=N+1ENDFOR?”S=”,S&&输出S的最终值RETURNNY本例执行过程分析INS110,0+1221,1+2333,3+3446,6+45510,10+59999…+99100100…+100N和I的作用不同,但数值变化的过程是一样的,可以“合二为一”修改后的程序例CLEARS=0FORI=1TO100S=S+IENDFOR?”S=”,SRETURN【例1】给出一个程序,请说出程序的功能。clearForn=10to20ifn%3=0?nexitendifendfor功能:将10到20中第一个能被3整除的数找出来。clearforx=1to300ifx%17!=0loopelse?xendifendfor【例2】求300以内能被17整除的所有整数。【例3】•为数据表中的“序号(C,4)”字段顺序编号–即按照记录的物理顺序对记录的“序号”字段填入一个序号值;并首记录的序号值为“1”;依此类推,逐一进行编号–每次填写共分两步完成:•指针定位•替换序号字段REPLACE序号WITH数值–填写操作从首记录开始,一直到末记录结束;需要进行的替换操作的次数就是记录的总数流程与程序代码打开数据表统计记录数赋值NI=N指针定位:指向第I号记录替换“序号”:用I替换“序号字段值”关闭数据表结束NY【例4】任意输入的10个数值的倒数之和CLEARS=0FORN=1TO10ENDFOR?“倒数和S=”,SRETURNINPUT“X=”TOXS=S+1/X完善程序:增加判断输入值是否为“0”CLEARS=0FORN=1TO10INPUT“X=”TOXS=S+1/XENDFOR?“倒数和S=”,SRETURNIFX=0LOOPENDIFFOR循环结构语句的局限性CLEARS=0FORI=1TO100S=S+IENDFOR?”S=”,SRETURN如题目改为:计算1到100的累加和,但当和值达到4000时停止计算,并输出当时的结果必须首先确定循环的次数如不能事先确定,将无能为力课后作业1、求n的阶乘。2、计算1~100之间的偶数和。