5-6 迴圈中斷與連續
除了條件判斷是否繼續重複執行迴圈實體(body)外,在迴圈實體內也依照某些因素決定是否繼續執行實體敘述,或直接跳離開該迴圈敘述。一般程式語言都有提供 break 與 continue 兩種敘述,執行到前者敘述時,則直接中斷該迴圈敘述;後者是立即再回到迴圈判斷式,再決定是否繼續執行迴圈實體。以下分別介紹這兩種敘述語法。 5-6-1 break 敘述的流程 無論在迴圈(for、while、do/while)或『方法』(method)的實體區塊內,執行到 break 敘述後,立即停止繼續往下執行,並離開該迴圈或方法。如果是多重迴圈的話,僅會離開 break 敘述所屬迴圈,繼續下一個外圍迴圈敘述。圖 5-12 為 break 敘述的流程,我們以 while 迴圈為例,當程式執行到 break 敘述後則跳離開,繼續 while 敘述後的下一個敘述句。
圖 5-12 break 敘述的流程圖 5-6-2 continue 敘述的流程 程式執行到 continue 敘述後,立即停止執行迴圈實體其他敘述,強迫回到迴圈的起頭,再測試條件判斷敘述,決定是否繼續重複執行迴圈。圖 5-13 是以 while 迴圈為例,當執行到 continue 後,立即回到 while 敘述起頭,再判斷是否繼續執行。(請參考本書 7-4-2 節(Ex7_3.java)範例介紹)
圖 5-13 continue 敘述的流程圖 5-6-3 範例研討:尋找質數程式 (A)程式功能:Ex5_10.java 請編寫能找出 100 以內質數的程式,期望操作介面如下:
(B)製作技巧研討: 『質數』表示僅能 1 和自己整除的數,即是不能被其他小於自己的數整除。譬如:2 僅能被 1 和 2 整除,其為質數,3、5、7 皆是如此。 而4 可以被 2 整除,所以不是質數。由此可見 6、8、9、10...等偶數皆是如此,通通不是質數。 吾人編寫找出 1 ~ 100 之間(利用 while 迴圈達成)質數的方法是,利用一個旗號 prime 表示是否被測試數字是否為質數。首先假設被測試數字是質數,接著該數(如 7)再除以 2 到自己減 1 (如 6,利用 while 迴圈達成),其中任一個數可以整除則標示不是質數(prime=0)就離開;否則即為質數(prime=1)。離開回圈後,利用 prime 內容判斷該數是否為質數,如是則印出。 (C)程式範例:
(D)程式重點說明: (1) 第 7 ~ 22 行:『int i=1; while(i < limit) { ….. i++;}』。外回圈功能是,指定質數尋找範圍,由 1 到 limit(=100)之間。 (2) 第 10~17 行:『int j=2; while(j<=i-1) { … j++;}』。內迴圈功能是所指定的數(i),除以由 2 到自己減一(i-1)。 (3) 第 12~15 行:『if( i%j ) == 0』{ …}』。可以整除的話,則不是質數(prime=0),並中斷(break)往下繼續找。 (4) 第 18~19 行:『if (prime == 1) System.out.printf(…)』。如果是該數值(i)是質數的話,則印出。 5-6-4 自我挑戰:心算過五關遊戲 (A)程式功能:PM5_9.java 心算教室為了鼓舞小朋友學習心算的興趣,期望製作一套『心算過五關遊戲』,讓小朋友自行測試心算程度如何。系統中包含 5 關兩數相加,學生輸入正確表示通過該關。第一關為兩個 0~5 之間數字相加、第二關為 0~25 之間數字相加、第三關為 0 ~ 5*5*5 之間、第四關是 0 ~ 5*5*5*5、第五關是 0 ~ 5*5*5*5*5,期望操作介面如下:
(B)製作技巧提示: 吾人利用虛擬碼提示程式重點,如下所示:
|
翻轉工作室:粘添壽
Java 程式設計(一) 含程式邏輯
翻轉電子書系列:
|