![]() ![]() |
||
VB考试教程:过程之Function过程 | ||
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:46:40 文章录入:杜斌 责任编辑:杜斌 | ||
|
||
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 …… 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
下面介绍如何调用这个过程。 调用Function过程比较简单,可以像使用VB内部函数一样调用。因为Function过程返回一个值,所以完全可以将它看成一个函数,与内部函数(如Sqr,Str,Chr等)没什么区别,只不过内部函数由语言系统提供,而Function过程由用户自己定义。
如下面的事件过程调用了上面的“gcd”函数: Private Sub Form_Click() 最后运行的结果为: G.C.D = 32 |
||
![]() ![]() |