VB考试教程:过程之Function过程

文章作者 100test 发表时间 2007:03:10 18:33:48
来源 100Test.Com百考试题网


3、Function过程

VB包含内置的或内部的函数,还可用Function语句编写自己的Function过程。在定义了一个函数之后,可以像调用任何一个VB的内部函数一样使用它,即可以在任何表达式,语句或函数中引用它。

函数过程是标准模块中位中Function语句与End Function 语句之间的一系列语句。函数中的这些语句完成某些有意义的工作,一般是处理文本,进行输入或计算一个值。

通过将函数名与任何所需的参数一起置于一条程序语句中,可以调用该函数。换句话说,使用函数过程与使用内置函数(比如Time,Int或Str等)的方法完全相同。

每个函数完成一种服务,比如进行计算并返回一个值。

在标准模块中声明的函数在缺省的状态下是公用函数,它们可在任何事件中过程中使用。

(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过程相同。“As数据类型”是由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过程相当于执行一个语句,不返回值;而调用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等)没什么区别,只不过内部函数由语言系统提供,而Function过程由用户自己定义。


相关文章


2006年9月全国计算机等级考试二级笔试试卷Java语言程序设计
VB考试教程:过程之Function过程
2006年4月计算机等级考试二级JAVA程序设计填空题
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛