文档介绍:第六章过程
掌握子过程(Sub过程的定义、调用);
掌握函数过程(Function过程)的定义、调用;
掌握值传递、地址传递的传递规则;
理解递归的概念。
本章要求:
本章重点:
Sub过程及Function过程的定义与调用
过程调用中数据的传递。
本章难点:
过程调用中数据的传递。
过程概述
,除了系统提供的内部函数过程和事件过程外,用户可自定义过程下列四种过程:
▲“Sub”保留字开始的为子过程
▲“Function”保留字开始的为函数过程
“Property”保留字开始的为属性过程
“Event”保留字开始的事件过程
在VB中,的Sub子过程分为:事件过程和通用过程
事件过程
(1)窗体事件的语法
Private Sub Form_事件名(参数列表)
<语句组>
End Sub
(2)控件事件的语法
Private Sub 控件名_事件名(参数列表)
<语句组>
End Sub
Sub过程
子过程的定义形式如下:
[Public|Private][Static] Sub 子过程名([形参表])
<局部变量或常数定义>
<语句组>
[Exit Sub]
<语句组>
End Sub
通用过程(Sub过程)的定义
说明:(1)子过程名:命名规则与变量名规则相同。子过程名不返回值,而是通过形参与实参的传递得到结果,调用时可返回多个值。
Sub过程
(2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。
(3)过程可以无形式参数,但括号不能省。
(4)参数的定义形式:
[ByVal|ByRef]变量名[( )][As 类型][,…],
ByVal表示当该过程被调用时,参数是按值传递的;缺省或ByRef表示当该过程被调用时,参数是按地址传递的。
Sub过程
编一个交换两个整型变量值的子过程。
Private Sub Swap( X As Integer, Y As Integer)
Dim temp As Integer
Temp=X : X=Y : Y=Temp
End Sub
Sub过程
Private mand1_click()
Dim a%,b%
a=val(inputbox(“a=“))
b=val(inputbox(“b=“))
print “a=“;a,”b=“,b
call swap(a,b)
print “a=“;a,”b=“,b
End Sub
子过程的建立
通过“工具”菜单中的“添加过程”命令,出现“添加过程”对话框(),选择过程类型(子过程、函数、属性、事件)及作用范围(公有的Public、私有的Private),单击确定后得到一个过程或函数定义的结构框架(模板),如:
Public Sub Sort( )
……
End Sub
Sub过程
过程的调用
1 子过程的调用
子过程名[参数列表]
或 Call 子过程名(参数列表)
说明:
(1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。
(2)调用时把实参值传递给对应的形参。其中值传递(形参前有ByVal说明)时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。
Sub过程
(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。
(4)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起,反之则实参之间用“,”分隔。
例:调用上面定义的Swap子过程的形式:
Swap a,b
Call Swap(a,b)
Sub过程
Private Sub CmdOK()
……
Call Swap(a,b)
……
Swap a,b
End Sub
Private Sub Swap(x%,y%)
Dim temp%
Temp=X
X=Y
Y=Temp
End Sub
过程调用的执行过程:
Sub过程