vfp中的过程与作用域ppt课件.ppt_第1页
vfp中的过程与作用域ppt课件.ppt_第2页
vfp中的过程与作用域ppt课件.ppt_第3页
vfp中的过程与作用域ppt课件.ppt_第4页
vfp中的过程与作用域ppt课件.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

7 5过程与变量的作用域 1 一 子程序与主程序的概念1 结构化程序设计方法 核心思想是程序的模块化 它可把一个大的复杂的应用程序按功能分解成若干个相对独立的模块 这些模块就叫做子程序 过程 使用时可以用一个主程序调用这些过程 2 模块化程序设计优点 1 方便开发 调试和调用 2 子模块本身可以反复被调用 可避免重复输入 3 主程序 程序执行过程中 调用其他程序的称为主程序 子程序 被主程序调用的程序称为子程序又称为过程 其概念是相对的 即子程序也可以调用其他子程序 主程序和子程序相同点 都是程序 建立方法相同 4 如何实现 可以使用子程序 过程 自定义函数来实现模块化程序设计 2 5 主程序与子程序的调用关系 主程序main prg子程序sub prg DoSub Return Return 3 6 程序调用的三种结构 1 子程序设计 即用主程序调用子程序主程序与子程序是不同的文件 2 过程 设计 即用主程序调用 过程 过程 与主程序是在同一个文件中 过程 与主程序各自在不同的文件中 4 二 子程序的建立与修改 1 建立 修改子程序ModifyCommand参数说明 子程序的建立 修改和存盘与其它VFP程序一样 用ModifyCommand命令或用菜单建立和修改 其扩展名也是 prg 子程序一定要用Return命令结束 5 2 Return命令Return ToMaster To 程序名 参数说明 Return如不作任何选项 该语句结束子程序文件的运行 返回到调用子程序的主程序的下一个语句 继续执行 选择 ToMaster 则返回到一级主程序 选择To则返回到 程序名 指定的程序 6 MAIN PRG DOSUB1 RETURN SUB1 PRG DOSUB2 RETURN SUB2 PRG RETURNTOMASTER P204 7 3 子程序的调用do 子程序文件名 主程序调用子程序后 会通过子程序中的Return命令返回到主程序调用子程序的下一条命令继续运行 说明 1 子程序是一个存储于磁盘上的独立的程序文件 调用时应指明路径 默认指当前路径 2 子程序可以被多次调用 也可以嵌套调用 8 M N sum 0p 1input 请输入一个数 toafori 1toap p inextsum sum pp 1input 请输入一个数 toafori 1toap p inextsum sum p sumreturn 9 将重复段存储在一个子程序文件中 编写主程序 在主程序中调用子程序 main prgsum 0dojcdojc sumreturn jc prgp 1input 请输入一个数 toafori 1toap p iendforsum sum preturn 10 三 过程 一个过程也是一个相对独立的程序段 它往往是主程序文件的一个组成部分 习惯上常把它写在程序的最后 11 1 新建过程 1 过程第一个语句 过程标识语句 procedure功能 开始定义过程了 2 过程中第二个接收参数语句 parameters 功能 接收从主程序中传送来的实参 其中参数必须与调用语句中参数对应 3 过程结束前要有一条返回语句 return TOMASTER 功能 过程运行结束 返回调用它的程序 如return后无表达式 则返回 T 4 endproc功能 过程运行结束 12 例1 SETTALKOFF 这是主程序 DOGC1DOGC2SETTALKONRETURNPROCEDUREGC1 这是过程1 RETURNPROCEDUREGC2 这是过程2 RETURN 13 2 过程文件 过程文件则是把多个程序段 多个过程 放在一个过程文件中 这个过程文件一旦被打开 过程文件中所有过程也被打开 1 过程文件的建立 过程文件也是一个程序文件 过程文件也是用命令MODIFYCOMMAND命令或菜单单独建立 其扩展名也是 prg 14 2 过程文件的编写格式PROCEDURE 过程名1 命令序列 RETURNPROCEDURE 过程名2 命令序列2 RETURN PROCEDURE 过程名n 命令序列n RETURN每个过程都要用PROCEDURE 过程名n 开头 15 3 过程文件的使用过程文件建立好后 进行使用 一般要经过以下几步 即打开 调用和关闭 1 过程文件的打开 在主程序中使用过程前 一定要打开过程文件 过程文件的打开命令 SETPROCEDURETO功能 打开一个过程文件 若不选择 则关闭所有的过程文件 而且Foxpro系统规定 某一时刻只能打开一个过程文件 后打开的过程文件自动关闭前面已打开的过程文件 16 2 过程文件中的过程的调用过程的调用格式 DO 过程名 功能 调用一个过程 在主程序中 一定要打开过程文件 才能用DO 过程名 来调用过程文件中的过程 3 过程文件的关闭命令格式 CLOSEPROCEDURE或 SETPROCEDURETO 17 CLEARSETPROCtoF1S 0DOP1 S 0DOP2 S 0DOP3 CLOSEPROCRETURN ProcedureP1 prgR 5S 3 14159 R R S SRETURN 主程序 ProcedureP2 prgR 5S R R S SRETURN ProcedureP3 prgR 5V R R R V VRETURN MAIN prg 过程文件F1 prg 18 例题1 把上例的两个过程放在过程文件中 MODIFYCOMMANDGCWJ1procedureGC1 这是过程1 ReturnprocedureGC2 这是过程2 Return 调用上面定义的过程文件中的两个过程 SETTALKOFF 这是主程序 setproceduretogcwj1DOGC1DOGC2closeprocedureSETTALKONRETURN 19 例题2 用过程文件调用的方法编程 使其学生档案表进行添加 修改 删除等操作 并要求能进行多次操作 USE学生档案表DOWHILE T clear 2 10SAY 0 退出 3 10SAY 1 追加记录 4 10SAY 2 修改记录 5 10SAY 3 删除记录 INPUT 请输入0 3 tokSETPROCEDURETOGCWJ2DOCASECASEK 0CANCELCASEK 1DOZJCASEK 2DOXGCASEK 3DOSCOTHERWISE ERROR ENDCASEENDDOCLOSEPROCEDUREUSE GCwj2 PRG过程文件PROCEDUREZJAPPENDRETURNPROCEDUREXGINPUT 请输入修改记录号 TONREDITRECORDNRRETURNPROCEDURESCINPUT 请输入删除录号 TONRGONRDELETERETURN 20 3 过程的参数传递 可以在过程中定义形式参数 调用过程时 再与实际参数相结合的方法来传递数据 这时 被调用的过程中的第一条可执行语句必须是参数说明语句 1 过程中的参数格式格式 PARAMETERS 形式参数表 功能 定义形式参数 说明 由不同的变量组成 参数之间用 分隔 参数表 中的变量 在过程中不必再次定义 该关键语句必须是被调用的过程中的第一条可执行语句 21 若要给过程中形式参数传递数据 必须在主程序中将实际参数包含在过程的调用命令中 带有参数的过程调用的命令格式为 格式 DO 过程名 WITH 实际参数表 功能 将 实际参数表 中的内容传递给指定 过程名 相对应的形式参数表 然后执行该过程 说明 1 实际参数表 中的参数必须与PARAMETER语句中定义的形式参数变量表的类型与次序上完全一致 形参数量 实参数量 多余的形参值为 F 2 实际参数表 中的参数可以是常量 变量和表达式 各个参数间用 分隔 2 带参数过程的调用 22 例1 编写一个求1到N的累加和的过程 并在过程中输出和 clearinput Pleaseinputn toxdoleijiawithxReturnprocedureleijiaparametersnsum 0fori 1tonsum sum iendfor sumreturn 23 例2 编写一个求圆面积的过程 在主程序中输入圆的半径 并在主程序中输出圆面积 CLEARS 0INPUT 请输入圆的半径 TONDOMJWITHN S 圆面积S SRETURNPROCEDUREMJPARAMETERSR AREAAREA 3 14159 R RRETURN执行该程序后 将输出圆的面积 主程序中变量S的值是通过参数area传递来的 24 四 自定义函数 用户自定义函数和过程其实差不多 同为一段程序 只是自定义函数必须返回一个函数值 而过程却无此限制 所以自定义函数的建立与过程编辑的方法相同 只是在最后一条的命令中 必须指出函数的返回值 25 1 自定义函数的编写格式 FUNCTION 函数名 PARAMETERS 参数表 函数体 RETURN 表达式 功能 定义一个用户自定义函数 说明 函数名 它是由字母 数字或下划线组成 必须以字母或下划线开头 但不能与系统提供的函数名同名 也不能与内存变量同名 PARAMETERS 如果向函数中传递参数 则必须用该语句定义形式参数表 各参数间用逗号隔开 RETURN 表达式 将 表达式 的值作为函数值返回到调用程序中 26 2 函数的调用 自定义函数的调用方式与系统函数的方法相同 其形式为 函数名 参数表 27 例题 用自定义函数的形式 编写程序计算圆面积 主程序SETTALKOFFCLEARINPUT 请输入圆的半径 TOAS AREA A 圆面积S SRETURN 自定义函数 AREAFUNCTIONAREA 定义函数名AREAPARAMETERSR 定义函数的形参RS 3 14159 R RRETURNS 返回函数的值 28 五 参数的传递 无论是过程 还是自定义函数 参数传递都是一个非常重要的概念 传递参数 dowith函数名 参数表 说明 写在主程序中 接受参数 parameters说明 写在过程 或者函数等 中 29 调用程序 格式1 do 文件名 with实参1 实参2 实参为常量 表达式 把值给形参 按值传递 实参为变量 把地址给形参 这时形参 实参为同一个变量 按引用 址 传递 格式2 文件名 实参1 实参2 默认按值传递 可以通过命令setudfparmstovalue reference重设参数的传递方式tovalue 按值传递 形参变实参不变 toreference 按引用传递 形参变实参也变 30 接收参数parameters 在模块中建立私有变量lparameters 在模块中建立局部变量注意 如形参 实参多余的取 F 值do with 格式不受setudfparmsto 设置的影响 变量 的形式 按值传递 当实参为数组元素 按值传递 实参为数组名时 若按值传递 数组第一个元素值传给形参 若按引用传递 则传递整个数组 P206例 7 25 7 26 31 六 变量的作用域 1 定义 变量在什么范围内是有效的 能被访问的 2 内存变量可分为公共变量 私有变量 局部变量三种 公共变量 public内存变量名表建立后一直有效 在命令窗口中也有效 在执行了clearmemory release quit后才无效 私有变量 使用赋值语句 store to 建立的变量 建立后在建立它的模块和下级模块中有效 本层模块运行结束 自动被清除 局部变量 local内存变量名表建立后只能在本层使用的 不能在上下层中使用 以main和sub2为例进行说明 32 3 主程序和子程序中变量相同时 为防止 子 改变 主 的取值 可在子程序中隐藏主程序中的变量 使某些变量在当前暂时无效 格式 private内存变量名表privateall like except 4 private和local区别 private隐藏上层变量 使这些变量在当前模块和下级模块中无效 不会把下层的值带到上层 local隐藏上层变量 只在本层隐藏 到下层还出现 把下层的值带到上层 5 以main1和p7为例说明 33 各类变量作用域 34 七 程序调试 1 定义 在发现程序有错误的情况下 确定出错的位置并纠正错误 关键是要确定出错的位置 2 方法

温馨提示

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

评论

0/150

提交评论