1、控制结构语句有了控制结构就可控制程序执行的流程。如果未复选控制流语句,程序便从左至右、自顶向下地贯穿这些语句。有些简单程序可以只用单向流程来编写,有些流程可以依靠运算符的优先级来控制,但任何编程语言的效力和用途皆由其通过结构和循环改变语句顺序的能力而得。一、判定结构Visual Basic 过程能够测试条件式,然后根据测试结果执行不同的操作。Visual Basic 支持的判定结构有:1.If.Then2.If.Then.Else3.Select Case(一) 、If.Then用 If.Then 结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:If 条件 Then 执行语句I
2、f 条件 Then执行语句End If条件 通常是比较式,但它可以是任何计算数值的表达式。Visual Basic 将这个值解释为 True 或 False:一个为零的数值为 False,而任何非零数值都被看作 True。若 条件 为 True,则 Visual Basic 执行 Then 关键字后面的所有 执行语句。可以使用单行或多行语法有条件地执行一个语句(下面两个例子等价):If X 1 Then Y = 100If X 1 ThenY = 100End If注意:If.Then 的单行格式不用 End If 语句。如果 条件 为 True 时要执行多行代码,则必须使用多行块 If.Th
3、en.End If 语法。If X 1 ThenY = 100 注意,这里有一行以上的执行语句,必须使用多行块形式写Z = 200End If(二) 、If.Then.Else用 If.Then.Else 块定义几个语句块,执行其中一个语句:If 条件 1 Then执行语句-1ElseIf 条件 2 Then执行语句-2 .Else执行语句-nEnd IfVisual Basic 首先测试 条件 1。如果它为 False,Visual Basic 就测试条件 2,依此类推,直到找到一个为 True 的条件。当它找到一个为 True 的条件时,Visual Basic 就会执行相应的语句块,然后
4、执行 End If 后面的代码。作为一个选择,可以包含 Else 语句块,如果条件都不是 True,则 VisualBasic 执行 Else 语句块。If.Then.ElseIf 只是 If.Then.Else 的一个特例。注意,可以使用任意数量的 ElseIf 子句,或者一个也不用。可以有一个 Else 子句,而不管有没有 ElseIf 子句。例如,应用程序可以根据菜单控件数组中哪个控件被单击而采取相应的动作:Private Sub mnuCut_Click (Index As Integer)If Index = 0 Then “剪切”命令。CopyActiveControl 调用通用过
5、程。ClearActiveControlElseIf Index = 1 Then “复制”命令。CopyActiveControlElseIf Index = 2 Then “清除”命令。ClearActiveControlElse “粘贴”命令。PasteActiveControlEnd IfEnd Sub注意,总是可以添加更多的 ElseIf 块到 If.Then 结构中去。但是,当每个 ElseIf 都将相同的表达式比作不同的数值时,这个结构编写起来很乏味。在这种情况下可以使用 Select Case 判定结构。(三) 、Select CaseVisual Basic 提供 Selec
6、t Case 结构替代 If.Then.Else,从而可在多个语句块中有选择地执行其中一个。Select Case 语句的能力与 If.Then.Else 语句类似,但对多重选择的情况,Select Case 语句使代码更加易读。Select Case 在结构的上方处理一个测试表达式并只计算一次。然后,VisualBasic 将表达式的值与结构中的每个 Case 的值进行比较。如果相等,就执行与该 Case 相关联的语句块。Select Case 表达式(值)Case 表达式(值)1执行语句-1Case 表达式(值)2执行语句-2Case Else执行语句-nEnd Select每一个 表达式
7、(值) 是一个或几个值的列表。如果在一个列表中有多个值,就用逗号把值隔开。每一个 执行语句 中含有零个或多个语句。如果不止一个 Case 与测试表达式相匹配,则只对第一个匹配的 Case 执行与之相关联的语句块。如果在表达式列表中没有一个值与测试表达式相匹配,则 Visual Basic 执行 Case Else 子句(此项是可选的)中的语句。例如,假定在 If.Then.Else 的例子中要向“编辑”菜单添加命令。为此可以另加一个 ElseIf 子句,或用 Select Case 来写函数:Private Sub mnuCut_Click (Index As Integer)Select C
8、ase IndexCase 0 “剪切”命令。CopyActiveControl 调用通用过程。ClearActiveControlCase 1 “复制”命令。CopyActiveControlCase 2 “清除”命令。ClearActiveControlCase 3 “粘贴”命令。PasteActiveControlCase ElsefrmFind.Show 显示找到的对话框。End SelectEnd Sub注意 Select Case 结构每次都要在开始处计算表达式的值。而 If.Then.Else 结构为每个 ElseIf 语句计算不同的表达式。只有在 If 语句和每一个 ElseI
9、f 语句计算相同表达式时,才能用 Select Case 结构替换 If.Then.Else 结构。二、循环结构循 环 是 在 指 定 的 条 件 下 多 次 重 复 执 行 一 组 语 句 。 VB 中 提 供 了 两 种 类 型 的 循 环语 句 :计 数 循 环 语 句 和 条 件 型 循 环 语 句 ( 一 ) 、 For 循 环 语 句 ( 知 道 循 环 次 数 的 计 数 型 循 环 )语 句 形 式 : For 循 环 变 量 = 初 值 To 终 值 Step 步 长 语 句 块Exit For 语 句 块Next 循 环 变 量说 明 :1) 循 环 变 量 必 须 为 数
10、 值 型2) 步 长 一 般 为 正 , 初 值 小 于 终 值 ; 若 为 负 , 初 值 大 于 终 值 ; 缺 省 步 长 为 1;3) 语 句 块 可 以 是 一 句 或 多 句 语 句 , 称 为 循 环 体 ;4) Exit For 表 示 当 遇 到 该 语 句 时 , 退 出 循 环 体 ; 执 行 Next 的 下 一 句 ;循 环 次 数 =int( ( 终 值 - 初 值 ) /步 长 +1)5) 退 出 循 环 后 , 循 环 变 量 的 值 保 持 退 出 时 的 值 ;6) 在 循 环 体 内 对 循 环 变 量 可 多 次 引 用 , 但 不 要 对 其 赋 值
11、, 否 则 影 响 结 果 。( 二 ) 、 DoLoop 循 环 ( 不 知 道 循 环 次 数 的 条 件 型 循 环 ) 是 用 于 控 制 循 环 次 数 未 知 的 循 环 结 构 , 语 法 形 式 有 两 种 : 形 式 1: Do While LoopDo While | Until 条 件 语 句 块 Exit Do语 句 块Loop形 式 2: Do Loop While D o语 句 块 Exit Do语 句 块Loop While | Until 条 件 说 明 :1) 形 式 1 为 先 判 断 后 执 行 , 有 可 能 一 次 也 不 执 行 ;2) 形 式 2
12、为 先 执 行 后 判 断 , 至 少 执 行 一 次 ;3) 关 键 字 While 用 于 指 明 条 件 为 真 时 就 执 行 循 环 体 中 的 语 句 , Until 刚 好 相 反 ;4) 当 省 略 了 While|Until 条 件 字 句 , 即 循 环 结 构 仅 由 DoLoop 关 键 字 构 成时 , 表 示 无 条 件 循 环 , 这 时 循 环 体 内 应 该 有 Exit Do 语 句 , 否 则 为 死 循 环 ;5) Exit Do 语 句 表 示 当 遇 到 该 语 句 时 , 退 出 循 环 , 执 行 Loop 的 下 一 语 句 。( 三 ) 、 循 环 的 嵌 套指 在 循 环 体 内 又 包 含 了 一 个 完 整 的 循 环 结 构 。 循 环 嵌 套 对 For 循 环 和DoLoop 循 环 均 适 用 。语 句 形 式 : For 循 环 变 量 1 = 初 值 To 终 值 Step 步 长 For 循 环 变 量 2 = 初 值 To 终 值 Step 步 长 语 句 块Exit For 语 句 块Next 循 环 变 量 2语 句 块Exit For 语 句 块Next 循 环 变 量 1例如:典型的“九九乘法表” 。