3 文関数

3.1 どのような時に使うか

文関数とは、1行で書く関数です。たとえば、

\begin{equation*}\begin{aligned}f(x)&=x^3+5x^2+2x+6\\ g(x)&=\sin(x)*\cos(x)-x^2+\tan(5x^3) \end{aligned}\end{equation*}

のような関数の計算が必要な場合、文関数を使います。$ x$に値を入れたら、 計算されるような、通常の関数の場合です。これは1変数の関数ですが、2変数 以上の多変数の関数にも使えます。たとえば、

\begin{equation*}\begin{aligned}&f(x,y)=5x^2+3xy+2y^2+6x+9y+7\\ &g(x,y,z)=\sin(x+y)+\cos(y+z)+\tan(x+y+x)+xyz \end{aligned}\end{equation*}

のような場合です。多変数の関数は、まだ学習していないかもしれませんが、 これも1変数と同じで、$ x$$ y$に値を入れると、関数の値がただひとつ決ま ります。

このように、1行で定義できるような関数を計算するときに文関数を使います。 文関数を用いると、これを呼び出すだけで、何回も計算ができ便利です。

3.2 実際のプログラム

文関数が使われる例として、教科書のプログラム4を載せます。このプログラムは、次のよ うな動作をします。 ここで使われている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

文関数の使い方は組込関数とほとんど同じです。ただ、関数の定義はプログラ マーの仕事です。

3.3 文関数の文法

3.3.1 文関数の呼び出し

文関数の呼び出しは、
      関数名(実引数並び)
です。組込関数と同じで、普通の数学の関数と同じ感覚で使えます。このよう にして呼び出すと、その関数の値が戻ってきます。この戻ってきた値を戻り値 と言います。通常は、先の例のプログラムのように、戻り値は他の変数に格納 します。

3.3.2 文関数の定義

文関数の定義は、宣言文の中で書く必要があります。要するに実行文に先立っ て、以下のように書きます。まず、関数と引数の型の宣言を行います。そうし て、関数の定義を書きます。
      型 関数名
      型 引数名
      関数名(実引数並び)=関数の計算式
関数や引数の型宣言を書かなかった場合、暗黙の型宣言5に従います。関数と引 数の型が同じであれば、同一の行に書いても良いです。ですから、先の例のプ ログラムは、
       REAL ROOT
       REAL A,B,C
       ROOT(A,B,C)=(-B+SQRT(B*B-4.0*A*C))/(2.0*A)
と書くべきところを、暗黙の型宣言を利用して、関数の型の宣言を省略してい ます。

3.4 文関数の注意事項

定義した文関数が使えるのは、定義を行ったメインルーチンやサブルーチンの 中だけです。メインルーチンで定義した文関数はメインルーチンでしか使えま せん。副プログラム(サブルーチン副プログラム、関数副プログラム)で定義し た文関数は、それぞれの中でしか使えません。変数と同じです。


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年8月20日


no counter