平成23年 春期 ITパスポート 中問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割を割り引く。

[デクノロジ]
 問93  関数の処理の流れを図1に示す。
図1のaに入れる適切な条件式はどれか。


図1 関数の処理の流れ図

 ア  0 ≤ J ≤ 20 and 0 ≤ K ≤ 20
 イ  0 ≤ J ≤ 20 or 0 ≤ K ≤ 20
 ウ  0 ≤ J + K ≤ 20
 エ  J > 20 and K > 20

[マネジメント]
 問94  関数のテストを行うために、条件のすべての組合せと処理を整理したものを表1に示す。
表1のb、cに入れる適切な字句の組合せはどれか。
表1 条件のすべての組合せと処理
@ A B C D E F G

Jが0以上20以下 Y Y N N Y Y N N
Kが0以上20以下 Y Y Y Y N N N N
J+Kが20より小さい Y N Y N Y N Y N

合計金額を求める X X





合計金額を1割引きとする b





合計金額に-1を代入する
c



注記1 網掛けの部分は、表示していない。
注記2 Yは条件に該当し、Nは条件に該当しない。
Xは処理を実行し、−は処理を実行しない。
例えば@の場合、三つの条件に対する結果が、Y、Y、Yとなったとき、合計金額を求める処理が実行されることを示す。
b c
X X
X
X

[マネジメント]
 問95  関数をテストするために用意したテストデータと予想結果の一部を表2に示す。
表2のd、eに入れる値の組合せはどれか。
表2 テストデータを予想結果の一部
テスト番号 J K L
1 3 2 11,000
3 15 15 d
3 20 0
4 10 30 e
注記 網掛けの部分は、表示していない。
b c
54,000 54,000
54,000 -1
60,000 54,000
54,000 -1

[テクノロジ]
 問96  1日券、2日券といった日数の異なる種類のチケットの金額計算に対応できるように、[処理内容]の(2)及び関数の仕様を変更し、引数にチケットの日数を表すM を追加した。
M には使用できる日数が入る。
種類別のチケット金額を設定する配列をTP(M, N)とする。
Nは大人の場合は1、子供の場合は2とする。
配列の値は次のとおりである。引数がJ=10、K=20、M=2のときの合計金額は何円か。
なお、関数は、引数に応じてこの配列を参照し、チケット金額を決定する。
[配列の値]
TP(1, 1) = 3,000,  TP(1, 2) = 1,000,
TP(2, 1) = 4,000,  TP(2, 2) = 1,500,
TP(3, 1) = 5,000,  TP(3, 2) = 2,000

 ア  45,000
 イ  50,000
 ウ  63,000
 エ  70,000


答え
 問93 ア 問94 ア
 問95 イ 問96 ウ


解説

 問93 一度に購入できるチケットの数は大人と子供それぞれ20枚までなので、大人のチケット購入希望枚数(J)は0以上20以下であり、子供のチケット購入希望枚数(K)は0以上20以下であり、どちらか一方でもこの条件を満たさなければ購入できないので、条件式としては
 0 ≤ J ≤ 20 and 0 ≤ K ≤ 20
(ア)になる。
 問94 Aの条件はJが0以上20以下、Kが0以上20以下で、J+Kが20以上の場合なので、“合計金額を1割引きとする”処理が行われる。
Cの条件はJが20より大きく、Kが0以上20以下、J+Kが20以上の場合なので、“合計金額に-1を代入する”処理が行われる。
※Aの“合計金額を求める”のところは“X”ではなく“−”だと思います。
 問95 dはJ = 15、K = 15でJ+K=30なので合計金額を1割引きする計算が行われるので
 L = 0.9×(3,000×J + 1,000×K) = 0.9×(3,000×15 + 1,000×15) = 54,000
になる。
eは、J = 20、K = 30でKが20以上なので合計金額は-1になる。
 問96 M = 2(2日券)の時の大人のチケットはTP(2, 1)で4,000円で、子供のチケットはTP(2, 2)で1,500円であり、J = 10、K = 20でJ + K = 30なので、“合計金額を1割引きとする”処理が行われ
 L = 0.9×(4,000×J + 1,500×K) = 0.9×(4,000×10 + 1,500×20) = 63,000
(ウ)になる。


戻る 一覧へ 次へ