第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3...

22
6 6 第 第第第第 第 第第第第 6-1 6-1 第第第第 第第第第 6-2 6-2 第第第第 第第第第 6-3 6-3 第第第第 第第第第 6-4 6-4 While/End While While/End While 第第 第第 6-5 6-5 第第第第 第第第第 6-6 6-6 VB.NET VB.NET 第第第第第 第第第第第 6-7 6-7 第第 第第

Post on 21-Dec-2015

259 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

第第 66 章 迴圈結構章 迴圈結構 6-1 6-1 計數迴圈計數迴圈 6-2 6-2 條件迴圈條件迴圈 6-3 6-3 巢狀迴圈巢狀迴圈 6-4 6-4 While/End WhileWhile/End While 迴圈迴圈 6-5 6-5 跳出迴圈跳出迴圈 6-6 6-6 VB.NETVB.NET 的錯誤處理的錯誤處理 6-7 6-7 習題習題

Page 2: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-1 6-1 計數迴圈計數迴圈 6-1-1 6-1-1 For To/NextFor To/Next 迴圈迴圈 6-1-2 6-1-2 For Step/NextFor Step/Next 迴圈迴圈

Page 3: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-1 6-1 計數迴圈計數迴圈 VB.NETVB.NET 的計數迴圈可以自行維護計數器變的計數迴圈可以自行維護計數器變

數,我們只需指定範圍和增量,就可以重數,我們只需指定範圍和增量,就可以重複執行程式區塊的程式碼。複執行程式區塊的程式碼。

Page 4: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-1-1 6-1-1 For To/NextFor To/Next 迴圈迴圈 -- 語法語法 For To/NextFor To/Next 迴圈可以執行固定次數的迴圈,預迴圈可以執行固定次數的迴圈,預

設每次增加設每次增加 11 ,如果到達結束條件,就結束迴圈,如果到達結束條件,就結束迴圈的執行,其語法如下所示:的執行,其語法如下所示:For For 變數 變數 = = 起始值 起始值 To To 終止值終止值 程式區塊程式區塊Next Next 變數變數

上述迴圈的「變數」是計數器變數,其範圍是從上述迴圈的「變數」是計數器變數,其範圍是從「起始值」到「終止值」,每次增加「起始值」到「終止值」,每次增加 11 ,執行迴,執行迴圈的次數是:「終止值」圈的次數是:「終止值」 -- 「起始值」「起始值」 +1+1 次,其次,其中中 NextNext 指令後的「變數」可以省略。指令後的「變數」可以省略。

Page 5: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-1-1 6-1-1 For To/NextFor To/Next 迴圈迴圈 -- 範例範例 計算計算 11 加到加到 1010 總和的總和的

迴圈,如下所示:迴圈,如下所示:Dim intI, intTotal As IntegerDim intI, intTotal As Integer

For intI = 1 To 10For intI = 1 To 10

intTotal = intTotal + intIintTotal = intTotal + intI

Next intINext intI

Page 6: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-1-2 6-1-2 For Step/NextFor Step/Next 迴圈迴圈 如果如果 For/NextFor/Next 迴圈的增量不是迴圈的增量不是 11 ,我們可,我們可

以使用以使用 StepStep 指令指定每次增加或減少的量,指令指定每次增加或減少的量,如果使用負數值,表示每次是將計數器變如果使用負數值,表示每次是將計數器變數減掉數減掉 StepStep 值,此時的值,此時的 For To For To Step/NextStep/Next 迴圈,如下所示:迴圈,如下所示:For intI = 100 To 1 Step -1For intI = 100 To 1 Step -1

intTotal = intTotal + intIintTotal = intTotal + intI

Next intINext intI

Page 7: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-2 6-2 條件迴圈條件迴圈 -- 種類種類 條件測試的位置分成兩種,如下所示:條件測試的位置分成兩種,如下所示:

• 前測式重複結構:前測式重複結構:在迴圈開始使用在迴圈開始使用 WhileWhile 或或 UntilUntil 指指令測試迴圈條件,其語法如下所示:令測試迴圈條件,其語法如下所示:

Do [While | Until] Do [While | Until] 條件條件 程式區塊程式區塊LoopLoop• 後測式重複結構:後測式重複結構:在迴圈結尾使用在迴圈結尾使用 WhileWhile 或或 UntilUntil 指指

令測試迴圈條件,因為是在結尾測試條件,此迴圈至令測試迴圈條件,因為是在結尾測試條件,此迴圈至少會執行一次,其語法如下所示:少會執行一次,其語法如下所示:

DoDo 程式區塊程式區塊Loop [While | Until] Loop [While | Until] 條件條件

Page 8: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-2 6-2 條件迴圈條件迴圈 --Do While/LoopDo While/Loop

當當 WhileWhile 指令的測試條指令的測試條件成立才能進入迴圈,如件成立才能進入迴圈,如下所示:下所示:

intI = 1 intI = 1

intTotal = 0intTotal = 0

Do While intI <=10Do While intI <=10

intTotal = intTotal + intIintTotal = intTotal + intI

intI = intI + 1 intI = intI + 1

LoopLoop

Page 9: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-2 6-2 條件迴圈條件迴圈 --Do Until/LoopDo Until/Loop

UntilUntil 條件在迴圈開始條件在迴圈開始檢查,迴圈是執行到條檢查,迴圈是執行到條件成立為止,如果條件件成立為止,如果條件不成立就進入迴圈,如不成立就進入迴圈,如下所示:下所示:

intI = 1 intI = 1 intTotal = 0intTotal = 0Do Until intI >10Do Until intI >10 intTotal=intTotal + intIintTotal=intTotal + intI intI = intI + 1 intI = intI + 1 LoopLoop

Page 10: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-2 6-2 條件迴圈條件迴圈 --Do/Loop WhileDo/Loop While

Do/LoopDo/Loop 迴圈可以使迴圈可以使用用 WhileWhile 條件在迴圈結條件在迴圈結尾檢查,這個尾檢查,這個 Do/Do/LoopLoop 迴圈至少會執行迴圈至少會執行一次,如下所示:一次,如下所示:

intI = 1 intI = 1 intTotal = 0intTotal = 0DoDo intTotal=intTotal + intIintTotal=intTotal + intI intI = intI + 1 intI = intI + 1 Loop While intI <=10Loop While intI <=10

Page 11: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-2 6-2 條件迴圈條件迴圈 --Do/Loop UntilDo/Loop Until

Do/LoopDo/Loop 迴圈如果使用迴圈如果使用UntilUntil 條件在迴圈結尾檢條件在迴圈結尾檢查,這個迴圈也一樣至少查,這個迴圈也一樣至少執行一次,如下所示:執行一次,如下所示:

intI = 1 intI = 1

intTotal = 0intTotal = 0

DoDo

intTotal = intTotal + intIintTotal = intTotal + intI

intI = intI + 1 intI = intI + 1

Loop Until intI > 10Loop Until intI > 10

Page 12: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-3 6-3 巢狀迴圈巢狀迴圈 6-3-1 6-3-1 For/NextFor/Next 巢狀迴圈巢狀迴圈 6-3-2 6-3-2 混合的巢狀迴圈混合的巢狀迴圈

Page 13: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-3 6-3 巢狀迴圈巢狀迴圈 巢狀迴圈是在迴圈內擁有其它的迴圈結構。巢狀迴圈是在迴圈內擁有其它的迴圈結構。 例如:在例如:在 For/NextFor/Next 迴圈擁有迴圈擁有 For/NextFor/Next 和和

Do/LoopDo/Loop 迴圈,同樣的,迴圈,同樣的, Do/LoopDo/Loop 迴圈迴圈內也可以擁有內也可以擁有 For/NextFor/Next 和和 Do/LoopDo/Loop 迴圈。迴圈。

Page 14: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-3-1 6-3-1 For/NextFor/Next 巢狀迴圈巢狀迴圈 最簡單的巢狀迴路是在最簡單的巢狀迴路是在 For/NextFor/Next 迴圈中擁有其它迴圈中擁有其它

的的 For/NextFor/Next 迴圈(因為不用自行處理計數器變迴圈(因為不用自行處理計數器變數),一個二層的巢狀迴圈結構的範例,如下所示:數),一個二層的巢狀迴圈結構的範例,如下所示:' ' 第一層第一層For intI = 1 To 10For intI = 1 To 10 ' ' 第二層第二層 For intJ = 1 To intIFor intJ = 1 To intI output &= "*"output &= "*" Next intJNext intJ output &= vbNewLineoutput &= vbNewLineNext intINext intI

Page 15: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-3-2 6-3-2 混合的巢狀迴圈混合的巢狀迴圈 VB.NETVB.NET 的巢狀迴圈可以混合的巢狀迴圈可以混合 For/NextFor/Next 和和 Do/Do/

LoopLoop 迴圈結構,例如:在迴圈結構,例如:在 For/NextFor/Next 迴圈內擁有迴圈內擁有Do/Loop UntilDo/Loop Until 迴圈,如下所示:迴圈,如下所示:' ' 第一層第一層For intI = 1 To 9For intI = 1 To 9 ' ' 第二層第二層 intJ = 1intJ = 1 DoDo …………… …………… intJ += 1intJ += 1 Loop Until intJ > 9Loop Until intJ > 9Next intINext intI

Page 16: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-4 6-4 While/End WhileWhile/End While 迴圈迴圈 While/End WhileWhile/End While 就是舊版就是舊版 VB 6VB 6 的的

While/WendWhile/Wend 迴圈,這是一種在迴圈開頭迴圈,這是一種在迴圈開頭檢查的迴圈,例如:從檢查的迴圈,例如:從 11 加到加到 1010 的程式碼,的程式碼,如下所示:如下所示:Dim total As Integer = 0Dim total As Integer = 0

Dim counter As Integer = 1Dim counter As Integer = 1

While counter <= 10While counter <= 10

total += countertotal += counter

counter += 1counter += 1

End WhileEnd While

Page 17: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-5 6-5 跳出迴圈跳出迴圈 6-5-1 6-5-1 Exit ForExit For 指令指令 6-5-2 6-5-2 Exit DoExit Do 指令指令

Page 18: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-5 6-5 跳出迴圈跳出迴圈 不論使用不論使用 For/NextFor/Next 或或 Do/LoopDo/Loop 迴圈,程迴圈,程

式都會依條件重複執行一定的次數,如果式都會依條件重複執行一定的次數,如果因程式所需要中斷迴圈的執行,即跳出迴因程式所需要中斷迴圈的執行,即跳出迴圈 。圈 。

For/NextFor/Next 使用使用 Exit ForExit For 指令指令 Do/LoopDo/Loop 使用使用 Exit DoExit Do 指令指令

Page 19: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-5-1 6-5-1 Exit ForExit For 指令指令 如果在如果在 For/NextFor/Next 迴圈尚來到達結束條件時,可迴圈尚來到達結束條件時,可

以使用以使用 Exit ForExit For 指令強迫跳出指令強迫跳出 For/NextFor/Next 迴圈,迴圈,如此馬上就會結束迴圈的執行,如下所示:如此馬上就會結束迴圈的執行,如下所示:For intI = 1 To 100 Step 1For intI = 1 To 100 Step 1

… …

If amount <= 0 ThenIf amount <= 0 Then

Exit For ‘ Exit For ‘ 離開離開 ForFor 迴圈迴圈 End IfEnd If

… …

NextNext

Page 20: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-5-2 6-5-2 Exit DoExit Do 指令指令

Do/LoopDo/Loop 迴圈需要自己處理迴圈的結束條件且確認迴迴圈需要自己處理迴圈的結束條件且確認迴圈能夠結束,如果沒有使用圈能夠結束,如果沒有使用 WhileWhile 或或 UntilUntil 指令在迴圈指令在迴圈頭尾測試條件,單純頭尾測試條件,單純 Do/LoopDo/Loop 迴圈是一個無窮迴圈,迴圈是一個無窮迴圈,如果不指定終止條件,我們可以使用如果不指定終止條件,我們可以使用 Exit DoExit Do 指令結指令結束迴圈,如下所示:束迴圈,如下所示:DoDo … ….. If str = "" ThenIf str = "" Then Exit DoExit Do End IfEnd If … …..LoopLoop

Page 21: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-6 6-6 VB.NETVB.NET 的錯誤處理的錯誤處理 -- 說明說明 錯誤處理是指在程式執行時,如果發生不錯誤處理是指在程式執行時,如果發生不

正常的執行狀態時,我們可以在程式碼中正常的執行狀態時,我們可以在程式碼中處理這些錯誤,錯誤處理的目的是為了讓處理這些錯誤,錯誤處理的目的是為了讓程式能夠更加的「強壯」(程式能夠更加的「強壯」( RobustRobust ),),如此這算程式遇到不尋常的情況,也不會如此這算程式遇到不尋常的情況,也不會造成程式「崩潰」(造成程式「崩潰」( CrashingCrashing ),),進而導進而導致整個系統當機的情況。致整個系統當機的情況。

Page 22: 第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5

6-6 6-6 VB.NETVB.NET 的錯誤處理的錯誤處理 -- 語法語法 VB.NETVB.NET 提供更結構化的錯誤處理敘述,即提供更結構化的錯誤處理敘述,即

Try/End TryTry/End Try ,,其語法如下所示:其語法如下所示:Try Try ' ' 測試的錯誤程式碼測試的錯誤程式碼 程式區塊程式區塊Catch e As ExceptionCatch e As Exception ' ' 錯誤處理的程式碼錯誤處理的程式碼 程式區塊程式區塊FinallyFinally 程式區塊程式區塊End TryEnd Try