(57)【要約】【課題】  スクリプトの実行前に、何らかのエラーが発生する可能性が有ればユーザに報知すること。【解決手段】電子機器１０は、ディスプレイ１２と、スクリプト実行エンジン２２ａを備える。スクリプト実行エンジン２２ａは、プログラムを編集するユーザ操作を受け付ける編集画面をディスプレイ１２に表示する表示制御ルーチン２２ａ１と、プログラムの実行前に当該プログラムの実行結果を推定する推定ルーチン２２ａ２と、推定された実行結果に関する情報をユーザに報知する報知ルーチン２２ａ３とを具備する。【選択図】図２
2019125055.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイと、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する表示制御手段と、
前記プログラムの実行前に当該プログラムの実行結果を推定する推定手段と、
前記推定された実行結果に関する情報をユーザに報知する報知手段とを具備する、電子機器。
【請求項２】
前記推定手段により、前記プログラムが、無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項１に記載の電子機器。
【請求項３】
前記推定手段により、前記プログラムが無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記表示制御手段は、前記プログラムに含まれるコマンドのうち、前記無限ループに関係するコマンドを前記編集画面で明示する、請求項２に記載の電子機器。
【請求項４】
前記表示制御手段は、前記プログラムに基づいて定められる位置に表示体が表示される画面を、前記プログラムの実行結果を表示する実行画面として、前記ディスプレイに表示し、
前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項１から３のいずれか一項に記載の電子機器。
【請求項５】
前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記表示制御手段は、前記プログラム内のコマンドのうち、前記表示体の位置が前記既定の範囲外となることに関係するコマンドを前記編集画面で明示する、請求項４に記載の電子機器。
【請求項６】
ディスプレイを具備する電子機器のプロセッサが、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示し、
前記プログラムの実行前に当該プログラムの実行結果を推定し、
前記推定された実行結果に関する情報をユーザに報知する、表示制御方法。
【請求項７】
ディスプレイを具備する電子機器に、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する機能と、
前記プログラムの実行前に当該プログラムの実行結果を推定する機能と、
前記推定された実行結果に関する情報をユーザに報知する機能とを実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば関数電卓のように、ディスプレイを備えた電子機器、該ディスプレイによる表示制御方法、およびプログラムに関する。
【背景技術】
【０００２】
近年のいわゆる関数電卓は高度な機能を有し、例えば、グラフの描画、連立方程式の計算、変数を用いた演算等の可能な関数電卓が知られている。テキスト情報や計算結果のグラフ等を表示するためのディスプレイを持つものもある。そこで、例えばプログラミングを教育するために関数電卓を利用することが考えられている。
【０００３】
この種の関数電卓は、デフォルトの計算モードに加えて、プログラムを記述することの可能なモードを備える。以下、このモードを『アルゴリズムモード』と称して説明する。ユーザは簡単な操作により、計算モードからアルゴリズムモードに移ることができる。
【０００４】
アルゴリズムモードでは、変数の宣言や、簡単な制御構造等を持つコンパクトなプログラムを記述することができる。以下、この種のプログラムを『スクリプト』と称して説明する。スクリプトは『コマンド』の集合であり、コマンドはそれぞれ特有の処理を実行する。例えば、ディスプレイに表示されるシンボルキャラクター（アバターと称する）を動かしたり、移動させたりするコマンドがある。
【０００５】
ここで、アバターとは、ディスプレイに表示される画面に設定される座標系内の、コマンドに応じて定められる座標値に対応する位置に表示される表示体のことである。アバターは、動物などのキャラクターの画像であってもよいし、矢印やドットなどの抽象的な画像であってもよい。
【０００６】
ところで、作成されたスクリプトがユーザの想定したとおりの挙動を示すとは限らない。例えば、引数の記述ミスなどで無限ループに入ってしまうことがある。このような場合には、スクリプトを強制終了する必要がある。
【０００７】
例えば、ウォッチドッグタイマにより、システムが正常に動作しているかどうかを監視する手法が知られている。しかしこの手法は、ＯＳ（Operating System）等のシステムの検出するのが主眼で、その上で動くアプリケーションの動作を判定するには向いていない。このため、例えば、ユーザが作成したスクリプトを実行する前に当該スクリプトが無限ループを含むかどうかを検出し、無限ループを含む場合にその旨をユーザに報知することは、ウォッチドッグタイマを用いても実現することは難しい。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】“ウォッチドッグ”，[online]，ＩＴ用語辞典バイナリ，［平成29年12月19日検索］,インターネット，<URL:http://ja.wikipedia.org/wiki/%E7%94%9F%E4%BD%93%E8%AA%8D%E8%A8%BC>
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記したように、作成したスクリプトが無限ループを惹起する可能性を含んでいても、ユーザは、スクリプトを実際に実行してみるまでそのことが分からない。
【００１０】
本発明はこのような事情に鑑みてなされたものであり、作成したスクリプトを実行すると何らかのエラーが発生する可能性がある場合に、そのことを、スクリプトを実際に実行する前に、ユーザに対し報知可能な電子機器、表示制御方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る電子機器は、ディスプレイと、プログラムを編集するユーザ操作を受け付ける編集画面をディスプレイに表示する表示制御手段と、プログラムの実行前に当該プログラムの実行結果を推定する推定手段と、推定された実行結果に関する情報をユーザに報知する報知手段とを具備する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施形態に係る表示制御方法が適用された電子機器の外観の一例を示す正面図である。
【図２】図２は、電子機器１０の一例を示す機能ブロック図である。
【図３】図３は、スクリプト実行エンジン２２ａに含まれるサブルーチンの一例を示す図である。
【図４】図４は、スクリプトの編集画面の一例を示す図である。
【図５】図５は、にディスプレイ１２に表示されているアバターの一例を示す図である。
【図６】図６は、『表示可能範囲』および『移動可能範囲』を説明するための図である。
【図７】図７は、実施形態に係わる電子機器１０の処理手順の一例を示すフローチャートである。
【図８】図８は、範囲外エラーを生じる惧れがある場合に表示されるメッセージの一例を示す図である。
【図９】図９は、エラーに関係するコマンドを明示する形態の一例を示す図である。
【図１０】図１０は、無限ループを生じる惧れがある場合に表示されるメッセージの一例を示す図である。
【図１１】図１１は、範囲外エラーの有無の検証に係わる処理手順の一例を示すフローチャートである。
【図１２】図１２は、アバターＡの位置座標の一例を示す図である。
【図１３】図１３は、無限ループの有無の検証に係わる処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本発明の実施形態に係る表示制御方法が適用された電子機器を、図面を参照して説明する。  
図１は、本発明の実施形態に係る表示制御方法が適用された電子機器の外観の一例を示す正面図である。図１は、電子機器１０を関数電卓として実施した場合を示す。なお関数電卓に限定されず、電子機器１０は、タブレット端末、パーソナルコンピュータ、スマートフォン、携帯電話機、タッチパネル式ＰＤＡ(Personal Digital Assistants)、電子ブック、携帯ゲーム機等として構成することもできる。関数電卓のような物理的なキー（ボタン）を持たない、例えばタブレット端末のような電子機器（図示せず）は、関数電卓のキーと同様なソフトウェアキーボードを表示し、このソフトウェアキーボードに対するキー操作に応じて処理を実行する。
【００１４】
図１において、電子機器１０は、本体正面にキー入力部１１、およびディスプレイ１２を備える。キー入力部１１には、数値、数式、およびコマンドを入力したり、計算やスクリプトの実行を指示したりするための数値・演算記号キー群１１１、各種の関数を入力したりメモリ機能を立ち上げたりするための関数機能キー群１１２、計算モードやアルゴリズムモードといった各種動作モードのメニュー画面を表示させたり、これら動作モードの設定を指示したりするためのモード選択キー『ＭＯＤＥ』等を含む設定キー群１１３、ディスプレイ１２の下端に沿って表示された各種の機能を１回のキー操作で立ち上げるためのファンクションキー群１１４、ディスプレイ１２に表示されたカーソルの移動操作やデータ項目の選択操作などを行うためのカーソルキー１１５が備えられる。
【００１５】
数値・演算記号キー群１１１としては、［０］〜［９］（数値）キー、［＋］［−］［×］［÷］（四則記号）キー、［ＥＸＥ］（実行）キー、［ＡＣ］（クリア）キーなどが配列される。  
関数機能キー群１１２としては、［ｓｉｎ］（サイン）キー、［ｃｏｓ］（コサイン）キー、［ｔａｎ］（タンジェント）キーなどが配列される。  
設定キー群１１３としては、モード選択キー『ＭＯＤＥ』の他に、［ＭＥＮＵ］（メニュー）キー、［ＳＨＩＦＴ］（シフト）キーなどが配列される。  
ファンクションキー群１１４としては、［Ｆ１］キー〜［Ｆ６］キーが配列される。
【００１６】
なお、数値・演算記号キー群１１１、関数機能キー群１１２、設定キー群１１３、ファンクションキー群１１４のキーは、［ＳＨＩＦＴ］キーが操作された後に続けて操作されることで、そのキートップに記載されたキー機能ではなく、そのキーの上方に記載されたキーとして機能できるようになっている。例えば、［ＳＨＩＦＴ］キー操作後に［ＡＣ］キーが操作（以下、［ＳＨＩＦＴ］＋［ＡＣ］キーと記す。）されると［ＯＦＦ］（電源オフ）キーとなる。［ＳＨＩＦＴ］＋［ＭＥＮＵ］キーは［ＳＥＴ  ＵＰ］（セットアップ）キー、［ＳＨＩＦＴ］＋［Ｆ３］キーは［Ｖ−Ｗｉｎｄｏｗ］（ビューウインドウ：描画領域設定画面の表示を指示する）キーとなる。
【００１７】
ディスプレイ１２は、例えばドットマトリクス型の液晶表示ユニットである。電子機器１０がタブレット端末であれば、ディスプレイ１２は、タッチパネルを重ねて設けた液晶表示ユニットである。
【００１８】
設定キー群１１３における『ＭＯＤＥ』キーが押下されるたびに、電子機器１０の動作モードが、計算モードとアルゴリズムモードとで交互に切り替わる。すなわち、電子機器１０は、少なくとも、計算モードとアルゴリズムモードの２種類の動作モードを備える。もちろん、３つ以上のモードを備えていてもよく、その場合には『ＭＯＤＥ』キーを押下するたびに順次、モードを切り替えるようにすればよい。
【００１９】
図２は、電子機器１０の一例を示す機能ブロック図である。電子機器１０は、キー入力部１１およびディスプレイ１２に加えて、ＣＰＵ（Central Processing Unit）２１、メモリ２２、および記録媒体読取部２４を備える。つまり電子機器１０は、プロセッサとメモリとを有する、コンピュータである。
【００２０】
ＣＰＵ２１は、メモリ２２に書き込まれているプログラムに従って各部の動作を制御し、キー入力部１１からのキー入力信号に応じた各種の処理を実行する。プログラムは、メモリ２２に予め記録されていてもよいし、あるいはメモリカード等の外部記録媒体２３から記録媒体読取部２４を介してメモリ２２に読み込まれて記憶されたものであってもよい。
【００２１】
メモリ２２は、書き換え不可の領域に加えて、書込可能データエリア２２ｂを有する。書込可能データエリア２２ｂは、例えば、キー入力部１１によりキー入力されたキーコードのデータ、数式のデータ、表データ、グラフデータ、あるいはスクリプトのテキストデータ等を記憶するためのエリアである
例えば、メモリ２２の書き換え不可の領域に、プログラムとしてのスクリプト実行エンジン２２ａが記録される。スクリプト実行エンジン２２ａは、アルゴリズムモードにおけるスクリプトの編集、コンパイル、実行等の、スクリプトの作成から実行に係わる機能を制御するプログラムである。
【００２２】
電子機器１０は、プログラムに記述された命令に従ってＣＰＵ２１が各部の動作を制御し、ソフトウェアとハードウェアとが協働して動作することにより、以下に説明する機能を実現する。
【００２３】
図３は、スクリプト実行エンジン２２ａに含まれるサブルーチンの一例を示す図である。スクリプト実行エンジン２２ａは、表示制御ルーチン２２ａ１、推定ルーチン２２ａ２、および報知ルーチン２２ａ３を備える。
【００２４】
表示制御ルーチン２２ａ１は、コマンドを含むスクリプトを編集するユーザ操作を受け付ける編集画面を、ディスプレイ１２に表示する。『ＭＯＤＥ』キーの押下により電子機器１０がアルゴリズムモードになると、表示制御ルーチン２２ａ１は、数値・演算記号キー群１１１から、コマンドの入力を受け付ける。例えば、ディスプレイ１２に表示されているアバターＡの表示位置を或る移動量で移動させるコマンドがある。ユーザは、数値・演算記号キー群１１１を操作して、引数としての移動量とともにコマンドを入力し、スクリプトを作成する。
【００２５】
推定ルーチン２２ａ２は、ユーザにより作成されたスクリプトの実行前に、当該スクリプトの実行結果を推定する。  
報知ルーチン２２ａ３は、推定された実行結果に関する情報を、例えばディスプレイ１２にメッセージを表示するなどのかたちでユーザに報知する。例えば、推定ルーチン２２ａ２による推定の結果、スクリプトが無限ループを惹起することが判明した場合、または、無限ループを惹起するおそれがあることが推定された場合に、報知ルーチン２２ａ３は、そのスクリプトの実行の可否をメッセージによりユーザに問い合わせる。
【００２６】
また、報知ルーチン２２ａ３は、ディスプレイ１２の編集画面で例えば反転表示させたり、カーソルを該当コマンドに移動させることなどで、無限ループに関係するスクリプト内のコマンドを明示する。
【００２７】
また、表示制御ルーチン２２ａ１は、ディスプレイ１２にアバターを表示する。推定ルーチン２２ａ２による推定の結果、スクリプトがアバターの座標の範囲外エラーを惹起することが判明した場合、または、または、既定の座標の範囲外となるおそれがあることが推定された場合に、報知ルーチン２２ａ３は、スクリプトの実行の可否をメッセージによりユーザに問い合わせる。
【００２８】
また、報知ルーチン２２ａ３は、ディスプレイ１２の編集画面で例えば反転表示させたり、カーソルを該当コマンドに移動させることなどで、範囲外エラーに関係するスクリプト内のコマンドを明示する。
【００２９】
図４は、スクリプトの編集画面の一例を示す図である。この画面から、例えば、数値・演算記号キー群１１１を操作してスクリプトを入力することができる。『Ｍｏｖｅ  ８０』は、ディスプレイ１２において、所定方向に（例えば、Ｘ軸に沿って）、アバターＡを『＋８０』座標移動させるコマンドである。『Ｍｏｖｅ』がコマンド文字列であり、『８０』は移動量を指定するための引数である。
【００３０】
図４に示されるようなスクリプトで指定された移動量を移動させる（図４の場合、Ｘ軸に沿って、アバターＡを、『＋８０』座標移動させた）と、アバターＡの表示位置が、ディスプレイ１２の表示可能な表示範囲（『表示可能範囲』）から出てしまうことがある。表示可能範囲は、ディスプレイ１２のサイズに応じて、例えば−１００＜Ｘ＜＋１００、−２０＜Ｙ＜＋２０のような座標値によって予め定められている。
【００３１】
図５に示されるように、現在の、すなわち移動前のアバターＡの表示位置が、Ｘ軸における『Ｘ＝５７』の座標位置である場合、図４に示すスクリプトに従って、Ｘ軸に沿って、『＋８０』座標移動させると、移動後のアバターＡのＸ軸における座標位置は、『５７＋８０＝１３７』となり、Ｘ軸における表示範囲の上限値である『１００』を超えてしまう。つまり図４のスクリプトを実行すると、アバターを表示できなくなる。
【００３２】
ただし、表示できなくとも、アバターの位置座標を計算することは可能であり、アバターをその座標まで仮想的に移動させることはできる。このように実施形態では、『表示可能範囲』と『移動可能範囲』とを区別して表記する。
【００３３】
図６は、『表示可能範囲』および『移動可能範囲』を説明するための図である。例えば、図６に示される座標（−１００，−１００）〜（１００，１００）の範囲が『表示可能範囲』である。『表示可能範囲』を含む、座標（−９９９，−９９９）〜（９９９，９９９）の範囲が『移動可能範囲』である。スクリプトの記述内容によってはアバターが『移動可能範囲』の外に出てしまうこともあり、これを『範囲外エラー』と称する。この実施形態では、『範囲外エラー』、および『無限ループ』の発生の可能性を事前に推定する。次に、上記構成における作用を説明する。
【００３４】
図７は、実施形態に係わる電子機器１０の処理手順の一例を示すフローチャートである。電子機器１０によってプログラミングを学習する際には、先ず、電子機器１０のモードをアルゴリズムモードに設定する必要がある。これは、ユーザが、設定キー群１１３における『ＭＯＤＥ』キーを押下し、アルゴリズムモードに切り替えることによって設定される（ステップＳ１）。モードがアルゴリズムモードに設定されると、電子機器１０は、数値・演算記号キー群１１１から、コマンドの入力を受け付けることが可能な状態となる（ステップＳ２）。コマンドは複数行にわたって入力することもでき、実行キー（ＥＸＥキー）が押下されるまで（ステップＳ３でＹｅｓ）、スクリプトの編集が継続される。
【００３５】
ＥＸＥキーが押下されると、作成されたスクリプトの実行前に、推定ルーチン２２ａ２はそのスクリプトの実行結果を推定する。すなわち、推定ルーチン２２ａ２は範囲外エラーの有無の確認（ステップＳ４）と、無限ループの有無の確認（ステップＳ５）を実行する。範囲外エラーが無く（ステップＳ４でＮｏ）、無限ループも無ければ（ステップＳ５）、作成されたスクリプトはそのままプロセッサのマシン語に翻訳され、実行される（ステップＳ６）。
【００３６】
一方、範囲外エラーの有ることが判定されれば（ステップＳ４でＹｅｓ）、報知ルーチン２２ａ３は、図８に示されるような、範囲外エラーが有ることを示すメッセージＢをディスプレイ１２に表示する（ステップＳ７）。範囲外エラーが有ることをユーザに確実に報知するために、メッセージＢを強調表示したり、あるいは、音とともに報知するようにしても良い。
【００３７】
報知ルーチン２２ａ３は、さらに、スクリプトを修正せずにそのまま実行するか（Ｂ１）、または、スクリプトを修正するために編集画面に戻るか（Ｂ２）の指定を促すメッセージを表示して、スクリプトの実行の可否を問い合わせる（ステップＳ８）。
【００３８】
ユーザが『Ｂ１』を指定すると（ステップＳ８でＹｅｓ）、スクリプトは実行されて範囲外エラーを生じ、『範囲外エラー』などのメッセージが表示されて停止する（ステップＳ９）。この状態から抜け出るには、例えばＡＣボタンを押下すればよい。
【００３９】
一方、ユーザが『Ｂ２』を指定すると（ステップＳ８でＮｏ）、表示制御ルーチン２２ａ１は、図９に示されるように、範囲外エラーを生じさせる原因となる箇所にカーソルを移動させる（ステップＳ１２）。これにより範囲外エラーに関係するコマンドが明示され、ユーザは、エラーの原因を一目で理解することができる。
【００４０】
一方、ステップＳ５において無限ループの有ることが判定されれば（ステップＳ５でＹｅｓ）、報知ルーチン２２ａ３は、図１０に示されるような、無限ループが有ることを示すメッセージＣを生成し、ディスプレイ１２に表示する（ステップＳ１０）。無限ループが有ることをユーザに確実に報知するために、メッセージＣを強調表示したり、あるいは、音とともに報知するようにしても良い。
【００４１】
報知ルーチン２２ａ３は、さらに、スクリプトを修正せずにそのまま実行するか（Ｃ１）、または、スクリプトを修正するために編集画面に戻るか（Ｃ２）の指定を促すメッセージを表示して、スクリプトの実行の可否を問い合わせる（ステップＳ１１）。
【００４２】
ユーザが『Ｃ１』を指定すると（ステップＳ８でＹｅｓ）、スクリプトは実行され、無限ループに落ち込む。この状態から抜け出るには、例えばＡＣボタンを押下すればよい。ＡＣボタンが押下されると、電子機器１０はＢＲＥＡＫ処理を認識して（ステップＳ１３）、無限ループから抜け出て、編集画面にプロンプトを表示する。
【００４３】
この他、ＢＲＥＡＫ処理には、既定時間Ｔが経過すると電子機器１０の電源を自動的に落とす処理や、既定の回数Ｘだけループが繰り返されればスクリプトの編集画面に戻る処理がある。既定時間Ｔとしては、例えば１０秒等を設定すればよい。既定回数Ｘとしては、例えば１万回と設定すればよい。既定時間Ｔおよび既定回数Ｘは固定値でも良いし、例えば電子機器１０のユーザインタフェースを用いて、任意の値を設定できるようにしても良い。
【００４４】
一方、ユーザが『Ｃ２』を指定すると（ステップＳ８でＮｏ）、表示制御ルーチン２２ａ１は、図９と同様に、無限ループを生じさせる原因となるコマンドにカーソルを移動させる（ステップＳ１２）。これにより無限ループに関係するコマンドが明示され、ユーザは、エラーの原因を一目で理解することができる。
【００４５】
図１１は、範囲外エラーの有無の検証に係わる処理手順の一例を示すフローチャートである。推定ルーチン２２ａ２は、スクリプトのコマンドを１行ずつ読み取り（ステップＳ４１）、取得したコマンドがＧＯＴＯ、またはＭＯＶＥのいずれであるかを判定する（ステップＳ４２、Ｓ４３）いずれのコマンドでもなければ、処理手順は最初のステップＳ４１に戻る。範囲外エラーをもたらすのはＧＯＴＯ、またはＭＯＶＥのいずれかだからである。
【００４６】
コマンドがＧＯＴＯであれば（ステップＳ４２でＹＥＳ）、その引数に１０００以上の値があるか否かが判定される（ステップＳ４４）。無ければ（ＮＯ）、範囲外エラー無しとしてステップＳ４１に戻る。ＧＯＴＯの引数に１０００以上の値があれば（ステップＳ４４でＹＥＳ）、推定ルーチン２２ａ２は、範囲外エラー確定（ステップＳ４５）との判定を下す。
【００４７】
コマンドがＭＯＶＥであれば（ステップＳ４３でＹＥＳ）、アバターの向きである角度θの範囲に応じて、複数の判断がなされる。アバターは、その位置座標（ｘ，ｙ）、および現在の向きθを、属性として有する。例えば図１２においてアバターの位置は初期位置座標である原点（０，０）であり、その向きθは、Ｘ軸正の向きを０°とし、０°〜３６０°の範囲で設定される。なお図１２において、アバターＡの最大移動距離Ｌを次式（１）で計算することができる。  
Ｌ＝｛（９９９＋９９９）２＋（９９９＋９９９）２｝１／２  …  （１）  
さらに、範囲外エラーを判定するための変数として、それぞれＸ座標、Ｙ座標に対応する変数αｘ，αｙを定義する。
【００４８】
さて、図１１のステップＳ４３でＹＥＳであれば、推定ルーチン２２ａ２はアバターの向きθを判定する。ここでθが９０°〜２７０°の範囲に有れば（ステップＳ４６でＹＥＳ）、推定ルーチン２２ａ２は、ＭＯＶＥコマンドで移動量として与えられた引数の値を、変数αｘから減算する（ステップＳ４８）。θが９０°〜２７０°の範囲に無ければ（ステップＳ４６でＮＯ）、推定ルーチン２２ａ２は、ＭＯＶＥコマンドの引数の値を変数αｘに加算する（ステップＳ４７）。
【００４９】
次に、推定ルーチン２２ａ２は、αｘの絶対値と最大移動距離Ｌとを比較し（ステップＳ４９）、｜αｘ｜＞Ｌであれば（ステップＳ４９でＹＥＳ）、範囲外エラーのおそれがあることを判定する（ステップＳ５０）。
【００５０】
一方、｜αｘ｜≦Ｌであれば（ステップＳ４９でＮＯ）、推定ルーチン２２ａ２は再びアバターの向きθを判定する（ステップＳ５１）。θが１８０°〜３６０°の範囲に有れば（ステップＳ５１でＹＥＳ）、推定ルーチン２２ａ２は、ＭＯＶＥコマンドの引数の値を変数αｙから減算する（ステップＳ５３）。θが１８０°〜３６０°の範囲に無ければ（ステップＳ４６でＮＯ）、推定ルーチン２２ａ２は、ＭＯＶＥコマンドの引数の値を変数αｙに加算する（ステップＳ５２）。
【００５１】
そして、推定ルーチン２２ａ２は、αｙの絶対値と最大移動距離Ｌとを比較し（ステップＳ４９）、｜αｘ｜≦Ｌであれば（ステップＳ５４でＮＯ）、範囲外エラー無しとしてステップＳ４１に戻るが、｜αｙ｜＞Ｌであれば（ステップＳ５４でＹＥＳ）、範囲外エラーのおそれがあることを判定する（ステップＳ５５）。
【００５２】
図１１に示される手順では、アバターの向きθの範囲に基づく場合分けにより、変数αｘ，αｙのうちＸ座標のみ、あるいはＹ座標のみに関する判定で範囲外エラーの有無を判定することができる、これにより演算量を削減できるなどの効果がある。
【００５３】
図１３は、無限ループの有無の検証に係わる処理手順の一例を示すフローチャートである。ここでは、Ｒｅｐｅａｔ Ｕｎｔｉｌコマンドを例として採り上げる。Ｒｅｐｅａｔ Ｕｎｔｉｌコマンドの構文は、Ｒｅｐｅａｔ Ｕｎｔｉｌ（式）という形で示され、式のｂｏｏｌ値がＦＡＬＳＥである間、指定された処理が繰り返される。
【００５４】
図１３において、推定ルーチン２２ａ２は、Ｒｅｐｅａｔ Ｕｎｔｉｌコマンドの式を評価し（ステップＳ６１）、ＴＲＵＥであれば無限ループに陥ることは無いので指定された処理がそのまま実行される（ステップＳ６２）。式がＦＡＬＳＥであれば、推定ルーチン２２ａ２は式の内容をチェックし（ステップＳ６３）、定数だけが含まれているのであれば、無限ループに陥ると判定して（ＦＡＬＳＥがＴＲＵＥになることは無いので）、その旨のメッセージ（ガイダンス情報）をディスプレイ１２に表示する（ステップＳ６４）。
【００５５】
式が変数を含んでいて（ステップＳ６３でＮＯ）、変数が一つだけであれば（ステップＳ６５でＹＥＳ）、推定ルーチン２２ａ２は、Ｒｅｐｅａｔ文において値が更新されているか否かを判定する（ステップＳ６６）。ステップＳ６６でＮＯであれば、ＦＡＬＳＥがＴＲＵＥになることは無いので無限ループに陥ると判定され、その旨のメッセージがディスプレイ１２に表示される（ステップＳ６４）。
【００５６】
一方、ステップＳ６６でＹＥＳであれば、推定ルーチン２２ａ２は、変数の次数を判定する（ステップＳ６７）。変数の次数が奇数であれば（ステップＳ６７でＮＯ）、実数解、すなわちＸ軸との交点が必ず存在する。しかし、Repeatのループ内で解が得られるとは限らない。よって推定ルーチン２２ａ２は、『無限ループのおそれあり』を判定し（ステップＳ７０）、次の処理がそのまま実行される。
【００５７】
変数の次数が偶数であれば（ステップＳ６７でＹＥＳ）、推定ルーチン２２ａ２は、電子機器１０のメモリ２２に予め記憶されている解の公式を用いて式を解けるか否かを判定する（ステップＳ６８）。具体的には、電子機器１０のメモリ２２に、予め、二次方程式の解の公式と、四次の解の公式とが記憶されている場合、電子機器１０のメモリ２２に記憶されている解の公式の次数である２または４と、上述の変数の次数とを推定ルーチン２２ａ２は比較する。例えば、変数の次数が２であれば、メモリ２２に記憶された二次方程式の解の公式を用いて実数解を得ることができる。同様に、変数の次数が４であれば、メモリ２２に記憶された四次の解の公式により解を得ることができる。いずれのケースも、ステップＳ６８でＹＥＳとなる。一方、電子機器１０のメモリ２２に予め記憶されている解の公式で解くことができなければ（ステップＳ６８でＮＯ）、推定ルーチン２２ａ２は、『無限ループのおそれあり』を判定し、次の処理をそのまま実行する（ステップＳ７０）。
【００５８】
ステップＳ６８でＹＥＳであれば、推定ルーチン２２ａ２は、実数解が有るか否かを判定する（ステップＳ６９）。実数解が存在しない場合、つまり虚数解しかとり得ない場合（ステップＳ６９でＮｏ）には、式の評価は全ての変数値でＦＡＬＳＥとなる。よって推定ルーチン２２ａ２は無限ループに陥ると判定し、その旨のメッセージをディスプレイ１２に表示する（ステップＳ６４）。
【００５９】
一方、実数解すなわちＸ軸との交点が存在する場合（ステップＳ６９でＹｅｓ）であっても、Repeatのループ内で解が得られるとは限らない。よってここでも推定ルーチン２２ａ２は、『無限ループのおそれあり』を判定し、次の処理がそのまま実行される（ステップＳ７０）。
【００６０】
さらに、ステップＳ６５において、式が複数の変数を含んでいれば（ＮＯ）、推定ルーチン２２ａ２はＲｅｐｅａｔ文において全ての変数の値が更新されているか否かを判定する（ステップＳ６８）。ステップＳ６８でＮＯであれば、推定ルーチン２２ａ２は『無限ループのおそれあり』を判定し、次の処理がそのまま実行される（ステップＳ７０）。ステップＳ６８でＹＥＳであれば、推定ルーチン２２ａ２は無限ループに陥ると判定し、その旨のメッセージをディスプレイ１２に表示する（ステップＳ６４）。
【００６１】
以上述べたように実施形態では、アルゴリズムモードにおいて、作成されたスクリプトの実行結果を推定ルーチン２２ａ２によりスクリプトの実行直前に推定する。その結果、無限ループまたは範囲外エラーを含むことが判定されれば、報知ルーチン２２ａ３によりメッセージをユーザに報知し、スクリプトを実行するか、編集画面に戻るかをユーザに選択させるようにした。また、スクリプト編集画面に戻ることが指定されれば、無限ループや範囲外の原因となった箇所にカーソルを移動させて、原因となったコマンドを容易に特定できるようにした。従ってユーザは、スクリプトを実行した後になって予想しない挙動をしたり、応答が無くなってしまったりといった経験をせずに済み、より、ユーザフレンドリな学習環境を作り上げることができる。
【００６２】
また、無限ループに陥ったとしても、既定時間、または既定のサイクルが経過した後に自動でループから抜けるようにしたので、電力消費量を抑えることができる。一般に、電池交換の容易でない関数電卓においては、これは大きなメリットとなる。
【００６３】
これらのことから実施形態によれば、作成したスクリプトを実行すると何らかのエラーが発生する可能性がある場合に、そのことを、スクリプトを実際に実行する前に、ユーザに対し報知可能な電子機器、表示制御方法、およびプログラムを提供することが可能になる。
【００６４】
本発明は、前記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、前記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。例えば、各実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が異なる形態にして組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。
【００６５】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【００６６】
［１］
ディスプレイと、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する表示制御手段と、
前記プログラムの実行前に当該プログラムの実行結果を推定する推定手段と、
前記推定された実行結果に関する情報をユーザに報知する報知手段とを具備する、電子機器。
【００６７】
［２］
前記推定手段により、前記プログラムが、無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項１に記載の電子機器。
【００６８】
［３］
前記推定手段により、前記プログラムが無限ループを惹起することが判明した場合、または、前記無限ループを惹起するおそれがあることが推定された場合に、前記表示制御手段は、前記プログラムに含まれるコマンドのうち、前記無限ループに関係するコマンドを前記編集画面で明示する、請求項２に記載の電子機器。
【００６９】
［４］
前記表示制御手段は、前記プログラムに基づいて定められる位置に表示体が表示される画面を、前記プログラムの実行結果を表示する実行画面として、前記ディスプレイに表示し、
前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記報知手段は、当該プログラムの実行の可否を前記情報によりユーザに問い合わせる、請求項１から３のいずれか一項に記載の電子機器。
【００７０】
［５］
前記推定手段により、前記プログラムに基づいて定められる前記表示体の位置が、既定の範囲外となることが判明した場合、または、前記既定の範囲外となるおそれがあることが推定された場合に、前記表示制御手段は、前記プログラム内のコマンドのうち、前記表示体の位置が前記既定の範囲外となることに関係するコマンドを前記編集画面で明示する、請求項４に記載の電子機器。
【００７１】
［６］
ディスプレイを具備する電子機器のプロセッサが、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示し、
前記プログラムの実行前に当該プログラムの実行結果を推定し、
前記推定された実行結果に関する情報をユーザに報知する、表示制御方法。
【００７２】
［７］
ディスプレイを具備する電子機器に、
プログラムを編集するユーザ操作を受け付ける編集画面を前記ディスプレイに表示する機能と、
前記プログラムの実行前に当該プログラムの実行結果を推定する機能と、
前記推定された実行結果に関する情報をユーザに報知する機能とを実行させる、プログラム。
【符号の説明】
【００７３】
１０…電子機器、１１…キー入力部、１２…ディスプレイ、２１…ＣＰＵ、２２…メモリ、２２ａ…スクリプト実行エンジン、２２ａ１…表示制御ルーチン、２２ａ２…推定ルーチン、２２ａ３…報知ルーチン、２２ｂ…書込可能データエリア、２３…外部記録媒体、２４…記録媒体読取部、１１１…数値・演算記号キー群、１１２…関数機能キー群、１１３…設定キー群、１１４…ファンクションキー群、１１５…カーソルキー。
【図１】
2019125055.tif 000003
【図２】
2019125055.tif 000004
【図３】
2019125055.tif 000005
【図４】
2019125055.tif 000006
【図５】
2019125055.tif 000007
【図６】
2019125055.tif 000008
【図７】
2019125055.tif 000009
【図８】
2019125055.tif 000010
【図９】
2019125055.tif 000011
【図１０】
2019125055.tif 000012
【図１１】
2019125055.tif 000013
【図１２】
2019125055.tif 000014
【図１３】
2019125055.tif 000015