今回は「繰り返しの3種類(for / while / do…while)」を同じ問題で扱い、各ループのステップ実行解説を紹介します。
変数の状態を逐次追跡して、ループごとの動きを理解しやすくします。
練習問題:1~5の合計を計算する
1️⃣ for ループ版
let sumFor = 0;
for (let i = 1; i <= 5; i++) {
sumFor += i;
}
console.log(sumFor);
JavaScript
出力
15
ステップ実行
| i | sumFor (前) | sumFor (後) | 実行内容 |
|---|
| 1 | 0 | 0 + 1 = 1 | sumFor に 1 を加算 |
| 2 | 1 | 1 + 2 = 3 | sumFor に 2 を加算 |
| 3 | 3 | 3 + 3 = 6 | sumFor に 3 を加算 |
| 4 | 6 | 6 + 4 = 10 | sumFor に 4 を加算 |
| 5 | 10 | 10 + 5 = 15 | sumFor に 5 を加算 |
2️⃣ while ループ版
let sumWhile = 0;
let i = 1;
while (i <= 5) {
sumWhile += i;
i++;
}
console.log(sumWhile);
JavaScript
出力
15
ステップ実行
| i | sumWhile (前) | sumWhile (後) | 条件 i<=5 | 実行内容 |
|---|
| 1 | 0 | 0 + 1 = 1 | true | sumWhile に 1 を加算, i++ → 2 |
| 2 | 1 | 1 + 2 = 3 | true | sumWhile に 2 を加算, i++ → 3 |
| 3 | 3 | 3 + 3 = 6 | true | sumWhile に 3 を加算, i++ → 4 |
| 4 | 6 | 6 + 4 = 10 | true | sumWhile に 4 を加算, i++ → 5 |
| 5 | 10 | 10 + 5 = 15 | true | sumWhile に 5 を加算, i++ → 6 |
| 6 | 15 | – | false | ループ終了 |
3️⃣ do…while ループ版
let sumDoWhile = 0;
let j = 1;
do {
sumDoWhile += j;
j++;
} while (j <= 5);
console.log(sumDoWhile);
JavaScript
出力
15
ステップ実行
| j | sumDoWhile (前) | sumDoWhile (後) | 条件 j<=5 | 実行内容 |
|---|
| 1 | 0 | 0 + 1 = 1 | true | sumDoWhile に 1 を加算, j++ → 2 |
| 2 | 1 | 1 + 2 = 3 | true | sumDoWhile に 2 を加算, j++ → 3 |
| 3 | 3 | 3 + 3 = 6 | true | sumDoWhile に 3 を加算, j++ → 4 |
| 4 | 6 | 6 + 4 = 10 | true | sumDoWhile に 4 を加算, j++ → 5 |
| 5 | 10 | 10 + 5 = 15 | true | sumDoWhile に 5 を加算, j++ → 6 |
| 6 | 15 | – | false | ループ終了 |
解説ポイント
- for ループ
- 初期化・条件・更新を1行で書く
- 繰り返し回数が明確なときに便利
- while ループ
- 条件を先に評価
- 条件が false の場合、1回もループしない可能性がある
- do…while ループ
- まず1回必ず実行してから条件評価
- 少なくとも1回処理したい場合に便利
- ステップ表のメリット
- 各ループ変数と合計値の変化を追跡できる
- 条件評価や変数更新の順序を可視化できる
💡 応用例:
- 配列の合計・最大値・偶数のみの合計
- ネストループで 2 次元配列の処理
- 条件分岐と組み合わせてフィルタリング処理