平成23年度 特別 ITパスポート試験 問93
テクノロジ/アルゴリズム【中問B(問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に入れる適切な条件式はどれか。

出典:平成23年度 特別 ITパスポート試験 問93
- ア0≦J≦20 and 0≦K≦20
- イ0≦J≦20 or 0≦K≦20
- ウ0≦J+K≦20
- エJ>20 and K>20
正解:ア
解説
図 1 の a は,購入条件を満たしているかどうかを判定する条件式で,No のとき合計金額に −1 を代入しています。購入条件は「大人と子供のチケットの枚数が,それぞれ 20 枚まで」なので,J が 0 以上 20 以下,かつ K が 0 以上 20 以下という二つの条件がどちらも成り立つ必要があります。したがって and で結んだ条件式が入ります。
選択肢ごとの解説
- ア正しい。大人も子供もそれぞれ 20 枚までという購入条件を,and で結んで表した条件式です。
- イ誤り。or で結ぶと,J と K のどちらか一方が範囲内であれば Yes になり,もう一方が 20 枚を超えていても購入条件を満たしたことになってしまいます。
- ウ誤り。大人と子供の合計枚数が 20 枚以下という条件になり,購入条件(それぞれ 20 枚まで)と異なります。例えば J = 20,K = 20 の購入は認められるのに,この式では No になってしまいます。
- エ誤り。J,K がともに 20 枚を超える場合を表す式で,購入条件を満たさないときの条件です。