vfp-循环结构-2010
大学VFP循环结构程序设计
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
FOR 循环结构
FOR 循环变量=初值 TO 终值 [ STEP 步长 ] 循环变量= <语句序列> 语句序列> [ IF <逻辑表达式> 逻辑表达式> LOOP | EXIT ENDIF] ENDFOR
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
结束
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
任意输入的10个数值的倒数之和 任意输入的10个数值的倒数之和
CLEAR S=0 FOR N=1 TO 10 INPUT “X= ” TO X S=S+1/X ENDFOR ?“倒数和 S=”,S 倒数和 , RETURN
输出的循环变量 I 的值 是多少? 是多少? 讨论I不同的取值 讨论 不同的取值 讨论步长为负数的情况
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
FOR循环的例 FOR循环的例
为表“学生”中的“序号”字段顺序编号 为表“学生”中的“序号”
实际上就是按照记录的物理顺序对记录的“序号” 实际上就是按照记录的物理顺序对记录的“序号”字 段填入一个序号值 假定“序号”为字符型字段; 假定“序号”为字符型字段;且首记录的序号值为 “1”;依此下推,逐一进行编号 ” 依此下推, 使用替换命令 REPLACE 序号 WITH 数值
替换操作从首记录开始, 替换操作从首记录开始,一直到末记录结束 需要进行的替换操作的次数正是记录的总数
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
vfp程序设计 第7讲 循环
另一种循环: 另一种循环:SCAN … ENDSCAN
格式: 格式:
SCAN [ 范围 ] [ FOR<条件表达式 ][WHILE<条件表达式 条件表达式1> 条件表达式2>] 条件表达式 条件表达式
< 语句序列 > [ EXIT ] [ LOOP] ENDSCAN 功能:对当前打开的表文件在指定范围, 功能:对当前打开的表文件在指定范围,满足条件的记录中 进行自上而下逐个扫描操作,随着记录指针的移动,SCAN循 进行自上而下逐个扫描操作,随着记录指针的移动,SCAN循 环允许对指定的每条记录执行相同的< 操作。 环允许对指定的每条记录执行相同的< 语句系列 >操作。 说明:SCAN循环能自动移动指针 按条件指定记录, 循环能自动移动指针, 说明:SCAN循环能自动移动指针,按条件指定记录,避免在 循环体内重复执行表文件查询命令。 WHILE循环也可以 循环体内重复执行表文件查询命令。用DO WHILE循环也可以 实现对表文件的逐个扫描操作,但它需要借助函数BOF() BOF()或 实现对表文件的逐个扫描操作,但它需要借助函数BOF()或 EOF()测试状态 测试状态, SKIP命令移动指针 不如SCAN循环方便。 命令移动指针, SCAN循环方便 EOF()测试状态,用SKIP命令移动指针,不如SCAN循环方便。
y="零壹贰叁肆伍陆柒捌玖 零壹贰叁肆伍陆柒捌玖" 零壹贰叁肆伍陆柒捌玖 p=substr(y,2*x+1,2) ?x,"->",p input "a=" to a input "b=" to b input "c=" to c d=max(a,b,c) e=min(a,b,c) f=a+b+c-d-e ?d,f,e
VF循环结构
循环结构:前面我们学习的顺序结构和选择结构有一个共同点,即程序语句不能重复执行.而在实际应用中,常常需要多次重复执行某些语句.这样的需求适合于用循环语句来处理.在vfp中,提供了3种循环语句:do while循环、for循环及scan循环.1.while循环:格式:do while 条件语句序列[loop][exit]enddo说明:(1).\"do while 条件\"是循环说明语句,它标志循环的开始,并判断循环条件是否为真值;当条件为真值时,则执行语句序列;否则跳到enddo后面的语句继续执行.(2).do while和enddo之间的语句序列也被称作循环体,是需要多次重复执行的语句,由它完成规定的数据处理工作.(3).循环语句中的可选项exit,用于退出循环语句,可放在循环体语句的任意位置上.若在循环体中加上该可选项,当执行exit时,跳出循环体去执行enddo 后面的语句.通常,exit是在条件语句控制下,当条件得到满足时便跳出循环;否则永远不能执行exit后面的循环体语句.(4).可选项loop,是循环短路语句,也可以放在循环体语句的任意位置上.当执行loop时,其后的循环体语句部分不予执行,直接返回到循环起始语句.loop也通常放在条件语句的控制下.(5).enddo和do while必须成对出现.例:将\"职工档案\"表中所有职称是\"讲师\"的工资加200元,副教授加150元,无职称的加100元.首先,我们修改一下\"职工档案\"表的结构,为其增加一个\"工资\"字段: 在命令窗口依次执行如下命令:use 职工档案modify structure弹出\"表设计器\"窗口,添加一个新字段:工资 N6.1,单击\"确定\",保存更改.再执行browse命令,在弹出的browse窗口中为每条记录的\"工资\"填上值, 新建一个程序文件xiugai.prg,程序文件的内容如下:clearuse 职工档案do while .not.eof()do casecase 职称=\"讲师\"replace 工资 with 工资+200case 职称=\"副教授\"replace 工资 with 工资+150case 职称=\"无\"replace 工资 with 工资+100endcaseskipenddousereturn程序分析:循环程序由以下4个主要部分构成:A.循环的工作部分.它完成循环的主要工作,是循环体的主要部分.这里由do case---endcase组成.B.循环的修改部分.它保证循环体在循环过程中,有关的量能按一定的规律变化.这里的循环修改部分是skip语句,用来实现依次操作文件的各条记录.C.循环的控制部分.它保证循环体语句按规定的循环次数正常执行.此例中的循环控制部分是.not.eof()逻辑表达式,它表示做完所有记录的操作.D.循环的初始部分.它是循环控制初值.本程序中循环控制初值是隐含的,因为打开文件后,记录指针指向首记录,所以操作是从首记录开始的.2.for循环:在已知循环次数的情况下,使用for循环比较方便格式:for 变量=初值to 变量终值[step]步长语句序列[exit][loop]endfor|next功能:在循环控制变量的初值和终值的范围内执行循环语句,每执行一次循环,循环控制变量都要加上增量.当其值在规定范围内时就再次执行循环体语句序列,否则结束循环,执行循环终止语句下面的语句.跳出循环和循环短路语句exit和loop意义同前.具体执行步骤:(1).给变量赋初值;(2).判断变量的值是否小于等于终值;(3).若不是,则循环结束;(4).若是,则执行语句序列;(5).变量=变量+步长(若省略step,则步长=1);(6).转(2).例:在屏幕上输出乘法口诀表程序文件内容如下:?\"九九乘法表\"?for i=1 to 9for j=1 to i??alltrim(str(i))+\"*\"+alltrim(str(j))+\"=\"+alltrim(str(i*j))+\" \"next?next3.scan循环:格式:scan [范围][for 条件]语句序列endscan功能:对表中指定范围,满足条件的记录执行循环体语句,每执行一次循环,记录指针自动移动到下一条记录.操作表时,使用该语句功能强,效率高.例:使用scan语句编程,显示\"职工档案\"表中的女教师的姓名和职称.use 职工档案scan for .not.性别display 姓名,性别endscanusereturn。
VFP第六章课件2(循环结构)
控制循环执行的方式
控制循环执行的方式
3)用记录指针控制循环 学院英语比赛成绩数据表SH.DBF SH.DBF中包 例2:学院英语比赛成绩数据表SH.DBF中包 括以下字段:姓名( ),班级 班级( 括以下字段:姓名(C,8),班级(C, 10),英语(N ),英语(N, 0)和备用(N, 和备用(N 10),英语(N,3,0)和备用(N,3,0) ;其 中除备用字段外,其他字段均已有值。 中除备用字段外,其他字段均已有值。 编程序统计各班英语的平均成绩, 编程序统计各班英语的平均成绩,并显示平 均分前三名的班级和平均成绩( 均分前三名的班级和平均成绩(假设平均成绩 都不相同)。 都不相同)。 ( 见“程序168.PRG” 程序文件 )
<内存变量>为循环变量,作为计数器控制循环。<数 内存变量>为循环变量,作为计数器控制循环。 值表达式1>为循环变量初值; 数值表达式2> 1>为循环变量初值 2>为循环 值表达式1>为循环变量初值;<数值表达式2>为循环 变量终值,循环变量超过终值循环结束。 变量终值,循环变量超过终值循环结束。 FOR语句每循环一次 语句每循环一次, FOR语句每循环一次,自身便改变一次循环变量的 STEP短语设置改变的增量 短语设置改变的增量, 数值表达式3> 值,STEP短语设置改变的增量,由<数值表达式3> 设置。正值为增加,负值为减少,缺省默认为1 设置。正值为增加,负值为减少,缺省默认为1。在 循环中允许使用赋值语句修改循环变量的值。 循环中允许使用赋值语句修改循环变量的值。 FOR语句可以嵌套 语句可以嵌套。 NEXT任选其一 任选其一。 FOR语句可以嵌套。ENDFOR 和NEXT任选其一。
VFP程序设计第7章
For命令的应用实例
实例一:输出一个序列数
实例二:求阶乘
实例三:求素数
Next
7.1 循环结构语句
7.1.1 当型循环命令DO WHILE 想要在某一条件满足时执行循环,可 以使用当型循环(DO WHILE)结构。当型 循环的N-S流程图,如下图1所示。
编写Text1的GotFocus事件代码,使文本框得到焦点后,文本立即被 选中: THIS.SelStart = 0 THIS.SelLength = LEN(STR(THIS.Value))
7.1.2 步长型循环命令FOR
若事先知道循环次数,则可以使用步长型循环 (FOR…ENDFOR)结构。步长型循环可以根据给 定的次数重复执行循环体。其语法结构为: FOR 〈内存变量〉=〈初值〉 TO 〈终值〉 [STEP 〈步长值〉] [〈命令列〉] [LOOP] [EXIT] [〈命令列〉] ENDFOR | NEXT
n 从 2000 到 2100
如果 n % 4 = 0 如果 n % 100 != 0 或者 n % 400 = 0
真
真 L← 1 假 L← 0
假 L← 0 如果L = 1 真 输出n
② 编写命令按钮Command1的Click事件代码为: THISFORM.List1.Clear FOR n = 2000 TO 2100 IF n % 4 = 0 IF n % 100 != 0 OR n % 400 = 0 L=1 ELSE L=0 ENDIF ELSE L=0 ENDIF IF L = 1 THISFORM.List1.AddItem(ALLT(STR(n))) ENDIF ENDFOR
VFP第6部分(循环结构)
例2:写出程序 的结果store源自0tox,s
do whil .t. x=x+1 s=5*x if s>20
结果为:5 10 15 20
exit else ?s endi endd retu
例3:写出程 序的结果
结果为:8 16 24 32
x=.t. s=0 do whil x s=s+1 if s/8=int(s/8) ?s else loop endi if s>30 x=.f. endi endd retu
2)步长循环(for…endfor计 数循环) 格式:
例2:求n的阶乘
例3:计算s=1+2+3+…+100
clea s=0 for i=1 to 100
s=s+i
enddo
?"1+2+3+...+100=",s
return
说明:
①步长可正可负,缺省为1。
②循环体中不应包含改变循环 变量值的命令,否则循环次数将 随之改变。
③如果循环可以通过计数来控 制,则本循环比条件循环更为方 便。
当循环
inpu “请输入终值:” to n inpu “请输入步长:” to k i=1
步长循环
for i=1 to n step k
do whil i<=n
<命令序列>
<命令序列>
endf|next
i=i+k
endd
例4:写出本程序的执行结果
第一步, 计算 0+1; 第二步, 计算 (0+1)+2; 递归 第三步, 计算 (0+1+2)+3; 算法 ……… 第 i 步, 计算 (0+1+…+i-1)+i; ………. 第100步,计算 (0+1+…+99)+100;
vfp循环语句
一、条件循环语句 ( 当型循环语句)
DO WHILE <条件表达式> 〈条件表达式值为真时需反复执行 的语句系列〉 ENDDO
循环说明部分
DO WHILE<条件表达式> 〈条件表达式值为真时 需反复执行的语句系列〉 ENDDO
循环体 循环结束部分
条件? 条件? Y
N
循环体
功能:当条件表达式值 ENDDO后面的语句 为真时反复执行循环体, 直到条件表达式值为假 时为止。
三、扫描循环语句
模式一: … USE〈表文件〉 … GO TOP !EOF() DO WHILE EOF()=.F. 〈处理一条记录的命令序列〉 NOT EOF() SKIP ENDDO USE …
例:将jsdn.dbf中所有职称为 教授的基本工资增加100元, 副教授增加70元,讲师增加 50元,助教增加30元。
解法二:
use gs do while !eof() i=2 store 得分1 to m,n,x do while i<=8 j=str(i,1) m=max(m,得分&j) n=min(n,得分&j) x=x+得分&j i=i+1 enddo replace 最后得分with (x-m-n)/6 skip enddo use
例:编程显示26个大写英文字母 和它们的ASCII码值,每行显示 10个字母。
例:编程程序,建立并输出一个 10×10的矩阵,该矩阵两条对角 线元素为1,其余元素均为0。
例:若一个三位自然数的值等 于该数各位数字的立方和,则 这个自然数叫做“水仙花数”, 例如153=1^3+5^3+3^3,153是 一个水仙花数,请编写程序求 出所有水仙花数。
VFP第4、5部分(循环结构)
步长可正可负
* 仍计算阶乘 此处步长为负 仍计算阶乘,此处步长为负 clea Input "请输入自然数 to n 请输入自然数:" 请输入自然数 j=1 for i=n to 1 step -1 j=j*i endfor ? N, "!= ",j return
当循环
步长循环
input “请输入终值:” to n 请输入终值: 请输入终值 input “请输入步长:” to k 请输入步长: 请输入步长 i=1 do while i<=n <命令序列 命令序列> 命令序列 i=i+k endddo for i=1 to n step k <命令序列 命令序列> 命令序列 endfor|next
改变循环变量值 clea s=0 i=1 do while i<=100 s=s+i i=i+1 enddo ?"1+2+3+...+100=",s retu
例:求n的阶乘 的阶乘
clea Input "请输入自然 数:" to n j=1 for i=1 to n j=j*i endfor ? N, "!= ",j return * 100以内自然数求和 以内自然数求和 clea s=0 for i=1 to 100 s=s+i endfor ? "1+2+3+...+100=",s return
DO WHILE .T. 结构
• 此种表述的条件,必须设置强制退出的语 此种表述的条件, 句来完成退出循环, 句来完成退出循环,否则会出现死循环的 情形。 情形。 DO WHILE .T. … EXIT &&用来强制退出循环 用来强制退出循环 … ENDDO
VFP编程(循环结构)
二、循环结构do while 循环:当循环的次数事前未知,只知道什么时候退出循环时,要用 do while 语句;在循环体里应有使条件成立的语句;条件表达式的条件一定要与题目中给出的条件相反。
…………………………………………………………………………………………1.求12+42+72+……一直加直到和超过1000为止,输出和数和项数。
i=1sum=0n=0do while sum<=1000sum=sum+i^2i=i+3n=n+1enddo? "项数为",n? "sum=",sum2.求∏值,直到某项的绝对值小于0.000001为止。
4pi =1-31+51-71+…… sum=0s=1i=1t=s/ido while ABS(t)>=1E-06sum=sum+ts=-si=i+2t=s/ienddopi=4*sum? pi3.从键盘不断输入字符,统计其中数字字符的个数,一旦输入*,统计结束。
n=0accept "输入一个字符" to CHdo while CH<>"*"m=ASC(CH)if M>=48 and m<=57n=n+1endifaccept "输入一个字符" to CHenddo? "输入的字符中共有数字字符个数为",n4.键盘输入两个整数,求他们的最大公约数和最小公倍数。
input "输入一个整数" to minput "输入另一个整数" to nm1=mn1=nt=mod(m,n)do while t<>0m=nn=tt=mod(m,n)enddo? "最大公约数为",n? "最小公倍数为",m1*n1/n* 02年真题第2题:求两个整数m和n的最大公约数。
VFP第11部分(循环辅助语句及多重循环)解析
例:以下程序段与VFP命令: DELETE WHILE 性别="男" .and. 政治面貌="群众" 等效,请填空完成。 Go top do while .not.eof() if 性别<>"男" ① endif if 政治面貌="群众" ①exit ② ②delete endif skip enddo
例:编写输出乘法口诀表的程序,要求口诀 表呈三角形格式输出。
1*1=1 2*1=2 3*1=3 4*1=4 5*1=5 . . . 9*1=9
2*2=4 3*2=6 4*2=8 5*2=10 . . 9*2=18
3*3=9 4*3=12 4*4=16 5*3=15 5*4=20 5*5=25 9*3=27 9*4=36 9*5=45 … 9*9=81
3种循环结构
Do while….enddo for….endfor scan….endscan
循环辅助语句
loop: 通常又称为中途复始语句或 短路语句。
exit:通常又称为中途退出语句或 循环终止语句。
流程图:
N
条件 Y 语句序列 LOOP EXIT
enddo的下一条命令
【例】 来。
将10到20中第一个能被3整除的数找出
xs
do while .t. && accept "请输入学生的学号:" to xh if len(alltrim(xh))=0 exit If alltrim(xh)=“#” endif ? “姓名 专业班级 课程号 成绩" scan for 学号=xh &&内循环 ?xs.姓名,xs.籍贯,课程号, endscan enddo close all set safety on return
2010VFP第6部分(循环辅助语句及多重循环)
找到满足条件的最 大数,结束循环
【例】 来。
将10到20中所有不能被3整除的数找出
for n=10 to 20
if n/3=int(n/3)
loop
结束本次循环, 转入下一次循 环条件的判断
endif
?n endfor
【例】 求300以内能被17整除的所有整数。
for x=1 to 300 if x%17!=0
结果为:8 16 24 32 40 48
例:下列程序判断一个自然数n是否为素 数,其方法是用2到 n 之间的数逐个去除, 若余数都不为0,则n为素数,否则不是素 数,请填空完成。
INPUT "请输入一个大于1的自然数:" TO N Y=1 &&Y=1表示所输入的自然数是素数,为0表示不是素数 X=INT(SQRT(N)) I=2 DO WHILE I<=X IF N%I___①____ ____②_____ LOOP ELSE Y=0 EXIT ①<>0 ENDIF ②i=i+1 ENDDO IF Y=1 ③str(n) ?____③______ +"是素数" ELSE ?N,"不是素数" ENDIF RETURN
For n=10 to 20 if n%3=0 ?n exit endif endfor
结束当前循环,跳出 exit所在的循环结构
【例】 求300以内能被17整除的最大的数。
for x=300 to 1 step -1 if mod(x,17)=0 ?x exit endif endfor
从大数开始,第 一次找到的就 是最大值
例:写出程序的结果
clea stor 0 to x,s do whil .t. x=x+1 s=5*x if s>20 exit else ?s endi endd retu
Vfp程序设计循环结构(列表框设计九九乘法表)
Vfp程序设计循环结构练习——使用列表框设计九九乘法表1、实验目的:掌握循环语句结构语法。
熟练掌握DO WHILE……ENDDO、FOR……ENDFOR语句了解SCAN……ENDSCAN语句掌握组合框、页框。
熟练掌握列表框。
2、实验内容:编程题:输出“九九”乘法表,格式如图所示设计步骤:1、设计程序界面与设计对象属性。
选择“新建”表单,进入表单设计器。
增加一个列表框控件List1、两个个命令按钮Command1和Command2、一个标签Label1。
其他控件的属性设置请参见前面章节。
2、编写Command1的Click事件代码:FOR n=1 TO 9s=ALLT(STR(n-1))i=ALLT(STR(n))THISFORM.LIST1.ADDLISTITEM("*",1,1)THISFORM.LIST1.ADDLISTITEM(i,n+1,1)FOR t=n TO 9i=ALLT(STR(n))THISFORM.LIST1.ADDLISTITEM(i,1,n+1)s=ALLT(STR(t*n))THISFORM.LIST1.ADDLISTITEM(ALLT(STR(t))+"*"+ALLT(STR(n))+"="+s,t+1, n+1)ENDFORENDFOR说明:添加列表方法AddlistItem(s,n,1)第三个参数表示列表项添加到列表中的列数。
编写Command2的Click事件代码:THISFORM.RELEASE。
循环结构程序VFP_PPT
练习:工资表统计工作
统计工资表中工资总额在3500元 以上的记录,并逐条显示该记录的内 容。
VFP程序设计教程
四、scan…endscan
例:工资表统计工作
统计工资表中工资总额在3500元 以上的记录,并逐条显示该记录的内 容。
VFP程序设计教程 九九乘法表
VFP程序设计教程
小 结
1. 2. 学会用循环结构编写程序。 掌握循环语句的嵌套方式。
VFP程序设计教程 例:记帐凭证输入密码验证程序 do while .t. accept "请输入密码:" to ma if ma<>'pzsr' and ae<>3 loop else if ma<>'pzsr' and ae=3 return endif endif exit enddo
VFP程序设计教程
endfor/next
VFP程序设计教程 例: 棋盘上的麦粒 古印度时,锡塔为国王发明了象棋而得到重赏, 国王问他要什么?他说:“陛下只要在象棋棋盘的第 一个格子上放1粒麦子,第二格子放2粒麦子,以后每 个格子的麦子数都按前一格的两倍计算。如果陛下按 此法给我64格的麦子,就感激不尽了。”国王想, “这还不容易!”让人杠了一袋麦子,但很快用光了, 再扛一袋还不够,国王惊呆了!国王一下共要给锡塔 多少小麦? 锡塔一共要了:1.84ⅹ1019粒; 一吨小麦:2.49 ⅹ107粒; 1.84ⅹ1019 / 2.49 ⅹ107 =7390亿吨; 2012年我国粮食产量:5.9亿吨。
循环结构程序设计
VFP程序设计教程
知识目标
1 程序流程图 FOR / ENDFOR语句 DO WHILE / ENDDO语句
Visual Foxpro程序设计第四章第6讲 DO WHILE循环结构
DO WHILE .NOT. EOF()
DO CASE
CASE zcmc="教授"
t1=t1+1
CASE zcmc="副教授"
t2=t2+1
8
CASE zcmc="讲师"
中国矿业大学计算机学院 李向群
t3=t3+1
OTHERWISE
t4=t4+1
ENDCASE
SKIP
ENDDO
@1,10 SAY " 教授的人数:"+STR(t1)
@3,10 SAY "副教授的人数:"+STR(t2)
@5,10 SAY "讲师的人数:"+STR(t3)
@7,10 SAY "助教的人数:"+STR(t4)
USE
RETURN
9
中国矿业大学计算机学院 李向群
(1)DO WHILE循环又称_____循环。 (2)当循环条件为______是开始执行DO WHILE循环。 (3)LOOP语句的功能是_________。 (4)EXIT语句的功能是________。
EXIT语句的功能是退出循环。EXIT语句可以放在循环 体内的任何位置,当执行EXIT语句时,直接退出循环, 执行ENDDO后面的语句。通常,EXIT语句是在条件语 句控制下,当条件得到满足时便跳出循环。
6
DO WHILE 循环
中国矿业大学计算机学院 李向群
例1:计算 S=1+2+……+100
ENDDO
3
DO WHILE 循环结构
中国矿业大学计算机学院 李向群
visual foxpro程序设计中循环结构的分析
visual foxpro程序设计中循环结构的分析VisualFoxpro(VFP)一种强劲的对象关系数据库管理系统,它支持复杂的数据库应用程序的开发。
在Visual Foxpro中,循环结构是一种重要的程序设计语言,它提供了一种有效的方法来控制程序的执行和控制程序的流程。
本文就Visual Foxpro程序设计中循环结构的分析进行简要介绍。
一、Visual Foxpro中的循环结构Visual Foxpro中的循环结构分为三种:Do While循环结构、For 循环结构和For Each循环结构。
1、Do While循环结构Do While循环由“Do While”子句开始,该子句包括一个条件表达式,如果该条件表达式为真,则循环会一直执行,否则循环将终止。
Do While循环可以连续执行,直到条件为假或者循环体结束,它也可以将循环体执行指定的次数。
2、For循环结构For循环由for循环头和for循环尾构成,for循环头包括一个变量和初始值、最终值以及变量的变化量。
for循环尾包括一个step 语句,它用于指定变量增量。
for循环可以表示一次性累计计算,也可以表示分级循环或者嵌套循环。
3、For Each循环结构For Each循环是一种特殊的循环结构,它用于处理多维数组,还可以处理文件和记录集中的一组记录。
For Each循环结构有foreach语句、while条件修饰符和end for each语句组成,while条件修饰符用于确定for each语句的执行条件,在for each语句与end for each语句之间的语句将会被循环执行。
二、Visual Foxpro中循环结构的应用Visual Foxpro中循环结构可以用于各种类型的应用,从简单的任务到复杂的任务都可以使用循环结构。
1、统计与分析使用循环结构可以轻松实现数据库中的数据统计和分析,例如,可以使用For循环结构来统计数据库中的总结果或者对结果进行分类。
VF循环结构
循环结构:前面我们学习的顺序结构和选择结构有一个共同点,即程序语句不能重复执行.而在实际应用中,常常需要多次重复执行某些语句.这样的需求适合于用循环语句来处理.在vfp中,提供了3种循环语句:do while循环、for循环及scan循环.1.while循环:格式:do while 条件语句序列[loop][exit]enddo说明:(1).\"do while 条件\"是循环说明语句,它标志循环的开始,并判断循环条件是否为真值;当条件为真值时,则执行语句序列;否则跳到enddo后面的语句继续执行.(2).do while和enddo之间的语句序列也被称作循环体,是需要多次重复执行的语句,由它完成规定的数据处理工作.(3).循环语句中的可选项exit,用于退出循环语句,可放在循环体语句的任意位置上.若在循环体中加上该可选项,当执行exit时,跳出循环体去执行enddo 后面的语句.通常,exit是在条件语句控制下,当条件得到满足时便跳出循环;否则永远不能执行exit后面的循环体语句.(4).可选项loop,是循环短路语句,也可以放在循环体语句的任意位置上.当执行loop时,其后的循环体语句部分不予执行,直接返回到循环起始语句.loop也通常放在条件语句的控制下.(5).enddo和do while必须成对出现.例:将\"职工档案\"表中所有职称是\"讲师\"的工资加200元,副教授加150元,无职称的加100元.首先,我们修改一下\"职工档案\"表的结构,为其增加一个\"工资\"字段: 在命令窗口依次执行如下命令:use 职工档案modify structure弹出\"表设计器\"窗口,添加一个新字段:工资 N6.1,单击\"确定\",保存更改.再执行browse命令,在弹出的browse窗口中为每条记录的\"工资\"填上值, 新建一个程序文件xiugai.prg,程序文件的内容如下:clearuse 职工档案do while .not.eof()do casecase 职称=\"讲师\"replace 工资 with 工资+200case 职称=\"副教授\"replace 工资 with 工资+150case 职称=\"无\"replace 工资 with 工资+100endcaseskipenddousereturn程序分析:循环程序由以下4个主要部分构成:A.循环的工作部分.它完成循环的主要工作,是循环体的主要部分.这里由do case---endcase组成.B.循环的修改部分.它保证循环体在循环过程中,有关的量能按一定的规律变化.这里的循环修改部分是skip语句,用来实现依次操作文件的各条记录.C.循环的控制部分.它保证循环体语句按规定的循环次数正常执行.此例中的循环控制部分是.not.eof()逻辑表达式,它表示做完所有记录的操作.D.循环的初始部分.它是循环控制初值.本程序中循环控制初值是隐含的,因为打开文件后,记录指针指向首记录,所以操作是从首记录开始的.2.for循环:在已知循环次数的情况下,使用for循环比较方便格式:for 变量=初值to 变量终值[step]步长语句序列[exit][loop]endfor|next功能:在循环控制变量的初值和终值的范围内执行循环语句,每执行一次循环,循环控制变量都要加上增量.当其值在规定范围内时就再次执行循环体语句序列,否则结束循环,执行循环终止语句下面的语句.跳出循环和循环短路语句exit和loop意义同前.具体执行步骤:(1).给变量赋初值;(2).判断变量的值是否小于等于终值;(3).若不是,则循环结束;(4).若是,则执行语句序列;(5).变量=变量+步长(若省略step,则步长=1);(6).转(2).例:在屏幕上输出乘法口诀表程序文件内容如下:?\"九九乘法表\"?for i=1 to 9for j=1 to i??alltrim(str(i))+\"*\"+alltrim(str(j))+\"=\"+alltrim(str(i*j))+\" \"next?next3.scan循环:格式:scan [范围][for 条件]语句序列endscan功能:对表中指定范围,满足条件的记录执行循环体语句,每执行一次循环,记录指针自动移动到下一条记录.操作表时,使用该语句功能强,效率高.例:使用scan语句编程,显示\"职工档案\"表中的女教师的姓名和职称.use 职工档案scan for .not.性别display 姓名,性别endscanusereturn。
vfp中的两种循环结构剖析
vfp中 的 两 种 循 环 结 构 剖 析
口鲁 玲
【内容摘要 】vfp中提供 了三种基本 的程序 结构 ,分别是 :顺序结 构、选择结构和循环 结构 。经过科 学研 究证 明 ,任 意一个结构化 程 序 都 可 以 由这 三种 程 序 结 构 组 成 。 其 中循 环 结构 是 最 复 杂 的 一 种 ,也 是 课 堂教 学 的 重 点 、难 点 。 循 环 语 句是 专 门解 决 在 一 定条 件 下在 程 序 的 某 处 重 复执 行 某 个 程 序 的 问 题 的 。本 文 通 过 具 体 的 例 子 ,从 多 角 度 讲 解 循 环 结 构
在 应 用 HABIT程 序 的 过 程 中发 现 ,该 程 序 是 针 对 美 国 电 厂 的 设 计 特 征 和 审 管 要 求 开 发 而 来 ,对 我 国机 型 的适 用 性 有 所欠缺 :如程序将 堆芯 积存量 数 据 固化在 核素 信 息文 件 中, 不便于针对不 同堆型进行修改 ;在吸入 (甲状腺 )剂量计算 中 对 于 碘 采 用 相 同 剂 量 转 换 因子 ,并 未 区 分 形 态 ;计 算 取 风 口 大气弥散 因子 时基 于 确 定气 象条 件 而 非 逐 时气 象 条件 等 。 很 显 然 ,在 深 入 汲 取 国 际 先 进 评 价 方 法 的 基 础 上 ,开 发 完 成 适 用 于我 国核 电 厂 主 控 室 的可 居 留 性 评 价 软 件 具 有 重 要 的 工 程 意 义。
For Evaluating Design Basis Accidents At Nuclear Power Reac—
tors[s]. [5]刘新 建 ,黄树 明,刘 鹏飞 等.ACPIO00主控 室 可居 留性 系 统改进分析 [J].核 工程研 究与设计 ,2014:249—253 [6]US NRC.SPR6:5.2,Containment Spray As A Fission Prod— uct Cleanup System Review Responsibilities[S]. [7]国家核安 全局 .HAD002/01—2010,核动 力厂 营运单位 的 应 急 准备 和 应 急 响 应 [S].
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
INPUT “X=” TO X
S=S+1/X
IF X=0
LOOP ENDIF
ENDFOR
?“倒数和 S=”,S
RETURN
数据库及VFP6.0程序设计—循环结构程序
14
FOR 循环结构
FOR 循环变量=初值 TO 终值 [ STEP 步长 ] <语句序列>
之后循环控制变量的值自动增加步长
再与终值比较,如果仍不超过终值,则再次执行
语句序列
如此反复,直到循环变量的值超过终值时退出循
环,执行ENDFOR语句后面的语句
数据库及VFP6.0程序设计—循环结构程序
6
FOR循环的例
编程求和 S=1+2+3+…+100。
CLEAR S=0 N=1 FOR I=1 TO 100 S=S+N N=N+1 ENDFOR ? ”S=”,S
数据库及VFP6.0程序设计—循环结构程序
19
FOR循环结构语句的局限性
CLEAR 计算1到100的累加和, S=0 但当和值达到4000时 FOR I=1 TO 100 停止计算,并输出当时 S=S+I 的结果 ENDFOR 必须首先确定循环的 ? ”S=”,S 次数 如题目改为:
RETURN
如不能事先确定,将
循环的例
CLEAR USE 学生表 SET ORDER TO TAG 班级 LOCATE FOR 班级=[管理0506] 可否;如何改 SEEK “管理0506” DO WHILE 班级=“管理0506” DISPLY SKIP 不可缺少的语句 ENDDO 使循环趋于结束 USE RETURN 显示学生表中所有管理0506班的学生记录
●循环语句用于控制以上的判 对该整数用条件进行判 ?? [ ] 断在1到500范围内,反复执行 断:满足即显示; ENDIF 500次 ENDFOR无论满足与否都继续确 在1● 到分支用于判断 500的范围内确定 1到500内的某 整数是否满足设定的条件 一个整数;
?? n
RETURN定并判断下一个整数
2. 寻找一种控制手段,控制着 N=N+1 NSum=NSum+99 NSum=NSum+100 NSum=NSum+N Eenfor
? [1到100的累加之和为 ]+STR(NSum) N=N+1
RETURN 这两件事反复地执行足够多的次数
数据库及VFP6.0程序设计
循环结构程序设计
9
相关问题的解决
S=1+3+5+7+9+ …+99 INPUT “N= ” TO N S=2+4+6+8+ …+100 Y=1 S=1+1/3+1/5+1/7+ …+1/99 FOR X=1 TO N Y=Y*X S=1/2+2/3+3/4+4/5+5/6+6/7+ …+100/101
S=1-1/3+1/5-1/7+1/9- …+ … ENDFOR ? Y ……… … RETURN 多项式求解 问题
阶乘问题的求解 ►但要注意变量的初始化问题
数据库及VFP6.0程序设计—循环结构程序
10
FOR循环的例
为数据表中的“序号(C,4)”字段顺序编号
即按照记录的物理顺序对记录的“序号”字段填入一 个序号值;并首记录的序号值为“1”;依此类推,逐 一进行编号
无能为力
数据库及VFP6.0程序设计—循环结构程序
20
DO 循环结构
DO WHILE <条件>
<语句序列>
[ IF <逻辑表达式>
LOOP | EXIT
ENDIF ]
ENDDO
数据库及VFP6.0程序设计—循环结构程序
21
DO
循环的例
特 别 注 意 两 条 语 句
编程求和S=1+2+3+…, 直到S>=4000结束 CLEAR S=0 N=1 DO WHILE S<4000 S=S+N N=N+1 ENDDO ? ”累加和S=”,S RETURN
29
SCAN
循环语句
SCAN 命令控制指针从首记录开
始,自动地逐条向下单步移动,扫
描整个数据表,并对每一条被扫描 到的数据记录都执行语句序列规定
SCAN <语句序列>
的系列操作;即:
记录指针指向首记录 语句序列 自动下移一条 语句序列
ENDSCAN
… …
直到文件尾结束
数据库及VFP6.0程序设计—循环结构程序
数据库及VFP6.0程序设计—循环结构程序
16
将初值赋给循环变量
N
循环变量<=终值
Y
循 环 体
语句序列 LOOP循环短路命令
EXIT循环断路命令
循环变量自动增加一个步长
数据库及VFP6.0程序设计—循环结构程序
17
例4-19
求1到500以内满足“除 以7余2”所有整数
CLEAR 基本思想: 以3余2、除以5余3、除 一个循环语句嵌套分支语句: FOR n=1 TO 500 IF n%3=2 AND n%5=3 AND n%7=2
数据库及VFP6.0程序设计—循环结构程序
18
显示全部的 1974年以后出生的学生 CLEAR
USE 学生 COUNT TO N 基本思想---从首记录开始,逐条判断,满足者显 示 FOR I=1 TO N GO I I 指针移动----GOTO IF YEAR( 出生日期 )>1974 判断是否满足条件 ----- YEAR( 出生日期 )>1974 DISPLAY 对满足条件的记录显示----DISPLAY ENDIF 反复执行的次数即为数据记录的总数---ENDFOR COUNT TO N USE FOR I=1 TO N / ENDFOR RETRUN
在循环体中应包含使循环趋向结束的语句;否则循环 将无限次进行,而形成死循环
数据库及VFP6.0程序设计—循环结构程序
23
设置循环初始条件
N
条件表达式序列 LOOP循环短路命令
EXIT循环断路命令
使循环趋于结束的语句
数据库及VFP6.0程序设计—循环结构程序
24
两种循环命令的比较
关闭数据表 结束
数据库及VFP6.0程序设计—循环结构程序
12
任意输入的10个数值的倒数之和
CLEAR S=0 FOR N=1 TO 10 INPUT “X= ” TO X S=S+1/X
ENDFOR
?“倒数和 S=”,S
RETURN
数据库及VFP6.0程序设计—循环结构程序
13
完善程序:增加判断输入值是否为“0”
数据库及VFP6.0程序设计—循环结构程序
1
循环问题的提出
CLEAR
N=1
NSum=1
NSum=NSum+2 For I=1 to 100 解决的思想 NSum=NSum+3
程序用于计算 1到100的累加
之和。 NSum=NSum+N 1. 设置一个变量 N(N=1, 并逐步变化到100) …...
&& S存放和值 STEP 1 && I为循环变量 N && Sn-1+N赋Sn Y
&& 输出S的最终值
RETURN
数据库及VFP6.0程序设计—循环结构程序
7
本例执行过程分析
I 1 2 N 1 2 S 0, 0+1 1,1+2
N和I的作用不同,
但数值变化的过程 是一样的,可以“合 二为一”
3
4 5
30
SCAN的例
假设有关系:成绩(学号,数学,物理,化学,…) USE 成绩 nMax=0 SCAN nMax=0 do while nMax=MAX(nMax, 数学) eof()=.f. nMax=MAX(nMax,数学)
ENDSCAN
?nMax RETURN
程序用于统计并输出表中的所有 skip 数学成绩的最大值 enddo
数据库及VFP6.0程序设计—循环结构程序
34
SCAN的例
编程统计学生表中男学生的人数 CLEAR N=0 USE 学生 SCAN FOR 性别=”男” N=N+1 &&对满足条件的记录计数 ENDSCAN ? ”学生表中男学生的人数是:”+STR(N) USE RETURN
3
4 5
3,3+3
6,6+4 10,10+5 …+99 … +100
99 100
99 100
数据库及VFP6.0程序设计—循环结构程序
8
修改后的程序例
CLEAR S=0 FOR I=1 TO 100 S=S+I ENDFOR ? ”S=”,S RETURN
数据库及VFP6.0程序设计—循环结构程序
[ IF <逻辑表达式>
LOOP | EXIT
ENDIF]
ENDFOR
数据库及VFP6.0程序设计—循环结构程序
15
命令格式说明
循环体中可以包含EXIT命令和LOOP命令: 执行EXIT命令时,退出整个循环 执行LOOP命令时,结束本次循环 LOOP 和 EXIT 语句通常与IF 分支语句相结合使用 , 以决定是否结束本次循环或是否彻底退出循环