第三章 程序流程控制 一、教学内容 在Visual Basic6.0中,其流程控制语句分为条件测试语句和循环语句。本章将重点介绍这两种流程控制语句的用法与功能 二、目的要求 1.熟练掌握行if语句、块if结构、Select Case情况选择结构有使用,掌握选择的嵌套结构; 2.熟练掌握实现循环结构的For/Next循环结构及Exit For语句、Do/Loop循环结构的使用,掌握多重循环。 三、教学重点与难点 教学重点:选择结构及循环结构的实现及其应用 教学难点:选择的嵌套及多重循环结构 四、教学方法 多媒体教学为主。适当提问,加深学生对概念的理解。 第一讲 (2学时) 一、教学内容 3种条件测试语句:由If构成的两种类型测试语句和由Select Case构成的测试语句 二、目的要求 1.熟悉If…Then结构,If…Then…Else结构,Select…Case 结构 2.了解多重If语句,If语句的嵌套 三、教学重点与难点 教学重点:If…Then结构,If…Then…Else结构。 教学难点: 多重If语句,If语句的嵌套 四、教学方法 多媒体教学。  五、教学过程 3.1.1 If测试语句 1. If…Then结构 单行语句格式: If 条件表达式 Then 语句 多行语句格式: If 条件表达式 Then 语句块 End If 2. If…Then…Else结构  语句格式: If 条件表达式 Then 语句块1 Else 语句块2 End If 3. 多重If语句 语句格式: If 条件表达式1 Then 语句块1 ElseIf 条件表达式2 Then 语句块2 ElseIf 条件表达式3 Then 语句块3 …… ElseIf 条件表达式n Then 语句块n Else 语句块 End If  例:以下示例完成对所输入的整数进行判断,若输入数为正数,则显示“大于零”,若输入数为负数,则显示“小于零”,否则显示“等于零”。 在Command1按钮的Click事件中输入如下代码: Private Sub Command1_Click() If Val(Text1.Text) < 0 Then Text2.Text = (小于零( ElseIf Val(Text1.Text) > 0 Then Text2.Text = (大于零( Else Text2.Text = (等于零( End If End Sub 3.1.2 Select Case测试语句 1. Select Case语句的一般形式 语句格式: Select Case 测试表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 …… Case 表达式列表n 语句块n Case Else 语句块 End Select 【例3.1】 将输入文本框中的所有小写字母转换成大写字母,并将一些特殊符号变成等价的字符串,如DLR表示$、AT表示@、0/0表示%、BPT表示#、AND表示&等。可以在KeyPress事件中修改文本框控件的缺省操作,使它能在用户输入这些字符时进行相应修改。 Private Sub Text1_KeyPress (KeyAscii As Integer) Dim spesymbols As String Dim ch As String (1 Spesymbols=($#%&@( ch= Chr(KeyAscii) If InStr(Spesymbols,ch) Then KeyAscii=0 Else KeyAscii = Asc(Ucase(ch)) Exit Sub End If Select Case ch Case ($(: Text1.SelText=(DLR( Case (#(: Text1.SelText=(BPT( Case (%(: Text1.SelText=(0/0( Case (&(: Text1.SelText=(AND( Case (@(: Text1.SelText=(AT( End Select End Sub 六、小结 在这一讲里,我们经常需要对给定的条件进行判断或比较,然后根据判断的结果来决定下一步将采取的操作,这时便可以使用条件测试语句来实现。它有三种结构。单分支,双分支和多重分支,我们都要学会,并运用。 七、作业 习题3.1 第二讲 (2学时) 一、教学内容 For…Next、Do…Loop、While…Wend三种循环的用法 二、目的要求 1.熟悉While…Wend循环的用法 2.掌握For…Next、Do…Loop循环的用法 三、教学重点与难点 教学重点:For…Next、Do…Loop循环的用法 教学难点: 循环的嵌套 四、教学方法 多媒体教学。 五、教学过程 3.2.1 For...Next循环结构 语句格式: For counter = start To end [ Step increment] 语句块1 [Exit For] 语句块2 Next [counter] 说明:在使用这种循环结构时,要求知道执行循环的次数。  【例3.2】 求sum=1+2+3+…+100。用For…Next循环结构实现 程序代码如下: Private Sub Command1_Click() Dim sum As Integer, I As Integer sum=0 For I=1 To 100 sum=sum+I Next I Label2.Caption=Str(sum) End Sub 3.2.2 Do…Loop循环结构 语句格式1: Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop 语句格式2: Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] 说明:在循环次数不能确定的情况下进行的,那么这时便需要用到循环控制结构Do…Loop  【例3.5】用Do…Loop循环结构实现求和sum=1+2+3+…+100。 编写程序代码。 解法一:采用当型循环Do While…Loop Private Sub Command1_Click() Dim i As Integer,sum As Integer i=1 '计数器初值置为1 sum=0 '累加器初值置为0 Do While i<=100 '当型循环 sum=sum+i i=i+1 '每次循环变量加1 Loop Label2.Caption=Str(sum) End Sub 解法二:采用直到型循环Do Until…Loop Private Sub Command1_Click() Dim i As Integer,sum As Integer i=1 '计数器初值置为1 sum=0 '累加器初值置为0 Do Until i>100 sum=sum+i i=i+1 Loop Label2.Caption=Str(sum) End Sub 3.2.3 While…Wend循环控制结构 此语句是为了保持与低版本Visaul Basic兼容而保留的。在实际应用中,它与Do While…Loop结构非常相似。 六、小结 在这一讲里,我们要掌握For…Next、Do…Loop循环的用法,其中循环的嵌套不容易理解。大家要多自己编些程序来熟悉它 七、作业 习题3.2,3.6