VB 允许使用 Function 语句编写用户自定义的 Function (函数)过程。 Function 过程与内部函数一样,可以在程序或函数嵌套中使用。
7.2.1 Function 过程的定义
Function 过程的定义:
[Private|Public][Static] Function < 函数名 >([< 形参表 >])[As < 类型 >]
[< 语句组 >]
[< 函数名 >= < 表达式 >]
[Exit Function ]
[< 语句组 >]
[< 函数名 >= < 表达式 >]
End Function
说明 :
◇省略 “< 函数名 >= < 表达式 >” ,则函数返回一个默认值,数值函数返回 0 ,字符函数返回空字符串。
◇建立 Function 过程的方法与建立 Sub 过程的方法一样。
例 3 :计算任意整数 n 的阶乘的 Function 过程 fact :
Function fact (x As Integer) As Long
Dim i As Integer, p As Long
p = 1
For i = 1 To x
p = p * i
Next I
fact=p
End Function
例 4 :计算圆的面积的 Function 过程 cir :
Function cir (r As Single) As Long
Const pi AS Single=3.1415926
Cir=pi*r^2
End Function
7.2.2 Function 过程的调用
Function 过程的调用 , 可以像使用 VB 内部函数一样来调用 Function 过程,即在表达式中写上它的名字。下面的代码用了例 4 中计算圆面积的 Function 过程:
Text2.Text=cir(30)
例 5 :求 3!+4!+…+10! 的值。
程序代码:
Private Sub Command1_Click()
Dim sum As Long
Dim i As Integer
For i = 3 To 10
sum = sum + fact(i)
Next i
Label1.Caption = “3!+4!+……+10!=” & str(sum)
End Sub
执行结果:
例 6 :编写求两数最大公约数的 Function 过程,在主程序中输入 3 个整数 , 调用 Function 过程求出 3 个整数的最大公约数。
程序代码:
Function Hcf(m As Long, n As Long) As Long
Dim r As Long, c As Long
If m < n Then
c = m: m = n: n = c
End If
r = m Mod n
Do While r <> 0
m = n
n = r
r = m Mod n
Loop
Hcf = n
End Function
Private Sub Command1_Click()
Dim l As Long, m As Long
Dim n As Long
Dim p As String
l = Val(Text1.Text)
m = Val(Text2.Text)
n = Val(Text3.Text)
If l * m * n = 0 Then Exit Sub
p = "3 个数的最大公约数是 :" _
& Str(Hcf(Hcf(l, m), n))
Label1.Caption = p
End Sub
执行结果:
|