ITパスポート試験 ITパスポート 2011年 (平成23年 特別)93: [中問B 共通設定] Q社のRさんは,チケット販売システムの開発で使用する関数のプログラミングとテストを実施しようとしている。この関数は,大人と子供のチケットの

ITパスポート 2011年 (平成23年 特別)
Q 9393 / 100
[中問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 → 終了。
この問の正解率:68.66%(852件)
この問題の本文・選択肢・正解・解説(展開)

問題本文

[中問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
  • .0 ≦ J ≦ 20 or 0 ≦ K ≦ 20
  • .0 ≦ J+K ≦ 20
  • .J 20 and K 20

正解

. 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分岐の意味と合わない。

選択肢ごとの解説

  • .正解。0≦J≦20 and 0≦K≦20は大人・子供それぞれの上限20枚を両方満たすことを要求する正しい条件式。両方真でなければ次工程に進めず、購入条件のチェックとして適切。
  • .不正解。orだと片方が範囲内なら通過してしまうため、もう一方が0未満や21以上でも合計計算に進む。条件不十分で、不正な購入を許してしまう。
  • .不正解。0≦J+K≦20は合計20枚以下の条件で、個別の20枚制限を表せない。例えばJ=25,K=-5でも合計20と判定されてしまう抜け穴がある。
  • .不正解。J20 and K20は両方20枚超のときに真となる条件で、購入条件不成立を検出する方向だが、aはYes分岐で「条件満たす」場合に通過させるため意味が逆。

ITパスポート 2011年 (平成23年 特別)過去問一覧へ戻る・問93