Visual Basic 语 言 程 序 设 计第 5章 VB程序设计语句
5.1 赋值语句
– 赋值语句是任何程序设计语言中最基本的语句。
– 格式:[ LET] 变量名 =表达式
– 功能:它的作用是把右边表达式的值赋给左边的变量。
– 说明:
(1)LET表示赋值,通常可以省略。
(2)表达式的类型应与变量的类型一致,即同时为数值型或同时为字符型。当是数值型且有不同精度时,强制转换成左边的精度。
Visual Basic 语 言 程 序 设 计
5.1 赋值语句
例如,A%=6.3?A为整型变量
A中的结果为 6
在 VB中,赋值语句通常是给变量赋值和设置对象属性值。
1.给变量赋值
– 例如:
Dim A As Integer
Dim B As String*10
A=100
B="我是中国人 "
– 可以将一个表达式的值赋给一个变量,所以下面的赋值语句是合法的:
Dim S As Integer
Dim P As Single
S=600+1000
P=3.14*S+200*500
Visual Basic 语 言 程 序 设 计
5.1 赋值语句
– 2.为对象设置属性值
– 在程序中可以用赋值语句为对象的属性设置属性值。
– 格式:对象,属性 =属性值
例如:为命令按钮 Command1的 Caption属性设置值。
– Command1.Caption="显示文本 "
为文本框 Text1的 FontName及 FontSize属性设置值:
– Text1.FontName=“隶书,
– Text1.FontSize=32
Visual Basic 语 言 程 序 设 计
5.2 条件语句
VB提供了多种形式的条件语句来实现选择结构。
对条件进行判断,根据判断结果,选择执行不同的分支。
Visual Basic 语 言 程 序 设 计
5.2.1 分支结构
1.单分支结构 (If… Then语句 )格式:
– (1) If〈 条件 〉 Then
– 〈 语句块 〉
– End If
– (2) If〈 条件 〉 Then〈 语句 〉
功能:
– (1)如果 〈 条件 〉 为真,执行 Then后面的 〈 语句块 〉,如果条件为假,不执行 Then后面的语句块,而执行 End If后的语句。如图 5.1所示。
– (2)如果 〈 条件 〉 为真,执行 Then后面的 〈 语句 〉,如果条件为假,不执行 Then后面的 〈 语句 〉 。
Visual Basic 语 言 程 序 设 计
5.2.1 分支结构
2.双分支结构 (If… Then… Else语句 )格式:
– If〈 条件 〉 Then
– 〈 语句块 1〉
– Else
– 〈 语句块 2〉
– End If
– 功能,如果 〈 条件 〉 为真,执行 Then后面的 〈 语句块 1〉,
如果 〈 条件 〉 为假,执行 Else后面的 〈 语句块 2〉 。
【 例 5.1】 计算分段函数。用双分支结构实现:
– y=sinx+(x 2+1) x≠0
– y=cos-x 3+3x x=0
– If x<>0 Then
– y=sin(x)+(x*x+1)
– Else
– y=cos(x)-x^3+3*x
– End If
Visual Basic 语 言 程 序 设 计
5.2.1 分支结构
3.IIf函数
– IIf函数可用来执行简单的条件判断操作,它是
,If… Then… Else”结构的简写版本。
– 格式,result=IIf(〈 条件 〉,〈 True部分 〉,〈 False部分 〉 )
– 功能:当 〈 条件 〉 为真时,IIf函数返回,True部分,,而当
〈 条件 〉 为假时,IIf函数返回,False部分,。
– 说明,result函数的返回值,〈 True部分 〉,〈 False部分 〉
及结果变量的类型要一致。
Visual Basic 语 言 程 序 设 计
IIf函数
例如:
– If x>10 Then
– r=1
– Else
– r=2
– End If
而用 IIf函数来代替,可以使程序大大简化。
– r=IIf(x>10,1,2)
【 例 5.2】 某大学实行按学分收费,如果不超过 12学分,应缴纳学费为 4000元,如果超过 12学分,每超过 1学分,加收 500元学费。
输入学分 U,输出学分 U和应缴纳的学费 T。
【 例 5.3】 设计一个对输入整数求和的程序,输入 0时程序结束运行。
Visual Basic 语 言 程 序 设 计
5.2.1 分支结构
4.多分支结构 (If… Then… ElseIf语句 )
– 格式:
If〈 条件 1〉 Then
〈 语句块 1〉
ElseIf〈 条件 2〉 Then
〈 语句块 2〉
……
Else
〈 语句块 n+1〉
End If
– 功能:这种结构称为多分支结构。先测试 〈 条件 1〉,如果 〈 条件 1〉 为真,
执行 Then后面的 〈 语句块 1〉 ;如果 〈 条件 1〉 为假继续 〈 条件 2〉,如果
〈 条件 2〉 为真,执行后面 〈 语句块 2〉 ; … 。如此测试下去。如果所有条件都为假,则执行 Else后面的 〈 语句块 n+1〉 。
【 例 5.4】 在文本框中,输入学生成绩,判断其等级,在窗体中输出。
Visual Basic 语 言 程 序 设 计
5.2.2 情况语句
情况语句 (Select Case )的一般格式:
– Select Case〈 测试表达式 〉
– Case〈 表达式列表 1〉
– 〈 语句块 1〉
– Case〈 表达式列表 2〉
– 〈 语句块 2〉
– ……
– Case〈 表达式列表 n〉
– 〈 语句块 n〉
– [ Case Else
– 〈 语句块 n+1〉 ]
– End Select
【 例 5.5】 用户在文本框 Text1中分别输入,Dot,Line,Box,Circle,在窗体上分别画一个点、一条线、一个矩形、或一个圆等图形,然后在 End
Select语句出口。
Visual Basic 语 言 程 序 设 计
5.3 循环语句
5.3.1 For循环
– 格式:
For〈 循环变量 〉 =〈 初值 〉 To〈 终值 〉 [ Step 步长]
〈 循环体 〉
[ Exit For]
Next〈 循环变量 〉
– 功能:
当循环变量的值在初值到终值范围内时,执行一次循环体中的语句块,并使初值增加一个步长。当循环变量的值不在初值到终值范围内时,就退出循环,执行 Next后面的语句。 For循环语句执行的流程图如图 5.5所示。
Visual Basic 语 言 程 序 设 计
5.3.1 For循环
【 例 5.6】 计算 S=1+2+3+...+10的和。
– 计算机执行一个 For 循环的过程是,
(1)执行 For 语句,把初值 1赋给循环变量 P即 P=1,把终值 10和步长 1保存起来。
(2)按顺序执行循环体中的语句 S=S+1,即 S=1;
(3)执行 Next语句,把循环变量 P增加一个步长 1,P=P+1,
即 P=2,P不大于 10,继续执行循环体 S=S+P;
(4)接着执行 Next语句,如果 P不大于 10,就继续执行循环体,如果 P大于 10,就不再执行循环体,转向到 Next语句后面的语句去执行。
Visual Basic 语 言 程 序 设 计
5.3.2 Do循环
Do循环语句用于控制循环次数未知的循环结构。此种语句有两种语法形式。
格式 1:
– Do {While|Until}〈 条件 〉
– 语句块
– [ Exit Do]
– 语句块
– Loop
格式 2:
– Do
– 语句块
– [ Exit Do]
– 语句块
– Loop {While|Until}〈 条件 〉
– 功能:当指定的关键字 While用于指明 〈 条件 〉 为真 (True)时,执行循环体。
Visual Basic 语 言 程 序 设 计
5.3.2 Do循环
说明:
– (1)格式 1为先判断后执行,有可能一次也不执行;
格式 2为先执行后判断,至少执行一次循环体。两种格式的 While的流程图分别如图 5.6(a)和 5.6(b)
所示。
– (2)关键字 Until用于指明 〈 条件 〉 为假 (False)时,
执行循环体。
– (3)Exit Do:当执行该语句时,退出循环,执行
Loop的下一句。 Exit Do一般放在 If… Then… End
If语句中。
Visual Basic 语 言 程 序 设 计
5.3.2 Do循环
下面是最简单的形式,While子句的作用是当给定的条件为真时继续执行循环体,当条件为假时终止循环。
– Do While〈 条件 〉
– 〈 循环体 〉
– Loop
– 【 例 5.7】 用 Do While语句编写计算
S=1+2+3+...+10的和的程序。
Visual Basic 语 言 程 序 设 计
5.3.3 多重循环
在循环体内又包含了一个完整的循环结构,称为循环的嵌套。循环嵌套对 For循环语句和
Do… Loop语句均适用。
【 例 5.8】 打印九九表。程序运行结果如图 5.7
所示。
Visual Basic 语 言 程 序 设 计
5.3.4 GoTo语句
格式,GoTo {标号、行号 }
功能:该语句的作用是无条件地转移到标号或行号指定的那行语句。
【 例 5.9】 求 100以内的素数。
判断某数 m是否为素数的方法很多,最简单的方法是从素数的定义来求解,其算法思想是:对于 m从 i=2,
3,…,m-1判别 m能否被 i整除,只要有一个数能整除,
m不是素数,否则 m是素数。
Visual Basic 语 言 程 序 设 计
5.3.5 End语句
格式,End
功能:结束程序的运行。它可放在任何一个事件过程中。
Visual Basic 语 言 程 序 设 计
5.3.6 应用举例
【 例 5.10】 求 S=1+3+5+… +99之和。
【 例 5.11】 求 S=1*2*3*… *10之积。
【 例 5.12】 二重循环的运行结果。
【 例 5.13】 运行下列程序。
【 例 5.14】 编写在窗口上显示如图 5.8图案的程序。
【 例 5.15】 设计一个计算 1+2+3+...+...之和直到累加结果超过 30000的程序。
【 例 5.16】 用 Do While循环,求 S=1+2+3+...+100之和。
【 例 5.17】 用 Do While循环,求 S=5*4*3*2*1之积。
【 例 5.18】 产生若干个随机数,直到有一个随机数大于 0.9为止的程序。
【 例 5.19】 产生 50个两位随机整数的程序。
【 例 5.20】 产生 12个 30~100随机整数的程序。
【 例 5.21】 输出 1~50之间,能被 3整除的数,并累加这些数的和。
Visual Basic 语 言 程 序 设 计
5.4 数 组
5.4.1 数组的概念
– S(0,0) S(0,1) S(0,2) S(0,3) S(0,4)
– S(1,0) S(1,1) S(1,2) S(1,3) S(1,4)
– S(2,0) S(2,1) S(2,2) S(2,3) S(2,4)
– … … … …
– S(6,0) S(6,1) S(6,2) S(6,3) S(6,4)
– 在 VB中如果没有特别的说明,数组元素的下标是从 0开始的,即第一元素的下标为 0。
– 数组分静态数和动态数组。在定义数组时已确定了数组的大小,
称为静态数组。在定义数组时未给出数组的大小,省略了括号中的下标,称动态数组。
Visual Basic 语 言 程 序 设 计
5.4.2 静态数组的定义
在 VB中,可以用 4个语句来定义数组。 4个语句格式相同,但适应范围不一样。
– Dim 用在窗体模块或标准模块中,定义窗体或标准模块数组,也可在过程中用。
– ReDim 用在过程中。
– Static 用在过程中。
– Public 用在标准模块中,定义全局数组。
– 格式,Dim〈 数组名 〉 (下标 )[ As 类型]
– Dim〈 数组名 〉 ([下界 TO]上界 )[,[下界 To]上界] … [ As 类型]
Visual Basic 语 言 程 序 设 计
5.4.2 静态数组的定义
功能:定义一个数组各维的大小,并分配相应的存储空间。
说明:
– (1)格式中的数组名与简单变量的命名规则相同。
– (2)下标是数组的维数,可以用来定义多维数组,在一般情况下,若缺省[上界],则数组元素下标的下界为 0;当使用[下界 To 上界 … ]时,下标的范围可以为 -32 768~ 32767。一维数组的大小为:
(上界 -下界 +1)。
下界都必须小于上界。如果希望下标从 1开始,可以通过 Option Base语句来实现。
格式,Option Base N
功能:指定数组下标的缺省下界为 1。
说明:如果不使用该语句,程序默认数组的下标下界为 0。 Option Base
语句在程序中只能使用一次;使用时必须把它放在数组定义之前才起作用。
Visual Basic 语 言 程 序 设 计
5.4.2 静态数组的定义
– (3)[ As 数据类型]项,用来说明数组的类型,类型可以是:
整型 Integer
长整型 Long
单精度 Single
双精度 Double
字符串型 String
用户定义型
– (4)DIM语句中的下标可以是常数,变量或表达式。下标全为常数称为静态数组,即数组大小在编译时是确定的。下标中有变量则称为动态数组,数组的大小是可变的,只有在程序运行时,变量有确定的值后,数组的大小才确定。
– (5)数组必须先定义,后使用。
– (6)当用 Dim语句定义数组时,该语句把数值数组中的全部数组元素都初始化为 0,而把字符串数组中的全部元素都初始化为空字符串。
Visual Basic 语 言 程 序 设 计
5.4.2 静态数组的定义
例如:
– Dim A(4) As String
定义了类型为字符型的一维数组 A,共有 5个元素,A(0),A(1),A(2)、
A(3),A(4)。
– Dim B(1,3 To 5) As Integer
定义了一个整型的二维数组,共有 6个元素,B(0,3),B(0,4),B(0,
5),B(1,3),B(1,4)和 B(1,5)。
– Dim S(5 To 5,2 To 10 ) As String*20
定义 S是一个定长字符串组成的二维数组,下标范围是 5~ 5,2~ 10。每个数组元素的字符串长度是 20。
– Dim X(10) As Integer
定义了数组 X,有 11个元素
– X(10)=100
对 X(10)这个数组元素赋值为 100
Visual Basic 语 言 程 序 设 计
5.4.3 数组下标界的测试函数
有时需要知道数组的上界值和下界值,这可以通过
LBound和 UBound函数来测试。
格式,LBound(数组名[,维] )
格式,UBound(数组名[,维] )
功能,LBound函数返回一个数组中指定维的下界。
UBound函数返回一个数组中指定维的上界。
【 例 5.22】 测试三维数组的每维的下界和上界的大小。
Visual Basic 语 言 程 序 设 计
5.4.4 动态数组的定义
格式,ReDim 〈 数组名 〉 (下标 )[ As〈 类型 〉 ]
功能:改变动态数组的大小和存储空间。
说明:
例如:
– Dim A(20,20,20)
– ……
– ReDim A(10,10,10) '重新定义动态数组 A的空间
– ……
– ReDim A(5,5,5) '再重新定义动态数组 A的空间
– 此程序是采用动态数组,能根据应用的情况确定数组的大小,因此编写的程序有更强的实用性和通用性。
Visual Basic 语 言 程 序 设 计
5.4.5 数组的清除和重新定义
在一个程序中,同一数组只能用 Dim语句定义一次。但有时可能需要清除数组的内容或对数组重新定义,这可以用 Erase语句来实现。
格式,Erase〈 数组名 〉 [,〈 数组名 〉 ] …
功能:用于重新初始化静态数组的元素,或者释放动态数组的存储空间。
– 例如,
Dim T(10) As Integer
……
Erase T
【 例 5.23】 用 Erase语句初始化数组。
Visual Basic 语 言 程 序 设 计
5.4.5 数组的清除和重新定义
程序是定义了一个静态数组 T,用 For循环语句为每个数组的元素赋值,然后执行 Erase语句,
将各数组元素的值清除。程序的运行结果如下:
– 1 2 3 4 5
– 0 0 0 0 0
Visual Basic 语 言 程 序 设 计
5.4.6 数组的基本操作
数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。
– 1.给数组元素赋初值
(1)利用 For循环语句
– Dim A(5) As Integer
– For I=1 To 5
– A(I)=0 '数组的每个元素值为 0
– Next
(2)利用 Array函数
– 在 VB中可以使用 Array函数为数组元素赋值,即把一个数据集赋值给某个数组。
Visual Basic 语 言 程 序 设 计利用 Array函数
格式,〈 数组变量名 〉 =Array(数组元素值 )
功能:将数组元素值赋给数组各元素的值,各值之间用逗号分隔。
说明:数组变量名是预先定义的数组名 (定义时没有指定维数和上下界,并且类型必须为变量体类型 Variant),在数组变量名之后没有括号。
【 例 5.24】 用 Array函数给数组赋值。
说明:
– (1)利用 Array函数对数组各元素赋值,定义数组时圆括号可以省略,
其类型只能是 Variant。
– (2)数组的下界为零,上界由 Array函数括号内的参数个数决定,也可通过函数 UBound获得。
Visual Basic 语 言 程 序 设 计
5.4.6 数组的基本操作
2.数组的输入
– 数组的输入可以用 For循环语句及文本框控件输入,也可以通过 InputBox函数输入。
– (1)InputBox函数给数组赋值
【 例 5.25】 用 InputBox函数给数组赋值。
– (2)用赋值语句给数组赋值
3.数组元素的输出
– 多维数组元素的输出和输入都可以通过多重循环来实现。由于 VB中的数组是按行存储的,因此把控制数组第一维的循环变量放在最外层循环中。
– 【 例 5.26】 二维数组的输入与输出。
Visual Basic 语 言 程 序 设 计
5.4.6 数组的基本操作
4.数组元素的复制
– 【 例 5.27】 把 N数组中的数据复制到 M数组中,程序如下:
Visual Basic 语 言 程 序 设 计
5.4.7 数组应用举例
– 【 例 5.28】 用数组输入 5个整数,按逆序排列。
– 【 例 5.29】 用数组输入 5个整数,找出最大的数。
– 【 例 5.30】 求数组中最大元素值和所在的下标及各元素之和。
– 【 例 5.31】 输入一个字符串,统计各字母出现的次数,字母不区分大小写。程序的运行结分析:
(1)统计 26个字母出现的个数,要定义一个具有 26个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。
(2)从输入的字符串中逐一取出字符,转换成大写字符 (使得大小写不区分 ),进行判断。
– 【 例 5.32】 用选择法将数组排序。对于已知存放在数组中的 n个数,
用选择法按递增顺序排,
– 【 例 5.33】 用冒泡排序法将数组排序。对于已知存放在数组中的 n个数,用冒泡法递增顺序排序。
Visual Basic 语 言 程 序 设 计
5.5 控件数组
前面我们介绍了数值数组和字符数组。在 VB中,
还提供了控件数组,它为处理一组功能相近的控件提供有力的方法。
Visual Basic 语 言 程 序 设 计
5.5.1 控件数组的概念
控件数组是由一组相同类型的控件组成。他们共用一个控件名,具有相同的属性,但通常有不同的属性值。当建立控件数组时,系统给每个元素赋一个惟一的索引号
(Index),即下标,下标值由 Index属性指定。通过属性窗口的 Index属性,可以知道该控件的下标是多少,第 1个元素下标是 0,第 2个元素下标是 1,以此类推。其所有的元素的 Name属性必须相同。控件数组共享同样的事件过程。
例如,控件数组 Command有 3个命令按钮,不论单击哪个命令按钮,都会调用同一个事件过程。
Visual Basic 语 言 程 序 设 计
5.5.1 控件数组的概念
为了区分控件数组中的各个元素,VB会把下标值传送给一个过程。例如,单击上述控件数组中的任意一个命令按钮时,调用的事件过程如下:
– Private Sub Command_Click(Index As
Integer)
– …
– End Sub
Visual Basic 语 言 程 序 设 计
5.5.2 控件数组的建立
控件数组是针对控件建立的,因此与普通数组的定义方法不一样。可以通过以下三种方法来建立控件数组。
– 1.在设计时建立控件数组方法一:
(1)在窗体上画出作为数组元素的各个控件。
(2)单击要包含到数组中的某个控件,将其激活。
(3)在属性窗口中,选择 Name属性,并输入控件的名称。
当对第二个控件输入与第一个控件相同的名称后,VB将显示一个对话框,如图 5.11所示,询问是否确实要建立控件数组。单击,是,按钮,将建立控件数组,单击,否,按钮,则放弃建立操作。
Visual Basic 语 言 程 序 设 计
5.5.1 控件数组的概念
方法二:
– (1)在窗体上画出一个控件,将其激活。
– (2)执行,编辑,菜单中的,复制,命令 (或者按 Ctrl+C命令 ),
将该控件放入剪贴板中。
– (3)执行,编辑,菜单中的,粘贴,命令 (或者按 Ctrl+V命令 ),
将显示一个对话框,询问是否建立控件数组,如图 5.11所示。
– (4)单击对话框中的,是,按钮,窗体的左上角将出现一个控件,它就是控件数组的第二个元素。
– (5)重复执行,编辑,菜单中的,粘贴,命令 (或者按 Ctrl+V
命令 ),可以建立控件数组的其他元素。
– 删除控件数组,只要改变一个控件的 Name属性,并把 Index属性置为空 (不是 0),就把该控件从控件数组中删除。
Visual Basic 语 言 程 序 设 计
5.5.1 控件数组的概念
【 例 5.34】 建立 3个命令按钮的控件数组,当单击某个命令按钮时,分别执行不同的操作。
建立控件数组的操作步骤如下:
– (1)在窗体上建立一个命令按钮,并把其 Name属性设置为 cmdTest,然后用,编辑,菜单中的,复制,
命令和,粘贴,命令复制两个命令按钮。
– (2)把第一、第二、第三个命令按钮的 Caption属性分别设置为,命令按钮 1”,,命令按钮 2”,,命令按钮 3”。
Visual Basic 语 言 程 序 设 计
5.5.1 控件数组的概念
2.在运行时添加控件数组
– 【 例 5.35】 在窗体上建立一个命令按钮、两个单选按钮和一个图片框。每单击一次命令按钮,增加一个新的单选按钮。如果单击某个单选按钮,则在图片框中画出具有不同填充图案的圆。
– 本例需要 4个控件,属性的设置如表 5.1所示。
Visual Basic 语 言 程 序 设 计
5.6 过 程
VB的通用过程包括两大类:它们是 Sub过程 (即子程序 )和 Function过程 (即函数 )。
Visual Basic 语 言 程 序 设 计
5.6.1 过程的定义
自定义子过程有两种方法:在,工具,菜单中定义和在代码窗口中定义。
– 1.在,工具,菜单中定义 2.在代码窗口中定义
自定义子过程的格式如下:
– [ Public|Private][ Static] Sub子过程名 ([形参表列] )
– 〈 语句块 〉
– [ Exit Sub]
– [语句块]
– End Sub
功能:定义一个 Sub过程。
Visual Basic 语 言 程 序 设 计
5.6.1 过程的定义
说明:
– (1)Public:表示 Sub过程是,公用,过程,可在整个程序范围被调用 (但需要指明该子程序所在的对象名,如果在窗体 Form1中定义了一个程序 Sub1,在窗体 From2中调用它,应该用,Call Form1.Sub1。
– (2)Private:表示 Sub过程是,私用,过程,只能被本窗体中的其他过程访问,不能被其他模块的过程访问。
– (3)Static:表示该过程中的局部变量是静态变量,在过程被调用后其值仍然保留;如果省略,Static”,则局部变量就默认为,自动,
的,即在每次调用过程时,局部变量被初始化为 0或空字符串。
Static对在过程之外的变量没有影响,即使这些变量在过程中使用。
– (4)形参表列:是含在调用时传给该过程的简单变量名或数组名,各名字之间用逗号隔开。
Visual Basic 语 言 程 序 设 计
5.6.1 过程的定义
–,形参表列,指明了调用时传送给过程的参数的类型和个数,每个参数的形式:
[ ByVal] (变量名[ ()][ As 类型,] …… ] )
– 参数也称形参或哑元,在定义时没有值。 ByVal表示该过程被调用时,参数是值传递,否则引用传递。定义子过程或子函数时,都可以无参数,但函数过程无参数时,函数过程名后的括号不能省略。这是函数过程与子过程的区别。
(5)过程名:是长度不超过 255个字符的变量名。其命名规则与变量命名规则相同。不要与 VB中的关键字重名,也不要与 Windows API函数重名,
也不能与同一级别的变量同名。在同一个模块中,同一个名称,不能既用作 Sub过程名,又用作 Function过程名。
(6)[ Exit Sub]:表示退出子过程。
(7)Static:表示静态,Public:表示全局,Private:表示局部。
【 例 5.36】 编写一个计算加减乘除的 Sub过程。
Visual Basic 语 言 程 序 设 计
5.6.2 过程的调用
在 VB中可以用两种方法调用 Sub过程。
– (1) 使用 Call语句调用 Sub过程。
– 格式,Call 过程名 ([实参表列] )
– 功能:调用过程。
– 说明:实参的个数、数据类型都要与被调用过程的参数一一对应。
例如下面是调用 Compute过程的语句:
– a1=10.5
– b1=10.5
– Call Compute(a1,b1)
如果过程不带参数,Call语句中过程后的一对括号可以省去,例如有一过程 Sum不带参数,调用语句只是一行:
– Call Sum
这是合法的。
Visual Basic 语 言 程 序 设 计
5.6.2 过程的调用
(2) 直接使用过程名调用 Sub过程,而不必有 Call。
– 格式,过程名[实参[实参] …… ]
– 功能:调用过程。
– 说明:不用括号把实参括起来。例如,也可以这样调用上面的过程:
Compute a1,b1
– 不带参数的过程可以直接写过程名即可,假如 Compute过程没有参数,以下调用是符合 VB语法的:
Compute
– 【 例 5.37】 编写一个过程调用上面的过程 Compute程序。
Visual Basic 语 言 程 序 设 计
5.6.3 退出过程
在过程中可以对给出的条件测试,并根据测试的结果确定是否退出过程,如果要退出过程,
则使用 Exit Sub语句。
一进入过程,首先测试变量 b的值是否等于 0,
如果 b的值为 0,立即退出 Compute过程。避免在执行过程中出现错误 (被零除 )。
Visual Basic 语 言 程 序 设 计
5.6.4 Sub Main过程
如果一应用程序只包含一个窗体,则程序从执行窗体 Form
的 Load过程开始。如果有多个窗体,则从设计阶段建立的第一个窗体开始执行。有时,希望在运行窗体程序之前先执行一些操作,此时,可以将这些操作写在 Sub Main过程中。
Sub Main是在模块中定义的,如果一个程序中包含有多个模块,只能允许有一个 Sub Main过程。 Sub Main过程中可以包含若干语句。但它与其他语言中的主程序不同,程序启动时不会自动执行。人们可以指定程序从哪一个窗体或是 Sub Main开始执行。方法如下:
Visual Basic 语 言 程 序 设 计方法为:
– (1)选择 VB主窗口中的,工程,菜单中的,属性,命令,打开
,工程属性,对话框,单击,通用,选项,如图 5.17所示。
– (2)单击对话框中的,启动对象,框右端的箭头,显示出当前工程中各窗体的名字和 Sub Main,可以定义启动工程时先启动的窗体或 Sub Main。如果选择了 Sub Main,则程序运行时从模块的 Sub Main过程开始。常常用 Sub Main来完成一些初始处理。
– 【 例 5.38】 Sub Main过程的应用。
Sub Main也可以被其他过程调用,如:
Call Main
Visual Basic 语 言 程 序 设 计
5.7 函 数
5.7.1 函数的定义
– 函数与过程相似,也是用来完成特定功能的独立程序代码,它由一组符合 VB语法的语句组成,它与过程不同的是,函数可以返回一个值给调用程序。自定义函数过程的格式如下:
[ Public|Private][ Static] Function函数过程名 ([形参表列] )[ As 类型]
局部变量常量定义
〈 语句块 〉
函数名 =返回值
[ Exit Function]
函数名 =返回值
[语句块]
End Function
Visual Basic 语 言 程 序 设 计函数的定义
功能:定义一个函数过程。
说明:
– (1)Function与 End Function是一个函数的开始与结束标志。
– (2)Public:表示函数是,公用的,,Private:表示函数是,私用的,。
– (3)形参表列:变量名[ As类型][,变量名[ As类型] … ][ As类型]用来表示函数返回值的类型。
– (4)[ Exit Function]:表示退出函数过程。
– (5)建立一个函数的方法与建立过程是相同的。
【 例 5.39】 定义一个函数来完成加法功能。
Private Function Add(a As Integer,b As Integer)As Integer
Add=a+b
End Function
– 表示函数 Add是,私用的,,形参 a和 b为整型,函数返回值也是整型。
Visual Basic 语 言 程 序 设 计
5.7.2 函数的调用
如果要想在过程中调用一个函数,只需写出函数名和相应的参数即可。
【 例 5.40】 用一个过程调用上述 Add函数。
– Private Sub Command1_Click()
– Dim x(1 To 2) As Single
– For I=1 To 2
– x(I)=InputBox("Enter a value","INPUT BOX")
– Next I
– Sum=Add(x(1),x(2))
– Print "Sum="; Sum
– End Sub
先定义一个数组 x,有两个元素 x(1),x(2)。从输入框中用户输入的数赋给
x(1)和 x(2),调用 Add函数,以 x(1),x(2)作为实参,调用 Add函数将此二数相加,其和由函数名 Add返回,调用过程 Command1的 Click事件,赋给变量,
最后输出 Sum的值。
Visual Basic 语 言 程 序 设 计
5.7.3 退出函数语句
使用 Exit Function语句可以从当前调用的函数中直接退出。例如修改以上 Add函数如下:
– 【 例 5.41】 编写一个 Function过程,求数组的最大值。