…
CASE <条件n> <语句序列n> [OTHERWISE <语句序列n+1>]
ENDCASE
从DO CASE入口顺序判断各个CASE子句的条件,执行最先满足条件的CASE语句序列。执行完成后,无论后面的条件是否为真,都直接跳出ENDCASE语句序列,直接执行ENDCASE后面的语句。如果任何条件都不满足,则执行OTHERWISE下的语句序列,然后执行ENDCASE后面的语句,如果没有OTHERWISE子句,则直接跳出本结构。
例:上题利用DO CASE 来实现。
例:以下程序段执行的结果是
X=85 DO CASE CASE X>60 ?”及格” CASE X>80 ?”良好” OTHERWISE ?”不及格”
ENDCASE
三、 循环结构
? 概念:循环结构也称重复结构,是指程序在执行的过程中,其中的某段代码被重复执行若干次。被重复执行的代码段,通常称为循环体。Visual FoxPro支持循环结构的语句包括:DO WHILE—ENDDO、FOR—ENDFOR和SCAN—ENDSCAN (一)DO WHILE—ENDDO 语句格式:
DO WHILE<条件>
<语句序列1> [LOOP] <语句序列2> [EXIT]
<语句序列3>
ENDDO
说明:程序的走向(???)
先判断DO WHILE处的循环条件是否成立,如果条件为真,则执行循环体,当执行到ENDDO时,返回到DO WHILE,再次判断循环条件是否为真,若为真再次执行循环体.若条件为假,则结束该循环语句,执行ENDDO后面的语句.
循环变量(体外赋初始值,体内修改)
条循环ENDDO后面的语句例:编写程序:输出1+2+3+……100的结果
提示:引进内存变量S和i。S用来保存累加的结果,初值为0;i作为控制循环条件是否成立的变量,初值为1;重复执行命令S=S+i和i=i+1 拓展:
求s=1*2*3*4……100 求S=1+3+5+7+……101
例:编写程序TEST3:逐条显示SC表中成绩高于75分的所有记录 预备知识: EOF()函数,LOCATE 的使用。 CLEAR USE SC
DO WHILE NOT EOF() if 成绩>75 DISPLAY
WAIT \按任意键继续!\ endif SKIP ENDDO
特例:循环控制子句:LOOP,EXIT
在循环体中遇到LOOP时终止本次循环,直接转回到DO WHILE处重新判断循环条件。
在循环体中遇到EXIT时直接退出循环而去执行ENDDO后面的语句。
例:在STUDENT表中可以反复查询不同院系的学生的信息。 use student do while .t.
accept \请输入待查询的院系号:\locate for 院系号=x if found()
select * from student where 院系号=x else
?\对不起,找不到你要查询的院系号!\endif
wait \还查询其他的院系吗?\if upper(y)=\ loop else exit endif enddo close all
例:在 DO WHILE…ENDDO循环结构中,LOOP命令的作用是()
A)退出过程,返回程序开始处
B)转移到 DO WHILE语句行,开始下一个判断和循环 C)终止循环,将控制转移到本循环结构ENDDO后面的第一条语句继续执行
D)终止程序执行
例:在DO WHILE……ENDDO循环结构中,EXIT命令的作用是()
A) 退出过程,返回程序开始处
B) 转移到DO WHILE语句行,开始下一个判断和循环 C) 终止循环,将控制转移到本循环结构ENDDO后面的第一条语句继续执行
D)终止程序执行
(二)FOR—ENDDO步长循环 格式:
FOR <内存变量> = <初值> TO <终值> [STEP <步长值>]
<语句序列> //循环体
ENDFOR 注解:
1、 <内存变量>称为循环变量,<初值>、<终值>和<步长值>
都是数值型表达式;
2、 如果没有STEP子句,则步长为1;