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

基本情報技術者 2013年 秋期 午前(科目A) 問08


問題文

右の流れ図が左の流れ図と同じ動作をするために、a, bに入るYesとNoの組合せはどれか。
基本情報技術者 2013年 秋期 午前(科目A) 問08の問題画像基本情報技術者 2013年 秋期 午前(科目A) 問08の選択肢の画像

選択肢

ア:(正解)
イ:
ウ:
エ:

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

含意の短絡評価【午前解説】

正解の理由

左図の判断「Pでない 又はQ」は論理式で表すと 、すなわち含意 と同値です。これを実行順に分解すると「まずPを判定し、Pが真ならQを評価し、Pが偽ならQを評価せずに(短絡して)結果が真となる」が正しい振る舞いです。右図でこの動作を実現するには、Pの右側にある小箱aがP=false(No)の経路、Qの左側にある小箱bがQ=false(No)の経路になる必要があります。したがってa=No, b=No、すなわち ア が正解です。
(要点)P=falseのときQを評価せず処理へ進む挙動を右図で作るため、Pの右枝はNo、Qの左枝はNoに対応させる必要があります。これにより、P/Qの4通りすべてで右図が左図と同一の判定・評価順序・実行結果になります。

解法ステップ

  1. 左図の判断「Pでない 又はQ」を論理式 として考える。短絡評価の意味を確認する(P=falseならQは評価しない)。
  2. 右図の各枝がどの判定値(Yes/No)に対応するかを決める。Pの右枝はa、下枝はQへ接続。Qの左枝はb、下枝は処理へ接続。これらにYes/Noを割り当てて場合分けを行う。
  3. P/Qの4通りについて、左図でどの判定が評価されるか(Qの評価有無含む)を書き出す。
  4. 右図で同じ各場合にどの箱/判断が通るかを、a/bにYes/Noを割り当てて検証する。各組合せが左図と一致する割当を見つける。
  5. 一致する割当がa=No, b=Noのみであることを確認する。
以下、手順3-4を場合分けで示します(右図での枝割当:Pの右枝 = No、Pの下枝 = Yes、Qの左枝 = No、Qの下枝 = Yesとすることで一致することを示します)。
  • ケース1: P = 偽(false)
    • 左図: が真なので は真。短絡によりQを評価せず、Yes経路で直接「処理」へ入る。
    • 右図:PはNo(右枝)を取る → aを通る。aはNoを表すため、aの経路は処理に合流する側(Qを評価しない側)へ導く。結果としてQは評価されず「処理」へ到達。左図と一致。
  • ケース2: P = 真(true), Q = 真(true)
    • 左図: は偽だがQが真なので 全体は真。Qを評価してからYesで「処理」へ。
    • 右図:PはYes(下)を取りQを評価。QはYes(下)を取り直接「処理」へ(bは通らない)。左図と一致。
  • ケース3: P = 真(true), Q = 偽(false)
    • 左図: 偽、Q偽 → 全体偽。Qを評価した上でNoの経路(右回り)で合流し「処理」へ(左図のNo経路はb経由に相当)。
    • 右図:Pは下でQを評価。QはNo(左)を取りbを通る → bの経路が処理へ合流。左図と一致。
このようにa=No, b=Noの割当でP/Qの全組合せに対して右図の評価順・実行経路が左図と一致するため、ア が正しい。

選択肢別の誤答解説

  • ア(a=No、b=No)
    正常。上の場合分けで示したとおり、P=falseのときQを評価せず処理へ進む短絡挙動を満たし、P=trueのときはQを評価してbの有無が適切に作用する。
  • イ(a=No、b=Yes)
    Q=falseのときにbを通さず直接処理へ入る(bがYes側にあるためQ=falseではbを実行しない)ため、左図でQ=falseの場合に期待される経路(左図はQを評価した上でNo側の合流を通る)が再現されない。つまりQ=falseの場合に通るべき副処理(b)が省略され、挙動が異なる。
  • ウ(a=Yes、b=No)
    P=falseのときに右図がPの右枝(a)へ行くとaがYes側扱いになり、そこでQを評価する経路に合流してしまうため、短絡評価が崩れ、P=falseのときにQが評価されてしまう。左図の短絡的な動作と不一致。
  • エ(a=Yes、b=Yes)
    P=falseのときにQを評価してしまう(ウ と同様)上、Q=falseのときにbが実行されないため二重に不一致が発生する。

よくある誤解

  • 「流れ図ではすべての判断が常に評価される」
    流れ図のひし形が複合条件(ここでは )を表す場合、実装(あるいは分解図)では短絡的に評価できる。問題は「どの判断を先に評価し、どのときに次の判断をスキップするか」を正しく対応させることにある。
  • 「右図のaがP=falseのときQを評価するように見える」
    図の矢印だけを見て即判断しないで、矢印が合流する先と合流点が左図のどの接続点に相当するかを明示的に対応付けること。場合分けで各P/Q組合せの通る経路を追えば矛盾は解ける。
  • 「Yes/Noの位置(右/下/左)は固定の規則があるはず」
    標準的に右がYes、下がNoなど慣習はない。各図ごとにどの枝がYes/Noかを設問文や合流点の意味から決める必要がある。

補足コラム

  • 論理含意 は と同値です。プログラミング言語ではこの含意は「if P then Q else true」あるいは「!P || Q」として実装され、ほとんどの言語は左から右への短絡評価(short-circuit)を採用しています。流れ図で「Pを先に判定してP=falseのときQを評価しない」構造に置き換えると、今回のような枝の割当が導かれます。
  • 図の対応づけをするときは「合流点(どのノードにつながるか)」を基準に考えると安定します。今回もaとbが合流する先が左図のどの接点に対応するかが鍵でした。

FAQ

Q1: なぜP=falseのときQを評価してはいけないのですか?
A1: 左図の条件式 はP=falseのとき自動的に真になるため、Qを評価する必要がありません。左図の振る舞いを正確に再現するには、右図でもそのときQ(およびb)を実行しないようにする必要があります。
Q2: 流れ図の「Yes/No」は常に右/下のどちらかに固定ですか?
A2: いいえ。図ごとに枝の位置とラベル(Yes/No)の対応を問題文や接続先から判断します。本問ではPの右枝がa、下枝がQへの接続だったため、どちらがYes/Noに対応するかを場合分けで確かめて割当てました。
Q3: この問題はプログラムのどんな構造に対応しますか?
A3: 「if (!P || Q) { 処理 }」をwhile等で繰り返す構造に相当します。短絡評価(PがfalseのときQを評価しない)を流れ図で正しく表現する問題です。

関連キーワード: 含意、短絡評価、ブール式の分解、フローチャート合流、経路対応、分岐ラベル、論理式変形
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

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

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