第七章程序设计PPT课件_第1页
第七章程序设计PPT课件_第2页
第七章程序设计PPT课件_第3页
第七章程序设计PPT课件_第4页
第七章程序设计PPT课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第七章程序设计基础 2 本章要点 VisualFoxPro的工作方式程序文件的建立与编辑程序的基本结构分支结构循环结构过程 3 VisualFoxPro的工作方式 VisualFoxPro系统提供有三种工作方式 即单命令方式 菜单方式及程序文件方式 1 单命令方式VisualFoxPro单命令方式是利用Command窗口来实现的 用户通过Command窗口输入命令 并执行操作 在Command窗口中 可以输入单个的操作命令和系统命令 完成对数据库的操作管理和系统环境的设置 也可以建立命令文件及运行命令文件 Command窗口不仅是VisualFoxPro命令的执行窗口 也是VisualFoxPro命令文件的编辑窗口 所谓单命令方式 即输入一条命令 完成一个操作的工作方式 4 2 菜单方式在VisualFoxPro环境下 也可以通过系统提供的菜单选项 对数据库资源进行操作管理和对系统环境进行设置 并通过菜单建立命令文件及运行命令文件 所谓菜单方式 即通过打开不同的菜单选择并完成不同的操作 我们在以前各章所讲的内容其实都可说是菜单方式 3 程序文件方式程序文件 简称程序 也叫做命令文件 运用程序文件方式进行数据库管理 是通过程序文件编辑工具 将对数据库资源进行操作管理的命令和对系统环境进行设置的命令 集中在一个以 PRG 为扩展名的命令文件中 然后再通过菜单方式或命令方式运行该命令文件 所谓命令方式 即通过程序文件中的命令完成不同的操作 5 功能说明 求圆形的面积 文件名 L501 PRGCLEARCTALK SET TALK SETTALKOFFINPUT 请输入圆的半径 半径 TORS PI R R 半径为 ALLTRIM STR R 的圆 面积 SSETTALK CTALKRETURN 6 6 1 1程序的概念 有关此VisualFoxPro程序的几点说明 1 注释语句 格式1 NOTE 格式2 格式3 7 6 1 2程序文件的建立 修改与执行 1 建立或修改程序文件可用两种方式调用系统内置的文本编辑器建立或修改程序文件 命令方式MODIFYCOMMAND 程序文件名 菜单方式打开 文件 菜单 选择 新建 在 新建 窗口 选择 程序 再选择 新建文件 8 程序文件的建立与执行一 建立建立 文件 新建 程序保存 文件 保存命令 MODIFYCOMMAND 注 若指定文件存在 则打开修改 否则系统认为是要建立一个指定了名字的文件 9 2 运行程序下面的任一方法均可运行程序 选择 程序 菜单下的 运行 菜单 利用 运行 对话框选择要运行的程序 在命令窗口中输入如下命令 DO 系统就会运行这个程序 如果文件不加扩展名 系统会假定它具有 PRG的扩展名 如果想运行一个具有其它扩展名的命令文件时 在输入命令时必须给出这个命令文件的全名 如 要运行上例中编辑的程序 可以在命令窗口中输入 DOL501然后按回车键执行 10 2 保存程序程序输入 编辑完毕 单击 文件 保存 菜单项 在 另存为 对话框中指定程序文件的存放位置和文件名 并单击 保存 按钮保存程序文件并退出文本编辑器 程序文件的默认扩展名是 PRG 11 3 执行程序程序文件建立后 可以用多种方式 多次执行它 下面是两种常用的方式 1 菜单方式 单击 程序 运行 菜单项 打开 运行 对话框 从文件列表框中选择要运行的程序文件 并单击 运行 命令按钮 启动运行该程序文件 2 命令方式 格式 DO 功能 执行指定 下的程序文件 12 执行程序文件时 将依次执行文件中的命令 直到所有命令执行完毕 或者执行到以下命令 CANCAL 终止程序运行 清除所有的私有变量 返回命令窗口 RETURN 结束程序执行 返回调用它的上级程序 若无上级程序则返回命令窗口 QUIT 结束程序执行并退出VisualFoxPro系统 返回操作系统 13 6 1 3简单的输入输出命令 6 1 3简单的输入输出命令1 字符接收语句ACCEPT命令 功能 在程序执行过程中 将用户交互式输入的内容作为字符串赋值给指定内存变量 该命令只接受字符型数据 输入的字符串不需要加定界符 否则 系统会把定界符作为字符串本身的一部分 格式 ACCEPT TO 14 例6 2 编程从键盘输入某数据库的文件名 要求打开该数据库并显示其内容 程序文件名为PROG2 PRGSETTALKOFFCLEARACCEPT 请输入数据库名 TOAAAOPENDATABASE AAAACCEPT 请输入表名 TOBBBUSE BBBLISTUSESETTALKONRETURN 15 注 ACCEPT语句只能给字符型内存变量提供数据 如果用户想给其它类型的内存变量提供数据 可以使用下列命令 2 通用数据接收命令 INPUT命令该命令等待用户从键盘输入数据 用户可以输入任意合法的表达式 当用户以回车键结束输入时 系统将表达式的值存入指定的内存变量 程序继续运行 功能 1 若选用 系统会首先显示该表达式的值 作为提示信息 2 输入的数据可以是常量 变量等 但不能不输入任何内容直接按回车键 INPUT语句与ACCEPT语句的区别是 ACCEPT命令只能接收字符串 而INPUT语句可以接收任意类型的VFP表达式 如果输入的是字符串 ACCEPT语句不要使用字符型定界符 而INPUT语句必须用定界符括起来 格式 INPUT TO 16 例6 4 从键盘输入两个任意正数 编程求以两数为边长的长方形面积 程序文件名为PROG4 PRGSETTALKOFFCLEARinput 长方形一边的长为 TOAINPUT 长方形另一边的长为 TOBS A B 长方形的面积为 SSETTALKONRETURN 17 3 输入一个字符语句 WAIT命令 功能 显示提示信息 暂停程序执行 直到用户按任意键或单击鼠标时继续执行程序 若选择可选项 TO 将输入的单个字符作为字符型数据赋给指定的 若用户是按Enter键或单击鼠标 的值为空串 若省略所有可选项 屏幕显示 键入任意键继续 默认提示信息 格式 WAIT TO 18 例 wait 输入无效 请重新输入 windowtimeout5命令执行时 在主窗口右上角出现一个提示窗口 其中显示提示信息 输入无效 请重新输入 之后 程序暂停执行 当用户按任意键或超过5秒钟时 提示窗口关闭 程序继续执行 19 例6 6 在STUDENT数据库的STUD表中显示任意一个系学生的情况 程序文件名为PROG6 PRGSETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDWAIT 请输入待查学生的系号 1 3 TONIFVAL N 3WAIT 输入无效 结束程序运行 WINDOWTIMEOUT5RETURNELSESTORE 0 NTOAAALISTFOR系别号 AAAENDIFCLOSEDATABASESETTALKONRETURN 20 4 三条输入命令的异同ACCEPT命令只能接受字符型数据 不需定界符 输入完毕按回车键结束 WAIT命令只能输入单个字符 且不需定界符 输入完毕不需按回车键 INPUT命令可接受数值型 字符型 逻辑型 日期型和日期时间型数据 数据形式可以是常量 变量 函数和表达式 如果是字符串 需用定界符 输入完毕按回车键结束 21 练习 在INPUT ACCEPT和WAIT三个命令中 必须要以回车键表示输入结束的命令是A INPUT ACCEPTB INPUT WAITC ACCEPT WAITD INPUT ACCEPT和WAIT 22 二 结构化的程序设计三大结构 顺序结构 选择结构 循环结构 1 顺序结构按命令在程序中出现的先后次序依次执行 23 分支结构形式有如下三种 1 单向分支 单向分支语句 即根据用户设置的条件表达式的值 决定某一操作是否执行 1 语句格式 IF 条件表达式 命令行序列 ENDIF 2 语句功能 该语句首先计算 条件表达式 的值 当 条件表达式 的值为真时 执行 命令行序列 否则 执行ENDIF后面的第一条命令 分支结构 24 例6 7 求一元二次方程AX2 BX C 0的实根 程序文件名为PROG7 PRG SETTALKOFFCLEARINPUTTOA2INPUTTOB3INPUTTOC4Z B 2 4 A CIFZ 0X1 B SQRT Z 2 A X2 B SQRT Z 2 A X1 X2ENDIFSETTALKONRETURN 25 2 双向分支 双向分支语句 即根据用户设置的条件表达式的值 选择两个操作中的一个来执行 1 语句格式 IF 条件表达式 命令行序列1 ELSE 命令行序列2 ENDIF 2 语句功能 该语句首先计算 条件表达式 的值 当 条件表达式 的值为真时 执行 命令行序列1 中的命令 否则 执行 命令行序列2 中的命令 执行完 命令行序列1 或 命令行序列2 后都将执行ENDIF后面的第一条命令 26 例6 10 编写一密码校验程序 假设密码为ABC 程序文件名为PROG10 PRG SETTALKOFFCLEARACCEPT 请输入您的密码 TOAAAIFAAA ABC CLEAR 欢迎使用本系统 ELSE 密码错误 WAITreturnENDIFSETTALKON 27 例1 从屏幕输入你的身份 如果是学生 则显示 好好学习 天天向上 ClearAccept 请输入你的身份 toSFIFSF 学生 好好学习 天天向上 Endif例2 从屏幕输入一个数字型数据到变量X中 如果x 200 则给其加500 如果200200andx 300X x 300ElseX x 100EndifEndifClear x 28 P186页一 选择题4 有如下程序 Inputtoa100Ifa 10s 0EndifS 1 s假定在键盘输入的A的值一定是数值型 那么上面条件选择程序的执行结果是 A 0B 1C 由A的值决定D 程序出错 29 P187页第二填空题1 有一分支程序为 Ifs 100dop1 prgElseifs 10dop2 prgelseifs 1dop3 prgelsedop4 prgendifendifendif分别写出执行P P3 P4子程序的条件表达式 Dop1 prg条件为S 10Dop2 prg条件为 Dop3 prg条件为 Dop4 prg条件为 30 3 多向分支 多向分支语句 即根据多个条件表达式的值 选择执行多个操作中的一个对应执行 1 语句格式 格式 DOCASECASE CASE CASE OTHERWISE ENDCASE 31 B 分支语句语句序列1条件1格式 DOCASECASECASE CASE OTHERWISE ENDCASE 32 注 1 不管有几个CASE条件成立 只有最先成立的那个CASE条件的对应命令序列被执行 2 若所有CASE条件都不成立 且没有OTHERWISE子句 则直接跳出本结构 3 DOCASE和ENDCASE必须成对出现 DOCASE是本结构的入口 ENDCASE是本结构的出口 33 例6 12 假设收入 P 与税率 R 的关系如下表 编程求税金 程序文件名为PROG12 PRG 0P 800R 0 05800 P 20000 082000 P 50000 1P 5000 SETTALKOFFCLEARINPUT 请输入收入 TOPDOCASECASEP 800R 0CASEP 2000R 0 05CASEP 5000R 0 08OTHERWISER 0 1ENDCASETAX P R 税金为 TAXSETTALKONRETURN 34 例 计算分段函数值 2x 1 x 10 若输入5 分析程序如何执行 35 SETTALKOFFINPUT 输入X值 TOXDOCASECASEX 0F 2 X 1CASEX 3F 3 X 5CASEX 5F X 1CASEX 10F 5 X 3OTHERWISEF 7 X 2ENDCASE ySETTALKONRETURN 36 例 从键盘输入学生成绩 判断输出 优秀 良好 一般 差 ClearInput 请输入你的成绩 tocjDocaseCasecj 90 你是优秀学生 Casecj 80 你的成绩良好 Casecj 60 你的成绩一般 需要继续努力 Otherwise 你的成绩太差 赶紧努力 Endcasereturn 37 3 循环结构循环结构也称为重复结构 是指程序在执行的过程中 其中的某段代码被重复执行若干次 被重复执行的代码段 通常称之为循环体 VF中的循环结构语句包括 DOWHILE ENDDO FOR ENDFOR和SCAN ENDSCAN语句 38 循环结构 1 DOWHILE循环语句 格式1 DOWHILEENDDO 一个循环结构一般应具备如下的条件 1 循环的初始条件 一般为给循环控制变量赋初值 2 循环头 循环语句的起始 设置 判断循环条件 3 循环尾 循环语句的结尾 4 循环体 位于循环头和循环尾之间 循环控制重复执行的语句序列 39 格式2 DOWHILE LOOP EXIT ENDDO LOOP语句 强行返回到循环开始语句 EXIT语句 强行跳出循环 接着执行ENDDO后的语句 40 功能 1 若第一次判断条件时 条件即为假 则循环体一次都不执行 2 若循环体包含LOOP命令 那么当遇到LOOP时 就结束循环体的本次执行 不再执行其后面的语句 而是转回DOWHILE处重新判断条件 3 若循环体包含EXIT命令 那么当遇到EXIT时 就结束该语句的执行 转去执行ENDDO后面的语句 4 通常LOOP或EXIT出现在循环体内嵌套的选择语句中 根据条件决定是LOOP回去 还是EXIT出去 格式2 DOWHILE LOOP EXIT ENDDO 41 执行该语句时 先判断DOWHILE处的循环条件是否成立 如果条件为真 则执行DOWHILE与ENDDO之间的命令序列 循环体 当执行到ENDDO时 返回到DOWHILE 再次判断循环条件是否为真 以确定是否再次执行循环体 若条件为假 则结束该循环语句 执行ENDDO后面的语句 格式2 DOWHILE LOOP EXIT ENDDO 42 例 计算S 1 2 100 test5 prg 分析 1 引进变量s和i s用来保存累加的结果 初值为0 i既作为被累加的数据 也作为控制循环条件是否成立的变量 初值为1 2 重复执行命令s s i和i i 1 直至i的值超过100 每一次执行 s的值增加i i的值增加1 43 44 例6 20 逐条显示在STUDENT数据库的STUD表中性别为 男 的所有记录 程序文件名为PROG20 PRG SETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDDOWHILE NOT EOF IF性别 男 DISPLAYENDIFSKIPENDDOCLOSEDATABASESETTALKONRETURN 45 B 步长型循环语句 FOR ENDFOR语句该语句通常用于实现循环次数已知情况下的循环结构 格式 FOR TO STEP ENDFOR NEXT 46 2 FOR循环语句 格式 FOR TOstep2 EXIT LOOP ENDFOR NEXT 47 功能 1 的默认值为1 2 和都是数值表达式 但这些表达式仅在循环语句执行开始时被计算一次 在循环语句的执行过程中 初值 终值和步长是不会改变的 3 可以在循环体内改变循环变量的值 但这会影响循环体的执行次数 4 EXIT和LOOP命令同样可以出现在该循环语句的循环体内 当执行到LOOP命令时 结束循环体的本次执行 然后循环变量增加一个步长值 并再次判断条件是否成立 48 求1到100中偶数的和 49 例 从键盘输入10个数 然后找出其中的最大值和最小值 CLEAR test9 prg INPUT 请输入一个数 TOaA 5STOREaTOma miMa 5mi 5FORi 2TO10A 4mi 4INPUT 请输入另一个数 TOaA 6ma 6IFmaami aENDIFENDFOR 最大值 ma 最小值 miRETURN 50 P1883 写出下列程序的运行结果SettalkoffDIMENSIONA 6 FORK 1TO6A K 20 2 KENDFORK 5DOWHILEK 1A K A K A K 1 K K 1ENDDO A 1 A 3 A 5 SETTALKON 运行结果 51 C 数据表扫描循环语句 SCAN ENDSCAN语句格式 SCAN FOR WHILE ENDSCAN执行该语句时 记录指针自动 依次地在当前表的指定范围内满足条件的记录上移动 对每一条记录执行循环体内的命令 2 语句功能 该语句在指定的范围内 默认范围为ALL 用数据记录指针来控制循环次数 执行语句时 首先判断函数EOF 的值 若其值为 真 则结束循环 否则 结合 条件表达式1 或 条件表达式2 执行 命令行序列 记录指针移到指定的范围和条件内的下一条记录 重新判断函数EOF 的值 直到函数EOF 的值为真时结束循环 52 例6 30 输出STUDENT数据库的STUD表中所有团员的姓名和地址 程序文件名为PROG30 PRG SETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDSCANFOR是否团员 姓名 地址ENDSCANCLOSEDATABASESETTALKONRETURN 53 多重循环结构程序设计在一个循环体中再包含有循环结构 称之为二重循环结构 或二重循环嵌套 在二重循环结构的循环体中 若还包含循环结构 称为三重循环结构 二重及其以上的循环结构统称为多重循环结构 这里我们主要介绍二重循环结构 54 多重循环的基本结构DOWHILEDOWHILEENDDOENDDOA 0ForI 1to3Forj 1to3A A 1Endforendfor答案为 9 55 FOR TOSTEPFOR TOSTEPENDFORENDFOR 56 多重循环的执行过程 执行过程的总体原则是 外层循环变量每取一次值 内层循环要完整地循环一遍 若 或中包含有LOOP或EXIT命令 它们会改变循环程序的执行顺序 57 i 0dowhilei 10ifint i 2 i 2 偶数 else 奇数 endifi i 1enddo 58 6 3过程及过程调用 VisualFoxPro与其他高级语言一样 支持结构化程序设计方法 允许将若干命令或语句组合在一起作为整体调用 这些可独立存在并可整体调用的命令语句组合称为过程 1 调用过程语句 即执行已有的过程 语句格式 DO 过程名 WITHWITH用于主程序和子程序间参数的传递 语句功能 执行以 过程名 为名的过程 2 过程返回语句 即返回过程的调用处 语句格式 RETURN 语句功能 将控制返回到调用程序中调用命令的下一语句 59 6 3 1外部过程 外部过程也叫子程序 和主程序一样是以程序文件 PRG 的形式单独存储在磁盘上 例 分别建立如下程序文件 MAIN PRGSETTALKOFF 正在执行主程序 DOSUB1SETTALKON SUB1 PRG 正在执行SUB1 RETURN 60 将若干个过程按一定的规定放在一个大文件中 这个文件称为过程文件 1 过程文件的建立 命令格式与建立程序文件一样 格式 MODIFYCOMMAND 过程文件的格式要求每个过程文件的开头必须用下列语句 格式 PROCEDURE 功能 标明是一个过程 参数描述 指定过程名称 命名方法与文件名的命名方法相同 2 过程与过程文件 61 6 3 2内部过程 内部过程 把多个过程组织在一个文件中 这个文件称之为过程文件 或者把过程放在调用它的程序文件的末尾 VisualFoxPro为了识别过程文件或者程序文件中的不同过程 规定过程文件或者程序文件中的过程必需用PROCEDURE语句说明 其格式为 PROCEDURE RETURN 62 过程放在程序文件中 例 建立如下程序文件 MAIN PRGSETTALKOFF 正在执行主程序 DOSUB1SETTALKONProcedureSUB1 正在执行SUB1 RETURN 63 例 下面是一个模块定义和调用的程序 涉及三个文件 程序文件f1 prg 其中的代码为主程序 另外包含一个过程p1 程序文件f2 prg作为子程序被主程序调用 过程文件f3 prg包含两个过程p2和p3 64 setprocetof3 主程序开始 f2 dop1 主程序结束 过程procep1 过程p1开始 调用p3 返回值 p3 过程p1结束 endproc 子程序f2开始 调用p2 x p2 返回值 x 子程序f2结束 return procep2returnprocep3return100 f1 prg f2 prg f3 prg 65 过程文件的建立 过程文件的建立方法与程序文件相同 可用MODIFYCOMMAND命令或调用其他文字编辑软件来建立 过程文件的结构一般为 PROCEDURERETURNPROCEDURERETURN PROCEDURERETURN 66 6 3 3过程调用中的参数传递 1 有参过程中的形式参数定义有参过程中的形式参数定义语句为 格式 PARAMETERS该语句必需是过程中第一条语句 中的参数可以是任意合法的内存变量名 67 例5 11 计算圆面积的主程序为MYMAIN PRG 子程序为MYSUB PRG MYMAIN PRGCTALK SET TALK SETTALKOFFCLEARSTORE0TORR AREADOWHILE T INPUT 请输入圆的半径 TORRDOMYSUBWITHRR AREA 半径为 ALLTRIM STR RR 的圆的面积是 AREAWAIT 还要继续计算吗 Y N TOANSWERIFUPPER ANSWER Y LOOPELSEEXITENDIFENDDOSETTALK CTALK 接收参数语句 68 例6 34 用参数传递编程 计算圆的面积 主程序名PROG34SETTALKOFFCLEARS 0INPUT 请输入圆的半径 TORdoAREAwithr s 圆的面积为 SSETTALKONPROCEDUREAREA 计算面积的过程PARAMETERX Y 形参说明Y 3 1416 X 2RETURN 69 变量的作用域程序设计离不开变量 一个变量除了类型和取值之外 还有一个重要的属性就是它的作用域 变量的作用域指的是变量在什么范围内是有效或能够被访问的 在VF中 若以变量的作用域来分 内存变量可分为公共变量 私有变量和局部变量三类 70 1 公共变量在任何模块中都可使用的变量称为公共变量 公共变量要先建立后使用 公共变量可用PUBLIC命令建立 PUBLIC该命令的功能是建立公共的内存变量 并为它们赋初值逻辑假 F 例如 PUBLICx y s 10 建立了三个公共内存变量 简单变量x和y以及一个含10个元素的数组s 它们的初值都是 F 71 注 公共变量一旦建立就一直有效 即使程序运行结束返回到命令窗口也不会消失 只有执行CLEARMEMORY RELEASE QUIT等命令后 公共变量才被释放 在命令窗口中直接使用而由系统自动隐含建立的变量也是公共变量 72 2 局部变量局部变量只能在建立它的模块中使用 不能在上层或下层模块中使用 当建立它的模块程序运行结束时 局部变量自动释放 局部变量用LOCAL命令建立 LOCAL该命令建立指定的局部内存变量 并为它们赋初值逻辑假 F 由于LOCAL与LOCATE前四个字母相同 所以这条命令的命令动词不能缩写 局部变量也要先建立后使用 73 3 私有变量在程序中直接使用 没有通过PUBLIC和LOCAL命令事先声明 而由系统自动隐含建立的变量都是私有变量 私有变量的作用域是建立它的模块及其下属的各层模块 一旦建立它的模块程序运行结束 这些私有变量将自动清除 74 14 prgclearPUBLICX1 公共变量 在所有模块均有效x1 aaa LOCALX2 局部变量 仅在本模块有效 不能在上层或下层模块中使用 x2 bbb STORE ccc TOX3 私有变量 仅在本模块及其下属模块DOP6 X1 X1 X2 X2 X3 X3RETURN 过程P6PROCEDUREP6 主程序中 X1 X1 X3 X3RETURN 在命令窗口输入下列命令 RELEASEALL 清除所有用户定义的内存变量DO14 返回命令窗口时 x1 x1 75 6 3 6内存变量的作用域 1 全局变量全局变量是指在所有程序模块中都有效的内存变量在程序或过程中定义全局变量的语句为 格式 PUBLIC 76 说明 1 当定义多个变量时 各变量名之间用逗号隔开 2 用PUBLIC语句定义过的内存变量 在程序执行期间可以在任何层次的程序模块中使用 3 变量定义语句要放在使用此变量的语句之前 否则会出错 4 任何已经定义为全局变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论