ITパスポート試験 / 令和7年度 ITパスポート試験 公開問題 / 問99
certification-simodake-work

令和7年度 ITパスポート試験 公開問題 問99 解説 プログラムのトレース

問99 関数 calculateAmountOfPrize は, 業務改善の効果における改善額と短縮期間を, それぞれ improvement と period で受け取り, 賞金額を戻り値とする。改善額が20万 円で短縮期間が3日の業務改善と, 改善額が5万円で短縮期間が14日の業務改善があっ た。この二つの賞金額の合計は何円か。ここで, 改善額と短縮期間の値はそれぞれ0 以上とする。 〔プログラム〕 ○整数型: calculateAmountOfPrize(整数型: improvement, // 改善額(円) 整数型: period) // 短縮期間(日) 整数型: prize // 賞金額(円) if (improvement が 100000 より小さい) if (period が 7 より小さい) prize ← 500 else prize ← 1000 endif else if (period が 7 より小さい) prize ← 2000 else prize ← 5000 endif endif return prize

  1. ア 1,000
  2. イ 1,500
  3. ウ 3,000 ✓ 正答
  4. エ 5,500

解説

この問題は、提示されたプログラムの条件分岐(if文)に、二つの業務改善の数値をそれぞれ当てはめ、得られた二つの賞金額を合計することで解きます。

まず、一つ目の業務改善(改善額20万円、短縮期間3日)について処理を追います。 プログラムの最初の分岐は「改善額が100,000より小さいか」です。改善額は200,000円なので、この条件は成立せず「else」側の処理に進みます。 次に、進んだ先の内部にある「短縮期間が7より小さいか」という条件を見ます。短縮期間は3日なので、この条件は成立し、賞金額(prize)には2,000が代入されます。

次に、二つ目の業務改善(改善額5万円、短縮期間14日)について処理を追います。 最初の分岐「改善額が100,000より小さいか」に対し、改善額は50,000円なので、この条件は成立して「if」の中の処理に進みます。 次に、進んだ先の内部にある「短縮期間が7より小さいか」という条件を見ます。短縮期間は14日なので、この条件は成立せず「else」側の処理に進みます。 ここで、賞金額(prize)には1,000が代入されます。

最後に、これら二つの賞金額を合計します。 2,000 + 1,000 = 3,000 計算の結果、合計額は3,000円となり、選択肢ウが正解となります。

この問題のポイントは、if文の中にさらにif文が記述されている「入れ子(ネスト)」構造を正確に読み解くことです。プログラムでは複数の条件を組み合わせて結果を絞り込む際、このような構造が頻繁に使われます。

読み解く際のコツは、字下げ(インデント)に注目して、どのifとどのelse、そしてどのendifが一つのセットになっているかを把握することです。今回のプログラムは、大きく分けて「改善額が10万円未満のグループ」と「改善額が10万円以上のグループ」に分かれ、それぞれのグループ内でさらに「期間が7日未満か、それ以上か」で賞金が決まるという四つのパターンを表現しています。

このような条件分岐のロジックは、ITパスポートの試験だけでなく、実務における表計算ソフトの関数作成や、ビジネスルールのシステム化、自動判定のアルゴリズムを考える際など、あらゆるIT活用の場面で基礎となる知識です。

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう