基本情報技術者試験の令和6年度の公開問題を解いてみよう。
正解:イ
この問題は、最大値を求める関数 maximum を完成させるために、空欄に適切な条件式を選ぶという内容である。
■ プログラムの流れ
if (□)
return x
elseif (y > z)
return y
else
return z
endif
この構造を見ると、最初の if 文で「xが最大の場合」を判断して x を返し、それ以外では y と z の大小を比較して大きい方を返している。
つまり、空欄には「xが最大である」ことを意味する条件が入るべきである。
ア)x > y
xとyだけの比較で、z との比較が含まれていないので不十分→ ❌
イ)x > y and x > z ✅
「x が y より大きく、かつ z よりも大きい」 → x が最大値である条件。
これが正解!
ウ)x > y and y > z
「x > y > z」である状況のみを考慮しており、例えば「x=3, y=2, z=10」などでは誤作動する → ❌
エ)x >z
x と z の比較だけで、y との比較が含まれていなので不十分 → ❌
オ)x> z and z > y
実質的に「x > z > y」だが、y が最大のケースを除外してしまう可能性がある → ❌
カ)x > z
これもxと z との比較だけなので不十分 → ❌
この関数では「x が最大であるか」をまず判断し、それ以外の場合に y と z を比較する形になっている。よって、最初の条件に入るべきは「x > y かつ x > z」という論理式となる。
コメント