第六章程序设计20100601_第1页
第六章程序设计20100601_第2页
第六章程序设计20100601_第3页
第六章程序设计20100601_第4页
第六章程序设计20100601_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第六章程序设计 6 1程序文件的建立与运行6 1 1程序文件的建立1 命令方式建立程序文件格式 MODIFYCOMMAND 功能 打开程序编辑窗口 从中可以修改或创建程序文件 2 程序文件的保存 打开 1 程序文件的保存Ctrl W 2 程序文件的打开MODIFYCOMMAND 6 1 2程序的运行格式 DO6 2交互式的输入命令1 字符型数据输入命令ACCEPT格式 ACCEPT TO功能 暂停程序的执行 等待用户输入一个字符串给变量 例 编一程序 将人事数据表打开 在程序运行中输入人员姓名 显示指定姓名的人员记录 步骤1 在命令窗口里输入命令 MODIFYCOMMANDCX1步骤2 在打开的程序窗口里输入如下语句 NOTE该程序查找指定姓名的人员信息 CLEARUSErsbACCEPT 请输入要查找的姓名 TOnameLOCATEFORALLTRIM 姓名 nameDISPLAY步骤3 按Ctrl W保存该程序 步骤4 运行程序 在命令窗口里输入 DOCX1 说明 a 用户可输入任何一个合法的数值型 N 字符型 C 日期型 D 逻辑型 L 表达式 系统先计算表达式的值并将该值赋值给内存变量 b 如果输入字符串信息 则必须加上双引号或单引号定界符 如 ABC c 按Enter键结束输入 2 表达式输入命令INPUT格式 INPUT TO功能 暂停程序的执行 接受用户输入合法表达式并将表达式的值赋值给内存变量 例 已知圆半径为r 求圆面积s 要求四舍五入保留三位小数 程序如下 该程序用于计算指定半径的圆的面积 CLEARINPUT 请输入圆半径r TOrs ROUND PI r 2 3 ROUND为四舍五入函数 该圆半径为 r 该圆面积为 s 3 程序暂停 等待 接收单字符命令WAIT格式 WAIT TO 例 按职称查询库中的记录 用WAIT命令实现单字符的输入 ACCEPT 请输入表名 TOKUSE KACCEPT 请输入职称 TOZCLOCATEFOR职称 ZC 姓名 职称WAIT 还查询吗 Y N TOpIFUPPER p Y CONTINUE 例 中途暂停 ACCEPT 请输入库名 TOKUSE KListnext3SkipWaitListnext3Wait 说明 a GET子句用来在屏幕上输入指定变量的值 且必须与READ命令配套使用 带有GET子句如果不与READ命令配套使用 则指定的变量不能被输入数据 这里的变量应该预先赋初值或用DEFAULT为其赋初值 b RANGE 子句用来规定由GET子句输入的数值型或日期型数据的上下界 c VALID子句用来规定GET子句输入的变量值所需符合的条件 以检测在READ操作时由键盘输入数据的合法性 4 定位输出与输入命令格式 SAY GET DEFAULT RANGE VALID 功能 在屏幕上指定行 列位置输出指定表达式的值 并可获得所指定变量的值 例 将人事数据表打开 新增加一条记录并输入部分字段内容 增加完成后在浏览窗口显示数据表记录内容 该程序如下 CLEARUSErsbAPPENDBLANK 3 8SAY 请输入新职工信息 4 8SAY 姓名 GET姓名 5 8SAY 性别 GET性别VALID性别 男女 6 8SAY 基本工资 GET基本工资RANGE500 2500READBROWSE 6 3程序的控制结构 程序设计包括三种基本结构 即顺序结构 选择结构 循环结构 6 3 1选择结构 1 单分支结构格式 IF 命令序列 ENDIF 例 铁路托运行李 按规定每张客票托运行李不超过50公斤时 每公斤0 25元 如超过50公斤 超过部分按每公斤0 45元计算 编写一个程序 把行李重量输入计算机 计算出运费 分析 设行李重量为W公斤 应付运费为P元 则p 0 25 w当W 50p 50 0 25 w 50 0 45当W 50程序如下 NOTE计算铁路托运行李费 W为行李重量 P为运费 CLEARINPUT 请输入行李重量 TOwP 0 25 wIFw 50P 50 0 25 w 50 0 45ENDIF 行李重量为 w 应付运费为 p 2 双分支结构 格式 IF 命令序列1 ELSE 命令序列2 ENDIF 例 设出租车不超过2 5公里时一律收费5元钱 超过时则超过部分每公里加收2 6元 试根据里程数编程计算并显示应付车费 INPUT 请输入里程数 TOlcIFlc 2 5cf 5ELSEcf 5 lc 2 5 2 6ENDIF 车费为 cf 格式 DOCASECASECASE CASE OTHERWISE ENDCASE 3 多分支选择结构 INPUT 输入您的选择 1 4 TOSELDOCASECASESEL 1APPENDCASESEL 2BROWSECASESEL 3INSERTBEFORECASESEL 4INPUT 输入删除的记录号 TONGOTONDELETEPACKOTHERWISE 输入错误 endcase 6 3 2循环结构 1 当型循环结构格式 DOWHILE LOOP EXIT ENDDO 例 利用循环语句计算并显示X 1 2 3 N的值 N的值由键盘输入 Input n tonX 0I 1DowhileI nX x II I 1Enddo x x 例 利用循环语句计算并显示X 1 3 5 N的奇数之和 奇数N的值由键盘输入 例 求N的阶乘N 1 2 3 4 N 例 有如下程序 STORE2TOS KDOWHILES 14S S KK K 2ENDDO S K此程序运行后的输出结果是 例 运行下列程序后 语句 123 被执行的次数是 I 0DOWHILEI 10IFINT I 2 I 2 123 EDNIF ABC I I 1ENDDO 例 有如下程序 DIMENSIONK 2 3 I 1DOWHILEI 2J 1DOWHILEJ 3K I J I J K I J J J 1ENDDO I I 1ENDDO运行此程序的结果是 例 逐个显示RSB中的记录 USETEACHERDOWHILE NOT EOF DispWaitSKIPEnddo 例 显示rsb表中的男教师 USErsbDOWHILE NOT EOF IF性别 女 SKIPLOOPENDIFDISPLAYSKIPEnddo USErsbDOWHILE NOT EOF IF性别 男 dispENDIFSKIPEnddo 例 强制退出循环语句EXIT x 0i 1Dowhile t Ifi 100ExitEndifx x ii i 1Enddo x 2 步长型循环结构格式 FOR TO STEP 命令序列 ENDFOR NEXT 说明 a 执行过程是 首先将初值赋值给循环变量 然后判断循环变量的值是否超过终值 不超过就执行循环体 遇到ENDFOR或NEXT语句 自动使循环变量增加一个步长值 再将循环变量的值与终值比较 如果循环变量的值超过终值则转去执行ENDFOR或NEXT语句后面的第一条语句 b 在循环体内的适当位置也可以放置EXIT和LOOP语句 作用和用法与当型循环结构类似 例 求1 2 3 99 100的值 CLEARs 0FORi 1TO100s s iENDFOR 1 100自然数累加和是 s 3 表扫描循环结构格式 SCAN FOR WHILE 命令序列 ENDSCAN说明 a 它的功能是 对当前打开的数据表中指定范围内符合条件的记录 逐个进行所规定的操作 如果缺省范围和条件子句时 则对所有记录逐个进行规定的操作 b 表扫描型循环结构每循环一遍 记录指针自动移动到下一条记录 不需要设置SKIP语句 例 将RSB中基本工资小于1000的姓名 基本工资两个字段输出 并统计这些职工的人数 CLEARUSErsbn 0SCANFOR基本工资 1000 姓名 基本工资n n 1ENDSCAN 基本工资在1000元以下的人数有 STR N 2 人 7 3子程序 7 3 1子程序能够完成一定功能的可供其它程序使用 调用 的独立程序段称为子程序 1 子程序的建立建立子程序的方法与以前我们建立程序的方法类似 但子程序的末尾需有一条语句 RETURN TOMASTER 例 建立子程序sub1 prg 8 return 例 建立子程序sub2 prg 9 return 2 子程序的调用格式 DO with 例 dosub1 dosub2 子程序mj如下 parametersl w mama l wreturn 主程序如下 area 0domjwith6 4 area area 有如下的程序 主程序ZZ PRG子程序Z1 PRG子程序Z2 PRGSTORE2TOX1 X2 X3X2 X2 1X3 X3 1X1 X1 1DOZ2RETUTOMASTERDOZ1 X1 X2 X3 X1 X2 X3RETURN用命令DOZZ执行程序后 屏幕显示的结果是 自定义函数 1 独立用户定义函数实际上独立用户定义函数就是带参数传递的子程序 差别仅仅是用户定义函数的最后一条RETURN语句后有表达式 以及调用的方式不同 格式 PARAMETERS 命令序列 RETURN 说明 a PARAMETERS 接受函数运行时传递过来的数据 b 命令序列 用于进行各种处理的命令组合 简单的函数也可以为空 例 定义一个计算求立方数的函数 1 创建函数ModicommlfsPARAMETERSvRETURNv v v 2 在程序中调用函数CLEARFORi 1TO10 i lfs i ENDFOR 2 依附用户定义函数依附用户定义函数不能作为一个独立的程序文件 它以FUNCTION开头 依附在某程序的后面 格式 FUNCTION PARAMETERS 命令序列 RETURN 例 用依附定义函数编写求1 10的立方数 CLEARFORi 1TO10 i lfs1 i ENDFORFUNCTIONlfs1PARAMETERSvRETURNv v v 例 要求用键盘输入命令input输入m和n的值 然后用调用依附函数的形式计算m n Input 请输入m tomInput 请输入n tonS jc m jc n sFunctionjcParametersjf 1Fori 1tojstep1f f IEndforReturnf 7 3 2过程把多个子程序合并成一个大的文件 在该文件中 每个子程序仍然是独立的 这个大的公用程序文件被称作过程文件 其中的每个子程序模块成为过程 由于过程文件是集中起来以一个文件的形式存储在磁盘上的 调用时作为一个文件一次打开 每个子过程可随时调用 从而大大减少了访问磁盘的次数 可提高程序运行效率 一 过程文件的建立与程序的建立方式相同 过程的格式 PROCEDURERETURN 二 过程文件的使用1 过程文件的打开SETPROCEDURETO2 过程的调用do3 过程文件的关闭SETPROCEDURETO或closePROCEDURE 例 modifycommandgc123PROCEDUREsub1 8 RETURNPROCEDUREsub2 9 RETURN 主程序main prgSETPROCEDURETOgc123 dosub1 dosub2SETPROCEDURETO 7 4变量的作用域 根据变量作用的范围 可将变量分为公共变量 私有变量 1 公共变量在任何模块中都能使用的变量称为公共变量 也称为全局变量 定义格式 PUBLIC说明 a 由指定的所有变量为公共变量 b 在命令窗口里定义的变量都是公共变量 c 程序终止时 公共变量不会自动清除 需要用CLEARALL或者RELEASEALL命令清除 2 私有变量程序中使用的内存变量 凡未经特殊说明的均属于私有变量 这些内存变量可以在本级程序及以下各级子程序中使用 其值可以在子程序中改变 返回主程序时保留改变后的值 下级程序的私有变量在返回上级程序后自动释放 子程序文件subl PRGPUBLICX1 X2X1 1X2 Y X3 12345dispmemoRETURN 主程序bl PR

温馨提示

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

评论

0/150

提交评论