変数・条件分岐・繰り返し|トレース表で読むプログラムの基本とよく出る型
共通テストの第3問は、毎年プログラミングの問題です。プログラムは変数・条件分岐・繰り返しの組合せでできています。この記事では、その基本と、本番で何度も出てくる「処理の型」を整理します。表記のルールは「共通テスト用プログラム表記の読み方」にまとめているので、あわせて読んでください。
変数と代入
**変数**は、値を入れておく名前付きの箱です。= は「等しい」ではなく、右辺の値を左辺の変数に入れる(代入する)という意味です。
x = 5
x = x + 3
2行目は「x に x + 3 の値を入れる」なので、実行後の x は 8 です。数学の式として読むと成り立たないので注意しましょう。値が等しいかを調べるときは == を使います。
値の入れ替え
2つの変数 a と b の値を入れ替えるには、一時的に値を退避する変数を使います。
tmp = a
a = b
b = tmp
a = b と b = a の2行だけでは、a の元の値が消えてしまい、両方とも b の値になります。
条件分岐
**条件分岐**は、条件によって実行する処理を変える構造です。
もし tensu >= 80 ならば:
| hyoka = "A"
そうでなくもし tensu >= 60 ならば:
| hyoka = "B"
そうでなければ:
⎿ hyoka = "C"
上から順に条件を調べ、最初に当てはまったところだけを実行します。tensu が 85 なら、2つ目の条件(60以上)も満たしますが、最初の条件で “A” に決まり、残りは調べません。
繰り返し
**繰り返し**には2種類あります。
| 書き方 | 使う場面 |
|---|---|
i を 1 から 5 まで 1 ずつ増やしながら繰り返す: |
回数が決まっているとき。i は 1, 2, 3, 4, 5 と変わり、最後の値も含む |
x < 100 の間繰り返す: |
条件が成り立つ間続けるとき。先頭で毎回条件を調べ、偽になったら終わる |
「〜の間繰り返す」では、条件に使う変数を繰り返しの前で初期化しておく必要があります。また、繰り返しの中でその変数が変化しないと、いつまでも終わらなくなります(無限ループ)。
トレース表で追う
プログラムを読むときは、変数ごとに列を作り、1行実行するたびに値を書き込むトレース表を使います。
goukei = 0
i を 1 から 4 まで 1 ずつ増やしながら繰り返す:
⎿ goukei = goukei + i * 2
表示する(goukei)
| i | i * 2 | goukei |
|---|---|---|
| (開始前) | — | 0 |
| 1 | 2 | 2 |
| 2 | 4 | 6 |
| 3 | 6 | 12 |
| 4 | 8 | 20 |
表示されるのは 20 です。
よく出る処理の型
合計を求める
goukei = 0
i を 0 から 要素数(Data) - 1 まで 1 ずつ増やしながら繰り返す:
⎿ goukei = goukei + Data[i]
合計を入れる変数は、繰り返しの前で0にしておくのがポイントです。
条件に合う個数を数える
kosu = 0
i を 0 から 要素数(Data) - 1 まで 1 ずつ増やしながら繰り返す:
| もし Data[i] >= 60 ならば:
⎿ ⎿ kosu = kosu + 1
最大値を求める
saidai = Data[0]
i を 1 から 要素数(Data) - 1 まで 1 ずつ増やしながら繰り返す:
| もし Data[i] > saidai ならば:
⎿ ⎿ saidai = Data[i]
最初の値を仮の最大値にして、それより大きい値が見つかるたびに更新します。最小値なら不等号を逆にします。2026年の本試験 第3問 では、関数「最大値」を使って saichou = 最大値(saichou, 待ち時間) と更新していく形で出ました。
偶数・倍数の判定
x % 2 == 0 なら x は偶数です(% は余り)。x % 3 == 0 なら3の倍数です。
二重ループ
繰り返しの中に、もう一つ繰り返しを入れたものを二重ループといいます。外側の1回ごとに、内側の繰り返しが最初から最後まで実行されます。
kaisu = 0
i を 1 から 3 まで 1 ずつ増やしながら繰り返す:
| j を 1 から 4 まで 1 ずつ増やしながら繰り返す:
⎿ ⎿ kaisu = kaisu + 1
外側が3回、内側が4回なので、kaisu は 3 × 4 = 12 になります。九九の表を作る、2次元の表のすべてのマスを調べる、といった処理で使います。
共通テストでの出題
- 2026年の本試験 第3問:ゲームの待ち時間を求めるプログラム。開始時刻を「最大値(直前の人の終了時刻, 本人の到着時刻)」で求め、さらに「〜の間繰り返す」に書き換えて、条件を満たさなくなったら止める問題。書き換え後に配列の初期化が何回実行されるか(5回)も問われました。
- 2025年の本試験 第3問:工芸品の担当を割り当てるプログラム。繰り返しの中で最小値を探す処理を、さらに外側の繰り返しで工芸品の数だけ実行する、二重ループの構造でした。
どちらも、プログラムの前に手計算で表を作る問題があり、その表がそのままプログラムのヒントになっていました。
よくある間違い
=と==の混同:=は代入、==は比較です。- 初期化の位置:合計や個数を数える変数を繰り返しの中で0にすると、毎回リセットされてしまいます。
- 繰り返しの最後の値:「1 から 5 まで」は5も含みます。
- 「〜の間繰り返す」の終わり方:条件は先頭で調べるので、条件が偽になる値になった回も、その回の処理は最後まで実行されます。
まとめ
=は代入。x = x + 1は「x を1増やす」- 条件分岐は上から順に調べ、最初に当てはまったところだけを実行する
- 繰り返しは「回数を決める」型と「条件が成り立つ間」型の2種類
- トレース表で1行ずつ値を追う。合計・個数・最大値・入れ替えの型は覚えておく