<C++>繰り返し処理
今回の記事でわかること
- for 文、while 文、do-while 文の基本がわかる
- 繰り返し処理でプログラムを短く書けるようになる
繰り返し条件とは
プログラムで「同じ処理を何回も行いたい」ときに使います
- 1~10までの数字を表示する
- 入力が正しくなるまで繰り返す
- 配列や文字列の全要素を処理する
といった場面で大活躍します
選び方
繰り返し文 | 説明 |
---|---|
for | 回数が決まっているときに向いている |
while | 条件が真の間繰り返す |
do while | 最低1回は実行したいとき |
for 文
「回数が決まっている繰り返し」に向いています
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; i++) {
cout << "iの値は " << i << endl;
}
return 0;
}
/* 出力結果
iの値は 0
iの値は 1
iの値は 2
iの値は 3
iの値は 4
*/
書き方は for(初期化; 条件; 更新) の順で書き、条件が false になった時点でループは終了されます
while 文
「条件を満たしている間、繰り返す」処理に使います
#include <iostream>
using namespace std;
int main() {
int num = 0;
while (num < 3) {
cout << "num = " << num << endl;
num++;
}
return 0;
}
/* 出力結果
num = 0
num = 1
num = 2
*/
do-while 文
while と似ていますが、最低1回は条件を満たしていなくても実行されるのが特徴です
#include <iostream>
using namespace std;
int main() {
int num = 5;
do {
cout << "num = " << num << endl;
num++;
} while (num < 3);
return 0;
}
/* 出力結果
num = 5
*/
break と continue
処理 | 説明 |
---|---|
break; | ループを強制終了 |
continue; | その回の処理をスキップし、次の繰り返しへ |
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; i++) {
if (i == 2) continue; // i=2のときスキップ
if (i == 4) break; // i=4でループ終了
cout << "i = " << i << endl;
}
return 0;
}
/* 出力結果
i = 0
i = 1
i = 3
*/
実用パターン
配列の合計と最大値
#include <iostream>
using namespace std;
int main() {
int a[] = {4, 9, 1, 7};
int len = sizeof(a) / sizeof(a[0]);
int sum = 0, max = a[0];
for (int i = 0; i < len; i++) {
sum += a[i];
if (a[i] > max) max = a[i];
}
cout << "sum = " << sum << ", max = " << max << endl;
return 0;
}
/* 出力結果
sum = 21, max = 9
*/
範囲 for
C++ では配列や文字列を範囲 for 文で簡単に書けます
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "Hello";
for (char c : s) {
cout << c << " ";
}
return 0;
}
/* 出力結果
H e l l o
*/
配列や std::vector でも同じように扱える
可読性のコツ
- 変わらない値はループの外に出す
- ネストが深くなる時は continue で早期スキップ
- マジックナンバーは定数に置き換える
- 1行でも{ }をつけておく
これらはどの言語にも共通して大事な要素です