Visual Basic第6章 过程.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文档。上传文档
查看更多
6.3 参数传递 例如: Private Sub MySub(ByVal a%, b%, ByRef c%) … End Sub 形参a是按值传递,b、c是按地址传递。 6.3 参数传递 6.3.1按值传递 按值传递是指将实参的值传递给形参。在过程被调用时,系统会给形参分配临时存储单元,然后将实参的值复制到临时单元中,完成实参与形参的结合,即实参和形参使用不同的存储单元,当过程调用结束时,这些形参所占用的存储单元被释放,因此被调用过程对形参的操作不会影响到实参。按值传递只能实现数据从调用过程到被调用过程数据的单向传递。 6.3 参数传递 例6.6 按值传递示例程序。 程序代码如下: Private Sub MySub1(ByVal a%, ByVal b%) a = a + 10: b = b + 20 End Sub Private Sub Form_Click() Dim m%, n% m = 5: n = 10 Print 调用前, m, n Call MySub1(m, n) Print 调用后, m, n End Sub 6.3 参数传递 程序运行时单击窗体,结果如图6-8所示。 图6-8 按值传递示例程序运行结果 运行结果表明,在按值传递方式中,被调用过程对形参a和b的操作不会影响到实参m和n。 在实际应用中,若不希望过程修改实参的值,则应选用按值传递,这样可以增加程序的可靠性且便于调试,减少各过程间的关联。 6.3 参数传递 6.3.2按地址传递 按地址传递是指将实参的地址传递给形参。在过程被调用时,系统会将实参的地址传递给形参作为形参的地址,完成实参与形参的结合,即实参和形参共用相同的存储单元。被调用过程对形参的任何操作都变成了对实参的操作,实参的值就会随过被调用过程对形参的改变而改变。按地址传递可以实现调用过程和子过程之间数据的双向传递。按地址传递要求实参必须是变量名或数组。 6.3 参数传递 例6.7 按地址传递示例程序。 程序代码如下: Private Sub MySub2(ByRef a%, ByRef b%) a = a + 10: b = b + 20 End Sub Private Sub Form_Click() Dim m%, n% m = 5: n = 10 Print 调用前, m, n Call MySub2(m, n) Print 调用后, m, n End Sub 6.3 参数传递 程序运行时单击窗体,结果如图6-9所示。 图6-9 按地址传递示例程序运行结果 运行结果表明,在按地址传递方式中,实参m、n的值随过被调用过程对形参a、b的改变而改变。 6.3 参数传递 6.3.3数组参数的传递 在函数过程和子过程的定义中,也可以使用数组作为形式参数。数组做参数时,要在数组名后带上一对空括号“()”。并且,数组做参数只能采用按地址传递方式。 6.3 参数传递 例6.8 编写一函数过程,求任意一数组中各元素的积。 程序代码如下: 在事件过程中产生随机数数组,调用函数过程求数组中各元素的乘积,并输出结果 Private Sub Form_Click() Dim a(1 To 5) As Integer, t As Double, i As Integer Randomize For i = 1 To 5 a(i) = Int(Rnd() * 10 + 1) Next i For i = 1 To 5 t = Mul(a()) Next i Print t=; t End Sub 6.3 参数传递 函数过程,计算数组各元素的乘积 Public Function Mul(m () As Integer) As Double Dim m As Double, i As Integer m = 1 For i = LBound(m) To UBound(m) m = m *m (i) Next i Mul = m End Function 6.3 参数传递 程序的运行结果如图6-10所示。 6.4过程的嵌套和递归 6.4.1过程的嵌套调用 Visual Basic中的过程定义都是互相平行、独立的。也就是说在定义过程时一个过程中不可以包含另外一个过程的定义,即过程不能嵌套定义。但是过程可以嵌套调用,也就是主过程可以作为调用过程去调用被调子过程或函数过程,被调过程又可以作为调用过程去调用其他的被调过程。这种程序结构称为过程的嵌套调用。 6.4过程的嵌套和递归 例6.9 求m、n的最大公约数和最小公倍数。 分析:可以自定义函数过程求m、n的最大公约数,而在求m、n的最小公倍数时,则可以调用求最大公约数的

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档