計算用紙 Version 1.01
Copyright © 1999 yt <y-tange@pop12.odn.ne.jp>
ユーザー関数を定義できる電卓です。簡単なプログラミングもできます。
[動作環境]日本語Windows95 4.00.950a での動作を確認済みです。
[インストール]アーカイブを展開したディレクトリでExTreeUI.exeを実行して下さい。
数式表示部の計算例に注目して下さい。
数式入力部はヒストリー機能が実装されています。上下矢印キーで 操作して下さい。
[終了・リサイズボタン]終了ボタンをクリックするとアプリケーションを終了します。 リサイズボタンをゆっくりドラッグすることによってウインドウサイズ を変更できます。
[右クリックメニュー]
四則演算や、関数計算をそのまま数式を入力することで計算できます。
扱える二項演算子は、+,-,*,/,^(累乗)です。
予め、sin,cos,tan,asin,acos,atan,abs,sqrt,exp,log,ln,delta,step
が関数として定義されています。ただし、
簡易関数型言語として使うこともできます。扱えるデータ型は実数と関数です。
関数の定義の仕方は、
[関数名=式]
です。(例:[f=x+y+z])この定義方法を使うと後で関数を再利用できます。
以前に同じ名前の関数が定義されていた場合は上書きされます。
関数を呼び出すには、
関数名[引数1=式1,引数2=式2,...]
のように"[]"の中で引数名と式を"="で結びます。引数が複数ある場合は","で区切ります。
引数の一部または全部を省略しても構いません。
(例:先ほどの[f=x+y+z]に対しf[x=3,y=4]とすると、7+zが返されます。)
また、関数呼び出しを段階的に行うこともできます。
関数名[引数1=式1,引数2=式2,...][引数a=式a,引数b=式b,...]...
ここで引数a,b,...は式1,式2,...を評価するためにのみ使われるということ
に注意して下さい。
(例:f[x=y+z,y=y,z=z][y=2,z=5])
行頭に"#"をつけるとその行はコメントとみなされ解釈されません。
[無名関数]
関数呼び出しの際に、関数名ではなく直接式を指定することができます。
(式)[引数1=式,引数2=式,...]
のように式を()で括ります。同名の関数が未定義ならば省略することも可能です。
(例:x[x=x^2][x=2],(x^2)[x=2])
関数deltaとstepを掛け算*と組み合わせることによって条件分岐を行うことができます。
これは、a*bという式は先にaを計算し、もしa=0ならばbの計算を行わずa*b=0とみなす
という機構が働いているためです。したがってdelta[x=x]*fは条件分岐に使えますが、
f*delta[x=x]は条件分岐としては意味をもちません。
次の例ではx=0のときにy,それ以外はzを返す関数を定義しています。
(例:[f=delta[x=x]*y+(1-delta[x=x])*z])
これを使うには、f[x=0,y=y,z=z][y=2,z=3]のように呼び出します。
f[x=0][y=2,z=3]とした場合はyの値2は評価されません。これは
[y=2,z=3]が、[x=0]の部分を評価するためだけに使われるためです。
条件分岐を使って再帰的関数が定義できます。次の例では2のべき乗を計算します。
(例:[f=delta[x=x]+(1-delta[x=x])*f[x=x-1]*2])
f[x=10]を計算すると2^10が返されます。他にもフィボナッチ数を計算するには、
(例:[f=delta[x=x]+delta[x=x-1]*2+step[x=x-2]*(f[x=x-1]+f[x=x-2])])
と定義します。
また、再帰の深さが深すぎる場合、スタック溢れ防止のため途中で計算を打ちきります。
いつも使うような関数をテキストファイルにまとめて記述し、ライブラリー化することが できます。読み込みは右クリックメニューから行うと便利です。
ExTreeUI.exe プログラム本体 ExtreeDLL.dll 数式インタプリタ用dll guide.html このドキュメント readme.txt テキスト screenshot.gif スクリーンショット[参考文献・開発環境]