跳到正文

平成22年度 秋期 ITパスポート試験 問90

这道题的解析和你的作答记录。

問90
頻出度★★★

M さんは,総務課の N さんから宅配荷物の発送業務で利用する料金計算プログラム(以下,プログラムという)の作成を依頼された。そこで,N さんから聞いた料金計算の方法を基に次のように要件をまとめ,プログラムを作成した。 (1) 料金はサイズ区分と発送先の地区から表1の料金表で求める。サイズ区分は荷物の3辺計(荷物の縦,横,高さの長さの合計で1cm単位)と重量(1kg単位)を比較し,どちらか大きい方の区分を適用する。 なお,3辺計が140cm又は重量が20kgを超える荷物は受け付けない。 (2) 荷物の3辺計と重量,発送先の地区(A~D)を入力すると,料金を出力する。 表1 料金表(単位 円)

区分3辺計(cm)重量(kg)ABCD
180まで5まで1,3009501,1501,800
2100まで10まで1,6001,2001,4002,350
3140まで20まで2,0001,6001,8003,400

M さんは,プログラムを N さんに引き渡す前にテストを行うことにした。 テストに当たり,表2の出力結果表を作成し,これに基づいてテストデータを準備した。表2は,入力データが各列に示す Yes の組合せに該当する値であるときの正しい出力を,欄“予想出力”に記入したものである。 表2 出力結果表

123456…36
地区AYesYesYesYesYesYes…
B…
C…
D…Yes
3辺計(cm)80までYesYesYes…
100までYesYesYes…
140まで…Yes
重量(kg)5までYesYes…
10までYesYes…
20までYesYes…Yes
予想出力(円)a…
↑ b↑ c

注 網掛けの部分は,表示していない。 表2の出力結果表のaに入る予想出力はどれか。

出典 平成22年度 秋期 ITパスポート試験 問90
解説

問 90

  • 错误ア

    1,300 日元是表1中区分1、地区 A 的运费。这是只看三边合计「80 以内」就判定为区分1 时得到的数值,忽略了重量「20 以内」(=区分3)。需求要求「采用较大一方的区分」,因此不能取较小的区分1。把这一列错误地输出为 1,300 日元的程序,正是本次测试想要发现的缺陷。

  • 错误イ

    1,600 日元是表1中区分2、地区 A 的运费(也是区分3、地区 B 的运费)。但第3列的三边合计不是「100 以内」而是「80 以内」,重量也不是「10 以内」而是「20 以内」,因此不会是区分2;地区也不是 B 而是 A。需求中任何地方都没有写过取区分1 与区分3 之间的中间值这样的计算方法。

  • ウ

    正解 正确答案是 ウ(2,000 日元)。a 是表2第3列的预期输出,该列的输入条件有三项:「地区=A」「三边合计=80 以内」「重量=20 以内」。这里,需求 (1) 中的「尺寸区分要比较三边合计与重量,采用其中较大一方的区分」就是关键。查看表1,三边合计「80 以内」属于区分1,而重量「20 以内」属于区分3。两者相比取较大的一方,即采用区分3。之后只需读出表1中区分3 那一行与地区 A 那一列的交叉处,就能得到 2,000 日元。也就是说,这一列的意图并不是「又轻又小的包裹的运费」,而是「虽然体积小但较重的包裹,因此按重量一侧的区分计费」,所以 a=2,000 日元。

  • 错误エ

    3,400 日元是表1中区分3、地区 D 的运费。判断为区分3 是正确的,但读错了地区。第3列在「地区=A」处标有 Yes,而在 D 处标有 Yes 的是表2 最右端的第36列。即使区分所在的行对上了,一旦取错地区所在的列,运费也会相差很大。

ここがポイント
  • 尺寸区分的判定规则:当由三边合计求得的区分与由重量求得的区分不一致时,采用较大一方(运费较高一方)的区分。第3列是三边合计→区分1、重量→区分3,因此采用区分3,与地区 A 交叉处的 2,000 日元就是答案。
  • 这张表2 把地区4种 × 三边合计3种 × 重量3种 = 36 种输入条件的组合全部列了出来,不看内部的处理步骤,仅凭输入与预期输出的对应关系来确认正确性。这种不看程序内部、只检验是否按规格输出的做法称为黑盒测试;先做出像表2 这样的预期值表,再据此准备测试数据,是标准做法。
用語
解答問90ウ
练这一题

作答记录