C 言語におけるポインタ学習支援システムの提案

C 言語におけるポインタ学習支援システムの提案
A proposal on Pointer learning supporting system in the C programming language
情報システム構築学講座 0312011091 高間木隼人
指導教員:佐々木淳 高木正則 山田敬三
1.
はじめに
間可視化によるプログラミング学習支援[3]を
プログラミング言語の中でもC言語は現在
提案しており、作成したプログラミングに対
でも人気の言語であり実際の開発現場での利
してデバッガとして機能し現在のアドレス空
用率も高い.また大学などの教育現場などで
間を平面空間に可視化することをおこなって
もよく学習されている.しかしC言語には参
いる.
考書などでも「名高い難所[1]」と呼ばれるポ
しかしどちらの研究でも簡単な命令文の可
インタやアドレスの概念がありそこでつまず
視化などしか行われておらずポインタの理解
く人も少なくない.
に着目したものではない.
プログラムを理解するためにはプログラム
の内容を図やイメージで表すことが有効であ
3.
既存の学習教材
C 言語学習教材「e-school[4]」などの多く
り、既に様々な可視化を行った学習支援シス
テムが提案されている.しかし,ポインタに
の教材は C 言語のプログラムを書くための知
着目した可視化は行われていない.
識を音声やイラスト,演習問題などで学習で
本研究では、まず従来の学習支援システム
きるものが多い.
の課題と実際に利用されているC言語の学習
しかし既存の学習教材では多くのポインタ
教材について調査する.次に、調査した内容
の用途に対して単元の問題に対する課題や演
からポインタ学習に対してより有効な学習手
習問題などが少なく,理解するのに十分な学
法を考察する.本稿では、調査した教材の特
習ができない.
徴・有用性とポインタに特化した学習教材の
支援システムについて提案する.
4.
提案システム
4.1.
2.
既存研究
問題解決手法の検討
書籍[5]ではポインタの学習において以下の
プログラミング学習において、ソースコー
ように述べられている.1) 図やイメージから
ドの可視化を行った研究はいくつかある.大
学習したほうが理解しやすい.2) ポインタそ
谷らは可視化によるプログラミング言語初学
のものの難しさよりもポインタと配列や構造
者支援システム[2]を提案し,C言語の基本的
体などのほかの要素とかかわるときが最も理
な命令文を読み取り可視化を行っている.こ
解しにくい.
の研究では可視化とともにエラーを解析しエ
これらからポインタを理解するためにはポ
ラー解説機能を付けることで初心者でもわか
インタと配列やポインタと構造体などの要素
りやすい学習を可能にしている.
を図やイメージとしてとらえることができる
また小池らはプログラム実行時のメモリ空
ようになるのが理解するための初めの段階で
あると考える.
ポインタを理解するためには以下のような
する.
1. 問題の出題:
段階があると考えた.
1. ポインタについて図やイメージとして
とらえることができる段階.
初回システム利用時にあらかじめ設定した
問題に解答してもらう.
2. 理解判断
2. 図やイメージとしてとらえたものをコ
ードに変換することができる段階.
3. コードに変換したものをプログラム中
に組み込めるようになる段階.
正誤情報からどこの分野が苦手なのかポイ
ンタをイメージとしてとらえられているかを
判断する.
3. 学習教材
本研究では特に 1 と 2 段階について理解させ
分析した結果から学習者に合わせたポインタ
ることを目的とし,それを支援するためのシ
を学ぶための学習教材を提示する.
ステムを提案する.
5.
4.2.
提案システム概要
システムでは,初めにポインタについて図
おわりに
本研究ではポインタを学習するための学習
支援システムを提案した.ソースコードを図
やイメージでとらえることができているの
やイメージにしたり,考えた図やイメージを
か,図やイメージからコードを書くことがで
ソースコードにすることを意識して考えさせ
きるのかを「ポインタと配列」
「ポインタと構
たりすることにより,ポインタの理解につな
造体」などの要素別に選択形式問題によって
がると期待している.
判断する.
今後は提案システムを具体化し,システム
次に,システム上で学習者から得られた上
利用することによる学習効果を評価するまた
記の正誤情報をもとに,学習者に合わせた学
より理解しやすいイメージとその提示方法に
習教材を生成し,提供する.
ついても検討を進める.
4.3.
参考文献
学習教材設定の方法
あらかじめ作成した問題に対して,理解す
るのに必要な知識と出題した問題を紐づけ
し,間違えた際には,紐づけしておいた学習
を提示するようにする.
たとえば A という問題が構造体とポインタ
を図やイメージとしてとらえられているか見
1) 小林健一郎:カーニハン&リッチ:「プログ
ラミング言語Cを読む」
,講談社(2006)
2) 大谷 梓,須藤 智,恩田 憲一:
「可視化
によるプログラミング言語初学者支援シ
ステム」,全国大会講演論文集 2012(1) ,
741-743,2012-03-06
る問題の場合,その問題には構造体の知識,
3) 小池 伸弥,郷 健太郎:
「プログラム実行
ポインタの知識,ポインタと構造体をイメー
時のメモリ空間可視化によるプログラミ
ジとしてとらえる方法をあらかじめ必要な知
ン グ 学 習 支 援 」, 全 国 大 会 講 演 論 文 集
識として登録しておき,間違えた場合にはそ
2012(1) ,183-185,2012-03-06
れを学習できる教材を提供する.
4) RENESAS : e-school/C 言語入門コース
5) 朝井 淳
4.4.
動作の流れ
以下に本提案システムの動作の流れを説明
ポインタが理解できない理由
技術評論社(2011)