H28 PM1問題
H28 PM1解答
H28 PM1講評
問2 食券自動販売機
設問1
(1)からいきましょう。営業情報の定義は表2に記載されています。そこには
「料理の名称、単価、販売可能数、メニューボタンの配置位置、料理の種別、種別ごとに
対象となるキッチンプリンタの情報」と記載がありますので、ここから選べば良さそうですね。
問題文には「名称、単価、販売可能数以外」との書いてあるので、「メニューボタンの配置位置、
料理の種別、種別ごとに対象となるキッチンプリンタの情報」から記載すればいいでしょう。
ここで「キッチンプリンタの情報」は料理の種別に一意に結びついていると考えると2つに
絞られますね。
(2)に進みますが、確定ボタンと、取消ボタンだけが反応する状況とはどんな状況でしょう?
メニューボタンが押せない状況を考えます。
注文していない状況でメニューが押せなかったら
「販売終了」という事なので、確定、取消も押せなくなりますので、却下です。
と考えると、注文が進んでいることになりますね。「メニューが押せない」という事は、
注文を追加することが出来ない、要するにすべての販売可能数が0という事になりますね。
ここを簡単に書いてあげればいいでしょう。
表2にも「販売可能数が0の料理はメニューボタンの色を薄く表示し、タッチされても反応しない」
と記載がありますね。
(3)は通信を全部書きだした方が早いですね。
1 2 3 4 5 6 7 8 9 10 11 |
制御⇒ユニット1 100byte送信 ユニット1 500us処理 ユニット1⇒制御 20byte送信 制御部 100us処理 制御⇒ユニット2 100byte送信 ユニット2 500us処理 ユニット2⇒制御 20byte送信 制御部 100us処理 制御⇒ユニット3 100byte送信 ユニット3 500us処理 ユニット3⇒制御 20byte送信 |
全データ数は(100+20)*3=360byteです。
ここで忘れてはいけないのが、P11の1行目にある「1byteは10bitとする」という事です。
これは計算の都合で書かれている物ではなく、一般的なシリアル通信の話をしているわけです。
8bitを送るのですが、通信の開始と終了を示す「スタートビット」「ストップビット」が
それぞれ1bitずつ必要なので、8bitの有効データを送りたい場合は10bitの通信データが流れる
ことになります。
なので360byte(有効データ)⇒3600bit(通信データ)と換算できます。
通信レートが100Kbpsなので、
3600/100000 = 36ms
となります。ここに処理時間を加えると、36+0.5+0.1+0.5+0.1+0.5 = 37.7msが送信完了する
時間です。
通信周期が100msなので100-37.7 = 62.3msが次のデータ開始までの時間です。
(1) 料理の種別、メニューボタンの配置位置
(2) 料理の注文を続けていき、全料理の販売可能数が0となった場合
(3) 62.3ms
設問2
(1)フローチャートのな説明ですね。まず、ア、イ、ウですが図3、表2を見ると、
「確定」「取消」「メニュー」の3つが存在しています。なので、どこかにいれればいいです。
イを見ると、いろいろ処理が有りますので、ここに「確定」ボタンが当てはまります。
アは注文に戻りますし、ウは注文を終了します。ここから考えると
アが「メニュー」でウが「取消」になります。
エはメニューボタンを押したときの処理です。
メニューボタンを押したときの仕様は表2に記載されています。注文中の処理に
「メニューボタンにタッチされるたび、購入候補リスト表示欄及び合計金額表示欄を更新する」
とありますので、この2つが更新されるはずです。
オは取消ボタンを押したときの処理です。
取消ボタンが押されたときは、どのような処理が必要でしょうか?
今までためておいた注文途中の情報をクリアする必要があります。そこを文にまとめましょう。
表2には「取消ボタンにタッチされたら待機中状態に遷移する」とだけあります。
なのでメニューボタンを押したときに更新したものを元に戻す説明を書いておくことにします。
先ほどの問でありました「購入候補リスト」「合計金額」あたりを初期状態に戻せばいいと思います。
カは表1、表2あたりから解を求めましょう。支払いを待っている状況なので、次のフローに
進むには合計金額以上の入金が完了する必要があります。表2にも「入金金額が合計金額以上と
なったら」とありますので、そこを回答としましょう。
キも同様に、表1、表2から回答が作れます。ここの処理は「釣銭」に関する部分ですので、
そこを探しましょう。
(2)は営業情報を読み出すタイミングが初期化以外でも必要ってことですね。
営業情報とは、前問に戻ると
「料理の名称、単価、販売可能数、メニューボタンの配置位置、料理の種別、種別ごとに
対象となるキッチンプリンタの情報」
なので、営業時間中に変わる物を考えれば回答できそうです。
一番可能性が高いのは「販売可能数」かなと思うのでこれで回答しましょう。
(他の事に関する記述は全くないので)
(すいません、ここはIPAの回答例とは異なっています)
(1) (a) ア メニュー
イ 確定
ウ 取消
(b) エ 購入候補リスト表示欄 、合計表示欄
(c) オ 購入候補リストをクリアし、合計表示を0にする。
(d) カ 入金金額が合計金額以上になるの
キ 釣銭の排出完了が通知されるの
(2) (すいません、ここはIPAの回答例とは異なっています)
タイミング メニューボタンを押したタイミング
理由 自動券売機以外の要因により、料理の販売可能数が
更新されている事が考えられる
設問3
この子機が存在するのが一般的な状態でょしうね。
ここでのポイントは、「営業情報は親機が管理している」という事です。
それを念頭に回答を考えていきます。
下線①「更新の可否を判断して結果を依頼元に送信する」とあります。更新するのは
「販売可能数」ですので、注文した料理の数が販売可能数を上回っていない時ですね。
下線②、⑤は販売可能数を更新してメニュー画面を更新するという意味ですね。
図3、表3を確認すると、残りは「シリアル通信」「タッチパネル」「LAN通信」の3つが
回答候補となっています。(制御は問題文に記載してあるので除外)
シリアル通信はメニュー画面を更新する情報が送受信されているかどうか分かりませんので
選択しとしては有り得ないでしょう。LAN通信も同様に、通信タイミングと通信内容が明確では
ありませんので却下です。となると、「タッチパネル」のみが選択できますね。
表3の説明を確認すると、タッチパネルを操作すると「ボタン情報」が取得できるようですね。
処置と依頼先が必要との事です。表4をじっくり読むとなんとなくわかってきますね。
制御タスクの新機能として「販売可能数と注文番号を管理する」とありますので、この辺が
可能性高いですね。
(1) 子機からの料理注文数が、該当料理の販売可能数を上回ってしまった場合
(2) タッチパネル、ボタン情報
(3) a 注文番号の取得を制御タスク
b 注文番号の取得を親機