Semorphe

選擇

讓程式走兩條不同的路。 · ⏱ 約 25 分鐘

你會學到三件事

  1. if 怎麼把一段程式變成有條件的
  2. else 是「其餘的情況」
  3. 大括號圈起來的東西叫區塊,而它是一個整體

開始之前

到目前為止,程式由上往下每一行都會跑

這一課開始,有些行會被跳過——而哪些被跳過取決於資料。 這是程式第一次「自己做決定」。

上一課的 bool 就是為了這一課。

一、if

int score = 75;
if (score >= 60) {
    cout << "及格" << endl;
}

讀法:「如果 score >= 60 成立,就做大括號裡面的事。」

不成立的話,大括號裡面整段跳過,程式從大括號後面繼續。

三個部位:

if ( 條件 ) {  要做的事  }
     ↑         ↑
   一個 bool   一個【區塊】——大括號圈起來的一整段

⚠️ if 後面沒有分號。 if (x) ; 是合法的,而它的意思是 「條件成立就做——什麼都不做」,後面那個大括號會變成無條件執行。 這個錯不會報錯,只會讓程式行為變得莫名其妙。

二、else

if (score >= 60) {
    cout << "及格" << endl;
} else {
    cout << "不及格" << endl;
}

else 沒有條件——它就是「上面那個不成立的時候」。

兩條路一定會走一條,而且只會走一條

三、區塊

大括號 { } 圈起來的一整段叫區塊。它裡面可以有很多行:

if (score >= 60) {
    cout << "及格" << endl;
    cout << "恭喜" << endl;
}

只有一行的時候,大括號可以省略:

if (score >= 60) cout << "及格" << endl;

⚠️ 而建議永遠不要省。

省掉之後想加第二行,很容易變成這樣:

if (score >= 60)
    cout << "及格" << endl;
    cout << "恭喜" << endl;   // ← 這一行【無條件】會跑

縮排看起來在裡面,而 if 只管到第一個分號為止。 這是一個縮排會騙你的錯,而它在 Python 裡不會發生(那一課會再提)。

完成的樣子

int main() {
    int score = 75;
    if (score >= 60) {
        cout << "及格" << endl;
    } else {
        cout << "不及格" << endl;
    }
    return 0;
}

換你了

改成三段:>= 90 印「優等」、>= 60 印「及格」、其餘印「不及格」。

提示:else 後面可以直接再接一個 if——

} else if (score >= 60) {

這一課你做了什麼

如果卡住了

你看到 多半是因為
兩句都印出來了 第二句沒在大括號裡(或大括號省掉了)
條件明明成立卻沒進去 == 寫成 = 了,或比較方向反了
if (x); 行為很怪 多了一個分號。if 後面不加分號
「優等」和「及格」都印了 第二段用了 if 而不是 else if——那是兩個獨立的判斷
在編輯器打開這一課 →