第三種電気主任技術者試験 / 令和7年度第三種電気主任技術者下期試験 機械科目 / 各問題解説 / 問140
certification-simodake-work

令和7年度第三種電気主任技術者下期試験 機械科目 問140 解説 問14 問14

設問図

問14 次のフローチャートに従って作成したプログラムを実行したとき, 印字されるA, Bの値として, 正しい組合せを次の(1)~(5)のうちから一つ選べ。

  1. A=43, B=26
  2. A=51, B=47
  3. A=51, B=23 ✓ 正答
  4. A=98, B=47
  5. A=98, B=95

解説

プログラムの処理は、Aの値を更新した後にその値が40以下であるかを判定し、40を超えた時点でループを抜けて現在のAとBを出力する手順で進むため、印字される値はA=51、B=23となります。

アルゴリズムにおける変数の更新と反復処理

フローチャートで示される処理は、順次実行される命令と、特定の条件が満たされている間だけ繰り返される「ループ構造」から構成されます。

変数の右側に記述された記号(←\leftarrow)は、現在の値を用いて右辺を計算し、その結果を再び左辺の変数へ代入する処理を表します。計算機プログラムにおいて、ある変数の値を前のステップの状態から逐次更新していく手法は、逐次代入あるいは状態更新と呼ばれます。この処理を正しく追いかけるためには、各ステップごとのAとBの値を個別に管理し、条件判定の瞬間にどの値が有効であるかを把握する必要があります。判定記号(ひし形)のYESであればループの先頭に戻り、NOであればその時点の保持している値を出力する仕組みです。

処理ステップの追跡

与えられた初期値と更新式に基づき、処理を段階的に進めます。

  1. 初期設定として A=10A=10、B=2B=2 をセットします。
  2. 1回目のループ: AA を 10+2=1210+2=12 に更新します。12≦4012 \leqq 40 は YES であるため、BB を 2×2+1=52 \times 2+1=5 に更新します。
  3. 2回目のループ: AA を 12+5=1712+5=17 に更新します。17≦4017 \leqq 40 は YES であるため、BB を 2×5+1=112 \times 5+1=11 に更新します。
  4. 3回目のループ: AA を 17+11=2817+11=28 に更新します。28≦4028 \leqq 40 は YES であるため、BB を 2×11+1=232 \times 11+1=23 に更新します。
  5. 4回目のループ: AA を 28+23=5128+23=51 に更新します。ここで 51≦4051 \leqq 40 の判定を行うと NO となります。
  6. 出力処理: ループを抜け、その時点での値である A=51A=51、B=23B=23 が印字されます。

フローチャートの矢印が示す分岐点での条件判定と、繰り返されるたびに書き換わるAとBの関係を重ねてみると、プログラムが終了へと向かう過程が見えてきます。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう