




已阅读5页,还剩137页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 VisualFoxPro程序设计教程杭州商学院计算机教研室2020年4月19日 数据库应用 2 第3章程序设计基础 3 1VisualFoxPro应用程序设计概述3 2程序文件设计3 3可视化界面与事件过程设计 3 3 1VisualFoxPro应用程序设计概述 3 1 1VFP程序设计过程VFP应用程序包括 一个或多个数据库设置应用程序系统环境的主程序用户界面查询和报表等 全过程包括 规划应用程序 创建数据库 设计用户操作界面和设计访问信息的方法 测试和调试 而且各阶段要有一个反复 完善的过程 P 103图3 1 4 3 1VisualFoxPro应用程序设计概述 3 1 2VFP程序设计方法VFP将过程化程序设计与面向对象程序设计结合在一起 为用户创建功能强大灵活多变的应用程序提供了方便 实用的程序设计后台支持 面向过程程序设计方法面向对象程序设计方法 5 3 1VisualFoxPro应用程序设计概述 3 1 2VFP程序设计方法1 面向过程程序设计方法面向过程程序设计方法 是将应用程序目标系统的整体功能进行分解 自顶向下不断的把复杂的处理分解为子处理 这样一层一层地分解下去 直到仅剩若干个容易处理的子处理为止 这种结构分析和结构设计是围绕实现 过程 来构造系统的 2 面向对象程序设计方法面向对象的程序设计方法有些象使用集成电路 IC 构造计算机硬件一样 各个部件都是相对封闭独立的 部件之间的连接与通信通过对外接口实现 所以可以将面向对象的程序设计方法视为 软件IC 它的软件部件的内部结构紧密 有自己的私有数据和操作方法 而与外界的沟通是通过传递信息来完成的 6 3 1VisualFoxPro应用程序设计概述 3 1 3VFP程序编程机制VFP程序由代码组成 代码包括以命令形式出现的指令 函数或VFP可以理解的任何操作符号行 这些代码可以出现在 命令 窗口中 程序文件中 表单设计器 或 类设计器 的事件或方法程序代码窗口中 菜单设计器 报表设计器 的过程代码窗口中 1 使用 命令 窗口在 命令 窗口中键入VFP命令并按Enter键执行 输入结果显示在VFP的大屏幕上 重新执行该命令 将光标移到此行并按Enter键 选中多行 一次性批量执行多行代码 7 3 1VisualFoxPro应用程序设计概述 3 1 3VFP程序编程机制2 程序文件 程序 是为了完成某项指定的任务而需执行的命令序列 程序文件 命令序列以一定的结构有序地编排在一起 并以文件的形式存储在磁盘上 这种文件称为命令文件或程序文件 PRG FXP 程序可以被修改并重新运行 可以从菜单 表单和工具栏上启动程序 一个程序可以调用其他程序或被其他程序调用 执行命令效率高 而且可以重复调用 8 3 1VisualFoxPro应用程序设计概述 3 1 3VFP程序编程机制2 程序文件 9 3 1VisualFoxPro应用程序设计概述 3 1 3VFP程序编程机制3 事件驱动的可视化界面的事件过程代码 10 3 2程序文件设计 3 2 1程序设计基本特点程序的质量标准是 清晰第一 效率第二 程序书写规范 风格统一 结构化程序设计的基本结构规定为 顺序结构 选择结构 循环结构 一个大的程序开发应当采用 自顶向下 逐步细化和模块化 的方法 程序模块应该只有一个入口 一个出口 无死语句 死循环 11 3 2程序文件设计 3 2 2算法表示算法 解决问题的方法 步骤 表示形式 自然语言 传统流程图 N S结构化流程图和伪代码等 常用的流程图符号 起止框 处理框 判断框 输入输出框 流程线 连接点 12 3 2程序文件设计 3 2 2算法表示 循环结构 13 3 2程序文件设计 3 2 2算法表示 例3 1将 学生 表中指定学生的奖学金加10元 并显示该学生的奖学金 Y N 14 3 2程序文件设计 3 2 6程序文件示例 例3 2编制一个程序文件实现口令验证功能 15 3 2程序文件设计 3 2 6程序文件示例 例3 3编制一个程序文件实现收费找零功能 程序自动随机生成一个需要付款的金额 要求忽略角分 用户从键盘输入预付款金额 程序自动计算找零金额并对50元 10元 5元 1元的找零张数进行统计且给出提示 请大家试着画画程序流程图 16 3 2程序文件设计 3 2 3程序文件的建立与执行 在程序文件中的命令或指令通常又称作语句 程序文件由若干条语句组成 每行只能有一条语句 并以回车键结束 程序文件主要包括3个基本部分 数据输入 数据处理 数据输出 1创建程序通过项目管理器创建通过文件菜单创建通过命令创建 MODIFYCOMMAND 2 保存程序通过菜单保存直接关闭没有保存的程序 则会弹出相应对话框 提示保存或放弃按CTRL W组合键保存 17 3 2程序文件设计 3 2 3程序文件的建立与执行3 修改程序通过项目管理器的 修改 选项打开程序并修改通过文件菜单中 打开 选项打开程序并修改通过命令MODIFYCOMMAND打开程序并修改注 修改窗口和创建窗口相同 修改完毕后应注意保存 4 运行程序通过项目管理器的 运行 按钮运行程序通过程序菜单中 运行 选项运行程序通过命令DO运行程序 18 3 2程序文件设计 3 2 4简单的输入和输出语句1 换行输出语句 格式 功能 分别计算表达式列表的值 并将表达式列表的值输出在主窗口的当前光标的下一行 2 同行输出语句 格式 功能 当前光标所在行 列的后面 19 3 2程序文件设计 3 2 4简单的输入和输出语句3 表达式接收语句 INPUT格式 INPUT TO功能 将键盘输入的数据赋给由指定的内存变量 从键盘输入的数据可以是常量 变量或表达式 数据类型可以是N C D L和Y等 注意 输入的字符串常量 必须有定界符 4 字符串接收语句 ACCEPT格式 ACCEPT TO功能 将键盘输入的数据赋给由指定的内存变量 注意 从键盘输入的数据只能是字符型常量 20 3 2程序文件设计 3 2 4简单的输入和输出语句5 单字符接收语句 WAIT格式 WAIT TO WINDOW AT NOWAIT NOCLEAR TIMEOUT 功能 将键盘输入的数据赋给由指定的内存变量 注意 从键盘输入的数据只能是一个单字符常量 21 3 2程序文件设计 3 2 5程序注释与环境设置语句1 程序注释语句 NOTE 格式 NOTE 或 功能 对程序的结构或功能进行注释 2 语句注释 格式 功能 对程序中某一条语句的功能进行注释 3 清屏语句 CLEAR格式 CLEAR功能 执行清屏操作 22 3 2程序文件设计 3 2 5程序注释与环境设置语句4 常用的SET语句系列 1 SETTALKON OFF功能 打开或关闭系统交互对话显示方式 缺省时为打开显示 2 SETDELETEOFF ON 3 SETEXACTOFF ON 4 SETCARRYOFF ON 5 SETDEFAULTTO 6 SETEXCLUSIVEON OFF 7 SETESCAPEON OFF 8 SETUDFPARMSTOVALUE REFERENCE 23 第4章程序设计控制结构 4 1程序控制的基本结构顺序结构选择分支结构循环结构4 2子程序与参数传递4 3综合程序设计范例 24 4 1程序控制的基本结构 4 1 1顺序结构指程序的执行按其中的命令从上到下逐条顺序执行 例 105页第一个程序 例 编写一个求圆面积的程序 圆半径的值由键盘输入 例 求下列表达式的值 x y的值由键盘输入 log x y 2 x y sin 30 例4 1 求 学生 表中指定班级的全体学生的奖学金总额 25 顺序结构 例1 105页 settalkoffclearaccept 请输入你的名字 tonamemessage 大家好 这是 name 的第一个程序 messagesettalkon 使用input可以吗 INPUT 数据类型可以是N C D L和Y等 ACCEPT 从键盘输入的数据只能是字符型常量 26 顺序结构 编写一个求圆面积的程序 圆半径的值由键盘输入 settalkoffclearinput 请输入圆的半径 tors pi r 2 半径为 alltrim str r 2 的圆的面积为 alltrim str s 20 2 settalkon 27 顺序结构 求下列表达式的值 x y的值由键盘输入 log x y 2 x y sin 30 settalkoffclearinput 请输入x的值 toxinput 请输入y的值 toys log x y 2 abs x y sin 30 pi 180 表达式的值为 alltrim str s 20 2 settalkon 28 4 1程序控制的基本结构 例4 1 求 学生 表中指定班级的全体学生的奖学金总额 note求指定班级的奖学金总额settalkoffclearuse学生accept 输入班级 951 953 tobjsum奖学金tojxjforleft 学号 3 bj bj 班的奖学金总额为 str jxj 5 2 usesettalkon 与INPUT的区别 INPUT 数据类型可以是N C D L和Y等 ACCEPT 从键盘输入的数据只能是字符型常量 29 4 1程序控制的基本结构 选择结构二路选择分支结构格式IFELSEENDIF功能根据的值控制执行或 条件表达式关系表达式或逻辑表达式 其值为逻辑真 T 或逻辑假 F 30 4 1程序控制的基本结构 选择结构二路选择分支结构流程图注意ENDIF不能省略 二路分支的出口为ENDIF的下一条语句 ELSE后面为空 没有表达式 31 4 1程序控制的基本结构 选择结构二路选择分支结构程序举例 例4 2 从键盘输入一个数 说明它是奇数还是偶数 习题5 2 给定一个年份 判断是否闰年 32 例4 2 从键盘输入一个数 说明它是奇数还是偶数 1 被2整除 偶数 2 不能被2整除 奇数 SETTALKOFFCLEARINPUT 请输入一个数值型数据 TOAIFINT A 2 A 2 A 是偶数 ELSE A 是奇数 ENDIFSETTALKON 33 教p199习5 2 给定一个年份 从键盘输入 判断它是否闰年 闰年的条件是 能被4整除但不能被100整除 或能被100整除且能被400整除 SETTALKOFFCLEAINPUT Y TOYIF Y 4 0 AND Y 100 0 OR Y 100 0 AND Y 400 0 Y 是闰年 ELSE Y 不是闰年 ENDIFSETTALKON 34 4 1程序控制的基本结构 选择结构二路选择分支结构二路分支的简约形式IFENDIF程序举例 任意输入三个数 按从大到小的顺序输出 35 从键盘输入A B C三个数 值 将它们从大到小 排列后输出 SETTALKOFFCLEAINPUT A TOAINPUT B TOBINPUT C TOCIFA BT AA BB TENDIF IFA CT AA CC TENDIFIFB CT BB CC TENDIF A B CSETTALKON 36 4 1程序控制的基本结构 选择结构2 多路选择分支结构格式DOCASECASE CASEOTHERWISEENDCASE功能 根据的逻辑值控制执行对应的 37 4 1程序控制的基本结构 选择结构 多路选择分支结构功能根据的逻辑值控制执行对应的 流程图 38 4 1程序控制的基本结构 选择结构 选择结构 多路选择分支结构程序举例 习题5 3 从键盘输入任意数据 判断数据类型 例4 4 求一元二次方程式ax2 bx c 0的根 a b c的值从键盘输入 用多路选择分支结构实现 39 教p199习5 3 从键盘输入数据A 可以 是C D N L Y和U型等 通过类型判断 输出其数 据类型的汉字说明 SETTALKOFFCLEAINPUT A TOA DOCASECASETYPE A C A 是字符型数据 CASETYPE A N A 是数值型数据 CASETYPE A L A 是逻辑型数据 CASETYPE A D A 是日期型数据 CASETYPE A Y A 是货币型数据 ENDCASESETTALKON 40 教p151例4 4 用多路分支实现例4 3中一元二 次方程求解 P4 4 PRG SETTALKOFFCLEARINPUT A TOAINPUT B TOBINPUT C TOCD B B 4 A CP B 2 A DOCASECASED0 或用OTHERWISED1 SQRT D X1 B D1 2 A X2 B D1 2 A ENDCASESETTALKON 41 4 1程序控制的基本结构 选择结构 选择分支结构的嵌套示例程序1 例4 3 求一元二次方程式ax2 bx c 0的根 a b c的值从键盘输入 IFELSEENDIF 1 b b 4 a c 0 A b b 4 a c 0 B b b 4 a c 0 42 SETTALKOFFCLEARINPUT a TOaINPUT b TObINPUT c TOcD b b 4 a cP b 2 a IFD 0 复根 ELSEIFD 0 X1 X2 PELSED1 SQRT D X1 b d1 2 a X2 b d1 2 a ENDIFENDIFSETTALKOFF 43 4 1程序控制的基本结构 选择结构 选择分支结构的嵌套示例程序2 例 从键盘输入学生的成绩 输出成绩的档次 优 良 中 及格和不及格 如果该成绩不是0 100的数则提示成绩输入错误 IFELSEENDIF 44 4 1程序控制的基本结构 SETTALKOffCLEARINPUT 请输入学生的成绩 TOCJIFCJ 100 OR CJ 0 请输入0 100的成绩 ELSE DOCASECASECJ 90DC 优 CASECJ 80DC 良 CASECJ 70DC 中 CASECJ 60DC 及格 OTHERWISEDC 不及格 ENDCASE DCENDIFSETTALKON 45 我们学到的命令 创建 修改程序 MODIFYCOMMAND运行程序 DO同行输出语句 表达式接收语句 INPUT字符串接收语句 ACCEPT单字符接收语句 WAIT程序注释语句 NOTE 语句注释 清屏语句 CLEAR选择分支语句 IF ENDIF结构多路分支语句 DOCASE ENDCASE结构 46 上机作业 199页第1题200页实验1 实验2注意事项 在d盘建立以自己学号命名的文件夹 如070000001设置工作目录Setdefaultto d 070000001 运行程序do 例1 prg 注意在英文状态下输入程序指令 47 4 1 3循环结构 循环语句的三种形式 当型循环 DOWHILE ENDDO步长型循环 FOR ENDFOR表记录扫描处理SCAN ENDSCAN 将在后续章节中介绍 48 4 1 3循环结构 DOWHILE基本概念 一 DOWHILE ENDDO 当型循环 格式 DOWHILEENDDO功能 当的值为真时 重复执行DOWHILE ENDDO之间的 直到的值为假时结束 49 4 1 3循环结构 DOWHILE基本概念 一 DOWHILE ENDDO 当型循环 DOWHILEENDDO说明一般在循环体中 应该包含改变值的命令 否则将出现死循环现象 即永真循环 当一开始就不成立时 循环一次也不做 50 4 1 3循环结构 DOWHILE应用举例 1 对已知循环次数的程序段进行顺计数操作 控制格式 N 初值 通常设为1 DOWHILENN N 1ENDDO功能 已知循环次数M 通过对循环变量N进行顺计数并与M比较的方法完成循环操作 51 4 1 3循环结构 DOWHILE应用举例 例1 求1 2 3 10的和值解1 顺计数流程框图见右 52 例1 求1 2 3 10的和值解1 顺计数SETTALKOFFCLEARS 0 累加器赋初值 用于存放最后的和值N 1 累加器赋初值 将用于存放循环次数DOWHILEN 10S S N 实现累加 即用原来的S加上N 和值再赋给SN N 1 实现累加 即用原来的N加上1 和值再赋给NENDDO 1 2 3 10 SSETTALKON 注意 循环的精确性 结束循环时N与S的值 4 1 3循环结构 DOWHILE应用举例 执行过程 53 2 对已知循环次数的程序段进行倒计数操作 控制格式 DOWHILEN 0N N 1ENDDO功能 已知循环次数N 通过对循环变量N进行倒计数并与0比较的方法完成循环操作 4 1 3循环结构 DOWHILE应用举例 54 例1 求1 2 3 10的和值解2 倒计数SETTALKOFFCLEARS 0 累加器赋初值 用于存放最后的和值 N 10 累加器赋初值 将用于存放循环次数 DOWHILEN 0S S N 实现累加 即用原来的S加上N 和值再赋给S N N 1 实现累减 即用原来的N减去1 差值再赋给N ENDDO 1 2 3 10 SSETTALKON 4 1 3循环结构 DOWHILE应用举例 55 例2 求A 的值 A从键盘输入 SETTALKOFFCLEART 1 累乘器赋初值 用于存放最后的积值 INPUT A TOAN 1DOWHILEN AT T N 实现累乘 即用原来的T剩上N 积值再赋给T N N 1ENDDO ALLTRIM STR A 19 TSETTALKON注意 循环控制变量N参与累乘 4 1 3循环结构 DOWHILE应用举例 56 例3 求XN的值 X N值从键盘SETTALKOFFCLEART 1 累乘器赋初值 用于存放最后的积值INPUT X TOXINPUT N TONI 1DOWHILI NT T X 实现累乘 即用原来的T剩上X 积值再赋给TI I 1ENDDO T TSETTALKON注意 循环控制变量I未参与累乘 只是用来控制循环的次数 4 1 3循环结构 DOWHILE应用举例 57 计数累加累乘的一般公式 4 1 3循环结构 DOWHILE应用举例 58 4 1 3循环结构 FOR基本概念 二 FOR ENDFOR 步长型循环 DOWHILE ENDDO结构适用于一般的条件判断 实现循环控制作 但在计数控制中 用FOR ENDFOR循环结构更为方便 格式 FOR循环变量 初值TO终值 STEP步长 ENDFOR NEXT 说明 循环变量为任意一个内存变量 不需要事先定义初值 终值 步长均为一个数值表达式 其值可为正或负或小数若不选 STEP步长 选项 递增步长为1 59 4 1 3循环结构 FOR基本概念 二 FOR ENDFOR 步长型循环 执行过程是 1 循环变量赋初值 2 判断循环变量是否超过终值 如果超过终值 则结束循环 执行ENDFOR后面的语句 3 若循环变量未超过终值时 在执行了 语句序列 部分后 循环变量加步长再转到第2步继续执行 60 例4 求1 2 3 N的和值 N由键盘输入SETTALKOFFCLEARS 0 累加器赋初值 用于存放最后的和值 INPUT N TON 累加器赋初值 将用于存放循环次数 FORX 1TONS S X 实现累加 即用原来的S加上X 和值再赋给S 并执行STEP1 即X X 1后 进入下一次循环 ENDFOR 1 2 3 N SSETTALKON 4 1 3循环结构 FOR应用举例 61 例5 求A 的值 A从键盘输入 SETTALKOFFCLEART 1 累乘器赋初值 用于存放最后的积值 INPUT A TOAFORN 1TOAT T N 实现累乘 即用原来的T乘上N 积值再赋给T ENDFOR ALLTRIM STR A 19 TSETTALKON注意 循环控制变量N参与累乘 4 1 3循环结构 FOR应用举例 62 4 1 3循环结构 FOR应用举例 例6 求XN的值 X N值从键盘输入 SETTALKOFFCLEART 1 累加器赋初值 用于存放最后的积值INPUT X TOXINPUT N TONFORI 1TONT T XENDFOR T TSETTALKON注意 循环控制变量I未参与累乘 只是用来控制循环的次数 63 三 在计数控制中FOR语句与DOWHILE语句的联系与区别 FOR语句与WHILE语句可以互相转换 联系 FOR语句常用于循环次数已知的情况 WHILE语句更多用于循环次数未知的情况 区别 64 4 1 3循环结构 FOR与DOWHILE 循环体 65 例7 计算1 1 2 1 3 1 4 1 N N值从键盘输入 次数控制 SETTALKOFFCLEARS 0INPUT N TONF 1 用F来控制符号 FORX 1TONS S F 1 XF F 用F来控制符号的变化 ENDFOR 1 1 2 1 3 1 N SSETTALKON 4 1 3循环结构 FOR与DOWHILE 66 4 1 3循环结构 FOR与DOWHILE 例8 计算1 1 3 1 5 1 7 的前N项之和 N值从键盘输入 次数控制 SETTALKOFFCLEARINPUT N TONS 0F 1K 1FORX 1TONS S F 1 KF FK K 2ENDFOR S SSETTALKON 67 4 1 3循环结构 FOR与DOWHILE 例9 计算1 1 3 1 5 1 7 直到最后一项的绝对值小于10 5为止 精度控制 SETTALKOFFCLEARS 0F 1K 1P 1 P代表数列的一项 初值必须大于等于1E 5 DOWHILEABS P 1E 5 精度控制的条件 S S PF FK K 2P F 1 KENDDO S SSETTALKON 68 例10 计算下列数列前n项之和 次数控制 X X2 2 X3 3 X4 4 解1SETTALKOFFCLEARS 0STOR1TOT1 T2 T3INPUT X TOXINPUT N TONFORI 1TONT1 T1 XT2 T2 IS S T3 T1 T2T3 T3ENDF S SRETURN 解2SETTALKOFFS 0T 1INPUT X TOXINPUT N TONFORI 1TONT1 1FORJ 1TOIT1 T1 XENDFORT2 1FORK 1TOIT2 T1 KENDFOR 4 1 3循环结构 FOR与DOWHILE S S T T1 T2T TENDFOR S SRETURN 69 解SETTALKOFFCLEARINPUT X TOXS 0SOTRE1TOT1 T2 IDOWHILEABS T1 T2 1E 5STORE1TOT1 T2 T3FORJ 1TO2 I 1T1 T1 XT2 T2 JENDFOR S S T3 T1 T2T3 T3I I 1ENDDO SIN STR X 6 4 LTRIM STR S 20 7 SETTALKON 4 1 3循环结构 FOR与DOWHILE 例11 计算数据前n项之和 X X3 3 X5 5 X7 7 精确到10 5 精度控制 70 循环结构的一个基本应用是级数求和问题 即对数列求和 常用的控制方法有两种 一种是次数控制 即已知控制循环的次数 往往采用FOR语句实现 另一种是精度控制 即不知道循环的次数 但明确整个级数运算结果精确的小数位数 或级数的某一项精确的小数位数 往往采用DOWHILE语句实现 一般较复杂的级数求和问题用双重循环实现 内循环求级数的一项或一项的一部分 外循环实现累加 当然 较简单的级数求和问题也可以对控制结构稍加技术处理 用单循环实现 通俗地说 这就是 累加累乘 问题 循环有3种执行情况 即有限次循环 永真循环和一次也不做的循环 4 1 3循环结构 FOR与DOWHILE 71 4 1 3循环结构 其它程序举例 例12 输入一个整数初始值 从该数开始到100之间 包括100 找出能被7或11整除的所有整数 显示其值以及个数 循环与分支的嵌套 SETTALKOFFCLEARINPUT 请输入一个正整数 TONC 0FORI NTO100IFMOD I 7 0ORMOD I 11 0 STR I 3 C C 1ENDIFENDFOR 从 STR I 3 到整除的数的个数为 STR C 2 SETTALKON 72 4 1 3循环结构 其它程序举例 字符串的拆合 函数应用题 利用字符处理函数 应用循环结构的思路 可以实现字符串的拆合基本知识 常用函数 大小写转换upper lower类型转换ctod dtoc val str asc chr截取left right substr字符串长度len 73 4 1 3循环结构 其它程序举例 解1 字符串的倒装SETTALKOFFCLEARACCEPT N TONM LEN ALLTRIM N J 1S DOWHILJ MF SUBSTR N J 1 S F S 倒装J J 1ENDDO SSETTALKON 解2 字符串的顺装SETTALKOFFCLEARACCEPT N TONM LEN ALLTRIM N J MS DOWHILJ 1F SUBSTR N J 1 S S F 顺装J J 1ENDDO SSETTALKON 例13 该程序实现字符串倒置 如字符串 ABCD 倒置后为 DCBA 注意 S S F与S F S的区别 74 4 1 3循环结构 其它程序举例 例14 写出下列程序的运行结果 注 字符 G O D 的ASCII码分别为71 79 68 SETTALKOFFCLEARC 一二三四五六七八九十 B GOOD R 0FORI 1TOLEN B W SUBSTR B I 1 D ASC W R 65S IFD SR R 6ENDFORSETTALKON 75 4 1 3循环结构 EXIT与LOOP 四 EXIT与LOOP的区别加入EXIT与LOOP后的循环控制格式DOWHILE EXIT LOOP ENDDOFOR循环变量 初值TO终值 STEP步长 EXIT LOOP ENDFOR NEXT注意 LOOP与EXIT一般应放在分支语句中 区别 1 EXIT语句结束整个最内层循环 不再进行条件判断 称为循环的 断路 2 LOOP语句只结束本次循环 直接进行是否执行下一次循环的判断 又称为循环的 短路 76 4 1 3循环结构 EXIT与LOOP 四 EXIT与LOOP的区别 加入EXIT后的循环控制格式 FOR与DOWHILE相同 77 4 1 3循环结构 EXIT与LOOP 四 EXIT与LOOP的区别加入LOOP后的循环控制格式 LOOP 选项用于跨过LOOP后面的语句 直接回到循环起始语句DOWHILE LOOP 选项用于跨过LOOP后面的语句 在执行完循环变量加步长后 直接回到与终值的比较 78 四 EXIT与LOOP的应用对循环次数不确定的程序段进行操作 永真循环控制格式 DOWHILE T IFEXITENDIFENDDO功能 循环条件设为永真 T 只有当满足时 才由EXIT语句跳出循环 一般包含在分支语句中 该控制结构适合于各种循环控制 是一种 万能 框架 除EXIT以外 也可以用RETURN或CANCEL跳出循环 4 1 3循环结构 EXIT与LOOP 79 例15 输入一批学生的分数 统计不及格学生的人数 输入负数结束 解1 SETTALKOFFCLEARN 0DOWHILE T INPUT X TOXIFX 0EXITENDIFIFX 60N N 1ENDIFENDDO N NSETTALKON 解2SETTALKOFFCLEARN 0DOWHILE T INPUT X TOXIFX 60LOOPENDIFN N 1ENDDO N NSETTALKON 4 1 3循环结构 EXIT与LOOP 80 4 1 3循环结构 几种算法应用 求最大最小问题 实例16 评委评分程序 分数的范围是0 100 在10个分数中去掉一个最高分 去掉一个最低分 剩下的分数求平均为最后得分 SETTALKOFFCLEARINPUT 请输入分数 TOX 输入第一个分数 STOREXTOS A BFORN 1TO9 对其余九个分数处理 INPUT 请输入分数 TOXS S X 累加 IFX A 求最高分 A XENDIFIFX B 求最低分 B XENDIFENDFORS S A B 8 最后得分为 SSETTALKON 81 整除性应用实例17 输入一个数 判断其是否为素数 3种思路 1 2 n 1 2 2 n 2 3 2 sqrt n 4 1 3循环结构 几种算法应用 说明 素数问题的解决有以上3种方法 其中第 1 种方法使用最方便 第 3 种方法效率最高 SETTALKOFFCLEARINPUT X TOXFORN 2TOX 1IFX N 0 第一个IF语句 EXITENDIFENDFORIFN X 第一个IF语句 STR X 是素数 ELSE STR X 不是素数 ENDIFSETTALKON注意 两个IF语句 用1个IF语句可以吗 82 4 1 3循环结构 几种算法应用 数位截取框架 dowhilex0d x 10 取个位x int x 10 丢个位Enddo说明 在该循环框架中 循环条件为x0 即通过语句d x 10截取该数的最后一位数字 并对这一位数字进行相应的处理 然后用x int x 10 语句将最后一位数字丢弃 如此循环 直到x 0为止 例18 输入1个数 求各位数字之和 SETTALKOFFCLEARINPUT X TOXS 0DOWHILEX0D X 10 取个位S S DX INT X 10 丢个位ENDDO S SSETTALKON 83 例18 输入1个数 求各位数字之和 确定 循环条件和循环不变体 D X 10S S DX INT X 10 12345 10 5S 0 5 5INT 12345 10 12341234 10 4S 5 4 9INT 1234 10 123123 10 3S 9 3 12INT 123 10 1212 10 2S 12 2 14INT 12 10 11 10 1S 14 1 15INT 1 10 0结束 循环不变式 D X 10S S DX INT X 10 循环条件 X0 INPUT X TOXS 0DOWHILEX0D X 10 取个位S S DX INT X 10 丢个位ENDDO 84 4 1 3循环结构 多重循环 五 多种结构的嵌套格式 DOWHILEFORN ATOBSTEPC IF ELSE ENDIF DOCASE ENDCASE EXIT LOOP ENDFORENDDO功能 用于解决不能用一种控制结构实现的复杂问题 常用的是双重循环结构 85 五 多种结构的嵌套例19 利用循环嵌套控制结构 实现 百钱买百鸡 的计算 取自 算经 鸡翁一 值钱五 鸡母一 值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 母 雏各几何 分析 设要买X只公鸡 Y只母鸡 Z只小鸡 可得到方程5 X 3 Y Z 3 100X Y Z 100可用穷举法解决 4 1 3循环结构 多重循环 86 4 1 3循环结构 多重循环 87 4 1 3循环结构 多重循环 例19 百钱买百鸡 程序代码 settalkoffclearforx 0to20fory 0to33z 100 x yif5 x 3 y z 3 100 x str x 2 y str y 2 z str z 2 endifendforendforsettalkon 88 4 1 3循环结构 多重循环 应用于图形处理使用双重循环 外循环行内循环列例20 编写输出九九乘法表程序 输出格式 1 1 12 1 22 2 43 1 3 3 3 9 9 1 9 9 9 81 89 4 1 3循环结构 多重循环 例20 输出九九乘法表 90 4 1 3循环结构 多重循环 例20 输出九九乘法表 SETTALKOFFCLEARX 1 DOWHILEX 9Y 1DOWHILEY X STR Y 1 X STR X 1 STR X Y 2 y y 1ENDDO X X 1ENDDOSETTALKONRETURN 91 4 1 3循环结构 多重循环 应用于矩阵的二维数组处理 基本知识 主对角线i j副对角线i j m 1上三角形i j 123456789 主对角线 副对角线 上三角形 下三角形 例21 当M 3时 写出下列程序运行的结果 SETTALKOFFCLEARINPUT M TOMDIMEA M M FORI 1TOM FORJ 1TOMIFI JA I J 1 ELSEA I J 0 ENDIF A I J ENDFORENDFORSETTALKON 92 作业 写在作业本上 下次课交199页第2 3 4 5 9课前编写 上机调试 下课前提交 200页 2 1 2 3 1 93 作业 写在作业本上 下次课交199页第7 8 10 11计算1 1 2 1 3 1 4 1 N N值从键盘输入计算1 1 3 1 5 1 7 的前N项之和 N值从键盘输入 计算1 1 3 1 5 1 7 直到最后一项的绝对值小于10 5为止 计算下列数列前n项之和 X X2 2 X3 3 X4 4 计算数据前n项之和 X X3 3 X5 5 X7 7 精确到10 5输入一个整数初始值 从该数开始到100之间 包括100 找出能被7或11整除的所有整数 显示其值以及个数 该程序实现字符串倒置 如字符串 ABCD 倒置后为 DCBA 输入一批学生的分数 统计不及格学生的人数 输入负数结束评委评分程序 分数的范围是0 100 在10个分数中去掉一个最高分 去掉一个最低分 剩下的分数求平均为最后得分 课前编写 上机调试 下课前提交 200页 3 3 94 选择分支结构 是根据条件的测试结果执行不同的操作 用两条命令实现条件分支 二路选择分支结构 IF ENDIF多路选择分支结构 DOCASE ENDCASE1 二路选择分支结构格式 IF THEN ELSE ENDIF功能 根据的值控制执行或 95 选择分支结构 2 多路选择分支结构 格式 DOCASECASE CASE OTHERWISE ENDCASE功能 根据的逻辑值控制执行对应的 96 4 1程序控制的基本结构 4 1 3循环结构循环结构可以根据问题的需要任意次地重复执行一行或多行语句 循环结构要特别注意的是在重复执行语句过程中 要有控制条件的语句 以避免出现死循环现象 DOWHILE ENDDOSCAN ENDSCANFOR ENDFOR 97 4 1程序控制的基本结构 4 1 3循环结构1 DOWHILE ENDDO格式 DOWHILE EXIT LOOP ENDDO功能 当的值为真时 重复执行DOWHILE ENDDO之间的 直到的值为假时结束 结束当前循环操作 跳到ENDDO后面的语句 跳过LOOP后面的语句 直接回到循环起始语句DOWHILE 98 4 1程序控制的基本结构 4 1 3循环结构1 DOWHILE ENDDO 99 4 1程序控制的基本结构 4 1 3循环结构 1 对循环次数不确定的程序段进行操作 格式 DOWHILE T 循环次数不确定时IFEXITENDIFENDDO功能 循环条件永远为真 只有满足IF语句的时 才跳出循环 注意 在这种使用方法中 EXIT选项是不可缺少的 且必须和IF语句或DOCASE语句连用 P169例4 6 P170例4 7 100 4 1程序控制的基本结构 4 1 3循环结构 2 对表文件中的记录逐条进行操作 格式 DOWHILE NOT EOF BOF SKIP SKIP 1ENDDO功能 对当前打开的表文件中的记录自上而下或自下而上地逐条进行操作 注意 记录指针由SKIP语句控制 循环结束的条件由函数EOF 和BOF 控制 P171例4 8 P171例4 9 101 4 1程序控制的基本结构 4 1 3循环结构 3 对已知循环次数的程序段进行顺计数操作 格式 N 初值 通常设为1 DOWHILENN N XENDDO功能 通过对循环变量N进行顺计数并与M相比较的方法完成循环操作 P172例4 10 P172例4 11 102 4 1程序控制的基本结构 4 1 3循环结构 4 对已知循环次数的程序段进行倒计数操作 格式 DOWHILEMM M 1ENDDO功能 已知循环次数M 通过对循环变量M进行倒计数并与0相比较的方法完成循环操作 P172例4 12 103 4 1程序控制的基本结构 4 1 3循环结构 5 通过状态测试函数对程序段进行操作 格式 DOWHILE 改变状态测试函数值的语句或键盘动作 ENDDO功能 当的初始值为真时 进行循环操作 当的值在循环体中被改变时 便结束循环操作 P173例4 13 P173例4 14 104 4 1程序控制的基本结构 4 1 3循环结构2 SCAN ENDSCAN格式 SCAN NOOPTIMIZE 范围 FOR WHILE LOOP EXIT ENDSCAN功能 对当前打开的表文件在指定范围 满足条件的记录中进行自上而下逐个扫描操作 随着记录指针的移动 SCAN循环允许对指定的每条记录执行相同的操作 P174例4 15 P174例4 16 105 4 1程序控制的基本结构 4 1 3循环结构3 FOR ENDFOR格式1 FOR循环变量 初值TO终值 STEP步长 EXIT LOOP ENDFOR NEXT功能 当循环变量的值不大于终值时 执行循环操作 每循环一次 循环变量的值自动递增一个步长值 选项说明 LOOP 实现循环短路操作 EXIT 实现结束当前循环操作 注意 1 循环变量为任意一个内存变量 不需要事先定义 2 初值 终值和步长均为数值表达式 且可正可负 3 缺省 STEP步长 选项 步长默认为1 106 4 1程序控制的基本结构 4 1 3循环结构3 FOR ENDFOR格式2 FOREACHIN EXIT LOOP ENDFOR NEXT功能 对 中的每个元素执行循环操作 P175例4 17 P174例4 18 注意 1 循环变量为任意一个内存变量 不需要事先定义 2 为已经定义的数组或集合 107 4 1程序控制的基本结构 4 1 4多种结构的嵌套解决复杂问题时 仅仅靠一种控制结构是很难解决问题 因而需要使用多种控制结构的嵌套形式以及多重循环控制的嵌套形式来解决问题 一种结构嵌套的形式DOWHILEFORN ATOBSTEPC DOWHILE ENDDO IF ELSE ENDIF ENDFORENDDO 注意 在使用多种结构嵌套时 各个控制结构不能出现交叉现象 108 4 1程序控制的基本结构 4 1 4多种结构的嵌套 例4 19利用循环嵌套控制结构 实现 百钱买百鸡 的计算 取自 算经 鸡翁一 值钱五 鸡母一 值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 母 雏各几何 分析 设 要买X只公鸡 Y只母鸡 Z只小鸡 可得到方程 5 X 3 Y Z 3 100X Y Z 100可用穷举法解决 109 4 1程序控制的基本结构 4 1 4多种结构的嵌套 例4 19百钱买百鸡 110 4 1程序控制的基本结构 4 1 4多种结构的嵌套 例4 19百钱买百鸡 Forx 0to20fory 0to33z 100 x yif5 x 3 y z 3 100 x str x 2 y str y 2 z str z 2 endifendforEndfor 111 4 2子程序与参数传递 4 2 1子程序 定义 子程序是相对于主程序而言的一个独立的程序文件 其建立方法与建立程序文件的方法相同 扩展名为 PRG 子程序的调用与返回 调用 DO WITH 返回 RETURN TOMASTER 说明 RETURN返回到调用者的调用语句的下一行 TOMASTER 选项表示返回到最高级调用者 选项表示将值返回到调用者 子程序执行时直到遇到以下情况时 自动结束返回 RETURN RETRY CANCEL QUIT和子程序的末尾 112 4 2子程序与参数传递 4 2 1子程序 主 子程序的调用关系 递接调用关系 113 4 2子程序与参数传递 4 2 1子程序 主 子程序的调用关系 跨接调用关系 114 4 2子程序与参数传递 4 2 2过程文件1 过程与过程文件的定义 过程是一个由PROCEDURE开头 ENDPROC结尾的子程序段 过程可以将实现相对独立功能的常用代码集中在一起 供应用程序在需要时调用 过程文件 是由若干个过程构成的文件 PROCEDURE ENDPROC 注意 1 过程必须存放在一个过程文件中 2 不能把可执行的主程序代码放在过程之后 115 4 2子程序与参数传递 4 2 2过程文件2 过程文件的建立与程序文件的创建方法相同 将过程文件的内容一行一行地输入 通过将分散的子程序加入项目管理器 再利用工具自动连编生成扩展名为APP或EXE的文件 3 过程文件的调用 注意 调用过程文件之前必须要打开过程文件 调用结束后要关闭 过程文件 过程文件的打开 SETPROCEDURETO过程文件的关闭 SETPROCEDURETO或CLOSEPROCEDURE 116 4 2子程序与参数传递 4 2 3参数传递及作用域主程序与子程序之间或过程与过程之间通过互相传递参数来完成整体上的操作 主程序与子程序之间的参数传递可以通过下列方式进行 利用内存变量的作用域属性利用DO WITH 117 4 2子程序与参数传递 4 2 3参数传递及作用域1 利用内存变量属性传递参数 定义格式作用范围传递方向变量寿命 118 4 2子程序与参数传递 4 2 3参数传递及作用域 1 自然属性 自然属性的内存变量含义 是指在程序 PRG 中出现的没有特别声明而只是通过赋值或数组定义的变量 自然属性的内存变量特点定义格式 STORE DIMENSION DECLARE INPUT SUM等 作用范围 该程序及其调用的下属子程序 传递方向 单向 变量寿命 所在程序运行结束后 该变量被自动删除 P181例4 21 119 4 2子程序与参数传递 4 2 3参数传递及作用域 2 公用属性 公用属性的内存变量含义 是指能在所有的程序中使用 并通过这种方式共享的内存变量 公用属性的内存变量必须先特别声明和定义后方能使用 公用属性的内存变量特点定义格式 PUBLIC作用范围 整个系统的所有程序 传递方向 双向 由主程序到子程序 也可以由子程序到主程序 变量寿命 程序运行结束后 内存中仍然保存该变量 P182例4 22 注意 不能用PUBLIC定义已经用其他方法定义过的变量 但是用PUBLIC定义过的变量还可以再用PUBLIC定义 用PUBLIC定义过的变量的初值为逻辑假 F 120 4 2子程序与参数传递 4 2 3参数传递及作用域 3 私有属性 私有属性的内存变量含义 是指具有既类似自然属性又能屏蔽上级同名内存变量属性的内存变量 私有属性的内存变量也必须先特别声明后方能使用 私有属性的内存变量特点定义格式 PRIVATE ALL LIKE EXCEPT 作用范围 该程序及其调用的下属子程序 传递方向 单向 由主程序到子程序 变量寿命 程序运行结束后 该变量被自动删除 特殊作用 可屏蔽 隐藏 上级 主 程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标准法律服务合同范本(合同审查)
- 2025年版事业单位试用期间劳动合同指南
- 2025湖南益阳市市直事业单位引进紧缺(急需)专业人才62人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025江苏南京江北新区产业投资集团有限公司下属子公司招聘拟聘考前自测高频考点模拟试题及答案详解(网校专用)
- 2025融资租赁代理服务合同
- 2025内蒙古峰市教育科学研究中心竞争性比选教研员5人考前自测高频考点模拟试题及答案详解(易错题)
- 电梯安全管理员证考试题库及答案
- 外贸海员考试题库及答案
- 药学转本考试题库及答案
- 规划报建考试题库及答案
- 妇产科健康宣教
- 2025方便速食行业线上消费趋势洞察
- 环评管理培训
- 两委干部日常管理制度
- 儿童编发课件图片
- 报废汽车回收公司车间管理制度
- AI大模型赋能数字化医院建设方案
- 淘宝客服合同协议书模板
- 企业资金流动管理的试题及答案
- 借款抵押合同协议书
- 2025年“铸牢中华民族共同体意识”应知应会知识竞赛题库试卷及答案
评论
0/150
提交评论