平成23年度特別 ITパスポート 問93 解説
中問B(問93〜96)
プログラミングとテストに関する次の記述を読んで,問93~96に答えよ。
Q社のRさんは,チケット販売システムの開発で使用する関数のプログラミングとテストを実施しようとしている。この関数は,大人と子供のチケットの購入希望枚数を基に,合計金額の計算を行う。大人のチケットは3,000円,子供のチケットは1,000円である。一度に購入できる大人と子供のチケットの最高枚数は,それぞれ20枚までであり,関数はこの購入条件を満たしているかどうかをチェックする。また,合計で20枚以上購入する場合,割引処理を行う。関数の仕様と処理内容は次のとおりである。
〔関数の仕様〕
関数に渡される引数
J:大人のチケットの購入希望枚数,K:子供のチケットの購入希望枚数
(J,Kは0以上の整数)
関数の戻り値
L:合計金額 (Lは整数)
〔処理内容〕
(1) 購入希望枚数を基に,購入条件を満たしているかどうかを判定する。購入条件を満たしていない場合,合計金額に-1を代入する。
(2) 購入条件を満たしている場合,引数を基に次のとおりに合計金額の計算を行う。
合計金額 = 大人のチケットの購入希望枚数×3,000+子供のチケットの購入希望枚数×1,000
(3) チケットを合計で20枚以上購入した場合は,合計金額から1割を割り引く。
関数の処理の流れを図1に示す。図1のaに入れる適切な条件式はどれか。

- ア0≦J≦20 and 0≦K≦20
- イ0≦J≦20 or 0≦K≦20
- ウ0≦J+K≦20
- エJ>20 and K>20
答えを見る
正解 ア0≦J≦20 and 0≦K≦20
要点両方が範囲内であることが条件ならandで結ぶ
解説
購入条件は「大人も子供もそれぞれ20枚まで」なので、JとKの両方が0以上20以下であるときだけ合計金額の計算へ進みます。両方を同時に満たすのでandで結んだアが正解です。
- イ:orだと一方が21枚以上でも条件を満たしてしまう。
- ウ:合計20枚以下という条件は仕様にない(合計20枚以上は割引の条件)。
- エ:条件を満たさない場合を表しており、Yesで計算に進む流れと逆になる。