文関数とは、1行で書く関数です。たとえば、
のような関数の計算が必要な場合、文関数を使います。に値を入れたら、
計算されるような、通常の関数の場合です。これは1変数の関数ですが、2変数
以上の多変数の関数にも使えます。たとえば、
のような場合です。多変数の関数は、まだ学習していないかもしれませんが、
これも1変数と同じで、やに値を入れると、関数の値がただひとつ決ま
ります。
このように、1行で定義できるような関数を計算するときに文関数を使います。
文関数を用いると、これを呼び出すだけで、何回も計算ができ便利です。
文関数が使われる例として、教科書のプログラム4を載せます。このプログラムは、次のよ
うな動作をします。
- 2次方程式
の1根
を求める分
関を定義する。
- 3組の係数のデータを読み込む。
- 答1は、読み込んだ係数について1根を求め、印刷する。
- 答2は、読み込んだ係数について1根を求め、印刷する。
ここで使われているROOT(A,B,C)=(-B+SQRT(B*B-4.0*A*C))/(2.0*A)が文関数で
す。
ROOT(A,B,C)=(-B+SQRT(B*B-4.0*A*C))/(2.0*A)
DO 10 I=1,3
READ(5,*)X,Y,Z
ANS1=ROOT(X,Y,Z)
ANS2=ROOT(2.0*X,3.0*Y,Z)
WRITE(6,*) 'ANS1=',ANS1,' ANS2=',ANS2
10 CONTINUE
END
文関数の使い方は組込関数とほとんど同じです。ただ、関数の定義はプログラ
マーの仕事です。
文関数の呼び出しは、
関数名(実引数並び)
です。組込関数と同じで、普通の数学の関数と同じ感覚で使えます。このよう
にして呼び出すと、その関数の値が戻ってきます。この戻ってきた値を戻り値
と言います。通常は、先の例のプログラムのように、戻り値は他の変数に格納
します。
文関数の定義は、宣言文の中で書く必要があります。要するに実行文に先立っ
て、以下のように書きます。まず、関数と引数の型の宣言を行います。そうし
て、関数の定義を書きます。
型 関数名
型 引数名
関数名(実引数並び)=関数の計算式
関数や引数の型宣言を書かなかった場合、暗黙の型宣言5に従います。関数と引
数の型が同じであれば、同一の行に書いても良いです。ですから、先の例のプ
ログラムは、
REAL ROOT
REAL A,B,C
ROOT(A,B,C)=(-B+SQRT(B*B-4.0*A*C))/(2.0*A)
と書くべきところを、暗黙の型宣言を利用して、関数の型の宣言を省略してい
ます。
定義した文関数が使えるのは、定義を行ったメインルーチンやサブルーチンの
中だけです。メインルーチンで定義した文関数はメインルーチンでしか使えま
せん。副プログラム(サブルーチン副プログラム、関数副プログラム)で定義し
た文関数は、それぞれの中でしか使えません。変数と同じです。
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年8月20日