北海道地区

教育システム情報学会 2014年度学生研究発表会

カードを利用したプログラミング学習支援システムの開発
Development of an Interactive System for Programming by Choosing and SettingCards
西山 圭太*， 倉山 めぐみ*
Keita NISHIYAMA*， Megumi KURAYAMA**函館工業高等専門学校* National Institute of Technology, Hakodate College
Email: k_n_infinty914@yahoo.co.jp
あらまし：近年，プログラミングに対する学習支援システムの提案が行われている．しかし，提供される問題のレベルが極端な事や，プログラムがどんな処理をしているのか理解するのは難しい．本研究では日本語を利用して学習者がプログラミングを行い，Ｃ言語との対応を見せる事で学習を進めていく支援システムを提案する．システムでは日本語が書かれたカードが与え，それらのカードを組み立てていくことでプログラミングを行いシステムが診断しフィードバックする．
キーワード：プログラミング学習，カード選択方式，日本語，構造の構築

1.

はじめに初学者がＣプログラムを記述できないのは文法記述の知識が少ない事ではなく，「問題の意味は理解できるが，それを脳内でＣ言語へ変換できない」という点にある(1)．つまり，日本語とＣ言語の 1 対 1 対応が出来ていないのである(4)．
本研究のシステムでは，C 言語が苦手な学習者に日本語と C 言語の 1 対 1 対応を理解させるために，通常のプログラミング演習に「日本語でのプログラム記述」を加え，日本語が書かれたカードを用いてプログラミングでき，正しい日本語が書かれたカードを学習者により選択された場合のみ，正解のＣ言語のプログラムを表示させるようなシステムを構築する．

Ｃ言語は自由度，学習性，可搬性に優れており，システム，アプリケーション開発など，多岐に渡り使用されている．そのため，産業界から学校でのプログラミング技術者の育成が強く求められている．
現状の多くの学校で行われている学習法は，教科書を用いる文法教育とコンピュータを用いて学習するプログラミング演習の 2 つによって構成されている．文法教育は教科書やインターネットを用いて文法知識を習得する学習法であり，プログラミング演
習は文法教育で得た知識を使い実際にプログラミングを行い，より知識を深めるための学習である．しかし，文法教育とプログラミング演習にはそれぞれ欠点がある．文法教育には，演習を行わなければ知識が定着しない事や，自学自習をしても学校で習うよりはるかに時間がかかってしまうという点が挙げられ，プログラミング演習には理解不足の学生に対するケアや採点が間に合わないなどの教員への負担がとても大きく，演習中一つでも躓いてしまったら先に進めずプログラムが組めなくなり向上心が失われるおそれがある(1)(2)(3)．しかし文法教育とプログラミング演習を同時に行う事が出来ればこの短所は解消できる．

2.

提案するシステム

2.1 システム概要
今回作成したシステムのおおまかなフローチャー
トを図 1 に示す．
問題構成画面は図 2 のような形になっており，画面上部に出題する問題が記述されており，画面左にどのような手順で C 言語を組めばいいか分かる日本語が記述されている．この部分が日本語でのプログラム記述となる．その空欄に画面右にあるカード群から正解だと思われるカードをドラッグアンドドロップで移動させ，空欄の上でカードを離すとカードがはめ込まれる．はめ込まれたカードを外したい時は，空欄にはめた時と同じく，ドラッグアンドドロップで外す事ができる．
空欄を埋めて右下にある判定ボタンを押すとシステムが正誤判定を行いフィードバックする．正解だ
った場合，正解と促すメッセージが表示され，メッセージを消すと日本語プログラムとそれに合った C
言語プログラムが対応している画面に切り替わり，空欄を埋めた解答とそれに対応したＣ言語の部分が赤く表示され 1 対 1 対応が理解できるようになっている．不正解だった場合はまた考え直す作業へ戻る．
2.2 日本語とＣ言語の対応
C 言語プログラミングが苦手な学習者の特徴として，

図 1 システムフローチャート

9教育システム情報学会 2014年度学生研究発表会

北海道地区

図 2 問題構成画面成する．問題構成画面にあるようなカード群からカードを選び正誤判定する方法である．
問題構成画面の空欄を選択肢のカードで埋め，その状態で判定ボタンを押すと正誤判定が行われる．
空欄を埋めていない状態や間違った選択肢をはめ込
み，判定ボタンを押した場合は，「不正解」を伝える
メッセージが表示され，学習者がメッセージを消すと，問題構成画面に戻り学習者にもう一度問題を解かせていく．正解のカードで空欄を埋めて判定ボタンを押すと，「正解です」を伝えるメッセージが表示される．

「問題の意味は理解できるが，それを脳内でＣ言語へ変換できない」と，前節で述べた．今までのプロ
グラミング演習に日本語で「この日本語は，この C言語で表され，○○の処理を行っている．
」と学習者に解説を加える事で更に C 言語の理解が深まるのではないかと考えた．
例として，図 2 の問題構成画面の日本語プログラム，「年齢は 25 歳とする」という文に対する C 言語は「int age = 25;」という文で表す事ができる．
｛「年齢は 25 歳です」と表示する｝という日本語に対しては「printf(“年齢は%d 歳です¥n”,age);」，「戻り値 0」に対しては「return 0;」とそれぞれ表す事が出来る．
他にも，「身長をキーボード入力しなさい」であるな
らば，「scanf(“ %f ”,&height);」で表され，for 文を使いたいなら，「○○の処理を△回繰り返します」と日本語で表される．
この対応を分からせる事によって C 言語の処理が何をしているのかが理解できる．そして，通常のプログラミング演習と違い，最初に日本語でプログラミングさせるので，C 言語が苦手な学習者でもどのような順序で C 言語を組めばいいか日本語プログラ
ムにより理解できる．本システムでは，通常のプロ
グラミング演習同様，問題を出題し，問題構成画面の左側の空欄に右にあるカード群からカードを選択し空欄を埋めてもらい，正誤判定を行う．正解の場
合は図 2 の問題構成画面と同じ形をした画面へ移動し，日本語プログラムが書かれている所にユーザが選択した，正しい解答が入力された状態になっており，その部分が赤い文字で表示される．カード群の所には日本語プログラムに対応した C プログラムが表示され，空欄部分だった箇所と対応した C プログ
ラムの所だけ赤く表示される．これで学習者に日本語と C 言語の対応を理解させる．この日本語でプログラミングするという作業を通常のプログラミング演習に加える事で C 言語への理解，処理の流れ，意味を理解させる．
2.3 正誤判定
本研究ではカード選択方式を用いたシステムを作

3.

まとめ

本研究では C 言語初学者のための学習支援システ
ムとして，日本語で書かれたカードを利用してプログラミンが学習でき，システム上で学習者の解答の正誤判定を行うシステムを開発した．
今後の課題としては，現在のシステムでは学習者に一問しか出題する事が出来ていないため，複数の問題をシステムが保有できるようなデータベース環境を構築する事が挙げられる．また，本システムを利用して学習できるかどうかについて調査を行う予定である．
参考文献(1) 今泉俊幸，橋浦弘明，松浦佐江子，古宮誠一：“ブロック構造の可視化環境によるプログラミング学習支援”，電子情報通信学会技術研究報告 Vol.109，No.193，
pp.45-50，（2009）(2) 伊永洋輔，船曳信生，中西透，渡邊寛，天野憲樹：“ＪＡＶＡプログラミング学習支援システムの穴埋め問
題機能の拡張と授業への適用”，電子情報通信学会技術研究報告 Vol.111，No.473，pp.7-12，（2012）(3) 山本耕大，春原将寿，大金克紀，中村勝一，横山節雄，
宮寺庸造：“エラー要因事例ベースの動的学習手法を導入した C 言語教育システムの開発と基礎的評価”，
電子情報通信学会技術研究報告 Vol.108，No.146，pp.67-72，（2008）(4) 柏原昭博，久米井邦貴，梅野浩司，豊田順一：“プログラム空欄補充問題の作成とその評価”，人工知能学会論文誌 Vol.16，No.4，pp.384-391，（2001）

10