8.1 Sub過程
8.1.1 Sub過程的建立
1.定義Sub過程
過程定義的語法格式為:
[Static][Private][Public]Sub過程名 ([形參表])
語句塊1
[Exit Sub]
[語句塊2]
End Sub
說明:
(1) Static:指定過程中的局部變量在內(nèi)存中的存儲方式。
(2) Private:表示Sub過程是私有的,只能被本模塊中的其他過程訪問,不能被其他模塊中的過程訪問。
(3) Public:表示Sub過程是公有過程,可以在程序的任何地方調(diào)用它。若省略,則默認(rèn)為Public過程。
(4) 過程名:命名規(guī)則與變量命名規(guī)則相同。無參數(shù)時,過程名后的括號不能省略。
(5) 形參表:含有在調(diào)用時傳送給該過程的簡單變量名或數(shù)組名,各參數(shù)名之間用逗號隔開。
(6) Exit Sub語句表示立即退出過程,一般出現(xiàn)在選擇結(jié)構(gòu)中。
(7) End Sub標(biāo)志著Sub過程的結(jié)束。
(8) Sub過程不能嵌套定義。
【例8.1】計算n!。
2.建立Sub過程
通用過程可以在標(biāo)準(zhǔn)模塊過程中建立,也可以在窗體模塊中建立。舉例說明在標(biāo)準(zhǔn)模塊中建立通用過程,的兩種方法。
8.1.2 調(diào)用Sub過程
Sub過程的調(diào)用有兩種方法:使用Call語句;直接使用過程名。
1.Call語句調(diào)用Sub過程
格式:Call 過程名[(實際參數(shù))]
2.過程名作為一個語句來使用
與第一種方式相比,它有兩點不同:
(1) 去掉關(guān)鍵字Call:
(2) 去掉“實際參數(shù)”的括號。
【例8.2】編寫一個計算矩形面積的Sub過程,然后調(diào)用該過程計算矩形面積。
8.1.3 調(diào)用過程與事件過程
舉例說明過程調(diào)用。
1.在事件過程中調(diào)用另一個事件過程
Public Sub Command1_Click() 'Form2中的Command1的Click事件過程
Form1.Command1_Click '調(diào)用Form1中的Command1的Click事件過程
End Sub
2.在同一事件過程中調(diào)用兩個標(biāo)準(zhǔn)模塊中具有相同名字的通用過程
Public Sub Command1_Click() 'Form1中的Command1的Click事件過程
Module1.Proce '調(diào)用標(biāo)準(zhǔn)模塊Module1中的名為Proce的通用過程
Module2.Proce '調(diào)用標(biāo)準(zhǔn)模塊Module2中的名為Proce的通用過程
End Sub
一般來說,通用過程(包括Sub過程、Function過程)之間、事件過程之間、通用過程與事件過程之間,都可以相互調(diào)用。當(dāng)在一個模塊中調(diào)用其他模塊中的過程時,被調(diào)用的過程必須是“公用的”(Public)。
8.2 Function過程
8.2.1 Function過程的定義
Function過程定義的格式為
[Static][Private][Public]Function函數(shù)名([形參表]) [As類型]
[語句塊]
[函數(shù)名=表達(dá)式]
[Exit Function]
[語句塊]
End Function
說明:
(1) Function過程以Function開頭,以End Function結(jié)束,在兩者之間是描述過程操作的語句塊,即“過程體”或“函數(shù)體”。
(2) 函數(shù)名即函數(shù)過程的名稱,命名規(guī)則與變量相同。
(3) 表達(dá)式的值是函數(shù)返回的結(jié)果,通過賦值語句將其賦給函數(shù)名。
(4)不能在事件過程中定義通用過程(包括Sub過程和Function過程),只能在事件過程內(nèi)調(diào)用通用過程。
【例8.3】編寫一個求最大公約數(shù)的函數(shù)過程。
8.2.2 調(diào)用Function過程
以調(diào)用求最大公約數(shù)的函數(shù)為例說明可以像使用Visual Basic內(nèi)部函數(shù)一樣來調(diào)用Function過程。
8.3 參數(shù)傳送
8.3.1 參數(shù)傳送方式
舉例說明參數(shù)傳送方式。
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
程序運行后,輸出結(jié)果如下:
x=110 y=120
a=10 b=20
2.傳地址
【例8.5】編寫程序,試驗引用方式傳送參數(shù)。
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
小結(jié):
在Visual Basic中,常用的過程主要有兩類:一類由系統(tǒng)提供,包括事件過程和內(nèi)部函數(shù)過程;另一類是自定義過程,由程序設(shè)計者根據(jù)需要自行編制,主要包括通用過程和自定義函數(shù)過程。事件過程和通用過程合稱為子過程(Sub過程),自定義函數(shù)過程簡稱為函數(shù)過程(Function過程)。
當(dāng)在程序中需要多次用到某一公式或處理某一函數(shù)關(guān)系,而又沒有現(xiàn)成的內(nèi)部函數(shù)能夠使用時,可以用Function語句編寫自定義函數(shù)過程實現(xiàn)相應(yīng)的功能。一旦編寫完成后,在程序中就可以像使用內(nèi)部函數(shù)一樣使用Function過程。Function過程也是一個獨立的過程,但與Sub過程不同,Sub過程沒有返回值,只能作為獨立的基本語句被調(diào)用,不能出現(xiàn)在表達(dá)式中;而Function過程有返回值,既可出現(xiàn)在表達(dá)式中,也可以作為獨立的語句被調(diào)用。
參數(shù)是主調(diào)過程和被調(diào)過程之間傳送數(shù)據(jù)的重要手段。在調(diào)用一個過程時,必須把實際參數(shù)傳送給過程,完成形式參數(shù)與實際參數(shù)的結(jié)合,然后用實際參數(shù)執(zhí)行調(diào)用的過程。
本講重點介紹Sub過程和Function過程的結(jié)構(gòu)框架如何定義,以及如何調(diào)用一個已寫好的自定義過程,進(jìn)而介紹過程調(diào)用的參數(shù)傳遞機制。
作業(yè):
1.Sub過程和Function過程有何區(qū)別?
2.怎樣創(chuàng)建Sub過程和Function過程?
3.怎樣調(diào)用Sub過程和Function過程?
4.什么是形參?什么是實參?它們之間有何區(qū)別?
5.什么是值傳遞?什么是地址傳遞?它們之間有何區(qū)別?
|