重複結構是什麼? for / while 的角色

解決問題常須要重複執行某些指令,因此程式語言都有重複結構,俗稱「迴圈」(Loop)。
主要的重複方式有兩種:

  • 計數迴圈:通常用於已知重複次數。
    概念:透過迭代器(iterator)或計數器(counter)來追蹤執行次數,每次迭代都會處理一個範圍內的資料。
  • 條件迴圈:通常用於條件式重複。
    • 前測式迴圈:
      概念:在執行迴圈前先判斷條件是否成立(前測迴路)。如果條件不成立,迴圈可能一次也不執行。
    • 後測式迴圈: 概念:先執行迴圈內的程式碼,之後再判斷條件是否成立(後測迴路)。如果條件成立,則繼續執行;不成立時離開。
    • 任意中斷式迴圈: 概念:使用繼續(continue)指令略過某些指令,使用中斷(break)迅速離開迴圈。 結構化程式允許迴圈內任意中斷而離開迴圈,但不可任意跳進迴圈內。
      • continue : 跳過當前疊代的剩餘部分,直接回到迴圈的開頭,開始下一個疊代。
      • break : 提早結束整個迴圈,程式會跳出迴圈並繼續執行之後的程式碼。

1. 計數迴圈 已知次數的重複

計數迴圈會依序走訪序列中的每一個元素,或按照指定次數重複執行程式碼。

if 演算法寫法:
1. 令計數器為 x,且歸 0。
2. 計數器 x 的值達到需要的次數了嗎? 是,則至步驟 6。
3.   程式碼 A
4.   計數器 x+1
5. 回到步驟 2
6. 程式碼 B

for 演算法寫法:
1. for(令計數器為 x歸 0; x 不滿足次數; x=x+1)。
2.   程式碼 A
3. 程式碼 B
x=0
計數滿足 Y N
程式碼 A
計數器+1
程式碼 B
2. while 迴圈(前測式) 「先做條件判斷,再執行」的迴圈

while 迴圈會在條件為真時重複執行,條件變為假時結束。

if 演算法寫法:
1. 如果條件1成立則步驟 2,否則步驟 4
2.   程式碼 A
3.   回到步驟 1
4. 程式碼 B

while 前測演算法寫法:
1. while 條件 成立則步驟2 否則步驟 4
2.   程式碼 A
3.   回到步驟 1 (區塊指令返回)
4. 程式碼 B

條件滿足 Y N
程式碼 A
程式碼 B
3. while 迴圈(後測式) 「先執行,再做條件判斷」的迴圈

while 迴圈會在執行後,再做條件判斷,為真時重複執行,直到條件變為假時結束。

if 演算法寫法:
1. 迴圈開始
2.   程式碼 A
3. 如果條件成立則步驟 1,否則步驟 4
4. 程式碼 B

while 前測演算法寫法:
1. do
2.   程式碼 A
3. while 條件成立則步驟 1,否則步驟 4
4. 程式碼 B

條件滿足 Y N
程式碼 A
程式碼 B
4. 前測迴圈 + 繼續 迴圈中加入「繼續」

迴圈內遇到繼續,會跳至迴圈判斷處。

if 演算法寫法:
1. 如果條件1 成立則步驟 2,否則步驟 6
2.   程式碼 A
3.   如果條件2 成立則繼續 (表示到步驟1)
4.   程式碼 B
5. 回步驟 1
6. 程式碼 C

while 前測演算法寫法:
1. while 條件 成立則步驟2 否則步驟 6
2.   程式碼 A
3.   如果條件2 成立則繼續 (表示到步驟1)
4.   程式碼 B
5. 回步驟 1
6. 程式碼 C

條件1滿足 Y N
條件2滿足
    繼續
Y N
程式碼 A
程式碼 B
程式碼 C
5. 前測迴圈 + 中斷 迴圈中加入「中斷」

迴圈內遇到中斷,會離開迴圈。

if 演算法寫法:
1. 如果條件1 成立則步驟 2,否則步驟 6
2.   程式碼 A
3.   如果條件2 成立則中斷 (表示到步驟6)
4.   程式碼 B
5. 回步驟 1
6. 程式碼 C

while 前測演算法寫法:
1. while 條件 成立則步驟2 否則步驟 6
2.   程式碼 A
3.   如果條件2 成立則中斷 (表示到步驟6)
4.   程式碼 B
5. 回步驟 1
6. 程式碼 C

條件1滿足 Y N
條件2滿足
    中斷
Y N
程式碼 A
程式碼 B
程式碼 C
6. 巢狀(套疊)迴圈 迴圈中加入迴圈

任何形態迴圈皆可套疊任何形態迴圈,且不限數量。

if 演算法寫法:
1. 如果條件1 成立則步驟 2,否則步驟 8
2.     程式碼 A
3.     如果條件2 成立則步驟 4,否則步驟 6
4.         程式碼 B
5.     回步驟 3
6.     程式碼 C
7. 回步驟 1
8. 程式碼 D

while 前測 + while 前測
1. while(條件1)
2.   程式碼 A
3.   while(條件2)
4.     程式碼 B
5.   程式碼 C
6. 程式碼 D
條件1滿足 Y N
條件2滿足 Y N
程式碼 A
程式碼 B
程式碼 C
程式碼 D