迴圈

迴圈敘述

迴圈敘述是程式設計中的核心概念之一,它允許程式重複執行特定的程式碼區塊,直到滿足某個終止條件為止。

在 C++ 中,主要的迴圈敘述有四種:whiledo...whilefor 和範圍基礎(Range based) for 迴圈。


1. while 迴圈 (The while Loop)

while 迴圈在進入迴圈之前先檢查條件。只要值為真 (true(非0)),迴圈就會一直執行。

語法 (Syntax)

while (條件運算式) {
    // 條件為真時重複執行的程式碼區塊
    // 必須在這裡包含改變條件的敘述,避免無限迴圈
}

範例:從 1 加到 5

#include <iostream>
using namespace std;

int main() {
    int count = 1;
    int sum = 0;

    while (count <= 5) { // 條件:count 小於或等於 5
        sum = sum + count;
        count = count + 1; // 更新 count
    }

    cout << "總和為: " << sum << endl; // 輸出: 總和為: 15
    return 0;
}

2. do...while 迴圈 (The do...while Loop)

do...while 迴圈的條件檢查是在迴圈本體執行之後才進行。

語法 (Syntax)

do {
    // 程式碼區塊
} while (條件運算式); // 這裡需要分號 (;)

重點: 程式碼區塊至少會被執行一次

範例:至少輸入一次密碼

#include <iostream>
#include <string>
using namespace std;

int main() {
    string password;
    string correct_password = "123";

    do {
        cout << "請輸入密碼: ";
        cin >> password;

    } while (password != correct_password); // 檢查密碼是否正確

    cout << "密碼正確,登入成功!" << endl;
    return 0;
}


3. for 迴圈 (The for Loop)

for 迴圈適用於以計數器為條件時。

語法 (Syntax)

for (初始化表達式; 條件運算式; 更新表達式) {
    // 迴圈本體程式碼
}

範例:印出 0 到 9

#include <iostream>
using namespace std;

int main() {
    // 初始化 (int i = 0); 條件 (i < 10); 更新 (i++)
    for (int i = 0; i < 10; i++) {
        cout << i << " ";
    }
    // 輸出: 0 1 2 3 4 5 6 7 8 9 

    cout << endl;
    return 0;
}

4. 範圍基礎 for 迴圈 (Range-based for Loop)

專門用來迭代容器(如陣列、向量等)中的所有元素。

語法 (Syntax)

for (型別 變數名 : 容器/範圍) {
    // 變數名 會依次取得容器中的每一個元素的值
}

範例:迭代陣列中的所有元素

#include <iostream>
using namespace std;

int main() {
    int numbers[] = {10, 20, 30, 40, 50};

    // value 會依次取得 numbers 中的每個元素
    for (int value : numbers) {
        cout << value << " ";
    }
    // 輸出: 10 20 30 40 50 
    
    cout << endl;
    return 0;
}


迴圈控制敘述 (Loop Control Statements)

A. break

作用: 立即終止整個迴圈的執行,跳到迴圈結束後的第一行。

範例:找到數字 30 即停止

#include <iostream>
using namespace std;

int main() {
    int numbers[] = {10, 20, 30, 40, 50};

    for (int num : numbers) {
        if (num == 30) {
            cout << "找到 30,停止搜尋。" << endl;
            break; // 立即跳出 for 迴圈
        }
        cout << "目前檢查到: " << num << endl;
    }
    cout << "迴圈結束。" << endl;
    return 0;
}

B. continue

作用: 立即跳過本次迴圈中尚未執行的剩餘程式碼,並進入下一次迭代。

範例:跳過偶數 (只印出奇數)

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        if (i % 2 == 0) {
            continue; // i 是偶數時,跳過下面的 cout 敘述
        }
        cout << i << " ";
    }
    // 輸出: 1 3 5 
    
    cout << endl;
    return 0;
}

總結與應用時機

迴圈類型 判斷時機 適用時機
for 迴圈 每次迭代前檢查條件 知道重複的次數(如計數 10 次)、或處理陣列/容器時。
while 迴圈 每次迭代前檢查條件 迴圈次數未知,但由某個條件(如檔案尚未讀完、使用者未輸入 "Q")控制。
do...while 迴圈 每次迭代後檢查條件 程式碼區塊必須執行至少一次,再根據結果決定是否繼續。
範圍基礎 for 自動迭代 需要遍歷整個容器或集合中的所有元素,不關心索引/計數器。

返回課程目錄
許老師APCS線上家教

留言

這個網誌中的熱門文章

目錄

資料型態

Code::Blocks