基本情報技術者試験 科目Bの「令和4年度(12月公開) サンプル問題 問2」(fizzBuzz・条件分岐)を、図解で解説します。「条件分岐は細かい条件ほど上に書く」 というルールを押さえれば、トレースなしで一発で正解にたどり着けます。
動画で見たい方はこちら▼
問題(令和4年度 サンプル問題 問2)
次のプログラム中の【a】〜【c】に入れる正しい答えの組合せを、解答群の中から選べ。
関数 fizzBuzz は、引数で与えられた値が、3 で割り切れて 5 で割り切れない場合は「3で割り切れる」を、5 で割り切れて 3 で割り切れない場合は「5で割り切れる」を、3 と 5 で割り切れる場合は「3と5で割り切れる」を返す。それ以外の場合は「3でも5でも割り切れない」を返す。
○ 文字列型: fizzBuzz(整数型: num)
文字列型: result
if (numが 【a】 で割り切れる)
result ← "【a】 で割り切れる"
elseif (numが 【b】 で割り切れる)
result ← "【b】 で割り切れる"
elseif (numが 【c】 で割り切れる)
result ← "【c】 で割り切れる"
else
result ← "3でも5でも割り切れない"
endif
return result
解答群
| a | b | c | |
|---|---|---|---|
| ア | 3 | 3と5 | 5 |
| イ | 3 | 5 | 3と5 |
| ウ | 3と5 | 3 | 5 |
| エ | 5 | 3 | 3と5 |
| オ | 5 | 3と5 | 3 |
解説
正解は ウ です。
条件分岐は、細かい(厳しい)条件ほど上に書きます。
この「上から順に判定する」理解が重要です。不安な人はこちらを先に確認しましょう。

今回、最も細かい条件は「3 と 5 で割り切れる」です(3 で割り切れる・5 で割り切れる、を両方満たす特別なケース)。「3と5」が一番上の分岐である【a】に入っているのは、選択肢のうち ウだけ です。
Point: 上の方に書いてある条件分岐ほど、条件が細かくなる
条件分岐は、最初の条件が一番細かく、後の方ほどシンプルになる傾向があります。2つめ以降の条件は「それより前の条件を満たしていない」ことも前提になるからです。
この順番を誤って、より細かい条件の分岐を後にしてしまうと、細かい条件に合致するケースが前の elseif で先に拾われてしまい、そこに到達できなくなります。
Memo: 浮いている選択肢は正解の可能性大
a に注目すると、ウだけ選択肢として浮いています。3 も 5 も2つずつあるのに、3と5 はウしかありません。
| a | |
|---|---|
| ア | 3 |
| イ | 3 |
| ウ | 3と5 |
| エ | 5 |
| オ | 5 |
このように浮いている選択肢がある場合、正解の可能性が高い、というメタ的な見方も覚えておきましょう。
まとめ
fizzBuzz 系の条件分岐問題は、「細かい条件ほど上」のルール だけでトレース不要で解けます。同時に「浮いている選択肢を疑う」というメタ視点も、本番で時短に効きます。
関連リンク

関連動画
この問題と同じ「読解系・条件分岐(IF)」の章で、これより前に学ぶ動画です。
講座の全動画はこちら(プレイリスト)。
