- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;6.1建立通用过程;6.1.1过程的定义
定义Sub过程的一般格式如下:
[Private|Public][Static]Sub子过程名[(形式参数列表)]
语句块
[ExitSub]
语句块
EndSub
Function函数过程的定义:
[Private|Public][Static]Function函数过程名([形式参数列表])[As类型]
语句块
函数过程名=表达式
[ExitFunction]
语句块
[Return表达式]
EndFunction
;6.1.2过程的建立
通用过程不属于任何一个事件过程,可以通过事件过程调用它,创建通用过程的方法如下:
①打开“代码编辑器”窗口,选择“对象列表框”中的“常规”选项。
②在代码编辑区的空白行处输入通用过程代码。
;6.2通用过程的调用;6.2.2调用Function过程
Function过程调用形式如下:
变量名=函数过程名([实际参数列表])
例如上面的计算矩形面积的Function过程可以被调用如下:
c=RecArea(20,30.1)
调用Sub和Function的不同点?;6.3参数传递;例6.1编写交换两个数的过程,过程Swap1使用按值传递,Swap2过程使用按地址传递。程序运行结果如图6-1所示,从中可以看出只有Swap2才能成功交换两个数。在调用的过程中,实参与形参的关系如图6-2所示。
PublicSubSwap1(ByValx%,ByValy%)
Dimt%
t=x:x=y:y=t
EndSub
PublicSubSwap2(ByRefx%,ByRefy%)
Dimt%
t=x:x=y:y=t
EndSub
PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.Click
DimaAsInteger,bAsInteger
a=3:b=5
label1.text=调用过程前:a=ab=bvbcrlf
Swap1(a,b)
label1.text=按值传递参数后:a=ab=bvbcrlf
a=3:b=5
Swap2(a,b)
label1.text=按地址传递参数后:a=ab=bvbcrlf
EndSub
;传值a;例6.2计算5!+4!+3!+2!+1!。先按地址传递方法给出代码。
PrivateFunctionM(ByRefn%)AsInteger
M=1
DoWhilen0
M=M*n
n=n-1
Loop
EndFunction
PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.Click
DimsumAsInteger,iAsInteger
Fori=5To1Step-1
sum=sum+M(i)
Nexti
Debug.WriteLine(Sum=sum)
EndSub
;程序分析
运行结果:Sum=120
本例的运行结果是120,而不是153,是因为本程序只计算了5!。在本例中n是按地址传递的,在第一次调用M函数后n的值为0,由于实参于形参共享地址单元,实参i的值也是0。当执行Fori=5To1Step-1时就退出了For循环,For循环就执行了一次,求出了5!的值。
解决办法有两种:
①将地址传递改为值传递
PrivateFunctionM(ByValn%)AsInteger
②将实参i改为表达式,因为表达式是按值传递的。把变量改为表达式最简单的方法是用()将变量括起来,调用语句改为:
sum=sum+M((i))
;3.数组参数的传递
在VisualBasic的6.0版本后,支持数组作为参数在过程的调用中使
文档评论(0)