Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaの仕組み / Mathematicaセッションの グローバルな面 /

2.14.2 ダイアログ

計算を進めていく途中でカーネル処理の中間過程を追うことができると,式がどう計算されるかが分かるため便利である.標準対話セッションでは,コマンドDialogを使いダイアログ(2次セッション)を設け中間処理を追跡できるようになっている.2.6.11で説明したように,評価する式にTraceDialogを入れておくと,挿入部が評価される際にDialogが自動的に呼び出され中間結果を参照できるようになる.また,計算中にカーネルを一時停止させた場合も,ダイアログを開き計算状況を参照できるようになっている.

ダイアログの開始と終了

ダイアログを開始する.

In[1]:= Dialog[ ]

通常のセッションと同じようにダイアログの中でも計算させることが可能である.

In[2]:= 2^41

Out[2]=

Returnでダイアログを終了させる.

In[3]:= Return[ ]

Out[1]=

ダイアログを終了する際に,コマンド書式Return[expr]を使い式を指定しておくと,その式を計算させ,計算値をダイアログの戻り値として得ることができる.戻り値が必要なく,また, $IgnoreEOF = Falseの条件が設定してあるなら,EOFを入力するだけでダイアログを止めることができる.ただし,この操作はテキスト型インターフェースに限る.

計算したい式にダイアログコマンドを使う.すると,ダイアログが開始する.

In[2]:= 1 + Dialog[ ]^2

ダイアログからa + bの値が返ってくる.その値がもとの式に挿入される.

In[3]:= Return[a + b]

Out[2]=

ダイアログを開始する上で,「初期式」を与えられると便利である.Dialog[expr]を使うことで,exprを初期式とするダイアログを設けることができる.この式をダイアログの中で参照するには%を使う.

ダイアログを続けて開く.最初のダイアログでは,初期式に式a^2を使う.

In[3]:= Map[Dialog, {a^2, b + c}]

Out[4]=

ダイアログで初期式を参照するには%とすればよい.

In[5]:= %^2 + 1

Out[5]=

1ダイアログを終了させる.戻り値が 戻ってきて,第2ダイアログが始まる. 今度はb + cが初期式である.

In[6]:= Return[%]

Out[4]=

2ダイアログを終える.結果として両ダイアログから得た値を代入した形のもとの式が得られる.

In[5]:= Return[444]

Out[3]=

ダイアログでは,Mathematicaの標準メインループに従った2次的なループが使われ,メインループと同様な処理が行われる.動作環境の設定として,メインループで設定してある各種の現行値が継承される.ダイアログだけで局所的に有効な設定値も中にはあるので,それらに関しては,ダイアログの終了時にもとの値に戻される.

例えば,ダイアログが開始すると,行番号にはメインの$Lineにある現行値が継承される.すなわち,ダイアログの行番号はメインループで使われた最終番号に続く番号が使われる.しかし,ダイアログ自体の$Lineは局所的に有効なだけなので,ダイアログを終了しメインに戻ったなら,メインでの$Lineはもとの最終番号になる.

行番号10の入力でダイアログを始めると,ダイアログの最初の入力行にはIn[11]がふられる.続く行にはIn[12]In[13]と行番号が付けられる.また,ダイアログを終了すると,メインにおける次の行番号は再びIn[11]になる.この時点でなら,ダイアログで得た結果はOut[11]Out[12]の指定で参照が可能である.それでも,一度,メインでIn[12]In[13]の入力行が使われると,同じ行番号のダイアログ結果は上書きされなくなってしまう.

標準セッションにおいて,ダイアログにいるのかいないのかは,入出力行がインデントしているかどうかを見ることで判断することができる.ダイアログからもう1つダイアログを開くと,2種類のインデントを得る.つまり,ネストしたダイアログを使うと,レベルdのダイアログ行にはオブジェクトDialogIndent[d]に指定済みの出力書式に準じたインデントが行われる.ダイアログ行の表示の仕方を変えたければインデント書式を変更すればよい.

Dialogのオプション

DialogSymbolsに何を指定しても,ダイアログにおける$Line$Epilog$MessageListの設定値はそのダイアログだけで有効である.また,$Epilogに後処理を指定しておくと,それはダイアログが終了する際に自動的に行われる.

Dialogを呼び出した後に最初に行われるのが変数の局所化である.次に,オプションDialogPrologに指定した前処理が実行される.また,Dialogに引数を与えた場合は,前処理の次に引数が評価される.これらの処理の後に実際のダイアログが開始する.

Return[expr]のコマンド書式を使いダイアログを終了させると,式を戻り値として得ることができる.特に式を指定しなければダイアログで最後に得られた結果が戻り値になる.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.