基礎理論|平成23年度 特別 ITパスポート試験 問93
〔中問B・プログラミングとテスト〕〔テクノロジ〕関数の処理の流れを図1に示す。図1の a に入れる適切な条件式はどれか。
〔中問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 割を割り引く。
〔図1 関数の処理の流れ図〕当課が流れを字で書き起こしたもの
```
開始
↓
〈判断〉 a ?
├─ No ─→ L = −1 ────────┐
└─ Yes │
↓ │
〈判断〉 J + K ≧ 20 ? │
├─ No ─→ L = 3,000×J + 1,000×K ─┤
└─ Yes │
↓ │
L = 0.9×(3,000×J + 1,000×K)─┤
↓
終了
```
- ✓ これが正解0 ≦ J ≦ 20 and 0 ≦ K ≦ 20
- 0 ≦ J ≦ 20 or 0 ≦ K ≦ 20
- 0 ≦ J + K ≦ 20
- J > 20 and K > 20
解説
二つの枚数が、どちらも上限の内に収まる条件を書きます。
この関数は、まず買える条件を満たすかを判じます。満たさなければ、合計に負の一を入れて返しました。買える条件は、大人と子供のそれぞれに置かれています。どちらも二十枚までで、零を下回ることもありません。つまり二つの枚数が、それぞれ範囲の内に在ることが要ります。だから二つの条件を、かつで結んだ式が入りました。この式を挙げた肢が当たり、両方を満たす形になります。またはで結ぶと、片方だけでも通ってしまいました。大人が三十枚でも、子供が範囲内なら通ってしまいます。二つを足した数で判じる式も、条件が違いました。足して二十以内でも、片方が二十を超えることがあります。どちらも二十を超えると書いた式は、向きが逆でした。そちらは、買えない場合を表す式になります。シラバスも、流れ図による表現を学ぶよう求めています。
ほかの選択肢はなぜ違うのか
- またはで結んだ式を挙げた肢のほうです。片方だけを満たしても、通ってしまいました。大人が三十枚でも、子供が範囲内なら通ります。買えない組を、通してしまうことになりました。結び方が緩すぎます。両方を満たす要りがありました。
- 二つを足した数で判じる式が、こちらです。合計が二十以内かどうかを見ていました。ところが条件は、それぞれに置かれています。足して二十以内でも、片方が超えることがありました。見る単位が違います。合計で判じる場面は別でした。
- どちらも二十を超えると書いた式です。買えない場合を表す形になっていました。しかもかつで結んでいるので、両方超えたときだけです。片方だけ超えた組は、通ってしまいました。向きも範囲も違います。二重に外れた式でした。向きが逆です。
この問題に関係する言葉
- 流れ図
出典:平成23年度 特別 ITパスポート試験 問93(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くなら基礎理論へ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)