Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章 迴圈結構 6-1 計數迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-4 While/End While迴圈 6-5 跳出與繼續迴圈

Similar presentations


Presentation on theme: "第6章 迴圈結構 6-1 計數迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-4 While/End While迴圈 6-5 跳出與繼續迴圈"— Presentation transcript:

1 第6章 迴圈結構 6-1 計數迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-4 While/End While迴圈 6-5 跳出與繼續迴圈
6-6 錯誤處理

2 6-1 計數迴圈 6-1-1 For To/Next迴圈 6-1-2 For Step/Next迴圈
ViLLE – 3.1 For/Next迴圈敘述 6-1-2 For Step/Next迴圈

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

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

5 6-1-1 For To/Next迴圈-流程圖 For counter = 6 To 16 sum = sum + counter
For counter = 6 To 16 sum = sum + counter Next counter 請啟動fChart,載入第6-1-1節的流程圖專案Ch6-1-1.fpp ,然後執行流程圖,(1) 請問流程圖的迴圈經過路徑A或B的順序為下列哪一個? BBBBBBBBBBBA AAAAAAAAAAAB (2) 當counter的值為何時結束程式的執行? 自己動手作作看

6 6-1-1 For To/Next迴圈- Visual Basic專案
Visual Basic專案:Ch6-1-1 在Windows應用程式輸入開始和終止值,可以計算從開始值加到終止值的總和,如下圖所示:

7 ViLLE – 3.1 For/Next迴圈敘述 請啟動ViLLE,在【三. 迴圈結構】目錄下,選【1. For/Next迴圈敘述】,按【Run】鈕模擬執行此範例程式,如下圖所示:

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

9 6-1-2 For Step/Next迴圈- Visual Basic專案
Visual Basic專案:Ch6-1-2 在Windows應用程式輸入Step值來計算1到100或100到1中,每隔Step值的數值總和,如下圖所示:

10 6-2 條件迴圈 6-2-1 Do While/Loop迴圈 6-2-2 Do Until/Loop迴圈
ViLLE – 3.2 Do While/Loop迴圈敘述 6-2-2 Do Until/Loop迴圈 6-2-3 Do/Loop While迴圈 ViLLE – 3.4 Do/Loop While迴圈敘述 6-2-4 Do/Loop Until迴圈

11 6-2 條件迴圈-前測式重複結構 Visual Basic條件迴圈結構是Do/Loop迴圈,屬於Visual Basic十分重要且變化最多的迴圈結構,以條件測試的位置分成兩種,如下所示: 前測式重複結構:在迴圈開始使用While或Until測試迴圈條件。其語法如下所示: Do [While | Until] 條件 程式區塊 Loop

12 6-2 條件迴圈-後測式重複結構 後測式重複結構:在迴圈結尾使用While或Until測試迴圈條件,因為是在結尾測試條件,所以迴圈至少執行一次。其語法如下所示: Do 程式區塊 Loop [While | Until] 條件

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

14 6-2-1 Do While/Loop迴圈-流程圖
Do While year <= 5 year = year + 1 Loop 請啟動fChart,載入第6-2-1節的流程圖專案Ch6-2-1.fpp ,然後執行流程圖,(1) 請問流程圖的迴圈經過路徑A或B的順序為下列哪一個? BBBBBA AAAAAB (2) 當year的值為何時結束程式的執行? 自己動手作作看

15 ViLLE – 3.2 Do While/Loop迴圈敘述
請啟動ViLLE,在【三. 迴圈結構】目錄下,選【2. Do While/Loop迴圈敘述】,按【Run】鈕模擬執行此範例程式,如下圖所示:

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

17 6-2-2 Do Until/Loop迴圈-流程圖
Do Until year > 5 year = year + 1 Loop 請啟動fChart,載入第6-2-2節的流程圖專案Ch6-2-2.fpp ,然後執行流程圖,(1) 請問流程圖的迴圈經過路徑A或B的順序為下列哪一個? BBBBBA AAAAAB (2) 當條件為True或False時進入迴圈? 自己動手作作看

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

19 6-2-3 Do/Loop While迴圈-流程圖
Do year = year + 1 Loop While year <= 5 請啟動fChart,載入第6-2-3節的流程圖專案Ch6-2-3.fpp ,然後執行流程圖,(1) 請問流程圖的迴圈經過路徑A或B的順序為下列哪一個? BBBBBA AAAAAB (2) 當year的值為何時結束程式的執行? 自己動手作作看

20 ViLLE – 3.4 Do/Loop While迴圈敘述
請啟動ViLLE,在【三. 迴圈結構】目錄下,選【4. Do/Loop While迴圈敘述】,按【Run】鈕模擬執行此範例程式,如下圖所示:

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

22 6-2-4 Do/Loop Until迴圈-流程圖
Do year = year + 1 Loop Until year > 5 請啟動fChart,載入第6-2-4節的流程圖專案Ch6-2-4.fpp ,然後執行流程圖,(1) 請問流程圖的迴圈經過路徑A或B的順序為下列哪一個? BBBBBA AAAAAB (2) 當條件為True或False時進入迴圈? 自己動手作作看

23 6-2 條件迴圈-Visual Basic專案 Visual Basic專案:Ch6-2
在Windows應用程式輸入本金、利率和年限後,選擇使用的迴圈種類,即可計算到此年限複利的本利總和,如下圖所示:

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

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

26 6-3-1 For/Next巢狀迴圈-執行次數 巢狀迴圈共有兩層,在第1層的For/Next迴圈執行9次,第二層For/Next迴圈如果都執行9次,兩層迴圈總共可執行81次,如下表所示: 第一層的first值 第二層的second值 離開迴圈的first值 1 2 3 4 5 6 7 8 9 ………….

27 6-3-1 For/Next巢狀迴圈- Visual Basic專案
Visual Basic專案:Ch6-3-1 在Windows應用程式的每1列顯示不同數字,以便繪出三角形、倒三角形和正三角形的圖形,如下圖所示:

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

29 6-3-2 混合的巢狀迴圈- Visual Basic專案
Visual Basic專案:Ch6-3-2 在Windows應用程式使用巢狀迴圈在多行文字方塊,以表格排列來顯示九九乘法表,如下圖所示:

30 6-4 While/End While迴圈-說明
While/End While迴圈源於舊版VB6的While/Wend迴圈,這也是一種在迴圈開頭檢查的迴圈,其結構和Do While/Loop迴圈結構相同。 在本節的程式範例準備說明迴圈在數學運算的運用,我們可以使用迴圈計算階層函數的值,階層函數N!,如下所示:

31 6-4 While/End While迴圈-階層函數
例如:準備計算4!的值,從上述定義N>0,可以使用N!定義的第二條計算階層函數4!的值,如下所示: 4!=4*3*2*1=24

32 6-4 While/End While迴圈-階層函數的迴圈
Dim result As Integer = 1 Dim maxLevel As Integer = 5 While n <= maxLevel result *= n n += 1 End While

33 6-4 While/End While迴圈- Visual Basic專案
Visual Basic專案:Ch6-4 在Windows應用程式輸入階層數,就可以計算階層函數值和顯示從1到階層數的各階層函數值。例如:輸入4就依序計算1!、2!、3!和4!階層的值,運算方向是相反是由1乘到階層數,如下所示: 4!=1*2*3*4=24

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

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

36 6-5-1 Exit For跳出迴圈- Visual Basic專案
Visual Basic專案:Ch6-5-1 在Windows應用程式建立換零錢的工具程式,輸入金額和選擇想兌換的硬幣種類,例如:50、20、10、5和1元硬幣,就可以自動計算出可兌換成幾個50硬幣或幾個20元硬幣等,如下圖所示:

37 6-5-2 Exit Do跳出迴圈-說明 對於Do/Loop迴圈來說,如果沒有使用While或Until在迴圈頭尾測試條件,單純的Do/Loop迴圈是一個無窮迴圈。此時,我們可以使用Exit Do跳出迴圈,也就是結束迴圈的執行,如下所示: Do …. If str = "" Then Exit Do End If Loop

38 6-5-2 Exit Do跳出迴圈- Visual Basic專案
Visual Basic專案:Ch6-5-2 在Windows應用程式建立猜數字遊戲,使用亂數取得1~100間的數值,當使用者在InputBox對話方塊輸入數字後,就會回應猜測數字太大或太小,直到使用者猜到數字為止,如下圖所示:

39 6-5-3 Continue繼續迴圈-說明 Continue關鍵字可以讓我們不用執行完整個迴圈的程式碼,就可以馬上執行下一次迴圈。
Continue For可以馬上執行下一次For/Next迴圈;Continue Do繼續下一次Do While/Loop迴圈的執行。

40 6-5-3 Continue繼續迴圈-範例 例如:計算指定範圍的奇數和,如下所示: Do While num < maxValue
num = num + 1 If num Mod 2 = 0 Then Continue Do End If sum = sum + num Loop

41 6-5-3 Continue繼續迴圈- Visual Basic專案
Visual Basic專案:Ch6-5-3 在Windows應用程式輸入最大值,可以計算從1至此最大值的奇數和,如下圖所示:

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

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

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

45 6-6 錯誤處理- Visual Basic專案 Visual Basic專案:Ch6-6
在Windows應用程式建立Try/End Try錯誤處理敘述,可以處理除以0造成溢位的程式錯誤,如下圖所示:

46 End


Download ppt "第6章 迴圈結構 6-1 計數迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-4 While/End While迴圈 6-5 跳出與繼續迴圈"

Similar presentations


Ads by Google