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

応用情報技術者 2013年 春期 午前208


問題文

流れ図に示す処理の動作の記述として、適切なものはどれか。ここで、二重線は並列処理の同期を表す。
応用情報技術者 2013年 春期 午前2 問08の問題画像

選択肢

ABC又はACBを実行してデッドロックになる。
AB又はACを実行してデッドロックになる。
Aの後にBC又はCB, BC又はCB, ・・・と繰り返して実行する。(正解)
Aの後にBの無限ループ又はCの無限ループになる。

🔒 解説は解答すると表示されます

同期による交互実行【午前2解説】

正解の理由

図は上下に二本の平行線で囲まれた並列領域を持ち、各分岐(B と C)は下段からループで上段に戻る経路を備えています。重要なのは、B の上部には左→右、C の上部には右→左の矢印があり、ループで上段に戻ってきた「実行トークン」が上段の接続点で反対側の分岐へ渡される点です。
つまり、A の終了後に並列領域へ入ると、ある分岐が実行され終えるとそのトークンは下段ループを通って上段に戻り、上部の矢印によって相手側の分岐に送られます。これが繰り返されるため、B と C が交互に実行され続ける挙動(の記述)が成立します。

解法ステップ

  1. 並列領域(上下の二重線)を見つける:ここが分岐と同期の範囲であると認識する。
  2. 各分岐のループ経路を追う:B・C は下段から上段へ戻るループを持つ。
  3. 上部の矢印の向きを確認する:B 側の矢印は左→右、C 側の矢印は右→左。
  4. トークンの移動を具体的に追跡する:一方が終わってループで上段に戻ると、その上段で矢印に従い相手分岐を起動する。
  5. このサイクルが繰り返されることから、交互実行であると結論づける。
具体例(トークン追跡):
  • A 実行 → トークンが左(B)側に進入 → B 実行 → B は下段へ出る → ループで上段左へ戻る → 上部の矢印(左→右)によりトークンが右(C)に渡る → C 実行 → C がループで上段右へ戻る → 上部の矢印(右→左)でトークンが左へ渡る → 以後同様に繰り返し。
(どちらから始まるかは図の接続順で決まりますが、いずれにせよ交互に繰り返されます。)

選択肢別の誤答解説

  • ア: 「ABC 又は ACB を実行してデッドロックになる」
    誤り。ABC の順に同時に実行して互いに待ち合うという構造はなく、むしろループで戻ったトークンは上部矢印により相手へ渡るためデッドロックにはならない。
  • イ: 「AB 又は AC を実行してデッドロックになる」
    誤り。単独で AB や AC が止まって互いに待つような閉塞は生じない。上部の矢印がトークンを反対側に送るため、片側だけが永久に止まる構造ではない。
  • : 「A の後に BC 又は CB, BC 又は CB, ・・・と繰り返して実行する」
    正しい。上段での矢印向きと下段ループにより、実行トークンが分岐間で渡されるため B と C が交互に繰り返される。
  • エ: 「A の後に B の無限ループ又は C の無限ループになる」
    誤り。各分岐がループで上段に戻るが、上段で相手側へトークンを渡す仕組みがあるため、一方のみが無限に単独実行される構造ではない。

よくある誤解

  • 「二重線=必ず同時並列で同時に実行される」
    誤り。二重線は並列領域を示しますが、内部の矢印やループ経路により実行トークンの受け渡しが制御され、同時実行にならない場合がある点を見落としやすいです。
  • 「ループがある=その分岐が単独で永久に実行される」
    誤り。ループで戻る先が相手側の入口へトークンを渡す構成なら、単独ループではなく相互に回るだけです。

補足コラム

この種の図は「トークンモデル」で考えると分かりやすいです。フローチャートの実行を「トークンが線上を移動する」動作として解釈し、分岐・同期・ループの各接続点でトークンがどう振る舞うかを追跡します。特に矢印の方向はトークンの受け渡し先を決めるので、図を見たらまず矢印の向きに沿ってトークンの経路を書き出すと誤りが減ります。
簡単なシミュレーション例(イメージ、左開始で交互実行を示す):
# 擬似シミュレーション(説明用)
steps = []
current = 'B'  # A の後、B から開始すると仮定
for i in range(6):
    steps.append(current)
    # 終了して上段へ戻ると反対側に渡される
    current = 'C' if current == 'B' else 'B'
print(steps)  # ['B','C','B','C','B','C']

FAQ

Q. 上部の矢印が無ければどうなる?
A. 上部で相手側へ渡す経路がなければ、戻ったトークンは同じ分岐へ入り続ける可能性があり、図の挙動は変わります。矢印の有無・向きは必ず確認してください。
Q. A の後で同時に B と C が起動する可能性は?
A. 図の上下の二重線だけだと分岐は並列ですが、ループと上部矢印によりトークンが一方向に移動するため、実行は交互(排他的)に進みます。配線の接続と矢印方向が同時起動か排他かを決めます。

関連キーワード: フローチャート、並列処理、同期、トークンモデル、制御フロー、ループ制御、相互排他、実行順序分析
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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