DNCL2（仮称）の学習環境の実装に関する考察
中西渉
watayan@meigaku.ac.jp
名古屋高等学校

2021 年 8 月 29 日 (SSS2021)

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

1 / 37

はじめに

1

はじめに

2

「情報関係基礎」プログラミング問題の変遷

3

DNCL，DNCL2，Python の比較

4

DNCL2（仮称）の実行環境

5

学習環境に関する考察

6

おわりに

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

2 / 37

はじめに

1

はじめに

情報関係基礎センター試験等の数学②での選択科目「情報」担当者が注目

1997 年度以降の全問題公開（情報入試委員会）
DNCL という擬似言語が使われてきた
2025 年度入試
共通テストに「情報」導入が検討中決定
試作問題，サンプル問題を公開（大学入試センター）
従来の DNCL と少し違う擬似言語…DNCL2?

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

3 / 37

はじめに

DNCL2（仮称）に対応した学習環境について考察
2
過去問の整理3
DNCL，DNCL2，Python の比較
4
学習環境の比較
5
考察→PyPEN で行うべき実装は?

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

4 / 37

「情報関係基礎」プログラミング問題の変遷

1

はじめに

2

「情報関係基礎」プログラミング問題の変遷

3

DNCL，DNCL2，Python の比較

4

DNCL2（仮称）の実行環境

5

学習環境に関する考察

6

おわりに中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

5 / 37

「情報関係基礎」プログラミング問題の変遷

2「情報関係基礎」プログラミング問題の変遷

プログラミング問題の比較（2005 年まで必答，2006 年から表計算との選択）（追試験は除く）

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

6 / 37

「情報関係基礎」プログラミング問題の変遷

2.1

言語

言語

「読めばわかる」は継続●● 2011

2025

DNCL2（仮称）?

「センター試験用手順記述標準言語(DNCL)の説明」● 2003 DNCLと命名」
る ● 2002 仕様
かわば
め ● 1999 「〜を実行する」「〜を繰り返す」

読「 ●●1998 日本語の擬似言語 「〜はここまで」

1997

BASIC，COBOL，Pascal

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

7 / 37

「情報関係基礎」プログラミング問題の変遷

2.2

題材

題材

題材，構文項目は表 1 参照
題材のカブりがない!
パターン描画
Hit and Blow
二分探索
金種計算
文字列探索
小町算
ライフゲーム
計算ブロック
素因数分解
漢数字に変換分銅（符号付 3 進法） 営業時間最適化
ボードゲーム
荷物の箱詰め迷路（袋小路）グループ分けすごろく
シーザー暗号中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

配列のマージ
迷路（左手法）じゃんけん
ソート
得点集計・順位
太鼓の楽譜
三角形の個数
宝探しゲームドント方式
2021 年 8 月 29 日 (SSS2021)

8 / 37

DNCL，DNCL2，Python の比較

1

はじめに

2

「情報関係基礎」プログラミング問題の変遷

3

DNCL，DNCL2，Python の比較

4

DNCL2（仮称）の実行環境

5

学習環境に関する考察

6

おわりに

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

9 / 37

DNCL，DNCL2，Python の比較

3

DNCL，DNCL2，Python の比較

言語の仕様

DNCL 「センター試験用手順記述標準言語 (DNCL) の説明」
DNCL2 不明
試作問題・サンプル問題から推測
Python Version3 系
比較対象に Python を含めた理由
文科省「教員研修用教材」は Python 版が先行
他言語版は Python 版の「翻訳」

DNCL2 が Python の影響を受けているっぽい中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

10 / 37

DNCL，DNCL2，Python の比較

3.1

文字列

文字列

文字列リテラルの書き方

DNCL「」または""

中西渉 (名古屋高等学校)

DNCL2""

DNCL2（仮称）の学習環境の実装に関する考察

Python""または''2021 年 8 月 29 日 (SSS2021)

11 / 37

DNCL，DNCL2，Python の比較

3.2

出力

出力

出力

DNCL

DNCL2

《値》を表示する表示する (《値》)《値》を改行なしで表示する

Pythonprint(《値》)

複数の値を表示する場合…

DNCL 「と」で連結
DNCL2 コンマ区切り
Python コンマ区切り
中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

12 / 37

DNCL，DNCL2，Python の比較

3.3

ブロック文

ブロック文

ブロック文（例として分岐）

DNCL

DNCL2

Pythonもし《条件》ならば｜《処理》を実行し，そうでなければ｜《処理》を実行するもし《条件》ならば：└《処理》
そうでなければ：└《処理》

if 《条件》:
《処理》
else:
《処理》

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

13 / 37

DNCL，DNCL2，Python の比較

3.4

演算子等の記号演算子等の記号代入，比較，四則演算

DNCL
代入
比較

除算Python

DNCL2
←
＝≠
≦
/と ÷ を区別

中西渉 (名古屋高等学校)

代入
比較

除算

=??
!=<=??

DNCL2（仮称）の学習環境の実装に関する考察

=
==
!=
<=
除算 /と//を区別
代入
比較

2021 年 8 月 29 日 (SSS2021)

14 / 37

DNCL，DNCL2，Python の比較

3.5

論理演算

論理演算

論理演算

かつまたはでない

DNCL2
andornotPythonandornot

左から結合結合については不明

結合は明確なルールあり

DNCL

DNCL は「読めばわかる」を目指すはず中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

15 / 37

DNCL，DNCL2，Python の比較

3.6

後判定のループ

後判定のループ

後判定のループ

DNCL

DNCL2

Python

繰り返し，｜《処理》を，《条件》になるまで繰り返す

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

16 / 37

DNCL2（仮称）の実行環境

1

はじめに

2

「情報関係基礎」プログラミング問題の変遷

3

DNCL，DNCL2，Python の比較

4

DNCL2（仮称）の実行環境

5

学習環境に関する考察

6

おわりに

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

17 / 37

DNCL2（仮称）の実行環境

4

DNCL2（仮称）の実行環境見たことがあるものを列挙

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

18 / 37

DNCL2（仮称）の実行環境

4.1

どんくりどんくり（画像は参考文献 [9] より）

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

19 / 37

DNCL2（仮称）の実行環境

4.2

つちのこ

つちのこ

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

20 / 37

DNCL2（仮称）の実行環境

4.3

PicthonPicthon中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

21 / 37

DNCL2（仮称）の実行環境

PyPEN

4.4 PyPEN

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

22 / 37

学習環境に関する考察

1

はじめに

2

「情報関係基礎」プログラミング問題の変遷

3

DNCL，DNCL2，Python の比較

4

DNCL2（仮称）の実行環境

5

学習環境に関する考察

6

おわりに

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

23 / 37

学習環境に関する考察

5

学習環境に関する考察

Web ブラウザ上で実行できるインストール不要
方言（細部の違い）がある
各環境を比較
→PyPEN ではどのようにすべきかを考える

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

24 / 37

学習環境に関する考察

5.1

演算子記号

演算子記号

代入は「←」→「=」
比較（等値）は「=」→「==」

PyPEN も揃えるべきか（他環境は既にそうなっている）
揃えたい
既にある資料との互換性が…
でも揃えちゃいました中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

25 / 37

学習環境に関する考察

5.2

論理演算

論理演算

「かつ」「または」「でない」→「and」「or」「not」
左から結合 → 不明

PyPEN も揃えるべきか（他環境は既に…）
揃えたい
既にある資料との互換性が…
でも揃えちゃいました中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

26 / 37

学習環境に関する考察

5.3

配列の初期化

配列の初期化[《値》,《値》,...] の構文
他にもどんくり 1,2,3...100 で等差数列で初期化
つちのこ Python の range に似た区間オブジェクト
PyPEN 「《個数》個の《値》」《配列》*《整数》や《配列》+《配列》も先週実装「配列《変数名》を《値》で初期化する」などの構文↑要素数の指定がない…どうやって実装する？
どんくり（DNCL）の配列みたいな振る舞いをするクラスを作る?

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

27 / 37

学習環境に関する考察

5.4

比較演算子の結合比較演算子の結合

5>4>3 の扱い
C (5>4)>3 → 1>3 → 0
PHP エラー（結合させない）
Python 5>4 and 4>3 → True and True → True
どういう扱いをすべきか
Picthon Python 風
つちのこ C 風（ただし True>3 となってエラー）
PyPEN PHP 風→ Python 風に変更
しかし Python 風に「慣れて」大丈夫？
他にこんなことする言語ってあるんだろうか…DNCL2 ではどうなるんだろう…

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

28 / 37

学習環境に関する考察

5.5

二次元配列の添字

二次元配列の添字
DNCL a[b,c]Python a[b][c]DNCL2 不明

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

29 / 37

学習環境に関する考察

5.6

elifelif

DNCL elif にあたる構文あり
DNCL2 不明
つちのこ 「そうでなくもし《条件 2》ならば：」
PyPEN フローチャートにしづらくて未実装フローチャートを諦めるか?
「俯瞰するのにほしい」という生徒もいる
簡単なものだけ対応すればいいのかも
自作関数・手続きにさえ対応してないし

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

30 / 37

学習環境に関する考察

5.7

for infor inPython の「for 《変数》 in 《配列》」
Picthon 《配列》の要素《変数》について繰り返す
つちのこ 《配列》の要素《変数》について繰り返す
PyPEN 未実装（実装したい）《配列》の要素《変数》について繰り返す（先週実装しました）
語順が逆なのが玉に瑕

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

31 / 37

学習環境に関する考察

5.8型型

Python のリスト，タプル，辞書，集合
Picthon や「つちのこ」では実装
a,b=b,a みたいなこともできる↑同様のことができる言語はいくつもある（5>4>3 みたいな心配はいらないだろう）

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

32 / 37

学習環境に関する考察

5.9

inin

Python の「《値》 in 《配列》」PyPEN 《配列》の中に《値》《値》 in 《配列》（先週実装しました）
Picthon 《値》 in 《配列》
語順を取るか，日本語を取るか…

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

33 / 37

学習環境に関する考察

5.10

組み込み関数組み込み関数「切り捨て」「差分」「要素数」などの組み込み関数がある前提↑問題によって違う…あらかじめ用意することはできない↑問題に合わせてコードを書いて実装すればいい

sum とか sort みたいな関数を予め作っておくべきか
それらの処理を「自分で書く」必要はあるか
そういうものは「あるだろう」と感じる嗅覚が必要なのでは?

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

34 / 37

学習環境に関する考察

5.11

その他

その他

global 文は必要か
三項演算子は？

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

35 / 37

おわりに

1

はじめに

2

「情報関係基礎」プログラミング問題の変遷

3

DNCL，DNCL2，Python の比較

4

DNCL2（仮称）の実行環境

5

学習環境に関する考察

6

おわりに

中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

36 / 37

おわりに6

おわりに試作問題・サンプル問題を元に DNCL・DNCL2 について考察した
DNCL2 の学習環境はいくつもある→ 紙の上の勉強だけでは終わらない
生徒が触れる言語・環境はさまざま→DNCL2 や Python に縛られてはいけない

DNCL・DNCL2 の根幹は「読めばわかる」
その思想を見失わないように PyPEN の実装を進めたい中西渉 (名古屋高等学校)

DNCL2（仮称）の学習環境の実装に関する考察

2021 年 8 月 29 日 (SSS2021)

37 / 37