控制结构(一)Visual Basic 5.0(中文版)程序设计
结构化程序的基本控制结构有三种:顺序结构、选择结构和循环结构。其中顺序结构程序按语句的书写顺序执行,比较简单。本期介绍其他控制结构。
选择结构程序设计
VB 5.0的选择结构通过条件语句(If语句)来实现,它有两种格式, 一是单行结构,一是块结构。
1. 单行结构条件语句
单行条件语句比较简单,其格式如下:
If 条件 True then部分 [Else else部分]
该语句的功能是:如果"条件"为True,则执行"then部分",否则执行"else部分"。例如
If x>y then tot=tot+1 Else tot=tot-1
2. 块结构条件语句
一般格式如下:
If条件1 Then
语句块1
[E1seIf 条件2 Then
语句块2]
[E1seIf 条件3 Then
语句块3]
......
[E1se
语句块n]
End If
块结构条件语句的功能是:如果"条件1"为True,则执行"语句块1" ;否则如果"条件2"
为True,则执行"语句块2"......否则执行"语句块 n"。
这里的"语句块"可以是一个语句,也可以是多个语句。当有多个语句时,可分别写在多行里;如果写在一行中,则各语句之间应用冒号隔开。例如:
If (X>0) And (Y< Z) Then
Amount=(X+Y+Z*2)/2
Try.Text=Str$(Amount)
End If
也可以写作:
If (X>0) And (Y< Z) Then
Amount=(X+Y+Z*2)/2:Try.Text=Str$(Amount)
End If
块形式条件语句中的ElseIf子句和Else子句都是可选的。如果省略这些子句,则块形式的条件语句简化为:
If 条件 Then
语句块
End If
例如:
If C<0 Then
Text1.Text="Good morning"
End If
这种块形式的条件语句也可写成单行形式,即:
If C<0 Then Text1.Text="Good morning"
块形式的条件语句可以嵌套,即把一个If...Then...Else块放在另一个If...Then.. .Else块内。嵌套必须完全"包住",不能互相"骑跨"。
多分支结构程序设计
在VB 5.0中,多分支结构程序可通过情况语句,也称Select Case 语句或Case语句来实现,它根据一个表达式的值,在一组相互独立的可选语句序列中挑选要执行的语句序列。其功能类似于Fortran语言中的计算转移(Computed
GoTo)语句和C、Pascal、Ada语言中的Case语句。在情况语句中,有很多成分语句,它是块形条件语句的一种变形。
情况语句的一般格式为:
Select Case 测试表达式
Case 表达式表列1
[语句块1]
[Case表达式表列2
[语句块2]]
......
[Case Else
[语句块n]]
End Select
情况语句以Select Case开头,以End Case结束。其功能是:根据" 测试表达式"的值,从多个语句块中选择符合条件的一个语句块执行。
说明:
1. 情况语句中含有多个参量,其含义分别为:
·测试表达式:可以是数值表达式或字符串表达式,通常为变量或常量;
·语句块1、语句块2......每个语句块由一行或多行合法的Visu al Basic语句组成
·表达式表列1、表达式表列2......称为域值,可以是下列形式之一:
(1) 表达式[,表达式]......。例如:
Case 2,4,6,8
(2) 表达式 To 表达式。例如:
Case 1 To 5
(3) Is关系运算表达式,使用的运算符包括:
< <= > >= <>=
例如:
Case Is=12
"表达式表列"中的表达式必须与测试表达式的类型相同。
2. 情况语句的执行过程是:先对"测试表达式"求值,然后测试该值与哪一个Case子句中的"表达式表列"相匹配;如果找到了,则执行与该Case语句有关的语句块,并把控制转移到End
Select后面的语句;如果没有找到,则执行与Case Else子句有关的语句块,然后把控制转移到End Select后面的语句。例如:
Sub Form_Click ()
msg = "Enter data"
var = InputBox(msg)
Select Case var
Case 1
text1.Text ="1"
Case 2
text1.Text ="2"
Case 3
text1.Text ="3"
Case Else
text1.Text ="Good bye"
End Select
End Sub
3. 使用"表达式表列"时应注意以下几点:
·关键字To用来指定一个范围,因此必须把较小的值写在前面,较大的值写在后面,字符串常量的范围必须按字母顺序写出。例如:
Case -5 To -1
Case"dvark" To "kear"
·如果使用关键字Is,则只能用关系运算符。例如:
Case Is<5
·在Select Case语句中,三种形式可以混用。例如:
Case Is>Lowerbound,5,6,12,Is Case Is<"HAN","Mao"
To "Tao"
4. Select Case语句与If...Then...Else语句块的功能类似,一般可使用块形式条件语句的地方,也可使用情况语句。Select
Case语句和块形式的If...Then...Else语句的主要区别是:Select Case语句只对单个表达式求值,并根据求值结果执行不同的语句块;而块形式的条件语句可对不同的表达式求值,因而效率较高。
5. 如果同一个域值的范围在多个Case子句中出现,则只执行符合要求的第一个Case 子句的语句块。
6. Case Else子句必须放在所有的Case子句之后。如果在Select Case结构中的任何一个Case子句都没有与测试表达式相匹配的值,而且也没有Case
Else子句,则不执行任何操作。
For循环结构程序设计
VB 5.0提供三种不同风格的循环结构,包括:计数循环(For-Next 循环)、当循环(Whi le-Wend循环)和Do循环(Do-Loop循环)。其中For
-Next循环按规定的次数执行循环体,而While循环和Do循环则是在给定的条件满足时执行循环体。本期介绍For循环控制结构。
For循环也称For-Next循环或计数循环。一般格式如下:
For 循环变量=初值 To 终值[ Stop步长]
[循环体]
[Exit For]
Next [循环变量][,循环变量]...
例如:
For x=1 to 100 Step 1
Sum=Sum+x
Next x
该例从1到100,步长为1,共执行100次Sum=Sum+x。其中x是循环变量,1是初值,100是终值,Step后面的1是步长值,Sum=Sum+x是循环体。
说明:
1. For格式中有多个参量,这些参量的含义如下:
·循环变量:亦称"循环控制变量"、"控制变量"或"循环计数器"
。它是一个数值变量,但不能是下标变量或记录元素。
·初值:循环变量的初值,它是一个数值表达式。
·终值:循环变量的终值,它也是一个数值表达式。
·步长:循环变量的增量,是一个数值表达式。其值可以是正数( 递增循环)或负数(递减循环),但不能为0。如果步长为1,则可略去不写。
·循环体:在For语句和Next语句之间的语句序列,可以是一个或多个语句。
·Exit For:退出循环。
·Next:循环终结语句,在Next后面的"循环变量"与For语句中的" 循环变量"必须相同。
格式中的初值、终值、步长均为数值表达式,但其值不一定是整数,可以是实数,VB 5.0自动取整。
2. For循环语句的执行过程是:首先把"初值"赋给"循环变量",接着检查"循环变量"的值是否超过终值,如果超过就停止执行"循环体",
跳出循环,执行Next后面的语句;否则执行一次"循环体",然后把"循环变量+步长"的值赋给"循环变量",重复上述过程。
这里所说的"超过"有两种含义,即大于或小于。当步长为正值时, 检查循环变量是否大于终值;当步长为负值时,判断循环变量的值是否小于终值。
下面通过例子说明For-Next循环的执行过程:
t=0
For I=1 to 10 step 2
t=t+I
Print t
Next I
在这里,I是循环变量,循环初值为1,终值为10,步长为2,t=t+I和P rint t是循环体。执行过程如下:
(1) 把初值1赋给循环变量I;
(2) 将I的值与终值进行比较,若I >10,则转到5,否则执行循环体;
(3) I增加一个步长值,即I=I+2;
(4) 返回2继续执行;
(5) 执行Next后的语句。
3. 当循环变量达到终值时,For-Next正常结束。但有些情况,可能需要在循环变量到达终值前退出循环,此时可用Exit
For语句来实现。在一个For-Next循环中,可以含有一个或多个Exit For语句,且可出现在循环体的任何位置。此外,用Exit
For只能退出当前循环,即退出它所在的最内层循环。例如:
For i=1 to 100
For j=1 to 100
Print i+j;
If i*j>5000 Then Exit For
Next j
Next i
在执行上述程序时,如果i*j>5000,程序将从内层循环中退出;如果外层循环还没有结束,则控制仍回到内层循环中去。
刘炳文 张(王申)