解析VFP三种循环语句
>
程序分析 :本例中循环的次数事前未知,只知道什么时候退出循环 时, 因此只能使用 D IE语句 , OWH L 不能使用 F R语句。 O 例2 计算 12 23 _ +) " + .N + 1 的值 执行过程: 命令执行时 , 首先判断 D L < O WHIE 条件 > 值为卫时 , 则 用 D IE O WH L 语句编写程序 反复执行 < 命令序列 >遇到 E D O时 , , N D 返回到 D IE处重复以 O WH L 用 F R语句编写程序, O 代码如下 上的过程。当 < 条件 > 值为F时, 直接跳出循环转去执行 E D O后面的 N D S T AL OFF E T K 命令。说明:O WH L 唐 起始命令,N D D IE是, E D O是循 书 命令 ;O D CL A R E I UT ” ” TO NP N= N WH L IE和 E D O之问的命令序列为循环体, ND S 0 = 令, 由它完成规定的数据处理工作 ;O P L O 是循环短路语句, 用于控制循环 F OR =1 I TO N S S I 、 = 十【f+l 的特殊命令,可以使程序执行流程转向循环开始命令处 ;x r E r 也是控制 ENDF OR 循环的特料谕冷 , 用于退 出循研 . , 向 可以跳出循研. 转去勃【 彳 = 酐 吉 瑜 ? ” =” S .S 令之后的命令 ; O P和 E T必须使用在循环体中, 往往是和分支 LO XI 而目 S ET lA ON r LK RET URN 结构配合使用;O WH L D IE和 E D O必须成对出现, ND 且各自独占—行; RE TURN D IE后的 < O WH L 条件 > 应在循环到一定次娄日 , 殳寸其值为F, 否则会导致 程序分析: 本例中循环的次数为 N 可以使用 D IE语句 , , O WH L 也可 死循环。出现死循环时, E C 可用 S 键终止。 以使用 F R语句。对程序代码进行比铰, O 显然 F R语句更加简洁直观。 O 1 2计数循环 例3 显示“ 学生入学登记表” 中性别为“ 且专业是“ 男” 计算机” 的学生 命令格式 : F R< 强 > ( O 锎 = 初值 > O< T 烛 > P步蛐 性别 专业 、 、 姓名 籍贯、 民族和入学成绩。
…
E D O 发 N D ; 循环 F R N F R 干 O …E D 0 ; 循环 S A …E D C N C N N S A 。然
SU = M O
N= O
而对于很多初学者在编程过程中经常会出现例如不能判断循环次数 , 不 能判断什么时f退出循环, 戾 死簿 箬 争 错误。 解决问题的关蘑在于理 , 脚 暗 环结构的概念, 区分三种循环语句的格式、 作用和流程。 1三种循环语句的命令格式和执行过程
S A 0 <条.赫拭 ) C N R 牛 】
用 SA C N语 句编 写 程 序 , 代 码如 下 :
S T TAL OF E K F
CL AR E
U E学生人学登记表 S SA O C N F R性 别 = 男 ”A D 专业 = 计算机 ” “ N ” ?性别, 专业, 姓名 籍贯, 民族, 入学成绩
1 . 1当型循环
DO HI E U M< 0 0 W L S =i 0 S UM = UM+I S ' 2
1I3 =+ N= N+1 E NDDO
命令格式:
D IE  ̄ OWH L < < 命令序 > 列
L p l O】 O E I I r X ]
? 项 为 ’ ” W பைடு நூலகம்
灵活运用。
关 键词 : P; 环 语 句 : 用 VF 循 应
在VP F 程序设计中, 掌握好程序设计的基本结构 , 是学好程序设计 例 1 1 4+ 2……—直b到直到和超过 10 为止 ,输出和数和 求 。7+ + — 口 00 的重要前提。V P的基本结构有三种: F 分别为』 结构、 分支结构和循环 项数。 结构; 其中顺序结构和分支结构容易编写 , 但是程序语句不能重复执行 ; 用D OWHIE语句编写程序, L 代码女 下: I 1 S ET T K 0F AL F 而在实际应用中, 往往需要多次重复执行某些语句 , 这样的问题用循环结 CL EAR 构来处理非常方便。V P F 提供的循环语句有三种 : 当型循环 D L OWHIE I =1
E NDDO
薰 一
脯 瑚 编
一 茂 认
鞘
< 命令序列 >
ENDF 0R, EXT N
执行过程: 命令执行时, 首 的值是否超过终值的范围;如果没有超过范围, 则执行 F R后面的命令 O 序列; 当遇到 E D O N F R子句时返 回到 F R语句熄 自动增加步长值然 O 后再与终值比 女 l ̄复执行直 到循环变量的值超过终值范围, Iu  ̄ P 则执行 EDO N F R后面的命令。说明:O F R是循环起始命令,N F R或 N X EDO ET 是循环结束命令 ;O F R和 E D O N F R之 间的命令序列为循环体 ;O F R和 EDO N F R必须成对出现, 且各自独占—行; 步长值缺省时默认为 1 。 1 指针循环 3 命令格式:
・
8 2・
信 息 产 业
解析 VF P三种循 环语句
李 莉
( 东白云学院电气与信 息工程 学院 , 东 广州 14 0 广 广 I 05) 5
摘 要 : 文 通过 具体 示例 对 VF 本 P三 种循 环语 句进 行 分 析 比较 , 纳 总 结 了三 种循 环 语 句适 用 处理 的 问题 ,L6实现 了循 环 语 句 的 归 2, ,
2013-1VFP第7部分(循环辅助语句、多重循环)
真 内循环初始条件 假 内循环结束 改变外循环 循环条件
内循环条件 真 内循环体 改变内循环循 环条件
外循环结束
列表框(List)
控件类
教材P65
主要属性:ColumnCount、 ColumnWidths 主要事件:InteractiveChange 主要方法:AddItem、 AddListItem
exit:通常又称为中途退出语句或 循环终止语句。
注意:适用于3种循环
流程图:
N
条件 Y 语句序列 LOOP EXIT
enddo的下一条命令
EXM4: 将100到150中第一个能被3整除的 数找出来。
For n=100 to 150 if n%3=0 thisform.text1.value=n exit endif 结束当前循环,跳出 endfor exit所在的循环结构
“输出”按钮的“Click”事件代码: k=0 for x=3 to 100 for n=2 to sqrt(x) if mod(x,n)=0 exit endif endfor if n>sqrt(x) thisform.edit1.value=thisform.edit1.value+str(x,5) k=k+1 if k%5=0 thisform.edit1.value=thisform.edit1.value+chr(13) endif endif endfor
二维数组
注:在定义数组时,数组名不能 与同一环境下的简单变量同名。
数组元素的赋值及输出与简单
内存变量相同。
同一个数组元素在不同时刻可 以存放不同类型的数据。
在同一个数组中,每个元素的 值可以是不同的数据类型。
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
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循环语句
一、条件循环语句 ( 当型循环语句)
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部分(循环结构)
fac=1
for i=1 to n
输入n i=1,fac=1 i<=100 fac=fac*i i=i+1 输出s 求n!的N-S图
fac=fac*i
endfor
?n,"!=",fac
return
例:求所有的水仙花数。(所谓水
仙花数是指一个三位数,其各位数 字的立方和等于该数本身。
求1000以内的 “水仙花数”。所谓“水 仙花数”是指一个3位数,其各位数字的立 方和等于该数本身。例如,153=13+53+33, 故153是水仙花数。
例:求n的阶乘
当循环
步长循环
input “请输入终值:” to n
input “请输入步长:” to k
i=1 do while i<=n <命令序列> i=i+k
for i=1 to n step k
<命令序列> end for | next
end ddo
Clear
input "请输入n:" to n
方法二: set talk off clea for I=1 to 9 for j=0 to 9 for k=0 to 9 if I^3+j^3+k^3=100*I+10*j+k ? 100*I+10*j+k endif endfor endfor endfor return
表单设计
“文件”→“新建”→“表单” 单击 打开或关闭 标签 (label) 命令按钮 (command) 右键单击表单中的对象, 选择“属性” 文本框 (text)
x=thisform.text1.value 例:输入一个数,判断奇偶性。 if mod(x,2)=0 &&判断奇偶性的条件 bel2.caption="该数为偶数" else bel2.caption="该数为奇数" endif
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
vfp_循环结构_2010
阶乘问题的求解 但要注意变量的初始化问题 ►但要注意变量的初始化问题
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
10
FOR循环的例 FOR循环的例
为数据表中的“序号(C,4)”字段顺序编号 为数据表中的“
即按照记录的物理顺序对记录的“序号” 即按照记录的物理顺序对记录的“序号”字段填入一 个序号值;并首记录的序号值为“ ” 依此类推, 个序号值;并首记录的序号值为“1”;依此类推,逐 一进行编号 每次填写共分两步完成: 每次填写共分两步完成: 指针定位 替换序号字段 REPLACE 序号 WITH 数值 填写操作从首记录开始,一直到末记录结束; 填写操作从首记录开始,一直到末记录结束;需要进 行的替换操作的次数就是记录的总数
Y
条件? 条件?
N
SACN / ENDSACN语句 语句
循环体
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
4
FOR 循环结构
FOR 循环控制变量=初值 TO 终值 [ STEP 步长 ] 循环控制变量= <语句序列> 语句序列> [ IF <逻辑表达式> 逻辑表达式> 步长是循环控制变量在每一次循环后变化的 LOOP | EXIT 数值 ENDIF] 可为正数;也可为负数 可为正数 也可为负数 ENDFOR 步长> 省略 STEP <步长 时,等价于 STEP 1 步长
数据库及VFP6.0程序设计 循环结构程序 程序设计—循环结构程序 数据库及 程序设计
12
任意输入的10个数值的倒数之和 任意输入的10个数值的倒数之和
CLEAR S=0 FOR N=1 TO 10 INPUT “X= ” TO X S=S+1/X ENDFOR ?“倒数和 S=”,S 倒数和 , RETURN
VFP-For循环语句解读
关闭数据表 结束
【例4】任意输入的10个数值的倒数之和
CLEAR S=0 FOR N=1 TO 10 INPUT “X= ” TO X S=S+1/X ENDFOR
?“倒数和 S=”,S
RETURN
完善程序:增加判断输入值是否为“0”
CLEAR S=0 FOR N=1 TO 10 INPUT “X=” TO X IF X=0
解决问题:
编程计算1到100的累加之和。 CLEAR S=0 && S存放和值 N=1 FOR I=1 TO 100 STEP 1 && I为循环变量 S=S+N && Sn-1+N赋Sn N=N+1 ENDFOR Y ? ”S=”,S RETURN && 输出S的最终值
N
本例执行过程分析
I 1 2 N 1 2 S 0, 0+1 1,1+2
N和I的作用不同,但数
值变化的过程是一样 的,可以“合二为一”
3
4 5
3
4 5
3,3+3
6,6+4 10,10+5
99 100
99 100
…+99 … +100
修改后的程序例
CLEAR S=0 FOR I=1 TO 100 S=S+I ENDFOR ? ”S=”,S RETURN
【例1】给出一个程序,请说出程序的功能。 clear For n=10 to 20 if n%3=0 ?n exit endif endfor
EXIT循环断路命令
循环变量自动增加一个步长
FOR循环命令说明
• 首先将初值赋于循环控制变量 • 如果不超过终值,就执行语句序列
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循环结构来统计数据库中的总结果或者对结果进行分类。
VFP-For循环语句解析
循环结构介绍
在解决实际问题时,有许多操作,特别是对大量数据的处理,往往需 要重复进行。在程序中这种处理要求反复执行某段程序,而且每次使 用的数据都按一定规律变化,这种程序结构称为循环结构。
VFP提供了三种循环结构语句:
条件(当)循环 DO WHILE / ENDDO语句 步长(计数)循环 FOR / ENDFOR循环语句
Hale Waihona Puke N和I的作用不同,但数值变化的过程是一样 的,可以“合二为一”
3
4 5
3
4 5
3,3+3
6,6+4 10,10+5
99 100
99 100
…+99 … +100
修改后的程序例
CLEAR S=0 FOR I=1 TO 100 S=S+I ENDFOR ? ”S=”,S RETURN
【例1】给出一个程序,请说出程序的功能。 clear For n=10 to 20 if n%3=0 ?n exit endif endfor
功能:将10到20中第一个能被3整除的数找出来。
【例2】 求300以内能被17整除的所有整数。 clear for x=1 to 300 if x%17!=0 loop else ?x endif endfor
【例3】
• 为数据表中的“序号(C,4)”字段顺序编号
– 即按照记录的物理顺序对记录的“序号”字段填入一个序号值;
数据表扫描循环 SACN / ENDSACN语句
1、FOR…ENDFOR语句(步长(计数)循环)
该语句通常用于已知循环次数情况下的循环结构。
FOR 循环变量=初值 TO 终值 [ STEP 步长 ] <语句序列> [ IF <逻辑表达式>
