3、Function過程
VB包含內置的或內部的函數,還可用Function語句編寫自己的Function過程。在定義了一個函數之后,可以像調用任何一個VB的內部函數一樣使用它,即可以在任何表達式,語句或函數中引用它。
函數過程是標準模塊中位中Function語句與End Function 語句之間的一系列語句。函數中的這些語句完成某些有意義的工作,一般是處理文本,進行輸入或計算一個值。
通過將函數名與任何所需的參數一起置于一條程序語句中,可以調用該函數。換句話說,使用函數過程與使用內置函數(比如Time,Int或Str等)的方法完全相同。
每個函數完成一種服務,比如進行計算并返回一個值。
在標準模塊中聲明的函數在缺省的狀態(tài)下是公用函數,它們可在任何事件中過程中使用。
(1)Function(函數)過程的定義
Function過程的定義格式:
[Public|Private|Friend|Static]Function 過程名[(參數列表)][As數據類型]
[程序段]
[過程名=表達式]
[Exit Function]
[程序段]
[過程名=表達式]
End Function
說明:
1)Function過程以Function開頭,End Function 結束,之間是描述過程操作的語句塊,即“過程體”或“函數體”。格式中的“過程名”、“參數列表”、Public、Private、Friend、Static、Exit Function的含義與Sub過程相同?!癆s數據類型”是由Function過程返回的值的數據類型,如省略,則為Variant。
如:已知直角三角形兩直角邊的值,計算斜邊,可定義一個Function函數。
Function hypotenuse(A as integer,B as integer) as string
hypotenuse=sqr(A^2+B^2)
End function
再例如:
Function BinarySearch(Lower,Upper As Integer) As Boolean
……
If Lower = Upper Then
BinarySearch = True
Exit Function
Else
BinarySearch = False '過程名=表達式
End If
……
End Function
2)調用Sub過程相當于執(zhí)行一個語句,不返回值;而調用Function過程要返回一個值,因此可以像內部函數一樣在表達式中使用。
在VB中調用Function過程的方法和調用任何內部函數的方法是一樣的,如調用上面的“hypotenuse”函數:
label1.caption=hypotenuse(Cint(text1.text),cint(text2.text))
strX=hypotenuse(width,height)
函數總是以該函數的名稱返回給調用過程一個值。因此,函數中的最后一行語句往往是將函數的最終計算結果放入“過程名”中的賦值語句。例如,下文中的函數過程total1用來為某個工程計算,然后將結果賦值給total1名。
Function total1(cost)
t1=cost*0.05
t2=cost*0.015
total1=t1+t2 '將結果賦值給Function函數total1。
end function
由Function過程返回的值放在上述格式中的“表達式”中,并通過“過程名=表達式”把它的值賦給“過程名”,如果在Function過程中省略“過程名=表達式,則該過程返回一個默認值:數值函數過程返回0值;字符串函數過程返回空字符串;variat函數則返回empty。如果在返回對象引用的Function過程中沒有將對象引用賦給name(通過set),則函數返回nothing。一般地,為了能使一個Function過程完成所指定的操作,通常要在過程體中為“過程名”賦值。
3)前面講過,過程不能嵌套。因此不能在事件過程中定義通用過程(包括Sub過程和Function過程),只能在事件的過程內調用通用過程。
(2)建立Function過程
前面提到的建立Sub過程的三種方法也可用來建立Function過程,只是當用第一種方法建立時,在對話框的“類型”欄內選擇“函數”。
(3)調用函數過程
例如:編寫一個求公約數(GCD)的函數過程。
程序如下:
Function gcd(ByVal x As Integer, ByVal y As Integer) As Integer
Do While y <> 0
reminder = x Mod y
x = y
y = reminder
Loop
gcd = x
End Function
求公約數的方法:
兩個數a、b,如果b能除盡a,則是這兩個數的公約數(如6和3的公約數是3),否則:
GCD(a,b)=GCD(b,a Mod b)
例如:GCD(126,12)=GCD(12,126 Mod 12)=GCD(12,6)=6
下面介紹如何調用這個過程。
調用Function過程比較簡單,可以像使用VB內部函數一樣調用。因為Function過程返回一個值,所以完全可以將它看成一個函數,與內部函數(如Sqr,Str,Chr等)沒什么區(qū)別,只不過內部函數由語言系統(tǒng)提供,而Function過程由用戶自己定義。
VB包含內置的或內部的函數,還可用Function語句編寫自己的Function過程。在定義了一個函數之后,可以像調用任何一個VB的內部函數一樣使用它,即可以在任何表達式,語句或函數中引用它。
函數過程是標準模塊中位中Function語句與End Function 語句之間的一系列語句。函數中的這些語句完成某些有意義的工作,一般是處理文本,進行輸入或計算一個值。
通過將函數名與任何所需的參數一起置于一條程序語句中,可以調用該函數。換句話說,使用函數過程與使用內置函數(比如Time,Int或Str等)的方法完全相同。
每個函數完成一種服務,比如進行計算并返回一個值。
在標準模塊中聲明的函數在缺省的狀態(tài)下是公用函數,它們可在任何事件中過程中使用。
(1)Function(函數)過程的定義
Function過程的定義格式:
[Public|Private|Friend|Static]Function 過程名[(參數列表)][As數據類型]
[程序段]
[過程名=表達式]
[Exit Function]
[程序段]
[過程名=表達式]
End Function
說明:
1)Function過程以Function開頭,End Function 結束,之間是描述過程操作的語句塊,即“過程體”或“函數體”。格式中的“過程名”、“參數列表”、Public、Private、Friend、Static、Exit Function的含義與Sub過程相同?!癆s數據類型”是由Function過程返回的值的數據類型,如省略,則為Variant。
如:已知直角三角形兩直角邊的值,計算斜邊,可定義一個Function函數。
Function hypotenuse(A as integer,B as integer) as string
hypotenuse=sqr(A^2+B^2)
End function
再例如:
Function BinarySearch(Lower,Upper As Integer) As Boolean
……
If Lower = Upper Then
BinarySearch = True
Exit Function
Else
BinarySearch = False '過程名=表達式
End If
……
End Function
2)調用Sub過程相當于執(zhí)行一個語句,不返回值;而調用Function過程要返回一個值,因此可以像內部函數一樣在表達式中使用。
在VB中調用Function過程的方法和調用任何內部函數的方法是一樣的,如調用上面的“hypotenuse”函數:
label1.caption=hypotenuse(Cint(text1.text),cint(text2.text))
strX=hypotenuse(width,height)
函數總是以該函數的名稱返回給調用過程一個值。因此,函數中的最后一行語句往往是將函數的最終計算結果放入“過程名”中的賦值語句。例如,下文中的函數過程total1用來為某個工程計算,然后將結果賦值給total1名。
Function total1(cost)
t1=cost*0.05
t2=cost*0.015
total1=t1+t2 '將結果賦值給Function函數total1。
end function
由Function過程返回的值放在上述格式中的“表達式”中,并通過“過程名=表達式”把它的值賦給“過程名”,如果在Function過程中省略“過程名=表達式,則該過程返回一個默認值:數值函數過程返回0值;字符串函數過程返回空字符串;variat函數則返回empty。如果在返回對象引用的Function過程中沒有將對象引用賦給name(通過set),則函數返回nothing。一般地,為了能使一個Function過程完成所指定的操作,通常要在過程體中為“過程名”賦值。
3)前面講過,過程不能嵌套。因此不能在事件過程中定義通用過程(包括Sub過程和Function過程),只能在事件的過程內調用通用過程。
(2)建立Function過程
前面提到的建立Sub過程的三種方法也可用來建立Function過程,只是當用第一種方法建立時,在對話框的“類型”欄內選擇“函數”。
(3)調用函數過程
例如:編寫一個求公約數(GCD)的函數過程。
程序如下:
Function gcd(ByVal x As Integer, ByVal y As Integer) As Integer
Do While y <> 0
reminder = x Mod y
x = y
y = reminder
Loop
gcd = x
End Function
求公約數的方法:
兩個數a、b,如果b能除盡a,則是這兩個數的公約數(如6和3的公約數是3),否則:
GCD(a,b)=GCD(b,a Mod b)
例如:GCD(126,12)=GCD(12,126 Mod 12)=GCD(12,6)=6
下面介紹如何調用這個過程。
調用Function過程比較簡單,可以像使用VB內部函數一樣調用。因為Function過程返回一個值,所以完全可以將它看成一個函數,與內部函數(如Sqr,Str,Chr等)沒什么區(qū)別,只不過內部函數由語言系統(tǒng)提供,而Function過程由用戶自己定義。

