计算机应用基础-VB课件--过---程PPT课件.ppt_第1页
计算机应用基础-VB课件--过---程PPT课件.ppt_第2页
计算机应用基础-VB课件--过---程PPT课件.ppt_第3页
计算机应用基础-VB课件--过---程PPT课件.ppt_第4页
计算机应用基础-VB课件--过---程PPT课件.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

过程的定义 过程的调用 数组参数的传递送 变量与过程的作用范围的作用范围 嵌套及递归调用 1 5过程 1 引例编写一个两个数交换的过程供多次调用 Swap x y 子过程的定义主调程序调用Swap子过程PublicSubSwap x y PrivateSubForm Click DimtDima bt xa 10 x yb 20y tCallSwap a b EndSubPrint a a b bEndSub 一 过程的定义 将程序分割成较小的逻辑部件就可以简化程序设计任务 称这些部件为过程 它们可以变成增强和扩展VisualBasic的构件 VB中有两类过程 一类是内部过程 另 类是外部过程 每 类过程又可分为函数过程和事件过程 内部过程是由系统提供的 不需要用户编写 可直接用过程名调用的程序段 外部过程是由用户根据自己的需要定义和编写的 可供事件过程多次调用的程序段 过程的使用 一方面将大的程序分成离散的逻辑单元 方便程序的调试 另一方面 方便了其他的程序或过程的调用 1 利用 添加过程 对话框定义 图7 1 添加过程 对话框 1 选择 工具 菜单中的 添加过程 命令 打开 添加过程 对话框 如图7 1所示 2 按图设置名称 类型及范围 操作提示 2 直接在代码窗口定义在窗体或标准模块的代码窗口之外 输入Sub子过程名或Function函数过程即可 函数过程的语法格式为 Public Private Friend Static Function As 函数过程名 ExitFunction EndFunction 子过程的语法格式为 Private Public Friend Static Sub ExitSub EndSub 二 过程的调用 1 Sub过程的调用 使用Call语句调用过程Call语句的格式为 Call过程名 将过程名作为语句使用如果省略Call关键字而直接将过程名作为语句使用 也必须省略外面的括号 函数过程的调用使用Call语句调用Function过程同Sub过程一样 同样可以使用Call语句调用Function过程 这时的Function过程返回值的过程实质上相当于Sub过程 调用后 将返回所有在参数列表中列出的参数的值 使用函数名过程调用Function过程与Sub过程不同 不能单独将Function过程作为一个语句使用 3 编程举例例7 1 分别用函数过程和 ub过程编写求三角形的面积的程序 说明 边长从三个文本框中输入 如果符合构成三角形的条件 则调用该过程计算面积 PrivateFunctiontriarea xAsDouble yAsDouble zAsDouble asdoubleDimsAsDouble areaAsDoubles x y z 2area Sqr s x s y s z s triarea areaEndFunctionPrivateSubCommand1 Click DimaAsDouble bAsDouble cAsDouble sAsDoublea Val Text1 Text b Val Text2 Text c Val Text3 Text Ifa b cAndb c aAndc a bThenPicture1 Print 面积 triarea a b c elsePicture1 Print 不能构成三角形 endifEndSub 定义函数过程triarea 调用函数triarea PrivateSubtriarea areaAsDouble xAsDouble yAsDouble zAsDouble DimsAsDoubles x y z 2area Sqr s x s y s z s EndSubPrivateSubCommand1 Click DimaAsDouble bAsDouble cAsDouble sAsDoublea Val Text1 Text b Val Text2 Text c Val Text3 Text Ifa b cAndb c aAndc a bThenCalltriarea s a b c 使用Call关键字 实际参数用括号括起来Picture1 Print 面积 sElsePicture1 Print 不能构成三角形 EndIfEndSub 定义sub过程triarea 调用过程triarea Sub过程和Function函数过程中的中的参数称为形式参数 简称形参 在程序中调用Sub过程和Function函数过程时中称为实际参数 过程调用的过程 就是实参与形参结合的过程 三 参数传送 1 按位置传送按位置传送就是实参的次序与形参的次序应匹配 位置次序一一对应 如在例7 1中实参与形参按址结合的示意图见图7 2 图7 2实参与形参按址结合的示意图 1 形参与实参的传送方式 2 指名传送指名传送就是显式地指出与形参相结合的实参 将形参与实参用 连接起来 这样 就不必要求形参与实参按位置次序一一对应 如Callmysub a b 王大虎 d 与Callmysub x a yarray b zstr 王大虎 w d 以及Callmysub yarray b x a w d zstr 王大虎 是等价的 1 传址vb在参数传递过程中 将实参的地址传送给被调用过程的形参 使形参与实参具有相同的地址 从而达到实参与形参共享存储单元 在VB中 默认情况下实参与形参是按传址方式传递数据的 1 5 2传址与传值 PrivateSubtriarea areaAsDouble xAsDouble yAsDouble zAsDouble DimsAsDoubles x y z 2area Sqr s x s y s z s x 100 y 200 z 150EndSub说明 在过程体中修改形参x y z则对应的实参a b c分别改变为100 200 150 2 传值传值就是通过传送实参的值而不是传送地址的方法给被调用过程中的形参 系统把需要传送的实参复制到一个临时单元中 然后再把该临时的地址传送给形参 这样 被调用的过程并没有访问实参的地址 因而也就不会改变实参的值 在VB中 区分传址与传值的标志为 传值时 在形参前加上ByVal 传址时 在形参前加上ByDef或者是默认 3 传送方式的选择传址方式的效率比传值要高 但形参并不是一个真正的局部变量 有可能对程序的运行产生干扰 传值方式的效率虽然较低 但形参是一个真正的局部变量 不会对程序的运行产生干扰 实参为数组时 参数传送采用 按地址传送 方式 下面通过一个例子来说明 例7 求数组元素的和 sumsEndSub 函数过程 PublicFunctionsum p Dimm n Form LBound p 1 ToUBound p 1 Forn LBound p 2 ToUBound p 2 sum sum p m n NextnNextmEndFunction 1 5 4 过程的作用域 1 Vb工程文件的组成 四 变量与过程的作用范围 窗体 模块级过程 在某个窗体或标准模块中定义的Sub过程或函数过程前加上Private关键字 则该过程只能被包含过程的窗体或标准模块中的过程调用 全局级过程 在某个窗体或标准模块中定义的Sub过程或函数过程前加上Pulbic关键字或缺省 则该过程为全局级过程 可以被应用程序的所有窗体或标准模块中的过程调用 private public public private private public public private private public public private private public public private Vb应用程序 窗体模块 标准模块 FUNCTION SUB 注意 跨窗体或跨模块调用全局过程时需加过程名如 callform2 sub2callmodule2 sub1 过程作用域图示 1 5 4 2变量的作用域 1 局部变量 动态变量 局部变量是只能在一个函数或过程中访问的变量 其他过程或函数不能访问此变量的数据 2 窗体 模块级变量 窗体 模块级变量是指在一个窗体 模块的任何过程之外 即在 通用声明 段中用Dim或Private语句声明的变量 3 全局变量 全局变量是指在一个模块的任何过程之外声明的变量 即在 通用声明 段中用Public语句声明的变量 Vb应用程序 窗体模块 标准模块 FUNCTION SUB FUNCTION SUB FUNCTION SUB FUNCTION SUB 声明部分 声明部分 声明部分 声明部分 Privatexasinteger或Dimxasinteger publicxasinteger Privatexasinteger或Dimxasinteger dim dim dim dim 变量作用域图示 1 5 4 3变量的生存期 1 动态变量动态变量指程序执行到变量所在的过程时 系统才根据变量的类型给分配存储单元 程序执行退出过程后 该变量所分配的存储单元被释放 变量的值不保留 Static As StaticFunction As StaticSub 在过程名前加上Static关键字 表明该过程的变量都是静态变量 2 静态变量静态变量指程序执行退出过程后 该变量所分配的存储单元不被释放 变量的值仍保留 再次执行该过程时 静态变量的值仍然存在 可以继续使用 其定义形式如下 例7 3 下面程序中有三个同名的变量wv 通过三次运行看结果的变化 PublicwvAsIntegerPrivateSubCommand1 Click DimwvAsIntegerwv wv 3CallwholesubPrint Command1事件过程的wv wv 全局的wv Form1 wvEndSubPublicSubwholesub StaticwvAsIntegerwv wv 1Form1 wv wv 5Print wholesub过程的wv wv 全局的wv Form1 wvEndSubPrivateSubForm Load wv 1EndSub 点击三次command1后的运行结果如下 五 嵌套及递归调用 1 过程的嵌套调用 Callsub1 Callsub2 sub1 sub2 图示说明了嵌套调用的过程 通俗地讲 递归就是一个过程调用过程本身 在递归调用中 一个过程执行的某一步可能要用到它自身上面调用的结果 递归分为两种类型 一种是直接递归 即在过程中调用过程本身 种是间接递归 即间接地调用一个过程 2 递归调用 Callsub2 sub1 sub2 Callsub1 Callsub1 sub1 间接 直接 例 求阶乘Factorial n n 的函数 本例求170内的阶乘 PrivateSubCommand1 Click DimmynAsDoublemyn InputBox 请输入小于171的数 Ifmyn 0ThenPrintmynfactorial myn EndIfEndSubPublicFunctionfactorial nAsDouble AsDoubleIfn 1Thenfactorial n factorial n 1 Elsefactorial 1EndIfEndFunction 例7 1分别编一计算某级数部分和的子过程和函数过程 并调用 级数为 精度为 函数过程实现求部分级数和Functionjishu1 x eps AsDou

温馨提示

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

最新文档

评论

0/150

提交评论