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-loop 及 while-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) 即可,不過若是要在滿足特定條件後跳出迴圈,就需要『流程控制』的指令了。
流程控制
基本上,這裡只紀錄 break、continue 等在迴圈中的應用,暫時不提及 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
- https://www.w3schools.com/cpp/cpp_conditions.asp
- https://www.w3schools.com/cpp/cpp_for_loop.asp
- https://www.w3schools.com/cpp/cpp_break.asp