VB6当中自定义过程和函数以及的参数类型
近日,接连看到有关在VB6屮自定义过程和函数屮的参数的类型问题,于是产生一种 冲动,想写一篇比较全面的相关文章。文章的名就叫《VB6当小白定义过程和函数的参数类 型》好了。
1.自定义过程和函数:
为什么要捉供让用八自己定义具有特殊功能的过程和函数呢?我们来看一个例子;在编
写一个具体的应用项目的时候,可能需要在多个地方输出打印一行60个符号“*”,即:
************************************************************
以此作为分隔线。
输出打印的代码如F:
Dim i As Integer
For i = 1 To 60
Print "〃;
Next i
Print
由于在多处地方需要输出这行符号,所以在多个地方会出现完全相同的代码,为了减少 代码重复,我们就可以白己编写一个过程,该过程就是能够完成输出一行“*”号的工作;
该过程的代码如下:
1.编写自定义过程:
Private Sub PLine()
Dim i As Integer
For i = 1 To 60
Print “*〃;
Next i
Print
End Sub
从上面的代码中可以体会,过程的格式由;
Private Sub Plinef) 始,End Sub结束。开始部分由四部分组成;
Private --定义该过程的使用范围,类似定义变量前的引导字,定义过程可以川:Private.
Public. Friend三种关键字,分别表示在:窗体、模块和类模块屮使用。
Sub •…表示为过程,相应Function表示为函数。
PLine —是自定义过程的名称。
()一—・对・括号,括号里列出需要的参数,本例无参数。即使无参数,括号也不能省。
2.调用自定义过程:
调用格式:
格式Call过程名(参数列表)
格式2:过程名参数列表
对应上例的调用语句为:
Call Pline()或者 Pline
于是,有了这个自定义过程,在代码中凡是需要输出这行符号的地方,就可以简略地用 一行语句來完成。可以理解,在程序屮使川该过程的地方越多,采川白定义的方式就越显示 出其优越性。
3.带有参数的过程;
这个过程的灵活性还不够,它只是能输出一行60个符号。如果希望符号能够根据 需要冇不同的变化,比如冇的地方输出的符号是等号“二”或者减号“■”等等,能够根据调 用者的意愿来实现。这就需要有参数,这个参数决定了输出的符号。修改过程如下:
Private Sub Plinel(ByVal Ch As String)
Dim i As Integer
For i = 1 To 60
Print Ch;
Next i
Print
End Sub
现在这个过程的括号里,有了一个参数;
By Vai --参数的传递格式,后血來具体解释。
Ch….参数的名字
As String-…参数的数据类型,这里是字符串。
有了参数,那么调用时就需要如下來实现:
Call Plinel(“=〃)
这里,是用符号“二”去调用该过程,执行调用时,调用语句把“二”传递给参数Ch, 使得过程中的Ch的值就是“二”。这样就得到输出60个等号。
如果执行调用:CallPlinel("・〃),就得到输出60个减号。
这时候你会想,能不能再给这个过程加一个参数,来决定它一行冇多少个字符。既然冇 想法,那就赶快行动吧!修改过程如下:
Private Sub Pline2(ByVal Ch As String, By Vai n As Integer)
Dim i As Integer
For i = 1 To n
Print Ch;
Next i
Print
End Sub
这里多了一个整型类型的参数,可以来决定输出一行的字符的个数;
如果执行调用:Call Pline2("・",80),就得到输出80个减号。
如果执行调用:Call Pline2(“*",100),就得到输1\\ 100个星号。
当然,可以这样调用;
Dim Cl As String, C2 As String, nl As Integer, n2 As Integer
Cl = r : C2 ="和':nl = 80:n2 = 100
Call Pline2(Cl,nl)
Call Pline2(Clzn2)
Call Pline2(C2zn2)
至此 我们理解了编写口定义过程的意义、调用方法,也初步体会了编写的格式、方法。
K面我们來举一个自定义函数的例子;
程序设计屮的两数的概念,來白于数学的概念,至少函数会返回一〜个值,在这一点上是 —•样的。在程序设计中,过程与函数,有相同的地方,也有不同的地方;通过上而过程的例 了,可以体会过程就是通过一系列和关的操作步骤,达到一个目的(输出一行字符)。而函 数也是通过系列相关的操作步骤,达到一个目的,但是这个目的是返回一个数据(值)。
例如:根据三角形的底边a和高h,求三角形的面积S。
VB代码如下;
Dim a as Single,h as Single,S as Single
a = Val(lnputBoxr请输入三角形的底边长〃))
h = Val(lnputBox("请输入三角形的高〃))
S = a * h/2
Prints
我们可以把这段代码,编写成一个求三角形面积的函数,具屮底边a与高h是参数,面 积S就是返回的函数值。
4.编写自定义函数;
自定义函数如下:
Private Function SJXs(ByVal a As String, By Vai h As Single) As Single
SJXs = a * h/2
End Sub
其中:
Private 一作用同过程声明中的Private,也可以是:Private> Public、Friend三种。
Function ---表示是函数,具别于Sub。
SJXs -…函数的名称。
(ByVai a As String,ByVai h As Single)—- 一对括号里包含2个参数,同过程格式。
As Single --这个表示函数的返回值的数据类型。
5.调用自定义函数;
调用格式:函数名(参数列表)
例如:调用上述求三角形面积的函数:
Dim a as Single,h as Single,S as Single
a = Val(lnputBox(“请输入三角形的底边长〃))
h = Val(lnputBox(“请输入三角形的高〃))
S = SJXs(a,h)
Print S
到此,我们已经了解了高级语言系统提供自定义过程和函数(也称为函数过程)的意义; 和口定义过程和函数的代码格式,以及调用格式。通常我们习惯把过程和函数统称为子程序, 把调用它们的部分称为主程序。下而我们为了方便,出现“了程序”的地方就是指针对“过 程”和“函数”这个概念。
2.子程序的一般格式:
1.过程的一般格式:
[Private | Public | Friend] [Static] Sub 过程名[(参数列表)]
语句组2
[Exit Sub]
[语句组2]
End Sub
2.函数的一般格式:
[Public | Private | Friend] [Static] Function 函数名[(参数列表)][As 数据类型]
语句组1
[函数名二表达式]
[Exit Function]
[语句组2]
[函数名二表达式]
End Function
3.子程序中的参数及传递类型:
1.形参与实参;
形参--形式参数,在定义语句中岀现的参数。
实参.…实际参数(实在参数),在调用语句中出现的参数
例如:我们前面的例了屮:
Private Sub Pline2(ByVal Ch As String, By Vai n As Integer)
• • •
End Sub
和
Private Function SJXs(ByVal a As String, By Vai h As Single) As Single
SJXs = a * h/2
End Sub
其中:Ch、nparameter数据类型、a、h,都叫做形参;
而;
Call Plinel("・",80)
Call Plinel(//*,;100)
Call Pline2(Cl,nl)
Call Pline2(Cl,n2)
Call Pline2(C2,n2)
S = SJXs(a,h)
其中:“•”、80、"*"、100、Cl、C2、nix n2、a、h,都叫做实参。
2.参数的类型
子程序中的(参数列表)的一般格式:
[Optional] [ByVai | ByRef] [ParamArray]参数名[()][As 数据类型]匸默认值]
格式小的关键字By Vai在前面的例子小,己经出现,现在我们來分别介绍关键字:
[Optional] [ByVai | ByRef] [ParamArray]的含义与作用:
1)By Vai •…该参数以传值方式进行调用;
当发牛调用子程序的时候,主程序将实际参数的数值(数据)根据一一对应的位證,传 递给子程序的形式参数。
由于是“传值”方式,所以实际参数可以是表达式;
例如:求三角形面积的例子;
Dim x as single, y as single, z as single,S as single
x = 4
Y = 2
S = SJXs(x+y?x-y)'这里x+y的值传递给形式参数a, x-y的值传递给形式参数h
Prints
2)ByRef•…该参数以传址方式进行调用;
当发生调用了程序的时候,主程序将实际参数的地址(不是数据)根据一一对应的位置, 传递给子程序的形式参数。由于是“传址”方式,所以实际参数通常用变屋;(如果用表达 式,那么将失去传址的意义,其作用与ByVai声明一样,进行传值操作)
1当声明自定义子程序的时候,参数前可以选关键字ByVai或ByRef,如果省略前面的 关键字,就默认为是ByRef类型的;
2用ByRef或ByVai声明的子程序,调用时实际参数与形式参数的位置一一对应,且个 数相等、数据类型一一对应一致
例:交换两个变量的值;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论