第4章 过程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.3.1 标准模块 标准模块中保存的过程都是通用过程。此前,我们将窗体中通用过程写在该窗体通用部分,现在,可以考虑将这些通用过程都写在标准模块中。 1.创建标准模块 单击下拉菜单“工程”中的“添加模块”选项,系统显示如图4-3所示。再选择“新建”选项卡,显示标准模块窗口,如图4-4所示为一个写入了两个通用过程的标准模块窗口。 2.跨模块调用 我们可以将通用过程写在窗体的通用部分,也可以将一些通用过程写在标准模块中,哪些通用过程可以在不同模块、窗体中被调用呢? (1) 用关键字Private修饰的通用过程,只能被本模块中调用。 譬如,在Form1中以Private修饰的通用过程,只能被该窗体中的事件过程调用;如图4-3(b)所定义的标准过程x2,只能被该模块所调用。 (2) 在标准模块中,用关键字Public修饰的通用过程,可以被工程中所有模块调用。 (3) 某窗体中、用关键字Public修饰的通用过程,必须标明窗体名称才可以被工程中所有其他模块调用。 4.3.2 变量作用域 变量按作用域分,可分为局部量、模块级量和全局量3种。 1.局部量 在事件、函数、Sub过程中声明的变量(包括数组)、或用Const语句声明的符号常量是局部量。局部量的作用域限于它们所在的过程,而不能被其他过程引用。 如:在例4-10中,函数过程delkg、命令过程Command1中都声明了变量i,它们是不同的变量、作用域局限于各自所在的过程。 如果在函数过程delkg中对变量i不作显式声明,该过程中的i也是局部量,因为在该窗体的代码窗口中没有声明模块级的变量i,是变体类型的局部量。 2.模块级量 在模块的通用对象声明部分,没有用Public声明的变量(包括数组)、符号常量是模块级量。模块级量的作用域限于它们所在的模块,不能被其他模块的过程引用。 3.全局量 在模块的通用对象声明部分,用Public语句声明的变量、符号常量是全局量。全局量可以在整个工程中被引用,其他窗体引用时,在变量名或符号常量名前,必须指出窗体名称。 例如,在窗体Form1中的语句“x = Form2.k”,所引用的变量k必定是在窗体Form2的代码窗口中、通用模块部分、用Public声明的全局变量,否则不可以跨窗体引用。 数组、定长字符串不可以用Public声明。 4.3.3 变量生存期 从变量的作用空间来说,变量有作用域之分。 从变量的作用时间来说,变量有生存期之分。根据变量在程序运行期间的生命周期,把变量分为静态变量(Static)和动态变量(Dynamic)。 1.动态变量 动态变量是指程序运行进入变量所在的过程时,才分配给该变量内存空间,退出该过程时,变量所占的内存空间自动释放,其值消失。 使用Dim语句在过程中声明的局部变量就属于动态变量,在过程执行结束后,变量的值不被保留,在每一次重新执行过程时,变量重新声明并分配存储空间。 2.静态变量 静态变量是指程序运行期间虽然退出变量所在的过程,其值仍被保留的变量,即变量所占的内存空间没有释放。当以后再次进入该过程时,继续使用变量的值。 使用Static语句在过程中声明的局部变量就属于静态变量。静态变量只能在过程中声明,而不能在通用对象声明部分声明。 为使过程中所有的局部变量都为静态变量,可在过程头部加上关键字Static。如: Private Static Sub aa() 这样,在Sub过程aa中,无论用Static、Dim或Private声明的变量,还是隐式声明的变量,都成为静态变量。 函数过程、自定义过程均可以在过程头部加上关键字Static,不再赘述。 Private Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function Private Sub Form_Click() Print “fac(4)=”;fac(4) End Sub 程序的递归过程: 刨屏沈骗珊布铂矩礼绵捡韩长摆竖室懦轿经膳硅桥逢骤奴统枷册教嘿漾绵第4章 过程第4章 过程 说明: 递归处理一般用栈来实现,分递推和回归两个过程,如上图所示。 递推过程:每调用一次自身,把当前参数(形参、局部变量、返回地址等)压入栈,直到递归结束条件成立。 回归过程:然后从栈中弹出当前参数,直到栈空。 递归算法设计简单,解决同一问题,使用递归算法消耗的机时和占据的内存空间要比使用非递归算法大。 使用递归算法必须要满足以下的递归条件: (1)

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档