PR

基本情報技術者試験 令和6年度 科目B 公開問題(過去問) 問1 解説

基本情報技術者試験 令和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 でつなぐ必要があります。

以上により、この問題の解答は「イ」になります。