今回は令和7年度下期 機械科目 A問題14を解説します。フローチャートに従ってプログラムを実行したとき、印字されるAとBの値を答える問題です。
この種の問題は考えるより表を書いたほうが速くて確実です。A と B の欄を作り、1周ごとに上から順に書き足すだけ。ループを抜けた瞬間に B が更新されないという一点さえ外さなければ、確実に得点できる1問です。
出題のポイント

令和7年度下期 機械科目 A問題14:問題文と選択肢
まずは、実際の試験問題を確認してみましょう。

出典:一般財団法人 電気技術者試験センター「令和7年度下期 第三種電気主任技術者試験」機械科目 A問題14
電験3種 機械科目 【情報】 令和7年度下期 A問題14
次のフローチャートに従って作成したプログラムを実行したとき,印字されるA,Bの値として,正しい組合せを次の(1)〜(5)のうちから一つ選べ.
次のフローチャートに従って作成したプログラムを実行したとき、印字されるA、Bの値として、正しい組合せを次の(1)〜(5)のうちから一つ選べ。
A B (1) 43 26 (2) 51 47 (3) 51 23 (4) 98 47 (5) 98 95

ポイント解説:AとBの表を作り、1周ずつ書き足す
フローチャートの問題で一番やってはいけないのは頭の中だけで追うことです。紙に A と B の欄を作り、1周ごとに新しい行を書き足す——これだけで正答率がまったく変わります。
まず処理の順番を確認します。①A ← 10、B ← 2 で初期化 → ②A ← A+B → ③A ≦ 40 か判定 → YES なら B ← 2B+1 して②へ戻る/NO なら A と B を印字して終了。
ここで決定的に重要なのが判定の位置です。判定は「A を更新した直後、B を更新する前」にあります。つまりループを抜けるとき、B は最後に更新された値のまま——抜けぎわに B は増えません。ここが本問の唯一の仕掛けです。
実際に追います。初期値 A=10、B=2。1周目:A=10+2=12、12≦40 なので B=2×2+1=5。2周目:A=12+5=17、17≦40 なので B=2×5+1=11。3周目:A=17+11=28、28≦40 なので B=2×11+1=23。
4周目:A=28+23=51。ここで 51 ≦ 40 は成り立たない(NO) ので、B を更新せずにそのまま印字へ。したがって印字されるのは A=51、B=23——答えは(3)です。
問題の解説
STEP1 初期値を書く
A = 10、B = 2。
STEP2 1周目〜3周目を追う
1周目:A = 10+2 = 12 → 12≦40(YES)→ B = 2×2+1 = 5。
2周目:A = 12+5 = 17 → 17≦40(YES)→ B = 2×5+1 = 11。
3周目:A = 17+11 = 28 → 28≦40(YES)→ B = 2×11+1 = 23。
STEP3 4周目でループを抜ける
4周目:A = 28+23 = 51。
51 ≦ 40 は不成立(NO) ⇒ B ← 2B+1 を通らずに印字へ。
STEP4 印字される値を確定する
A = 51、B = 23 ⇒ (3)。
B は3周目に更新された23のまま——ここが唯一にして最大の分かれ目です。
STEP5 表で見直す
A:10 → 12 → 17 → 28 → 51(差が 2, 5, 11, 23 と B の値になっている)。
B:2 → 5 → 11 → 23(B ← 2B+1 なので毎回2倍強に増える)。
A の更新回数は4回、B の更新回数は3回——1回ずれるのが正しい姿です。
答え:(3)
💡 覚え方
フローチャートは変数ごとに欄を作った表で追うのが最短ルート。本問の急所は判定が A の更新直後・B の更新直前にあること——ループを抜けるとき B は更新されないので、A は4回、B は3回だけ更新される。A:10→12→17→28→51、B:2→5→11→23。B ← 2B+1 は「2倍して1足す」で、2, 5, 11, 23, 47… とほぼ倍々に増えるため、ループはすぐ終わります。
⚠️ よくある間違い
①ループを抜けるときにも B を更新してしまうのが圧倒的に多い誤りで、(2) A=51, B=47 がそれです。B = 2×23+1 = 47 と1回余分に計算した値。判定で NO に進んだら、その先にあるのは印字だけ——B ← 2B+1 の箱は YES 側にしかありません。フローチャートは線を指でなぞって、通る箱だけ実行するのが鉄則です。
②1周多く回してしまう:(4) A=98, B=47 は、A=51 のあとさらに A = 51+47 = 98 と進めた値です。判定は「A ≦ 40」——51 の時点で条件を満たさないので、そこで終わりです。(5) A=98, B=95 は、さらに B も余分に更新(2×47+1=95)した値で、①と②の両方を犯した形になります。
③A の加算と B の更新の順序を取り違える:もし先に B を更新してから A に足すと、A は 15, 26, 49 …と別の並びになり、選択肢の値と合いません。フローチャートの上から順に——A ← A+B が先です。
④(1) A=43, B=26 は、正しく追ってもどの段階にも現れない値です。A の並び(12, 17, 28, 51)にも B の並び(2, 5, 11, 23, 47)にも43や26は無いので、表さえ書いていれば消去できます。
なお「≦」と「<」の区別にも注意を。本問は A ≦ 40 なので、もし A がちょうど40になったらYES 側(ループ継続)です。今回は40ちょうどが現れないので結果は変わりませんが、等号の有無で答えが変わる問題もあります。
判定の位置でループの回数が変わる
本問の急所は「判定がどこにあるか」——流れ図の型として整理しておきましょう。
| 型 | 判定の位置 | 特徴 |
| 前判定(while型) | ループの入口 | ★1回も実行されないことがある |
| 後判定(do-while型) | ループの出口 | ★必ず1回は実行される |
本問は「A を更新→判定→B を更新」という並び——判定がA とB の更新の間に挟まっています。だからA は4回、B は3回だけ更新されるのです。
この1回のずれが答えを分けます——B を4回更新すると47。まさに選択肢(2)に用意されています。
流れ図は線を指でなぞる
判定でNO へ進んだら、その先にある箱だけを実行する——YES 側の箱は通りません。当たり前のようですが、頭の中だけで追うと混同します。
矢印を指でなぞりながら、通った箱に印を付ける——これが最も確実な方法です。A問題1問に使えるのは4〜5分——急がず正確にが結局は速いのです。
B の増え方を見ておく
B ← 2B+1 は「2倍して1 を足す」——2進数で見ると意味がはっきりします。
| 回数 | B(10進) | B(2進) |
| 初期 | 2 | 10 |
| 1回目 | 5 | 101 |
| 2回目 | 11 | 1011 |
| 3回目 | ★23 | 10111 |
2倍は左へ1桁シフト、+1 は右端に1 を立てる——だから右側に1 が1つずつ増えていきます。桁が1つ増えるので、値はほぼ2倍です。
ほぼ倍々に増えるので、ループはすぐ終わります——「何十回も回るのでは」と身構える必要はありません。数回で条件を超えると見当がつきます。
同じくフローチャートを追う問題が令和2年度 B問題18や平成29年度 B問題18にもあります(令和2年度/平成29年度)。
変数追跡表の書き方
フローチャート問題は、表を作った時点で半分終わりです——書き方を決めておきましょう。
| 周 | A | 判定 A≦40 | B |
| 初期 | 10 | — | 2 |
| 1 | 12 | YES | 5 |
| 2 | 17 | YES | 11 |
| 3 | 28 | YES | ★23 |
| 4 | ★51 | NO | —(更新されない) |
判定の列を真ん中に置くのが要点——A の更新とB の更新の間に判定があることが、表の形からそのまま見えます。
4周目のB の欄が空になる——これが答えを決める1マスです。表を作れば、迷いようがありません。
A の増え方も確認できる
A は 10 →12 →17 →28 →51——差を取ると 2、5、11、23 です。これはB の値そのもの——A ← A+B なのですから当然ですが、表を作ると自然に見えてきます。
こうした規則性に気づけると、計算ミスにも気づきやすくなります——「差がB になっていない」と分かれば、どこかで書き間違えたということ。表は検算の道具でもあるのです。
まとめ
| 処理の順序 | ①A←10,B←2 ②A←A+B ③A≦40? ④YESならB←2B+1して②へ/NOなら印字 |
| 判定の位置 | Aの更新直後・Bの更新直前 ⇒ 抜けぎわにBは更新されない |
| Aの推移 | 10 → 12 → 17 → 28 → 51(4回更新) |
| Bの推移 | 2 → 5 → 11 → 23(3回更新) |
| ループ脱出 | A=51 で 51≦40 が不成立 ⇒ Bは23のまま |
| 印字される値 | A=51、B=23 |
| 答え | (3) |
▼あわせて解きたい関連問題
・炉壁の温度こう配と熱損失(電気加熱23):【機械】令和7年度下期 A問題12
・ブロック線図の合成周波数伝達関数(自動制御26):【機械】令和7年度下期 A問題13

コメント