JP2019125055A - 電子機器、表示制御方法、およびプログラム - Google Patents

電子機器、表示制御方法、およびプログラム Download PDF

Info

Publication number
JP2019125055A
JP2019125055A JP2018003811A JP2018003811A JP2019125055A JP 2019125055 A JP2019125055 A JP 2019125055A JP 2018003811 A JP2018003811 A JP 2018003811A JP 2018003811 A JP2018003811 A JP 2018003811A JP 2019125055 A JP2019125055 A JP 2019125055A
Authority
JP
Japan
Prior art keywords
program
display
electronic device
user
script
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.)
Granted
Application number
JP2018003811A
Other languages
English (en)
Other versions
JP7024421B2 (ja
JP2019125055A5 (ja
Inventor
早紀 田代
Saki Tashiro
早紀 田代
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 JP2018003811A priority Critical patent/JP7024421B2/ja
Publication of JP2019125055A publication Critical patent/JP2019125055A/ja
Publication of JP2019125055A5 publication Critical patent/JP2019125055A5/ja
Application granted granted Critical
Publication of JP7024421B2 publication Critical patent/JP7024421B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 スクリプトの実行前に、何らかのエラーが発生する可能性が有ればユーザに報知すること。【解決手段】電子機器10は、ディスプレイ12と、スクリプト実行エンジン22aを備える。スクリプト実行エンジン22aは、プログラムを編集するユーザ操作を受け付ける編集画面をディスプレイ12に表示する表示制御ルーチン22a1と、プログラムの実行前に当該プログラムの実行結果を推定する推定ルーチン22a2と、推定された実行結果に関する情報をユーザに報知する報知ルーチン22a3とを具備する。【選択図】図2

Description

本発明は、例えば関数電卓のように、ディスプレイを備えた電子機器、該ディスプレイによる表示制御方法、およびプログラムに関する。
近年のいわゆる関数電卓は高度な機能を有し、例えば、グラフの描画、連立方程式の計算、変数を用いた演算等の可能な関数電卓が知られている。テキスト情報や計算結果のグラフ等を表示するためのディスプレイを持つものもある。そこで、例えばプログラミングを教育するために関数電卓を利用することが考えられている。
この種の関数電卓は、デフォルトの計算モードに加えて、プログラムを記述することの可能なモードを備える。以下、このモードを『アルゴリズムモード』と称して説明する。ユーザは簡単な操作により、計算モードからアルゴリズムモードに移ることができる。
アルゴリズムモードでは、変数の宣言や、簡単な制御構造等を持つコンパクトなプログラムを記述することができる。以下、この種のプログラムを『スクリプト』と称して説明する。スクリプトは『コマンド』の集合であり、コマンドはそれぞれ特有の処理を実行する。例えば、ディスプレイに表示されるシンボルキャラクター(アバターと称する)を動かしたり、移動させたりするコマンドがある。
ここで、アバターとは、ディスプレイに表示される画面に設定される座標系内の、コマンドに応じて定められる座標値に対応する位置に表示される表示体のことである。アバターは、動物などのキャラクターの画像であってもよいし、矢印やドットなどの抽象的な画像であってもよい。
ところで、作成されたスクリプトがユーザの想定したとおりの挙動を示すとは限らない。例えば、引数の記述ミスなどで無限ループに入ってしまうことがある。このような場合には、スクリプトを強制終了する必要がある。
例えば、ウォッチドッグタイマにより、システムが正常に動作しているかどうかを監視する手法が知られている。しかしこの手法は、OS(Operating System)等のシステムの検出するのが主眼で、その上で動くアプリケーションの動作を判定するには向いていない。このため、例えば、ユーザが作成したスクリプトを実行する前に当該スクリプトが無限ループを含むかどうかを検出し、無限ループを含む場合にその旨をユーザに報知することは、ウォッチドッグタイマを用いても実現することは難しい。
"ウォッチドッグ",[online],IT用語辞典バイナリ,[平成29年12月19日検索],インターネット,<URL:http://ja.wikipedia.org/wiki/%E7%94%9F%E4%BD%93%E8%AA%8D%E8%A8%BC>
上記したように、作成したスクリプトが無限ループを惹起する可能性を含んでいても、ユーザは、スクリプトを実際に実行してみるまでそのことが分からない。
本発明はこのような事情に鑑みてなされたものであり、作成したスクリプトを実行すると何らかのエラーが発生する可能性がある場合に、そのことを、スクリプトを実際に実行する前に、ユーザに対し報知可能な電子機器、表示制御方法、およびプログラムを提供することを目的とする。
本発明に係る電子機器は、ディスプレイと、プログラムを編集するユーザ操作を受け付ける編集画面をディスプレイに表示する表示制御手段と、プログラムの実行前に当該プログラムの実行結果を推定する推定手段と、推定された実行結果に関する情報をユーザに報知する報知手段とを具備する。
図1は、本発明の実施形態に係る表示制御方法が適用された電子機器の外観の一例を示す正面図である。 図2は、電子機器10の一例を示す機能ブロック図である。 図3は、スクリプト実行エンジン22aに含まれるサブルーチンの一例を示す図である。 図4は、スクリプトの編集画面の一例を示す図である。 図5は、にディスプレイ12に表示されているアバターの一例を示す図である。 図6は、『表示可能範囲』および『移動可能範囲』を説明するための図である。 図7は、実施形態に係わる電子機器10の処理手順の一例を示すフローチャートである。 図8は、範囲外エラーを生じる惧れがある場合に表示されるメッセージの一例を示す図である。 図9は、エラーに関係するコマンドを明示する形態の一例を示す図である。 図10は、無限ループを生じる惧れがある場合に表示されるメッセージの一例を示す図である。 図11は、範囲外エラーの有無の検証に係わる処理手順の一例を示すフローチャートである。 図12は、アバターAの位置座標の一例を示す図である。 図13は、無限ループの有無の検証に係わる処理手順の一例を示すフローチャートである。
以下に、本発明の実施形態に係る表示制御方法が適用された電子機器を、図面を参照して説明する。
図1は、本発明の実施形態に係る表示制御方法が適用された電子機器の外観の一例を示す正面図である。図1は、電子機器10を関数電卓として実施した場合を示す。なお関数電卓に限定されず、電子機器10は、タブレット端末、パーソナルコンピュータ、スマートフォン、携帯電話機、タッチパネル式PDA(Personal Digital Assistants)、電子ブック、携帯ゲーム機等として構成することもできる。関数電卓のような物理的なキー(ボタン)を持たない、例えばタブレット端末のような電子機器(図示せず)は、関数電卓のキーと同様なソフトウェアキーボードを表示し、このソフトウェアキーボードに対するキー操作に応じて処理を実行する。
図1において、電子機器10は、本体正面にキー入力部11、およびディスプレイ12を備える。キー入力部11には、数値、数式、およびコマンドを入力したり、計算やスクリプトの実行を指示したりするための数値・演算記号キー群111、各種の関数を入力したりメモリ機能を立ち上げたりするための関数機能キー群112、計算モードやアルゴリズムモードといった各種動作モードのメニュー画面を表示させたり、これら動作モードの設定を指示したりするためのモード選択キー『MODE』等を含む設定キー群113、ディスプレイ12の下端に沿って表示された各種の機能を1回のキー操作で立ち上げるためのファンクションキー群114、ディスプレイ12に表示されたカーソルの移動操作やデータ項目の選択操作などを行うためのカーソルキー115が備えられる。
数値・演算記号キー群111としては、[0]〜[9](数値)キー、[+][−][×][÷](四則記号)キー、[EXE](実行)キー、[AC](クリア)キーなどが配列される。
関数機能キー群112としては、[sin](サイン)キー、[cos](コサイン)キー、[tan](タンジェント)キーなどが配列される。
設定キー群113としては、モード選択キー『MODE』の他に、[MENU](メニュー)キー、[SHIFT](シフト)キーなどが配列される。
ファンクションキー群114としては、[F1]キー〜[F6]キーが配列される。
なお、数値・演算記号キー群111、関数機能キー群112、設定キー群113、ファンクションキー群114のキーは、[SHIFT]キーが操作された後に続けて操作されることで、そのキートップに記載されたキー機能ではなく、そのキーの上方に記載されたキーとして機能できるようになっている。例えば、[SHIFT]キー操作後に[AC]キーが操作(以下、[SHIFT]+[AC]キーと記す。)されると[OFF](電源オフ)キーとなる。[SHIFT]+[MENU]キーは[SET UP](セットアップ)キー、[SHIFT]+[F3]キーは[V−Window](ビューウインドウ:描画領域設定画面の表示を指示する)キーとなる。
ディスプレイ12は、例えばドットマトリクス型の液晶表示ユニットである。電子機器10がタブレット端末であれば、ディスプレイ12は、タッチパネルを重ねて設けた液晶表示ユニットである。
設定キー群113における『MODE』キーが押下されるたびに、電子機器10の動作モードが、計算モードとアルゴリズムモードとで交互に切り替わる。すなわち、電子機器10は、少なくとも、計算モードとアルゴリズムモードの2種類の動作モードを備える。もちろん、3つ以上のモードを備えていてもよく、その場合には『MODE』キーを押下するたびに順次、モードを切り替えるようにすればよい。
図2は、電子機器10の一例を示す機能ブロック図である。電子機器10は、キー入力部11およびディスプレイ12に加えて、CPU(Central Processing Unit)21、メモリ22、および記録媒体読取部24を備える。つまり電子機器10は、プロセッサとメモリとを有する、コンピュータである。
CPU21は、メモリ22に書き込まれているプログラムに従って各部の動作を制御し、キー入力部11からのキー入力信号に応じた各種の処理を実行する。プログラムは、メモリ22に予め記録されていてもよいし、あるいはメモリカード等の外部記録媒体23から記録媒体読取部24を介してメモリ22に読み込まれて記憶されたものであってもよい。
メモリ22は、書き換え不可の領域に加えて、書込可能データエリア22bを有する。書込可能データエリア22bは、例えば、キー入力部11によりキー入力されたキーコードのデータ、数式のデータ、表データ、グラフデータ、あるいはスクリプトのテキストデータ等を記憶するためのエリアである
例えば、メモリ22の書き換え不可の領域に、プログラムとしてのスクリプト実行エンジン22aが記録される。スクリプト実行エンジン22aは、アルゴリズムモードにおけるスクリプトの編集、コンパイル、実行等の、スクリプトの作成から実行に係わる機能を制御するプログラムである。
電子機器10は、プログラムに記述された命令に従ってCPU21が各部の動作を制御し、ソフトウェアとハードウェアとが協働して動作することにより、以下に説明する機能を実現する。
図3は、スクリプト実行エンジン22aに含まれるサブルーチンの一例を示す図である。スクリプト実行エンジン22aは、表示制御ルーチン22a1、推定ルーチン22a2、および報知ルーチン22a3を備える。
表示制御ルーチン22a1は、コマンドを含むスクリプトを編集するユーザ操作を受け付ける編集画面を、ディスプレイ12に表示する。『MODE』キーの押下により電子機器10がアルゴリズムモードになると、表示制御ルーチン22a1は、数値・演算記号キー群111から、コマンドの入力を受け付ける。例えば、ディスプレイ12に表示されているアバターAの表示位置を或る移動量で移動させるコマンドがある。ユーザは、数値・演算記号キー群111を操作して、引数としての移動量とともにコマンドを入力し、スクリプトを作成する。
推定ルーチン22a2は、ユーザにより作成されたスクリプトの実行前に、当該スクリプトの実行結果を推定する。
報知ルーチン22a3は、推定された実行結果に関する情報を、例えばディスプレイ12にメッセージを表示するなどのかたちでユーザに報知する。例えば、推定ルーチン22a2による推定の結果、スクリプトが無限ループを惹起することが判明した場合、または、無限ループを惹起するおそれがあることが推定された場合に、報知ルーチン22a3は、そのスクリプトの実行の可否をメッセージによりユーザに問い合わせる。
また、報知ルーチン22a3は、ディスプレイ12の編集画面で例えば反転表示させたり、カーソルを該当コマンドに移動させることなどで、無限ループに関係するスクリプト内のコマンドを明示する。
また、表示制御ルーチン22a1は、ディスプレイ12にアバターを表示する。推定ルーチン22a2による推定の結果、スクリプトがアバターの座標の範囲外エラーを惹起することが判明した場合、または、または、既定の座標の範囲外となるおそれがあることが推定された場合に、報知ルーチン22a3は、スクリプトの実行の可否をメッセージによりユーザに問い合わせる。
また、報知ルーチン22a3は、ディスプレイ12の編集画面で例えば反転表示させたり、カーソルを該当コマンドに移動させることなどで、範囲外エラーに関係するスクリプト内のコマンドを明示する。
図4は、スクリプトの編集画面の一例を示す図である。この画面から、例えば、数値・演算記号キー群111を操作してスクリプトを入力することができる。『Move 80』は、ディスプレイ12において、所定方向に(例えば、X軸に沿って)、アバターAを『+80』座標移動させるコマンドである。『Move』がコマンド文字列であり、『80』は移動量を指定するための引数である。
図4に示されるようなスクリプトで指定された移動量を移動させる(図4の場合、X軸に沿って、アバターAを、『+80』座標移動させた)と、アバターAの表示位置が、ディスプレイ12の表示可能な表示範囲(『表示可能範囲』)から出てしまうことがある。表示可能範囲は、ディスプレイ12のサイズに応じて、例えば−100<X<+100、−20<Y<+20のような座標値によって予め定められている。
図5に示されるように、現在の、すなわち移動前のアバターAの表示位置が、X軸における『X=57』の座標位置である場合、図4に示すスクリプトに従って、X軸に沿って、『+80』座標移動させると、移動後のアバターAのX軸における座標位置は、『57+80=137』となり、X軸における表示範囲の上限値である『100』を超えてしまう。つまり図4のスクリプトを実行すると、アバターを表示できなくなる。
ただし、表示できなくとも、アバターの位置座標を計算することは可能であり、アバターをその座標まで仮想的に移動させることはできる。このように実施形態では、『表示可能範囲』と『移動可能範囲』とを区別して表記する。
図6は、『表示可能範囲』および『移動可能範囲』を説明するための図である。例えば、図6に示される座標(−100,−100)〜(100,100)の範囲が『表示可能範囲』である。『表示可能範囲』を含む、座標(−999,−999)〜(999,999)の範囲が『移動可能範囲』である。スクリプトの記述内容によってはアバターが『移動可能範囲』の外に出てしまうこともあり、これを『範囲外エラー』と称する。この実施形態では、『範囲外エラー』、および『無限ループ』の発生の可能性を事前に推定する。次に、上記構成における作用を説明する。
図7は、実施形態に係わる電子機器10の処理手順の一例を示すフローチャートである。電子機器10によってプログラミングを学習する際には、先ず、電子機器10のモードをアルゴリズムモードに設定する必要がある。これは、ユーザが、設定キー群113における『MODE』キーを押下し、アルゴリズムモードに切り替えることによって設定される(ステップS1)。モードがアルゴリズムモードに設定されると、電子機器10は、数値・演算記号キー群111から、コマンドの入力を受け付けることが可能な状態となる(ステップS2)。コマンドは複数行にわたって入力することもでき、実行キー(EXEキー)が押下されるまで(ステップS3でYes)、スクリプトの編集が継続される。
EXEキーが押下されると、作成されたスクリプトの実行前に、推定ルーチン22a2はそのスクリプトの実行結果を推定する。すなわち、推定ルーチン22a2は範囲外エラーの有無の確認(ステップS4)と、無限ループの有無の確認(ステップS5)を実行する。範囲外エラーが無く(ステップS4でNo)、無限ループも無ければ(ステップS5)、作成されたスクリプトはそのままプロセッサのマシン語に翻訳され、実行される(ステップS6)。
一方、範囲外エラーの有ることが判定されれば(ステップS4でYes)、報知ルーチン22a3は、図8に示されるような、範囲外エラーが有ることを示すメッセージBをディスプレイ12に表示する(ステップS7)。範囲外エラーが有ることをユーザに確実に報知するために、メッセージBを強調表示したり、あるいは、音とともに報知するようにしても良い。
報知ルーチン22a3は、さらに、スクリプトを修正せずにそのまま実行するか(B1)、または、スクリプトを修正するために編集画面に戻るか(B2)の指定を促すメッセージを表示して、スクリプトの実行の可否を問い合わせる(ステップS8)。
ユーザが『B1』を指定すると(ステップS8でYes)、スクリプトは実行されて範囲外エラーを生じ、『範囲外エラー』などのメッセージが表示されて停止する(ステップS9)。この状態から抜け出るには、例えばACボタンを押下すればよい。
一方、ユーザが『B2』を指定すると(ステップS8でNo)、表示制御ルーチン22a1は、図9に示されるように、範囲外エラーを生じさせる原因となる箇所にカーソルを移動させる(ステップS12)。これにより範囲外エラーに関係するコマンドが明示され、ユーザは、エラーの原因を一目で理解することができる。
一方、ステップS5において無限ループの有ることが判定されれば(ステップS5でYes)、報知ルーチン22a3は、図10に示されるような、無限ループが有ることを示すメッセージCを生成し、ディスプレイ12に表示する(ステップS10)。無限ループが有ることをユーザに確実に報知するために、メッセージCを強調表示したり、あるいは、音とともに報知するようにしても良い。
報知ルーチン22a3は、さらに、スクリプトを修正せずにそのまま実行するか(C1)、または、スクリプトを修正するために編集画面に戻るか(C2)の指定を促すメッセージを表示して、スクリプトの実行の可否を問い合わせる(ステップS11)。
ユーザが『C1』を指定すると(ステップS8でYes)、スクリプトは実行され、無限ループに落ち込む。この状態から抜け出るには、例えばACボタンを押下すればよい。ACボタンが押下されると、電子機器10はBREAK処理を認識して(ステップS13)、無限ループから抜け出て、編集画面にプロンプトを表示する。
この他、BREAK処理には、既定時間Tが経過すると電子機器10の電源を自動的に落とす処理や、既定の回数Xだけループが繰り返されればスクリプトの編集画面に戻る処理がある。既定時間Tとしては、例えば10秒等を設定すればよい。既定回数Xとしては、例えば1万回と設定すればよい。既定時間Tおよび既定回数Xは固定値でも良いし、例えば電子機器10のユーザインタフェースを用いて、任意の値を設定できるようにしても良い。
一方、ユーザが『C2』を指定すると(ステップS8でNo)、表示制御ルーチン22a1は、図9と同様に、無限ループを生じさせる原因となるコマンドにカーソルを移動させる(ステップS12)。これにより無限ループに関係するコマンドが明示され、ユーザは、エラーの原因を一目で理解することができる。
図11は、範囲外エラーの有無の検証に係わる処理手順の一例を示すフローチャートである。推定ルーチン22a2は、スクリプトのコマンドを1行ずつ読み取り(ステップS41)、取得したコマンドがGOTO、またはMOVEのいずれであるかを判定する(ステップS42、S43)いずれのコマンドでもなければ、処理手順は最初のステップS41に戻る。範囲外エラーをもたらすのはGOTO、またはMOVEのいずれかだからである。
コマンドがGOTOであれば(ステップS42でYES)、その引数に1000以上の値があるか否かが判定される(ステップS44)。無ければ(NO)、範囲外エラー無しとしてステップS41に戻る。GOTOの引数に1000以上の値があれば(ステップS44でYES)、推定ルーチン22a2は、範囲外エラー確定(ステップS45)との判定を下す。
コマンドがMOVEであれば(ステップS43でYES)、アバターの向きである角度θの範囲に応じて、複数の判断がなされる。アバターは、その位置座標(x,y)、および現在の向きθを、属性として有する。例えば図12においてアバターの位置は初期位置座標である原点(0,0)であり、その向きθは、X軸正の向きを0°とし、0°〜360°の範囲で設定される。なお図12において、アバターAの最大移動距離Lを次式(1)で計算することができる。
L={(999+999)+(999+999)1/2 … (1)
さらに、範囲外エラーを判定するための変数として、それぞれX座標、Y座標に対応する変数αx,αyを定義する。
さて、図11のステップS43でYESであれば、推定ルーチン22a2はアバターの向きθを判定する。ここでθが90°〜270°の範囲に有れば(ステップS46でYES)、推定ルーチン22a2は、MOVEコマンドで移動量として与えられた引数の値を、変数αxから減算する(ステップS48)。θが90°〜270°の範囲に無ければ(ステップS46でNO)、推定ルーチン22a2は、MOVEコマンドの引数の値を変数αxに加算する(ステップS47)。
次に、推定ルーチン22a2は、αxの絶対値と最大移動距離Lとを比較し(ステップS49)、|αx|>Lであれば(ステップS49でYES)、範囲外エラーのおそれがあることを判定する(ステップS50)。
一方、|αx|≦Lであれば(ステップS49でNO)、推定ルーチン22a2は再びアバターの向きθを判定する(ステップS51)。θが180°〜360°の範囲に有れば(ステップS51でYES)、推定ルーチン22a2は、MOVEコマンドの引数の値を変数αyから減算する(ステップS53)。θが180°〜360°の範囲に無ければ(ステップS46でNO)、推定ルーチン22a2は、MOVEコマンドの引数の値を変数αyに加算する(ステップS52)。
そして、推定ルーチン22a2は、αyの絶対値と最大移動距離Lとを比較し(ステップS49)、|αx|≦Lであれば(ステップS54でNO)、範囲外エラー無しとしてステップS41に戻るが、|αy|>Lであれば(ステップS54でYES)、範囲外エラーのおそれがあることを判定する(ステップS55)。
図11に示される手順では、アバターの向きθの範囲に基づく場合分けにより、変数αx,αyのうちX座標のみ、あるいはY座標のみに関する判定で範囲外エラーの有無を判定することができる、これにより演算量を削減できるなどの効果がある。
図13は、無限ループの有無の検証に係わる処理手順の一例を示すフローチャートである。ここでは、Repeat Untilコマンドを例として採り上げる。Repeat Untilコマンドの構文は、Repeat Until(式)という形で示され、式のbool値がFALSEである間、指定された処理が繰り返される。
図13において、推定ルーチン22a2は、Repeat Untilコマンドの式を評価し(ステップS61)、TRUEであれば無限ループに陥ることは無いので指定された処理がそのまま実行される(ステップS62)。式がFALSEであれば、推定ルーチン22a2は式の内容をチェックし(ステップS63)、定数だけが含まれているのであれば、無限ループに陥ると判定して(FALSEがTRUEになることは無いので)、その旨のメッセージ(ガイダンス情報)をディスプレイ12に表示する(ステップS64)。
式が変数を含んでいて(ステップS63でNO)、変数が一つだけであれば(ステップS65でYES)、推定ルーチン22a2は、Repeat文において値が更新されているか否かを判定する(ステップS66)。ステップS66でNOであれば、FALSEがTRUEになることは無いので無限ループに陥ると判定され、その旨のメッセージがディスプレイ12に表示される(ステップS64)。
一方、ステップS66でYESであれば、推定ルーチン22a2は、変数の次数を判定する(ステップS67)。変数の次数が奇数であれば(ステップS67でNO)、実数解、すなわちX軸との交点が必ず存在する。しかし、Repeatのループ内で解が得られるとは限らない。よって推定ルーチン22a2は、『無限ループのおそれあり』を判定し(ステップS70)、次の処理がそのまま実行される。
変数の次数が偶数であれば(ステップS67でYES)、推定ルーチン22a2は、電子機器10のメモリ22に予め記憶されている解の公式を用いて式を解けるか否かを判定する(ステップS68)。具体的には、電子機器10のメモリ22に、予め、二次方程式の解の公式と、四次の解の公式とが記憶されている場合、電子機器10のメモリ22に記憶されている解の公式の次数である2または4と、上述の変数の次数とを推定ルーチン22a2は比較する。例えば、変数の次数が2であれば、メモリ22に記憶された二次方程式の解の公式を用いて実数解を得ることができる。同様に、変数の次数が4であれば、メモリ22に記憶された四次の解の公式により解を得ることができる。いずれのケースも、ステップS68でYESとなる。一方、電子機器10のメモリ22に予め記憶されている解の公式で解くことができなければ(ステップS68でNO)、推定ルーチン22a2は、『無限ループのおそれあり』を判定し、次の処理をそのまま実行する(ステップS70)。
ステップS68でYESであれば、推定ルーチン22a2は、実数解が有るか否かを判定する(ステップS69)。実数解が存在しない場合、つまり虚数解しかとり得ない場合(ステップS69でNo)には、式の評価は全ての変数値でFALSEとなる。よって推定ルーチン22a2は無限ループに陥ると判定し、その旨のメッセージをディスプレイ12に表示する(ステップS64)。
一方、実数解すなわちX軸との交点が存在する場合(ステップS69でYes)であっても、Repeatのループ内で解が得られるとは限らない。よってここでも推定ルーチン22a2は、『無限ループのおそれあり』を判定し、次の処理がそのまま実行される(ステップS70)。
さらに、ステップS65において、式が複数の変数を含んでいれば(NO)、推定ルーチン22a2はRepeat文において全ての変数の値が更新されているか否かを判定する(ステップS68)。ステップS68でNOであれば、推定ルーチン22a2は『無限ループのおそれあり』を判定し、次の処理がそのまま実行される(ステップS70)。ステップS68でYESであれば、推定ルーチン22a2は無限ループに陥ると判定し、その旨のメッセージをディスプレイ12に表示する(ステップS64)。
以上述べたように実施形態では、アルゴリズムモードにおいて、作成されたスクリプトの実行結果を推定ルーチン22a2によりスクリプトの実行直前に推定する。その結果、無限ループまたは範囲外エラーを含むことが判定されれば、報知ルーチン22a3によりメッセージをユーザに報知し、スクリプトを実行するか、編集画面に戻るかをユーザに選択させるようにした。また、スクリプト編集画面に戻ることが指定されれば、無限ループや範囲外の原因となった箇所にカーソルを移動させて、原因となったコマンドを容易に特定できるようにした。従ってユーザは、スクリプトを実行した後になって予想しない挙動をしたり、応答が無くなってしまったりといった経験をせずに済み、より、ユーザフレンドリな学習環境を作り上げることができる。
また、無限ループに陥ったとしても、既定時間、または既定のサイクルが経過した後に自動でループから抜けるようにしたので、電力消費量を抑えることができる。一般に、電池交換の容易でない関数電卓においては、これは大きなメリットとなる。
これらのことから実施形態によれば、作成したスクリプトを実行すると何らかのエラーが発生する可能性がある場合に、そのことを、スクリプトを実際に実行する前に、ユーザに対し報知可能な電子機器、表示制御方法、およびプログラムを提供することが可能になる。
本発明は、前記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、前記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。例えば、各実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が異なる形態にして組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
ディスプレイと、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する表示制御手段と、
前記プログラムの実行前に当該プログラムの実行結果を推定する推定手段と、
前記推定された実行結果に関する情報をユーザに報知する報知手段とを具備する、電子機器。
[2]
前記推定手段により、前記プログラムが、無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項1に記載の電子機器。
[3]
前記推定手段により、前記プログラムが無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記表示制御手段は、前記プログラムに含まれるコマンドのうち、前記無限ループに関係するコマンドを前記編集画面で明示する、請求項2に記載の電子機器。
[4]
前記表示制御手段は、前記プログラムに基づいて定められる位置に表示体が表示される画面を、前記プログラムの実行結果を表示する実行画面として、前記ディスプレイに表示し、
前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項1から3のいずれか一項に記載の電子機器。
[5]
前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記表示制御手段は、前記プログラム内のコマンドのうち、前記表示体の位置が前記既定の範囲外となることに関係するコマンドを前記編集画面で明示する、請求項4に記載の電子機器。
[6]
ディスプレイを具備する電子機器のプロセッサが、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示し、
前記プログラムの実行前に当該プログラムの実行結果を推定し、
前記推定された実行結果に関する情報をユーザに報知する、表示制御方法。
[7]
ディスプレイを具備する電子機器に、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する機能と、
前記プログラムの実行前に当該プログラムの実行結果を推定する機能と、
前記推定された実行結果に関する情報をユーザに報知する機能とを実行させる、プログラム。
10…電子機器、11…キー入力部、12…ディスプレイ、21…CPU、22…メモリ、22a…スクリプト実行エンジン、22a1…表示制御ルーチン、22a2…推定ルーチン、22a3…報知ルーチン、22b…書込可能データエリア、23…外部記録媒体、24…記録媒体読取部、111…数値・演算記号キー群、112…関数機能キー群、113…設定キー群、114…ファンクションキー群、115…カーソルキー。

Claims (7)

  1. ディスプレイと、
    プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する表示制御手段と、
    前記プログラムの実行前に当該プログラムの実行結果を推定する推定手段と、
    前記推定された実行結果に関する情報をユーザに報知する報知手段とを具備する、電子機器。
  2. 前記推定手段により、前記プログラムが、無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項1に記載の電子機器。
  3. 前記推定手段により、前記プログラムが無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記表示制御手段は、前記プログラムに含まれるコマンドのうち、前記無限ループに関係するコマンドを前記編集画面で明示する、請求項2に記載の電子機器。
  4. 前記表示制御手段は、前記プログラムに基づいて定められる位置に表示体が表示される画面を、前記プログラムの実行結果を表示する実行画面として、前記ディスプレイに表示し、
    前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項1から3のいずれか一項に記載の電子機器。
  5. 前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記表示制御手段は、前記プログラム内のコマンドのうち、前記表示体の位置が前記既定の範囲外となることに関係するコマンドを前記編集画面で明示する、請求項4に記載の電子機器。
  6. ディスプレイを具備する電子機器のプロセッサが、
    プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示し、
    前記プログラムの実行前に当該プログラムの実行結果を推定し、
    前記推定された実行結果に関する情報をユーザに報知する、表示制御方法。
  7. ディスプレイを具備する電子機器に、
    プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する機能と、
    前記プログラムの実行前に当該プログラムの実行結果を推定する機能と、
    前記推定された実行結果に関する情報をユーザに報知する機能とを実行させる、プログラム。
JP2018003811A 2018-01-12 2018-01-12 電子機器、表示制御方法、およびプログラム Active JP7024421B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018003811A JP7024421B2 (ja) 2018-01-12 2018-01-12 電子機器、表示制御方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018003811A JP7024421B2 (ja) 2018-01-12 2018-01-12 電子機器、表示制御方法、およびプログラム

Publications (3)

Publication Number Publication Date
JP2019125055A true JP2019125055A (ja) 2019-07-25
JP2019125055A5 JP2019125055A5 (ja) 2021-02-12
JP7024421B2 JP7024421B2 (ja) 2022-02-24

Family

ID=67399318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018003811A Active JP7024421B2 (ja) 2018-01-12 2018-01-12 電子機器、表示制御方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP7024421B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675816A (ja) * 1992-08-24 1994-03-18 Nec Corp ループ処理誤り検出装置
JPH09282173A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd プログラムの静的解析方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6075816B1 (ja) 2016-10-20 2017-02-08 株式会社ツインズ 多目的運動器具

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675816A (ja) * 1992-08-24 1994-03-18 Nec Corp ループ処理誤り検出装置
JPH09282173A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd プログラムの静的解析方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
三浦 元喜: "「Processing Web IDEにおける無限ループの検出と分析」", 情報教育シンポジウム論文集, vol. 第2017巻, 第3号, JPN6022000661, 10 August 2017 (2017-08-10), pages 16 - 22, ISSN: 0004678916 *

Also Published As

Publication number Publication date
JP7024421B2 (ja) 2022-02-24

Similar Documents

Publication Publication Date Title
JP6221323B2 (ja) グラフ表示装置およびその制御プログラム
JP4961792B2 (ja) 数式編集装置及び数式編集プログラム
JP7020127B2 (ja) プログラミング支援装置、プログラミング支援方法、およびプログラム
JP2019125055A (ja) 電子機器、表示制御方法、およびプログラム
JP2013097766A (ja) グラフ表示装置およびプログラム
JP5760327B2 (ja) 電子機器及びプログラム
KR101366170B1 (ko) 항목의 상태 변경을 위한 사용자 인터페이스
JP2009163524A (ja) 演算処理装置
JP5979212B2 (ja) 電子機器およびプログラム
JP6504128B2 (ja) 電子機器、データ処理方法およびプログラム
JP7505205B2 (ja) 情報処理装置、情報処理方法、サーバ装置およびプログラム
JP7331901B2 (ja) 電子機器、表示方法、およびプログラム
JP5900138B2 (ja) 分数表示処理装置、数式表示方法およびプログラム
JP7087393B2 (ja) 表示制御装置、表示制御方法、およびプログラム
JP2021135936A (ja) 情報処理装置、情報処理方法、サーバ装置およびプログラム
JP2020071601A (ja) 表示処理装置、表示処理方法、およびプログラム
JP2011043917A (ja) 数式表示演算装置およびプログラム
JP2016177507A (ja) 電子機器、計算処理プログラム
JP2008293392A (ja) ラダープログラミングエディタ
JP2020035147A (ja) 情報処理方法、情報処理装置、およびプログラム
JP2023118128A (ja) コンピュータシステム、プログラム、及び方法
JP5028644B2 (ja) 電子式計算機および計算機制御プログラム
JP2007518143A (ja) 演算処理装置
JP5510253B2 (ja) 図形表示装置およびプログラム
JP6365018B2 (ja) 数式表示制御装置およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201221

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211214

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: 20220111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220124

R150 Certificate of patent or registration of utility model

Ref document number: 7024421

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150