基本情報技術者試験 科目Bの「令和6年度 サンプル問題 問1」(条件分岐・3つの整数の最大値)を、図解で解説します。「return している変数が最大値になる条件は何か」 を逆算するだけで、トレースなしで正解できる入門問題です。
動画で見たい方はこちら▼
問題(令和6年度 サンプル問題 問1)
次のプログラムの空欄【】に入れる正しい答えを、解答群から選べ。
関数 maximum は異なる3つの整数を引数で受け取り、そのうちの最大値を返す。
○ 整数型: maximum(整数型: x, 整数型: y, 整数型: z)
if ( 【 】 )
return y
elseif (x > z)
return x
else
return z
endif
解答群
ア x > y
イ y > x and y > z
ウ z > y
エ x > y and x > z
オ y > x and z > y
カ z > x and z > y
本番さながらの環境で解いてみたい方はこちら↓
解説
正解は イ です。
最大値として y を返しているので、【 】 内に入る条件は 「y が最大値の場合」 だとわかります。
引数は x, y, z の3つなので「y が最大値」とは、「y が x よりも大きく かつ z よりも大きい場合」です。これを式として表しているのは イ y > x and y > z です。
Memo: elseif 以降の補足
条件分岐は、前の条件を満たさなかった場合のみ次の条件判定を行います。2回目の elseif() が実行されるのは 「y が最大値ではない場合」 だけ。
text
if (yが最大値の場合)
return y
elseif (x > z) // yが最大値でない場合
return x
else // yが最大値でなく、かつ x が最大値でもない
return z
endif
y が最大値でないなら、最大値は x か z のどちらか。だから x と z を比較して大きい方が最大値です。さらに最後の else は「y が最大値でない」「x が最大値でない」両方を満たすので、必然的に z が最大値、というロジックになっています。
まとめ
条件分岐の穴埋めは 「return されている変数が答えになる条件を、引数で書き下す」 だけで解けます。
関連リンク
条件分岐(IF)の基礎が不安な人は、こちらから確認しましょう。

同じ条件分岐(IF)の関連問題です。



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


