戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2020年 秋期 午後07


多言語多通貨対応両替システムに関する次の記述を読んで、設問1~4に答えよ。

   G社は、訪日外国人観光客が所持する外貨紙幣を日本円に両替するための、多言語多通貨対応両替システム(以下、両替システムという)を開発している。両替システムは、駅、商店などに設置される両替機、及びインターネットを介して両替機の管理と両替機への情報提供を行う管理サーバで構成される。両替システムの構成を図1に、両替機の外観を図2に、両替機の内部構成を図3に、両替機の構成要素の機能概要を表1に示す。
応用情報技術者試験(令和2年度 秋期 午後 問07 図1、2)
応用情報技術者試験(令和2年度 秋期 午後 問07 図03)
応用情報技術者試験(令和2年度 秋期 午後 問07 表01)
〔タッチパネルの画面構成〕  タッチパネルの画面は、両替可能な通貨の一覧表、言語名を表示した複数の言語ボタン、及び両替ボタンで構成される。両替可能な通貨の一覧表には、通貨名、入金額、両替レート、日本円額が含まれる。言語ボタンにタッチすると、タッチされたボタンに対応した言語で画面を再表示する。タッチパネルの画面例を図4に示す。
応用情報技術者試験(令和2年度 秋期 午後 問07 図04)
〔両替機の動作概要〕  両替機は、利用可のとき、利用者が1枚目の外貨紙幣を入金口に挿入したら、両替状態にする。両替機は、挿入された外貨紙幣を、通貨・金種の識別後、入金口に戻すか、入金部の内部に格納する。外貨紙幣を入金部の内部に格納したら、その外貨紙幣の通貨に対応する、タッチパネルの画面の一覧表の入金額及び日本円額を更新する。両替機は、両替状態の場合、外貨紙幣が1枚挿入されるたびに、これらの動作を繰り返す。  利用者が両替ボタンにタッチすると、両替機は、明細書の印刷・排出と日本円紙幣・硬貨の出金を行い、印刷・排出と出金が全て完了したら、両替状態を解除して、1回の両替の動作を完了する。   〔両替機の仕様〕  両替機の仕様は、次のとおりである。  ・1回の両替の動作で出金できる日本円額の合計は、1円以上10万円以下である。  ・次のいずれかの場合は、挿入された外貨紙幣を入金部の内部に格納せずに、入金口に戻してエラーメッセージを表示する。   - 挿入された外貨紙幣を、両替可能な通貨・金種として識別できなかった。   - 挿入された外貨紙幣を、入金部の内部に格納できない状態になっていた。   - 挿入された外貨紙幣を格納しても、日本円額の合計が1円に満たない。   - 挿入された外貨紙幣を格納すると、日本円額の合計が10万円を超えてしまう。   - 挿入された外貨紙幣を格納すると、出金部がもっている日本円紙幣・硬貨の組合せでは出金できない日本円額となってしまう。  ・入金部の内部に一度格納した外貨紙幣は、入金口に戻さない。  ・両替ボタンは、両替状態で、日本円額の合計が1円以上の場合に反応する。  ・両替状態でないとき、定期的に管理サーバに問い合わせて両替レートを更新する。   両替レートを更新したら、タッチパネルの画面の一覧表も更新する。両替状態では両替レートの更新を行わず、両替状態を解除した時に両替レートの更新を行う。   なお、両替状態となってから、入金部の内部に外貨紙幣を1枚も格納しないまま3分経過した場合も、両替状態を解除する。  ・印刷・排出と出金が全て完了した時、次の事象が一つ以上発生していたら利用不可とする。保守作業によって事象が全て解決されると、利用可にする。   - 外貨紙幣を入金部の内部に格納できない状態である。   - 出金部がもっている日本円の合計金額が10万円未満である。   - 印刷部に格納されている明細書の用紙が不足している。  ・印刷・排出と出金が全て完了した時、管理サーバに利用可・利用不可のいずれかを報告する。   〔シリアルバス通信の概要〕  シリアルバス通信はポーリング方式とする。制御部から入金部、出金部、印刷部の順に10ミリ秒周期でデータを送信し、入金部、出金部、印刷部は、自分宛てのデータを受信したら、制御部にデータを送信する。データは、宛先コード、データ長、通知又は指示で構成される。シリアルバス通信のシーケンスを図5に、シリアルバスで通信される主なメッセージを表2に示す。
応用情報技術者試験(令和2年度 秋期 午後 問07 図05)
応用情報技術者試験(令和2年度 秋期 午後 問07 表02)
〔制御部のソフトウェア構成〕  制御部の組込みソフトウェアには、リアルタイムOSを使用する。制御部の主なタスクの一覧を表3に示す。
応用情報技術者試験(令和2年度 秋期 午後 問07 表03)
〔メインタスクのタイマ利用処理〕  メインタスクは両替状態となった時、a後にイベントを受信するように、リアルタイムOSのタイマを設定する。このイベントの受信時、両替状態となってから、①ある条件を満たしたら、bして、cを行う。

設問1両替機について、(1)、(2)に答えよ。

(1)制御部が両替状態となったことを判断するのは、どの構成要素から通知を受けたときか。表1中の構成要素名で答えよ。

模範解答

入金部

解説

解答の論理構成

  1. 両替状態へ遷移する契機を確認
    • 問題文に「両替機は、利用可のとき、利用者が1枚目の外貨紙幣を入金口に挿入したら、両替状態にする。」とあります。
    • つまり“入金口に紙幣が挿入された事実”を制御部が把握した瞬間に両替状態へ入ります。
  2. その事実を制御部へ知らせる構成要素を特定
    • 表1の「入金部」に「外貨紙幣が入金口から挿入されたら、通貨・金種を識別して制御部に通知する。」と記載されています。
    • 紙幣挿入の検知と通貨・金種の識別を行い、制御部に“通知”する役割は入金部のみです。
  3. 結論
    • 制御部が両替状態になったことを判断できるのは、この通知を受け取ったときであり、該当する構成要素名は「入金部」です。

誤りやすいポイント

  • 「タッチパネル」が両替ボタンのタッチを通知するので状態遷移の契機と誤認するケース
  • 「制御部自身がタイマで判定」と誤解し、ハードウェアからの通知を見落とすケース
  • 表1を確認せず、図3や本文中の役割説明だけで判断してしまうケース

FAQ

Q: 通貨・金種の識別に失敗した場合でも両替状態になりますか?
A: いいえ。識別に失敗したときは「挿入された外貨紙幣を入金部の内部に格納せずに、入金口に戻してエラーメッセージを表示」するため、両替状態には遷移しません。
Q: 1枚目の紙幣挿入後、両替ボタンを押さずに放置したらどうなりますか?
A: 「両替状態となってから、入金部の内部に外貨紙幣を1枚も格納しないまま3分経過した場合も、両替状態を解除」します。
Q: 入金部が満杯などで紙幣を格納できないときはどう処理されますか?
A: 仕様にあるとおり「挿入された外貨紙幣を、入金部の内部に格納できない状態」なら入金口に戻してエラーメッセージを表示します。

関連キーワード: ポーリング方式、シリアルバス、状態遷移、イベント駆動

設問1両替機について、(1)、(2)に答えよ。

(2)制御部が管理サーバに利用可利用不可のいずれかを報告するのは、二つのメッセージを受信した後である。その二つのメッセージ名を、表2中の名称で答えよ。

模範解答

①:出金通知 ②:印刷通知

解説

解答の論理構成

  1. 完了判定のタイミング
    【問題文】には、 ― 「両替機は、明細書の印刷・排出と日本円紙幣・硬貨の出金を行い、印刷・排出と出金が全て完了したら、両替状態を解除して、1回の両替の動作を完了する。」
    ― 「印刷・排出と出金が全て完了した時、管理サーバに利用可・利用不可のいずれかを報告する。」
    とあります。したがって、制御部は “印刷” と “出金” の両方が終わった事実を把握した後でなければ報告できません。
  2. 完了を知らせるメッセージ
    両動作の完了はシリアルバス経由で送られます。表2を見ると、 ・「出金通知」― 送信元:出金部、送信先:制御部、「日本円紙幣・硬貨の出金完了 … を通知する。」
    ・「印刷通知」― 送信元:印刷部、送信先:制御部、「明細書の印刷・排出完了 … を通知する。」
    と定義されています。いずれも “完了” を制御部へ伝える役割です。
  3. どちらが欠けても完了条件を満たさない
    片方しか受信していなければ「印刷・排出と出金が全て完了した」とは言えません。従って、管理サーバへの報告は両メッセージ受信後に限られます。
  4. 以上より、制御部が管理サーバに利用可/利用不可を報告する前に受け取る二つのメッセージは
    出金通知」と「印刷通知」です。

誤りやすいポイント

  • 指示と通知の混同
    「出金指示」「印刷指示」は制御部からの送信であり、完了を知らせるものではありません。
  • “全て完了” の読解不足
    「印刷・排出」と「出金」は2種類あるため、両方の通知を待つ必要を見落としやすいです。
  • シーケンス図への過度な依存
    図5は周期的な通信順序を示しているだけで、完了判定の論理フローまでは示していません。

FAQ

Q: 完了判定に「格納通知」は関係ありますか?
A: いいえ。「格納通知」は入金部から外貨紙幣格納完了を知らせるもので、両替完了後の利用可/不可判定には直接関与しません。
Q: 「利用可」と判定してから報告が遅れるとレート更新に影響しますか?
A: 報告自体は完了後すぐ行われる設計想定ですが、レート更新は「両替状態でないとき」に周期的に行われるため、本設問では影響を考慮する必要はありません。
Q: 制御部は常にメッセージを順番通りに受信しますか?
A: シリアルバスは10ミリ秒周期のポーリング方式で、「制御部→出金部→制御部」「制御部→印刷部→制御部」の順に通信するため、通常は出金通知が先に届き、その後印刷通知となりますが、完了判定は両方受信した時点で行います。

関連キーワード: メッセージキュー、ポーリング、リアルタイムOS, 状態遷移、シリアル通信

設問2

シリアルバスの最適な通信速度を検討するために、通信データ量が最も多く、処理時間が最も長くなるケースを調査した結果、当該ケースは次のとおりであった。  (i) 制御部は,894バイトのデータを印刷部に送信する。  (ii) 印刷部はデータを受信し終えたら、750マイクロ秒の処理を行った後に、6バイトのデータを制御部に送信する。  (iii) 制御部はデータを受信し終えたら、250マイクロ秒の処理を行った後に、入金部へのデータ送信を開始する。当該ケースにおいて、シリアルバスの通信速度は最低何ビット/秒必要か。答えは小数第1位を切り上げて、整数で求めよ。ここで、1バイトはスタートビット、ストップビットを含めて10ビットで送信されるものとする。

模範解答

1,000,000

解説

解答の論理構成

  1. まず、1回のポーリングで使える時間を確認します。問題文には
    「シリアルバス通信はポーリング方式とする。制御部から入金部、出金部、印刷部の順に10ミリ秒周期でデータを送信し…」
    とあります。図5でも制御部⇔印刷部の対向通信(①⑤⑥②のペア)に“10ミリ秒”が割り当てられています。したがって、制御部⇔印刷部が占有できる時間は 10ミリ秒=0.010秒 です。
  2. 次に「通信データ量が最も多く、処理時間が最も長くなるケース」を整理します(数字はすべて原文を引用)。
    (i) 制御部→印刷部:894バイト
    (ii) 印刷部の処理:750マイクロ秒
    印刷部→制御部:6バイト
    (iii) 制御部の処理:250マイクロ秒
  3. バイトをビットに換算します。問題文で
    1バイトはスタートビット、ストップビットを含めて10ビットで送信される」
    と指定されています。
    • 送信①:894バイト × 10ビット = 8 940ビット
    • 送信②:6バイト × 10ビット = 60ビット
    合計 9 000ビット です。
  4. 0.010秒の枠に下記すべてを収める必要があります。
    • 9 000ビットの送受信時間
    • 印刷部処理 0.000 75秒
    • 制御部処理 0.000 25秒
    よって
    送受信時間 ≦ 0.010 − 0.00075 − 0.00025 = 0.009秒
    送受信時間=9 000ビット ÷ 伝送速度 (S) [bit/s] ですから
    [ \frac{9,000}{S} \le 0.009 \Longrightarrow S \ge \frac{9,000}{0.009} = 1,000,000\ \text{bit/s} ]
  5. 「小数第1位を切り上げて、整数で求めよ」とあるので、求める最小通信速度は
    1,000,000 bit/s

誤りやすいポイント

  • 750マイクロ秒」「250マイクロ秒」の処理時間を式に入れ忘れる。
  • バイト→ビット換算で 8 ではなく 10ビット を掛ける必要がある。
  • 10ミリ秒を「システム全体の周期」と読み違え、一装置あたりのスロット長だと気付かない。
  • 9 000ビット ÷ 0.009秒 の計算後に切り上げ処理を忘れる。

FAQ

Q: 10ミリ秒の枠を越えても次の装置に遅れが出るだけでは?
A: 図5は装置ごとに10ミリ秒で順番にポーリングする設計です。1装置が枠を越えると次装置すべてが遅延しリアルタイム性が失われるため、必ず10ミリ秒以内に完結させます。
Q: 伝送効率を高めればもっと低速でも動くのでは?
A: 問題設定ではスタートビット・ストップビット込みで10ビット/バイトが固定されています。プロトコルを変更しない限り効率は向上しません。
Q: 6バイトの戻りデータを無視してもよい?
A: いいえ。「(ii) 印刷部…6バイトのデータを制御部に送信する」と明言されており、同じ10ミリ秒枠で送られるため必ず計算に含めます。

関連キーワード: ポーリング、シリアル通信、ビットレート、リアルタイムOS

設問3〔メインタスクのタイマ利用処理〕について、(1)、(2)に答えよ。

(1)本文中のacに入れる適切な字句を答えよ。

模範解答

a:3分 b:両替状態を解除 c:両替レートの更新

解説

解答の論理構成

  1. タイマ設定の時間
    • 問題文には「両替状態となってから、入金部の内部に外貨紙幣を1枚も格納しないまま3分経過した場合も、両替状態を解除する。」とあります。
    • よってタイマは“両替状態になった直後から 3分”後にイベントが発生するように設定する必要があります。
      a3分
  2. タイマ満了時に行う処理
    • 上記引用に続き「3分経過した場合も、両替状態を解除する。」と明記されています。
    • したがってイベント受信時に実行すべき処理は 両替状態を解除 することです。
      b両替状態を解除
  3. 両替状態解除時に追加で行う処理
    • 「両替状態では両替レートの更新を行わず、両替状態を解除した時に両替レートの更新を行う。」という仕様があります。
    • よって状態を解除した直後に 両替レートの更新 を実行します。
      c両替レートの更新

誤りやすいポイント

  • 3分を「180秒」や「タイムアウト」などに言い換えてしまう
    (数字はそのまま「3分」と答える必要があります)
  • 「両替状態を解除」を「初期化」「待機状態に戻る」など、同義に見える表現へ置き換えてしまう
    (設問は原文どおりの語句を要求しています)
  • 両替レート更新のタイミングを「両替ボタン押下後」と誤解する
    (更新は“両替状態を解除した時”であり、ボタン操作とは独立です)

FAQ

Q: タイマは毎回3分で固定ですか?
A: 仕様に3分と明示されているため可変ではありません。利用者が操作をしない場合のタイムアウト用途です。
Q: 両替レートの更新は通信タスクが自動で行うのですか?
A: メインタスクが状態解除を検知したのち通信タスクへ依頼し、管理サーバから新しいレートを取得してタッチパネル表示を更新します。
Q: 両替状態の途中でレートが変わる可能性は?
A: 「両替状態では両替レートの更新を行わず」とあるため、両替中にレートが変動することはありません。

関連キーワード: タイムアウト、状態遷移、イベント駆動、組込みソフトウェア

設問3〔メインタスクのタイマ利用処理〕について、(1)、(2)に答えよ。

(2)本文中の下線①の条件とは何か。30字以内で述べよ。

模範解答

入金部の内部に外貨紙幣を1枚も格納していないこと

解説

解答の論理構成

  1. 両替状態でのタイマ設定
    • 問題文の「メインタスクのタイマ利用処理」に、両替状態に入った直後、リアルタイムOSのタイマを設定するとある。
    • さらに仕様には「なお、両替状態となってから、入金部の内部に外貨紙幣を1枚も格納しないまま3分経過した場合も、両替状態を解除する。」と明記されている。
  2. タイマイベント受信時に確認すべき条件
    • タイマを“3分”に設定している以上、イベント受信時点で“3分経過”は自明です。
    • 従ってイベントハンドラでは“経過時間”ではなく“外貨紙幣が格納されたかどうか”だけを判定すればよい。
    • 上記仕様の文中で時間以外の要素として示されているのが「入金部の内部に外貨紙幣を1枚も格納しない」状態です。
  3. 解答導出
    • 以上より、下線①に入るのは「入金部の内部に外貨紙幣を1枚も格納していないこと」となります。
    • これが満たされていればメインタスクは両替状態を解除し、その後の処理(bc)へ遷移します。

誤りやすいポイント

  • 「3分経過」を条件文に含めてしまう
    タイマが3分後にイベントを発生させるため、経過時間は前提条件であり判定項目ではありません。
  • 「外貨紙幣の格納枚数=0」ではなく「入金部に格納できなかった」など別の事象と混同する
  • “入金口に戻した紙幣”を格納済みと誤解する
    仕様中で「入金部の内部に一度格納した外貨紙幣は、入金口に戻さない。」とあるため、戻した時点では未格納です。

FAQ

Q: タイマの設定値はどこで判定できますか?
A: 「両替状態となってから、…3分経過した場合も、両替状態を解除する。」という仕様を満たすために、メインタスクがタイマを“3分”に設定したと読み取れます。
Q: “1枚”のカウントは識別失敗の紙幣も含まれますか?
A: いいえ。入金部が内部に“格納”した紙幣のみをカウントします。識別失敗で入金口に戻した紙幣は未格納扱いです。
Q: タイマイベント後に格納済みの紙幣があった場合はどうなりますか?
A: 条件①を満たさないため、両替状態は継続し、通常の両替フローを続行します。

関連キーワード: リアルタイムOS, タイマ割込み、ポーリング、イベントドリブン、組込みシステム

設問4

ある両替において、両替状態となってから、日本円額91,000円分の外貨紙幣を入金部の内部に格納したところに、利用者が100米ドル紙幣1枚を挿入したら、格納されずに入金口に戻された。戻された原因を25字以内で述べよ。ここで、両替機が故障していない状態で、入金部は100米ドル紙幣が両替可能な通貨・金種と認識し、外貨紙幣を内部に格納できる状態であるものとする。また、両替レートは、1米ドル100円とし、出金部は全ての金種の日本円紙幣・硬貨をそれぞれ10枚以上もっているものとする。

模範解答

日本円額の合計が10万円を超えるから

解説

解答の論理構成

  1. まず、問題文には制約として
    • 「1回の両替の動作で出金できる日本円額の合計は、1円以上10万円以下である。」
      と明記されています。
  2. さらに、外貨紙幣を戻す条件の一つとして
    • 「挿入された外貨紙幣を格納すると、日本円額の合計が10万円を超えてしまう。」
      が挙げられています。
  3. 本件では既に「日本円額91,000円分の外貨紙幣を入金部の内部に格納」済みです。
  4. 利用者が追加で「100米ドル紙幣1枚」を挿入しました。両替レートが「1米ドル100円」なので、この紙幣は

    に相当します。
  5. 合計日本円額は

    となり、上限「10万円(100,000円)」を超過します。
  6. よって上記引用条件に該当し、紙幣は「入金口に戻され」ました。
  7. 以上より、模範解答は「日本円額の合計が10万円を超えるから」となります。

誤りやすいポイント

  • 既に格納済みの「91,000円」を見落とし、100米ドルだけで判断してしまう。
  • 外貨→円換算を誤って と桁を間違える。
  • 「出金部がもっている日本円紙幣・硬貨の組合せ」条件と混同し、原因を取り違える。
  • 上限値「10万円」を「10万ドル」や「ドル換算」など別単位で誤読する。

FAQ

Q: もし出金部の残高が不足していた場合も同じエラーメッセージですか?
A: いいえ。「出金部がもっている日本円紙幣・硬貨の組合せでは出金できない日本円額となってしまう。」場合も紙幣は戻されますが、今回は残高条件を満たしていると問題文で指定されています。
Q: 累積額がちょうど10万円になる場合はどうなりますか?
A: 上限は「10万円以下」ですので、ちょうど100,000円なら格納され、エラーになりません。
Q: 外貨紙幣を戻した後、再度他の紙幣を入れても良いですか?
A: はい。両替状態のままなので、別の紙幣を挿入して条件を満たせば続行できます。ただし3分間無操作なら両替状態が解除されます。

関連キーワード: 上限チェック、為替レート、入出金管理、ポーリング通信、組込みソフトウェア
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について