迴圈

迴圈 在 C++

12 個練習

關於 迴圈

迴圈用來重複執行某段邏輯。 最常見的兩種是 while loop 迴圈(不確定次數的迴圈)和 for loop 迴圈(確定次數、可計數的迴圈)。 另外還有 for each 迴圈,之後的某個概念會再介紹。

一般語法

for loop 迴圈由一個標頭和一個程式區塊組成,程式區塊以大括號包住迴圈的主體。 標頭由 3 個以分號 ; 分隔的部分組成:初始化敘述、條件,以及另一個運算式。 這幾個部分都可以是空的。

for (init-statement; condition; expression) {
  some_statement;
}
  • 初始化部分是一段只在迴圈開始前執行一次的程式碼。
  • 條件部分必須是某個會求值為布林的運算式,用來控制迴圈何時該停止。 只要這個條件的求值結果為 true,迴圈內的程式碼就會一直執行。 一旦這個運算式求值為 false,迴圈就不會再進行任何疊代。
  • 運算式部分則是在每次疊代結束時執行的程式碼。

while loop 迴圈只要條件檢查為 true,就會一直執行它的主體。 下面的程式片段示範如何把 for 迴圈改寫成 while 迴圈。

init-statement;
while(condition) {
    some_statement;
    expression;
}

插曲:遞增與遞減

使用迴圈時,經常需要把計數器變數加 1 或減 1。 這種操作太常見了,所以有專屬的運算子:++ 和 --。

它們有前綴和後綴兩種形式。 前綴形式會在變數被用於該敘述之前先改變它,後綴形式則是在之後才改變。 大多數情況下,你想要的應該都是前綴形式。

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

for 迴圈:一個範例

初始化部分通常用來設定計數器變數,條件會檢查迴圈應該繼續還是停止,而後置部分通常會在每次重複結束時把計數器遞增。

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

這個迴圈會把 1 到 9(含 9)的數字加總。

break 與 continue

在迴圈主體裡,你可以使用 break 關鍵字來完全停止迴圈的執行:

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

相對地,continue 關鍵字只會停止目前這次疊代的執行,並繼續進行下一次疊代:

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (n%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12

注意:通常把 break 和 continue 的使用降到最低,或完全避免使用,會讓迴圈的邏輯更容易理解。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 迴圈

練習已鎖定

再解鎖 4 個練習,就能練習 迴圈