ITパスポート過去問 令和7年度(2025年)問99
関数calculateAmountOfPrizeは,業務改善の効果における改善額と短縮期間を,それぞれimprovementとperiodで受け取り,賞金額を戻り値とする。改善額が20万円で短縮期間が3日の業務改善と,改善額が5万円で短縮期間が14日の業務改善があった。この二つの賞金額の合計は何円か。ここで,改善額と短縮期間の値はそれぞれ0以上とする。

選択肢
- ア:1,000
- イ:1,500
- ウ:3,000
- エ:5,500
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
提示された疑似コードの条件分岐に従って、2件の業務改善それぞれの賞金額を求めて合計します。改善額20万円・短縮3日は2,000円、改善額5万円・短縮14日は1,000円となるので、合計は3,000円です。
Point
この問題は、if-elseによる条件分岐が入れ子になっている疑似コードを読み取り、与えられた入力値(improvement、period)に対して、どの分岐が実行されるかを判断して戻り値(prize)を正しく計算できるかを確認しています。
解くために必要な知識
この問題を解くには、条件分岐(if-else文)の動きと、値を当てはめて処理を追う方法(トレース)を理解している必要があります。
用語の整理
| 用語 | 意味 |
|---|---|
| 条件分岐(if-else文) | 条件が成り立つかどうかで、実行する処理を分ける構造です。 |
| トレース | 具体的な入力値を入れて、上から順に条件判定と代入結果を追う作業です。 |
| 疑似コード | 特定のプログラミング言語に依存せず、処理の流れを表した記述です。 |
| 戻り値 | 関数が呼び出し元へ返す値です。 |
解くための手順
1. 入力の単位をそろえる
-
improvementは円で比較します。
-
問題文の「20万円」「5万円」は、円に直してから比較します。
- 20万円 = 200000円
- 5万円 = 50000円
2. 条件式を上から順に判定する
-
外側のifで「improvement < 100000」かを判定します。
-
次に、進んだ先の内側のifで「period < 7」かを判定します。
3. 代入される賞金額を読み取る
- 到達した分岐でprizeに代入される値(500、1000、2000、5000)を確認します。
4. 複数回の結果があれば合計する
- 今回は2件分の戻り値を足します。
条件と賞金額の対応
| improvement(円) | period(日) | prize(円) |
|---|---|---|
| 100000未満 | 7未満 | 500 |
| 100000未満 | 7以上 | 1000 |
| 100000以上 | 7未満 | 2000 |
| 100000以上 | 7以上 | 5000 |
問題の解法手順
この問題では、2つの入力パターンそれぞれで条件分岐を順に判定し、戻り値(賞金額)を出してから合計します。
解く手順
前提(単位)
-
improvementは「改善額(円)」です。
-
periodは「短縮期間(日)」です。
【1回目】改善額20万円、短縮期間3日
-
improvement = 200000、period = 3
-
判定1:improvement < 100000 か。
- 200000 < 100000 は成り立ちません。
- else側へ進みます。
-
判定2:period < 7 か。
- 3 < 7 は成り立ちます。
- prize = 2000 です。
-
戻り値は2,000円です。
【2回目】改善額5万円、短縮期間14日
-
improvement = 50000、period = 14
-
判定1:improvement < 100000 か。
- 50000 < 100000 は成り立ちます。
- if側へ進みます。
-
判定2:period < 7 か。
- 14 < 7 は成り立ちません。
- else側へ進みます。
- prize = 1000 です。
-
戻り値は1,000円です。
合計
- 2,000 + 1,000 = 3,000(円)
選択肢ごとの解説
- ア:不正解
2回目の結果(1,000円)のみであり、1回目(2,000円)を足していないため誤りです。
- イ:不正解
疑似コードのどの分岐にもprize = 1,500となる代入がないため誤りです。
- ウ:正解
1回目が2,000円、2回目が1,000円となり、合計3,000円なので正解です。
- エ:不正解
どちらの入力でもprize = 5,500となる組合せはなく、条件判定や代入値の読み取りが誤っている可能性があるため誤りです。
まとめ
提示された疑似コードの条件分岐に従って、2件の業務改善それぞれの賞金額を求めて合計します。改善額20万円・短縮3日は2,000円、改善額5万円・短縮14日は1,000円となるので、合計は3,000円です。
テクノロジ系 > 基礎理論 > アルゴリズムとプログラミング
2回目の結果(1,000円)のみであり、1回目(2,000円)を足していないため誤りです。
疑似コードのどの分岐にもprize = 1,500となる代入がないため誤りです。
1回目が2,000円、2回目が1,000円となり、合計3,000円なので正解です。
どちらの入力でもprize = 5,500となる組合せはなく、条件判定や代入値の読み取りが誤っている可能性があるため誤りです。