基本情報技術者試験過去問 令和6年度(2024年)科目B問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
- ア
- イ
- ウ
- エ
- オ
- カ
正解と解き方・学習ポイント(AI解説)
ifではreturn xを実行するため、条件式はxが3つの整数の中で最大のときだけ真になる必要があります。3つの整数は異なるので、xが最大である条件は「x>y かつ x>z」です。したがって、空欄には「x > y and x > z」を入れます。ifに入らなかった場合はxが最大ではないため、残りのyとzを比較して、y>zならy、そうでなければzを返せば最大値になります。
- ア:不正解
- イ:正解
- ウ:不正解
- エ:不正解
- オ:不正解
- カ:不正解
Point
この問題は、if / elseif / elseの各分岐が返す値と、条件式が表すべき状況を対応付けて考えられるかを確認するものです。特に、最大値判定で「ある値が最大である条件」を「他の全てより大きい」としてandで表現できるかが問われています。
解くために必要な知識
この問題を解くには、比較演算子と論理演算子を用いて「最大である条件」を表現する知識が必要です。
用語の整理
| 用語名 | 意味 |
|---|---|
| 条件分岐(if / elseif / else) | 条件を上から順に判定し、最初に真になった分岐の処理を実行する仕組みです。 |
| 比較演算子(>) | 左辺が右辺より大きいときに真になります。 |
| 論理演算子(and) | 両方の条件が真のときだけ真になります。 |
最大値判定の基本
「ある値が最大」の表し方
3つの値x, y, zがあり、xが最大である条件は次の形になります。
- x > y and x > z
ポイントは、最大であるためには他の全てより大きい必要があるため、比較をandでつなぐことです。
if-elseif-elseで最大値を返す考え方
1. ifの条件は「その分岐で返す値が最大値になる条件」にする
この問題ではifでxを返すので、if条件は「xが最大値である条件」になります。
2. elseif以降は、直前までの条件が偽であることを前提にできる
この問題では、ifが偽なら「xが最大値ではない」ことが確定します。そのため、残りはyとzを比較するだけで最大値が決まります。
まとめ
ifではreturn xを実行するため、条件式はxが3つの整数の中で最大のときだけ真になる必要があります。3つの整数は異なるので、xが最大である条件は「x>y かつ x>z」です。したがって、空欄には「x > y and x > z」を入れます。ifに入らなかった場合はxが最大ではないため、残りのyとzを比較して、y>zならy、そうでなければzを返せば最大値になります。