Visual Basic 2005 程式設 計 第 5 章流程控制
5-1 認識流程控制 判斷結構 (decision structures) If...Then Else Select Case Try Catch Finally 迴圈結構 (loop structures) For...Next For Each...Next Do...Loop While End While
5-2 If Then Else 5-2-1 If Then: 如果 就 ( 單向選擇 ) If condition Then statement If condition Then statement1 statement2 statementn End If
\MyProj5-1\Module1.vb Module Module1 Sub Main() Dim Num As Integer Num = CInt(InputBox(" 請輸入 0-100 的數字 ")) If Num >= 60 Then MsgBox(" 及格!") End Sub End Module
5-2-2 If Then Else: 如果 就 否則 ( 雙向選擇 ) If condition Then 1 Else 2 End If
Module Module1 Sub Main() Dim Num As Integer Num = CInt(InputBox(" 請輸入 0-100 的數字 ")) If Num >= 60 Then MsgBox(" 及格!") Else MsgBox(" 不及格!") End If End Sub End Module
5-2-3 If Then ElseIf : 如果 就. 否則如果 就 否則 ( 多向選擇 ) If condition1 Then 1 ElseIf condition2 Then 2 ElseIf condition3 Then 3 Else N+1 End If
5-3 Select Case Select Case expression Case value1 1 Case value2 2 Case valuen N Case Else N+1 End Select
作業 5-1 流程控制練習 利用 RadioButton 及控制流程作個人資料輸入並以 Msgbox( 是否取消 ) 決定後續處理 : 1. 是 : 以 Msgbox 顯示輸入資料並結束程式 2. 取消 : 以 Msgbox 顯示重新輸入 3. 否 : 以 Msgbox 顯示放棄輸入並結束程式 1~3 使用 Select Case, 其餘使用 if
5-4 For Next ( 計數迴圈 ) For counter = startvalue To endvalue [Step stepvalue] [Exit For] Next [counter] 將 counter 的值設定為 startvalue counter <= endvalue? False 跳出迴圈 True 執行迴圈主體 將 counter 的值加上 stepvalue
\MyProj5-6\Module1.vb Module Module1 Sub Main() Dim Total As Integer = 0 Dim I As Integer For I = 1 To 10 Step 1 Total = Total + I Next MsgBox("1 到 10 之間所有整數的總和為 " & Total) End Sub End Module 1. Step 可加或不加 ( 內定加一 ) 2. Step 可為負 : for i=10 to 1 step -1 3. 兩個曹巢狀 for 迴圈不得使用相同計數變數 4. For next 之計數變數勿在迴圈內以程式改變
break 陳述式的妙用 01:Dim I, Result As Integer 02:Result = 1 03:For I = 1 To 15 04: If I > 6 Then Exit For 05: Result = Result * I 06:Next 07:MsgBox(" 計算出來的值為 " & Result)
5-5 For Each Next ( 陣列迴圈 ) For Each element In group [Exit For] Next [element]
Module Module1 Sub Main() Dim Score(3), Item As Integer Score(0) = 90 Score(1) = 86 Score(2) = 73 Score(3) = 54 For Each Item In Score MsgBox(Item) 不要加 () Next End Sub End Module
5-6 條件式迴圈 條件式迴圈不同於 for 迴圈, 後者是以其內的計數器來當做迴圈執行的根據, 而前者則沒有所謂的計數器, 它是以條件式成立與否來判斷迴圈的執行與否 使用條件迴圈須確定條件在迴圈中會被改變以免掉入無窮迴圈
5-6-1 Do While Loop Do Loop While Do While condition [Exit Do] Loop Condition 在 DO Loop 中必要會被改變 先判斷條件成立後再執行
Do [Exit Do] Loop While condition 先執行再判斷條件至少執行 Do---Loop 一次 執行迴圈主體 condition ( 條件式 ) False True
\MyProj5-11\Module1.vb Module Module1 Sub Main() Dim Answer As String Answer = InputBox(" 請輸入 快樂 的英文 ") Do While UCase(Answer) <> "HAPPY" Answer = InputBox(" 答錯了, 請重新輸入 快樂 的英文!") Loop MsgBox(" 答對了!") End Sub End Module
5-6-2 Do Until Loop Do Loop Until Do Until condition [Exit Do] Loop
Do [Exit Do] Loop Until condition 執行迴圈主體 condition ( 條件式 ) False True
使用 Do Until Loop 迴圈改寫前一個隨堂練習 <MyProj5-11> \MyProj5-12\Module1.vb Module Module1 Sub Main() Dim Answer As String Answer = InputBox(" 請輸入 快樂 的英文 ") Do Until UCase(Answer) = "HAPPY" Answer = InputBox(" 答錯了, 請重新輸入 快樂 的英文!") Loop MsgBox(" 答對了!") End Sub End Modul
5-6-3 While End While While condition [Exit While] End While condition ( 條件式 ) False True 執行迴圈主體
使用 While End While 迴圈改寫第 5-6-1 節的隨堂練習 <MyProj5-11> \MyProj5-15\Module1.vb Module Module1 Sub Main() Dim Answer As String Answer = InputBox(" 請輸入 快樂 的英文 ") While UCase(Answer) <> "HAPPY" Answer = InputBox(" 答錯了, 請重新輸入 快樂 的英文!") End While MsgBox(" 答對了!") End Sub End Module
5-7 Continue 陳述式 \MyProj5-16\Module1.vb Module Module1 Sub Main() Dim I As Integer For I = 1 To 15 If I <= 12 Then Continue For MsgBox(I) Next End Sub End Module
5-8 With End With 語法 : With object End With 假設將 MyLabel 標籤控制項物件的 Height Width 等屬性設定為 50 20, 那麼可以寫成如下 : MyLabel.Height = 50 MyLabel.Width = 20 我們可以使用 With End With 改寫成如下 : With MyLabel.Height = 50.Width = 20 End With
5-9 無條件跳躍 -Goto 陳述式 例如 : Goto L3 A = 10 A = 20 L3: A = 30 Goto 會破壞程式之結構性應儘量避免使用
5-10 小錦囊 ( 一 ) 如何使用 IIf() 函式? IIf(expression, truepart, falsepart) \MyProj5-18\Module1.vb Module Module1 Sub Main() Dim Answer As Integer Dim Result As Object Answer = CInt(InputBox(" 請輸入任意數字 ")) Result = IIf(Answer > 100, " 大於 100", " 小於等於 100") MsgBox(Result) End Sub End Module
5-11 小錦囊 ( 二 ) 如何使用 Choose() 函式? Choose(expression, value1[, value2, value3,, valuen]) \MyProj5-19\Module1.vb Module Module1 Sub main() Dim Answer As Double Dim Result As Object Answer = CDbl(InputBox(" 請輸入 1-5 數字 ")) Result = Choose(Answer, "One", "Two", "Three", "Four", "Five") MsgBox(Answer & " 的英文為 " & Result) End Sub End Module
作業 5-2 目的 :1. 練習主從表單功能 2. 練習 For..Next 及 Do while Loop Form1: 主選單功能 具有 2 個子選單 : Form2: 基本功能 : 利用 for next 寫出 2008 年月曆, 使用者輸入月份程式以 msgbox 顯示該月月曆 進階功能 :1. 利 PictureBox 顯示照片每月不同 2. 擴充為萬年曆 Form3: 利用亂數產生 1~20 間之正整數, 以 DO while.loop 迴圈判斷直到使用者輸入正確數值