好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[工学]第8讲第8章 过程.ppt

41页
  • 卖家[上传人]:油条
  • 文档编号:49640327
  • 上传时间:2018-08-01
  • 文档格式:PPT
  • 文档大小:347KB
  • / 41 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一、学习目的与要求:能比较熟练调试及编写综 合程序及过程文件的建立与调用二、重点:过程文件的建立与调用三、难点:变量的作用域四、教学工具:投影仪、计算机五、教学方法:讲授、演示六、教学内容:第八讲第三节 过程的模块化结构化程序设计方法要求将一个大的系统分解成若干个 子系统,每个子系统就构成一个程序模块模块是一个相对 独立的程序段,它可以为其他模块所调用,也可以去调用其 他模块将一个应用程序划分成一个个功能相对简单、单一 的模块程序,不仅有利于程序的开发,也有利于程序的阅读 和维护VFP模块化在具体实现上提供三种形式,它们是子 程序、过程和函数 主程序与子程序调用关系示意图 一、子程序一、子程序子程序也叫外部过程,是以程序文件(.PRG)的形式单 独存储在磁盘上子程序只需录入一次,就可反复被调用执 行 1.子程序的结构在VFP中,子程序的结构与一般的程序文件一样,可以 用MODIFY COMMAND命令来建立、修改、和存盘,扩展名也默 认为.PRG子程序与其他程序文件的唯一区别是其末尾或返回处必 须有返回语句RETURN 【语句格式】RETURN [TO MASTER|TO 程序文件名|表达式]【语句功能】该命令中止一个程序、过程、或用户自定义函 数的执行,返回上一级调用程序、最高级调用程序、另外一 个程序或命令窗口。

      【语句说明】 (1)通常程序执行到RETURN时,会自动返回到上级调用程序调 用语句的下一条语句继续执行如果是在最高一级主程序中 ,则返回命令窗口 (2)选用TO MASTER 子句时,则返回最高一级调用程序,即在 命令窗口下,调用的第一个主程序 (3)TO 程序文件名表示程序将转向到指定的程序 (4)如选用表达式,表示将表达式的值返回调用程序,通常用 于自定义函数 (5) 在程序最后,如果没有RETURN命令,则程序运 行完毕后,将自动默认执行一个RETURN命令,但过程文件除 外 2.子程序的调用: 【语句格式】DO |[WITH 参数表]【语句功能】执行以或为名的过程 语句说明】 WITH参数表子句用来指定传递到程序或过程 的参数,在参数表中列出的参数可以是表达式、内存变量、 常量、字段名或用户自定义函数,各参数间用逗号分隔例6-20】分别建立如下程序文件 MAIN.PRG SET TALK OFF? ”正在执行主程序”DO SUB1SET TALK ON*SUB1.PRG ? ”正在执行SUB1”RETURN【例1】利用子程序方法求M!/(N!*(M-N)!)(M>N) *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二、过程二、过程( (内部内部) ) 内部过程:把多个过程组织在一个文件中(这个文件称之为过 程文件),或者把过程放在调用它的程序文件的末尾。

      Visual FoxPro为了识别过程文件或者程序文件中的不同过 程,规定过程文件或者程序文件中的过程必须用PROCEDURE语 句说明其格式为:PROCEDURE [PARAMETER ] [RETURN []] 过程有两种存放方式: (1)把所有的过程集中写入一个被称为过程文件(.prg文件) 的磁盘文件中 (2)直接把过程写在调用它的主程序文件中,主程序被打开时 , 过程同时被调入内存 1.过过程写在过过程文件里主程序与过程的相互关系如下图所示调用过程之前,首先要打开存放该过 程的过程文件, 任何时候只能打开一个过程文件打开过程文件的命令: SET PROCEDURE TO 关闭过 程文件的命令:SET PROCEDURE TO 或用: CLOSE PROCEDURE 2.过程与主程序写在同一个程序文件里主程序与过程的相互关系如下图所示过程和子程序都是用DO来调用,当出现了同名的过 程和子程序时,调用的顺序首先从过程与主程序在同一文件 中调用,其次从过程文件中调用,最后从子程序中调用 【例2】建立如下程序文件,过程放在程序文件中 MAIN.PRG SET TALK OFF? ”正在执行主程序”DO SUB1SET TALK ONProcedure SUB1? ”正在执行SUB1”RETURN【例3】请考察下述程序运行流向,求出正确运行结果。

      *prog3.prg CLEAR STORE 2 TO I,C,T DO WHILE I命令或调用其他文 字编辑软件来建立过程文件的结构一般为:PROCEDURE RETURNPROCEDURE RETURN…PROCEDURE RETURN1.过程文件的打开调用某过程文件中的过程时,必须先打开该过程 文件,打开过程文件命令为:【格式】SET PROCEDURE TO 任何时候系统只能打开一个过程文件,当打开 一个新的过程文件时,原已打开的过程文件自动关 闭 2.过程文件的关闭关闭过程文件可用下列命令:【格式一】SET PROCEDURE TO【格式二】CLOSE PROCEDURE 【例4】用过程文件实现对STUDENT数据库的STUD表进 行查询、删除和插入操作 主程序如下: * PROG4 && 主程序文件名 SET TALK OFF CLEAR SET PROCEDURE TO PROCE && 打开过程文 USE STUD INDEX ON 姓名 TO XM DO WHILE .T. && 显示菜单 CLEAR @ 2,20 SAY “学籍管理系统” @ 4,20 SAY “A:按姓名查询” @ 6,20 SAY “B:按记录号删除”@ 8,20 SAY “C:插入新的记录 ” @ 10,20 SAY “D:退出” CHOISE=” ” @ 12,20 SAY ”请选择 A、B、C、D:” GET CHOISE READ DO CASECASE CHOISE=”A”DO PROCE1CASE CHOISE=”B”DO PROCE2 CASE CHOISE=”C”DO PROCE3CASE CHOISE=”D”EXIT ENDCASE ENDDO SET PROCEDURE TO && 关闭过 程文件 use SET TALK ON 过程文件如下: *PROCE.PRG && 过程文件名 PROCEDURE PROCE1 && 查询过程 CLEAR ACCEPT ”请输入姓名:” TO NAME SEEK NAME IF FOUND()DISPLAY ELSE? ”查无此人” ENDIF WAIT RETURN PROCEDURE PROCE2 && 删除记录过 程 CLEAR INPUT ”请输 入要删除的记录 号:” TO N GO N DELETE WAIT ”物理删除吗Y/N:” TO FLAG IF FLAG=”Y” .OR. ”y” PACK ENDIF RETURNPROCEDURE PROCE3 && 插入新的记录过 程 CLEAR APPEND RETURN四、自定义函数四、自定义函数自定义函数和过程一样,可以以独立的程序文件形式单 独存储在磁盘上,也可以放在过程文件或直接放在程序文件 中。

      自定义函数具有如下语法结构:FUNCTION PARAMETER RETURN 自定义函数的调用语法与系统函数的调用相同和过程 一样,自定义函数可以是常规程序文件的一部分,也可以是 独立的程序文件不同的是调用过程或子程序使用DO命令, 调用函数名称后面加上括号注意:函数不是命令,函数调 用只能出现在表达式中 【例5】计算圆面积 *PROG5.PRG SET TALK OFF CLEAR INPUT ”请输入圆的半径:” TO R ? ”圆的面积为:”,AREA(R) SET TALK ONFUNCTION AREA && 计算面积的函数 PARAMETER X && 形参说明 RETURN (3.1416*X**2)五、过程调用中的参数传递五、过程调用中的参数传递 1.有参过程中的形式参数定义有参过程中的形式参数定义语句为:【格式】PARAMETERS 该语句必需是过程中第一条语句中的参数可以是任意合法的内存变量名 2.程序与被调用过程间的参数传递程序与被调用过程间的参数传递是通过过程调 用语句DO WITH 中WITH 子 句来实现的说明】 (1)DO命令中参数称为实际参数,PARAMATERS命令中的参数称为形式参数。

      两个中的参数必 须相容,即个数相同,类型和位置一一对应; (2)实际参数可以是任意合法表达式,形式参数是过程中的 局部变量,用来接收对应实际参数的值; (3)Visual FoxPro的参数传递规则为:如果实际参数是常数 或表达式则传值,如果实际参数是变量则传址,即传递的不 是实参变量的值而是实参变量的地址,这样,过程中对形参 变量值的改变也将使实参变量值改变如果实参是内存变量 而又希望进行值传递,可以用圆括号将该内存变量括起来, 强制该变量以值方式传递数据 【例6】用参数传递编程,计算圆的面积 * 主程序名PROG6.PRG SET TALK OFF CLEAR S=0 INPUT ”请输入圆的半径:” TO R DO AREA WITH R,S ? ”圆的面积为:”,S SET TALK ONPROCEDURE AREA && 计算面积的过程 PARAMETER X,Y && 形参说明 Y=3.1416*X**2 RETURN六、变量的作用域六、变量的作用域 1.公共(全局)变量公共变量是指在所有程序模块中都有效的内存变量 在程序或过程中定义公共变量的语句为: 【格式】PUBLIC 该命令的功能是建立公共变量,并为它们赋初值为逻辑假 .F. 例如,PUBLIC a,b,c(5)建立了三个公共内存变量,它们的初 值都是.F. 在命令窗口直接使用的内存变量(不必用PUBLIC定义)都是 全局变量。

      【说明】 (1)当定义多个变量时,各变量名之间用逗号隔开; (2)用PUBLIC语句定义过的内存变量,在程序执行 期间 可以在任何层次的程序模块中使用; (3)变量定义语句要放在使用此变量的语句之前,否 则 会出错; (4)任何已经定义为全局变量的变量,可以用 PUBLIC语句再定义,但不允许重新定义为局部 变量; (5)使用全局变量可以增强模块间的通信,但会降低 模 块间的独立性 2.私有变量在程序中直接使用(没有通过PUBLIC和LOCAL命令 事先声明)而由系统自动隐含建立的变量都是私有变量 私有变量的作用域是建立它的模块及其下属各层模块 ,一旦建立它的模块运行结束,这些私有变量将自动清 除 3.局部变量局部变量只能在定义它的模块中使用,不能在上层 或下层模块中使用当定义它的模块运行结束时,局部 变量自动释放局部变量用LOCAL命令建立:【格式】LOCAL 【功能】该命令建立指定的局部内存变量,并为它们赋初 值为逻辑假.F.例6-28】分析下面程序中变量的作用域 *prog28.prg PUBLIC x1 &&建立公共变量X1 LOCAL x2 &&建立局部变量X2 STORE “f“ TO x。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.