function

働き

独自関数を作成します。

文法

function <名前> ( [<仮引数1>[,<仮引数2> …]] )
  • 名前 - 独自関数の名前
  • 仮引数 - 仮引数の名前

説明

独自関数とは、複雑な計算式や条件式を1つにまとめて名前をつけたものです。funciton 命令は、独自関数を作るときに利用します。

プロシージャと独自関数は、戻り値の有無や使用可能な場所が異なります。

  • プロシージャ - 命令と同じように使用します。式の中では使えません。戻り値がありません。
  • 独自関数 -式の中で使用します。命令と同じようには使えません。 戻り値があります。

複雑な計算式や条件式に名前をつけて独自関数とすることで、以下の利点があります。

  • 何度も同じような式を書く必要がなくなります。
  • 複数の命令の呼び出しや複雑な計算式に名前がつくことで、プログラムの可読性が向上します。
  • 独自関数から更に独自関数を呼び出す(再帰呼び出しと呼びます)ことで、アルゴリズムの記述がより簡潔になります。

独自関数は、function 命令から end function 命令の間に書かれた複数の命令が対象となります。同じ名前の独自関数を複数作ることはできません。

独自関数は専用の変数の格納領域を持ちますので、他の独自関数や独自関数外で作られた変数を利用することはできません。また、同じ名前の独自関数でも、呼び出しごとに、変数の格納領域は別となります。

式の中で独自関数を呼び出すときに、値(実引数)を渡すことができます。渡された値を独自関数が受け取るために、仮引数という変数を function 命令に記述します。例えば、age という名前の仮引数を function 命令に記述したとすると、独自関数の呼び出し時に 47 を指定した場合は、その独自関数内で age という名前の数値変数が作られて、値として 47 が自動的に代入されます。

仮引数は、1つの独自関数で複数書くことができます。ただし、同じ名前の仮引数を作ることはできません。

独自関数から別の独自関数を呼び出すことができますが、その回数が 1000 回以上となるとエラーとなります。

独自関数は、return 命令を使用して、処理結果となる数値、文字列あるいは配列を呼び出し元の式に返す(返される値を「戻り値」と呼びます)必要があります。独自関数の名前によって、return 命令で何をを返すべきかが決定します。

  • 名前の末尾に $ がある(例: concat$ )- 文字列
  • 名前の末尾に @ がある(例: reverse@ )- 配列
  • 名前の末尾に $ も @ もない(例: add )- 数値

独自関数が呼び出された後に、return 命令が実行されずに end function 命令が実行されたときは、エラーとなります。

独自関数が式の中で呼び出された際には、対象となる function 命令の次の行から実行されます。もし function 命令が書かれた行が実行された場合は、その独自関数が持つ命令群は実行されずに、対応する end function 命令の次の行にジャンプします。

サンプルプログラム

rem function

answer=fractal(10)
print answer

function fractal(x)
  if x=1 then
    return 1
  else
    return x*fractal(x-1)
  end if
end function