C++: ループ構造
最終更新:2026-08-31
コンピュータの本当の力は繰り返しから来る。同じコードを100回書く代わりに、ループを一度書いて100回実行する。それがループの役割だ。
1. forループ
回数がわかっている繰り返しにforを使う。
CPP
for (int i = 1; i <= 5; i++) {
std::cout << i << " ";
}
// 出力: 1 2 3 4 5
forループの3つの部分:
| 部分 | 例 | 目的 |
|---|---|---|
| 初期化 | int i = 1; |
開始時に一度だけ実行 |
| 条件 | i <= 5; |
各反復前にチェック |
| 更新 | i++ |
各反復後に実行 |
▶ サンプル 1:1から10まで出力(難易度 ⭐)
CPP
#include <iostream>
int main() {
for (int i = 1; i <= 10; i++) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
2. whileループ
回数はわからないが条件はわかっている場合にwhileを使う。
CPP
int i = 1;
while (i <= 5) {
std::cout << i << " ";
i++;
}
▶ サンプル 2:カウントダウン(難易度 ⭐)
CPP
#include <iostream>
int main() {
int count = 10;
while (count > 0) {
std::cout << count << "... ";
count--;
}
std::cout << "打ち上げ!" << std::endl;
return 0;
}
3. do-whileループ
コードが少なくとも1回は実行される必要がある場合にdo-whileを使う。
TEXT
📖 参照専用
int num;
do {
std::cout << "正の数を入力: ";
std::cin >> num;
} while (num <= 0);
💡 ヒント: メニューや入力検証に最適。コードが先に実行され、その後条件をチェック。
4. breakとcontinue
| 文 | 効果 |
|---|---|
break |
ループを即座に終了 |
continue |
現在の反復の残りをスキップし、次へ |
CPP
for (int i = 1; i <= 10; i++) {
if (i == 5) continue; // 5をスキップ
if (i == 8) break; // 8で停止
std::cout << i << " ";
}
// 出力: 1 2 3 4 6 7
5. ネストしたループ
ループの中にループ。外側のループの各反復で、内側のループがすべての反復を完了する。
▶ サンプル 3:九九表を出力(難易度 ⭐⭐)
CPP
#include <iostream>
#include <iomanip>
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
std::cout << j << "x" << i << "=" << std::setw(2) << i * j << " ";
}
std::cout << std::endl;
}
return 0;
}
❓ よくある質問
Q forループの一部を省略できる?
A できる。
for (; i <= 10; i++)は初期化を省略、for (;;)は無限ループを作成(while(true)と同じ)。しかしこれは可読性を下げる——控えめに使おう。Q whileとforは相互変換可能?
A 可能。すべてのforループはwhileループに書き換え可能、その逆も。回数がわかるときはfor、条件がわかるときはwhileを使う。
Q ネストしたループでbreakとcontinueはどう動く?
A
breakは最も内側のループだけ終了。continueは最も内側のループの現在の反復だけスキップ。代替としてラベル付きループがある。📖 まとめ
- forループ:反復回数がわかるときに使う
- whileループ:継続条件がわかるときに使う
- do-whileループ:コードが少なくとも1回実行されるときに使う
- break:ループを即座に終了
- continue:次の反復へスキップ
📝 練習問題
-
初級(難易度 ⭐): 1から100までの偶数をすべて出力するプログラムを書く。
-
中級(難易度 ⭐⭐): 1からnまでの合計を計算するプログラムを書く。nはユーザーが入力。
-
上級(難易度 ⭐⭐⭐): アスタリスクでひし形パターンを出力するプログラムを書く。ユーザーが高さを入力し、プログラムは対称なひし形を出力。