05 繰り返し(while文)

1. 繰り返し処理とは

繰り返し処理とは、ある条件が成り立つ間、同じ処理を何度も実行する仕組みです。 while文は「条件を最初に確認してから繰り返す」前判定型の繰り返し構文です。


2. while文の基本構造

while ( 条件 )
    処理
endwhile
開始 条件 真? 処理 終了 終了

3. 基本例とトレース

整数型: i ← 1

while ( i が 5 以下 )
    i を出力
    i ← i + 1
endwhile

処理の流れを1ステップずつ追ってみましょう(トレース):

ループ回数 i の値(判定前) 条件(i ≦ 5) 出力 i ← i+1 後 1回目 1 真(実行) 1 2 2回目 2 真(実行) 2 3 3回目 3 真(実行) 3 4 4回目 4 真(実行) 4 5 5回目 5 真(実行) 5 6 終了 6 偽(ループ終了) 出力結果:1 2 3 4 5

4. 「以下」と「未満」の違い

条件の書き方1つで出力が変わります。必ず確認する習慣をつけましょう。

i が 5 以下(i ≦ 5) i = 1, 2, 3, 4, 5 で実行 出力:1 2 3 4 5 i が 5 未満(i < 5) i = 1, 2, 3, 4 で実行 出力:1 2 3 4

5. カウンター変数の典型パターン

while文では以下の4ステップが基本形です。

① 宣言・初期化 i ← 1 ② 条件チェック i が 5 以下? ③ 処理の実行 i を出力 ④ カウンタ更新 i ← i + 1
④ カウンタ更新を忘れると無限ループになります!
条件が永遠に真のままになり、プログラムが止まらなくなります。

6. do〜while文(後判定型)

do〜while文は処理を先に実行してから条件を確認します。必ず1回は実行されます。

do
    処理
while ( 条件 )
while(前判定) ↓ 条件チェック 偽なら一度も実行しない ↓ 処理 ↓ 条件チェック(繰り返し) do〜while(後判定) ↓ 処理(必ず1回) 必ず1回は実行される ↓ 条件チェック ↓ 処理(繰り返し)
整数型: x ← 0

do
    x ← x + 1
while ( x が 3 未満 )

x を出力   // 出力: 3

7. break文(ループの途中終了)

条件に関係なく、ループを途中で抜けたいときに使います。

IPAの疑似言語では break というキーワードではなく、
○○の行から始まる繰返し処理を終了する」という日本語で表現されます。
この資料では理解しやすさのため break と記述していますが、試験本番では日本語表記で出題されます。
整数型: x ← 1

while ( x が 10 以下 )
    if ( x が 5 と等しい )
        break          // x=5 になった時点でループを抜ける
    endif
    x を出力
    x ← x + 1
endwhile

// 出力: 1  2  3  4
breakの動作:break に到達した時点でループを即座に終了し、endwhile の次の処理へ進みます。 x=5 のとき出力より先に break するため、5は出力されません。

8. 理解度チェック問題

問題05-1

次のコードを実行した結果として正しいものを選びなさい。

整数型: i ← 1

while ( i が 5 以下 )
    i を出力
    i ← i + 1
endwhile
解説を表示 正解:イ
i=1〜5 のとき条件が真なので出力。i=6 になると「6 が 5 以下」が偽になりループ終了。

問題05-2

次のコードを実行した結果として正しいものを選びなさい。

整数型: i ← 1

while ( i が 5 未満 )
    i を出力
    i ← i + 1
endwhile
解説を表示 正解:ウ
「未満」は5を含まない(i < 5)。i=5 になると偽になるため、5は出力されません。

問題05-3

次のコードを実行した結果として正しいものを選びなさい。

整数型: x ← 1

while ( x が 5 未満 )
    x ← x - 1
endwhile
解説を表示 正解:エ
x ← x - 1 で x はどんどん小さくなります。「x が 5 未満」は常に真のまま → 無限ループ。
ループ変数は条件に近づく方向に更新する必要があります。

問題05-4

次のコードを実行した結果として正しいものを選びなさい。

整数型: i ← 1

while ( i が 10 以下 )
    if ( i が 4 と等しい )
        break
    endif
    i を出力
    i ← i + 1
endwhile
解説を表示 正解:ア
i=4 のとき break が先に実行されるため、4は出力されません。1, 2, 3 のみ出力されます。

問題05-5

次のコードを実行したとき x の最終値として正しいものを選びなさい。

整数型: x ← 0

do
    x ← x + 1
while ( x が 3 未満 )
解説を表示 正解:ウ
x=0→1(条件:1<3 真)→2(条件:2<3 真)→3(条件:3<3 偽)ループ終了。x の最終値は 3。
do〜while は処理を先に実行するため、x=0 でも必ず1回は x ← x+1 が実行されます。