# 迴圈(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)