次のフローチャートに従って作成したプログラムを実行したとき、印字されるA、Bの値として、正しい組合せを次の(1)〜(5)のうちから一つ選べ。
(フローチャート概要)
1. 開始
2. \(A \leftarrow 10\), \(B \leftarrow 2\)
3. ループ開始: \(A \leftarrow A + B\)
4. 判定: \(A \le 40\) ?
- YES: \(B \leftarrow B^2 + 1\) してループへ戻る
- NO: A, Bを印字して終了
図はタップで拡大できます。
回答を選ぶ
選択肢を押すと、すぐに結果が表示されます。
要点
正解は(3)。各ゲートの出力式を書き下ろし、区間ごとの波形や論理値を追っていく問題です。 各ゲートの出力を段階的に確定し、条件ごとにどの入力が出力へ反映されるかを追うことが要点です。
詳細解説
この問題では、各ゲートの出力を段階的に確定し、条件ごとにどの入力が出力へ反映されるかを追うことがポイントです。
トレースします。
初期: \(A=10, B=2\)
[1回目]
\(A \leftarrow 10 + 2 = 12\)
\(12 \le 40\) はYES
\(B \leftarrow 2^2 + 1 = 5\)
[2回目]
\(A \leftarrow 12 + 5 = 17\)
\(17 \le 40\) はYES
\(B \leftarrow 5^2 + 1 = 26\)
[3回目]
\(A \leftarrow 17 + 26 = 43\)
\(43 \le 40\) はNO
ループ終了。印字されるのは \(A=43, B=26\)。
論理回路では、最終出力だけを見るのではなく、中間ゲートの出力を左から順に確定していくのが基本です。否定入力がある場合は、どの区間で反転が効くかを先に書き出すと波形を追いやすくなります。
入力条件が切り替わる境目ごとに出力を確認しておくと、途中の区間を取り違えてもすぐに修正できます。真理値表の考え方へ戻して確認するのも有効です。