基本情報技術者試験 令和6年度 科目B 公開問題(過去問) 問1 について解説します。
問題
問1 次のプログラム中の〔 〕に入れる正しい答えを、解答群の中から選べ。
関数 maximum は、異なる三つの整数を引数で受け取り、そのうちの最大値を返す。
[プログラム]
○整数型: maximum(整数型: x, 整数型: y, 整数型: z)
if (〔 〕)
return x
elseif (y > z)
return y
else
return z
endif
解答群
ア x > y
イ x > y and x > z
ウ x > y and y > z
エ x > z
オ x > z and z > y
カ z > y
解説・解答
関数 maximum(x, y, z) は3つの異なる整数 x, y, z のうち最大のものを返す関数です。
空欄〔 〕に入るべき条件は return x を実行してよい条件、つまり「x が3つの中で最大であることを表す条件式」です。
プログラムを日本語にすると次のようになります。
==========
関数 maximum(x, y, z)
もし (〔条件〕) が成り立てば
x を返す
そうでなくて、もし (y > z) なら
y を返す
それ以外なら
z を返す
おわり
==========
空欄〔 〕に入るべき条件、つまり x を返してよいのは、
x が y より大きく、かつ x が z より大きいとき
ですから、論理式で書くと
x > y and x > z
になり、これが〔 〕に入るべき条件です。
なお、x > y だけだと z との比較がないので、「x と y では x が大きいが、z の方がもっと大きい」というケースを弾けません。したがって、「x が y より大きく、なおかつ x が z より大きい」というように、2つの条件を AND でつなぐ必要があります。
以上により、この問題の解答は「イ」になります。
