DNCL表記の読み方
DNCLは、共通テスト「情報Ⅰ」で使われる日本語寄りのプログラム表記です。実際のプログラミング言語とは少し違いますが、処理の考え方は同じです。
DNCLは「処理の流れ」を読むための表記
DNCLでは、特定のプログラミング言語に依存しすぎないように、「表示する」「もし」「繰り返す」など、日本語に近い表現が使われます。PythonやJavaScriptの文法を知らなくても、変数に値を入れる、条件を判定する、同じ処理を繰り返す、配列の値を取り出す、といった基本動作を読み取れることが大切です。
問題を解くときは、記号を暗記するよりも、各行が何をしているかを短い日本語に直してみましょう。「合計に加える」「条件を満たしたら個数を1増やす」「今までの最大値より大きければ更新する」と読めるようになると、長い問題でも落ち着いて対応できます。
配列と添字
DNCLでも、複数の値をまとめたものとして配列が出てきます。特に説明がない場合、IT1-CODE-POCKETでは添字を0から始める形で扱っています。例えば Nums[0] は最初の値、Nums[1] は2番目の値です。
添字を使う問題では、配列の中身と添字を書き出すことが効果的です。「iを0から要素数-1まで増やす」という繰り返しなら、配列の全要素を順に見ていると判断できます。「i+1」を使う場合は、最後の添字まで進めてよいかを必ず確認しましょう。
条件分岐と繰り返し
「もし 条件 ならば」は、条件を満たす場合だけ処理を実行します。条件には、等しいか、大きいか、小さいか、余りがいくつか、といった比較がよく使われます。例えば「n ÷ 2 の余りが0」は偶数判定です。
「繰り返す」は、同じ処理を何度も行うための表現です。回数が決まっている繰り返しでは、変数がどの値から始まり、どの値まで増えるのかを確認します。条件を満たす間だけ続く繰り返しでは、どの行で条件が変化するかを見ることが重要です。
よくある読み間違い
DNCLで多い読み間違いは、添字を1から数えてしまうこと、条件の「以上」「より大きい」を取り違えること、繰り返しの最後の値を含めるかどうかを見落とすことです。これらは、答えの選択肢を見る前に小さな表を作るだけでかなり防げます。
また、変数名には意味があります。count は個数、total は合計、max や best は最大値や最良値を表すことが多いです。変数名から役割を推測し、更新されるタイミングを追うと、プログラム全体の目的が見えやすくなります。
記号の意味を一覧で覚える
DNCLで使われる記号は多くありません。この表の分だけ覚えれば、まず困りません。
| 記号 | 意味 | 例 |
|---|---|---|
| | ⎿ | 処理のまとまり(字下げの代わり) | 繰り返しや条件の内側を示す |
| ÷ | 割り算(整数どうしは商だけ) | 23 ÷ 4 は 5 |
| % | 割った余り | 23 % 4 は 3 |
| == != | 等しい/等しくない | score == 100 |
| かつ または | 2つの条件の組み合わせ | a >= 15 かつ b >= 40 |
| 要素数( ) | 配列の個数を返す | 要素数(Nums) - 1 が最後の添字 |
| 最大値( ) | 2つ以上の値のうち大きいほう | 最大値(到着, 前の終了) |
23 ÷ 4 = 5 枚、
余りが 23 % 4 = 3 枚です。偶数判定の n % 2 == 0 も、この余りの考え方です。
3つの表記の対応表
同じ処理を DNCL・Python・JavaScript でどう書くかを並べると、 違うのは書き方だけで、考え方は同じだとはっきりします。
| やること | DNCL | Python | JavaScript |
|---|---|---|---|
| 表示 | 表示する(x) | print(x) | console.log(x) |
| 要素数 | 要素数(Nums) | len(nums) | nums.length |
| 条件分岐 | もし 〜 ならば: | if 〜: | if (〜) { } |
| 回数の繰り返し | i を 0 から 3 まで | for i in range(4) | for (i = 0; i <= 3; i++) |
| 条件の繰り返し | 〜 の間繰り返す: | while 〜: | while (〜) { } |
| 余り | n % 2 | n % 2 | n % 2 |
| まとまり | | と ⎿ | 字下げ | 波かっこ { } |
いちばん注意すべきは「回数の繰り返し」の行です。
DNCL の「0 から 3 まで」は両端を含んで4回、
Python の range(4) も4回ですが、書かれている数字の意味が違います
(DNCLは「3まで」、Pythonは「4の手前まで」)。
数字をそのまま読み替えると1回ずれます。
1行ずつ日本語に直す練習
DNCLは日本語に近い表記なので、各行を短い日本語に言い換えるのが有効です。
Nums = [3, 8, 5] count = 0 i を 0 から 要素数(Nums) - 1 まで 1 ずつ増やしながら繰り返す: |もし Nums[i] > 4 ならば: ⎿⎿ count = count + 1 表示する(count)
| 行 | 日本語に直すと |
|---|---|
| Nums = [3, 8, 5] | 3個の数を用意する |
| count = 0 | 数える箱を0にしておく |
| i を 0 から … | 全部の要素を先頭から1つずつ見る |
| もし Nums[i] > 4 | いま見ている値が4より大きければ |
| count = count + 1 | 箱を1増やす |
通して読むと「4より大きい値が何個あるかを数えるプログラム」だと分かります(答えは2)。 プログラム全体の目的を言葉にできれば、選択肢の絞り込みが一気に楽になります。 テーマ別の練習はプログラムの読み方にまとめています。