2026年5月11日
共通テスト「情報Ⅰ」の擬似コード問題を攻略しよう
共通テスト「情報Ⅰ」では、擬似コードを読んで答える問題が出ます。配点も高く、ここで差がつきます。
「コードを見ても何をしているかわからない」「途中で変数の値を見失う」という人は多いです。でも、正しい解き方を知れば確実に得点できます。
擬似コード問題を解くカギはトレースです。トレースとは、コードを1行ずつ手動で実行し、変数の値を追いかけることです。
この記事では、トレースの具体的なやり方を解説し、パターン別の解法と練習問題5問を用意しました。
DNCLの基本文法を先に読んでおくと、よりスムーズに理解できます。
擬似コードの読み方の基本
擬似コードとは、プログラムの処理手順を日本語ベースで書いたものです。共通テストではDNCLという擬似言語が使われます。
1. 変数と代入
変数は値を入れる箱です。矢印←の右側を計算して、左側の変数に入れます。
x ← 5
y ← x + 3 2. 条件分岐(もし〜なら)
条件が正しい(真)なら上の処理、正しくない(偽)なら下の処理を実行します。
もし x > 10 ならば
y ← y + 1
そうでなければ
y ← y - 1
を実行する 3. 繰り返し
iが1, 2, 3, 4, 5と変わりながら、中の処理を5回繰り返します。
i を 1 から 5 まで 1 ずつ増やしながら繰り返す
合計 ← 合計 + i
を実行する 4. 配列
配列は複数の値をまとめて入れる箱です。A[2]は配列Aの2番目の要素を取り出します。
配列 A ← {3, 7, 2, 9, 1}
x ← A[2] 注意:共通テストでは配列の添字が0から始まる場合と1から始まる場合があります。問題文をよく確認しましょう。
変数と条件分岐の詳しい解説も参考にしてください。
トレースの方法
トレースとは、プログラムを1行ずつ自分の手で実行し、変数の値の変化を追いかけることです。
変数表の書き方
例題:次のコードを実行したとき、xの最終的な値を求めなさい。
x ← 0
i を 1 から 3 まで 1 ずつ増やしながら繰り返す
x ← x + i * 2
を実行する 変数表:
| 回 | i | x | 計算内容 |
|---|---|---|---|
| 初期 | - | 0 | x←0 |
| 1回目 | 1 | 2 | 0 + 1×2 = 2 |
| 2回目 | 2 | 6 | 2 + 2×2 = 6 |
| 3回目 | 3 | 12 | 6 + 3×2 = 12 |
答え:x = 12
トレースの手順
- すべての変数を書き出す
- 初期値を記入する
- コードを上から1行ずつ実行する
- 変数の値が変わるたびに表を更新する
- 繰り返しは1回ずつ丁寧に追う
コツ:頭の中でやらず、必ず紙に書きましょう。暗算でミスする人がとても多いです。
パターン別解法
共通テストの擬似コード問題には、よく出るパターンがあります。パターンを知っておくと、コードの目的がすぐにわかります。
パターン1: カウント(数える)
count ← 0
i を 1 から n まで 1 ずつ増やしながら繰り返す
もし A[i] > 50 ならば
count ← count + 1
を実行する
を実行する 見分け方:count ← count + 1 があれば「何かを数えている」パターンです。
この例の意味:配列Aの中で50より大きい要素の個数を数えている。テストの点数で「合格者数を数える」「基準値を超えたデータの件数」などの場面で使われます。
パターン2: 合計(足し合わせる)
goukei ← 0
i を 1 から n まで 1 ずつ増やしながら繰り返す
goukei ← goukei + A[i]
を実行する 見分け方:goukei ← goukei + 何か があれば「合計を求めている」パターンです。
この例の意味:配列Aの全要素の合計を求めている。平均を出すときは、このあとに goukei / n が続きます。「テスト5教科の合計点」「売上の合計」などの場面で登場します。
パターン3: 最大値探索
saidai ← A[1]
i を 2 から n まで 1 ずつ増やしながら繰り返す
もし A[i] > saidai ならば
saidai ← A[i]
を実行する
を実行する 見分け方:「もし A[i] > 変数 ならば、変数 ← A[i]」の形があれば最大値探索です。不等号が < なら最小値探索になります。
この例の意味:配列Aの中で最も大きい値を見つけている。最初の要素を仮の最大値として、それより大きい値が見つかるたびに更新していきます。
パターン4: 交換(スワップ)
temp ← A[i]
A[i] ← A[j]
A[j] ← temp 見分け方:一時変数(temp)を使って2つの値を入れ替えている。ソートアルゴリズムの中でよく使われます。
この例の意味:A[i]とA[j]の値を交換しています。直接 A[i] ← A[j] とすると元のA[i]の値が消えてしまうため、一時変数tempに退避させてから入れ替えます。バブルソートや選択ソートの中核部分です。
ソートアルゴリズムの解説で、交換を使った並べ替えの仕組みを学べます。
パターン5: フラグ(判定)
flag ← 0
i を 1 から n まで 1 ずつ増やしながら繰り返す
もし A[i] = target ならば
flag ← 1
を実行する
を実行する 見分け方:変数が0か1だけを取り、条件を満たしたら1に変わる。「配列の中にtargetがあるか」を判定しています。
この例の意味:配列Aの中にtargetと同じ値が1つでもあればflagが1になります。全部調べ終わったあとにflagが0なら「見つからなかった」、1なら「見つかった」と判定できます。線形探索(リニアサーチ)の基本形です。
共通テスト形式の練習問題
練習問題1: 基本トレース
次のコードを実行したとき、変数kekkaの値を求めなさい。
kekka ← 1
i を 1 から 4 まで 1 ずつ増やしながら繰り返す
kekka ← kekka * i
を実行する 練習問題2: 条件分岐つきカウント
配列 A = { 4, 8, 3, 9, 6, 2, 7 } のとき、countの値を求めなさい。(添字は1から)
count ← 0
i を 1 から 7 まで 1 ずつ増やしながら繰り返す
もし A[i] >= 5 ならば
count ← count + 1
を実行する
を実行する 練習問題3: 最大値探索
配列 B = { 12, 5, 23, 8, 17 } のとき、saidaiとichiの値を求めなさい。(添字は1から)
saidai ← B[1]
ichi ← 1
i を 2 から 5 まで 1 ずつ増やしながら繰り返す
もし B[i] > saidai ならば
saidai ← B[i]
ichi ← i
を実行する
を実行する 練習問題4: 穴埋め問題
配列 C = { 10, 20, 30, 40, 50 } の合計と平均を求めるプログラムです。空欄【ア】【イ】に入る式を答えなさい。
goukei ← 0
i を 1 から 5 まで 1 ずつ増やしながら繰り返す
goukei ← 【ア】
を実行する
heikin ← 【イ】 練習問題5: 複合問題
配列 D = { 5, 2, 8, 1, 4 } に対して次のコードを実行したとき、配列Dの内容がどう変わるか答えなさい。
i を 1 から 4 まで 1 ずつ増やしながら繰り返す
もし D[i] > D[i+1] ならば
temp ← D[i]
D[i] ← D[i+1]
D[i+1] ← temp
を実行する
を実行する 練習問題の解答・解説
問題1の解答: kekka = 24
| 回 | i | kekka | 計算 |
|---|---|---|---|
| 初期 | - | 1 | - |
| 1回目 | 1 | 1 | 1×1=1 |
| 2回目 | 2 | 2 | 1×2=2 |
| 3回目 | 3 | 6 | 2×3=6 |
| 4回目 | 4 | 24 | 6×4=24 |
このコードは階乗を計算しています。4! = 1×2×3×4 = 24
問題2の解答: count = 4
| i | A[i] | A[i]>=5? | count |
|---|---|---|---|
| 1 | 4 | いいえ | 0 |
| 2 | 8 | はい | 1 |
| 3 | 3 | いいえ | 1 |
| 4 | 9 | はい | 2 |
| 5 | 6 | はい | 3 |
| 6 | 2 | いいえ | 3 |
| 7 | 7 | はい | 4 |
5以上の要素は 8, 9, 6, 7 の4つです。
問題3の解答: saidai = 23、ichi = 3
| i | B[i] | B[i]>saidai? | saidai | ichi |
|---|---|---|---|---|
| 初期 | - | - | 12 | 1 |
| 2 | 5 | いいえ | 12 | 1 |
| 3 | 23 | はい | 23 | 3 |
| 4 | 8 | いいえ | 23 | 3 |
| 5 | 17 | いいえ | 23 | 3 |
最大値は23で、配列の3番目にあります。ichiは最大値の位置を記録しています。
問題4の解答
- 【ア】
goukei + C[i] - 【イ】
goukei / 5
検算:10+20+30+40+50 = 150、150÷5 = 30
問題5の解答: D = { 2, 5, 1, 4, 8 }
| i | D[i] | D[i+1] | 交換? | 結果 |
|---|---|---|---|---|
| 1 | 5 | 2 | はい | 2,5,8,1,4 |
| 2 | 5 | 8 | いいえ | 2,5,8,1,4 |
| 3 | 8 | 1 | はい | 2,5,1,8,4 |
| 4 | 8 | 4 | はい | 2,5,1,4,8 |
これはバブルソートの1回分の走査です。最大値(8)が一番右に移動します。
ソートアルゴリズムの解説で全体像を学べます。
よくある間違い・ひっかけポイント
1. 配列の添字の開始番号
問題によって、配列が0から始まる場合と1から始まる場合があります。問題文の「添字は○から始まる」を必ず確認しましょう。
2. 繰り返しの回数を間違える
「i を 1 から 5 まで」は5回繰り返します(i=1,2,3,4,5)。「5まで」は5を含みます。
3. 代入の向きを逆に読む
x ← y + 1 は「yの値+1をxに入れる」です。yの値は変わりません。矢印の左側が変わる変数、右側は計算するだけです。
4. 「以上」と「より大きい」の違い
x >= 10 は10を含む(10以上)。x > 10 は10を含まない(10より大きい)。境界値でどちらに入るかが変わります。
5. 条件を満たさない回で変数を見失う
繰り返しの中に条件分岐があると、「条件を満たさなかった回」で変数が変わらないことを忘れがちです。変数表で「変化なし」の行も必ず書きましょう。
トレースを速くするコツ
- まずコードの「目的」を推測する — パターン(カウント・合計・最大値・ソート)を見抜けば、答えの見当がつきます
- 変数表は省略しない — 「頭の中でできる」と思っても必ず書く。ケアレスミスの大半は暗算が原因
- 繰り返しの最初と最後を確認する — 「何回繰り返すか」を先に把握する
- 選択肢を活用する — 共通テストは選択式。途中で選択肢と照合し、消去法を使う
たとえば「繰り返しが10回あるコード」で選択肢が「45, 55, 100, 110」なら、合計パターンだと推測できます。1〜10の合計は55なので、全部トレースしなくても答えの見当がつきます。
フローチャートの読み方を知っていると、コードの流れを図で整理できます。
共通テスト本番での時間配分
共通テスト「情報Ⅰ」は60分で大問4つ。擬似コード問題(プログラミング分野)は大問1つ分で、目安は15〜18分です。
推奨の解き方手順
- 問題文を読む(2分) — 何を求められているか、配列の添字は何始まりかを確認
- コード全体を眺める(1分) — パターンを見抜く。「カウントだな」「最大値探索だな」と目星をつける
- 変数表を書いてトレース(8〜10分) — 1行ずつ丁寧に。ここが得点の核心
- 選択肢と照合(2分) — 答えを選ぶ。迷ったら消去法
- 見直し(2分) — 計算ミスがないか、添字のずれがないか確認
時間が足りないときの戦略
全問トレースする時間がない場合は、以下の優先順位で解きましょう。
- 穴埋め問題 — パターンを知っていれば即答できる(最優先)
- 実行結果を問う問題 — トレースが必要だが確実に得点できる
- コードの目的を説明する問題 — パターン名がわかれば答えられる
「全部解こうとして全部中途半端」より「確実に解ける問題を先に片付ける」ほうが得点は高くなります。
まとめ
- ✅ 擬似コードの基本要素:変数・条件分岐・繰り返し・配列
- ✅ トレース=変数表を紙に書いて1行ずつ実行する
- ✅ パターン:カウント・合計・最大値・交換・フラグ
- ✅ 添字の開始番号と「以上/より大きい」に注意
- ✅ 選択肢を活用して時間を節約する
次のステップ
- DNCL(擬似言語)の書き方・読み方ガイド — DNCLの文法を網羅的に学ぶ
- フローチャートの読み方 — コードの流れを図で理解する
- 変数と条件分岐の解説 — 基礎からしっかり復習
- ソートアルゴリズムの解説 — バブルソート・選択ソートを学ぶ
- 情報Ⅰプログラミング分野の全体像 — 出題範囲を俯瞰する
トレースは練習するほど速くなります。最初は時間がかかっても、5問解けば感覚がつかめます。共通テスト本番に向けて、コツコツ練習していきましょう!