「情報関係基礎」プログラミング問題で省略されている変数初期化部分に関係する
WaPEN，PyPEN の実装
中西渉
watayan@meigaku.ac.jp
名古屋高等学校2021-12-05

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

CE162-192021-12-05

1 / 33

はじめに

1

はじめに

2

DNCL の概要

3

関連研究
DNCL 学習環境
センター試験等の問題で省略された部分

4

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
PyPEN から WaPEN への移植
長さの決まっている配列
長さの決まっていない配列
2 次元配列Web ストレージを用いた File I/O（もどき）5

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

CE162-192021-12-05

2 / 33

はじめに

1.

はじめに「なでしこ」が DNCL 対応（2021/10/13 プレスリリースより）
中西渉 (名古屋高等学校)

CE162-192021-12-05

3 / 33

はじめに対応表で書き換えればいいだけ（なでしこ 3 DNCL 対応表より）そのままでは動かない？
→でもセンター試験等の問題自体，そのままでは動かない∵ 初期化が省略されている
中西渉 (名古屋高等学校)

CE162-192021-12-05

4 / 33

はじめに

本稿の主旨
省略された初期化部分を調査
そのために WaPEN，PyPEN に施した追加実装

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

CE162-192021-12-05

5 / 33

DNCL の概要

1

はじめに

2

DNCL の概要

3

関連研究
DNCL 学習環境
センター試験等の問題で省略された部分

4

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
PyPEN から WaPEN への移植
長さの決まっている配列
長さの決まっていない配列
2 次元配列Web ストレージを用いた File I/O（もどき）5

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

CE162-192021-12-05

6 / 33

DNCL の概要

2.

DNCL の概要

DNCL
センター試験等「情報関係基礎」プログラミング問題で使用
日本語を基本とした擬似言語
言語仕様は Web で公開（共通テストに合わせて更新）
変数は宣言不要
配列（添字は 1 から，たまに 0 から）
臨時で関数が用意されることもある

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

CE162-192021-12-05

7 / 33

DNCL の概要

if 相当

while–wend 相当

do–until 相当

もし〜ならば｜《処理》そうでなければ｜《処理》を実行する〜の間，｜《処理》を繰り返す

繰り返し，｜《処理》を，〜になるまで実行する

for–next 相当《変数》を《値》から《値》まで《値》ずつ増やしながら，｜《処理》を繰り返す

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

CE162-192021-12-05

8 / 33

DNCL の概要

2025 年度からの共通テスト←試作問題，サンプル問題が公表「新」DNCL（Python 風?）…詳細は不明
if 相当

while–wend 相当

もし〜ならば：《処理》
そうでなければ：
《処理》

〜の間：
《処理》

do–until 相当

for–next 相当《変数》を《値》から《値》まで《値》ずつ増やしながら：《処理》

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

CE162-192021-12-05

9 / 33

関連研究

1

はじめに

2

DNCL の概要

3

関連研究
DNCL 学習環境
センター試験等の問題で省略された部分

4

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
PyPEN から WaPEN への移植
長さの決まっている配列
長さの決まっていない配列
2 次元配列Web ストレージを用いた File I/O（もどき）5

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

CE162-192021-12-05

10 / 33

関連研究

3.1

DNCL 学習環境

DNCL 学習環境

Java アプリケーション
PEN 大阪学院大学，大阪市立大学で開発
PenFlowchart PEN にフローチャートを付加
Java アプリケーションゆえに…
JRE 必要インストール必要→ Web アプリケーションが開発される

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

CE162-192021-12-05

11 / 33

関連研究

DNCL 学習環境

どんくり

C に似た構文の言語との相互変換
変数一覧機能プロファイル機能

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

CE162-192021-12-05

12 / 33

関連研究

DNCL 学習環境

wPEN
短冊プログラミング
作問・解答機能中西渉 (名古屋高等学校)

CE162-192021-12-05

13 / 33

関連研究

DNCL 学習環境

XTetraビジュアル・タイピング両対応
プロファイル機能
JavaScript への変換

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

CE162-192021-12-05

14 / 33

関連研究

DNCL 学習環境

WaPEN
コード ↔ フローチャート
サーバ不要（ローカルで実行可能）中西渉 (名古屋高等学校)

CE162-192021-12-05

15 / 33

関連研究

DNCL 学習環境新 DNCL に近づけた版も…
どんくり → 新 DNCL 対応版
wPEN→ 新 DNCL 対応版
XTetra→ つちのこ
WaPEN→PyPEN

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

CE162-192021-12-05

16 / 33

関連研究

3.2

センター試験等の問題で省略された部分

センター試験等の問題で省略された部分

配列の初期化部分は問題に掲載されないことが多い（表 1 参照）「どんくり」は 2008〜2018 年度問題をサンプルに採用

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

CE162-192021-12-05

17 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装

1

はじめに

2

DNCL の概要

3

関連研究
DNCL 学習環境
センター試験等の問題で省略された部分

4

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
PyPEN から WaPEN への移植
長さの決まっている配列
長さの決まっていない配列2 次元配列
Web ストレージを用いた File I/O（もどき）5

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

CE162-192021-12-05

18 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
PyPEN から WaPEN への移植

4.1

PyPEN から WaPEN への移植

最近 PyPEN にかかりきり→ WaPEN の開発が停滞

PyPEN を WaPEN に移植（構文解析などを除く）→その結果両方での新機能実装が容易に互換性の放棄
変数宣言の廃止→本来の DNCL には近づいた

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

CE162-192021-12-05

19 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
長さの決まっている配列

4.2

長さの決まっている配列

PEN…配列への代入が 1 つずつ
PenFlowchart…まとめての代入をサポート
PENPenFlowchartte[0] ←「グー」
te[1] ←「チョキ」
te[2] ←「パー」

te ←{「グー」,「チョキ」,「パー」}

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

CE162-192021-12-05

20 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
長さの決まっている配列

WaPEN での書き方 1
te ← [「グー」,「チョキ」,「パー」]
WaPEN での書き方 2
te ← []
te に「グー」を追加する
te に「チョキ」を追加する
te に「パー」を追加する

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

CE162-192021-12-05

21 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
長さの決まっている配列

さらに…

a ← [0,0,0,0,0,0,0,0,0,0]b ← 10 個の 0c ← [0]*10
細かい違い：

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

CE162-192021-12-05

22 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
長さの決まっていない配列

4.3

長さの決まっていない配列

未実装
PyPEN…Python のコードに「直訳」したいので実装しない
WaPEN…実装したい「どんくり」が実装の参考になりそう中西渉 (名古屋高等学校)

CE162-192021-12-05

23 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
2 次元配列4.42 次元配列

2018 年度問題の初期化部分
Tetra 版（当時の）WaPEN 版

複数行での初期化が可能

複数行での初期化が不可能

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

CE162-192021-12-05

24 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
2 次元配列コンマ後などの改行を許すよう拡張
当時の WaPEN 版

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

今の WaPEN 版

CE162-192021-12-05

25 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
Web ストレージを用いた File I/O（もどき）4.5

Web ストレージを用いた File I/O もどき

PEN，PenFlowchart…File I/O アリ→ Web アプリケーションへの移植は？
ローカルファイルは扱えない
WaPEN や PyPEN はサーバを絡ませたくない中西渉 (名古屋高等学校)

CE162-192021-12-05

26 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
Web ストレージを用いた File I/O（もどき）試作問題第 5 問（省略）は千数百文字

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

CE162-192021-12-05

27 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
Web ストレージを用いた File I/O（もどき）省略しないで書くと…

〜（略）〜
外部ファイルから読み込ませたい→ Web ストレージを用いた File I/O（もどき）を実装

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

CE162-192021-12-05

28 / 33

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
Web ストレージを用いた File I/O（もどき）↓中西渉 (名古屋高等学校)

CE162-192021-12-05

29 / 33

おわりに

1

はじめに

2

DNCL の概要

3

関連研究
DNCL 学習環境
センター試験等の問題で省略された部分

4

センター試験等のプログラミング問題における省略部分および
WaPEN と PyPEN の追加実装
PyPEN から WaPEN への移植
長さの決まっている配列
長さの決まっていない配列
2 次元配列Web ストレージを用いた File I/O（もどき）5

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

CE162-192021-12-05

30 / 33

おわりに

5.

おわりに

WaPEN，PyPEN に追加実装→省略されてきた初期化部分への対応「どんくり」や Tetra に追いつこうとしただけではあるが中西渉 (名古屋高等学校)

CE162-192021-12-05

31 / 33

おわりに高野ら [23]
情報系の標準的な常識からすると，わざわざ曖昧さを残しておくのは不自然である。ここからは著者らの推測の範囲に過ぎないが，ひとつ考えられる理由として，DNCL の設計者は，DNCL を独立したプログラミング言語として学習することを嫌がっていると考えられる。つまり，プログラミング教育は，世の中に実在するプログラミング言語で実習することを望み，（略）水野 [24]
少し懸念していることは，DNCL だけを使ってプログラミングの授業が行われることがないように，ということです。やはり授業
では，教科書で使われている実用的なプログラム言語を使っていただきたい。

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

CE162-192021-12-05

32 / 33

おわりに

DNCL だからダメ？
ダメなのは DNCL にとどまること
導入の一方法としてわからなくなったときに振り返る先としてということなら意味はあるのではないか
Python で書き方に迷ったときのアンチョコになればいい中西渉 (名古屋高等学校)

CE162-192021-12-05

33 / 33