160 likes | 263 Views
复习旧课. 导入新课. 条件 1. N. 条件 2. N. 条件 n. N. …. Y. Y. Y. 语句 1. 语句 2. 语句 n. 语句 n+1. ENDCASE 后面的语句. 单元 13 循环结构. 一、单条件选择语句 IF < 条件 > [ 语句序列 1] [ELSE [ 语句序列 2]] ENDIF. 分支结构→循环结构:从概念、语法和功能上导入。.
E N D
复习旧课 导入新课 条件1 N 条件2 N 条件n N … Y Y Y 语句1 语句2 语句n 语句n+1 ENDCASE后面的语句 单元13 循环结构 一、单条件选择语句IF <条件> [语句序列1][ELSE [语句序列2]]ENDIF 分支结构→循环结构:从概念、语法和功能上导入。 二、多条件选择语句DO CASE CASE <条件1> [语句序列1] CASE <条件2> [语句序列2]......CASE <条件n> [语句序列n] [OTHERWISE [语句序列n+1]]ENDCASE
单元13 循环结构 【主要内容】 1.当型循环DO WHILE 2.步长型循环FOR 3.表扫描型循环SCAN 【学习目标】 1.掌握当型循环的语法格式、功能和应用2.掌握步长型循环的语法格式、功能和应用3.掌握表扫描型循环的语法格式、功能和应用 4.深入理解和掌握循环体语句LOOP和EXIT 【课时安排】 共4课时
条件 N Y 语句序列 ENDDO后面的语句 单元13 循环结构 问题:求:s=1+2+3+4+5+……+100 分析:s=0 &&初始值,作为累加器 i=1 &&初始值,作为计数器 s=s+i &&相当于s=0+1 i=i+1 &&相当于i=2 s=s+i &&相当于s=0+1+2 i=i+1 &&相当于i=3 s=s+i &&相当于s=0+1+2+3 i=i+1 &&相当于i=4 s=s+i &&相当于s=0+1+2+3+4 i=i+1 &&相当于i=5 s=s+i &&相当于s=0+1+2+3+4+5 i=i+1 &&相当于i=6 ………………………… 一、当型循环1、格式:DO WHILE <条件>[命令序列][EXIT][LOOP] ENDDO功能: s=0 &&初始值,作为累加器 i=1 &&初始值,作为计数器 Do while i<=100 s=s+i i=i+1 Enddo ? s
单元13 循环结构 2、当型循环说明:格式:DO WHILE <条件>[命令序列][EXIT][LOOP] ENDDO 满足条件则进入循环体,不满足条件则退出循环。 称为循环体,即要重复进行的操作 其作用就是转向到期DO WHILE语句 3、两个小语句说明(这两个语句也适合其他类型的循环): loop——提前结束本次循环 Do while …… loop …… enddo EXIT——提前结束整个循环 Do while …… Exit …… enddo 例:求出1~1000之间的不能被3或7整除的数之和,从1开始,直到和数大于678为止。
单元13 循环结构 4、应用举例之一——有限次数循环的控制: 循环变量初值DO WHILE 循环变量终值[命令序列]循环变量步长值ENDDO 用具体数值控制循环次数。 例:s=1*2*3*……10 (即10!)例:连续打印8个“*”例:打印下图形* *** ****** ********* ************ *********例:打印九九乘法表
单元13 循环结构 4、应用举例之二——逐个处理表记录循环的控制: 打开表DO WHILE not bof()[命令序列] skip -1 ENDDO 打开表DO WHILE not eof()[命令序列] skipENDDO 用文件首、文件尾函数控制是否结束。 例:逐个显示表gzj中的记录,若为男则显示其姓名,性别,出生年月,若为女,则显示其姓名,性别,职称。 4、应用举例之三——逐个处理表中符合条件的记录循环的控制: 打开表locate for 条件DO WHILE not eof() 或 found()[命令序列] continueENDDO 用found()、文件尾函数控制是否结束。 例:逐个显示表gzj中基本工资在400元以上的记录,若为男则显示其姓名,性别,出生年月,若为女,则显示其姓名,性别,职称。
单元13 循环结构 4、应用举例之四——不定次数循环的控制: DO WHILE .T.……exit……ENDDO 表面看来是死循环,在循环体内用exit控制。 例:在gzj中查询某人。要求能多次查询
条件 N Y 语句序列 ENDDO后面的语句 单元13 循环结构 本次课小结 本次课小结 循环格式:DO WHILE <条件>[命令序列][EXIT][LOOP]ENDDO两个小语句:提前结束整个循环;提前结束本次循环。四种运用:有限次数循环逐个处理表记录循环逐个处理表中符合条件的记录循环不定次数的循环 循环格式:DO WHILE <条件>[命令序列][EXIT][LOOP]ENDDO两个小语句:提前结束整个循环;提前结束本次循环。四种运用:有限次数循环逐个处理表记录循环逐个处理表中符合条件的记录循环不定次数的循环 本次课作业1.阅读教材,并认真体会2.教材P201上机题(第1题)
单元13 循环结构 上次课复习 循环变量初值DO WHILE 循环变量终值[命令序列]循环变量步长值ENDDO 打开表DO WHILE not eof()[命令序列] skipENDDO 循环格式:DO WHILE <条件>[命令序列][EXIT][LOOP]ENDDO两个小语句:提前结束整个循环——exit;提前结束本次循环——loop。四种运用:有限次数循环逐个处理表记录循环逐个处理表中符合条件的记录循环不定次数的循环 打开表locate for 条件DO WHILE not eof() 或 found()[命令序列] continueENDDO DO WHILE .T.……exit……ENDDO
变量=初值 N 变量≦终值 Y 语句序列 ENDFOR后面的语句 单元13 循环结构 一、步长型循环1、格式:FOR <内存变量>=<初值> TO <终值> [STEP <步长值>][命令序列][EXIT][LOOP]ENDFOR 例:s=1+2+3+……100s=1!+2!+3!+……10!输入一个正整数,判断它是否为素数。
单元13 循环结构 二、表扫描型循环1、格式:SCAN [范围] [FOR 条件]语句序列[EXIT][LOOP]ENDSCAN功能:在当前表中给定范围内对符合条件的记录逐个执行语句序列,如果所有给定范围内符合条件的记录处理完毕,就去执行ENDSCAN后面的语句。例:编程在主窗口中逐个显示XSDA.DBF中前5条记录男性的记录,编程如下。
单元13 循环结构 三、习题评讲一、单项选择题1. 不能出现LOOP和EXIT语句的程序结构是( )A) IF……ENDIF B) SCAN……ENDSCAN C) DO……ENDDO D) FOR……ENDFOR2. 有关嵌套的叙述中正确的是( )A) 循环体内不能含有条件语句 B) 循环语句不能嵌套在条件语句之中C) 嵌套只能一层,否则会导致程序错误 D) 正确的嵌套中不能交叉3. 有如下Visual FoxPro程序SET TALK OFFM=0N=100DO WHILE N>MM=M+NN=N-10ENDDO?M,NRETURN运行此程序后的显示结果是( )A) 0 10 B) 10 90 C) 90 100 D) 100 90
单元13 循环结构 4. 阅读以下程序,正确的运行结果是( )USE STUDENTDO WHILE .NOT.EOF()LOCATE FOR 性别="男"DISPLAYCONTINUEENDDOA) 程序出错 B) STUDENT.DBF表中所有性别为“男”的记录C) STUDENT.DBF表中所有的记录D) 程序出现死循环,屏幕上一直显示STUDENT.DBF表的第一条性别为“男”的记录5. 在“DO WHILE <条件> <语句组> ENDDO”中,若条件设置为.T.,则下列说法中正确的是( ) A) 程序一定会出现死循环 B) 程序不会出现死循环 C) 在语句组中设置EXIT可防止死循环 D) 在语句组中设置LOOP可防止死循环6. Visual FoxPro循环结构程序设计中,要指定范围内扫描库文件、查找符合条件的记录并执行循环体中的操作命令,应该使用的循环语句是( ) A) WHILE B) FOR C) SCAN D) FOR EACH
单元13 循环结构 1. 阅读下列程序,运行结果为( )。 SET TALK OFF CLEAR STORE O TO X,Y,S1,S2,S3 DO WHILE X<10 X=X+1 DO CASE CASE INT(X/2)=X/2 S1=S1+X/2 CASE MOD(X,3)=0 S2=S2+X/3 CASE INT (X/2)<>X/2 S3=S3+1 ENDCASE ENDDO ?S1,S2,S3 SET TALK ON RETURN
单元13 循环结构 阅读下列判断一个自然数是否质数的程序,并将程序填写完整。 SET TALK OFF INPUT "请输入一个大于1的自然数: " TO N K=0 &&K的值为0表示所输入的自然数是质数,为1则不是质数 J=2 DO WHILE J<N IF MOD(N,J) ____ ____ LOOP ELSE K=1 EXIT ENDIF ENDDO IF K=0 ? ____+"是质数" ENDIF ? "再见!! " SET TALK ON RETURN
单元13 循环结构 本次课小结 本次课小结 1、步长型循环FOR <内存变量>=<初值> TO <终值> [STEP <步长值>][命令序列][EXIT][LOOP]ENDFOR 2、表扫描型循环SCAN [范围] [FOR 条件]语句序列[EXIT][LOOP]ENDSCAN 本次课作业1.阅读教材,并认真体会2.教材P201上机题(第2题)