VB过程和参数传递.ppt
《VB过程和参数传递.ppt》由会员分享,可在线阅读,更多相关《VB过程和参数传递.ppt(53页珍藏版)》请在三一办公上搜索。
1、VB程序设计教程,沈美莉 马银晓 陈孟建 编著,1,第七章 过程,一、Sub过程二、Function过程三、参数的传递四、可变参数与对象参数,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,2,第一节 Sub过程,过程实际上就是其他语言中的子程序,子程序是一个相对独立的应用程序,它可以被其他程序所调用,当然,它也能够调用其他的子程序。在Visual Basic语言中提供了两类过程,一类是子程序过程,又称为Sub过程,另一类是函数过程,又称为Function过程。一、创建Sub过程1定义Sub过程格式:staticprivatepublic sub 过程名(参数表列)Exit subEnd su
2、b,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,3,第一节 Sub过程,2注意事项(1)sub过程以sub开始,以End sub结束。(2)参数static指的是在过程中的变量为static型。(3)private指的是过程是私有过程,只能被本模块中的其他过程访问。(4)public指的是过程是公有过程,可以在程序的任何地方调用它。(5)过程名指的是过程的一个名称,是一个长度不超过255字符的变量名。(6)参数表列指的是,调用时传递给过程的参数的类型和个数,每个参数的格式为:By Val 变量名()As 数据类型(7)Sub过程不能嵌套,也就是说,在sub过程内,不能定义sub过程或fun
3、ction过程;也不能用gosub、goto或return语句进入或退出一个sub过程,只能通过调用执行sub过程。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,4,第一节 Sub过程,3建立sub过程的方法(1)方法一 双击窗体打开代码设计窗口,或利用“添加模块”功能,打开模块代码窗口。单击“工具”模块下的“添加过程”功能,系统弹出如下图所示的“添加过程”对话框。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,5,第一节 Sub过程,在图中的名称文本框中输入过程名称为:ppa。在“类型”选项中选择“子程序”单选框。在“范围”选项中选择“公有的”单选框。单击“确定”按钮即可建立一个Sub
4、过程,用户可以在Sub ppa与End Sub之间增添程序代码了。(2)方法二 单击“工程”模块下的“添加模块”功能。打开模块代码窗口,并键入过程的名字。例如:键入:sub ppa(),并按回车键,即可建立一个Sub过程,如下图所示。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,6,第一节 Sub过程,二、调用sub过程调用Sub过程有两种方法,一种方法是使用Call调用过程语句来调用过程,另一种方法是将过程名作为一个语句来使用。1用call调用语句(1)格式Call 过程名()(2)功能Call语句把程序控制传递到一个Visual Basic语言的Sub过程。Call语句调用一个过程时,
5、如果过程本身没有参数,则和括号可以省略;否则,应给出相应的实际参数,并把参数放在括号中。实际参数是传递给sub过程的变量或常数的。例如:Call ppa(a,b),VB程序设计教程,沈美莉 马银晓 陈孟建 编著,7,第一节 Sub过程,2把过程作为一个语句来使用在调用sub过程时,如果省略关键字Call,就成为调用sub过程的第二种方式。其格式为:过程名 与第一种方式相比,它有两点不同:(1)去掉了关键字Call(2)去掉了中的括号。例如:ppa a,b【例题5.15】编写一个计算圆面积的sub 过程,然后,调用该过程计算圆面积。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,8,第一节 S
6、ub过程,Private Sub Command1_Click()Dim a,ba=Val(InputBox(请输入圆半径,输入数据,1)circul aEnd SubPrivate Sub circul(r)Dim areaarea=3.1415926*r*rPrint 圆的面积为;areaMsgBox(圆面积为&area)End Sub以上程序创建一个计算圆面积的子程序,即Sub circul(r)过程,该过程的实参表为r,调用过程的方法是将过程作为一个语句,即,circul a。,返回本章首页,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,9,第二节 Function过程,一、Func
7、tion过程的定义1.格式staticprivatepublic Function()As=Exit FunctionEnd Function2.功能定义一个Function过程。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,10,第二节 Function过程,3.注意事项(1)定义Function过程时,必须以Function开始,以End Function结束。在其之间是描述过程操作的语句组,可以是一个语句,也可以是若干个语句,中的语句也称为“函数体”。(2)调用Sub过程相当于执行一个语句,不返回值,可以作为独立的基本语句调用,而调用Function过程要返回一个值,因此,可以象内部
8、函数一样在表达式中使用。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,11,第二节 Function过程,二、调用Function过程Function过程的调用比较简单,可以象一个函数一样调用,其调用格式为:=()【例题5.16】编写一个求最大公约数(GCD)的函数过程,并调用该函数。【程序代码】(1)创建GCD函数Function gcd(ByVal x As Integer,ByVal y As Integer)As IntegerDim reminder As IntegerDo While y 0reminder=x Mod yx=yy=reminderLoopgcd=xEnd F
9、unction,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,12,第二节 Function过程,(2)调用GCD函数:Private Sub Command1_Click()Dim a As Integer,b As Integera=Val(InputBox(输入第一个整数,输入数据,0)b=Val(InputBox(输入第二个整数,输入数据,0)x=gcd(a,b)Print a=;a,b=;bPrint 最大公约数CD=;xEnd Sub,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,13,第二节 Function过程,【例题5.17】输入三个整数,求出其中最大值。【程序代码】(1
10、)主程序段Private Sub Command1_Click()Dim a,b,c,q As Integera=Val(InputBox(请输入第一个数据,输入数据,0)b=Val(InputBox(请输入第二个数据,输入数据,0)c=Val(InputBox(请输入第三个数据,输入数据,0)q=max(a,b)第一次调用max函数,求出a、b中最大值q=max(q,c)第二次调用max函数,求出 a、b、c中最大值Print 最大值为:;qEnd Sub,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,14,第二节 Function过程,(2)Function函数段Function max
11、(x,y)As Integer 函数max其功能是求出两个数中的最大值Dim z As Integer If(x y)Then z=y Else z=xEnd Ifmax=z End Function 运行该程序后,即可比较三个数中的最大值,在主程序中共调用二次max()函数,调用第一次时比较a和b两个数的大小,将大的数赋值给q变量,再调用一次时,将比较q和c两个数的大小,返回时得到三个数中的最大值。如果需要对四个数比较,可以增加一次调用max()的函数,若再增加数的个数,只需要增加调用函数的次数即可。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,15,第二节 Function过程,【例题
12、5.18】(1)主程序段Private Sub Command1_Click()Dim m,n,k,l,q,w As Singlem=Val(InputBox(请输入m数据,输入数据,0)n=Val(InputBox(请输入n据,输入数据,0)k=fac(m)第一次调用fac函数 l=fac(n)第二次调用fac函数q=fac(m-n)第三次调用fac函数w=k/(l*q)Print 组合数C“;m;n;”的值是:;wEnd Sub,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,16,第二节 Function过程,(2)fac函数段Function fac(x)Dim fa As Singl
13、eDim i As Integerfa=1For i=1 To xfa=fa*ifac=faNext iEnd Function运行该程序后,显示结果如下图所示。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,17,第二节 Function过程,返回本章首页,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,18,第三节 参数的传递,一、形参与实参形参是在Sub和 Function过程的定义中出现的变量名,实参则是在调用Sub或 Function过程时传递给Sub或Function过程的常数、变量、表达式或数组。1按位置传递定义一个函数的目的是用来被其他程序调用,在调用函数时,大多数情况下,主
14、调用函数和被调用函数之间有数据传递关系,这就是有参函数,在定义函数时函数名后面括号中的变量称为“形式参数”,在调用函数时,函数名后面括号中的表达式称为“实际参数”。所谓按位置传递指的是实际参数的次序与形式参数的次序相一致。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,19,第三节 参数的传递,例如:Function fac(a,b)fac=faEnd Function调用fac函数时,可以使用以下语句来完成:Private Sub Command1_Click()Call fac(x,y)End sub 以上程序中的a和b是两个形式参数,而 x和y是两个实际参数。这样就完成了形参与实参的结
15、合,其关系如下图所示。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,20,第三节 参数的传递,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,21,第三节 参数的传递,2注意事项(1)在传递时,形参表与实参表中对应变量的名字不必相同,但是它们所包含的参数的个数必须相同。(2)实参表中的数据类型必须与形参表中的数据类型相匹配。(3)实参表与形参表中的各个变量,可以使用逗号相分隔。(4)实参表中的各个参数可以是常量、变量、数组、表达式等。二、按地址传递在Visual Basic语言中,参数通过按地址传递的方法通常将它称为“引用”,在默认的情况下,变量都是通过“引用”来传递Sub或Functio
16、n过程的。在这种情况下,可以通过改变过程中相应的参数来改变该变量的值。这意味着,当通过“引用”来传递实参时,有可能改变传递给过程的变量的值。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,22,第三节 参数的传递,例如:Function fac(a As Integer,b As Integer,c As String)a=a+258b=b*8c=c+a+bEnd FunctionPrivate Sub Command1_Click()Dim x As Integer,y As IntegerDim z As Stringx=100y=20z=xyzCall fac(x,y,z)Print
17、x=;x,y=;y,z=;zEnd Sub,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,23,第三节 参数的传递,通用过程fac函数的操作很简单,即把传递过来的x参数加上258,y参数乘以8,z连接z与x和y,然后输出x,y,z的值。在事件过程中,通过“Call fac(x,y,z)”语句调用过程fac函数,实参x,y,z的值分别为100、20和xyz,传递给fac函数后进行如下计算:a=a+258=100+258=358b=b*8=20*8=160c=c+“a”+“b”=xyzab所以运行以上程序的结果,如下图所示。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,24,第三节 参数的传
18、递,为什么会出现这种现象呢?原来,变量(即实参)的值是存放在内存的某个地址中,当通过按地址传递来调用一个过程时,向该地址传递变量,实际上是把变量的地址传递给该过程,因此,变量的地址和被调用过程中相应的地址是相同的,这样,如果通用过程中的操作修改了参数的值,那么,它同时也修改了传送给过程的变量的值,如果不希望在调用过程时改变变量的值,则应把变量的值传递给参数,即传值,而不要传递变量的地址。三、按数值传递所谓按数值传递就是通过数值传递实际参数,即传递实参时只传递它的数值而不是传递它的地址。在这种情况下,系统把需要传递的变量复制到一个临时内存中的存储单元中,然后,把该临时单元地址传递给被调用的通用过
19、程。由于通用过程没有访问变量(实参)的原始地址,因而,不会改变原来变量的值,所有的变化都是在变量的副本上进行的。在Visual Basic语言中,传值方式是通过关键字ByVal来实现的,也就是说,在定义通用过程时,如果形参前面有关键字Byval,则该参数用传值方式传递,否则,就用“引用”方式传递。,VB程序设计教程,沈美莉 马银晓 陈孟建 编著,25,第三节 参数的传递,例如:function fac(BYVal a As Single)a=x+100End Sub这里的形参a前有关键字ByVal,所以在调用时以传值方式传递实参,在传值方式下,Visual Basic为形参分配内存空间,并将相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 过程 参数 传递
链接地址:https://www.31ppt.com/p-6522757.html