(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-15
(45)【発行日】2023-06-23
(54)【発明の名称】プログラミング学習装置および学習プログラム
(51)【国際特許分類】
G09B 7/02 20060101AFI20230616BHJP
G09B 5/02 20060101ALI20230616BHJP
【FI】
G09B7/02
G09B5/02
(21)【出願番号】P 2019121700
(22)【出願日】2019-06-28
【審査請求日】2022-04-05
(73)【特許権者】
【識別番号】591036457
【氏名又は名称】三菱電機エンジニアリング株式会社
(74)【代理人】
【識別番号】110003166
【氏名又は名称】弁理士法人山王内外特許事務所
(74)【代理人】
【識別番号】100101133
【氏名又は名称】濱田 初音
(74)【代理人】
【識別番号】100199749
【氏名又は名称】中島 成
(74)【代理人】
【識別番号】100197767
【氏名又は名称】辻岡 将昭
(74)【代理人】
【識別番号】100201743
【氏名又は名称】井上 和真
(72)【発明者】
【氏名】久世 武知
【審査官】安田 明央
(56)【参考文献】
【文献】特開平08-110754(JP,A)
【文献】特開2018-190400(JP,A)
【文献】特開2000-242479(JP,A)
【文献】特開2011-107937(JP,A)
【文献】特開2008-269184(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09B 5/00-7/12
(57)【特許請求の範囲】
【請求項1】
プログラムを構成する命令を蓄積した命令情報データベースを参照し、前記命令のリストを作成する命令リスト提示部と、
前記命令リスト提示部が作成した前記命令のリストからユーザが選択した前記命令に基づいて、前記プログラムのフローチャートを組み立てる実行ステップ設定部と、
前記実行ステップ設定部が組み立てた前記プログラムのフローチャートをプログラムコードに展開するとともに、前記ユーザの編集指示に基づいて、前記プログラムコードを編集するコード編集部と、
前記コード編集部が展開した前記プログラムコードの形式を変換するコード実行部と、
前記コード実行部が変換した前記プログラムコードを実行する実行結果処理部と、
前記命令のリスト、前記プログラムのフローチャート、前記プログラムコード、および前記実行結果処理部の実行結果を表示する制御を行う表示制御部
と、を備え、
前記コード編集部は、前記プログラムコードを編集した場合に、前記実行ステップ設定部に前記プログラムのフローチャートの編集情報を出力し、
前記実行ステップ設定部は、前記コード編集部から入力された前記編集情報に基づいて、前記プログラムのフローチャートを再度組み立てる、
プログラミング学習装置。
【請求項2】
前記実行ステップ設定部は、前記ユーザの蓄積指示に基づいて、組み立てた前記フローチャートを関数またはクラスとして前記命令情報データベースに蓄積させる
、
請求項1に記載のプログラミング学習装置。
【請求項3】
前記コード編集部は、前記表示制御部を介して表示された前記プログラムコードにおける前記ユーザの指定位置に基づいてスコープを設定し、設定した前記スコープを視覚的に表示する制御を行う
、
請求項1又は2に記載のプログラミング学習装置。
【請求項4】
前記コード編集部は、前記指定位置の文字列が変数であるか、前記文字列が前記変数である場合に、当該変数がグローバル変数であるかローカル変数であるかに基づいて、前記スコープの開始点および終了点を探索し、前記スコープを設定する
、
請求項3に記載のプログラミング学習装置。
【請求項5】
プログラムを構成する命令を蓄積した命令情報データベースを参照し、前記命令のリストを作成する命令リスト提示機能と、
前記作成された前記命令のリストからユーザが選択した前記命令に基づいて、前記プログラムのフローチャートを組み立てる実行ステップ設定機能と、
前記組み立てられた前記プログラムのフローチャートをプログラムコードに展開するとともに、前記ユーザの編集指示に基づいて、前記プログラムコードを編集するコード編集機能と、
前記展開された前記プログラムコードの形式を変換するコード実行機能と、
前記変換された前記プログラムコードを実行する実行結果処理機能と、
前記命令のリスト、前記プログラムのフローチャート、前記プログラムコード、および前記プログラムコードの実行結果を表示する制御を行う表示制御機能
と、
前記プログラムコードを編集した場合に、前記プログラムのフローチャートの編集情報を出力し、入力された前記編集情報に基づいて、前記プログラムのフローチャートを再度組み立てる再度組立機能と、
をコンピュータに実行させる学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、プログラミングの学習に関するものである。
【背景技術】
【0002】
近年のソフトウェア開発では、多くの場面でUML(Unified Modeling Language)を用いて設計する。プログラムを設計する設計ツールによっては、プログラムコードを自動で生成することが可能であるが、用いるプログラミング言語の学習は必要である。プログラミング言語の学習では、言語仕様またはUMLによる設計手法を習得する必要があり、長い時間と大きな労力を費やす必要がある。そのため、プログラミング言語を効率的に学習するための支援技術が求められている。
【0003】
例えば、特許文献1には、表示手段に表示されている流れ図記号と流れ線とから指示入力手段から入力される指示に応じて所望の流れ図を作成し、作成された流れ図により表現されるアルゴリズムを検証し、かつその検証結果を表示手段に表示し、効率的に学習を支援するアルゴリズム教育支援システムが記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に開示されたアルゴリズム教育支援システムでは、簡単なプログラミングの学習支援、例えばフローチャートからプログラムコードを作成する、作成されたプログラムコードを編集するとフローチャートに反映する、プログラム実行時にどのステップを実行しているかを図示する、または関数を単純に挿入する支援、には対応することができるが、複数の関数の組み合わせる、または複数のオブジェクトの組み合わせ等、複雑で実践的なプログラミングの学習には適していないという課題があった。
【0006】
この発明は、上記のような課題を解決するためになされたもので、実践的なプログラミングの学習に適した学習支援を実現することを目的とする。
【課題を解決するための手段】
【0007】
この発明に係るプログラミング学習装置は、プログラムを構成する命令を蓄積した命令情報データベースを参照し、命令のリストを作成する命令リスト提示部と、命令リスト提示部が作成した命令のリストからユーザが選択した命令に基づいて、プログラムのフローチャートを組み立てる実行ステップ設定部と、実行ステップ設定部が組み立てたプログラムのフローチャートをプログラムコードに展開するとともに、ユーザの編集指示に基づいて、プログラムコードを編集するコード編集部と、コード編集部が展開したプログラムコードの形式を変換するコード実行部と、コード実行部が変換したプログラムコードを実行する実行結果処理部と、命令のリスト、プログラムのフローチャート、プログラムコード、および実行結果処理部の実行結果を表示する制御を行う表示制御部と、を備え、コード編集部は、プログラムコードを編集した場合に、実行ステップ設定部にプログラムのフローチャートの編集情報を出力し、実行ステップ設定部は、コード編集部から入力された編集情報に基づいて、プログラムのフローチャートを再度組み立てる、というものである。
【発明の効果】
【0008】
この発明によれば、実践的なプログラミングの学習に適した学習支援を実現することができる。
【図面の簡単な説明】
【0009】
【
図1】実施の形態1に係るプログラミング学習装置の構成を示すブロック図である。
【
図2】実施の形態1に係るプログラミング学習装置の命令情報データベースの構成例を示す図である。
【
図3】実施の形態1に係るプログラミング学習装置の命令リスト提示部による命令リストの提示例を示す図である。
【
図4】実施の形態1に係るプログラミング学習装置の実行ステップ設定部が組み立てたプログラムのフローチャートの提示例を示す図である。
【
図5】
図5Aおよび
図5Bは、実施の形態1に係るプログラミング学習装置の実行ステップ設定部がフローチャートを蓄積する場合の提示例を示す図である。
【
図6】実施の形態1に係るプログラミング学習装置のコード編集部が展開したプログラムコードの提示例を示す図である。
【
図7】実施の形態1に係るプログラミング学習装置の実行結果処理部による実行結果の提示例を示す図である。
【
図8】
図8Aおよび
図8Bは、実施の形態1に係るプログラミング学習装置のハードウェア構成例を示す図である。
【
図9】実施の形態1に係るプログラミング学習装置の表示例を示す図である。
【
図10】実施の形態1に係るプログラミング学習装置の実行ステップ設定部が組み立てたフローチャートの一例を示す図である。
【
図11】実施の形態1に係るプログラミング学習装置のコード編集部の視覚的表現を示す図であり、プログラムコード中の変数のスコープを示す図である。
【
図12】実施の形態1に係るプログラミング学習装置のコード編集部の視覚的表現を示す図であり、プログラムコード中のwhile文のスコープを示す図である。
【
図13】実施の形態1に係るプログラミング学習装置の命令リスト提示部の動作を示すフローチャートである。
【
図14】実施の形態1に係るプログラミング学習装置の実行ステップ設定部の動作を示すフローチャートである。
【
図15】実施の形態1に係るプログラミング学習装置のコード編集部の動作を示すフローチャートである。
【
図16】実施の形態1に係るプログラミング学習装置のコード編集部によるスコープの表示処理の動作を示すフローチャートである。
【
図17】実施の形態1に係るプログラミング学習装置のコード実行部および実行結果処理部の動作を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態1.
図1は、実施の形態1に係るプログラミング学習装置100の構成を示すブロック図である。
プログラミング学習装置100は、入力受付部101、命令情報データベース102、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108を備える。
また、プログラミング学習装置100は、入力装置200および出力装置300と接続される。入力装置200は、タッチパネル、マウスまたはキーボード等で構成される。出力装置300は、ディスプレイ等で構成される。
【0011】
入力受付部101は、入力装置200を介して入力されたユーザ入力を受け付ける。入力受付部101は、受け付けた入力情報を命令リスト提示部103、実行ステップ設定部104、コード編集部105または実行結果処理部107に出力する。
【0012】
命令情報データベース102は、予め設定された命令情報を蓄積するデータベースである。
図2は、実施の形態1に係るプログラミング学習装置100の命令情報データベース102の構成例を示す図である。
命令情報データベース102は、キャプション102a、命令/パラメータ102b、型102c、言語102d、引数102eおよび戻り値102fで構成される。キャプション102aは、命令リスト提示部103が出力装置300に表示するテキスト情報である。命令/パラメータ102bは、プログラミング言語に対応付けられる命令または変数等のパラメータである。型102cは、プログラミング言語で用いられるデータ型を示す情報である。言語102dは、プログラミング言語を示す情報である。
【0013】
命令リスト提示部103は、命令情報データベース102を参照し、キャプション102aで示されたテキスト情報を取得する。命令リスト提示部103は、取得したテキスト情報を用いて命令リストを作成する。命令リスト提示部103は、作成した命令リストを、表示制御部108を介して出力装置300に出力する。
図3は、実施の形態1に係るプログラミング学習装置100の命令リスト提示部103による命令リストの提示例を示す図である。
出力装置300の表示領域302には、種々の命令302aで構成された命令リストが表示される。ユーザは、出力装置300に表示された命令リストの中から、所望の命令302aを指定する入力を、入力装置200を介して行う。
【0014】
実行ステップ設定部104は、入力受付部101を介して入力された命令の選択情報に基づいて命令情報データベース102を参照し、ユーザが所望する処理動作となるようにプログラムのフローチャートを組み立てる。実行ステップ設定部104は、組み立てたプログラムのフローチャートを、表示制御部108を介して出力装置300に出力する。
図4は、実施の形態1に係るプログラミング学習装置100の実行ステップ設定部104が組み立てたプログラムのフローチャートの提示例を示す図である。
出力装置300の表示領域303には、組み立てたプログラムのフローチャート303aが表示される。ユーザは、入力装置200を介して、出力装置300に表示されたフローチャート303aを編集する指示を入力する。実行ステップ設定部104は、入力受付部101を介して入力されたフローチャートの編集情報に基づいてプログラムのフローチャートを再度組み立てる。
実行ステップ設定部104は、作成したプログラムのフローチャートの情報、または編集したプログラムフローチャートの情報をコード編集部105に出力する。
【0015】
また、ユーザは、入力装置200を介して、出力装置300に表示されたフローチャートを、関数またはクラスとして命令情報データベース102に蓄積させる入力を行う。実行ステップ設定部104は、入力受付部101を介して入力されたフローチャートの蓄積指示に基づいて、表示されたフローチャート303aを関数またはクラスとして命令情報データベース102に蓄積させる。
図5は、実施の形態1に係るプログラミング学習装置100の実行ステップ設定部104がフローチャートを蓄積する場合の提示例を示す図である。
図5Aは、フローチャートの蓄積領域の指定例を示す図である。
ユーザは、入力装置200を用いて、関数またはクラスとして登録する蓄積領域303bを選択する。登録する蓄積領域303bが選択されると、実行ステップ設定部104は蓄積領域303bを関数またはクラスとして登録するダイアログ303cを表示する制御を行う。ユーザは、入力装置200を用いて例えば「クラス名」を入力し、「登録」ボタンを押下する。これにより、蓄積領域303bに含まれるフローチャートが、指定されたクラス名で命令情報データベース102に蓄積される。
【0016】
図5Bは、実行ステップ設定部104のフローチャートの蓄積処理により更新された命令リストの提示例を示す図である。
出力装置300の表示領域302には、予め蓄積されていた命令302aに加えて、新たに蓄積された命令302bが追加された命令リストが表示される。
【0017】
コード編集部105は、実行ステップ設定部104から入力されたプログラムのフローチャートの情報に基づいて、フローチャートをプログラムコードに展開する。プログラミング言語は、例えばC#、C、Visual BASIC(登録商標)、Java(登録商標)、Python(登録商標)、Ruby、FORTRAN、COBOLである。コード編集部105は、展開したプログラムコードを、表示制御部108を介して出力装置300に出力する。
図6は、実施の形態1に係るプログラミング学習装置100のコード編集部105が展開したプログラムコードの提示例を示す図である。
出力装置300の表示領域304には、展開したプログラムコードが表示される。ユーザは、必要であれば、入力装置200を介して、表示領域304に表示されたプログラムコードを修正する指示を入力する。
【0018】
コード編集部105は、入力受付部101を介して入力されたプログラムコードの修正指示に基づいて、プログラムコードを修正する。コード編集部105は、修正したプログラムコードを、表示制御部108を介して出力装置300に出力する。また、コード編集部105は、展開または修正が終了したプログラムコードをコード実行部106に出力する。
【0019】
コード実行部106は、コード編集部105から入力されたプログラムコードを、実行結果処理部107が実行可能な形式に変換する処理を行う。コード実行部106は、プログラミング言語に対応した、例えばコンパイラ、インタープリンタである。コード実行部106は、変換したプログラムコードを実行結果処理部107に出力する。
【0020】
実行結果処理部107は、入力受付部101を介して入力されたプログラムコードの実行指示に基づいて、プログラムコードを実行する。実行結果処理部107は、プログラムコードの実行結果を、表示制御部108を介して出力装置300に出力する。
図7は、実施の形態1に係るプログラミング学習装置100の実行結果処理部107による実行結果の提示例を示す図である。
出力装置300の表示領域305は、実行状態表示エリア305A、変数状態表示エリア305B、ボタン表示エリア305Cで構成される。
【0021】
ユーザは、ボタン表示エリア305Cに設けられた実行ボタン305a、ステップ実行ボタン305b、一時停止ボタン305cまたは停止ボタン305dのうちのいずれかのボタンを選択する。ユーザが、例えば実行ボタン305aを押下する入力を行うと、実行結果処理部107はプログラムコードを実行し、実行結果を実行状態表示エリア305Aに表示する制御を行う。
図7の提示例では、実行結果として四角形305eを示している。また、実行結果処理部107は、変数状態表示エリア305Bに実行結果の変数の値を表示する制御を行う。
図7の提示例では、四角形305eの4つの変数の値305fを示している。
同様に、ユーザが、ステップ実行ボタン305b、一時停止ボタン305cまたは停止ボタン305dのうちのいずれかのボタンを選択することにより、実行結果処理部107はプログラムコードの実行、プログラムコードの実行を一時停止する、プログラムコードの実行を停止する、またはプログラムコードの実行を再開する等の処理を行う。
【0022】
さらに、ユーザは、実行状態表示エリア305Aに表示された四角形305eを、矢印キー(図示しない)を用いて、移動させる操作を行うことも可能である。実行結果処理部107は、当該操作に基づいて、四角形305eを実行状態表示エリア305A内で移動させる処理を行う。また、実行結果処理部107は、四角形305eの移動に伴って、変数の値305fを変更する処理を行う。
【0023】
次に、プログラミング学習装置100のハードウェア構成例を説明する。
図8Aおよび
図8Bは、実施の形態1に係るプログラミング学習装置100のハードウェア構成例を示す図である。
プログラミング学習装置100における入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108の各機能は、処理回路により実現される。即ち、プログラミング学習装置100は、上記各機能を実現するための処理回路を備える。当該処理回路は、
図8Aに示すように専用のハードウェアである処理回路100aであってもよいし、
図8Bに示すようにメモリ100cに格納されているプログラムを実行するプロセッサ100bであってもよい。
【0024】
図8Aに示すように、入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108が専用のハードウェアである場合、処理回路100aは、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field-programmable Gate Array)、またはこれらを組み合わせたものが該当する。入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108の各部の機能それぞれを処理回路で実現してもよいし、各部の機能をまとめて1つの処理回路で実現してもよい。
【0025】
図8Bに示すように、入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108がプロセッサ100bである場合、各部の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアはプログラムとして記述され、メモリ100cに格納される。プロセッサ100bは、メモリ100cに記憶されたプログラムを読み出して実行することにより、入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108の各機能を実現する。即ち、入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108は、プロセッサ100bにより実行されるときに、後述する
図13から
図17に示す各ステップが結果的に実行されることになるプログラムを格納するためのメモリ100cを備える。また、これらのプログラムは、入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108の手順または方法をコンピュータに実行させるものであるともいえる。
【0026】
ここで、プロセッサ100bとは、例えば、CPU(Central Processing Unit)、処理装置、演算装置、プロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはDSP(Digital Signal Processor)などのことである。
メモリ100cは、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)等の不揮発性または揮発性の半導体メモリであってもよいし、ハードディスク、フレキシブルディスク等の磁気ディスクであってもよいし、ミニディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)等の光ディスクであってもよい。
【0027】
なお、入力受付部101、命令リスト提示部103、実行ステップ設定部104、コード編集部105、コード実行部106、実行結果処理部107および表示制御部108の各機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。このように、プログラミング学習装置100における処理回路は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって、上述の各機能を実現することができる。
【0028】
次に、
図9から
図12を参照しながら、プログラミング学習装置100の詳細な処理例について説明する。
図9は、実施の形態1に係るプログラミング学習装置100の表示例を示す図である。
出力装置300の表示画面301は、例えば、表示領域302、表示領域303、表示領域304および表示領域305で構成される。表示領域302には、例えば
図3で示した命令リストが表示される。表示領域303には、例えば
図4で示したフローチャートが表示される。表示領域304には、例えば
図6で示したプログラムコードが表示される。表示領域305には、例えば
図7で示した実行結果が表示される。
【0029】
ユーザは、表示領域302で示された命令リストから指定する命令を選択し、選択した命令を表示領域303にドラッグおよびドロップ処理を行う。当該ドラッグおよびドロップ処理により、実行ステップ設定部104は、表示領域303に、命令情報を組み立てたフローチャート303aを表示する制御を行う。なお、選択した命令を表示領域302から表示領域303にドラッグおよびドロップ処理に限定されるものではなく、他の選択方法を適用してもよい。
図4で示したフローチャート303aにおいて、「設定」は、繰り返しの初期値を設定する部分、「評価」は、繰り返しの終了条件を設定する部分、「本体」は、繰り返し処理される命令を示す部分である。なお、
図4で示したフローチャートの構成は一例であり、適宜設定可能である。
【0030】
表示領域303に表示されたフローチャート303aに対して、ユーザは、入力装置200を用いてドラッグ操作または矢印キー操作等により、フローチャートの並べ替えを行う。また、表示領域303に表示されたフローチャート303aに対して、ユーザは、入力装置200を用いてダブルクリック操作または右クリック等の所定の操作を行い、設定ウインドを表示させる。ユーザは表示された設定ウインドで命令に与える値等を設定し、フローチャートに対してパラメータの設定を行う。
【0031】
また、表示領域303に表示されたフローチャート303aに対して、ユーザは、
図5Aで示したようにクラスまた関数として登録する蓄積領域303bを選択する。実行ステップ設定部104は、当該選択に基づいて、フローチャート303aを関数またはクラスとして登録するためのダイアログ303cを表示する制御を行う。ユーザは、表示されたダイアログ303cに、例えばクラス名「四角形描画クラス」を入力し、「登録」ボタンを押下して蓄積指示を入力する。実行ステップ設定部104は、入力された蓄積指示に基づいて、フローチャート303aを四角形描画クラスとして命令情報データベース102に蓄積させる。
【0032】
実行ステップ設定部104の処理をより具体的に説明する。
図10は、実施の形態1に係るプログラミング学習装置100の実行ステップ設定部104が組み立てたフローチャートの一例を示す図である。
ユーザは、例えば
図5Bの表示領域302に表示された命令リストから、命令「変数」を選択し、表示領域303にドラッグおよびドロップ処理を行う。実行ステップ設定部104は、命令「変数」に基づいて、x,y,w,hの4つの変数を作成する。実行ステップ設定部104は、作成した変数x,y,w,hに初期値を設定し、「初期値」と名前を付ける。
【0033】
ユーザは、例えば
図5Bの表示領域302に表示された命令リストから、命令「繰り返し」を選択し、表示領域303にドラッグおよびドロップ処理を行う。実行ステップ設定部104は、命令「繰り返し」に基づいて、表示領域303に繰り返し領域303dを作成する。ユーザは、例えば
図5Bの表示領域302に表示された命令リストから、命令「キー入力を受け付ける」、「条件分岐」および「四角形描画クラス」を選択し、表示領域303の繰り返し領域303d内にドラッグおよびドロップ処理を行う。
【0034】
実行ステップ設定部104は、命令「キー入力を受け付ける」、「条件分岐」および「四角形描画クラス」に基づいて、例えば条件分岐303eに上矢印を割り当て、yを1減らして、四角形描画クラスを呼び出す設定を行う。次に、条件分岐303fに、下矢印、右矢印および左矢印を割り当て、yを1増やして四角形描画クラスを呼び出し、xを1増やして四角形描画クラスを呼び出し、xを1減らして四角形描画クラスを呼び出す設定を行う。次に、条件分岐303fに、下矢印を割り当て、yを1増やして四角形描画クラスを呼び出す設定を行う。
【0035】
図10で示したフローチャートにおいて、「設定」は、繰り返しの初期値を設定する部分であるが、
図10の処理では無限ループのため、ブランクである。同様に、
図10で示したフローチャートにおいて、「評価」は、繰り返しの終了条件を設定する部分であるが、
図10の処理では無限ループのため、ブランクである。
図10で示したフローチャートにおいて、「本体」は、繰り返し処理される命令を示す部分である。
【0036】
ユーザが、表示領域303に表示されたフローチャートにおいて、例えば、設定終了に相当するボタン(図示しない)を押下すると、実行ステップ設定部104は、プログラムのフローチャートの情報をコード編集部105に出力する。コード編集部105は、プログラムコードを展開する処理を行う。展開されたプログラムコードは、表示領域304に表示される。表示領域304に表示されたプログラムコードに対して、ユーザは修正を行うことができる。ユーザが、プログラムコードの設定終了を指示するボタン(図示しない)を押下すると、コード編集部105は、プログラムコードをコード実行部106に出力する。
【0037】
コード編集部105は、表示領域304に表示されたプログラムコード上のカーソル位置(指定位置)に基づいて、変数または構文の開始点の行から終了点の行まで背景色を変更する等により、スコープを視覚的に表現する処理を行ってもよい。
図11および
図12は、実施の形態1に係るプログラミング学習装置100のコード編集部105の視覚的表現を示す図である。
図11は、プログラムコード中の変数のスコープを示す図である。コード編集部105は、
図11で示した表示領域304内のカーソル位置304aに基づいて、変数に関するプログラムコードの開始点および終了点を探索する。コード編集部105は、探索した開始点の行から終了点の行までスコープ304bの背景色を変更する処理を行う。
【0038】
図12は、プログラムコード中のwhile文のスコープを示す図である。コード編集部105は、
図12で示したカーソル位置304cに基づいて、while文に関するプログラムコードの開始点および終了点を探索する。コード編集部105は、探索した開始点の行から終了点の行までスコープ304dの背景色を変更する処理を行う。
上述した
図11および
図12の説明では、プログラムコード内のカーソル位置を取得する場合を例に示したが、ユーザが指定する位置を認識可能であればよく、カーソル位置に限定されるものではない。
【0039】
コード実行部106がプログラムコードを変換し、実行結果処理部107が変換されたプログラムコードに基づいて実行結果を表示する制御を行う。実行結果処理部107の処理により、例えば
図7で示した表示領域305の実行状態表示エリア305Aおよび変数状態表示エリア305Bに実行結果が表示される。ユーザは、表示領域305のボタン表示エリア305Cに表示された実行ボタン305a、ステップ実行ボタン305b、一時停止ボタン305cまたは停止ボタン305dのいずれかのボタンを選択する。
【0040】
次に、プログラミング学習装置100の処理動作について説明する。
まず、命令リスト提示部103の動作について説明する。
図13は、実施の形態1に係るプログラミング学習装置100の命令リスト提示部103の動作を示すフローチャートである。
入力受付部101を介して命令リスト表示指示が入力されると(ステップST1)、命令リスト提示部103は命令情報データベース102を参照してテキスト情報を取得する(ステップST2)。命令リスト提示部103は、ステップST2で取得したテキスト情報を用いて命令リストを生成する(ステップST3)。命令リスト提示部103は、ステップST3で生成した命令リストを、表示制御部108を介して出力装置300に表示する(ステップST4)。その後、処理はステップST1に戻る。
【0041】
次に、実行ステップ設定部104の動作について説明する。
図14は、実施の形態1に係るプログラミング学習装置100の実行ステップ設定部104の動作を示すフローチャートである。
入力受付部101を介して命令の選択情報、またはフローチャートの編集情報が入力される(ステップST11)。実行ステップ設定部104は、入力された命令の選択情報、またはフローチャートの編集情報に基づいて、命令情報データベース102を参照し、プログラムのフローチャートを組み立てる(ステップST12)。実行ステップ設定部104は、ステップST12で組み立てたプログラムのフローチャートを、表示制御部108を介して出力装置300に表示する(ステップST13)。
【0042】
実行ステップ設定部104は、入力受付部101を介してプログラムのフローチャートの蓄積領域が指定されたか否か判定を行う(ステップST14)。蓄積領域が指定されない場合(ステップST14;NO)、フローチャートはステップST20の処理に進む。一方、蓄積領域が指定された場合(ステップST14;YES)、実行ステップ設定部104は、蓄積領域を関数として登録するか、クラスとして登録するかを尋ねるダイアログを、表示制御部108を介して出力装置300に表示する(ステップST15)。
【0043】
実行ステップ設定部104は、入力受付部101を介して関数として登録すると指定されたか否か判定を行う(ステップST16)。関数として登録すると指定された場合(ステップST16;YES)、実行ステップ設定部104は、関数名を尋ねるダイアログを、表示制御部108を介して出力装置300に表示する(ステップST17)。一方、関数として登録しない、即ちクラスとして登録すると指定された場合(ステップST16;NO)、実行ステップ設定部104は、クラス名を尋ねるダイアログを、表示制御部108を介して出力装置300に表示する(ステップST18)。ステップST17またはステップST18の処理が行われると、実行ステップ設定部104は入力受付部101を介して入力された情報に基づいて、蓄積領域に含まれるプログラムのフローチャートを関数またはクラスとして、命令情報データベース102に蓄積する(ステップST19)。
【0044】
その後、実行ステップ設定部104は、入力受付部101を介して設定終了を示す情報が入力されたか否か判定を行う(ステップST20)。設定終了を示す情報が入力された場合(ステップST20;YES)、実行ステップ設定部104は、ステップST12で組み立てたプログラムのフローチャートの情報をコード編集部105に出力する(ステップST21)。その後、フローチャートはステップST11の処理に戻る。一方、設定終了を示す情報が入力されない場合(ステップST20;NO)、フローチャートはステップST11の処理に戻る。
【0045】
次に、コード編集部105の動作について説明する。
図15は、実施の形態1に係るプログラミング学習装置100のコード編集部105の動作を示すフローチャートである。
実行ステップ設定部104からプログラムのフローチャートの情報が入力されると(ステップST31)、コード編集部105は、入力されたプログラムのフローチャートをプログラムコードに展開する(ステップST32)。コード編集部105は、ステップST32で展開したプログラムコードを、表示制御部108を介して出力装置300に表示する(ステップST33)。
【0046】
コード編集部105は、表示したプログラムコードに対する編集指示が入力されたか否か判定を行う(ステップST34)。編集指示が入力されていない場合(ステップST34;NO)、ステップST38の処理に進む。一方、編集指示が入力された場合(ステップST34;YES)、コード編集部105は、入力された編集指示に基づいてプログラムコードを編集する(ステップST35)。コード編集部105は、ステップST35で編集したプログラムコードを、表示制御部108を介して出力装置300に表示する(ステップST36)。
【0047】
また、コード編集部105は、編集したプログラムコードに基づくフローチャートの編集情報を実行ステップ設定部104に出力する(ステップST37)。コード編集部105は、ステップST32で展開したプログラムコード、またはステップST35で編集したプログラムコードをコード実行部106に出力する(ステップST38)。その後、フローチャートは、ステップST31の処理に戻る。
【0048】
次に、コード編集部105によるスコープの表示処理の動作について説明する。
図16は、実施の形態1に係るプログラミング学習装置100のコード編集部105によるスコープの表示処理の動作を示すフローチャートである。
図16のフローチャートは、
図15のステップST33の表示処理をより詳細に示すものである。なお、以下の説明は、
図15のフローチャートのステップST36の表示処理にも適用可能である。
コード編集部105は、ステップST32で展開したプログラムコードを、表示制御部108を介して出力装置300に表示すると(ステップST331)、入力受付部101を介してプログラムコード内のカーソル位置を取得する(ステップST332)。コード編集部105は、ステップST332で取得したカーソル位置の文字列を取得する(ステップST333)。
【0049】
コード編集部105は、ステップST333で取得した文字列が変数であるか否か判定を行う(ステップST334)。文字列が変数である場合(ステップST334;YES)、コード編集部105は、変数がグローバル変数であるか否か判定を行う(ステップST335)。変数がグローバル変数である場合(ステップST335;YES)、コード編集部105は、変数の開始点を先頭行とし、変数の終了点を最終行とする(ステップST336)。一方、変数がグローバル変数でない場合(ステップST335;NO)、コード編集部105は、変数がローカル変数であるとし(ステップST337)、開始点および終了点を探索する(ステップST338)。コード編集部105は、ステップST338の処理として、例えばカーソル位置の直前の「{」を探索して開始点とし、当該直前の「{」に対応する「}」を探索して終了点とする。
【0050】
また、文字列が変数でない場合(ステップST334;NO)、コード編集部105は、文字列が繰り返し文または条件分岐文であるとし(ステップST339)、開始点および終了点を探索する(ステップST340)。コード編集部105は、ステップST340の処理として、例えばカーソル位置の直後の「{」を探索して開始点とし、当該直後の「{」に対応する「}」を探索して終了点とする。
【0051】
コード編集部105は、ステップST336、ステップST338またはステップST340の処理の後、開始点が位置する行から終了点が位置する行までの領域をスコープとして設定する(ステップST341)。コード編集部105は、ステップST341で設定したスコープの表示色を変更する指示を表示制御部108に出力する(ステップTST342)。その後、フローチャートは、ステップST331の処理に戻る。
コード編集部105は、プログラムコードの表示を行っている間、上述した処理を繰り返し行う。
なお、上述したステップTST342では、スコープの表示色を変更する場合を例に示したが、関連領域を視覚的に明示する方法であれば適宜設定可能である。
【0052】
次に、コード実行部106および実行結果処理部107の動作について説明する。
図17は、実施の形態1に係るプログラミング学習装置100のコード実行部106および実行結果処理部107の動作を示すフローチャートである。
コード実行部106は、コード編集部105から入力されたプログラムコードの変換を行い(ステップST41)、実行結果処理部107に出力する。入力受付部101を介してプログラムの実行指示が入力されると(ステップST42)、実行結果処理部107は、コード実行部106から入力されたプログラムコードを実行する(ステップST43)。実行結果処理部107は、プログラムコードの実行結果を、表示制御部108を介して出力装置300に表示する(ステップST44)。その後、フローチャートはステップST42の処理に戻る。
【0053】
ステップST42およびステップST44の処理において、
図7で示した実行ボタン305aが押下され、プログラムコードの実行が開始された場合、一時停止ボタン305cまたは停止ボタン305dが押下されるまで、実行結果処理部107はプログラムコードの実行を行う。また、ステップST42およびステップST44の処理において、
図7で示したステップ実行ボタン305bが押下され、プログラムコードの実行が開始された場合、実行結果処理部107はプログラムコードを一行実行すると処理を一時停止する。再度、ステップ実行ボタン305bが押下されると、実行結果処理部107は、プログラムコードの次の一行を実行する処理を行う。
【0054】
以上のように、この実施の形態1によれば、プログラムを構成する命令を蓄積した命令情報データベース102を参照し、命令のリストを作成する命令リスト提示部103と、作成された命令のリストからユーザが選択した命令に基づいて、プログラムのフローチャートを組み立てる実行ステップ設定部104と、組み立てられたプログラムのフローチャートをプログラムコードに展開するとともに、ユーザの編集指示に基づいて、プログラムコードを編集するコード編集部105と、展開されたプログラムコードの形式を変換するコード実行部106と、変換されたプログラムコードを実行する実行結果処理部107と、命令のリスト、プログラムのフローチャート、プログラムコード、および実行結果処理部107の実行結果を表示する制御を行う表示制御部108とを備えるように構成した。
これにより、実践的なプログラミングの学習に適した学習支援を実現することができる。
【0055】
また、この実施の形態1によれば、コード編集部105が、プログラムコードを編集した場合に、実行ステップ設定部104にプログラムのフローチャートの編集情報を出力し、実行ステップ設定部104が、入力された編集情報に基づいて、プログラムのフローチャートを再度組み立てるように構成した。
これにより、プログラムコードの編集を、プログラムのフローチャートに反映させることができる。ユーザは、プログラムコードを編集することにより、プログラムのフローチャートまたは関数等を自分で編集することができる。
【0056】
また、この実施の形態1によれば、実行ステップ設定部104は、ユーザの蓄積指示に基づいて、組み立てたフローチャートを関数またはクラスとして命令情報データベース102に蓄積させるように構成した。
これにより、ユーザが自身で関数またはクラスを作成して命令として蓄積することができる。ユーザは、所望のプログラミングを行うことができる。また、ユーザは、プログラムのフローチャートと、プログラムコードとを見比べながらプログラミング学習を行うことができる。
【0057】
また、この実施の形態1によれば、コード編集部105は、表示制御部108を介して表示されたプログラムコードにおけるユーザの指定位置に基づいてスコープを設定し、設定したスコープを視覚的に表示する制御を行うように構成した。
これにより、ユーザの指定位置、例えばカーソルが位置する部分の変数、繰り返し文、または条件分岐文のスコープが視覚的に表示され、ユーザは例えば変数、繰り返し文、または条件分岐文の作用する範囲を直感的に理解することができる。
【0058】
なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。
【符号の説明】
【0059】
100 プログラミング学習装置、101 入力受付部、102 命令情報データベース、103 命令リスト提示部、104 実行ステップ設定部、105 コード編集部、106 コード実行部、107 実行結果処理部、108 表示制御部。