




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
开始,VF 语言程序设计,侯真慰,电子与计算机技术学院 计算机科学与技术系 基础教研室 2010.02,上几次课内容的 复习,一、单边分支,命令格式: IF 逻辑表达式 命令语句1 分支体 ENDIF 功 能:若逻辑表达式值为“.T.”,执行命令语句分支体序列;否则,程序继续运行 ENDIF 以后的语句。,条件,分支体,YES,NO,程序流程图,条件,YES,NO,分支体,N-S 流程图,二、双边分支,命令格式: IF 逻辑表达式 命令语句 分支体1 ELSE 命令语句 分支体2 ENDIF 功 能:若逻辑表达式值为“.T.”,执行命令分支体 1 语句序列;否则,执行命令分支体 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 语句序列;逻辑表达式 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,第三节 循环结构程序设计,循环结构是用于描述重复执行的操作。它利用指定条件的当前值来控制程序中某一部分命令序列的重复执行操作, 从而达到自动的、按条件确定的重复操作的目的。,循环结构三要素 循环控制变量的初值 循环的执行条件-(控制变量的终值) 使循环趋于结束的语句,FOR 循环 DO WHILE 循环 SCAN 循环,VF 中有三种循环结构语句:,一、FOR 循环(计数型循环),命令格式: FOR循环变量=初值TO终值STEP步长 循环体命令语句 ENDFOR | NEXT,CLEAR SET TALK OFF ? “程序: 计算 1+2+3+4+.+N 的值” INPUT “请输入N的值” TO N BB = 0 FOR AA = 1 TO N BB=BB+AA ENDFOR ? “1+2+3+4+.+N 的值为” , BB SET TALK ON RETURN,例:计算 1+2+3+4+.+N 的值,结果验证的方法- 图表法,总结出的规律: 需要重复(循环)的操作: BB = BB + AA AA = AA + 1 ( 1 N) 三要素: 1 循环变量AA 的初值: 1 2 循环的执行条件 :AA=N 3 使循环趋于结束的语句: AA = AA + 1,二、DO WHILE 循环 (条件循环),命令格式: DO WHILE 逻辑表达式 循环命令语句组 ENDDO,功 能: 系统执行到该语句时,首先判断循环起始语句中 的值是否为真,当其值为真时执行循环体;其值为假时,退出循环而执行循环终端语句的后续语句。,CLEAR SET TALK OFF ? “计算 1+2+3+4+.+N 的值” INPUT “请输入N的值” TO N BB = 0 AA = 1 DO WHILE AA= N BB=BB+AA AA=AA+1 ENDDO ? “1+2+3+4+.+N的值为”,BB SET TALK ON RETURN,例:计算 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,例 循环在数据表中的应用: 逐条显示在 学生表 中性别为“男”的学生的所有记录内容。,分析: 逐条操作的命令 循环结构 (没到库尾就一直工作) 显示一条记录内容的命令 DISPLAY 性别为 “男” 的条件 性别 = ”男”,总结出的规律: 需要重复(循环)的操作: 判断 性别 = ”男” DISPLAY SKIP 三要素: 1 循环变量的初值: .T. 2 循环的执行条件 : .NOT. EOF()= .T. 3 使循环趋于结束的语句: SKIP,h:vf07课件vf课件旧亲朋好友录入模块.prg * * 程序名称:亲朋好友录入模块.PRG * 功 能: 录入模块 *,DO WHILE 循环在数据表录入中的应用,USE h:vf07课件vf课件旧亲朋好友录1.dbf 录入否=“Y“ DO WHILE 录入否 = “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 录入否 READ ENDDO,USE h:vf07课件vf课件旧亲朋好友录1.dbf 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 身高 READ,循环变量 未超越终值,命令组,ENDFOR,ENDFOR 后的命令,N,Y,循环变量 + 步长 循环变量,逻辑表达式,ENDDO,ENDDO 后的命令,N,Y,命令组,两种循环的工作比较,DO WHILE 循环,FOR 循环,LOOP EXIT 语句功能示意,LOOP语句:强行终止循环,返回到循环开始语句。 无条件循环命令,LOOP EXIT 语句功能示意,EXIT 语句:强行停止循环,跳出到循环后的语句。 无条件结束循环命令,例 编程显示 学生 表中除“李宁”以外的所有记录。,总结出的规律: 需要重复(循环)的操作: 判断 姓名=”李宁” 则 SKIP 和 LOOP DISPLAY SKIP 三要素: 1 循环变量的初值: .T. 2 循环的执行条件 : .NOT. EOF()= .T. 3 使循环趋于结束的语句: SKIP,分析: 逐条操作的命令 循环结构 (没到库尾就一直工作) 显示一条记录内容的命令 DISPLAY 除“李宁”以外的条件的反条件 姓名= “李宁”,CLEAR SET TALK OFF USE 学生 DO WHILE .NOT. EOF() IF 姓名=”李宁” SKIP LOOP ENDIF DISPLAY,SKIP ENDDO USE SET TALK ON RETURN,书中P144 例9.5 用了一个永真循环,注意循环跳出的方法。 永真循环跳出的唯一方法: EXIT EXIT 必须存在于循环结构中的条件结构中,三、SCAN 循环 (指针型循环),SCAN 循环是专为操作数据表记录而设计的循环。 命令格式: SCAN FOR 循环体命令行序列 ENDSCAN 功 能: 该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数 EOF()的值,若其值为“真”,则结束循环;否则,结合(条件表达式1)或(条件表达式2),执行(循环体命令行序列),记录指针移到指定的范围和条件内的下一条记录,重新判断函数 EOF( ) 的值,直到函数 EOF( )的值为真时结束循环。,CLEAR SET TALK OFF USE 学生 SCAN FOR 性别 = “男” DISPLAY ENDSCAN USE SET TALK ON RETURN,例 用 SCAN 语句逐条显示在 学生表 中性别为“男”的学生的所有记录内容。,P 147 例 9.8,总结出的规律: 需要重复(循环)的操作: 判断 性别 = ”男” DISPLAY 三要素: 1 循环变量的初值: 指针指向库头 2 循环的执行条件 :性别 = ”男” 且未到库尾 3 使循环趋于结束的语句: 隐含的SKIP,分析: 逐条操作的命令 循环结构 SCAN ALL 显示一条记录内容的命令 DISPLAY 性别为 “男” 的条件 FOR 性别 = ”男”,CLEAR SET TALK OFF 预查姓名=“ “ 5,5 SAY “请输入要查找的亲朋姓名“ GET 预查姓名 READ USE i:foxpro亲朋好友录.dbf SCAN ALL FOR 姓名 = 预查姓名 DISPLAY ENDSCAN USE SET TALK ON RETURN,程序: 按条件查找记录.PRG,三种循环的功能比较,DO WHILE FOR SCAN,循环的嵌套问题,多重循环即循环的嵌套,是在一个循环结构的循环体中又包含另一个循环。我们称外层循环为外循环,被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包含在外循环的循环体中,不能相互交叉。 正确的嵌套关系如下:,DO WHILE DO WHILE DO WHILE ENDDO ENDDO ENDDO,* * 程序名称: 九九表.PRG * 功 能: 展示利用FOR 语句循环输出九九表 *,1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*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,clear set talk off FOR 被乘数 = 1 TO 9 列数 = (被乘数-1) * 9 FOR 乘数 = 1 TO 被乘数 行数 = 乘数 行数,列数 SAY STR(被乘数,1) + “X“ + STR(乘数,1) + “=“ + LTRIM(STR(被乘数*乘数) ENDFOR ENDFOR set talk on return,for(被乘数 = 1 TO 9),for(乘数=1 TO 被乘数 ),输出 被乘数 * 乘数 = x,第五节 子程序、过程和函数,结构化程序设计方法要求将一个大的系统分解成若干个子系统,每个子系统就构成一个程序模块。模块是一个相对独立的程序段,它可以为其他模块所调用,也可以去调用其他模块。将一个应用程序划分成一个个功能相对简单、单一的模块程序,不仅有利于程序的开发,也有利于程序的阅读和维护。VFP模块化在具体实现上提供三种形式,它们是子程序、过程和函数。,主程序与子程序调用关系示意图,一、子程序,子程序也叫外部过程,是以程序文件(.PRG)的形式单独存储在磁盘上的。子程序只需录入一次,就可反复被调用执行 。 1子程序的结构 在VFP中,子程序的结构与一般的程序文件一样,可以用 MODIFY COMMAND命令来建立、修改、和存盘,扩展名也默认为.PRG。,【命令格式】 RETURN TO MASTER|TO 程序文件名|表达式 【命令功能】该命令中止一个程序、过程、或用户自定义函数的执行,返回上一级调用程序、最高级调用程序、另外一个程序或命令窗口。,【语句说明】 (1)通常程序执行到 RETURN时,会自动返回到上级调用程序调用语句的下一条语句继续执行。如果是在最高一级主程序中,则返回命令窗口。 (2)选用TO MASTER 子句时,则返回最高一级调用程序,即在命令窗口下,调用的第一个主程序。 (3)TO 程序文件名表示程序将转向到指定的程序。 (4)如选用表达式,表示将表达式的值返回调用程序,通常用于自定义函数。 (5) 在程序最后,如果没有 RETURN命令,则程序运行完毕后,将自动默认执行一个RETURN命令,但过程文件除外。,2子程序的调用: 【命令格式】 DO |WITH 参数表 【命令功能】执行以或为名的过程。 【命令说明】 WITH参数表子句用来指定传递到程序或过程的参数,在参数表中列出的参数可以是表达式、内存变量、常量、字段名或用户自定义函数,各参数间用逗号分隔。,【例】 * MAIN.PRG * SET TALK OFF ? ”正在执行主程序” DO SUB1 SET TALK ON * SUB1.PRG * ? ”正在执行SUB1” RETURN,【例】利用子程序方法求M!/(N!*(M-N)!)(MN) * main.prg * * 子程序sub1.prg* INPUT “请输入M:“ TO m s=1 INPUT “请输入N:“ TO n FOR i=1 TO x s=0 s=s*i x=m ENDFOR DO sub1 RETURN s s2=s x=n DO sub1 s3=s x=m-n DO sub1 s4=s s1=s2/(s3*s4) ? s1,过程和函数也都是功能上相对完整和独立的程序单元,并没有本质上的不同,一般的划分方法:有返回值的称为函数,没有返回值的称为过程。 引入过程和函数的目的有三点: 1、模块化程序设计 模块是一个功能相对较为完整和独立的小的程序单元,可以单独的设计、调试和管理。 2、复用性 可被多次重复调用 3、可读性,二、过程和函数,1、自定义函数,系统函数本身就是将一些经典的通用算法编写成一个个程序提供给用户使用的小程序。 而用户自定义函数是根据用户需要编写的函数。 命令格式: FUNCTION 函数名称 PARAME
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管理咨询服务合同(2025年版)
- 实心板桥施工方案
- 针灸学课程实验教学大纲
- 窗口侧壁施工方案
- 汽车美容行业品牌建设策略试题及答案
- 汽车维修行业人才培养策略试题及答案
- 教学工作督导机制计划
- 班级团体竞赛的组织与管理计划
- 药理学考试2024年快速提升试题及答案
- 年度预算的执行与回顾计划
- 6古对今 公开课一等奖创新教学设计
- 2024-2030年墨西哥企业A2P短信市场前景分析
- 中国痔病诊疗指南(2020版)
- 2024江苏省常熟市总工会招聘合同制人员7人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 教学课件:苯甲酸重结晶
- (2024年)医疗法律法规知识培训课件
- 磁盘采购合同
- 对公账户注销委托书
- 两位数乘两位数进位竖式计算题
- 2023年中国工商银行天津市分行校园招聘考试真题及答案
- 邮政金融工作述职报告
评论
0/150
提交评论