2026年5月12日
DNCLが読めない3つの原因と解決法
共通テストの情報Ⅰで出てくる擬似言語(DNCL)。「何が書いてあるかわからない」と感じていませんか?
DNCLが読めない原因は主に3つ:
- 日本語なのに意味がわからない:「〜を〜に格納する」「〜の間繰り返す」など独特の表現
- どこから読めばいいかわからない:コードの全体像が見えない
- 変数の値が追えない:途中で何がどうなっているか見失う
DNCLは「パターン」があります。パターンを覚えれば、初見の問題でも読めるようになります。
DNCLの文法ガイドで基本文法を確認してから読むと、さらに理解が深まります。
DNCL独特の表現一覧
代入・入出力
| DNCLの表現 | 意味 | Pythonで書くと |
|---|---|---|
x ← 5 | xに5を代入する | x = 5 |
x ← x + 1 | xを1増やす | x = x + 1 |
表示する(x) | xの値を画面に出す | print(x) |
条件分岐
| DNCLの表現 | 意味 |
|---|---|
もし x > 10 ならば | xが10より大きいとき |
そうでなくもし x > 5 ならば | そうでなくて、xが5より大きいとき |
そうでなければ | 上のどれにも当てはまらないとき |
| DNCLの表現 | 意味 |
|---|---|
i を 1 から 10 まで 1 ずつ増やしながら繰り返す | for i in range(1, 11) |
x > 0 の間繰り返す | while x > 0 |
繰り返しを抜ける | break |
比較・論理演算
| DNCLの表現 | 意味 |
|---|---|
x = 5 | xが5と等しい(比較) |
x ≠ 5 | xが5と等しくない |
x ≧ 5 | xが5以上 |
かつ / または | AND / OR |
重要:DNCLでは = は「比較」です。代入は ← を使います。配列の添字が0と1のどちらから始まるかは問題ごとに定義されるので、必ず問題文を確認しましょう。
表現の具体例
「←」(代入):x ← 10 は「xという箱に10を入れる」。x ← x + 1 は「xの中身を取り出して1を足し、結果をまたxに入れる」。右辺を先に計算してから左辺に入れます。数学の「x = x + 1」とは意味が違います。
「もし〜ならば」:条件が偽(成り立たない)のときは中の処理をスキップして次に進みます。「そうでなくもし」は上の条件が偽のときだけ判定されます。上から順に判定して最初に真になったところだけ実行されます。
「〜の間繰り返す」:毎回ループの先頭で条件を判定します。条件が偽になった瞬間にループを抜けます。無限ループにならないよう、ループ内で条件に関わる変数が変わる処理が必要です。
「iを〜まで〜ずつ」:i を 1 から 5 まで 1 ずつ はi=1,2,3,4,5の5回。2 ずつ増やしながら ならi=1,3,5の3回。「5まで」は5を含みます。
読み方の3ステップ
ステップ1: 全体を把握する
コードを最初から最後まで「ざっと」見て構造を把握します。変数は何個あるか、繰り返しはあるか、最後に何を表示しているか。細かい計算は追いません。
ステップ2: 変数追跡(トレース)
表を作って、1行ずつ変数の値を追いかけます。
行 | i | sum | 条件 | 出力
----|----|----|---------|-----
1 | | 0 | |
2 | 1 | 0 | |
3 | 1 | 1 | |
4 | 2 | 1 | |
5 | 2 | 3 | |
6 | 3 | 3 | |
7 | 3 | 6 | |
8 | | 6 | | 6 コツ:変数が変わるたびに新しい行を書く。繰り返しの中は特に丁寧に追う。条件分岐では「どちらに進んだか」を記録する。
ステップ3: 出力を確認する
最後に 表示する で出力される値を確認します。問題で聞かれるのは、ほとんどの場合「出力結果」です。
パターン別攻略
パターン1: 合計を求める
sum ← 0
i を 1 から 5 まで 1 ずつ増やしながら繰り返す
sum ← sum + i
を実行する
表示する(sum) 読み方:sum ← 0 で合計変数を初期化。sum ← sum + i で今の合計にiを足す。1+2+3+4+5 = 15。出力: 15
パターン2: 最大値を求める
A ← {3, 7, 2, 9, 4}
max ← A[1]
i を 2 から 5 まで 1 ずつ増やしながら繰り返す
もし A[i] > max ならば
max ← A[i]
を実行する
を実行する
表示する(max) 読み方:最初に max を配列の1番目(3)にする。2番目以降を順に見て、maxより大きければ更新。3→7→7→9→9。出力: 9
パターン3: カウントする
A ← {5, 3, 8, 1, 7, 4, 9, 2}
count ← 0
i を 1 から 8 まで 1 ずつ増やしながら繰り返す
もし A[i] ≧ 5 ならば
count ← count + 1
を実行する
を実行する
表示する(count) 読み方:5以上の要素を数える。5, 8, 7, 9 の4つが5以上。出力: 4
パターン4: 交換(スワップ)
temp ← A[i] → A[i] ← A[j] → A[j] ← temp でA[i]とA[j]の値を入れ替えます。ソートアルゴリズムでよく出ます。
情報Ⅰのアルゴリズム・ソートで詳しく解説しています。
読み間違いやすいポイント5選
ポイント1: ← と = の違い
← は代入(xに5を入れる)、= は比較(xが5と等しいか?)。これを間違えると全く違う意味になります。
ポイント2: 繰り返しの範囲
「i を 1 から 5 まで」は i=1,2,3,4,5 の5回繰り返します。「5まで」は5を含みます。
ポイント3: 配列のインデックス
配列の添字が0始まりか1始まりかは問題ごとに定義されるので、問題文の「配列の添字は○から始まる」という記述を必ず確認しましょう。
ポイント4: 「そうでなくもし」の判定順序
もし x ≧ 80 ならば
表示する("A")
そうでなくもし x ≧ 60 ならば
表示する("B")
そうでなければ
表示する("C") x=75の場合:x≧80→偽、x≧60→真→"B"を表示。上から順に判定して、最初に真になったところで終了します。
ポイント5: 繰り返しの中の条件分岐
繰り返しの中に条件分岐がある場合、毎回の繰り返しで条件を判定します。条件を満たさない回では何も起きません。トレース表で「変化なし」の行も必ず書きましょう。
練習問題
問題1
次のプログラムの出力を答えなさい。
x ← 10
y ← 3
z ← 0
x > 0 の間繰り返す
z ← z + 1
x ← x - y
を実行する
表示する(z)
表示する(x) 問題2
次のプログラムの出力を答えなさい。
A ← {4, 2, 7, 1, 5}
sum ← 0
i を 1 から 5 まで 1 ずつ増やしながら繰り返す
もし A[i] > 3 ならば
sum ← sum + A[i]
を実行する
を実行する
表示する(sum) 問題3
次のプログラムの出力を答えなさい。
n ← 1
i を 1 から 4 まで 1 ずつ増やしながら繰り返す
n ← n * 2
を実行する
表示する(n) 解答・解説
問題1の解答: z=4, x=-2
行 | x | y | z | 条件(x>0)
----|-----|---|---|----------
初期| 10 | 3 | 0 |
1回目| 7 | 3 | 1 | 10>0 → 真
2回目| 4 | 3 | 2 | 7>0 → 真
3回目| 1 | 3 | 3 | 4>0 → 真
4回目| -2 | 3 | 4 | 1>0 → 真
判定 | -2 | 3 | 4 | -2>0 → 偽(終了) このプログラムは「10を3で何回引けるか」を数えています(割り算の商と余りに相当)。
問題2の解答: 16
A = {4, 2, 7, 1, 5}
i=1: A[1]=4 > 3 → 真 → sum = 0+4 = 4
i=2: A[2]=2 > 3 → 偽 → sumは変わらない
i=3: A[3]=7 > 3 → 真 → sum = 4+7 = 11
i=4: A[4]=1 > 3 → 偽 → sumは変わらない
i=5: A[5]=5 > 3 → 真 → sum = 11+5 = 16 3より大きい要素(4, 7, 5)の合計です。
問題3の解答: 16
初期: n=1 → i=1: n=2 → i=2: n=4 → i=3: n=8 → i=4: n=16。nを4回2倍にしています。つまり 2⁴ = 16 です。
テスト本番のコツ
- まず全体を見る:いきなり計算を始めない
- トレース表を書く:頭の中だけで追わない。必ず紙に書く
- 繰り返しの回数を確認:「何回繰り返すか」を最初に把握する
- 選択肢を先に見る:答えの候補がわかると、トレースの方向性が見える
- 時間をかけすぎない:1問に10分以上かかったら飛ばす
情報Ⅰの擬似コード読解で、さらに多くの問題パターンを練習できます。
情報Ⅰの変数とif文の解説で基本に不安がある人は、そちらも確認してください。
情報Ⅰ共通テスト対策スケジュールで、全体の学習計画を立てましょう。
まとめ
- ✅ 独特の表現を覚える(←は代入、=は比較)
- ✅ 3ステップで読む(全体把握→変数追跡→出力確認)
- ✅ トレース表を必ず紙に書く
- ✅ 配列の添字は0始まりか1始まりか問題文で確認する
- ✅ パターンを覚える(合計、最大値、カウント、交換)
- ✅ 読み間違いやすいポイントを意識する
DNCLは「慣れ」が大切です。最初は時間がかかっても、10問解けばスピードが上がります。
補足
追加練習:A=10、5より大きい要素だけ合計→6+8+10=24。トレース表テンプレート:列は「ループ回数 | 変数1 | 変数2 | 条件(真/偽) | 出力」。この表を紙に書いてから解き始めましょう。