Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 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-6 錯誤處理 6-6 錯誤處理.

Similar presentations


Presentation on theme: "第 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-6 錯誤處理 6-6 錯誤處理."— Presentation transcript:

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 跳出與繼續迴圈 6-5 跳出與繼續迴圈 6-6 錯誤處理 6-6 錯誤處理

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

3 6-1-1 For To/Next 迴圈 - 語法 For To/Next 迴圈可以執行固定次數的迴圈,預 設每次增加 1 ,如果到達結束條件,就結束迴圈執 行。其語法如下所示: For To/Next 迴圈可以執行固定次數的迴圈,預 設每次增加 1 ,如果到達結束條件,就結束迴圈執 行。其語法如下所示: For 變數 = 起始值 To 終止值 程式區塊 程式區塊 Next 變數 上述迴圈的「變數」是計數器變數,其範圍是從 「起始值」到「終止值」,每次增加 1 ,執行迴圈 的次數是:「終止值」 - 「起始值」 +1 次,其中 Next 關鍵字後的「變數」可以省略。 上述迴圈的「變數」是計數器變數,其範圍是從 「起始值」到「終止值」,每次增加 1 ,執行迴圈 的次數是:「終止值」 - 「起始值」 +1 次,其中 Next 關鍵字後的「變數」可以省略。

4 6-1-1 For To/Next 迴圈 - 語法 例如:計算 6 加到 15 總和的迴圈,如下所示: 例如:計算 6 加到 15 總和的迴圈,如下所示: Dim intI, intTotal As Integer For intI = 6 To 15 intTotal = intTotal + intI intTotal = intTotal + intI Next intI 上述程式碼是從 6 加到 15 以計算總和,變數 intI 值依序為 6 、 7 、 8 、 9 、.. 和 15 ,總共 執行 15-6+1 共 10 次迴圈。 上述程式碼是從 6 加到 15 以計算總和,變數 intI 值依序為 6 、 7 、 8 、 9 、.. 和 15 ,總共 執行 15-6+1 共 10 次迴圈。

5 6-1-1 For To/Next 迴圈 - 流程圖

6 6-1-2 For Step/Next 迴圈 For/Next 迴圈的增量如果不是 1 ,我們可以使用 Step 關鍵字指定每次增加或減少的量。如果使用 負數值,表示每次是將計數器變數減掉 Step 值, 此時 For Step/Next 迴圈,如下所示: For/Next 迴圈的增量如果不是 1 ,我們可以使用 Step 關鍵字指定每次增加或減少的量。如果使用 負數值,表示每次是將計數器變數減掉 Step 值, 此時 For Step/Next 迴圈,如下所示: For intI = 100 To 1 Step -1 intTotal = intTotal + intI intTotal = intTotal + intI Next intI 上述程式碼倒過來從 100 加到 1 ,變數 intI 值依序 100 、 99 、 98 、 97 、 … 、 3 、 2 、 1 共執行 100 次 迴圈,其流程圖和上一節圖例相似,只是每次增 加量改為 -1 。 上述程式碼倒過來從 100 加到 1 ,變數 intI 值依序 100 、 99 、 98 、 97 、 … 、 3 、 2 、 1 共執行 100 次 迴圈,其流程圖和上一節圖例相似,只是每次增 加量改為 -1 。

7 6-2 條件迴圈 6-2-1 Do While/Loop 迴圈 6-2-1 Do While/Loop 迴圈 6-2-2 Do Until/Loop 迴圈 6-2-2 Do Until/Loop 迴圈 6-2-3 Do/Loop While 迴圈 6-2-3 Do/Loop While 迴圈 6-2-4 Do/Loop Until 迴圈 6-2-4 Do/Loop Until 迴圈

8 6-2-1 Do While/Loop 迴圈 - 說明 Do/Loop 迴圈可以使用 While 條件在迴圈開頭檢 查,開頭檢查的目的是檢查是否允許進入迴圈, 當 While 的測試條件成立才能進入迴圈。例如: 計算 1 萬元 5 年複利 18% 的本利和,如下所示: Do/Loop 迴圈可以使用 While 條件在迴圈開頭檢 查,開頭檢查的目的是檢查是否允許進入迴圈, 當 While 的測試條件成立才能進入迴圈。例如: 計算 1 萬元 5 年複利 18% 的本利和,如下所示: intI = 1 dblTotal = 10000 dblRate = 0.18 Do While intI <= 5 dblTotal += dblTotal * dblRate dblTotal += dblTotal * dblRate intI = intI + 1 intI = intI + 1Loop

9 6-2-1 Do While/Loop 迴圈 - 流程圖

10 6-2-2 Do Until/Loop 迴圈 - 說明 Do/Loop 迴圈如果使用 Until 條件在迴圈開始檢查, 迴圈是執行到條件成立為止,如果條件不成立就 進入迴圈。例如:計算 1 萬元 5 年複利 18% 的本利 和,如下所示: Do/Loop 迴圈如果使用 Until 條件在迴圈開始檢查, 迴圈是執行到條件成立為止,如果條件不成立就 進入迴圈。例如:計算 1 萬元 5 年複利 18% 的本利 和,如下所示: intI = 1 dblTotal = 10000 dblRate = 0.18 Do Until intI > 5 dblTotal += dblTotal * dblRate dblTotal += dblTotal * dblRate intI = intI + 1 intI = intI + 1Loop

11 6-2-2 Do Until/Loop 迴圈 - 流程圖

12 6-2-3 Do/Loop While 迴圈 - 說明 Do/Loop 迴圈可以使用 While 條件在迴圈結尾檢 查,此時 Do/Loop 迴圈至少會執行一次。例如: 計算 1 萬元 5 年複利 18% 的本利和,如下所示: Do/Loop 迴圈可以使用 While 條件在迴圈結尾檢 查,此時 Do/Loop 迴圈至少會執行一次。例如: 計算 1 萬元 5 年複利 18% 的本利和,如下所示: intI = 1 dblTotal = 10000 dblRate = 0.18 Do dblTotal += dblTotal * dblRate dblTotal += dblTotal * dblRate intI = intI + 1 intI = intI + 1 Loop While intI <= 5

13 6-2-3 Do/Loop While 迴圈 - 流程圖

14 6-2-4 Do/Loop Until 迴圈 - 說明 Do/Loop 迴圈如果使用 Until 條件在迴圈結尾檢查, 迴圈也一樣至少執行一次。例如:計算 1 萬元 5 年 複利 18% 的本利和,如下所示: Do/Loop 迴圈如果使用 Until 條件在迴圈結尾檢查, 迴圈也一樣至少執行一次。例如:計算 1 萬元 5 年 複利 18% 的本利和,如下所示: intI = 1 dblTotal = 10000 dblRate = 0.18 Do dblTotal += dblTotal * dblRate dblTotal += dblTotal * dblRate intI = intI + 1 intI = intI + 1 Loop Until intI > 5

15 6-2-4 Do/Loop Until 迴圈 - 流程圖

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

17 6-3-1 For/Next 巢狀迴圈 - 說明 For/Next 巢狀迴圈是在 For/Next 迴圈中,擁有 其他 For/Next 迴圈(因為不用自行處理計數器變 數),例如:二層巢狀迴圈,如下所示: For/Next 巢狀迴圈是在 For/Next 迴圈中,擁有 其他 For/Next 迴圈(因為不用自行處理計數器變 數),例如:二層巢狀迴圈,如下所示: ' 第一層 For intI = 1 To 9 ' 第二層 ' 第二層 For intJ = 1 To 9 For intJ = 1 To 9 ……… ……… Next intJ Next intJ ……… ……… Next intI

18 6-3-1 For/Next 巢狀迴圈 - 執行次數 巢狀迴圈共有兩層,在第 1 層的 For/Next 迴圈執行 9 次,第二層 For/Next 迴圈如果 都執行 9 次,兩層迴圈總共可執行 81 次,如 下表所示: 巢狀迴圈共有兩層,在第 1 層的 For/Next 迴圈執行 9 次,第二層 For/Next 迴圈如果 都執行 9 次,兩層迴圈總共可執行 81 次,如 下表所示:

19 6-3-2 混合的巢狀迴圈 Visual Basic 巢狀迴圈可以混合 For/Next 和 Do/Loop 迴圈結構,例如:在 For/Next 迴圈內擁 有 Do/Loop Until 迴圈,如下所示: Visual Basic 巢狀迴圈可以混合 For/Next 和 Do/Loop 迴圈結構,例如:在 For/Next 迴圈內擁 有 Do/Loop Until 迴圈,如下所示: ‘ 第一層 For intI = 1 To 9 ' 第二層 ' 第二層 intJ = 1 intJ = 1 Do Do …………… …………… intJ += 1 intJ += 1 Loop Until intJ > 9 Loop Until intJ > 9 Next intI

20 6-4 While/End While 迴圈 - 說明 While/End While 迴圈源於舊版 VB6 的 While/Wend 迴圈,它是一種在迴圈開頭檢查的 迴圈,例如:從 1 加到 10 的程式碼,如下所示: While/End While 迴圈源於舊版 VB6 的 While/Wend 迴圈,它是一種在迴圈開頭檢查的 迴圈,例如:從 1 加到 10 的程式碼,如下所示: Dim total As Integer = 0 Dim counter As Integer = 1 While counter <= 10 total += counter total += counter counter += 1 counter += 1 End While

21 6-4 While/End While 迴圈 - 階層函數 在本節的範例程式是說明迴圈在數學運算的運用, 可以計算階層函數的值,階層函數 N! ,例如:準 備計算 4! 的值,從上述定義 N>0 ,可以使用 N! 定 義的第二條計算階層函數 4! 的值,如下所示: 在本節的範例程式是說明迴圈在數學運算的運用, 可以計算階層函數的值,階層函數 N! ,例如:準 備計算 4! 的值,從上述定義 N>0 ,可以使用 N! 定 義的第二條計算階層函數 4! 的值,如下所示:4!=4*3*2*1=24

22 6-4 While/End While 迴圈 - 階層函數 的迴圈 換句話說,我們可以使用迴圈來計算階層 函數的值,以 While/End While 迴圈為例, 如下所示: 換句話說,我們可以使用迴圈來計算階層 函數的值,以 While/End While 迴圈為例, 如下所示: Dim total As Integer = 1 Dim counter As Integer = 4 While counter >= 1 total *= counter total *= counter counter = counter - 1 counter = counter - 1 End While

23 6-5 跳出與繼續迴圈 6-5-1 Exit For 跳出迴圈 6-5-1 Exit For 跳出迴圈 6-5-2 Exit Do 跳出迴圈 6-5-2 Exit Do 跳出迴圈 6-5-3 Continue 繼續迴圈 6-5-3 Continue 繼續迴圈

24 6-5-1 Exit For 跳出迴圈 For/Next 迴圈如果尚來到達結束條件時,就可以 使用 Exit For 強迫跳出 For/Next 迴圈,馬上結束 迴圈的執行,如下所示: For/Next 迴圈如果尚來到達結束條件時,就可以 使用 Exit For 強迫跳出 For/Next 迴圈,馬上結束 迴圈的執行,如下所示: For intI = 1 To 100 Step 1 … If amount <= 0 Then If amount <= 0 Then Exit For Exit For End If End If …Next

25 6-5-2 Exit Do 跳出迴圈 對於 Do/Loop 迴圈來說,我們需要自行確認迴圈 能夠結束。換句話說,如果沒有使用 While 或 Until 在迴圈頭尾測試條件,單純 Do/Loop 迴圈是 一個無窮迴圈。 對於 Do/Loop 迴圈來說,我們需要自行確認迴圈 能夠結束。換句話說,如果沒有使用 While 或 Until 在迴圈頭尾測試條件,單純 Do/Loop 迴圈是 一個無窮迴圈。 如果 Do/Loop 迴圈沒有不指定終止條件,我們可 以使用 Exit Do 來結束迴圈,如下所示: 如果 Do/Loop 迴圈沒有不指定終止條件,我們可 以使用 Exit Do 來結束迴圈,如下所示:Do …. …. If str = "" Then If str = "" Then Exit Do Exit Do End If End If …. ….Loop

26 6-5-3 Continue 繼續迴圈 Visual Basic 2005 新增 Continue 關鍵字,可以讓我們 不用執行完整個迴圈的程式碼,就可以馬上執行下一次迴 圈。 Continue For 可以馬上執行下一次 For/Next 迴圈; Continue Do 繼續下一次 Do While/Loop 迴圈的執行。 例如:計算指定範圍的奇數和,如下所示: Visual Basic 2005 新增 Continue 關鍵字,可以讓我們 不用執行完整個迴圈的程式碼,就可以馬上執行下一次迴 圈。 Continue For 可以馬上執行下一次 For/Next 迴圈; Continue Do 繼續下一次 Do While/Loop 迴圈的執行。 例如:計算指定範圍的奇數和,如下所示: Do While i < intMax i = i + 1 i = i + 1 If i Mod 2 = 0 Then If i Mod 2 = 0 Then Continue Do Continue Do End If End If total = total + i total = total + iLoop

27 6-6 錯誤處理 - 說明 錯誤處理是指在程式執行時,如果發生不 正常執行狀態時,我們可以在程式碼處理 這些錯誤。錯誤處理的目的是為了讓程式 能夠更「強壯」( Robust )。 錯誤處理是指在程式執行時,如果發生不 正常執行狀態時,我們可以在程式碼處理 這些錯誤。錯誤處理的目的是為了讓程式 能夠更「強壯」( Robust )。 當程式遇到不尋常情況,也不會造成程式 「崩潰」( Crashing ),進而導致整個系 統當機的情況。 當程式遇到不尋常情況,也不會造成程式 「崩潰」( Crashing ),進而導致整個系 統當機的情況。

28 6-6 錯誤處理 - 架構 Visual Basic 2005 提供結構化的錯誤處理敘述, 即 Try/End Try ,其語法如下所示: Visual Basic 2005 提供結構化的錯誤處理敘述, 即 Try/End Try ,其語法如下所示:Try ' 測試的錯誤程式碼 ' 測試的錯誤程式碼 程式區塊 程式區塊 Catch e As Exception ' 錯誤處理的程式碼 ' 錯誤處理的程式碼 程式區塊 程式區塊Finally End Try

29 6-6 錯誤處理 - 架構說明 Try 程式區塊:在 Try 和 Catch 關鍵字間的程式區 塊是 Visual Basic 需要執行錯誤處理的程式碼, 也就是預期可能產生錯誤的程式碼。 Try 程式區塊:在 Try 和 Catch 關鍵字間的程式區 塊是 Visual Basic 需要執行錯誤處理的程式碼, 也就是預期可能產生錯誤的程式碼。 Catch 程式區塊:如果 Try 程式區塊的程式碼發生 錯誤,在 Catch 到 Finally 關鍵字間的程式區塊將 會傳入參數 e 的 Exception 例外物件,可以在此區 塊顯示錯誤資訊,或是建立錯誤處理的補救程式 碼。 Catch 程式區塊:如果 Try 程式區塊的程式碼發生 錯誤,在 Catch 到 Finally 關鍵字間的程式區塊將 會傳入參數 e 的 Exception 例外物件,可以在此區 塊顯示錯誤資訊,或是建立錯誤處理的補救程式 碼。 Finally 程式區塊:選擇性的程式區塊,不論錯誤 是否產生,都會執行此區塊的程式碼,通常是用 來作為善後用途的程式碼。 Finally 程式區塊:選擇性的程式區塊,不論錯誤 是否產生,都會執行此區塊的程式碼,通常是用 來作為善後用途的程式碼。


Download ppt "第 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-6 錯誤處理 6-6 錯誤處理."

Similar presentations


Ads by Google