CO-S39|情報Ⅰ 対策問題
次の繰り返しが無限ループになってしまう理由として正しいものはどれか。 (1) i = 0 (2) i < 5 の間繰り返す: (3) ⎿ 表示する(i)
解答・解説を見る
正解: 1
正答
1
この問題のポイント
無限ループの原因分析 を問う問題です。反復の3点セット「初期化・条件・更新」のどれが欠けているかを見抜きます。
解説
条件付き繰り返し(while型)は、「いつか条件が偽になる」ことで初めて終了します。つまりループの中に、条件に関わる変数を変化させる処理が必要です。このプログラムを点検してみます。
- (1) i = 0 → 初期化はある
- (2) i < 5 の間繰り返す → 終了条件もある
- (3) 表示する(i) → しかしループの中にiを変える処理(i = i + 1)がない
- よってiは0のまま変わらず、条件 0 < 5 は永遠に真 → 無限ループ
トレースしても、0を表示 → 条件0<5は真 → 0を表示 → … と同じ状態が繰り返されるだけで、終わりが来ないことが分かります。正しくは(3)の後に「i = i + 1」を入れれば、iが0→1→2→3→4→5と進み、5になった時点で条件が偽になって0〜4が表示されて終了します。
反復を書くとき・読むときは「①初期化(i=0) ②条件(i<5) ③更新(i=i+1)」の3点セットがそろっているかを必ず確認しましょう。初期値が0であることや、比較に<を使うこと自体はごく普通の書き方で、問題ではありません。
共通テストでは「このプログラムが終了しない理由」「どの1行を加えれば正しく動くか」という形で問われます。3点セットの点検は、穴埋め問題で空欄に更新の式が入るパターンの根拠にもなる重要な視点です。
選択肢の確認
1.○ 更新の処理がなくiが0のままなので、条件が永遠に真になる。
2.× 初期値0自体は正常で、更新さえあれば問題なく終了する。
3.× 表示する命令は終了条件に影響しない。
4.× <はごく普通の比較演算子で、無限ループの原因ではない。
ここだけは覚えよう
反復は「初期化・条件・更新」の3点セット — 更新が欠けると条件が偽にならず無限ループ。