ループ: for・while・do-while
ループは同じブロックを何度も実行します。for は回数が決まっているとき、while は条件が偽になるまで、do-while は本体を必ず 1 回は実行します。
ループ: for・while・do-whileとは?
ループは同じブロックを何度も実行します。for は回数が決まっているとき、while は条件が偽になるまで、do-while は本体を必ず 1 回は実行します。
for、while、do-while のループに加え、break と continue で処理を繰り返します。
重要なポイント
- compiler warningを有効にしてすべて修正します。
- 各値の型とlifetimeを把握します。
- 入力と配列の境界を検証します。
動きで理解する
ステップを押すと、ループが1手ずつ進みます。条件の確認、本体の実行、トレース表が1行ずつ増えていく様子を見ましょう。
CとC++のコード例
C
main.c
#include <stdio.h>
int main(void) {
/* for: start; condition; step */
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
printf("\n");
/* while: repeat as long as the condition holds */
int n = 20;
int steps = 0;
while (n > 1) {
n /= 2;
steps++;
}
printf("halved %d times\n", steps);
/* do-while: the body runs at least once */
int tries = 0;
do {
tries++;
} while (tries < 3);
printf("tries = %d\n", tries);
/* break leaves the loop, continue skips to the next round */
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue;
if (i > 7) break;
printf("%d ", i);
}
printf("\n");
return 0;
}
1 2 3 4 5
halved 4 times
tries = 3
1 3 5 7
C++
main.cpp
#include <iostream>
#include <vector>
int main() {
// for: start; condition; step
for (int i = 1; i <= 5; i++) {
std::cout << i << ' ';
}
std::cout << '\n';
// while: repeat as long as the condition holds
int n = 20;
int steps = 0;
while (n > 1) {
n /= 2;
steps++;
}
std::cout << "halved " << steps << " times\n";
// do-while: the body runs at least once
int tries = 0;
do {
tries++;
} while (tries < 3);
std::cout << "tries = " << tries << '\n';
// range-based for visits every element of a container
std::vector<int> values{1, 3, 5, 7};
int sum = 0;
for (int value : values) {
sum += value;
}
std::cout << "sum = " << sum << '\n';
}
1 2 3 4 5
halved 4 times
tries = 3
sum = 16
CとC++の比較
for の見出しには初期値、条件、更新が入ります。break はループを途中で抜け、continue は次の回へ進みます。C++ には範囲ベースの for があり、添字なしでコンテナのすべての要素をたどれます。
C
Cは小さな手続き型APIと表現の詳細を明示します。
C++
C++は低レベルモデルを保ちつつ安全な型を追加します。
練習課題
両方を実行して変更し、言語ごとの保証を確認します。
- 不正入力と境界値を追加します。
- -Wall -Wextra -Wpedanticでコンパイルします。
- 宣言と実装を分割します。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
- Sum of Odd Numbers Add every odd number up to a limit. 簡単
- 打ち上げまでのカウントダウン 指定した数からカウントダウンし、最後に「Liftoff!」を表示します。 簡単
- Multiplication Table Row List the first multiples of a number. 簡単