(57)【要約】【課題】  ディスプレイのサイズ等に起因して表示可能な情報量が制限された電子機器においてプログラミングする場合であっても、ユーザに不便を感じさせないこと。【解決手段】  プログラミング支援装置１０は、ソースコードを表示する表示部（１２）と、表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、ソースコードのない空白行を挿入する空白行挿入部（２２ａ１）と、プログラムリストに空白行が挿入された場合であって、プログラムリストの実行時での処理順番が挿入された空白行よりも早い行に、ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、制御ソースコードが挿入された行と、制御ソースコードが挿入された行よりも処理順番が遅くて最も近い空白行との間にあるソースコードを、制御ソースコードに取り込むソースコード取込部（２２ａ５）とを備える。【選択図】図３
2019125062.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードを表示する表示部と、
前記表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、前記ソースコードのない空白行を挿入する空白行挿入部と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込むソースコード取込部と、
を備えた、プログラミング支援装置。
【請求項２】
前記挿入された行に後続する直近の前記空白行は、前記制御ソースコードと同じ階層にある、請求項１に記載のプログラミング支援装置。
【請求項３】
前記各行に表示されたソースコードを指定された順に従って実行するプログラムが実行された場合、前記空白行の実行がスキップされる、請求項１または２に記載のプログラミング支援装置。
【請求項４】
１つの前記空白行から前記１つの空白行に対して先行する直近の前記空白行または後続する直近の前記空白行へカーソルをジャンプさせるカーソル移動部をさらに備えた、請求項１乃至３のうち何れか１項に記載のプログラミング支援装置。
【請求項５】
前記プログラムリストに新たな前記ソースコードを挿入するために、前記空白行に前記ソースコードを上書きする上書部をさらに備えた、請求項１乃至４のうち何れか１項に記載のプログラミング支援装置。
【請求項６】
前記ソースコードを入力するためのキー入力部をさらに備えた、請求項１乃至５のうち何れか１項に記載のプログラミング支援装置。
【請求項７】
プロセッサが、
表示部にソースコードを表示する処理と、
前記表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する処理と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む処理と、
を行うプログラミング支援方法。
【請求項８】
表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する機能と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む機能と、
を、コンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばグラフ関数電卓のような電子機器を用いたプログラミングを支援するための装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、グラフ関数電卓は、グラフの描画、連立方程式の計算、変数を用いた演算ができる電卓である。この種のグラフ関数電卓は、ディスプレイを有し、ディスプレイから、複数行のテキストや、計算結果のグラフを表示することができる。
【０００３】
このようにグラフ関数電卓は、ディスプレイを有していることから、近年では、プログラミング教育への利用も考えられている。
【０００４】
グラフ関数電卓をプログラミング教育のために使用することを想定した場合、例えば、アルゴリズムの学習のための使用が考えられる。この場合、グラフ関数電卓は、例えば、モードを、計算を実行するための計算モードから、アルゴリズムを学習するためのモード（以下、「アルゴリズムモード」と称する）に切り替え可能な構成とすればよい。
【０００５】
アルゴリズムを学習するためのプログラム言語環境としては、例えば、スクラッチ（Ｓｃｒａｔｃｈ）がある。
【０００６】
スクラッチは、スクリプト（ソースコード）が記述（表示）された行を、ディスプレイ上に自由に配置することによってプログラムリストを作成することが可能であり、複数のスクリプトをつなげることにより、連続した動作を実現することができる。また、様々なスクリプトのうち、例えば、「Ｒｅｐｅａｔ」や「Ｉｆ」のような制御スクリプト（ソースコードの一種である制御ソースコード）は、制御対象のスクリプトを内部に取り込むことによって、プログラムリストの少なくとも一部を作成することができる。この場合、制御スクリプトが取り込むスクリプトは、単体のスクリプトに限定されず、複数連なったスクリプトも可能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６３−１０３３５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、グラフ関数電卓をプログラミング教育のために使用する場合、以下のような問題がある。
【０００９】
一般に、グラフ関数電卓は、ディスプレイのサイズ等に起因して表示可能な情報量が限られている。そのため、スクリプトが記述（表示）された行を１列に並べることしかできない構成となっている。したがって、制御スクリプトを後から挿入した場合、挿入位置から、プログラムリストの最後のスクリプトまで取り込みがなされてしまう。すなわち、ユーザは、制御スクリプトにより取り込むべきスクリプトを自由に決定することができず、不便を感じてしまうという問題がある。そして、この問題は、グラフ関数電卓を使ったプログラミング教育の普及の障害ともなりかねない。
【００１０】
本発明はこのような事情に鑑みてなされたものであり、例えば、ディスプレイのサイズ等に起因して表示可能な情報量が制限された電子機器においてプログラミングする場合であっても、ユーザに不便を感じさせないプログラミング支援装置、プログラミング支援方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るプログラミング支援装置は、ソースコードを表示する表示部と、表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、ソースコードのない空白行を挿入する空白行挿入部と、プログラムリストに空白行が挿入された場合であって、プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、制御ソースコードが挿入された行と、制御ソースコードが挿入された行よりも処理順番が遅くて最も近い空白行との間にあるソースコードを、制御ソースコードに取り込むソースコード取込部とを備える。
【発明の効果】
【００１２】
本発明によれば、例えば、ソースコードどうしの間に空白行を挿入した場合には、空白行によりその前後のソースコードを区切ることができるため、例えば、ディスプレイのサイズ等に起因して表示可能な情報量が制限された電子機器においてプログラミングする場合であっても、ユーザに不便を感じさせないようにすることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器の外観構成を示す正面図である。
【図２】電子機器の電子回路の構成を示すブロック図である。
【図３】プログラミング支援プログラムに含まれるサブプログラムを示す構成図である。
【図４】スクリプトの種別に応じて決定されるプログラムリスト実行時の処理の流れを示すフローチャートである。
【図５】新たなスクリプトを挿入するための処理の流れを示すフローチャートである。
【図６】空白行を用いて新たなスクリプトを挿入する例を示す説明図である。
【図７】空白行を用いずに新たなスクリプトを挿入する例を示す説明図である。
【図８】カーソル移動サブプログラムの機能を説明するためのプログラムリストを示す図である。
【図９】スクリプト取込サブプログラムの動作例を説明するためのフローチャートである。
【図１０】スクリプト取込サブプログラムの機能を説明するためのプログラムリストを示す図である（単一階層であり、空白行がない場合）。
【図１１】スクリプト取込サブプログラムの機能を説明するためのプログラムリストを示す図である（単一階層であり、空白行がある場合）。
【図１２】スクリプト取込サブプログラムの機能を説明するためのプログラムリストを示す図である（複数階層であり、空白行がある場合）。
【図１３Ａ】本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器の動作を示すフローチャートである（１／２）。
【図１３Ｂ】本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器の動作を示すフローチャートである（２／２）。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置を、図面を参照して説明する。
【００１５】
図１は、本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器１０の外観構成を示す正面図である。
【００１６】
図１は、電子機器１０をグラフ関数電卓として実施した場合を示す図である。しかしながら、電子機器１０は、グラフ関数電卓として構成されるものに限定されず、タブレット端末、パーソナルコンピュータ、スマートフォン、携帯電話機、タッチパネル式ＰＤＡ(personal digital assistants)、電子ブック、携帯ゲーム機等として構成することもできる。
【００１７】
なお、タブレット端末のように、グラフ関数電卓のような物理的なキー（ボタン）が実装されていない電子機器の場合は、グラフ関数電卓のキーと同様なソフトウェアキーボードをディスプレイに表示し、このソフトウェアキーボードに対するキー操作に応じて処理を実行する。
【００１８】
グラフ関数電卓として構成される電子機器１０は、その携帯性の必要からユーザが片手で十分把持し片手で操作可能な小型サイズからなり、本体正面にはキー入力部１１およびディスプレイ１２が設けられる。
【００１９】
キー入力部１１は、例えば、演算に関する情報やスクリプト（ソースコード）等を入力するためのものである。キー入力部１１には、数値、数式、およびプログラム命令のためのコマンドを入力したり、計算やプログラムの実行を指示したりするための数値・演算記号キー群１１１、各種の関数を入力したりメモリ機能を立ち上げたりするための関数機能キー群１１２、計算モードやアルゴリズムモードといった各種動作モードのメニュー画面を表示させたり、これら動作モードの設定を指示したりするための「ＭＥＮＵ」（メニュー）キー１１３ａ等を含む設定キー群１１３、ディスプレイ１２の下端に沿って表示された各種の機能を１回のキー操作で立ち上げるためのファンクションキー群１１４、ディスプレイ１２に表示されたカーソルの移動操作やデータ項目の選択操作などを行うためのカーソルキー１１５が備えられる。
【００２０】
電子機器１０のアルゴリズムモードへの設定は、例えば、設定キー群１１３における「ＭＥＮＵ」キー１１３ａ等のキーを用いる。具体的には、「ＭＥＮＵ」キー１１３ａを押圧すると、ディスプレイ１２上には、例えば計算モードやアルゴリズムモード等の各モードに対応した複数のアイコン（メニュー）が表示される。ユーザは、必要に応じてカーソルキー１１５を押圧することでディスプレイ１２上のカーソルをアルゴリズムモードに対応したアイコンまで移動させ、さらに、キー入力部１１の所定のキー（例えば、「ｃｏｓ」キー１１２ａ）を押圧することで、電子機器１０のアルゴリズムモードへの設定を行うことができる。なお、ユーザは、ディスプレイ１２上に表示されている複数のアイコンのうち、いずれか１つのアイコンを選択することで、選択したアイコンに対応したモード、すなわち、所望するモードを設定することができる。
【００２１】
なお、電子機器１０のアルゴリズムモードへの設定は、これに限らず、例えば、設定キー群１１３における「ＭＯＤＥ」キー１１３ｂを押圧することによってなされるようにしてもよい。具体的には、電子機器１０は、「ＭＯＤＥ」キー１１３ｂが押圧されると、計算モードとアルゴリズムモードとが交互に切り替わるように構成されていてもよい。また、電子機器１０は、これ以外のモードを備えていてもよく、３つ以上のモードを備えている場合は、「ＭＯＤＥ」キー１１３ｂを押圧する毎に、モードが順次切り替わるように構成されていればよい。これらのような構成であっても、ユーザは、複数のモードから、所望するモードを設定することができる。
【００２２】
数値・演算記号キー群１１１としては、［０］〜［９］（数値）キー、［＋］［−］［×］［÷］（四則記号）キー、［ＥＸＥ］（実行）キー、［ＡＣ］（クリア）キーなどが配列される。
【００２３】
関数機能キー群１１２としては、［ｓｉｎ］（サイン）キー、［ｃｏｓ］（コサイン）キー、［ｔａｎ］（タンジェント）キーなどが配列される。
【００２４】
設定キー群１１３としては、［ＭＥＮＵ］（メニュー）キー１１３ａや「ＭＯＤＥ」（モード選択）キー１１３ｂの他に、［ＳＨＩＦＴ］（シフト）キーなどが配列される。
【００２５】
ファンクションキー群１１４としては、［Ｆ１］キー〜［Ｆ６］キーが配列される。なお、ファンクションキー群１１４は省略してもよく、［Ｆ１］キー〜［Ｆ６］キーに割り当てられた機能を、ファンクションキー群１１４のキーではなく、他のキーの操作により実行できるようにしてもよい。
【００２６】
なお、数値・演算記号キー群１１１、関数機能キー群１１２、設定キー群１１３、ファンクションキー群１１４のキーは、［ＳＨＩＦＴ］キーが操作された後に続けて操作されることで、そのキートップに記載されたキー機能ではなく、そのキーの上方（図１において上方）に記載されたキーとして機能できるようになっている。例えば、［ＳＨＩＦＴ］キー操作後に［ＡＣ］キーが操作（以下、［ＳＨＩＦＴ］＋［ＡＣ］キーと記す。）されると［ＯＦＦ］（電源オフ）キーとなる。［ＳＨＩＦＴ］＋［ＭＥＮＵ］キーは［ＳＥＴ  ＵＰ］（セットアップ）キー、［ＳＨＩＦＴ］＋［Ｆ３］キーは［Ｖ−Ｗｉｎｄｏｗ］（ビューウインドウ：描画領域設定画面の表示を指示する）キーとなる。なお、キートップに記載されているキー機能（通常時キー機能）の表記は、そのキーの周辺（図１において、例えば、該当するキーの上方）に記載されていてもよく、例えば、通常時キー機能の表記と、［ＳＨＩＦＴ］キーが操作されている場合（［ＳＨＩＦＴ］キーが有効とされている場合）に対応するキー機能（ＳＨＩＦＴ状態キー機能）の表記とを、該当するキーの周辺に互いに異なる表示形態で記載しておいてもよい。
【００２７】
ディスプレイ１２は、スクリプトを表示するためのものであり、ドットマトリクス型の液晶表示ユニットからなる。なお、電子機器１０がタブレット端末である場合、ディスプレイ１２は、タッチパネルを重ねて設けた液晶表示ユニットからなる。
【００２８】
図２は、電子機器１０の電子回路の構成を示すブロック図である。
【００２９】
電子機器１０の電子回路は、キー入力部１１およびディスプレイ１２に加えて、コンピュータであるＣＰＵ２１、メモリ２２、記録媒体読取部２４を備えている。
【００３０】
ＣＰＵ２１は、メモリ２２に記憶されているプログラミング支援プログラム２２ａに従い回路各部の動作を制御し、キー入力部１１からのキー入力信号に応じた各種の処理を実行する。プログラミング支援プログラム２２ａは、メモリ２２に予め記憶されていてもよいし、あるいはメモリカード等の外部記録媒体２３から記録媒体読取部２４を介してメモリ２２に読み込まれて記憶されたものであってもよい。プログラミング支援プログラム２２ａは、ユーザがキー入力部１１の操作によって書き換えできないようになっている。
【００３１】
メモリ２２には、このようなユーザ書き換え不可能な情報の他に、ユーザが書き換え可能なデータを記憶するエリアとして、キー入力部１１によりキー入力されたキーコードのデータ、これにより構成される数式のデータや表データ、グラフデータ、プログラミング支援プログラム２２ａによって作成されるプログラムリスト等が記録されるエリアである書込可能データエリア２２ｂが確保されている。プログラムリストは、スクリプトが記述（表示）された単数または複数の行からなる。
【００３２】
このように構成された電子機器１０は、モードをアルゴリズムモードに設定された状態でプログラミング支援プログラム２２ａを起動させると、数値・演算記号キー群１１１から、スクリプトの記述のための入力等、プログラムリストを作成するための入力を受け付けることが可能な状態となる。また、ＣＰＵ２１がプログラミング支援プログラム２２ａに記述された命令に従い回路各部の動作を制御し、ソフトウェアとハードウェアとが協働して動作する。これによって、以下に説明するように、プログラミング支援機能を実現する。
【００３３】
図３は、プログラミング支援プログラム２２ａに含まれるサブプログラムを示す構成図である。
【００３４】
プログラミング支援プログラム２２ａは、例えばグラフ関数電卓のように、ディスプレイ１２のサイズ等に起因して表示可能な情報量が制限された電子機器１０において、ユーザによるプログラミング作業を支援するためのプログラムである。図３に示すように、プログラミング支援プログラム２２ａは、空白行挿入サブプログラム２２ａ１、種別判定サブプログラム２２ａ２、上書サブプログラム２２ａ３、カーソル移動サブプログラム２２ａ４、およびスクリプト取込サブプログラム２２ａ５を含む。
【００３５】
空白行挿入サブプログラム２２ａ１は、所定の処理を行うように定義されたスクリプトが各行にそれぞれ記述されたプログラムリストのうち、ユーザによって指定された行間に、スクリプトが記述されていない空白行を挿入する。ここでいう「行間」には、プログラムリストを構成する最初の行の直前の位置や、プログラムリストを構成する最後の行の直後の位置が含まれていてもよい。この空白行は、例えば、スクリプトどうしの間に挿入される場合、空白行の挿入位置の前後のスクリプトを区切るために利用可能である。
【００３６】
種別判定サブプログラム２２ａ２は、プログラムリストの各行が、制御スクリプト（制御ソースコード）であるか、通常スクリプト（通常ソースコード）であるか、制御終端スクリプト（制御終端ソースコード）であるか、プログラム終了スクリプト（プログラム終了ソースコード）であるか、空白行であるかを判別する。制御スクリプトとは、「Ｉｆ」または「Ｒｅｐｅａｔ」であり、制御終端スクリプトとは、制御スクリプトと対応するスクリプトである「Ｅｎｄ」である。プログラム終了スクリプトとは、プログラムを終了させるスクリプトである「Ｅｎｄ」である。通常スクリプトとは、後述する描画スクリプト、制御スクリプト、制御終端スクリプト、およびプログラム終了スクリプト以外のスクリプトである。なお、判別対象のスクリプトが制御スクリプトである場合、さらに「Ｅｌｓｅ」を伴う３行スクリプトであるか否かをも判定する。
【００３７】
プログラムが実行されると、プログラムリストの各行に記述されたスクリプトが、上の行から下の行に向かって順に実行されるが、種別判定サブプログラム２２ａ２によって、空白行であると判定された行はスキップされ、実行対象行が次の行に進む。
【００３８】
一方、種別判定サブプログラム２２ａ２によって、通常スクリプト、制御スクリプト、制御終端スクリプトであると判定された行では、記述されたスクリプトに従った処理がなされ、その後、実行対象行が次の行に進む。
【００３９】
また、種別判定サブプログラム２２ａ２によって、プログラム終了スクリプトであると判定された行では、プログラムの実行が終了する。
【００４０】
このように、種別判定サブプログラム２２ａ２による判定結果に応じて決定されるプログラムリスト実行時の処理の流れ（プログラムリスト実行時におけるスクリプトや空白行の扱い）を、図４に示すフローチャートを用いて説明する。
【００４１】
図４に示すフローチャートは、一例として、初めに描画スクリプトが処理され、ディスプレイ１２に、軸や背景が描画された（Ｓ１）後に、実行対象行が次の行に進み、その行に記述されたスクリプトに従う処理が実行される（Ｓ２〜Ｓ４）プログラムの流れを示している。
【００４２】
描画スクリプトによる処理（Ｓ１）の後、実行対象行が次の行に進むと、種別判定サブプログラム２２ａ２が、この行（新たな実行対象行）の種別を判定する（Ｓ２）。
【００４３】
ステップＳ２において、種別判定サブプログラム２２ａ２が、新たな実行対象行がプログラム終了スクリプトであると判定すると、プログラムの実行が終了する。
【００４４】
一方、ステップＳ２において、種別判定サブプログラム２２ａ２が、新たな実行対象行がプログラム終了スクリプトではない他のスクリプト（通常スクリプト、制御スクリプト、あるいは、制御終端スクリプトのうち、いずれか１つのスクリプト）であると判定すると、このスクリプトに従う処理が実行され（Ｓ３）、ステップＳ３における処理が実行された後、実行対象行が次の行に進み（Ｓ４）、ステップＳ２の処理に戻る。
【００４５】
さらに、ステップＳ２において、種別判定サブプログラム２２ａ２が、新たな実行対象行が空白行であると判定すると、この行（空白行）はスキップされ、すなわち、何も実行されず、実行対象行が次の行に進み（Ｓ４）、ステップＳ２の処理に戻る。
【００４６】
このように空白行では、何も実行されないので、プログラムリスト実行時の動作に影響されずにスクリプトを区切るために利用することができる。
【００４７】
一方、空白行を、新たなスクリプトを挿入するために利用することもできる。これを実現するために、上書サブプログラム２２ａ３は、空白行にスクリプトを上書きする機能を提供する。
【００４８】
図５は、新たなスクリプトを挿入するための処理の流れを示すフローチャートである。
【００４９】
上書サブプログラム２２ａ３を利用すれば、新たな行を別途挿入することなく、空白行にスクリプトを上書きすることによって、すなわち、空白行をスクリプトに変換することによって、プログラムリスト内に新たなスクリプトを挿入することができる。これは、図５におけるステップＳ１１およびＳ１２に相当する。例えば、図６に示すように、空白行ＡにスクリプトＢ（たとえば、「Ｔｕｒｎ  １０  ｄｅｇｒｅｅｓ」）を上書きする。このようにして新たなスクリプトＢを生成する。なお、スクリプトが上書きされた空白行は、空白行ではなくなる。
【００５０】
一方、カーソル位置の上側に新たな行を挿入し、その行にスクリプトを書き込むことによって、空白行を利用することなく新たなスクリプトを生成することもできる。これは、図５におけるステップＳ１１およびＳ１３に相当する。例えば、図７に示すように、カーソルのある行Ｃの上側に新たな行を挿入し、その行にスクリプトデータ（たとえば、「Ｔｕｒｎ  １０  ｄｅｇｒｅｅｓ」）を書き込むことによって、新たなスクリプトＤを生成する（Ｓ１３）。
【００５１】
カーソル移動サブプログラム２２ａ４は、１つの空白行から、この１つの空白行に対して先行する直近の空白行または後続する直近の空白行へカーソルをジャンプさせる。カーソル移動サブプログラム２２ａ４によるカーソルのジャンプ機能について、図８に示すプログラムリストを用いて説明する。
【００５２】
図８は、第１行目に「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」というスクリプトが記述され、第２行目は空白行Ｅであり、第３行目に「Ｔｕｒｎ  １０  ｄｅｇｒｅｅｓ」というスクリプトが記述され、第４行目は空白行Ｆであり、第５行目に「Ｐｅｎ  Ｄｏｗｎ」というスクリプトが記述されたプログラムリストＧを示す図である。
【００５３】
図８に示すようなプログラムリストＧがディスプレイ１２から表示されている状態において、カーソルが第１行目にあった場合、カーソルキー１１５のうち、「↓」キーが押圧されると、カーソル移動サブプログラム２２ａ４が機能することによって、後続する直近の空白行Ｅのある第２行目へカーソルがジャンプする。さらに、カーソルが第２行目にある時点から、「↓」キーが押圧されると、後続する直近の空白行Ｆのある第４行目へカーソルがジャンプする。カーソルが第４行目にある時点から、「↓」キーが押圧された場合、第６行目（図示せず）以降に空白行があれば、後続する直近の空白行へカーソルがジャンプする。以降の行に空白行がなければ、「↓」キーが押圧されてもカーソルは移動しない。
【００５４】
一方、カーソルキー１１５のうち、「↑」キーが押圧されると、先行する直近の空白行へカーソルがジャンプする。例えば、カーソルが第５行目にある場合に、「↑」キーが押圧されると、先行する直近の空白行Ｆのある第４行目へカーソルがジャンプし、そこから再度「↑」キーが押圧されると、その先行する直近の空白行Ｅのある第２行目へカーソルがジャンプするという具合である。
【００５５】
スクリプト取込サブプログラム２２ａ５は、プログラムリストに、制御スクリプトが挿入された場合、図９に示すフローチャートに従って、取り込むスクリプトの範囲のチェックと、スクリプトのチェックとを行うことによって、スクリプトの取込を行う。
【００５６】
先ず、プログラムリストに制御スクリプトが挿入される（Ｓ２０）と、スクリプト取込サブプログラム２２ａ５は、挿入された制御スクリプトに後続するスクリプトを認識することによって、取り込む範囲をチェックする（Ｓ２１）。
【００５７】
その後、スクリプト取込サブプログラム２２ａ５は、挿入された制御スクリプトに後続するスクリプトの種別を順次チェックする（Ｓ２２）。具体的には、スクリプト取込サブプログラム２２ａ５は、チェック対象のスクリプトが、ステップＳ２３において、「Ｉｆ」や「Ｒｅｐｅａｔ」のような制御スクリプトであるか否かを判定し、ステップＳ２５において、「Ｅｎｄ」である制御終端スクリプトであるか否かを判定し、ステップＳ２７において、スクリプトが記述されていない空白行であるか否かを判定する。そして、それ以外のスクリプトであれば、ステップＳ３０において、チェックされるスクリプトが次のスクリプトへ移動する。その後、スクリプト取込サブプログラム２２ａ５は、スクリプトがプログラム終了スクリプトとしての「Ｅｎｄ」であるか否かを判定し（Ｓ３１）、スクリプトがプログラム終了スクリプトの「Ｅｎｄ」ではない場合には（Ｓ３１：Ｎｏ）、ステップＳ２２に戻り、スクリプトがプログラム終了スクリプトの「Ｅｎｄ」である場合には（Ｓ３１：Ｙｅｓ）、スクリプトの取り込みを終了する。
【００５８】
ステップＳ２３において、チェック対象のスクリプトが、制御スクリプトであれば、ステップＳ２３からステップＳ２４へ進み、スクリプト取込サブプログラム２２ａ５は、階層フラグを１つ上げ、その後、ステップＳ３０へ進む。ここで、階層とは、行の冒頭にインデント（所謂字下げ）をいくつ設けているかを示す指標である。本実施の形態では、インデント数がＮ（Ｎは整数）の場合、階層がＮ（Ｎ階層）であるというものとする。また、本実施の形態では、例えば、インデント数がＮからＮ＋１に変わるとき、階層が１上がるというものとする。また、本実施の形態では、例えば、インデント数がＮからＮ−１に変わるとき、階層が１下がるというものとする。本実施の形態では、例えば、最小のインデント数をゼロ（０）としている。以下、本実施の形態では、行の冒頭にインデントが１つも設けられていない場合（インデント数が０の場合）に、階層が最小（ゼロ（０）階層で最小）となるものとして説明するが、これに限定されず、階層が最小となる値（インデント数）を他の値に設定していてもよい。また、階層の増減幅を１とせずに、２以上の整数としてもよい。
【００５９】
ステップＳ２５において、チェック対象のスクリプトが制御終端スクリプトであれば、ステップＳ２５からステップＳ２６へ進み、スクリプト取込サブプログラム２２ａ５は、階層フラグを１つ下げ、その後、ステップＳ３０へ進む。
【００６０】
ステップＳ２７において、チェック対象のスクリプトが空白行であれば、ステップＳ２７からステップＳ２８へ進み、階層がゼロであれば（Ｓ２８：Ｙｅｓ）、ステップＳ２９において、この空白行に制御終端スクリプトとしての「Ｅｎｄ」を挿入する。すなわち、この制御終端スクリプトと、この制御終端スクリプトと対となっている制御スクリプトとの間のスクリプトを取り込み対象として決定し、この取り込み対象とされたスクリプトの取り込みを行い、ステップＳ３０へ進む。一方、階層がゼロでなければ（Ｓ２８：Ｎｏ）、ステップＳ３０へ進む。
【００６１】
このようにして、スクリプト取込サブプログラム２２ａ５は、制御スクリプトが記述された行が挿入された場合、この制御スクリプトが記述された行の次の行から最終行までのスクリプトを制御スクリプトに取り込むが、空白行があるときには、制御スクリプトに後続し、かつ、制御スクリプトと同じ階層にある直近の空白行の直前の行までを、制御スクリプトに取り込む。
【００６２】
このようにしてスクリプト取込サブプログラム２２ａ５によってなされる制御スクリプトの取込例を、具体的なプログラムリストを用いて説明する。
【００６３】
図１０（ａ）に例示されるプログラムリストでは、第１行目から第４行目まで順に同一階層に「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」、「Ｔｕｒｎ  １０  ｄｅｇｒｅｅｓ」、「Ｐｅｎ  Ｄｏｗｎ」、および「Ｍｏｖｅ  １０」というスクリプトが記述されており、空白行は存在しない。
【００６４】
このようなプログラムリストに対して、図１０（ｂ）に示すように、先頭行に、図１０（ａ）での「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」等のスクリプトと同じ階層に制御スクリプト「Ｉｆ  Ｒ＝０」が挿入されると、スクリプト取込サブプログラム２２ａ５は、制御スクリプト「Ｉｆ  Ｒ＝０」の次の行である「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」と記述されたスクリプトから、図１０（ａ）においての最終行である「Ｍｏｖｅ  １０」と記述されたスクリプトまでを、それぞれ１だけ階層を上げて制御スクリプト「Ｉｆ  Ｒ＝０」へ取り込む。ここで、第６行目が新たな最終行とされ、この第６行目には、制御終端スクリプトとしての「Ｅｎｄ」が挿入される。
【００６５】
一方、図１１（ａ）に例示されるプログラムリストでは、第１行目から第３行目まで順に同一階層に「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」、「Ｔｕｒｎ  １０  ｄｅｇｒｅｅｓ」、および「Ｐｅｎ  Ｄｏｗｎ」というスクリプトが記述され、第４行目が空白行Ｉとされ、最終行目である第５行目に「Ｍｏｖｅ  １０」というスクリプトが記述されている。
【００６６】
このようなプログラムリストに対して、図１１（ｂ）に示すように、先頭行に、図１１（ａ）での「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」等のスクリプトと同じ階層に制御スクリプト「Ｉｆ  Ｒ＝０」が挿入されると、スクリプト取込サブプログラム２２ａ５は、制御スクリプト「Ｉｆ  Ｒ＝０」の次の行である「Ｇｏｔｏ  ｘ＝０，  ｙ＝０」と記述されたスクリプトから、制御スクリプト「Ｉｆ  Ｒ＝０」に後続する直近の空白行Ｉの直前の行である「Ｐｅｎ  Ｄｏｗｎ」と記述されたスクリプトまでを、それぞれ１だけ階層を上げて制御スクリプト「Ｉｆ  Ｒ＝０」へ取り込む。ここで、空白行Ｉには、制御スクリプト「Ｉｆ  Ｒ＝０」と対となる制御終端スクリプトとしての「Ｅｎｄ」が挿入される。
【００６７】
一方、図１２（ａ）に示すプログラムリストは、２つの階層から構成されており、第１〜３行目および第６〜８行目が第１階層Ｋに属する一方、第４〜５行目が、第２階層Ｌに属する。第２階層Ｌは、第１階層Ｋに対して開始位置が進んでいることにより（インデント数が１大きいことにより）判別される。そして、第２階層Ｌに属する第４行目が空白行Ｊと、第１階層に属する第７行目が空白行Ｍになっている。
【００６８】
このようなプログラムリストに対して、図１２（ｂ）に示すように、先頭行に、第１階層Ｋに制御スクリプト「Ｉｆ  Ｒ＝０」が挿入された場合、スクリプト取込サブプログラム２２ａ５は、この制御スクリプトに後続し、かつ、この制御スクリプトと同じ階層にある直近の空白行の位置の直前の行までを、制御スクリプトに取り込む。例えば、制御スクリプト「Ｉｆ  Ｒ＝０」に後続する直近の空白行は、第５行目の空白行Ｊであるが、図１２（ａ）に示すように、空白行Ｊは第２階層Ｌに属しており、第１階層Ｋに属する制御スクリプト「Ｉｆ  Ｒ＝０」とは階層が異なる。一方、その次の空白行である第８行目の空白行Ｍは、制御スクリプト「Ｉｆ  Ｒ＝０」と同じ第１階層Ｋに属している。したがって、スクリプト取込サブプログラム２２ａ５は、制御スクリプト「Ｉｆ  Ｒ＝０」の次の行から、第８行目の空白行Ｍの直前の行までを取り込む。ここで、図１２（ｂ）に示すように、空白行Ｍには、制御スクリプト「Ｉｆ  Ｒ＝０」と対となる制御終端スクリプトとしての「Ｅｎｄ」が挿入される。図１２（ｂ）では、制御スクリプト「Ｉｆ  Ｒ＝０」の取り込み対象となった第２〜７行目のスクリプト（図１２（ａ）における第１〜６行目のスクリプト）の階層が、それぞれ１ずつ上がっている。なお、図１２（ｂ）における符号Ｍは、第３階層を示している。  次に、以上のように構成した本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置を搭載した電子機器１０の動作について説明する。
【００６９】
上記では、プログラミング支援プログラム２２ａの各サブプログラム２２ａ１〜２２ａ５の機能について個別に説明したが、以下では、プログラムリストに制御スクリプトが挿入された場合、プログラミング支援プログラム２２ａの各サブプログラム２２ａ１〜２２ａ５が連携することによって、空白行を利用して、プログラムリストを効率的に完成させる際になされる動作を、図１３に示すフローチャートを用いて説明する。
【００７０】
ユーザが、電子機器１０のキー入力部１１を操作することによって、プログラムリストに制御スクリプトを挿入し（Ｓ４１）、カーソル位置に頭スクリプト（「Ｉｆ」または「Ｒｅｐｅａｔ」）を挿入する（Ｓ４２）と、種別判定サブプログラム２２ａ２によって、挿入された制御スクリプトが「Ｅｌｓｅ」を伴う３行スクリプトであるか否かが判定される（Ｓ４３）。
【００７１】
挿入された制御スクリプトが３行スクリプトである場合（Ｓ４３：Ｙｅｓ）、この制御スクリプトの対のスクリプトは種別判定サブプログラム２２ａ２によって「Ｅｌｓｅ」とされる（Ｓ４４）。一方、挿入された制御スクリプトが３行スクリプトではない場合（Ｓ４３：Ｎｏ）、この制御スクリプトの対のスクリプトは、種別判定サブプログラム２２ａ２によって制御終端スクリプトとしての「Ｅｎｄ」とされる（Ｓ４５）。
【００７２】
ステップＳ４４およびＳ４５の後、ユーザが、カーソルキー１１５のうち「↓」キーを押圧すると、カーソル移動サブプログラム２２ａ４によって、カーソルが、後続する空白行のうち、直近の空白行へ移動される（Ｓ４６）。なお、ステップＳ４４およびＳ４５の後、ユーザによる「↓」キーの操作をせずとも、カーソル移動サブプログラム２２ａ４によって、カーソルが、後続する空白行のうち、直近の空白行に移動するようにしてもよい。次に、スクリプト取込サブプログラム２２ａ５によって、頭スクリプトとカーソルとの間のスクリプトの階層が上げられる（Ｓ４７）。
【００７３】
次に、対のスクリプトを決定するためのユーザ入力がなされる（Ｓ４８）。先ず、ユーザによって、カーソルキー１１５の「↑」キーが押圧される（Ｓ４９）と、カーソルが、先行する直近の空白行へ移動され（Ｓ５０）、ステップＳ４７の処理へ戻る。なお、先行する空白行が存在しない場合、カーソルは移動しない。
【００７４】
一方、ステップＳ４８におけるユーザ入力によって、カーソルキー１１５の「↓」キーが押圧される（Ｓ５１）と、カーソルが、後続する直近の空白行へ移動され（Ｓ５２）、ステップＳ４７の処理へ戻る。なお、後続する空白行が存在しない場合、カーソルは移動しない。
【００７５】
さらに、ステップＳ４８におけるユーザ入力によって、「ＥＸＥ」キー１１１ａが押圧される（Ｓ５３）と、上書サブプログラム２２ａ３によって、このカーソル位置、すなわち、現在の空白行に、ステップＳ４４またはステップＳ４５において決定された対のスクリプトが挿入される（Ｓ５４）。
【００７６】
そして、対のスクリプトが「Ｅｌｓｅ」であれば（Ｓ５５：Ｙｅｓ）、種別判定サブプログラム２２ａ２によって、対のスクリプトが「Ｅｎｄ」とされ（Ｓ５６）、ステップＳ４６の処理へ戻り、対のスクリプトが「Ｅｌｓｅ」でなければ（Ｓ５５：Ｎｏ）、すなわち、対のスクリプトが「Ｅｎｄ」であれば、処理が終了する。
【００７７】
以上説明したように、本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置を搭載した電子機器１０によれば、空白行を活用することによって、プログラムリスト実行時の動作に影響を与えることなく、スクリプトを区切ることが可能となる。これによって、プログラムリストに制御スクリプトを挿入した場合、従来のようにプログラムリストの最後のスクリプトまで取り込まれることなく、制御スクリプトの取込範囲をユーザの意図に応じて自由に決めることが可能となる。
【００７８】
さらには、制御スクリプトとして３行スクリプトを取り扱う場合であっても、対となるスクリプトである「Ｅｌｓｅ」や「Ｅｎｄ」をどの空白行に挿入するのかを、ユーザが容易に選択することも可能である。
【００７９】
このように、本発明によれば、前後のスクリプトを区切ることや、選択的にジャンプされることや、新たなスクリプトの作成のために上書きされることが可能な空白行を活用することによって、ディスプレイ１２のサイズ等に起因して表示可能な情報量が制限された電子機器１０を用いてプログラミングする場合であっても、ユーザに不便を感じさせないようにすることが可能となる。
【００８０】
本願発明は、各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。例えば、各実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が異なる形態にして組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。
【００８１】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【００８２】
［１］
ソースコードを表示する表示部と、
前記表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、前記ソースコードのない空白行を挿入する空白行挿入部と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込むソースコード取込部と、
を備えた、プログラミング支援装置。
【００８３】
［２］
前記挿入された行に後続する直近の前記空白行は、前記制御ソースコードと同じ階層にある、発明１に記載のプログラミング支援装置。
【００８４】
［３］
前記各行に表示されたソースコードを指定された順に従って実行するプログラムが実行された場合、前記空白行の実行がスキップされる、発明１または２に記載のプログラミング支援装置。
【００８５】
［４］
１つの前記空白行から前記１つの空白行に対して先行する直近の前記空白行または後続する直近の前記空白行へカーソルをジャンプさせるカーソル移動部をさらに備えた、発明１乃至３のうち何れかに記載のプログラミング支援装置。
【００８６】
［５］
前記プログラムリストに新たな前記ソースコードを挿入するために、前記空白行に前記ソースコードを上書きする上書部をさらに備えた、発明１乃至４のうち何れかに記載のプログラミング支援装置。
【００８７】
［６］
前記ソースコードを入力するためのキー入力部をさらに備えた、発明１乃至５のうち何れかに記載のプログラミング支援装置。
【００８８】
［７］
プロセッサが、
表示部にソースコードを表示する処理と、
前記表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する処理と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む処理と、
を行うプログラミング支援方法。
【００８９】
［８］
表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する機能と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む機能と、
を、コンピュータに実現させるためのプログラム。
【符号の説明】
【００９０】
１０  ・・電子機器
１１  ・・キー入力部
１２  ・・ディスプレイ
２１  ・・ＣＰＵ
２２  ・・メモリ
２２ａ・・プログラミング支援プログラム
２２ｂ・・書込可能データエリア
２３  ・・外部記録媒体
２４  ・・記録媒体読取部
１１１・・数値・演算記号キー群
１１２・・関数機能キー群
１１３・・設定キー群
１１４・・ファンクションキー群
１１５・・カーソルキー
【図１】
2019125062.tif 000003
【図２】
2019125062.tif 000004
【図３】
2019125062.tif 000005
【図４】
2019125062.tif 000006
【図５】
2019125062.tif 000007
【図６】
2019125062.tif 000008
【図７】
2019125062.tif 000009
【図８】
2019125062.tif 000010
【図９】
2019125062.tif 000011
【図１０】
2019125062.tif 000012
【図１１】
2019125062.tif 000013
【図１２】
2019125062.tif 000014
【図１３Ａ】
2019125062.tif 000015
【図１３Ｂ】
2019125062.tif 000016