最大値を返す関数のトレース

■ 解き方の方針 各returnが実行される条件を確認します。最初のifが成立すると直ちにxを返すので、空欄には xが三つの値の中で最大であることを保証する条件 が必要です。 ■ xを返してよい条件 xが最大であるためには、xがyより大きいだけでなく、zよりも大きくなければなりません。三つの整数は互いに異なるので、条件は次のようになります。 $x > y$ and $x > z$ ■ 後続の分岐も確認する 最初のifが真: xはyとzの両方より大きいので、xを返します。 最初のifが偽で、y > z: この時点でxは最大ではありません。さらにyはzより大きいので、yを返せます。 どちらも偽: xもyも最大ではないため、zを返します。 x, y, z の大小 x>y and x>z y>z 返す値 x>y>z 真 − x x>z>y 真 − x(「x>y and y>z」だと取りこぼす) y>x>z 偽 真 y z>y>x 偽 偽 z ■ 正解と誤答の見分け方 したがって、正解は イ です。 「x > y」や「x > z」だけでは、比較していないもう一方がxより大きい可能性が残ります。また「x > y and y > z」はx > y > zという並びだけを表し、x > z > yを取りこぼします。

次のプログラム中の    に入れる正しい答えを、解答群の中から選べ。
関数 maximum は、異なる三つの整数を引数で受け取り、そのうちの最大値を返す。

[プログラム]
○整数型:maximum(整数型: x, 整数型: y, 整数型: z)
if (    )
return x
elseif (y > z)
return y
else
return z
endif

出典令和6年度 公開問題 基本情報技術者試験 科目B 問1
ア
x>yx > y
イ
x>yx > y and x>zx > z
ウ
x>yx > y and y>zy > z
エ
x>zx > z
オ
x>zx > z and z>yz > y
カ
z>yz > y