[中問B 共通設定] 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割を割り引く。 [テクノロジ] 問93 関数の処理の流れを図1に示す。図1のaに入れる適切な条件式はどれか。 [図1 関数の処理の流れ図] 開始 → [a] (Yes/No分岐) → Yesの場合 J+K ≧ 20 (Yes/No分岐) → Yesなら L = 0.9×(3,000×J+1,000×K), Noなら L = 3,000×J+1,000×K → 終了。 aがNoの場合は L = -1 → 終了。
ア. 0 ≦ J ≦ 20 and 0 ≦ K ≦ 20
関数の処理: 購入条件「J(大人)とK(子供)それぞれ0〜20枚まで」を満たすかチェック。aには両方の枚数範囲をAND条件で記述する必要がある。0≦J≦20 and 0≦K≦20が正しい条件式。orだと片方が範囲外でも通過してしまい、J+Kの合算チェックは別の条件(20枚以上で割引)で、上限制限とは目的が違う。J20 and K20は条件違反検出の方向が逆で、Yes分岐の意味と合わない。
ITパスポート 2011年 (平成23年 特別) の過去問一覧へ戻る・問93