Skip to content

[C++] 基本教學 04: 判斷式、迴圈、流程控制

Last Updated on 2021-05-03 by Clay

在程式語言當中,『判斷式』讓我們能根據不同情況作出不同的應對、『迴圈』則可以讓電腦大量重複做性質相似的任務,以此進行自動化作業、『流程控制』則是讓我們在迴圈中能快進到下一次迭代、甚至是提早離開迴圈等操作。

以下我就針對上述這幾項的 C++ 語法進行簡單的紀錄。


if-else 判斷式

if-else 顧名思義就是使用 if 設定條件,若是條件為 true,則執行該條件底下的程式;若有設定 else if 其他的條件,則在第一個 if 條件不匹配的情況下自動開始判斷 —— 若沒有任何設定的條件符合的情況下,則自動執行最後的 else 底下的程式。(若是沒有設定 else 區塊,則直接跳過此判斷式,不執行任何程式。)

以下是個簡單的範例程式:

#include <iostream>
using namespace std;


int main() {
    int score = 98;

    if (score <= 30) {
        cout << "Your score <= 30" << endl;
    }
    else if (score > 30 and score <= 60) {
        cout << "Your score <= 60" << endl;
    }
    else {
        cout << "Your score > 60" << endl;
    }

    return 0;
}



Output:

Your score > 60

由於前兩項條件判斷式都不匹配,故最後執行了 else 區塊的程式。順帶一提,若是我們有多項條件需要同時判斷,可以使用像是 and(&&)或是 or(||)等邏輯符號來輔助判斷。


switch 判斷式

switch 判斷式也可以用來進行判斷,要判斷的值是從 switch 後的括號中取出,並匹配 case 中的值。如果都沒有符合的,則是執行 default 底下的程式區塊。

以下是剛才 if-else 的小改寫,用來做差不多的成績判斷。

#include <iostream>
using namespace std;


int main() {
    int score = 53;

    switch (score / 10) {
        case 10:
        case 9:
            cout << "Grade is A." << endl;
            break;
        case 8:
            cout << "Grade is B." << endl;
            break;
        case 7:
            cout << "Grade is C." << endl;
            break;
        default:
            cout << "Big trouble!" << endl;
            break;
    }

    return 0;
}



Output:

Big trouble!

迴圈

迴圈大致上可以分成兩種,for-loopwhile-loop


for-loop(for 迴圈)

for-loop 要設定『初始值』、『迴圈值』、『遞增』等三種條件,來讓機器能反覆執行迴圈中的程式。

以下是一個經典的 for-loop 小程式:

#include <iostream>
using namespace std;


int main() {
    for (int i=0; i<10; i++) {
        cout << i << endl;
    }

    return 0;
}



Output:

0
1
2
3
4
5
6
7
8
9

該迴圈從 i=0 開始,遵守 i++ 故每一輪迭代都會加 1,最後在 i 等於 10 的時候不符合迴圈條件而中止,故最後會印出從 0-9 等 10 個數字。


while-loop(while 迴圈)

while-loop 只需要輸入一個簡單的『條件』,只要符合條件,就會一直執行下去;相對地,若是不符合條件,則不會再執行迴圈中的程式。

以下將剛才 for-loop 的程式改寫成 while-loop 版本。

#include <iostream>
using namespace std;


int main() {
    int i = 0;

    while (i<10) {
        cout << i << endl;
        ++i;
    }

    return 0;
}



Output:

0
1
2
3
4
5
6
7
8
9

如果要程式永無止境地執行下去,只要將條件寫為 while (true) 即可,不過若是要在滿足特定條件後跳出迴圈,就需要『流程控制』的指令了。


流程控制

基本上,這裡只紀錄 breakcontinue 等在迴圈中的應用,暫時不提及 goto

簡單來講,continue 就是跳過迴圈中的一次迭代、直接輪到下一輪的迭代;而 break 則是很乾脆地直接跳出整個迴圈。

以下看個簡單的例子:

#include <iostream>
using namespace std;


int main() {
    int i = 0;

    while (i <= 100) {
        i++;

        if (i < 90) {
            continue;
        }
        else if (i == 97) {
            break;
        }
        
        cout << i << endl;
    }

    return 0;
}



Output:

90
91
92
93
94
95
96

這是從上方 while-loop 的範例程式改寫的,在 i 小於 90 的情況下都會自動跳過這輪迭代,故不會印出任何東西;而在 i 等於 97 時則跳出整個迴圈,故程式就在印出 96 之後結束。


References


Read More

Tags:

Leave a Reply