JP7020127B2 - プログラミング支援装置、プログラミング支援方法、およびプログラム - Google Patents

プログラミング支援装置、プログラミング支援方法、およびプログラム Download PDF

Info

Publication number
JP7020127B2
JP7020127B2 JP2018003854A JP2018003854A JP7020127B2 JP 7020127 B2 JP7020127 B2 JP 7020127B2 JP 2018003854 A JP2018003854 A JP 2018003854A JP 2018003854 A JP2018003854 A JP 2018003854A JP 7020127 B2 JP7020127 B2 JP 7020127B2
Authority
JP
Japan
Prior art keywords
line
source code
script
blank
blank line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018003854A
Other languages
English (en)
Other versions
JP2019125062A (ja
Inventor
祥一 岩崎
暁子 村木
利明 田中
早紀 田代
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2018003854A priority Critical patent/JP7020127B2/ja
Priority to US16/243,220 priority patent/US10915301B2/en
Priority to EP19151504.8A priority patent/EP3511838A3/en
Publication of JP2019125062A publication Critical patent/JP2019125062A/ja
Application granted granted Critical
Publication of JP7020127B2 publication Critical patent/JP7020127B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/02Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/02Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
    • G06F15/0225User interface arrangements, e.g. keyboard, display; Interfaces to other computer systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Calculators And Similar Devices (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、例えばグラフ関数電卓のような電子機器を用いたプログラミングを支援するための装置、方法、およびプログラムに関する。
従来、グラフ関数電卓は、グラフの描画、連立方程式の計算、変数を用いた演算ができる電卓である。この種のグラフ関数電卓は、ディスプレイを有し、ディスプレイから、複数行のテキストや、計算結果のグラフを表示することができる。
このようにグラフ関数電卓は、ディスプレイを有していることから、近年では、プログラミング教育への利用も考えられている。
グラフ関数電卓をプログラミング教育のために使用することを想定した場合、例えば、アルゴリズムの学習のための使用が考えられる。この場合、グラフ関数電卓は、例えば、モードを、計算を実行するための計算モードから、アルゴリズムを学習するためのモード(以下、「アルゴリズムモード」と称する)に切り替え可能な構成とすればよい。
アルゴリズムを学習するためのプログラム言語環境としては、例えば、スクラッチ(Scratch)がある。
スクラッチは、スクリプト(ソースコード)が記述(表示)された行を、ディスプレイ上に自由に配置することによってプログラムリストを作成することが可能であり、複数のスクリプトをつなげることにより、連続した動作を実現することができる。また、様々なスクリプトのうち、例えば、「Repeat」や「If」のような制御スクリプト(ソースコードの一種である制御ソースコード)は、制御対象のスクリプトを内部に取り込むことによって、プログラムリストの少なくとも一部を作成することができる。この場合、制御スクリプトが取り込むスクリプトは、単体のスクリプトに限定されず、複数連なったスクリプトも可能である。
特開昭63-103354号公報
しかしながら、グラフ関数電卓をプログラミング教育のために使用する場合、以下のような問題がある。
一般に、グラフ関数電卓は、ディスプレイのサイズ等に起因して表示可能な情報量が限られている。そのため、スクリプトが記述(表示)された行を1列に並べることしかできない構成となっている。したがって、制御スクリプトを後から挿入した場合、挿入位置から、プログラムリストの最後のスクリプトまで取り込みがなされてしまう。すなわち、ユーザは、制御スクリプトにより取り込むべきスクリプトを自由に決定することができず、不便を感じてしまうという問題がある。そして、この問題は、グラフ関数電卓を使ったプログラミング教育の普及の障害ともなりかねない。
本発明はこのような事情に鑑みてなされたものであり、例えば、ディスプレイのサイズ等に起因して表示可能な情報量が制限された電子機器においてプログラミングする場合であっても、ユーザに不便を感じさせないプログラミング支援装置、プログラミング支援方法、およびプログラムを提供することを目的とする。
本発明に係るプログラミング支援装置は、ソースコードを表示する表示部と、表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、ソースコードのない空白行を挿入する空白行挿入部と、プログラムリストに空白行が挿入された場合であって、プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、制御ソースコードが挿入された行と、制御ソースコードが挿入された行よりも処理順番が遅くて最も近い空白行との間にあるソースコードを、制御ソースコードに取り込むソースコード取込部とを備える。
本発明によれば、例えば、ソースコードどうしの間に空白行を挿入した場合には、空白行によりその前後のソースコードを区切ることができるため、例えば、ディスプレイのサイズ等に起因して表示可能な情報量が制限された電子機器においてプログラミングする場合であっても、ユーザに不便を感じさせないようにすることが可能となる。
本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器の外観構成を示す正面図である。 電子機器の電子回路の構成を示すブロック図である。 プログラミング支援プログラムに含まれるサブプログラムを示す構成図である。 スクリプトの種別に応じて決定されるプログラムリスト実行時の処理の流れを示すフローチャートである。 新たなスクリプトを挿入するための処理の流れを示すフローチャートである。 空白行を用いて新たなスクリプトを挿入する例を示す説明図である。 空白行を用いずに新たなスクリプトを挿入する例を示す説明図である。 カーソル移動サブプログラムの機能を説明するためのプログラムリストを示す図である。 スクリプト取込サブプログラムの動作例を説明するためのフローチャートである。 スクリプト取込サブプログラムの機能を説明するためのプログラムリストを示す図である(単一階層であり、空白行がない場合)。 スクリプト取込サブプログラムの機能を説明するためのプログラムリストを示す図である(単一階層であり、空白行がある場合)。 スクリプト取込サブプログラムの機能を説明するためのプログラムリストを示す図である(複数階層であり、空白行がある場合)。 本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器の動作を示すフローチャートである(1/2)。 本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器の動作を示すフローチャートである(2/2)。
以下に、本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置を、図面を参照して説明する。
図1は、本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置が搭載された電子機器10の外観構成を示す正面図である。
図1は、電子機器10をグラフ関数電卓として実施した場合を示す図である。しかしながら、電子機器10は、グラフ関数電卓として構成されるものに限定されず、タブレット端末、パーソナルコンピュータ、スマートフォン、携帯電話機、タッチパネル式PDA(personal digital assistants)、電子ブック、携帯ゲーム機等として構成することもできる。
なお、タブレット端末のように、グラフ関数電卓のような物理的なキー(ボタン)が実装されていない電子機器の場合は、グラフ関数電卓のキーと同様なソフトウェアキーボードをディスプレイに表示し、このソフトウェアキーボードに対するキー操作に応じて処理を実行する。
グラフ関数電卓として構成される電子機器10は、その携帯性の必要からユーザが片手で十分把持し片手で操作可能な小型サイズからなり、本体正面にはキー入力部11およびディスプレイ12が設けられる。
キー入力部11は、例えば、演算に関する情報やスクリプト(ソースコード)等を入力するためのものである。キー入力部11には、数値、数式、およびプログラム命令のためのコマンドを入力したり、計算やプログラムの実行を指示したりするための数値・演算記号キー群111、各種の関数を入力したりメモリ機能を立ち上げたりするための関数機能キー群112、計算モードやアルゴリズムモードといった各種動作モードのメニュー画面を表示させたり、これら動作モードの設定を指示したりするための「MENU」(メニュー)キー113a等を含む設定キー群113、ディスプレイ12の下端に沿って表示された各種の機能を1回のキー操作で立ち上げるためのファンクションキー群114、ディスプレイ12に表示されたカーソルの移動操作やデータ項目の選択操作などを行うためのカーソルキー115が備えられる。
電子機器10のアルゴリズムモードへの設定は、例えば、設定キー群113における「MENU」キー113a等のキーを用いる。具体的には、「MENU」キー113aを押圧すると、ディスプレイ12上には、例えば計算モードやアルゴリズムモード等の各モードに対応した複数のアイコン(メニュー)が表示される。ユーザは、必要に応じてカーソルキー115を押圧することでディスプレイ12上のカーソルをアルゴリズムモードに対応したアイコンまで移動させ、さらに、キー入力部11の所定のキー(例えば、「cos」キー112a)を押圧することで、電子機器10のアルゴリズムモードへの設定を行うことができる。なお、ユーザは、ディスプレイ12上に表示されている複数のアイコンのうち、いずれか1つのアイコンを選択することで、選択したアイコンに対応したモード、すなわち、所望するモードを設定することができる。
なお、電子機器10のアルゴリズムモードへの設定は、これに限らず、例えば、設定キー群113における「MODE」キー113bを押圧することによってなされるようにしてもよい。具体的には、電子機器10は、「MODE」キー113bが押圧されると、計算モードとアルゴリズムモードとが交互に切り替わるように構成されていてもよい。また、電子機器10は、これ以外のモードを備えていてもよく、3つ以上のモードを備えている場合は、「MODE」キー113bを押圧する毎に、モードが順次切り替わるように構成されていればよい。これらのような構成であっても、ユーザは、複数のモードから、所望するモードを設定することができる。
数値・演算記号キー群111としては、[0]~[9](数値)キー、[+][-][×][÷](四則記号)キー、[EXE](実行)キー、[AC](クリア)キーなどが配列される。
関数機能キー群112としては、[sin](サイン)キー、[cos](コサイン)キー、[tan](タンジェント)キーなどが配列される。
設定キー群113としては、[MENU](メニュー)キー113aや「MODE」(モード選択)キー113bの他に、[SHIFT](シフト)キーなどが配列される。
ファンクションキー群114としては、[F1]キー~[F6]キーが配列される。なお、ファンクションキー群114は省略してもよく、[F1]キー~[F6]キーに割り当てられた機能を、ファンクションキー群114のキーではなく、他のキーの操作により実行できるようにしてもよい。
なお、数値・演算記号キー群111、関数機能キー群112、設定キー群113、ファンクションキー群114のキーは、[SHIFT]キーが操作された後に続けて操作されることで、そのキートップに記載されたキー機能ではなく、そのキーの上方(図1において上方)に記載されたキーとして機能できるようになっている。例えば、[SHIFT]キー操作後に[AC]キーが操作(以下、[SHIFT]+[AC]キーと記す。)されると[OFF](電源オフ)キーとなる。[SHIFT]+[MENU]キーは[SET UP](セットアップ)キー、[SHIFT]+[F3]キーは[V-Window](ビューウインドウ:描画領域設定画面の表示を指示する)キーとなる。なお、キートップに記載されているキー機能(通常時キー機能)の表記は、そのキーの周辺(図1において、例えば、該当するキーの上方)に記載されていてもよく、例えば、通常時キー機能の表記と、[SHIFT]キーが操作されている場合([SHIFT]キーが有効とされている場合)に対応するキー機能(SHIFT状態キー機能)の表記とを、該当するキーの周辺に互いに異なる表示形態で記載しておいてもよい。
ディスプレイ12は、スクリプトを表示するためのものであり、ドットマトリクス型の液晶表示ユニットからなる。なお、電子機器10がタブレット端末である場合、ディスプレイ12は、タッチパネルを重ねて設けた液晶表示ユニットからなる。
図2は、電子機器10の電子回路の構成を示すブロック図である。
電子機器10の電子回路は、キー入力部11およびディスプレイ12に加えて、コンピュータであるCPU21、メモリ22、記録媒体読取部24を備えている。
CPU21は、メモリ22に記憶されているプログラミング支援プログラム22aに従い回路各部の動作を制御し、キー入力部11からのキー入力信号に応じた各種の処理を実行する。プログラミング支援プログラム22aは、メモリ22に予め記憶されていてもよいし、あるいはメモリカード等の外部記録媒体23から記録媒体読取部24を介してメモリ22に読み込まれて記憶されたものであってもよい。プログラミング支援プログラム22aは、ユーザがキー入力部11の操作によって書き換えできないようになっている。
メモリ22には、このようなユーザ書き換え不可能な情報の他に、ユーザが書き換え可能なデータを記憶するエリアとして、キー入力部11によりキー入力されたキーコードのデータ、これにより構成される数式のデータや表データ、グラフデータ、プログラミング支援プログラム22aによって作成されるプログラムリスト等が記録されるエリアである書込可能データエリア22bが確保されている。プログラムリストは、スクリプトが記述(表示)された単数または複数の行からなる。
このように構成された電子機器10は、モードをアルゴリズムモードに設定された状態でプログラミング支援プログラム22aを起動させると、数値・演算記号キー群111から、スクリプトの記述のための入力等、プログラムリストを作成するための入力を受け付けることが可能な状態となる。また、CPU21がプログラミング支援プログラム22aに記述された命令に従い回路各部の動作を制御し、ソフトウェアとハードウェアとが協働して動作する。これによって、以下に説明するように、プログラミング支援機能を実現する。
図3は、プログラミング支援プログラム22aに含まれるサブプログラムを示す構成図である。
プログラミング支援プログラム22aは、例えばグラフ関数電卓のように、ディスプレイ12のサイズ等に起因して表示可能な情報量が制限された電子機器10において、ユーザによるプログラミング作業を支援するためのプログラムである。図3に示すように、プログラミング支援プログラム22aは、空白行挿入サブプログラム22a1、種別判定サブプログラム22a2、上書サブプログラム22a3、カーソル移動サブプログラム22a4、およびスクリプト取込サブプログラム22a5を含む。
空白行挿入サブプログラム22a1は、所定の処理を行うように定義されたスクリプトが各行にそれぞれ記述されたプログラムリストのうち、ユーザによって指定された行間に、スクリプトが記述されていない空白行を挿入する。ここでいう「行間」には、プログラムリストを構成する最初の行の直前の位置や、プログラムリストを構成する最後の行の直後の位置が含まれていてもよい。この空白行は、例えば、スクリプトどうしの間に挿入される場合、空白行の挿入位置の前後のスクリプトを区切るために利用可能である。
種別判定サブプログラム22a2は、プログラムリストの各行が、制御スクリプト(制御ソースコード)であるか、通常スクリプト(通常ソースコード)であるか、制御終端スクリプト(制御終端ソースコード)であるか、プログラム終了スクリプト(プログラム終了ソースコード)であるか、空白行であるかを判別する。制御スクリプトとは、「If」または「Repeat」であり、制御終端スクリプトとは、制御スクリプトと対応するスクリプトである「End」である。プログラム終了スクリプトとは、プログラムを終了させるスクリプトである「End」である。通常スクリプトとは、後述する描画スクリプト、制御スクリプト、制御終端スクリプト、およびプログラム終了スクリプト以外のスクリプトである。なお、判別対象のスクリプトが制御スクリプトである場合、さらに「Else」を伴う3行スクリプトであるか否かをも判定する。
プログラムが実行されると、プログラムリストの各行に記述されたスクリプトが、上の行から下の行に向かって順に実行されるが、種別判定サブプログラム22a2によって、空白行であると判定された行はスキップされ、実行対象行が次の行に進む。
一方、種別判定サブプログラム22a2によって、通常スクリプト、制御スクリプト、制御終端スクリプトであると判定された行では、記述されたスクリプトに従った処理がなされ、その後、実行対象行が次の行に進む。
また、種別判定サブプログラム22a2によって、プログラム終了スクリプトであると判定された行では、プログラムの実行が終了する。
このように、種別判定サブプログラム22a2による判定結果に応じて決定されるプログラムリスト実行時の処理の流れ(プログラムリスト実行時におけるスクリプトや空白行の扱い)を、図4に示すフローチャートを用いて説明する。
図4に示すフローチャートは、一例として、初めに描画スクリプトが処理され、ディスプレイ12に、軸や背景が描画された(S1)後に、実行対象行が次の行に進み、その行に記述されたスクリプトに従う処理が実行される(S2~S4)プログラムの流れを示している。
描画スクリプトによる処理(S1)の後、実行対象行が次の行に進むと、種別判定サブプログラム22a2が、この行(新たな実行対象行)の種別を判定する(S2)。
ステップS2において、種別判定サブプログラム22a2が、新たな実行対象行がプログラム終了スクリプトであると判定すると、プログラムの実行が終了する。
一方、ステップS2において、種別判定サブプログラム22a2が、新たな実行対象行がプログラム終了スクリプトではない他のスクリプト(通常スクリプト、制御スクリプト、あるいは、制御終端スクリプトのうち、いずれか1つのスクリプト)であると判定すると、このスクリプトに従う処理が実行され(S3)、ステップS3における処理が実行された後、実行対象行が次の行に進み(S4)、ステップS2の処理に戻る。
さらに、ステップS2において、種別判定サブプログラム22a2が、新たな実行対象行が空白行であると判定すると、この行(空白行)はスキップされ、すなわち、何も実行されず、実行対象行が次の行に進み(S4)、ステップS2の処理に戻る。
このように空白行では、何も実行されないので、プログラムリスト実行時の動作に影響されずにスクリプトを区切るために利用することができる。
一方、空白行を、新たなスクリプトを挿入するために利用することもできる。これを実現するために、上書サブプログラム22a3は、空白行にスクリプトを上書きする機能を提供する。
図5は、新たなスクリプトを挿入するための処理の流れを示すフローチャートである。
上書サブプログラム22a3を利用すれば、新たな行を別途挿入することなく、空白行にスクリプトを上書きすることによって、すなわち、空白行をスクリプトに変換することによって、プログラムリスト内に新たなスクリプトを挿入することができる。これは、図5におけるステップS11およびS12に相当する。例えば、図6に示すように、空白行AにスクリプトB(たとえば、「Turn 10 degrees」)を上書きする。このようにして新たなスクリプトBを生成する。なお、スクリプトが上書きされた空白行は、空白行ではなくなる。
一方、カーソル位置の上側に新たな行を挿入し、その行にスクリプトを書き込むことによって、空白行を利用することなく新たなスクリプトを生成することもできる。これは、図5におけるステップS11およびS13に相当する。例えば、図7に示すように、カーソルのある行Cの上側に新たな行を挿入し、その行にスクリプトデータ(たとえば、「Turn 10 degrees」)を書き込むことによって、新たなスクリプトDを生成する(S13)。
カーソル移動サブプログラム22a4は、1つの空白行から、この1つの空白行に対して先行する直近の空白行または後続する直近の空白行へカーソルをジャンプさせる。カーソル移動サブプログラム22a4によるカーソルのジャンプ機能について、図8に示すプログラムリストを用いて説明する。
図8は、第1行目に「Goto x=0, y=0」というスクリプトが記述され、第2行目は空白行Eであり、第3行目に「Turn 10 degrees」というスクリプトが記述され、第4行目は空白行Fであり、第5行目に「Pen Down」というスクリプトが記述されたプログラムリストGを示す図である。
図8に示すようなプログラムリストGがディスプレイ12から表示されている状態において、カーソルが第1行目にあった場合、カーソルキー115のうち、「↓」キーが押圧されると、カーソル移動サブプログラム22a4が機能することによって、後続する直近の空白行Eのある第2行目へカーソルがジャンプする。さらに、カーソルが第2行目にある時点から、「↓」キーが押圧されると、後続する直近の空白行Fのある第4行目へカーソルがジャンプする。カーソルが第4行目にある時点から、「↓」キーが押圧された場合、第6行目(図示せず)以降に空白行があれば、後続する直近の空白行へカーソルがジャンプする。以降の行に空白行がなければ、「↓」キーが押圧されてもカーソルは移動しない。
一方、カーソルキー115のうち、「↑」キーが押圧されると、先行する直近の空白行へカーソルがジャンプする。例えば、カーソルが第5行目にある場合に、「↑」キーが押圧されると、先行する直近の空白行Fのある第4行目へカーソルがジャンプし、そこから再度「↑」キーが押圧されると、その先行する直近の空白行Eのある第2行目へカーソルがジャンプするという具合である。
スクリプト取込サブプログラム22a5は、プログラムリストに、制御スクリプトが挿入された場合、図9に示すフローチャートに従って、取り込むスクリプトの範囲のチェックと、スクリプトのチェックとを行うことによって、スクリプトの取込を行う。
先ず、プログラムリストに制御スクリプトが挿入される(S20)と、スクリプト取込サブプログラム22a5は、挿入された制御スクリプトに後続するスクリプトを認識することによって、取り込む範囲をチェックする(S21)。
その後、スクリプト取込サブプログラム22a5は、挿入された制御スクリプトに後続するスクリプトの種別を順次チェックする(S22)。具体的には、スクリプト取込サブプログラム22a5は、チェック対象のスクリプトが、ステップS23において、「If」や「Repeat」のような制御スクリプトであるか否かを判定し、ステップS25において、「End」である制御終端スクリプトであるか否かを判定し、ステップS27において、スクリプトが記述されていない空白行であるか否かを判定する。そして、それ以外のスクリプトであれば、ステップS30において、チェックされるスクリプトが次のスクリプトへ移動する。その後、スクリプト取込サブプログラム22a5は、スクリプトがプログラム終了スクリプトとしての「End」であるか否かを判定し(S31)、スクリプトがプログラム終了スクリプトの「End」ではない場合には(S31:No)、ステップS22に戻り、スクリプトがプログラム終了スクリプトの「End」である場合には(S31:Yes)、スクリプトの取り込みを終了する。
ステップS23において、チェック対象のスクリプトが、制御スクリプトであれば、ステップS23からステップS24へ進み、スクリプト取込サブプログラム22a5は、階層フラグを1つ上げ、その後、ステップS30へ進む。ここで、階層とは、行の冒頭にインデント(所謂字下げ)をいくつ設けているかを示す指標である。本実施の形態では、インデント数がN(Nは整数)の場合、階層がN(N階層)であるというものとする。また、本実施の形態では、例えば、インデント数がNからN+1に変わるとき、階層が1上がるというものとする。また、本実施の形態では、例えば、インデント数がNからN-1に変わるとき、階層が1下がるというものとする。本実施の形態では、例えば、最小のインデント数をゼロ(0)としている。以下、本実施の形態では、行の冒頭にインデントが1つも設けられていない場合(インデント数が0の場合)に、階層が最小(ゼロ(0)階層で最小)となるものとして説明するが、これに限定されず、階層が最小となる値(インデント数)を他の値に設定していてもよい。また、階層の増減幅を1とせずに、2以上の整数としてもよい。
ステップS25において、チェック対象のスクリプトが制御終端スクリプトであれば、ステップS25からステップS26へ進み、スクリプト取込サブプログラム22a5は、階層フラグを1つ下げ、その後、ステップS30へ進む。
ステップS27において、チェック対象のスクリプトが空白行であれば、ステップS27からステップS28へ進み、階層がゼロであれば(S28:Yes)、ステップS29において、この空白行に制御終端スクリプトとしての「End」を挿入する。すなわち、この制御終端スクリプトと、この制御終端スクリプトと対となっている制御スクリプトとの間のスクリプトを取り込み対象として決定し、この取り込み対象とされたスクリプトの取り込みを行い、ステップS30へ進む。一方、階層がゼロでなければ(S28:No)、ステップS30へ進む。
このようにして、スクリプト取込サブプログラム22a5は、制御スクリプトが記述された行が挿入された場合、この制御スクリプトが記述された行の次の行から最終行までのスクリプトを制御スクリプトに取り込むが、空白行があるときには、制御スクリプトに後続し、かつ、制御スクリプトと同じ階層にある直近の空白行の直前の行までを、制御スクリプトに取り込む。
このようにしてスクリプト取込サブプログラム22a5によってなされる制御スクリプトの取込例を、具体的なプログラムリストを用いて説明する。
図10(a)に例示されるプログラムリストでは、第1行目から第4行目まで順に同一階層に「Goto x=0, y=0」、「Turn 10 degrees」、「Pen Down」、および「Move 10」というスクリプトが記述されており、空白行は存在しない。
このようなプログラムリストに対して、図10(b)に示すように、先頭行に、図10(a)での「Goto x=0, y=0」等のスクリプトと同じ階層に制御スクリプト「If R=0」が挿入されると、スクリプト取込サブプログラム22a5は、制御スクリプト「If R=0」の次の行である「Goto x=0, y=0」と記述されたスクリプトから、図10(a)においての最終行である「Move 10」と記述されたスクリプトまでを、それぞれ1だけ階層を上げて制御スクリプト「If R=0」へ取り込む。ここで、第6行目が新たな最終行とされ、この第6行目には、制御終端スクリプトとしての「End」が挿入される。
一方、図11(a)に例示されるプログラムリストでは、第1行目から第3行目まで順に同一階層に「Goto x=0, y=0」、「Turn 10 degrees」、および「Pen Down」というスクリプトが記述され、第4行目が空白行Iとされ、最終行目である第5行目に「Move 10」というスクリプトが記述されている。
このようなプログラムリストに対して、図11(b)に示すように、先頭行に、図11(a)での「Goto x=0, y=0」等のスクリプトと同じ階層に制御スクリプト「If R=0」が挿入されると、スクリプト取込サブプログラム22a5は、制御スクリプト「If R=0」の次の行である「Goto x=0, y=0」と記述されたスクリプトから、制御スクリプト「If R=0」に後続する直近の空白行Iの直前の行である「Pen Down」と記述されたスクリプトまでを、それぞれ1だけ階層を上げて制御スクリプト「If R=0」へ取り込む。ここで、空白行Iには、制御スクリプト「If R=0」と対となる制御終端スクリプトとしての「End」が挿入される。
一方、図12(a)に示すプログラムリストは、2つの階層から構成されており、第1~3行目および第6~8行目が第1階層Kに属する一方、第4~5行目が、第2階層Lに属する。第2階層Lは、第1階層Kに対して開始位置が進んでいることにより(インデント数が1大きいことにより)判別される。そして、第2階層Lに属する第4行目が空白行Jと、第1階層に属する第7行目が空白行Mになっている。
このようなプログラムリストに対して、図12(b)に示すように、先頭行に、第1階層Kに制御スクリプト「If R=0」が挿入された場合、スクリプト取込サブプログラム22a5は、この制御スクリプトに後続し、かつ、この制御スクリプトと同じ階層にある直近の空白行の位置の直前の行までを、制御スクリプトに取り込む。例えば、制御スクリプト「If R=0」に後続する直近の空白行は、第5行目の空白行Jであるが、図12(a)に示すように、空白行Jは第2階層Lに属しており、第1階層Kに属する制御スクリプト「If R=0」とは階層が異なる。一方、その次の空白行である第8行目の空白行Mは、制御スクリプト「If R=0」と同じ第1階層Kに属している。したがって、スクリプト取込サブプログラム22a5は、制御スクリプト「If R=0」の次の行から、第8行目の空白行Mの直前の行までを取り込む。ここで、図12(b)に示すように、空白行Mには、制御スクリプト「If R=0」と対となる制御終端スクリプトとしての「End」が挿入される。図12(b)では、制御スクリプト「If R=0」の取り込み対象となった第2~7行目のスクリプト(図12(a)における第1~6行目のスクリプト)の階層が、それぞれ1ずつ上がっている。なお、図12(b)における符号Mは、第3階層を示している。 次に、以上のように構成した本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置を搭載した電子機器10の動作について説明する。
上記では、プログラミング支援プログラム22aの各サブプログラム22a1~22a5の機能について個別に説明したが、以下では、プログラムリストに制御スクリプトが挿入された場合、プログラミング支援プログラム22aの各サブプログラム22a1~22a5が連携することによって、空白行を利用して、プログラムリストを効率的に完成させる際になされる動作を、図13に示すフローチャートを用いて説明する。
ユーザが、電子機器10のキー入力部11を操作することによって、プログラムリストに制御スクリプトを挿入し(S41)、カーソル位置に頭スクリプト(「If」または「Repeat」)を挿入する(S42)と、種別判定サブプログラム22a2によって、挿入された制御スクリプトが「Else」を伴う3行スクリプトであるか否かが判定される(S43)。
挿入された制御スクリプトが3行スクリプトである場合(S43:Yes)、この制御スクリプトの対のスクリプトは種別判定サブプログラム22a2によって「Else」とされる(S44)。一方、挿入された制御スクリプトが3行スクリプトではない場合(S43:No)、この制御スクリプトの対のスクリプトは、種別判定サブプログラム22a2によって制御終端スクリプトとしての「End」とされる(S45)。
ステップS44およびS45の後、ユーザが、カーソルキー115のうち「↓」キーを押圧すると、カーソル移動サブプログラム22a4によって、カーソルが、後続する空白行のうち、直近の空白行へ移動される(S46)。なお、ステップS44およびS45の後、ユーザによる「↓」キーの操作をせずとも、カーソル移動サブプログラム22a4によって、カーソルが、後続する空白行のうち、直近の空白行に移動するようにしてもよい。次に、スクリプト取込サブプログラム22a5によって、頭スクリプトとカーソルとの間のスクリプトの階層が上げられる(S47)。
次に、対のスクリプトを決定するためのユーザ入力がなされる(S48)。先ず、ユーザによって、カーソルキー115の「↑」キーが押圧される(S49)と、カーソルが、先行する直近の空白行へ移動され(S50)、ステップS47の処理へ戻る。なお、先行する空白行が存在しない場合、カーソルは移動しない。
一方、ステップS48におけるユーザ入力によって、カーソルキー115の「↓」キーが押圧される(S51)と、カーソルが、後続する直近の空白行へ移動され(S52)、ステップS47の処理へ戻る。なお、後続する空白行が存在しない場合、カーソルは移動しない。
さらに、ステップS48におけるユーザ入力によって、「EXE」キー111aが押圧される(S53)と、上書サブプログラム22a3によって、このカーソル位置、すなわち、現在の空白行に、ステップS44またはステップS45において決定された対のスクリプトが挿入される(S54)。
そして、対のスクリプトが「Else」であれば(S55:Yes)、種別判定サブプログラム22a2によって、対のスクリプトが「End」とされ(S56)、ステップS46の処理へ戻り、対のスクリプトが「Else」でなければ(S55:No)、すなわち、対のスクリプトが「End」であれば、処理が終了する。
以上説明したように、本発明の実施形態に係るプログラミング支援方法が適用されたプログラミング支援装置を搭載した電子機器10によれば、空白行を活用することによって、プログラムリスト実行時の動作に影響を与えることなく、スクリプトを区切ることが可能となる。これによって、プログラムリストに制御スクリプトを挿入した場合、従来のようにプログラムリストの最後のスクリプトまで取り込まれることなく、制御スクリプトの取込範囲をユーザの意図に応じて自由に決めることが可能となる。
さらには、制御スクリプトとして3行スクリプトを取り扱う場合であっても、対となるスクリプトである「Else」や「End」をどの空白行に挿入するのかを、ユーザが容易に選択することも可能である。
このように、本発明によれば、前後のスクリプトを区切ることや、選択的にジャンプされることや、新たなスクリプトの作成のために上書きされることが可能な空白行を活用することによって、ディスプレイ12のサイズ等に起因して表示可能な情報量が制限された電子機器10を用いてプログラミングする場合であっても、ユーザに不便を感じさせないようにすることが可能となる。
本願発明は、各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。例えば、各実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が異なる形態にして組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
ソースコードを表示する表示部と、
前記表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、前記ソースコードのない空白行を挿入する空白行挿入部と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込むソースコード取込部と、
を備えた、プログラミング支援装置。
[2]
前記挿入された行に後続する直近の前記空白行は、前記制御ソースコードと同じ階層にある、発明1に記載のプログラミング支援装置。
[3]
前記各行に表示されたソースコードを指定された順に従って実行するプログラムが実行された場合、前記空白行の実行がスキップされる、発明1または2に記載のプログラミング支援装置。
[4]
1つの前記空白行から前記1つの空白行に対して先行する直近の前記空白行または後続する直近の前記空白行へカーソルをジャンプさせるカーソル移動部をさらに備えた、発明1乃至3のうち何れかに記載のプログラミング支援装置。
[5]
前記プログラムリストに新たな前記ソースコードを挿入するために、前記空白行に前記ソースコードを上書きする上書部をさらに備えた、発明1乃至4のうち何れかに記載のプログラミング支援装置。
[6]
前記ソースコードを入力するためのキー入力部をさらに備えた、発明1乃至5のうち何れかに記載のプログラミング支援装置。
[7]
プロセッサが、
表示部にソースコードを表示する処理と、
前記表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する処理と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む処理と、
を行うプログラミング支援方法。
[8]
表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する機能と、
前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む機能と、
を、コンピュータに実現させるためのプログラム。
10 ・・電子機器
11 ・・キー入力部
12 ・・ディスプレイ
21 ・・CPU
22 ・・メモリ
22a・・プログラミング支援プログラム
22b・・書込可能データエリア
23 ・・外部記録媒体
24 ・・記録媒体読取部
111・・数値・演算記号キー群
112・・関数機能キー群
113・・設定キー群
114・・ファンクションキー群
115・・カーソルキー

Claims (8)

  1. ソースコードを表示する表示部と、
    前記表示部において、所定の処理を行うように定義されたソースコードがプログラムリストの各行にそれぞれ表示された複数の行のうち、指定された行間に、前記ソースコードのない空白行を挿入する空白行挿入部と、
    前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込むソースコード取込部と、
    を備えた、プログラミング支援装置。
  2. 前記挿入された行に後続する直近の前記空白行は、前記制御ソースコードと同じ階層にある、請求項1に記載のプログラミング支援装置。
  3. 前記各行に表示されたソースコードを指定された順に従って実行するプログラムが実行された場合、前記空白行の実行がスキップされる、請求項1または2に記載のプログラミング支援装置。
  4. 1つの前記空白行から前記1つの空白行に対して先行する直近の前記空白行または後続する直近の前記空白行へカーソルをジャンプさせるカーソル移動部をさらに備えた、請求項1乃至3のうち何れか1項に記載のプログラミング支援装置。
  5. 前記プログラムリストに新たな前記ソースコードを挿入するために、前記空白行に前記ソースコードを上書きする上書部をさらに備えた、請求項1乃至4のうち何れか1項に記載のプログラミング支援装置。
  6. 前記ソースコードを入力するためのキー入力部をさらに備えた、請求項1乃至5のうち何れか1項に記載のプログラミング支援装置。
  7. プロセッサが、
    表示部にソースコードを表示する処理と、
    前記表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する処理と、
    前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む処理と、
    を行うプログラミング支援方法。
  8. 表示部において、所定の処理を行うように定義されたソースコードが各行にそれぞれ表示されたプログラムリストのうち、指定された行間に、前記ソースコードのない空白行を挿入する機能と、
    前記プログラムリストに前記空白行が挿入された場合であって、前記プログラムリストの実行時での処理順番が前記挿入された空白行よりも早い行に、前記ソースコードの一種である制御ソースコードが表示された行が挿入されたとき、前記制御ソースコードが挿入された行と、前記制御ソースコードが挿入された行よりも前記処理順番が遅くて最も近い前記空白行との間にある前記ソースコードを、前記制御ソースコードに取り込む機能と、
    を、コンピュータに実現させるためのプログラム。
JP2018003854A 2018-01-12 2018-01-12 プログラミング支援装置、プログラミング支援方法、およびプログラム Active JP7020127B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018003854A JP7020127B2 (ja) 2018-01-12 2018-01-12 プログラミング支援装置、プログラミング支援方法、およびプログラム
US16/243,220 US10915301B2 (en) 2018-01-12 2019-01-09 Programming support device, programming support method, and non-transitory recording medium
EP19151504.8A EP3511838A3 (en) 2018-01-12 2019-01-11 Programming support device, programming support method, and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018003854A JP7020127B2 (ja) 2018-01-12 2018-01-12 プログラミング支援装置、プログラミング支援方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2019125062A JP2019125062A (ja) 2019-07-25
JP7020127B2 true JP7020127B2 (ja) 2022-02-16

Family

ID=65036596

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018003854A Active JP7020127B2 (ja) 2018-01-12 2018-01-12 プログラミング支援装置、プログラミング支援方法、およびプログラム

Country Status (3)

Country Link
US (1) US10915301B2 (ja)
EP (1) EP3511838A3 (ja)
JP (1) JP7020127B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101128063B1 (ko) 2011-05-03 2012-04-23 테세라, 인코포레이티드 캡슐화 층의 표면에 와이어 본드를 구비하는 패키지 적층형 어셈블리
US9583456B2 (en) 2013-11-22 2017-02-28 Invensas Corporation Multiple bond via arrays of different wire heights on a same substrate
WO2022230191A1 (ja) * 2021-04-30 2022-11-03 日本電信電話株式会社 WebAPI定義情報生成装置、WebAPI定義情報生成方法及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011024554A1 (ja) 2009-08-25 2011-03-03 日本電気株式会社 アセンブル装置、構文解析方法、及びアセンブラプログラム
JP2012133474A (ja) 2010-12-20 2012-07-12 Fujitsu Advanced Engineering Ltd 電子メールの誤送信の判定方法、判定プログラム、通信装置
JP2014153777A (ja) 2013-02-05 2014-08-25 Tokyo Kogei Univ ソースコード検査装置
US20160026439A1 (en) 2014-07-23 2016-01-28 Apple Inc. Interactive Code Editing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59154528A (ja) * 1983-02-23 1984-09-03 Usac Electronics Ind Co Ltd 文書作成処理装置
JPS63103354A (ja) 1986-10-21 1988-05-09 Sharp Corp グラフ表示機能付電卓
JPS6436316A (en) * 1987-07-31 1989-02-07 Nec Corp Simplified editor for education
US7509584B2 (en) * 2004-05-28 2009-03-24 Sap Ag Dynamic ECMAScript class loading
JP4539748B2 (ja) * 2008-04-02 2010-09-08 カシオ計算機株式会社 電子式計算機およびその制御プログラム
US20130042197A1 (en) * 2011-08-12 2013-02-14 Daniel Amare Chemistry and physics calculator

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011024554A1 (ja) 2009-08-25 2011-03-03 日本電気株式会社 アセンブル装置、構文解析方法、及びアセンブラプログラム
JP2012133474A (ja) 2010-12-20 2012-07-12 Fujitsu Advanced Engineering Ltd 電子メールの誤送信の判定方法、判定プログラム、通信装置
JP2014153777A (ja) 2013-02-05 2014-08-25 Tokyo Kogei Univ ソースコード検査装置
US20160026439A1 (en) 2014-07-23 2016-01-28 Apple Inc. Interactive Code Editing

Also Published As

Publication number Publication date
EP3511838A2 (en) 2019-07-17
EP3511838A3 (en) 2019-09-25
JP2019125062A (ja) 2019-07-25
US20190220254A1 (en) 2019-07-18
US10915301B2 (en) 2021-02-09

Similar Documents

Publication Publication Date Title
JP4661654B2 (ja) 数式表示制御装置及び数式表示制御プログラム
EP2797008B1 (en) Graph display device, graph display method and control program
JP7020127B2 (ja) プログラミング支援装置、プログラミング支援方法、およびプログラム
JP4888502B2 (ja) グラフ表示制御装置およびプログラム
CN109445675B (zh) 电子设备、数学式显示控制方法以及记录介质
JP2007264765A (ja) 数式編集装置及び数式編集プログラム
KR101568716B1 (ko) 드래그 방식을 이용한 한글 입력 장치
JP7215054B2 (ja) プログラミング表示装置、プログラミング表示方法、およびプログラム
JP7331901B2 (ja) 電子機器、表示方法、およびプログラム
JP2005228180A (ja) データ処理装置、データ入力方法及びプログラム
JP7505205B2 (ja) 情報処理装置、情報処理方法、サーバ装置およびプログラム
JP7206704B2 (ja) 情報処理方法、情報処理装置、およびプログラム
JP2005235168A (ja) 文字入力装置
JP7388483B2 (ja) 表示制御装置、表示制御方法、およびプログラム
US8332445B2 (en) Computing machine with an inequality computation function
JP6504128B2 (ja) 電子機器、データ処理方法およびプログラム
US10977769B2 (en) Electronic device, movement path recording method, and computer-readable storage medium
JP5979212B2 (ja) 電子機器およびプログラム
KR101454896B1 (ko) 터치 패널을 이용한 한글 입력 장치 및 그의 한글 입력 방법
JP5900138B2 (ja) 分数表示処理装置、数式表示方法およびプログラム
JP6782016B2 (ja) 入力支援装置および入力支援プログラム
JP7024421B2 (ja) 電子機器、表示制御方法、およびプログラム
JP2024038843A (ja) 電子機器、電子機器の制御方法およびプログラム
JP2005173934A (ja) 情報入力装置、情報入力方法、コンピュータプログラム及びコンピュータ読み取り可能な記憶媒体
JP2000132697A (ja) グラフ表示装置及び記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220117

R150 Certificate of patent or registration of utility model

Ref document number: 7020127

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150