配列引数

関数定義や副プログラムで配列を引数にすることができる。

(1)仮引数部の書き方
丸括弧とコンマで次元を宣言する。
1次元のとき,A()
2次元のとき,A(,)
3次元のとき,A(,,)
例 EXTERNAL SUB SAMPLE(A())
(2)実引数の書き方
CALL SAMPLE(A)
のように,配列名のみを書く。

例 ベクトルの内積
10 DEF DOT(a(),b())=a(1)*b(1)+a(2)*b(2)
20 DIM m(2),n(2)
30 MAT READ m
35 DATA 1,2
40 MAT READ n
45 DATA 3,4
50 PRINT DOT(m,n)
60 END

関数定義や副プログラムの内部で,引数として受け取った配列の添字の上限を知りたいときはubound関数を用いる。

例 受け取った配列の全要素の和を求める関数

100 DECLARE EXTERNAL FUNCTION ADD
110 DIM m(100)
120 MAT INPUT m(?)
130 PRINT ADD(m)
140 END
200 EXTERNAL FUNCTION ADD(a())
210 LET t=0
220 FOR i=1 TO UBOUND(a)
230    LET t=t+a(i)
240 NEXT i
250 LET ADD=t
260 END FUNCTION

補足説明
120行のMAT INPUT文が実行されたら,キーボードから任意個(100個以下)の数値をコンマで区切って入力する。すると,配列mの添字の上限は入力された数値の個数にしたがって変化する。

◇ 関数の引数に配列を用いると,配列が複写される。
関数定義の内部で配列要素の値を変更しても実引数は変更されない。
副プログラムでは,配列そのものが引き渡される。
副プログラムの内部で配列要素の値を変更すると,その変更は実引数に及ぶ。