VF程序设计第九章程序设计循环部分.ppt

上传人:牧羊曲112 文档编号:6522917 上传时间:2023-11-08 格式:PPT 页数:49 大小:271KB
返回 下载 相关 举报
VF程序设计第九章程序设计循环部分.ppt_第1页
第1页 / 共49页
VF程序设计第九章程序设计循环部分.ppt_第2页
第2页 / 共49页
VF程序设计第九章程序设计循环部分.ppt_第3页
第3页 / 共49页
VF程序设计第九章程序设计循环部分.ppt_第4页
第4页 / 共49页
VF程序设计第九章程序设计循环部分.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《VF程序设计第九章程序设计循环部分.ppt》由会员分享,可在线阅读,更多相关《VF程序设计第九章程序设计循环部分.ppt(49页珍藏版)》请在三一办公上搜索。

1、开始,VF 语言程序设计,侯真慰,电子与计算机技术学院计算机科学与技术系 基础教研室2010.02,上几次课内容的复习,一、单边分支,命令格式:IF 逻辑表达式 命令语句1 分支体 ENDIF 功 能:若逻辑表达式值为“.T.”,执行命令语句分支体序列;否则,程序继续运行 ENDIF 以后的语句。,条件,分支体,YES,NO,程序流程图,条件,YES,NO,分支体,N-S 流程图,二、双边分支,命令格式:IF 逻辑表达式 命令语句 分支体1 ELSE 命令语句 分支体2 ENDIF 功 能:若逻辑表达式值为“.T.”,执行命令分支体 1 语句序列;否则,执行命令分支体 2 语句序列。然后程序继

2、续运行 ENDIF 以后的语句。,条件,分支体1,YES,NO,程序流程图,分支体2,条件,YES,NO,分支体1,N-S 流程图,分支体2,条件分支函数,命令格式:I I F(逻辑表达式,表达式1,表达式2)功 能:若逻辑表达式值为“.T.”,则返回表达式 1 的值,否则返回表达式 2 的值返 回 值:字符、日期、逻辑值或数值,三、多重分支,命令格式:DO CASE CASE 逻辑表达式1 分支体 1 CASE 逻辑表达式2 分支体 2 CASE 逻辑表达式N 分支体 N OTHERWISE 分支体 N+1 ENDCASE 功能:若逻辑表达式 1 值为“.T.”,执行命令分支体 1 语句序列

3、;逻辑表达式 2 值为“.T.”,执行命令分支体 2 语句序列;若前面的逻辑表达式值均为“.F.”,就执行命令分支体 N+1,然后程序继续运行 ENDCASE 以后的语句。,条件1,分支体1,Y,N,程序流程图,分支体2,条件N,条件2,分支体N,分支体N+1,ENDCASE 后的语句,N,N,Y,Y,条件1,Y,N,分支体 1,N-S 流程图,分支体 2,Y,Y,N,N,分支体N,分支体N+1,条件2,条件N,N,第三节 循环结构程序设计,循环结构是用于描述重复执行的操作。它利用指定条件的当前值来控制程序中某一部分命令序列的重复执行操作,从而达到自动的、按条件确定的重复操作的目的。,循环结构

4、三要素循环控制变量的初值循环的执行条件-(控制变量的终值)使循环趋于结束的语句,FOR 循环 DO WHILE 循环 SCAN 循环,VF 中有三种循环结构语句:,一、FOR 循环(计数型循环),命令格式:FOR循环变量=初值TO终值STEP步长 循环体命令语句 ENDFOR|NEXT,CLEARSET TALK OFF?“程序:计算 1+2+3+4+.+N 的值”INPUT“请输入N的值”TO N BB=0FOR AA=1 TO N BB=BB+AAENDFOR?“1+2+3+4+.+N 的值为”,BB SET TALK ONRETURN,例:计算 1+2+3+4+.+N 的值,结果验证的方

5、法-图表法,总结出的规律:需要重复(循环)的操作:BB=BB+AA AA=AA+1(1 N)三要素:1 循环变量AA 的初值:1 2 循环的执行条件:AA=N 3 使循环趋于结束的语句:AA=AA+1,二、DO WHILE 循环(条件循环),命令格式:DO WHILE 逻辑表达式 循环命令语句组 ENDDO,功 能:系统执行到该语句时,首先判断循环起始语句中 的值是否为真,当其值为真时执行循环体;其值为假时,退出循环而执行循环终端语句的后续语句。,CLEARSET TALK OFF?“计算 1+2+3+4+.+N 的值”INPUT“请输入N的值”TO N BB=0AA=1DO WHILE AA

6、=N BB=BB+AA AA=AA+1ENDDO?“1+2+3+4+.+N的值为”,BB SET TALK ONRETURN,例:计算 1+2+3+4+.+N 的值,总结出的规律:需要重复(循环)的操作:BB=BB+AA AA=AA+1(1 N)三要素:1 循环变量AA 的初值:1 2 循环的执行条件:AA=N 3 使循环趋于结束的语句:AA=AA+1,CLEAR SET TALK OFF USE 学生 DO WHILE.NOT.EOF()IF 性别=”男”DISPLAY ENDIF SKIP ENDDO USE SET TALK ON RETURN,例 循环在数据表中的应用:逐条显示在 学生

7、表 中性别为“男”的学生的所有记录内容。,分析:逐条操作的命令 循环结构(没到库尾就一直工作)显示一条记录内容的命令 DISPLAY性别为“男”的条件 性别=”男”,总结出的规律:需要重复(循环)的操作:判断 性别=”男”DISPLAY SKIP三要素:1 循环变量的初值:.T.2 循环的执行条件:.NOT.EOF()=.T.3 使循环趋于结束的语句:SKIP,h:vf07课件vf课件旧亲朋好友录入模块.prg*程序名称:亲朋好友录入模块.PRG*功 能:录入模块*,DO WHILE 循环在数据表录入中的应用,USE h:vf07课件vf课件旧亲朋好友录1.dbf录入否=YDO WHILE 录

8、入否=Y APPEND BLANK 6,16 SAY“亲友情况录入栏”10,10 SAY“请输入亲友的姓名”GET 姓名 12,10 SAY“请输入亲友的年龄”GET 年龄 14,10 SAY“请输入亲友的生日”GET 生日 16,10 SAY“请输入亲友是否党员”GET 党员否 18,10 SAY“请输入亲友的身高”GET 身高 28,20 SAY 是否录入新数据(Y/N)?GET 录入否 READENDDO,USE h:vf07课件vf课件旧亲朋好友录1.dbf APPEND BLANK 6,16 SAY“亲友情况录入栏”10,10 SAY“请输入亲友的姓名”GET 姓名 12,10 SA

9、Y“请输入亲友的年龄”GET 年龄 14,10 SAY“请输入亲友的生日”GET 生日 16,10 SAY“请输入亲友是否党员”GET 党员否 18,10 SAY“请输入亲友的身高”GET 身高 READ,循环变量未超越终值,命令组,ENDFOR,ENDFOR 后的命令,N,Y,循环变量+步长 循环变量,逻辑表达式,ENDDO,ENDDO 后的命令,N,Y,命令组,两种循环的工作比较,DO WHILE 循环,FOR 循环,LOOP EXIT 语句功能示意,LOOP语句:强行终止循环,返回到循环开始语句。无条件循环命令,LOOP EXIT 语句功能示意,EXIT 语句:强行停止循环,跳出到循环后

10、的语句。无条件结束循环命令,例 编程显示 学生 表中除“李宁”以外的所有记录。,总结出的规律:需要重复(循环)的操作:判断 姓名=”李宁”则 SKIP 和 LOOP DISPLAY SKIP三要素:1 循环变量的初值:.T.2 循环的执行条件:.NOT.EOF()=.T.3 使循环趋于结束的语句:SKIP,分析:逐条操作的命令 循环结构(没到库尾就一直工作)显示一条记录内容的命令 DISPLAY除“李宁”以外的条件的反条件 姓名=“李宁”,CLEAR SET TALK OFF USE 学生 DO WHILE.NOT.EOF()IF 姓名=”李宁”SKIP LOOPENDIFDISPLAY,SK

11、IPENDDOUSESET TALK ONRETURN,书中P144 例9.5 用了一个永真循环,注意循环跳出的方法。永真循环跳出的唯一方法:EXITEXIT 必须存在于循环结构中的条件结构中,三、SCAN 循环(指针型循环),SCAN 循环是专为操作数据表记录而设计的循环。命令格式:SCAN FOR 循环体命令行序列 ENDSCAN功 能:该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数 EOF()的值,若其值为“真”,则结束循环;否则,结合(条件表达式1)或(条件表达式2),执行(循环体命令行序列),记录指针移到指定的范围和条件内的下一条记录,重新判断函数 EO

12、F()的值,直到函数 EOF()的值为真时结束循环。,CLEARSET TALK OFFUSE 学生SCAN FOR 性别=“男”DISPLAYENDSCANUSESET TALK ONRETURN,例 用 SCAN 语句逐条显示在 学生表 中性别为“男”的学生的所有记录内容。,P 147 例 9.8,总结出的规律:需要重复(循环)的操作:判断 性别=”男”DISPLAY三要素:1 循环变量的初值:指针指向库头 2 循环的执行条件:性别=”男”且未到库尾 3 使循环趋于结束的语句:隐含的SKIP,分析:逐条操作的命令 循环结构 SCAN ALL显示一条记录内容的命令 DISPLAY性别为“男”

13、的条件 FOR 性别=”男”,CLEARSET TALK OFF预查姓名=5,5 SAY 请输入要查找的亲朋姓名 GET 预查姓名READUSE i:foxpro亲朋好友录.dbfSCAN ALL FOR 姓名=预查姓名 DISPLAYENDSCANUSESET TALK ONRETURN,程序:按条件查找记录.PRG,三种循环的功能比较,DO WHILEFORSCAN,循环的嵌套问题,多重循环即循环的嵌套,是在一个循环结构的循环体中又包含另一个循环。我们称外层循环为外循环,被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包含在外循环的循环体中,不能相互交叉。正确的嵌套关系

14、如下:,DO WHILE DO WHILE DO WHILE ENDDO ENDDO ENDDO,*程序名称:九九表.PRG*功 能:展示利用FOR 语句循环输出九九表*,1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*

15、8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81,clearset talk offFOR 被乘数=1 TO 9 列数=(被乘数-1)*9 FOR 乘数=1 TO 被乘数行数=乘数 行数,列数 SAY STR(被乘数,1)+X+STR(乘数,1)+=+LTRIM(STR(被乘数*乘数)ENDFORENDFORset talk onreturn,for(被乘数=1 TO 9),for(乘数=1 TO 被乘数),输出 被乘数*乘数=x,第五节 子程序、过程和函数,结构化程序设计方法要求将一

16、个大的系统分解成若干个子系统,每个子系统就构成一个程序模块。模块是一个相对独立的程序段,它可以为其他模块所调用,也可以去调用其他模块。将一个应用程序划分成一个个功能相对简单、单一的模块程序,不仅有利于程序的开发,也有利于程序的阅读和维护。VFP模块化在具体实现上提供三种形式,它们是子程序、过程和函数。,主程序与子程序调用关系示意图,一、子程序,子程序也叫外部过程,是以程序文件(.PRG)的形式单独存储在磁盘上的。子程序只需录入一次,就可反复被调用执行。1子程序的结构在VFP中,子程序的结构与一般的程序文件一样,可以用 MODIFY COMMAND命令来建立、修改、和存盘,扩展名也默认为.PRG

17、。,【命令格式】RETURN TO MASTER|TO 程序文件名|表达式【命令功能】该命令中止一个程序、过程、或用户自定义函数的执行,返回上一级调用程序、最高级调用程序、另外一个程序或命令窗口。,【语句说明】(1)通常程序执行到 RETURN时,会自动返回到上级调用程序调用语句的下一条语句继续执行。如果是在最高一级主程序中,则返回命令窗口。(2)选用TO MASTER 子句时,则返回最高一级调用程序,即在命令窗口下,调用的第一个主程序。(3)TO 程序文件名表示程序将转向到指定的程序。(4)如选用表达式,表示将表达式的值返回调用程序,通常用于自定义函数。(5)在程序最后,如果没有 RETUR

18、N命令,则程序运行完毕后,将自动默认执行一个RETURN命令,但过程文件除外。,2子程序的调用:【命令格式】DO|WITH 参数表【命令功能】执行以或为名的过程。【命令说明】WITH参数表子句用来指定传递到程序或过程的参数,在参数表中列出的参数可以是表达式、内存变量、常量、字段名或用户自定义函数,各参数间用逗号分隔。,【例】*MAIN.PRG*SET TALK OFF?”正在执行主程序”DO SUB1SET TALK ON*SUB1.PRG*?”正在执行SUB1”RETURN,【例】利用子程序方法求M!/(N!*(M-N)!)(MN)*main.prg*子程序sub1.prg*INPUT 请输

19、入M:TO m s=1INPUT 请输入N:TO n FOR i=1 TO xs=0 s=s*i x=m ENDFORDO sub1 RETURN ss2=sx=nDO sub1s3=sx=m-nDO sub1s4=ss1=s2/(s3*s4)?s1,过程和函数也都是功能上相对完整和独立的程序单元,并没有本质上的不同,一般的划分方法:有返回值的称为函数,没有返回值的称为过程。引入过程和函数的目的有三点:1、模块化程序设计 模块是一个功能相对较为完整和独立的小的程序单元,可以单独的设计、调试和管理。2、复用性 可被多次重复调用3、可读性,二、过程和函数,1、自定义函数,系统函数本身就是将一些经典

20、的通用算法编写成一个个程序提供给用户使用的小程序。而用户自定义函数是根据用户需要编写的函数。命令格式:FUNCTION 函数名称 PARAMETERS 参数名称 命令语句组 RETURN 参数名称,【例】计算圆面积*PROG24.PRG*SET TALK OFFCLEARINPUT”请输入圆的半径:”TO R?”圆的面积为:”,AREA(R)SET TALK ONFUNCTION AREA&计算面积的函数PARAMETER X&形参说明RETURN(3.1416*X*2),2、过程设计,过程是子程序的另一种形式。命令格式:PROCEDURE 过程名称 PARAMETER 参数名称 命令语句组

21、RETURN,【例】建立如下程序文件,过程放在程序文件中。*MAIN.PRG*SET TALK OFF?”正在执行主程序”DO SUB1SET TALK ONProcedure SUB1?”正在执行SUB1”RETURN,程序设计综合【例】百钱买百鸡问题 公鸡 3文/只 母鸡 4文/只 小鸡 1文/3只 问:能买到公鸡 母鸡 小鸡 各几只?,1、程序的建立、修改与运行2、分支结构程序设计3、循环结构程序设计4、子程序、过程、自定义函数及其调用,VF 程序设计基础教学要点,基本要求,1、学会建立与运行程序文件,熟练掌握FoxPro文本编辑器的使用。2、掌握选择分支结构程序设计方法,熟练使用关系表达式和逻辑表达式描述条件,掌握if语句和do case语句的使用方法。3、掌握循环结构程序设计方法,使用do while语句实现累加、累乘、穷举、递推等算法及 scan语句对数据库的操作。4、掌握过程与自定义函数的概念。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号