8.1 Sub过程
8.1.1 Sub过程的建立
1.定义Sub过程
过程定义的语法格式为:
[Static][Private][Public]Sub过程名 ([形参表])
语句块1
[Exit Sub]
[语句块2]
End Sub
说明:
(1) Static:指定过程中的局部变量在内存中的存储方式。
(2) Private:表示Sub过程是私有的,只能被本模块中的其他过程访问,不能被其他模块中的过程访问。
(3) Public:表示Sub过程是公有过程,可以在程序的任何地方调用它。若省略,则默认为Public过程。
(4) 过程名:命名规则与变量命名规则相同。无参数时,过程名后的括号不能省略。
(5) 形参表:含有在调用时传送给该过程的简单变量名或数组名,各参数名之间用逗号隔开。
(6) Exit Sub语句表示立即退出过程,一般出现在选择结构中。
(7) End Sub标志着Sub过程的结束。
(8) Sub过程不能嵌套定义。
【例8.1】计算n!。
2.建立Sub过程
通用过程可以在标准模块过程中建立,也可以在窗体模块中建立。举例说明在标准模块中建立通用过程,的两种方法。
8.1.2 调用Sub过程
Sub过程的调用有两种方法:使用Call语句;直接使用过程名。
1.Call语句调用Sub过程
格式:Call 过程名[(实际参数)]
2.过程名作为一个语句来使用
与第一种方式相比,它有两点不同:
(1) 去掉关键字Call:
(2) 去掉“实际参数”的括号。
【例8.2】编写一个计算矩形面积的Sub过程,然后调用该过程计算矩形面积。
8.1.3 调用过程与事件过程
举例说明过程调用。
1.在事件过程中调用另一个事件过程
Public Sub Command1_Click() 'Form2中的Command1的Click事件过程
Form1.Command1_Click '调用Form1中的Command1的Click事件过程
End Sub
2.在同一事件过程中调用两个标准模块中具有相同名字的通用过程
Public Sub Command1_Click() 'Form1中的Command1的Click事件过程
Module1.Proce '调用标准模块Module1中的名为Proce的通用过程
Module2.Proce '调用标准模块Module2中的名为Proce的通用过程
End Sub
一般来说,通用过程(包括Sub过程、Function过程)之间、事件过程之间、通用过程与事件过程之间,都可以相互调用。当在一个模块中调用其他模块中的过程时,被调用的过程必须是“公用的”(Public)。
8.2 Function过程
8.2.1 Function过程的定义
Function过程定义的格式为
[Static][Private][Public]Function函数名([形参表]) [As类型]
[语句块]
[函数名=表达式]
[Exit Function]
[语句块]
End Function
说明:
(1) Function过程以Function开头,以End Function结束,在两者之间是描述过程操作的语句块,即“过程体”或“函数体”。
(2) 函数名即函数过程的名称,命名规则与变量相同。
(3) 表达式的值是函数返回的结果,通过赋值语句将其赋给函数名。
(4)不能在事件过程中定义通用过程(包括Sub过程和Function过程),只能在事件过程内调用通用过程。
【例8.3】编写一个求最大公约数的函数过程。
8.2.2 调用Function过程
以调用求最大公约数的函数为例说明可以像使用Visual Basic内部函数一样来调用Function过程。
8.3 参数传送
8.3.1 参数传送方式
举例说明参数传送方式。
1.传值
【例8.4】编写程序,试验按值传递
Sub tryout(ByVal x As Integer,ByVal y As Integer)
x=x+100
y=y*6
Print"x=";x."y=";y
End Sub
Sub Form_Click()
Dim a As Integer, b As Integer
a=10:b=20
tryout a,b
Print "a=";a, "b=";b
End Sub
程序运行后,输出结果如下:
x=110 y=120
a=10 b=20
2.传地址
【例8.5】编写程序,试验引用方式传送参数。
Sub tryout(x As Integer ,y As Integer)
x=x+100
y=y*6
Print "x=";x, "y=";y
End Sub
Sub Form_Click()
Dim a As Integer, b As Integer
a=10:b=20
tryout a,b
Print "a=";a, "b=";b
End Sub
小结:
在Visual Basic中,常用的过程主要有两类:一类由系统提供,包括事件过程和内部函数过程;另一类是自定义过程,由程序设计者根据需要自行编制,主要包括通用过程和自定义函数过程。事件过程和通用过程合称为子过程(Sub过程),自定义函数过程简称为函数过程(Function过程)。
当在程序中需要多次用到某一公式或处理某一函数关系,而又没有现成的内部函数能够使用时,可以用Function语句编写自定义函数过程实现相应的功能。一旦编写完成后,在程序中就可以像使用内部函数一样使用Function过程。Function过程也是一个独立的过程,但与Sub过程不同,Sub过程没有返回值,只能作为独立的基本语句被调用,不能出现在表达式中;而Function过程有返回值,既可出现在表达式中,也可以作为独立的语句被调用。
参数是主调过程和被调过程之间传送数据的重要手段。在调用一个过程时,必须把实际参数传送给过程,完成形式参数与实际参数的结合,然后用实际参数执行调用的过程。
本讲重点介绍Sub过程和Function过程的结构框架如何定义,以及如何调用一个已写好的自定义过程,进而介绍过程调用的参数传递机制。
作业:
1.Sub过程和Function过程有何区别?
2.怎样创建Sub过程和Function过程?
3.怎样调用Sub过程和Function过程?
4.什么是形参?什么是实参?它们之间有何区别?
5.什么是值传递?什么是地址传递?它们之间有何区别?
|