機械
電験三種 令和7年度下期 機械 問14 問題・正答・学習用解説
問題 次のフローチャートに従って作成したプログラムを実行したとき,印字される A,B の値として,正しい組合せを次の(1)〜(5)のうちから一つ選べ。 選択肢 (1) (1)
(2) (2)
(3) (3)
(4) (4)
(5) (5)
正答と解説 正答:(3)
正答の考え方 正解は(3)です。初期値は A = 10 \displaystyle A=10 A = 10 , B = 2 \displaystyle B=2 B = 2 。処理の流れは『A←A+B を実行 → A ≤ 40 \displaystyle A\le 40 A ≤ 40 なら(YES)B←2B+1 として先頭の A←A+B へ戻る → A ≤ 40 \displaystyle A\le 40 A ≤ 40 でなくなったら(NO)A,B を印字』です。順に追います。
1回目: A = 10 + 2 = 12 \displaystyle A=10+2=12 A = 10 + 2 = 12 , 12 ≤ 40 \displaystyle 12\le 40 12 ≤ 40 なので YES, B = 2 × 2 + 1 = 5 \displaystyle B=2\times 2+1=5 B = 2 × 2 + 1 = 5 。
2回目: A = 12 + 5 = 17 \displaystyle A=12+5=17 A = 12 + 5 = 17 , 17 ≤ 40 \displaystyle 17\le 40 17 ≤ 40 なので YES, B = 2 × 5 + 1 = 11 \displaystyle B=2\times 5+1=11 B = 2 × 5 + 1 = 11 。
3回目: A = 17 + 11 = 28 \displaystyle A=17+11=28 A = 17 + 11 = 28 , 28 ≤ 40 \displaystyle 28\le 40 28 ≤ 40 なので YES, B = 2 × 11 + 1 = 23 \displaystyle B=2\times 11+1=23 B = 2 × 11 + 1 = 23 。
4回目: A = 28 + 23 = 51 \displaystyle A=28+23=51 A = 28 + 23 = 51 , 51 ≤ 40 \displaystyle 51\le 40 51 ≤ 40 ではない(NO)ので,ここでループを抜けて印字。
この時点で A = 51 \displaystyle A=51 A = 51 ,B は3回目の更新後の23です。よって印字されるのは A = 51 \displaystyle A=51 A = 51 , B = 23 \displaystyle B=23 B = 23 で,(3)が正解です。 各選択肢の解説 選択肢1 A = 43 \displaystyle A=43 A = 43 , B = 26 \displaystyle B=26 B = 26 は各反復の A・B の計算が合いません。正しくは A は 12→17→28→51 と進み,40 を超えるのは51の時点で,そのときの B は23です。 選択肢2 A = 51 \displaystyle A=51 A = 51 は正しいものの B = 47 \displaystyle B=47 B = 47 が誤りです。 B = 47 \displaystyle B=47 B = 47 は 2 × 23 + 1 = 47 \displaystyle 2\times 23+1=47 2 × 23 + 1 = 47 ,すなわち4回目に B も更新したとした値ですが,4回目は A = 51 \displaystyle A=51 A = 51 で判定が NO となり B は更新されないため,B は3回目の23のまま据え置かれます。 選択肢4 A = 98 \displaystyle A=98 A = 98 まで進めるのは判定条件の取り違えです。 A = 51 \displaystyle A=51 A = 51 の時点で A ≤ 40 \displaystyle A\le 40 A ≤ 40 が不成立となりループを抜けるため,それ以上 A は増えません。98 はループ脱出を見落とした誤りです。 選択肢5 A = 98 \displaystyle A=98 A = 98 , B = 95 \displaystyle B=95 B = 95 も判定条件( A ≤ 40 \displaystyle A\le 40 A ≤ 40 なら継続、A>40で脱出)を取り違えてさらに反復を続けた誤りです。正しくは A = 51 \displaystyle A=51 A = 51 で抜け, A = 51 \displaystyle A=51 A = 51 , B = 23 \displaystyle B=23 B = 23 となります。 周辺知識 フローチャートのトレース(机上実行)は,変数の値を表にして1ステップずつ追うのが確実です。ポイントは三つ。第一に『代入文 A←A+B は右辺を先に計算してから左辺へ入れる』こと。第二に『判定(ひし形)で YES と NO のどちらへ進むか,条件の不等号の向きと等号の有無(≦か<か)を正確に読む』こと。本問は A ≤ 40 \displaystyle A\le 40 A ≤ 40 が成立する間ループし,成立しなくなった瞬間( A = 51 ) \displaystyle A=51) A = 51 ) に抜けるので,抜けた時点の A は40を超えた最初の値です。第三に『ループを抜けるとき B が何回更新済みか』を取り違えないこと。A の更新と B の更新は同じ反復内で行われますが,最後の反復では A を更新して判定で NO になりそのまま印字へ抜けるため,B はその回では更新されず一つ前(3回目)の23のままになります。この『最後にどちらが更新されてどちらが据え置きか』が選択肢を分ける典型的な引っかけです。表を作って A:12,17,28,51 と B:5,11,23 を並べ,A が40を超えた行で止める,と機械的に処理すればミスを防げます。プログラム問題は知識より丁寧なトレースが得点源で,焦らず一行ずつ書き出すのが鉄則です。 ← 前の問題(問13) 次の問題(問15(a))→ 出典と解説について 出題・正答の公表元:電気技術者試験センター。公式の試験問題・正答公表ページ
解説は資格ナビが作成した学習用の説明です。試験実施団体による公式解説ではありません。法令・制度は出題当時と現在で異なる場合があります。試験情報や訂正は公表元で確認してください。