関数 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 end if return prize
この設問が問うていること
ネスト(入れ子)構造を持つ条件分岐プログラムの処理結果をトレースする計算設問です。
総合解説
2つのケースについて、プログラムの条件分岐に当てはめて賞金額を算出します。1.【改善額20万円(200,000円)、短縮期間3日の場合】`improvement`が100,000円以上のため、外側の`else`に入ります。`period`(3日)が7未満のため、内側の`if`に入り、`prize`は2,000円になります。2.【改善額5万円(50,000円)、短縮期間14日の場合】`improvement`が100,000円未満のため、外側の`if`に入ります。`period`(14日)が7以上のため、内側の`else`に入り、`prize`は1,000円になります。2つの賞金額の合計は「2,000円 + 1,000円 = 3,000円」となり、正解は選択肢cです。
こんな聞き方もできます(タップで質問)