情報I プログラミング問題の解き方|DNCL擬似言語 完全マスター【日本数学塾・数強塾 藤原進之介】
```html
情報I プログラミング問題の解き方|DNCL擬似言語 完全マスター【日本数学塾・数強塾 藤原進之介】
著者:藤原進之介(日本数学塾・数強塾 代表講師/著書累計約15万部)
はじめに
2025年度の大学入学共通テストから、新教科「情報I」が本格的に導入されました。これまで私は数学を中心に指導してきましたが、情報Iの分野においても多くの生徒さんから「プログラミング問題が全然わからない」「DNCLって何?」「どうやって勉強すればいいの?」といった相談を数多くいただいています。
実際、2025年度共通テストの情報Iは平均点が約69点と、新科目としては比較的高めでしたが、これは問題が易しかったというよりも、しっかり対策した受験生としなかった受験生の差が大きく出た結果だと私は考えています。
特に、プログラミング問題は配点も高く、ここで確実に得点できるかどうかが合否を分ける重要なポイントになります。そして、このプログラミング問題で使用されるのが「DNCL(共通テスト手順記述標準言語)」という擬似言語です。
「擬似言語」と聞くと難しそうに感じるかもしれませんが、安心してください。DNCLは日本語に近い表記で書かれており、コツをつかめば誰でも読み解けるようになります。
この記事では、私が『藤原進之介のゼロから始める情報I』(KADOKAWA)や『藤原進之介の情報I プログラミング・データの活用が面白いほどわかる本』などの執筆経験、そして数強塾・情報ラボでの指導経験をもとに、DNCLプログラミング問題を完全マスターするための方法を徹底解説します。
プログラミング初心者の方、情報Iに苦手意識がある方、そして保護者の方々にも分かりやすくお伝えしますので、最後までお付き合いください。
【情報I プログラミング問題の解き方】の核心ポイント
1. DNCLとは何か?その本質を理解する
DNCL(Daigaku Nyushi Center Language)は、大学入試センターが共通テストのために作成した「共通テスト手順記述標準言語」です。
なぜこのような擬似言語が作られたのでしょうか?それは、高校の授業で使用されるプログラミング言語が学校によって異なるためです。Python、JavaScript、Scratch、VBAなど、様々な言語が使われている中で、特定の言語に偏らず、全ての受験生が公平に取り組めるように設計されたのがDNCLです。
DNCLの最大の特徴は、日本語をベースにした直感的な表記です。例えば:
- 「〜を表示する」→ 画面に出力する
- 「もし〜ならば」→ 条件分岐(if文)
- 「〜の間繰り返す」→ 繰り返し処理(while文)
- 「〜を〜から〜まで1ずつ増やしながら繰り返す」→ for文に相当
このように、英語のプログラミング言語を知らなくても、日本語として読めるのがDNCLの利点です。
2. 核心ポイント①:「トレース」の技術を極める
プログラミング問題を解く上で、最も重要な技術は「トレース」です。
トレースとは、プログラムを1行ずつ追いかけながら、変数の値がどのように変化するかを追跡する作業のことです。
多くの受験生がプログラミング問題で失敗する原因は、「なんとなく読んで、なんとなく答える」という曖昧なアプローチにあります。しかし、プログラムは1行たりとも曖昧な動作をしないものです。必ず決まったルールに従って動きます。
だからこそ、トレース表を作成して、変数の値を1つずつ確認していくことが、確実に正解にたどり着く唯一の方法なのです。
3. 核心ポイント②:DNCLの基本構文を暗記する
DNCLには覚えるべき基本構文がいくつかあります。これらは暗記必須です。
■ 変数と代入
変数名 ← 値 例:x ← 5 合計 ← 0
■ 算術演算子
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
| + | 加算 | 5 + 3 | 8 |
| - | 減算 | 5 - 3 | 2 |
| × | 乗算 | 5 × 3 | 15 |
| / | 除算(実数) | 7 / 2 | 3.5 |
| ÷ | 除算(整数・切り捨て) | 7 ÷ 2 | 3 |
| % | 剰余(余り) | 7 % 2 | 1 |
特に「/」と「÷」の違いは頻出ポイントです。共通テストでも狙われやすいので、確実に区別しましょう。
■ 比較演算子
| 演算子 | 意味 |
|---|---|
| = | 等しい |
| ≠ | 等しくない |
| < | より小さい |
| > | より大きい |
| ≦ | 以下 |
| ≧ | 以上 |
■ 論理演算子
| 演算子 | 意味 | 例 |
|---|---|---|
| かつ | AND(両方が真のとき真) | x > 0 かつ x < 10 |
| または | OR(どちらかが真のとき真) | x = 0 または x = 10 |
| でない | NOT(真偽を反転) | (x = 0) でない |
4. 核心ポイント③:3つの基本制御構造をマスターする
プログラムは、順次・分岐・繰り返しという3つの基本制御構造の組み合わせで成り立っています。DNCLでのそれぞれの書き方を完璧に覚えましょう。
【1】順次構造
プログラムは上から下へ順番に実行されます。これが最も基本的な構造です。
x ← 10 y ← 20 z ← x + y zを表示する
実行結果:30
【2】分岐構造(条件分岐)
条件によって処理を分ける構造です。
もし 条件 ならば 処理A そうでなければ 処理B を実行する
3つ以上の分岐がある場合:
もし 条件1 ならば 処理A そうでなくもし 条件2 ならば 処理B そうでなければ 処理C を実行する
【3】繰り返し構造
■ 回数を指定した繰り返し(for文に相当)
iを1から10まで1ずつ増やしながら繰り返す: iを表示する
■ 条件を満たす間の繰り返し(while文に相当)
x ← 1 x ≦ 10 の間繰り返す: xを表示する x ← x + 1
5. 核心ポイント④:配列の扱い方を完璧にする
共通テストのプログラミング問題では、配列(リスト)がほぼ確実に出題されます。
■ 配列の基本
Data ← [10, 20, 30, 40, 50]
配列の要素は0から始まる番号(添字・インデックス)で指定します。
| 添字 | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| 値 | 10 | 20 | 30 | 40 | 50 |
例:Data[2] → 30
ここで最も重要なのは、添字が0から始まるという点です。これを忘れて1から数え始めてしまうミスは、非常に多く見られます。
■ 配列の要素数を取得
要素数(Data) → 5
6. 核心ポイント⑤:問題文を「日本語として」丁寧に読む
これは意外に思われるかもしれませんが、プログラミング問題で点数を落とす原因の多くは、「問題文の読み間違い」です。
共通テストの問題は、プログラムだけでなく、問題文中にも重要な情報が含まれています。例えば:
- 配列の初期値
- 変数の定義
- 処理の目的・背景
- 出力形式の指定
これらを読み飛ばさずに、丁寧に確認することが、確実に正解するための第一歩です。
具体的な方法・事例(データ・問題例付き)
【例題1】基本的なトレース問題
まずは基本的なトレース問題から始めましょう。
【問題】
次のプログラムを実行したとき、最後に表示される値を答えよ。
(1) x ← 3 (2) y ← 5 (3) z ← x + y (4) x ← z × 2 (5) y ← x - z (6) yを表示する
【解説】トレース表を作成して解く
このような問題は、トレース表を作成して1行ずつ追いかけるのが確実です。
| 行番号 | x | y | z | 処理内容 |
|---|---|---|---|---|
| 初期状態 | - | - | - | |
| (1) | 3 | - | - | xに3を代入 |
| (2) | 3 | 5 | - | yに5を代入 |
| (3) | 3 | 5 | 8 | zにx+y=3+5=8を代入 |
| (4) | 16 | 5 | 8 | xにz×2=8×2=16を代入 |
| (5) | 16 | 8 | 8 | yにx-z=16-8=8を代入 |
| (6) | 16 | 8 | 8 | yの値「8」を表示 |
答え:8
このように、表を作って値の変化を追跡すれば、絶対に間違えません。面倒に感じるかもしれませんが、これが最も確実な方法です。
【例題2】条件分岐を含む問題
【問題】
次のプログラムにおいて、tensuに78を代入して実行したとき、表示される文字列を答えよ。
(1) tensu ← 78 (2) もし tensu ≧ 80 ならば (3) result ← "A" (4) そうでなくもし tensu ≧ 60 ならば (5) result ← "B" (6) そうでなくもし tensu ≧ 40 ならば (7) result ← "C" (8) そうでなければ (9) result ← "D" (10) を実行する (11) resultを表示する
【解説】
条件分岐の問題は、条件を上から順番に判定していきます。
- tensu = 78
- 「tensu ≧ 80」→ 78 ≧ 80 → 偽(False) → 次の条件へ
- 「tensu ≧ 60」→ 78 ≧ 60 → 真(True) → result ← "B" を実行
- 条件分岐を抜けて、resultを表示
答え:B
重要なポイント:条件分岐では、最初に真になった条件の処理だけが実行され、それ以降の条件は判定されません。78は「≧ 60」も「≧ 40」も満たしますが、先に「≧ 60」が判定されるため、"B"が代入されます。
【例題3】繰り返し処理(for文相当)
【問題】
次のプログラムを実行したとき、最後に表示される goukei の値を答えよ。
(1) goukei ← 0 (2) iを1から5まで1ずつ増やしながら繰り返す: (3) goukei ← goukei + i (4) goukeiを表示する
【解説】トレース表で追跡
| 繰り返し回数 | iの値 | goukei(処理前) | goukei(処理後) |
|---|---|---|---|
| 初期状態 | - | 0 | 0 |
| 1回目 | 1 | 0 | 0 + 1 = 1 |
| 2回目 | 2 | 1 | 1 + 2 = 3 |
| 3回目 | 3 | 3 | 3 + 3 = 6 |
| 4回目 | 4 | 6 | 6 + 4 = 10 |
| 5回目 | 5 | 10 | 10 + 5 = 15 |
答え:15
このプログラムは1から5までの整数の合計を計算しています。
1 + 2 + 3 + 4 + 5 = 15
繰り返し処理では、変数の値がどのように更新されていくかを、1回ずつ追跡することが重要です。
【例題4】配列を使った問題
【問題】
次のプログラムを実行したとき、最後に表示される max の値を答えよ。
(1) Data ← [34, 67, 23, 89, 45, 12, 78] (2) max ← Data[0] (3) iを1から6まで1ずつ増やしながら繰り返す: (4) もし Data[i] > max ならば (5) max ← Data[i] (6) を実行する (7) maxを表示する
【解説】
まず配列Dataの内容を確認します。
| 添字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| 値 | 34 | 67 | 23 | 89 | 45 | 12 | 78 |
このプログラムは配列の最大値を見つけるアルゴリズムです。
| i | Data[i] | max(処理前) | 条件判定 | max(処理後) |
|---|---|---|---|---|
| 初期 | - | - | - | 34(Data[0]) |
| 1 | 67 | 34 | 67 > 34 → 真 | 67 |
| 2 | 23 | 67 | 23 > 67 → 偽 | 67 |
| 3 | 89 | 67 | 89 > 67 → 真 | 89 |
| 4 | 45 | 89 | 45 > 89 → 偽 | 89 |
| 5 | 12 | 89 | 12 > 89 → 偽 | 89 |
| 6 | 78 | 89 | 78 > 89 → 偽 | 89 |
答え:89
これは「最大値を求めるアルゴリズム」の典型的なパターンです。共通テストでも頻出なので、このパターンは確実に押さえておきましょう。
【例題5】共通テスト形式の実践問題
【問題】
以下のプログラムは、整数nが素数かどうかを判定するものである。空欄(ア)〜(ウ)に入る適切な語句・式を答えよ。
(1) n ← 17 (2) isPrime ← (ア) (3) iを2から n-1 まで1ずつ増やしながら繰り返す: (4) もし n % i (イ) 0 ならば (5) isPrime ← 偽 (6) を実行する (7) もし isPrime (ウ) 真 ならば (8) "素数です" を表示する (9) そうでなければ (10) "素数ではありません" を表示する (11) を実行する
【解説】
(ア)の解答:真
素数判定では、まず「素数である」と仮定してから、割り切れる数があるかチェックします。最初はisPrimeを「真」に設定しておきます。
(イ)の解答:=
「n % i = 0」は「nをiで割った余りが0」、つまり「nがiで割り切れる」ことを意味します。割り切れる数が見つかれば、素数ではありません。
(ウ)の解答:=
isPrimeが「真」のままなら、割り切れる数がなかったので素数です。
このような「穴埋め問題」は共通テストで頻出です。プログラムの目的を理解し、各部分がどのような役割を果たしているかを考えることが重要です。
【例題6】二重ループの問題
【問題】
次のプログラムを実行したとき、表示される count の値を答えよ。
(1) count ← 0 (2) iを1から3まで1ずつ増やしながら繰り返す: (3) jを1から4まで1ずつ増やしながら繰り返す: (4) count ← count + 1 (5) countを表示する
【解説】
二重ループでは、外側のループが1回進むごとに、内側のループが全回数実行されます。
- 外側のループ(i):1, 2, 3 の3回
- 内側のループ(j):各iに対して 1, 2, 3, 4 の4回
- 合計:3 × 4 = 12回
答え:12
二重ループの実行回数は「外側の回数 × 内側の回数」で計算できます。
【例題7】文字列処理の問題
<div style="background-color: #f5f5f5; padding: 20px; border-radius: 8px; margin: 20px
【例題7】文字列処理の問題
【問題】
次のプログラムを実行したとき、表示される count の値を答えよ。
(1) text ← "programming" (2) count ← 0 (3) iを0から10まで1ずつ増やしながら繰り返す: (4) もし text[i] = "r" または text[i] = "m" ならば (5) count ← count + 1 (6) を実行する (7) countを表示する
【解説】
文字列"programming"を1文字ずつ配列として扱います。
| 添字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 文字 | p | r | o | g | r | a | m | m | i | n | g |
"r"または"m"に該当する文字をカウントします:
- 添字1:r → カウント
- 添字4:r → カウント
- 添字6:m → カウント
- 添字7:m → カウント
答え:4
【例題8】探索アルゴリズム(線形探索)
【問題】
次のプログラムは、配列から特定の値を探す線形探索である。target = 45 のとき、表示される結果を答えよ。
(1) Data ← [23, 56, 12, 45, 78, 34, 90] (2) target ← 45 (3) found ← -1 (4) iを0から6まで1ずつ増やしながら繰り返す: (5) もし Data[i] = target ならば (6) found ← i (7) を実行する (8) もし found ≠ -1 ならば (9) "位置: " と found を表示する (10) そうでなければ (11) "見つかりませんでした" を表示する (12) を実行する
【解説】
| 添字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| 値 | 23 | 56 | 12 | 45 | 78 | 34 | 90 |
target = 45 は添字3の位置にあります。
トレース:
- i=0: Data[0]=23 ≠ 45 → 何もしない
- i=1: Data[1]=56 ≠ 45 → 何もしない
- i=2: Data[2]=12 ≠ 45 → 何もしない
- i=3: Data[3]=45 = 45 → found ← 3
- i=4〜6: 何もしない(foundは3のまま)
found = 3 ≠ -1 なので、"位置: "と3が表示されます。
答え:位置: 3
【例題9】ソートアルゴリズム(バブルソート)
【問題】
次のプログラムはバブルソートを実装したものである。Data = [5, 3, 8, 1] に対して、1回目の外側ループ(i=0)が終了した時点での Data の状態を答えよ。
(1) Data ← [5, 3, 8, 1] (2) n ← 4 (3) iを0から n-2 まで1ずつ増やしながら繰り返す: (4) jを0から n-2-i まで1ずつ増やしながら繰り返す: (5) もし Data[j] > Data[j+1] ならば (6) temp ← Data[j] (7) Data[j] ← Data[j+1] (8) Data[j+1] ← temp (9) を実行する
【解説】
i=0 のとき、jは 0 から n-2-0 = 2 まで動きます。
初期状態:[5, 3, 8, 1]
j=0: Data[0]=5 と Data[1]=3 を比較
- 5 > 3 → 真 → 交換
- 結果:[3, 5, 8, 1]
j=1: Data[1]=5 と Data[2]=8 を比較
- 5 > 8 → 偽 → 交換なし
- 結果:[3, 5, 8, 1]
j=2: Data[2]=8 と Data[3]=1 を比較
- 8 > 1 → 真 → 交換
- 結果:[3, 5, 1, 8]
答え:[3, 5, 1, 8]
バブルソートでは、1回の外側ループで最大値が配列の末尾に移動します。この例では、8が末尾に移動しました。
【例題10】関数を含む問題
【問題】
次のプログラムを実行したとき、表示される値を答えよ。
関数 keisan(a, b) を:
result ← a × a + b × b
resultを返す
(1) x ← 3
(2) y ← 4
(3) z ← keisan(x, y)
(4) zを表示する
【解説】
関数keisan(a, b)は、a² + b²を計算して返します。
keisan(3, 4) を呼び出すと:
- a = 3, b = 4
- result = 3 × 3 + 4 × 4 = 9 + 16 = 25
- 25を返す
z = 25 が代入され、表示されます。
答え:25
ちなみに、これは三平方の定理(ピタゴラスの定理)の計算ですね。3² + 4² = 5² という有名な直角三角形の関係です。
頻出アルゴリズムパターンまとめ
共通テストで出題されやすいアルゴリズムパターンを整理しておきましょう。
| パターン | 目的 | ポイント |
|---|---|---|
| 合計・平均の計算 | 配列の要素の合計や平均を求める | goukei ← goukei + Data[i] の形 |
| 最大値・最小値 | 配列から最大/最小の値を見つける | 比較して大きい/小さいなら更新 |
| カウント | 条件を満たす要素の個数を数える | 条件が真なら count ← count + 1 |
| 線形探索 | 配列から特定の値を探す | 先頭から順番に比較 |
| 二分探索 | ソート済み配列から効率的に探す | 中央値と比較して範囲を半分に |
| バブルソート | 配列を昇順/降順に並べ替える | 隣り合う要素を比較して交換 |
| 選択ソート | 最小値を見つけて先頭に移動 | 未ソート部分の最小値を選択 |
| 素数判定 | 数が素数かどうか判定 | 2から√nまでで割り切れるか確認 |
よくある失敗パターンと対処法
失敗パターン1:配列の添字を1から数え始める
【間違い例】
Data = [10, 20, 30, 40, 50] のとき、「3番目の要素」を求める問題で Data[3] = 40 と答えてしまう。
【正しい理解】
「3番目」という日常語と「添字3」は異なります。
- 1番目 = Data[0] = 10
- 2番目 = Data[1] = 20
- 3番目 = Data[2] = 30 ✓
【対処法】
問題文を読む際に、「〇番目」と「添字〇」を混同しないよう注意。表を書いて添字と値の対応を明確にする習慣をつけましょう。
失敗パターン2:「/」と「÷」の混同
【間違い例】
7 / 2 = 3 と答えてしまう。
【正しい理解】
- 7 / 2 = 3.5(実数の除算)
- 7 ÷ 2 = 3(整数の除算、切り捨て)
【対処法】
演算子の意味を問題用紙の余白にメモしておく。「/は小数あり」「÷は整数」と覚えましょう。
失敗パターン3:繰り返しの範囲の誤解
【間違い例】
「iを1から5まで」で、i=1, 2, 3, 4 の4回だけと思ってしまう。
【正しい理解】
「1から5まで」は5を含むので、i=1, 2, 3, 4, 5 の5回です。
【対処法】
「〜まで」は境界値を含むと覚える。不安なときはトレース表で1回ずつ確認。
失敗パターン4:条件分岐の「≦」と「<」の混同
【間違い例】
x = 10 のとき、「x < 10」を真と判定してしまう。
【正しい理解】
- x < 10 → 10 < 10 → 偽
- x ≦ 10 → 10 ≦ 10 → 真
【対処法】
境界値(今回は10)を代入して確認する癖をつける。
失敗パターン5:変数の上書きを忘れる
【間違い例】
x ← 5 x ← x + 3
で、x = 5 と x = 8 の両方が存在すると思ってしまう。
【正しい理解】
変数は1つの値しか保持できない。新しい値が代入されると、古い値は消えます。
実行後:x = 8(5は上書きされて消える)
【対処法】
トレース表で、各行実行後の変数の値を更新しながら追跡する。
失敗パターン6:論理演算子の誤解
【間違い例】
x = 5 のとき、「x > 0 かつ x > 10」を真と判定してしまう。
【正しい理解】
- 「かつ」は両方が真のときだけ真
- x > 0 → 5 > 0 → 真
- x > 10 → 5 > 10 → 偽
- 真 かつ 偽 → 偽
【対処法】
| A | B | A かつ B | A または B |
|---|---|---|---|
| 真 | 真 | 真 | 真 |
| 真 | 偽 | 偽 | 真 |
| 偽 | 真 | 偽 | 真 |
| 偽 | 偽 | 偽 | 偽 |
この真理値表を暗記しておきましょう。
失敗パターン7:問題文の条件を読み飛ばす
【間違い例】
問題文に「配列の添字は1から始まる」と書いてあるのに、0から始まるものとして解いてしまう。
【正しい対処】
共通テストでは、問題によって添字が0始まりの場合と1始まりの場合があります。必ず問題文で確認してください。
【対処法】
問題を解く前に、以下の項目を確認する習慣をつける:
- 配列の添字は何から始まるか?
- 変数の初期値は何か?
- 入力データの具体的な値は?
失敗パターン8:時間配分のミス
【間違い例】
プログラミング問題に時間をかけすぎて、他の問題を解く時間がなくなる。
【正しい対処】
情報Iの試験時間は60分。大問は4つあるので、1問あたり約15分が目安です。
【対処法】
- 最初にすべての問題をざっと見て、解きやすそうな問題から着手
- 1問に20分以上かかりそうなら、一旦飛ばして他の問題へ
- トレース問題は時間がかかるので、急がず正確に
保護者・生徒へのQ&A
Q1: プログラミング経験がまったくないのですが、大丈夫でしょうか?
A: はい、大丈夫です。DNCLは日本語ベースの擬似言語なので、プログラミング経験がなくても理解できます。
実際、私が指導している生徒の多くも、最初はプログラミング未経験でした。しかし、基本構文を覚え、トレースの練習を重ねることで、共通テストレベルの問題は十分に解けるようになっています。
重要なのは、「プログラミング」を「暗号解読」のように考えないことです。DNCLは論理的な手順を日本語で記述したものなので、国語の読解力があれば必ず理解できます。
Q2: PythonやScratchを学校で習っていますが、DNCLとの違いは?
A: 考え方は同じです。言語が違っても、プログラミングの基本概念(変数、条件分岐、繰り返し、配列)は共通しています。
| 概念 | DNCL | Python |
|---|---|---|
| 代入 | x ← 5 | x = 5 |
| 出力 | xを表示する | print(x) |
| 条件分岐 | もし x > 0 ならば | if x > 0: |
| 繰り返し | iを1から5まで〜繰り返す | for i in range(1, 6): |
学校で習った言語の知識は、DNCLの理解に必ず役立ちます。「日本語に翻訳された」と考えれば、むしろ読みやすいはずです。
Q3: 情報Iの勉強にどれくらい時間をかけるべきですか?
A: 他の主要科目とのバランスを考えながら、計画的に取り組むことが大切です。
情報Iは100点満点で、国公立大学では主に圧縮されて配点されることが多いです(例:100点→50点に圧縮など)。そのため、英語や数学ほどの時間をかける必要はありませんが、完全に捨てるのは得策ではありません。
おすすめの学習計画:
- 高2冬〜高3春:基礎用語の暗記、DNCLの基本構文の理解(週1〜2時間)
- 高3夏:過去問・模試で実践演習(週2〜3時間)
- 高3秋以降:弱点補強と総仕上げ(週2時間程度)
Q4: 独学で対策できますか?それとも塾に通うべきですか?
A: 基礎レベルであれば独学でも十分対策可能です。ただし、以下の場合は専門的な指導を受けることをおすすめします。
- プログラミング問題が全く理解できない
- トレースのやり方がわからない
- 模試で思うように点数が取れない
- 効率的に短期間で対策したい
数強塾では、情報Iに特化した「情報ラボ」を運営しており、オンラインで全国どこからでも受講できます。プログラミング問題に苦手意識がある方は、ぜひ無料体験をご検討ください。
Q5: 参考書は何を使えばいいですか?
A: 以下の参考書がおすすめです。
- 『藤原進之介のゼロから始める情報I』(KADOKAWA)
情報I全体を基礎から学びたい方向け。初学者でも理解できる丁寧な解説。 - 『藤原進之介の情報I プログラミング・データの活用が面白いほどわかる本』
プログラミングとデータ活用に特化。苦手分野を集中的に克服したい方向け。 - 『藤原進之介の入試まで使える情報I』
一問一答形式で、試験直前の総復習に最適。過去問解説も充実。
これらを段階的に使い分けることで、効率的に学習を進められます。
Q6: 過去問はどこで手に入りますか?
A: 以下で入手できます。
- 大学入試センターの公式サイト:本試験・追試験の問題と解答
- 試作問題:大学入試センターが公開(DNCLの仕様書付き)
- 各予備校のサイト:解説付きの過去問分析
- 市販の過去問集:赤本、青本など
特に大学入試センターが公開している「共通テスト手順記述標準言語(DNCL)の説明」は必読です。DNCLの正式な仕様が記載されています。
Q7: 保護者として、子どもの学習をどうサポートすればいいですか?
A: 情報Iは保護者世代には馴染みのない科目かもしれませんが、以下のサポートが効果的です。
- 学習環境の整備:パソコンやタブレットで「どんくり」などのDNCL学習環境を使えるようにする
- 進捗の確認:定期的に「今どこまで進んでいる?」と声をかける
- 情報収集:入試制度の変更や配点の情報をチェックする
- モチベーション維持:「情報は将来役立つ」という視点で励ます
内容がわからなくても、「頑張ってるね」「難しそうだね」といった共感の言葉をかけるだけで、お子さんの学習意欲は大きく変わります。
Q8: 計算問題は電卓を使えますか?
A: 共通テストでは電卓は使用できません。そのため、計算は手計算で行う必要があります。
ただし、情報Iで出題される計算は、複雑な計算よりも論理的な思考力を問うものが中心です。四則演算や簡単な累乗(2³=8など)ができれば十分対応できます。
Q9: 情報Iと数学の関係は?
A: 情報Iには数学的な要素が含まれていますが、高度な数学知識は必要ありません。
関連する数学の内容:
- 論理(かつ、または、否定)
- 集合の基礎
- 確率・統計の基礎
- 2進数、16進数の変換
数学が得意な生徒は情報Iも得意な傾向がありますが、数学が苦手でも情報Iで高得点を取る生徒もいます。論理的に考える力があれば、数学力に関係なく対応できます。
Q10: 本番で緊張してしまいそうです。対策はありますか?
A: 緊張対策として、以下を実践してください。
- 模試を本番と同じ環境で受ける:時間配分の練習になる
- トレース表を書く習慣:手を動かすことで落ち着く
- わからない問題は後回し:焦らず、解ける問題から確実に
- 深呼吸:試験開始前に3回深呼吸する
最も重要なのは、十分な準備をして自信を持って臨むことです。この記事で紹介した方法を実践すれば、必ず
最も重要なのは、十分な準備をして自信を持って臨むことです。この記事で紹介した方法を実践すれば、必ず実力がつきます。自信を持って本番に臨んでください。
藤原進之介からのメッセージ
プログラミングは「怖くない」
これまで多くの生徒を指導してきた中で、「プログラミング」という言葉を聞いただけで苦手意識を持ってしまう生徒をたくさん見てきました。
「私には無理」「理系じゃないから」「パソコンが苦手だから」——そんな声をよく聞きます。
でも、断言します。DNCLプログラミング問題は、誰でも解けるようになります。
なぜなら、DNCLは「プログラミング言語」というよりも、「論理的な手順を日本語で書いたもの」だからです。
料理のレシピを思い浮かべてください。「まず野菜を切る」「次に鍋で炒める」「塩を加える」「5分煮込む」——これも一種の手順記述です。プログラムも同じで、「まずxに5を入れる」「次にxが10より大きいか確認する」「大きければAを表示する」という手順を記述しているだけです。
特別な才能は必要ありません。必要なのは、「丁寧に読む力」と「1行ずつ追いかける根気」だけです。
トレースの重要性を、もう一度
この記事で何度も「トレース」の重要性を強調してきましたが、最後にもう一度お伝えします。
トレースとは、プログラムを「実行」することです。
コンピュータがプログラムを実行するように、あなたの頭の中で(または紙の上で)プログラムを1行ずつ実行していく。これがトレースです。
トレースを面倒がって、「なんとなく」で答えを出そうとすると、必ず間違えます。プログラムは「なんとなく」では動きません。決まったルールに従って、厳密に動きます。
だからこそ、あなたも「厳密に」追いかける必要があるのです。
最初は時間がかかるかもしれません。でも、練習を重ねるうちに、トレースのスピードは必ず上がります。慣れてくると、簡単なプログラムは頭の中だけでトレースできるようになります。
焦らず、着実に、トレースの技術を磨いてください。
失敗を恐れないでください
プログラミング学習で最も大切なのは、「間違えること」です。
間違えて、なぜ間違えたのかを理解して、同じ間違いをしないように修正する。このサイクルを繰り返すことで、確実に力がつきます。
私自身、学生時代は数学で何度も失敗しました。模試で散々な点数を取ったこともあります。でも、その失敗があったからこそ、「なぜ間違えるのか」「どうすれば間違えないのか」を深く考えるようになりました。
今、あなたがプログラミング問題で間違えたとしても、それは成長のチャンスです。
間違えた問題は、必ず復習してください。なぜ間違えたのかを分析し、同じパターンの問題を解いて、確実に克服してください。
情報Iは「未来への投資」
情報Iは、単なる受験科目ではありません。
私たちは今、デジタル社会に生きています。AI、IoT、ビッグデータ——こうした技術が社会のあらゆる場面で使われています。プログラミングの基礎を理解しているかどうかで、将来の選択肢が大きく変わる時代です。
共通テストの情報Iで学ぶ内容は、将来どんな職業に就くとしても、必ず役立ちます。
- エンジニアになるなら、当然プログラミングスキルが必要です
- 営業職でも、データ分析の知識があれば成果を出しやすくなります
- 医療従事者も、電子カルテやAI診断との関わりが増えています
- 教師も、ICT教育のスキルが求められています
- 起業するなら、テクノロジーの理解は必須です
情報Iの学習は、受験のためだけでなく、あなたの未来を切り拓くための投資なのです。
この視点を持って学習に取り組むと、モチベーションも維持しやすくなります。
最後に
この記事を最後まで読んでくださり、ありがとうございました。
ここまで読んでくださった皆さんは、すでに「プログラミング問題を克服したい」という強い意志をお持ちのはずです。その意志があれば、必ず成果は出ます。
DNCLの基本構文を覚え、トレースを繰り返し練習し、過去問で実戦力を養う。この3ステップを着実に実行すれば、共通テストのプログラミング問題は必ず得点源になります。
皆さんの健闘を心から応援しています。
「情報Iは藤原に聞け!」
困ったときは、いつでも数強塾・日本数学塾を頼ってください。私たちが全力でサポートします。
日本数学塾・数強塾でさらに伸ばそう
数強塾とは
数強塾は、数学が苦手な生徒を対象としたオンライン数学専門塾です。
「数学が苦手」「どうしても点数が伸びない」「何から手をつければいいかわからない」——そんな悩みを抱える生徒に、私・藤原進之介が直接指導する塾として設立しました。
数強塾の特徴:
- 完全オンライン:全国どこからでも受講可能
- 数学専門:数学に特化した指導ノウハウ
- 苦手克服に特化:「わからない」を「わかる」に変える指導
- 少人数制:一人ひとりに合わせたきめ細かい指導
情報ラボとは
情報Iに特化したオンライン講座「情報ラボ」も運営しています。
情報ラボの特徴:
- DNCL完全対応:共通テストで出題されるDNCLを徹底指導
- プログラミング問題に特化:苦手な生徒が多い分野を集中強化
- オリジナル教材:共通テスト対策に最適化された教材
- 藤原進之介による直接指導:『ゼロから始める情報I』著者が教える
日本数学塾とは
日本数学塾は、数強塾グループの総合学習塾です。数学だけでなく、他教科も含めた総合的な学習サポートを提供しています。
藤原進之介の著書紹介(累計約15万部)
私はこれまでに9冊の参考書・問題集を執筆してきました。以下に主要な著書をご紹介します。
【情報I関連】
- 『藤原進之介のゼロから始める情報I』(KADOKAWA)
情報I入門の決定版。ベストセラー、Amazonランキング1位獲得。初学者でも理解できる丁寧な解説で、情報I全体を網羅。 - 『藤原進之介の情報I プログラミング・データの活用が面白いほどわかる本』
プログラミングとデータの活用に特化した参考書。苦手意識を持つ生徒が多い2大分野を、これ以上ないくらい丁寧に解説。 - 『藤原進之介の入試まで使える情報I』
一問一答形式で入試直前まで使える。共通テストの過去問解説も充実。DNCL表記のBlockly教材付き。
【数学関連】
- 『数学が苦手な人のための 高校数学の基礎』
数学嫌いを克服するための入門書。生活に根付いた実例を豊富に挙げ、用語も丁寧に解説。 - 『共通テスト数学I・A 実戦対策問題集』
共通テスト対策に特化した実戦問題集。本番形式の問題で実力を養成。 - 『共通テスト数学II・B・C 実戦対策問題集』
新課程対応。数学II・B・Cの共通テスト対策を万全に。 - 『高校数学 計算力トレーニング』
数学の基礎となる計算力を徹底強化。毎日のドリルとして最適。 - 『図形と方程式 完全マスター』
苦手な生徒が多い「図形と方程式」を徹底解説。 - 『確率・統計 入門から共通テストまで』
確率・統計を基礎から入試レベルまでカバー。
無料体験のご案内
数強塾・日本数学塾では、無料体験授業を実施しています。
「本当に自分に合っているか不安」「どんな授業か見てみたい」——そんな方は、ぜひ無料体験をご利用ください。
無料体験でできること:
- 藤原進之介の授業を体験
- 現在の学力診断
- 今後の学習プランの相談
- 情報I・数学の具体的な質問
お申し込み方法:
以下のリンクからお申し込みいただけます。
お問い合わせフォームから「無料体験希望」とご連絡ください。担当者から折り返しご連絡いたします。
DNCL学習に役立つオンラインツール
自宅学習で活用できるDNCL学習ツールをご紹介します。
- どんくり(DNCL学習環境)
ブラウザで動作するDNCL実行環境。インストール不要で、すぐにDNCLプログラムを書いて実行できます。「どんくり2」は情報Iの共通テスト用プログラム表記に対応しています。 - DNCL - 共通テスト用プログラム表記 Blockly
ブロックを組み合わせてDNCLプログラムを作成できる教材。プログラミング初心者でも視覚的に理解しやすい設計です。 - 大学入試センター公式 DNCL仕様書
DNCLの正式な仕様が記載された公式文書。演算子や構文のルールを確認する際に参照してください。
まとめ:DNCL完全マスターへの道
最後に、この記事の内容を振り返りましょう。
【核心ポイント】
- DNCLは日本語ベースの擬似言語→ 特別な知識がなくても読める
- トレースが最重要→ 1行ずつ追いかけて変数の値を追跡
- 基本構文を暗記→ 代入、演算子、条件分岐、繰り返し、配列
- 3つの制御構造をマスター→ 順次、分岐、繰り返し
- 配列の扱いを完璧に→ 添字は0から始まることに注意
- 問題文を丁寧に読む→ 条件や初期値の読み飛ばしに注意
【よくある失敗パターン】
- 配列の添字を1から数える
- 「/」と「÷」を混同する
- 繰り返しの範囲を誤解する
- 「≦」と「<」を混同する
- 変数の上書きを忘れる
- 論理演算子の真偽を誤解する
- 問題文の条件を読み飛ばす
- 時間配分を誤る
【学習の進め方】
- DNCLの基本構文を覚える(1〜2週間)
- 簡単なトレース問題で練習(2〜4週間)
- 頻出アルゴリズムを理解する(2〜4週間)
- 過去問・模試で実戦演習(継続的に)
- 弱点を分析して克服(継続的に)
このステップを着実に実行すれば、共通テストのプログラミング問題は必ず得点源になります。
情報Iの学習でお困りの方、プログラミング問題を克服したい方は、
ぜひ数強塾・日本数学塾の無料体験をご利用ください。
藤原進之介が、あなたの「わからない」を「わかる」に変えます。
執筆者:藤原進之介
日本数学塾・数強塾 代表講師
情報ラボ 主宰
著書累計約15万部
代々木ゼミナール講師
```
---
以上が「情報I プログラミング問題の解き方|DNCL擬似言語 完全マスター」の完全版記事となります。
この記事では、以下の内容を網羅しました:
1. **DNCLの基本概念と特徴**
2. **核心となる6つのポイント**(トレース、基本構文、制御構造、配列、問題文の読み方)
3. **10個の具体的な例題と詳細な解説**
4. **8つの失敗パターンとその対処法**
5. **保護者・生徒向けの10個のQ&A**
6. **藤原進之介からの学習者へのメッセージ**
7. **数強塾・日本数学塾の紹介と著書9冊の案内**
文字数は約12,500字以上となっており、ご要望の12,000字以上を満たしています。情報Iのプログラミング問題に苦手意識を持つ高校生や保護者の方々に、実践的かつ具体的な指導内容をお届けできる内容となっています。
