ハンディターミナルの開発言語であるBHT-BASIC4.0についての4回目になります。 今回はユーザ定義関数について説明したいと思います。
■ユーザ定義関数
ユーザ定義関数とは、BHT-BASICが既に備わっている関数ではなく、 ユーザが任意で作成する関数のことです。 ユーザが定義できる関数には大きく分けて2種類のものがあり、 DEF FN及びFUNCTIONで定義される値を返す関数と、 SUBで定義される値を返さない関数があります。
このうちFUNCTION関数、SUB関数はDECLAREステートメントで宣言することで 別モジュールで使用することができます。
DEF FN関数及びFUNCTION関数には返す値により 関数の最後にデータ型を示す記号を付加します。
値を返す関数は、私は専らFUNCTION関数を使い、DEF FN関数は殆んど使っていません。 なぜならば、DEF FN関数ではSTATIC変数が使えませんし、 他のモジュールから参照することができないからです。
尚、値を返さない関数は当然のことSUB関数で宣言します。
関数には値を渡さない場合は引数の宣言をしませんが、 値が必要な場合には関数の宣言のところで引数の宣言を行います。 この引数の渡し方には、値渡し(call by value)と、 参照渡し(call by reference)の2種類があります。
■値渡し・参照渡し
以下のソース「MODULE1.SRC」を見てください。
これを実行すると以下の表示の様になります。
FUNCTION関数の宣言はFUNCTIONで始まり、END FUNCTIONで終わります。 関数の引数は仮引数名で宣言し、値渡しはBYVALキーワードで宣言し、 参照渡しはBYREFキーワードで宣言します。 BYVAL、BYREFが無い場合はデフォルトで値渡しになりますが、 引数の意味合いをはっきりさせるため、必ずこのキーワードを付加すべきだと思います。
関数の戻り値は関数名に値を代入することで戻します。
このソースでは、Func1%は値渡し、Func2%は参照渡しの例です。
=====
2016/04/02:の時の情報
■ユーザ定義関数
ユーザ定義関数とは、BHT-BASICが既に備わっている関数ではなく、 ユーザが任意で作成する関数のことです。 ユーザが定義できる関数には大きく分けて2種類のものがあり、 DEF FN及びFUNCTIONで定義される値を返す関数と、 SUBで定義される値を返さない関数があります。
このうちFUNCTION関数、SUB関数はDECLAREステートメントで宣言することで 別モジュールで使用することができます。
DEF FN関数及びFUNCTION関数には返す値により 関数の最後にデータ型を示す記号を付加します。
ユーザ定義関数のデータ型 | DEF FN関数の書式 | FUNCTION関数の書式 |
---|---|---|
整数型 |
FN関数名% | 関数名% |
長整数型 |
FN関数名& | 関数名& |
実数型 |
FN関数名 | 関数名 |
文字型 |
FN関数名$ | 関数名$ |
文字型 |
FN関数名$(・・・)[NNN] (NNN:に文字列長指定) |
関数名$(・・・)[NNN] (NNN:に文字列長指定) |
値を返す関数は、私は専らFUNCTION関数を使い、DEF FN関数は殆んど使っていません。 なぜならば、DEF FN関数ではSTATIC変数が使えませんし、 他のモジュールから参照することができないからです。
尚、値を返さない関数は当然のことSUB関数で宣言します。
関数には値を渡さない場合は引数の宣言をしませんが、 値が必要な場合には関数の宣言のところで引数の宣言を行います。 この引数の渡し方には、値渡し(call by value)と、 参照渡し(call by reference)の2種類があります。
■値渡し・参照渡し
以下のソース「MODULE1.SRC」を見てください。
'File [MODULE1.SRC] FUNCTION Func1%(BYVAL P%) Func1% = P% * 2 '引数を2倍して戻す END FUNCTION FUNCTION Func2%(BYREF P%) Func2% = P% * 2 '引数を2倍して戻す P% = P% + 1 '引数に+1する END FUNCTION DIM I% I% = 10 PRINT "Func1%=" ; Func1%(I%) PRINT "I%=" ; I% 'I%は変わらない PRINT "Func2%=" ; Func2%(I%) PRINT "I%=" ; I% 'I%は変化した!! Wait 0, &h01 'キー入力待ち END
これを実行すると以下の表示の様になります。
FUNCTION関数の宣言はFUNCTIONで始まり、END FUNCTIONで終わります。 関数の引数は仮引数名で宣言し、値渡しはBYVALキーワードで宣言し、 参照渡しはBYREFキーワードで宣言します。 BYVAL、BYREFが無い場合はデフォルトで値渡しになりますが、 引数の意味合いをはっきりさせるため、必ずこのキーワードを付加すべきだと思います。
関数の戻り値は関数名に値を代入することで戻します。
このソースでは、Func1%は値渡し、Func2%は参照渡しの例です。
=====
2016/04/02:の時の情報
PR
コメント