[计算机软件及应用]VB过程
第6章:过程 主要内容: 1:Sub过程 2:Function过程 3:过程的嵌套调用和递归调用 4:变量作用域 5:变量生存期 过程 Visual Basic应用程序其实是由过程组成的。所谓“过程”,就是一段可以完成一个特定任务的较为独立的代码 每个过程或者几个过程能体现某个特定的设计者的设计思路和目标,实现相应的功能,若干个过程组合在一起就构成了程序 通常,在用Visual Basic设计应用程序编写代码时,除了定义常量(符号常量)和变量外,主要工作就是编写过程 过程 Visual Basic程序中包含两大类过程:事件过程(Event Procedure)和通用过程(General Procedure) 在前面的学习中,已多次见过事件过程,这样的过程是当发生某个事件(如Click、Load、Timer)时,对该事件做出响应的程序段 事件过程是构成Visual Basic应用程序的主体,一个应用程序总是包含若干个事件过程 例6.1 事件过程举例Private Sub Command1_Click() Text1.Text = "您单击了命令按钮ommand1!"End SubPrivate Sub Form_Load() MsgBox "马上装载窗体Form1!"End SubPrivate Sub Label2_Click() Text1.Text = "您单击了标签Label2!"End SubPrivate Sub Text2_Change() Text1.Text = "您修改了文本框Text2的内容!"End Sub 通用过程 有时候,某个事件过程或多个事件过程中需要反复使用一段相同的代码,例如有这样的程序:任意给出三个整数,要求按从小到大顺序输出。编程时,需要三次交换两个变量的值,如左下所示 通用过程 含义:为了提高编码效率,增强程序可读性,有时需要将反复使用一段相同的代码编写为独立于所有事件过程的特殊过程,即通用过程。如“Swap”就是一个过程,可以交换两个整型变量的值 通常,当事件过程需要使用某通用过程时,就“调用”它,调用完成后再继续执行事件过程。显然,右上代码中“调用”了“Swap” 过程三次 通用过程与事件过程的区别 Sub过程 Sub过程的格式Private Sub 过程名 (参数表列) …… 'Sub过程中具体的代码End Sub Sub过程 swap过程代码Private Sub swap(x As Integer, y As Integer) Dim t As Integer t = x x = y y = tEnd Sub 调用sub过程 1. 使用Call语句格式:Call 过程名[(参数表列)]如:Call swap(a, b) 2. 把过程名作为一个语句格式:过程名 参数表列如 swap a,b 例6.2 题目:输入三个整数,然后按从小到大排序后输出。代码如下: Private Sub swap(x As Integer, y As Integer) Dim t As Integer t = x x = y y = tEnd Sub Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a > b Then Call swap(a, b) If a > c Then swap a, c If b > c Then swap b, c Text4.Text = a & "," & b & "," & cEnd Sub 调试运行:观察调用过程的细节 参数传递 在调用一个过程时,必须把实际参数传送给过程,完成形式参数与实际参数的结合,然后执行被调用的过程。所谓参数传递,就是指实参与形参之间如何传递数据 在Visual Basic中有两种参数传递方式:值传递和地址传递 值传递 值传递就是将实参的值传送给形参,即传送实参的值而不是传送它的地址。在这种情况下,系统把需要传送的实参复制到一个临时单元中,形参指向该临时单元。由于通用过程没有访问实参的原始地址,所有的变化都是在实参的副本上进行的。因此,不论形参的值有无改变,实参的值均保持原值不变 如:Byval x As Integer 地址传递 地址传递也称为引用,是把实参的地址传递给形参。在这种情况下,实参与形参指向了同一内存单元。由于通用过程访问实参(变量)的原始地址,所有的变化都是直接