
【基本情報】科目B for・whileの問題|ループ回数と終了条件を追う基礎演習
「最後の1回を数え忘れる」「whileがどこで止まるか分からない」「二重ループになると混乱する……」
ループの問題は、条件を見る時点と、値を更新する時点を分けると追いやすくなります📚 今回はfor・while・二重ループを使って、本体の実行回数と終了時の値を練習します。
1.今回の表記
この記事の問題はIT資格攻略chのオリジナル基礎演習です。説明用に型宣言などを省いた擬似言語を使います。←は代入、=は比較、≠は「等しくない」を表します。forの終点は含みます。配列の要素番号は、特記がなければ1から始まります。公式問題では、その問題の定義と表記を確認してください。
whileは本体の実行前に条件を判定し、真なら本体を実行します。今回の演習ではbreakや途中のreturnは使いません。
2.forは開始・終点・増分を確認
sum ← 0
for (i を 2 から 8 まで 2 ずつ増やす)
sum ← sum + i
endforiは2、4、6、8。終点を含むため、本体は4回動きます。sumは0→2→6→12→20です。
「8まで」と書いてあっても8回とは限りません。開始値と増分も見てください。
正の増分で増やす今回のようなループなら、開始値が終点以下の場合、回数は「(終点-開始値)÷増分の商+1」で求められます。開始値が終点を超えていれば0回です。この式を、減少するループや複雑な更新へそのまま当てはめないようにしましょう。
3.終点にちょうど届かない場合
for (i を 1 から 6 まで 2 ずつ増やす)
処理
endfor実行時のiは1、3、5の3回です。次の候補7は6を超えるため、本体は実行しません。「終点を含む」は、進み方を無視して6を追加する意味ではありません。
初めのうちは公式より、実行されるiを並べる方が確認しやすいです。
4.whileは最後の偽まで追う
x ← 1
count ← 0
while (x が 9 より小さい)
x ← x + 3
count ← count + 1
endwhile

本体は3回、条件判定は4回、最後のxは10です。本体を3回実行した後、偽となる判定がもう1回あります。
「本体の回数」と「条件を調べた回数」は別です。問題がどちらを聞いているか確認しましょう。
5.0回で終わることもある
x ← 10
while (x が 5 より小さい)
x ← x + 1
endwhile最初の10<5が偽なので、本体は0回。xは10のままです。whileを見たら、まず初期値で条件を調べてください。
6.更新する場所で結果が変わる
次の2つは似ていますが、合計する値が違います。
A 合計してからiを増やす
i ← 1
sum ← 0
while (i が 3 以下)
sum ← sum + i
i ← i + 1
endwhile足す値は1、2、3。sum=6、最後のi=4です。
B iを増やしてから合計する
i ← 1
sum ← 0
while (i が 3 以下)
i ← i + 1
sum ← sum + i
endwhile足す値は2、3、4。sum=9、最後のi=4です。条件を調べた後にiが増えるので、最後は4も足されます。
行の順番は処理の意味そのものです。「1から3の合計っぽい」と推測せず、書かれた順番で追いましょう。
7.二重ループは内側が終わってから外側へ
count ← 0
for (i を 1 から 3 まで 1 ずつ増やす)
for (j を 1 から 2 まで 1 ずつ増やす)
count ← count + 1
endfor
endfor実行される(i, j)は、(1,1)、(1,2)、(2,1)、(2,2)、(3,1)、(3,2)。内側のループに入るたび、jは1から始まります。
外側3回×内側2回=6回なのでcount=6です。
8.内側の回数が変わるときは足し合わせる
count ← 0
for (i を 1 から 3 まで 1 ずつ増やす)
for (j を 1 から i まで 1 ずつ増やす)
count ← count + 1
endfor
endfori=1なら内側1回、i=2なら2回、i=3なら3回。合計は1+2+3=6回です。

「二重ループだから3×3=9」としてはいけません。内側の終点がiなので、外側の値に応じて変わります。
9.終了に向かう更新を確認する
i ← 1
while (i が 3 以下)
sum ← i
endwhileこの処理ではiが変わらないため、条件は真のままです。今回のルールでは終了しません。
whileでは、どの変数が条件に使われ、どの行でその値が変わるかを探しましょう。ただし、実際のプログラムにはbreakやreturnなどで終了するものもあります。コード全体を見ることが必要です。
10.確認問題3問
問1 forの回数
count ← 0
for (i を 3 から 9 まで 2 ずつ増やす)
count ← count + 1
endfor最後のcountはいくつでしょうか?
問2 whileの回数と最後の値
x ← 3
while (x が 12 より小さい)
x ← x × 2
endwhile本体の実行回数、条件判定の回数、最後のxを求めてください。
問3 内側の範囲が変わるループ
count ← 0
for (i を 1 から 4 まで 1 ずつ増やす)
for (j を i から 4 まで 1 ずつ増やす)
count ← count + 1
endfor
endfor最後のcountはいくつでしょうか?
11.解答と復習ポイント
問1:4。iは3、5、7、9です。初期化のcount←0は、ループ本体の実行回数に含めません。
問2:本体2回、条件判定3回、x=12。3<12で6に更新、6<12で12に更新、12<12は偽で終了します。
問3:10。内側は4回、3回、2回、1回。4+3+2+1=10です。
12.ループ問題の解答前チェック
forの開始・終点・増分を確認したか
条件が真のときだけ本体を実行したか
値を更新する順番を守ったか
最後の偽の判定まで追ったか
二重ループの内側の範囲は毎回同じか
次は「基礎確認ミニ問題集20問」で、トレース・配列・ループをまとめて練習しましょう。基本情報の無料記事まとめから続けられます。
公式の出題表記はIPA 科目Bサンプル問題で確認してください。