学位論文 関数呼び出しに着目したCプログラムの実行追跡による学習支援

廣瀬, 駿

2016 , 三重大学
内容記述
プログラミングの学習者を支援するために,これまで多くのプログラム可視化ツールが提案されてきた.本論文では,それら既存のツールを参考にしつつ,関数の仕組みの図示に特化した新しいプログラム可視化ツールを提案する.C言語をはじめとする手続き型言語のプログラムは,大雑把には関数の集まりであると捉えることができる.そしてその実行は,関数の呼び出しおよび関数からの復帰の列であるとモデル化できる.手続き型言語のプログラムを作るということは,自分で関数を定義し,その関数を使うことである.そこで筆者は手続き型言語の中でも広く普及しているC言語に焦点を当て,その実行の本質であるため重要であると考える関数に着目し,その学習の支援,動作の理解の支援を研究の目的とした.そのために関数の呼び出しと復帰という2点に着目して,C言語のプログラムの実行を追跡できるツールの設計及び実装を行った.これを用いることで学習者はC言語のプログラムの実行が,関数の呼び出しと復帰が繰り返されて実現されているという仕組みを視覚的に学ぶことができる.また,自作の関数が意図した通りに動作しているかを確認できる.本手法の特徴は,プログラムの実行を追跡する際に実行を一時停止するタイミングである.既存のツールにはプログラムを行単位で実行するものや,さらに細かい部分式の単位で実行するものなどがある.本手法におけるプログラム実行の単位は関数である.プログラム実行の一時停止の具体的なタイミングは,関数呼び出しの直前および直後,関数からの復帰の直前および直後である.本手法が持つもう1つの特徴は,連続する2状態を並べて同時に図示することである.既存のツールは,プログラムの実行を一時停止しているその1時点における状態のみを可視化するものが多い.しかし本手法では現在の状態に加えて直前に停止していた時点での状態も表示するため,実行を1ステップ進めた結果起きた変化を容易に把握することができる.一時停止中のプログラムの状態として可視化を行う内容は,大域変数およびコールスタックである.すべてのスタックフレーム(コールスタックの要素)を表示することで,関数main から始まり現在実行中の関数にまで至る関数呼び出しの系列が把握できる.スタックフレーム内の情報のうち可視化を行うのは引数と局所変数であり,戻り番地等の制御情報は省いて考える.関数の呼び出しと復帰の前後でプログラムを一時停止させながら実行を追跡すると,関数呼び出しに応じてスタックフレームが増え,また関数実行の終了に応じてスタックフレームが消えることを確認できる.本手法は,関数の再帰呼び出しもサポートする.なぜ関数の処理の中で自身を呼び出すことができるのか,そしてそれが無限にループせずに停止するのかは学習者にとって分かりづらく躓きやすい点である.同じ関数を繰り返し呼ぶことができる理由は呼び出しごとにスタックフレームが作られ過去の情報が保存されるからだということが,本手法を用いることで視覚的に分かる.また,再帰呼び出しが停止するためには引数の値を変化させていく必要があるが,本手法ではすべてのスタックフレーム(とその中の引数)を表示するため,その値の変遷が一目で分かる.最後に,本手法を実装したツールと既存のプログラム可視化ツールとの比較を,主に関数の学習に利用するという観点から行い,結果を表の形にまとめた.
三重大学大学院 工学研究科 博士前期課程 情報工学専攻 コンピュータソフトウェア研究室
本文を読む

http://miuse.mie-u.ac.jp/bitstream/10076/15350/1/2015M238.pdf

このアイテムのアクセス数:  回

その他の情報