# 迴圈(For) C++中的 `for` 語句是一種控制結構,主要***用於重複執行一段代碼***,通常用於知道確切的迴圈次數時。`for` 迴圈提供了一種簡潔的語法來初始化counter、設定條件和更新counter。 ### 一、`for` 語句的基本結構 `for` 語句的基本語法如下: ```cpp= for (初始化; 條件; 更新) { // 迴圈內要執行的代碼 } ``` - **初始化**:在迴圈開始時執行的代碼,通常用來定義計數器變量(例如 `int i = 0`)。 - **條件**:每次迴圈執行前檢查的條件,當條件為真時執行迴圈內的代碼,當條件為假時結束迴圈。 - **更新**:每次迴圈執行完畢後執行的代碼,通常用來改變計數器的值(例如 `i++`)。 :::warning 初始化、條件、更新可以寫不只一個,但是要用***逗號隔開而不是分號*** ex: ```cpp= for (int i = 0 , int j = 0; i < 4 , j < 3; i++ , j+=2) ``` ::: ### 二、`for` 語句的用法範例 #### 範例 1:基本的 `for` 迴圈 這個範例展示了一個基本的 `for` 迴圈,它從 0 開始到 9,每次迴圈輸出當前的計數器值。 ```cpp= #include <iostream> using namespace std; int main() { for (int i = 0; i < 10; i++) { cout << "當前值: " << i << endl; } return 0; } ``` #### 範例 2:使用 `for` 迴圈計算總和 這個範例展示了如何使用 `for` 迴圈來計算從 1 到 10 的總和。 ```cpp= #include <iostream> using namespace std; int main() { int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; // 將 i 加到 sum 中 } cout << "1 到 10 的總和是: " << sum << endl; return 0; } ``` #### 範例 3:倒序輸出 這個範例使用 `for` 迴圈從 10 倒數到 1 輸出。 ```cpp= #include <iostream> using namespace std; int main() { for (int i = 10; i > 0; i--) { cout << "倒數計數: " << i << endl; } return 0; } ``` #### 範例 4:多重 `for` 迴圈 可以使用嵌套的 `for` 迴圈來處理多維數據,以下範例使用兩個 `for` 迴圈打印一個 5x5 的星號矩陣。 ```cpp= #include <iostream> using namespace std; int main() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { cout << "* "; // 輸出星號 } cout << endl; // 換行 } return 0; } ``` ### 三、`for` 迴圈的變體 1. **省略部分語句**:在 `for` 迴圈中,初始化、條件和更新語句都可以省略,但需確保有適當的邏輯來避免無限迴圈。 ```cpp= #include <iostream> using namespace std; int main() { int i = 0; for (; i < 5; ) { cout << "當前值: " << i << endl; i++; } return 0; } ``` 2. **無條件迴圈**:可以寫一個無條件的 `for` 迴圈,但必須手動控制迴圈的退出條件,以防止無限迴圈。 ```cpp= #include <iostream> using namespace std; int main() { for (;;) { cout << "這是一個無條件迴圈。" << endl; break; // 加上 break 以防止無限迴圈 } return 0; } ``` ### 四、注意事項 1. **初始化和更新的範圍**:`for` 迴圈中的變量(如 `i`)的作用域僅限於***迴圈內部***,除非在迴圈外部定義。 2. **條件表達式**:必須返回布林值,否則編譯會報錯。 3. **避免無限迴圈**:確保更新語句能使計數器最終滿足條件以退出迴圈。 4. **可讀性**:儘量保持 `for` 迴圈簡潔,過於複雜的條件或嵌套可能會降低可讀性。 ### 五、總結 - `for` 語句是進行重複操作的一個強大工具,適合用於已知迴圈次數的情況。 - 基本結構包括初始化、條件和更新,使用時可根據需求靈活調整。 - `for` 迴圈可以嵌套使用,適合處理多維數據或複雜的計算。 ### 六、進一步的學習 在學習 `for` 迴圈的基礎上,可以探索以下主題: - 與其他控制結構(如 `while`)的比較。 - 更複雜的數據結構,如數組和向量的遍歷。 - 如何在 `for` 迴圈中使用函數和算法進行計算。 #### [C++筆記: 迴圈(While)](https://hackmd.io/mWfjv6N2RnKCfQJkg24R4Q)