● サンプルプログラム - userdef
single character memory を使用したユーザ定義関数処理の一例です。
プログラムはコンソールアプリケーションで、exe名は test.exe となっています。
ユーザ定義関数の登録は、次のユーザステートメントで行います。
@def
書式:
@def 関数名( 仮引数1 , 仮引数2 , 仮引数3 , … ) = 式
- 関数名には計算式規則の名付け規則が適用されます。仮引数名は最大長が 33 文字で、半角文字で構成されている必要があります。
空白やタブ文字は無視されます。
- 仮引数名の重複チェックは行われていません。同名の仮引数がある場合は、最初に出現したものが使用されます。
- 仮引数の最大個数は 32 個です。
- 仮引数は、個々がカンマで区切られ、全体が丸括弧 ( ) で括られていなければなりません。また、左辺と右辺の間にはイコール = を入れる必要があります。
- 右辺には、計算内容を表す式を指定します。仮引数が式内で使用されていなくても問題はありません。
式にはデフォルトの数学関数や定数を使用する事ができます。変数や、他のユーザ定義関数も使用する事ができますが、その場合、関数が使用されるまでに登録が済んでいなければなりません。
- 変数名や関数名と同じ仮引数名がある場合は、仮引数が優先して処理されます。
- @def では、関数名と式の登録、仮引数の関連付けのみを行います。式の評価は、実際に関数を使用した時に行われます(式に関するエラーは、実際に関数を使用した時に発生します)。
- 式を再帰的に記述する事はできません。
使い方
BASIC ソースは test.txt に記述してください。
@def a(x) = x^2 + 2 * x + 1
@print a(5) :# 36 を表示
このサンプルプログラムの @print は簡易版です。計算結果だけを表示します。
仮引数無しの記述をする事もできます。
@def a() = 12345
@print a() ← 呼び出す時も、同じように記述します
このプログラムのユーザ定義関数は StrCalc_setfunc により StrCalc の環境へ組み込まれるので、関数名には StrCalc の規則が適用されます。一方、仮引数名はアプリケーション側の処理で使用されるだけなので、比較的自由に仕様変更する事ができます。
定義した関数を削除する機能は入っていませんので、必要な場合は追加してください。StrCalc の環境から定義した数学関数を削除するには StrCalc_delete_userfunc を使用します。
|