VFP6子程序与函数1ppt课件.ppt_第1页
VFP6子程序与函数1ppt课件.ppt_第2页
VFP6子程序与函数1ppt课件.ppt_第3页
VFP6子程序与函数1ppt课件.ppt_第4页
VFP6子程序与函数1ppt课件.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

数据库应用 VFP6 0 J CompanyLogo 第二节子程序与参数传递 什么叫子程序 过程和函数 为什么需要建立 如何建立 参数是怎么样传递 利用参数的内存变量属性在子程序 过程和函数之间传递 J CompanyLogo 为什么建立子程序 过程 函数 求M N 求m n S1 1FORI 1TOMS1 S1 IENDFORS2 1FORJ 1TONS2 S2 JENDFOR S1 S2 太多重复代码 求m n S1 F M S2 F N S1 S2 S 1FORI 1TOXS S IENDFOR 子程序 过程 函数 主要内容 子程序定义调用与返回过程定义建立 调用函数定义建立 调用参数传递及作用域 J CompanyLogo 子程序的基本概念 定义子程序是相对于主程序而言的一个独立的程序文件 其建立方法与建立程序文件的方法相同 扩展名为 PRG 调用与返回调用 DO WITH 返回 RETURN TOMASTER Notice 子程序执行时直到遇到以下情况时 自动结束返回 RETURN RETRY CANCEL QUIT和子程序的末尾 J CompanyLogo 主 子程序的调用关系 递接调用关系 跨接调用关系 DEMO 书P163 图4 16 4 17 Returntomaster 4 2 1子程序 例题 例1 求三个数中的最大数 子程序例题1 PRG 分析 本题由主程序子程序例题1 PRG与子程序SUB1 PRG组成 1 子程序SUB1 PRG功能 求两个数中较大者 入口条件 变量N1与N2中存放待比较的两个数 出口状态 变量R中存放比较结果 较大者 2 主程序 子程序例题1 PRG 从键盘输入任意三个数X1 X2 X3 调用SUB1 PRG求出X1 X2中较大者 第二次再调用SUB1 PRG将此结果与X3比较 即取得最大数 4 2 1子程序 主程序代码 求三个数中的最大数SETTALKOFFINPUT 请输入第一个数 TOX1INPUT 请输入第二个数 TOX2INPUT 请输入第三个数 TOX3N1 X1N2 X2R 0DOSUB1N1 RN2 X3DOSUB1 最大数为 RSETTALKON 子程序SUB1 PRG 求两个数中的最大数IFN1 N2R N1ELSER N2ENDIFRETURN 这里使用了自然属性变量实现 因此变量N1 N2 R必须在主程序里定义并置初始值 4 2 1子程序 例2 求3 200间的素数 子程序例题2 PRG 分析 此题通过主子程序来实现 主程序通过循环逐一取3 200间的奇数存入变量M 然后调用子程序SUB2 PRG 子程序则判定主程序传送来的M值是否为素数 若是则将该素数显示出来 否则直接返回主程序 4 2 1子程序 主程序代码 求3 200间的素数SETTALKOFFCLEARM 3DOWHILEM 200I 2DOSUB2M M 2ENDDOSETTALKON 子程序SUB2 PRG 判M是否素数DOWHILEI M 1IFINT M I M IRETURNENDIFI I 1ENDDO MRETURN 这里使用了使用自然属性变量实现 因此I必须在主程序里定义并置初始值 过程 定义 1 过程与过程文件的定义 过程是一个由PROCEDURE开头 ENDPROC结尾的子程序段 过程可以将实现相对独立功能的常用代码集中在一起 供应用程序在需要时调用 过程文件 是由若干个过程构成的文件 PROCEDURE ENDPROC 注意 1 过程必须存放在一个过程文件中 2 不能把可执行的主程序代码放在过程之后 子程序存在的问题 系统打开的文件个数太多 调用子程序读磁盘的查找速度慢 过程的建立与调用 二 过程文件的建立过程文件建立方法有两种 与程序文件的创建方法相同 将过程文件的内容一行一行地输入 通过将分散的子程序加入项目管理器 再利用工具自动连编生成扩展名为APP或EXE的文件 三 过程文件的调用打开 SETPROCEDURETO关闭 SETPROCEDURETO或CLOSEPROCEDURE调用 DO WITH 注意 调用过程文件之前必须要打开过程文件 调用结束后要关闭 DEMO P164例题4 20 settalkoffclea 同学们 dop2 晚上好 settalkon procp2 早上好 dop3 下午好 endproc procp3 中午好 endproc J CompanyLogo 参数传递与作用域 主程序与子程序之间或过程与过程之间通过互相传递参数来完成整体上的操作 两种方式 1利用内存变量的作用域属性2利用DOWITH 1 利用内存变量属性传递参数 利用内存变量属性传递参数 定义格式作用范围传递方向变量寿命 自然属性 含义是指在程序 PRG 中出现的没有特别声明而只是通过赋值或数组定义的变量 特点定义格式 STORE DIMENSION DECLARE INPUT SUM等 作用范围 该程序及其调用的下属子程序 传递方向 单向 变量寿命 所在程序运行结束后 该变量被自动删除 自然属性P165例题T4 21 自然属性变量变化说明 自然属性变量的特点 在一个程序段里不能显示 使用LIST命令 在子程序里定义的自然属性的变量 也就是说 在子程序里定义的自然属性变量对父程序是不可见的 这是因为自然属性变量当所在的程序运行完毕后 被自动删除了 在子程序里可以修改父程序里定义的自然属性变量的类型和数值 公用属性 含义是指能在所有的程序中使用 并通过这种方式共享的内存变量 公用属性的内存变量必须先特别声明和定义后方能使用 公用属性的内存变量特点定义格式 PUBLIC作用范围 整个系统的所有程序 传递方向 双向 主程序 子程序 变量寿命 程序运行结束后 内存中仍然保存该变量 公有属性PublicP167例题T4 22 公有属性Public变量变化DEMO 从程序的运行结果理解公用属性变量的特点 在在一个程序段里可以显示 使用LIST命令 在子程序里定义的公用属性的变量 也就是说 在子程序里定义的公用属性变量对父程序是可见的 在子程序里可以修改父程序里定义的公用属性变量的类型和数值 在父程序里也可以修改子程序里定义的公用属性变量的类型和数值 私有属性Private 私有属性的内存变量含义 是指具有既类似自然属性又能屏蔽上级同名内存变量属性的内存变量 私有属性的内存变量也必须先特别声明后方能使用 私有属性的内存变量特点定义格式 PRIVATE ALL LIKE EXCEPT 作用范围 该程序及其调用的下属子程序 类似自然属性传递方向 单向 主程序 子程序 类似自然属性变量寿命 程序运行结束后 该变量被自动删除 特殊作用 可屏蔽 隐藏 上级 主 程序中与当前程序同名的变量 即对当前程序中变量的操作 不影响上级 主 程序中与当前程序同名的变量值 私有属性PrivateP169例题T4 23 私有属性Private变量变化DEMO 本地属性Local 本地属性的内存变量含义 是指具有既类似私有属性又不影响下属子程序中同名内存变量属性的内存变量 本地属性的内存变量必须先特别定义后方能使用 本地属性的内存变量特点定义格式 LOCAL 作用范围 该程序本身 传递方向 无 变量寿命 程序运行结束后 该变量被自动删除 特殊作用 可屏蔽 隐藏 上级 主 程序中与当前程序同名的变量 即对当前程序中变量的操作 不影响上级 主 程序中与当前程序同名的变量值 同时也不受下属子程序中同名内存变量值的影响 本地属性Local例题P171T4 24 本地属性Local变量变化范围 内存变量四种作用域属性比较 2 利用DO WITH 传递参数 优点 在不受变量名限制的情况下能达到传递参数的目的 传递参数 DOWITH接收参数 PARAMETERS注 上述两个命令必须配对使用 不能单独使用 PARAMETERS命令中的必须以内存变量的形式出现 其中的个数和位置与对应的DO WITH 命令中中的参数个数和位置相一致 都用逗号分隔 规则传递参数命令在调用子程序处 接受参数命令在子程序第一行传递方式 引用 传递参数被隐含起来 但其值随着被调用程序中接受参数的变化而变化 传值 表达式列表或单个内存变量用圆括号 参数传递为传值方式 即传递参数不被隐含 其值也不随着被调用程序中接受参数的变化而变化 利用DO WITH 传递参数 例1 引用方式传递参数 利用DO WITH 传递参数 例2传值方式传递参数 利用DO WITH 传递参数 参数引用方式与传值方式比较 eg 26 用过程实现求N 引用 自定义函数 1 定义 是一个子程序 PRG 它可以返回一个值到调用程序 2 建立 与一般的命令文件的建立方法相同 自定义函数在过程文件中的存在形式为 FUNCTION自定义函数名 语句序列 ENDFUNC 3 特点在自定义函数程序中首条命令一般为 如果没有参数传送可略 PARAMETERS在自定义函数程序中尾条命令必须为 RETURN 自定义函数的定义及调用 完整的定义格式自定义函数调用与参数传递调用 参数传递 默认为传值 DEMO 例题 P175 例题4 27自定义函数判断是否是偶数 P176 例题4 28 4 29自定义函数求三角形面积 settalkoffcleainput n ton jos n settalkonfunctionjosparaxifx 2 0return t elsereturn f endifendfunc functiontareaparaa b cif a b cand a c band b c as a b c 2mj sqrt s s a s b s c elsemj 0endifreturn

温馨提示

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

评论

0/150

提交评论