情報処理学会第 79 回全国大会

2ZC-01制御構造における変数の値変化と役割の理解を目的とした独自の図表現によるプログラミング学習支援の研究
飯田和佐†

大沢卓†

新井聖也†

水谷晃三†

荒井正之†

帝京大学理工学部ヒューマン情報システム学科†④についても 1 ステップごとにプログラムソースと対応させながら理解する必要があり，初学者
プログラミング初学者を対象にして，プログにとっては負荷が大きい．複雑な制御構造になラムの制御構造の理解促進を目的とした研究がるとトレース行が増えるデメリットもある．
行われている[1]．本研究では，条件分岐の中にフローチャートでは①②の理解は比較的容易
反復処理があったり，多重の反復処理があったであるが，複雑な制御構造になると図も複雑にりするなどの複雑な制御構造の理解を促進する
なりかえって理解しにくくなる．④についてもために，独自の図を考案してこの図を用いた学
フローチャートだけでは理解しにくく，フロー習支援ツールを開発する．
チャートとソースコードを対応付けて理解する
2. 研究背景と新たな表現方法の検討能力も必要になり初学者には負担が大きい．
2.1 制御構造の理解のレベル
また，トレース表やフローチャートに共通す
初学者がプログラムの制御構造を理解するとき，その理解度に適した学習支援が必要となる． る問題点として変数のスコープの表現がないことがあげられる．変数のスコープを正しく把握
本研究では，プログラムの制御構造の理解のレしていないと，制御構文とそれによって影響をベルを次のように定義した．
受ける変数の関係や，変数の値の変化を理解し①プログラムの全体構成の理解：フィールド変
にくく⑤の理解に到達できないと考えられる．
数，メソッド，クラスを列挙できる程度の理解
2.3 独自の図による表現の検討②全体的な処理の流れの理解：プログラムの開前述の問題点を踏まえ，独自の図による表現
始から，終了までの大まかな流れを把握できる方法を検討した．具体例を図 1 に示す．
程度の理解
本提案の図は，変数名，この変数と関係のあ③制御の概念の理解：連接，条件分岐，反復のる行を示すマーク（以下関係行マーカと呼ぶ），それぞれの制御構造についての（特定のプログ
スコープの 3 つの基本要素から構成される．これ
ラム言語に依存しない）概念的な理解らを一組としてプログラムに必要な変数の個数④プログラムにおける制御構文の（文法上の）分，横に並べて表現する．また，ブロックごと
意味の理解：プログラムソース上でのそれぞれに図の背景を色分けして表現する．本案では，の制御構造の理解
メソッドは橙，条件分岐はピンク，反復処理は⑤変数の値の変化や制御構造の役割の理解：そ黄緑で表現しているが，多重の反復処理などでれぞれの変数や制御構造の役割，変数の値がどは色の明度を変えるなどの工夫も考えられる．のような影響を受けて変化するかの理解
さらに，デバッガによるプログラム実行の際
本研究では⑤のレベルに到達するための方法には，変数の値の変化と実行位置を表現する．
を検討している．
実行位置を赤線で表現し，更にその位置での変2.2 トレース表やフローチャートによる表現方法
数の値を，スコープを表す縦棒と赤線が交わるの問題点位置に表示する．例えば図 1 において，(b)のス
既存研究の例として，トレース表やフローチ
テップ実行では変数 fact に 1 が代入されたことがャートをわかりやすく表現することを試みた研わかる．このとき，変数 x と n の変数値も表示さ究がある[2,3,4] ．トレース表ではプログラムソーれているが，fact には関係行マーカがあるため把スの 1 ステップごとに変数値を書きだしていく方握しやすくなっている．
法で変数の値の変化を可視化する．ステップ単以上により⑤の理解を促す効果が期待できる．
位で理解できるようになるが，①②に対しては
3. 支援ツールの試作
直感的にはわかりにくく理解しにくい．また，
2 章で述べた独自の図による学習支援を実現す
Programming Learning Tool for Understanding the Value
る た め に ， Processing 言 語 を 対 象 と し た PDE
Changing and the Role of a Variable in Control Structures.
†Kazusa Iida, Suguru Ohsawa, Seiya Arai, Kozo Mizutani,（Processing Development Environment）上の支援Masayuki Arai, Department of Human Information Systems,ツールを試作することとした．支援ツールの動Faculty of Science and Engineering, Teikyo University.

1. はじめに

4-643

Copyright 2017 Information Processing Society of Japan.
All Rights Reserved.

情報処理学会第 79 回全国大会

fact

ixn

int x = 5;

変数名public void setup(){f(x);}void f(int n) {int fact = 1;
if (n == 0)
println(fact);
else {for (int i = n; i > 0; i--){fact = fact * i;}println(fact);}}

(a)

5

fact

条件

5
変数の値

関係行マーカスコープixnfact条件

int x = 5;

int x = 5;

public void setup(){f(x);}public void setup(){f(x);}void f(int n) {5
1
int fact = 1;
if (n == 0)
println(fact);
else {for (int i = n; i > 0; i--){fact = fact * i;}println(fact);
ステップ実行時の表現イメージ
}
}

(b)

5i

void f(int n) {int fact = 1;
1
if (n == 0)
println(fact);
else {for (int i = n; i > 0; i--){fact = fact * i;}println(fact);
}
}

xn

条件

5

5

false

(c)

図 1. 独自の図表現によるプログラム構造の可視化
作概要を図 2 に示す．PDE 上でソースを作成し，支援ツールを起動すると，支援ツール上で構文解析を行い，変数名や行番号を取得し，その情報を用いて図を描画する．PDE のデバッガ機能を使用すると実行が図中に表示され，同時に変数の値が表示される．現段階では Processing の静的スケッチに限定しているが，将来的には動的スケッチも対象にする予定である．

4. 考察
フローチャート，トレース表，本提案の図について制御構造の理解①～⑤に対する理解の容易性を主観的に評価した．その結果を表 1 に示す．
図 2. PDE と試作ツールの実行画面例
前述したように，①②においてトレース表は
表 1. 制御構造の理解における比較各行の処理を追っていかなければならず全体的フローチャート トレース表
提案する図な制御構造は把握しにくい．フローチャートは①△×○
複数のメソッド呼び出しを伴う場合把握しにく②○△○
くなるが，本提案図は変数スコープやブロック③※1－－－ごとの色分けにより直感的に把握しやすい．
④○○○⑤においてフローチャートは変数の値の変化⑤×※2△△○：理解できる △：理解しにくい ×：理解できないまでは図そのものからは理解できないと考えら※1：➂はプログラムにおける制御構造の理解の前提となる理れる．トレース表は値の変化は分かっても，ど解レベルであるので比較対象外とした．
この制御で変化しているかを判断するにはソー※2：フローチャートを発展させたビジュアルトレースツールなどでは△ ．
スコードの行番号と照らし合わせて判断しなけ性について述べた．
ればならない．また，いずれの表現方法においても各変数と制御構造の役割までは理解できな参考文献
いと考えられるため△とした．
[1] Juha Sorva, Visual Program Simulation in Introductory Programming Education, Aalto University
しかしながら，提案する図では各変数のスコ
publication series, 2012.
ープやブロックを示しているほか，関係行マー[2] 古宮誠一, 今泉俊幸, 橋浦弘明, 松浦佐江子, プカがあることにより，他の表現方法よりも⑤のログラミング学習支援環境 AZUR-ブロック構レベルの理解を促進する効果が高いと考えられ造と関数動作の可視化による支援-, 研究報告
る．以上のことから，本提案の図による表現方
ソフトウェア工学(SE),
pp.1-8, 2014.
法は優位性があると考えられる．
[3]
森田昌樹,
香川考司,
WebGLとジェスチャー認
5. おわりに識デバイスを用いたプログラミング例題提示
本研究では，プログラミング初学者を対象とシステムの開発, 第 39 回教育システム情報学
した，プログラムの制御構造の理解促進を目的
会全国大会講演 論文集, pp391-392, 2014.とする独自の図による新しい表現方法を検討し[4]
荒井正之,プログラミング初学者のトレース能た．Processing の静的スケッチを対象とした支援力の修得を目的とした学習支援システム,Eツールを試作するとともに，本提案手法の優位
Learning 学会 論文誌, Vol.10, pp.54-62, 2010.

4-644

Copyright 2017 Information Processing Society of Japan.
All Rights Reserved.