Go to the first, previous, next, last section, table of contents.


ユーザ定義函数

ユーザによる函数の定義は `def' 文で行う. 文法エラーは読み込み時に ある程度チェックされ, おおよその場所が表示される. 既に(引数の個数に関係なく)同名の函数が定義されている場合には, その函数は再定義される. ctrl() 函数により verbose フラグ が on になっている場合,

afo() redefined.

というメッセージが表示される. ある函数の定義において, まだ未定義の函数 を呼び出していても, 定義時にはエラーにならない. 実行時に未定義の函数 を呼び出そうとした場合にエラーとなる.


def f(X) { 
    if ( !X )
        return 1;
    else 
        return X * f(X-1);
}

def c(N)
{
    A = newvect(N+1); A[0] = B = newvect(1); B[0] = 1;
    for ( K = 1; K <= N; K++ ) {
        A[K] = B = newvect(K+1); B[0] = B[K] = 1;
        for ( P = A[K-1], J = 1; J < K; J++ ) 
            B[J] = P[J-1]+P[J];
        }
    return A;
}

2 つ目の例では, 長さ N+1 のベクトル (Aとする) が返される. A[I] は長さ I+1 の配列であり, そのそれぞれの要素が を要素とする配列である.

以下では, C によるプログラミングの経験がない人のために, Asir 言語 によるプログラムの書き方を解説する.


Go to the first, previous, next, last section, table of contents.