C++超入門④ while文とfor文で処理を繰り返そう
while文、for文、do-while文、break、continueを使い、同じ処理を安全に繰り返す方法を学びます。
第4回では、同じ処理を繰り返す方法を学びます。
1から100まで順番に表示したり、正しい値が入力されるまで質問したりするときに使います。
この回でできるようになること
- while文で条件が成り立つ間、処理を繰り返す
- for文で回数を決めて繰り返す
- 無限ループを防ぐ
- breakとcontinueで流れを調整する
while文の基本
while文は、条件がtrueである間、波かっこの中を繰り返します。
int count = 1;
while (count <= 5) {
std::cout << count << '\n';
count = count + 1;
}
このコードは1から5まで表示します。
- countが5以下か確認する
- countを表示する
- countを1増やす
- もう一度条件を確認する
この流れが、条件がfalseになるまで続きます。
無限ループに注意する
次のコードではcountが増えないため、条件がいつまでもtrueのままです。
int count = 1;
while (count <= 5) {
std::cout << count << '\n';
}
このように終わらない繰り返しを無限ループと呼びます。
while文を書くときは、「どの処理で条件がfalseになるか」を確認しましょう。
for文の基本
繰り返す回数が分かっている場合は、for文が読みやすくなります。
for (int i = 1; i <= 5; i++) {
std::cout << i << '\n';
}
| 部分 | 役割 |
|---|---|
| int i = 1 | 最初に1を入れる |
| i <= 5 | 5以下の間は続ける |
| i++ | 1回ごとにiを1増やす |
**i++**は、i = i + 1を短く書いたものです。
while文とfor文の使い分け
| 使いたい場面 | 向いている文 |
|---|---|
| 5回繰り返す | for文 |
| 配列の要素を順番に見る | for文 |
| 正しい入力が来るまで続ける | while文 |
| 終了条件はあるが回数が分からない | while文 |
絶対的な決まりではありません。読んだときに目的が分かりやすい方を選びます。
do-while文
最初の1回は必ず実行し、その後で続けるか判断したいときはdo-while文を使えます。
int number = 0;
do {
std::cout << "1以上の数字を入力してください: ";
std::cin >> number;
} while (number < 1);
条件を最後に確認する点がwhile文との違いです。
breakとcontinue
breakは繰り返しを途中で終了します。
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
std::cout << i << '\n';
}
continueは、その回の残りを飛ばして次の回へ進みます。
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
std::cout << i << '\n';
}
このコードでは3だけ表示されません。
小さな練習
for文を使い、1から100までの合計を求めてください。
最初にint型の変数totalを0で用意し、繰り返すたびにiを足します。
模範解答
#include <iostream>
int main() {
int total = 0;
for (int i = 1; i <= 100; i++) {
total += i;
}
std::cout << total << '\n';
return 0;
}
解説
iを1から始め、100以下の間繰り返しています。total += iで現在の合計へiを足します。最終的な結果は5050です。
まとめ
- while文は、条件がtrueである間繰り返します。
- for文は、回数が分かっている処理に向いています。
- 繰り返しの条件が変化することを確認し、無限ループを防ぎます。
前の記事:C++超入門③ if文で条件によって処理を変えよう
次の記事:C++超入門⑤ 関数で処理を分けよう