HSP3 プログラミングの基礎W | |
(6) 配列の次元
配列の次元数を調べる。
関数や命令のパラメータとして、「array par」で何次元の配列でも受け取ることができる。受け取った配列の次元がわかれば、次元に応じた処理することができる。HSP3では配列の次元は4次元までである。
◎ 配列の要素数
配列名の要素数(個数)を返却する関数である。
length(配列名)
「dim a, 10」のとき、a(0)〜a(9)の10個が用意されるので、「length(a)」は10を返却する。
「dim a, 10, 20」のとき、一次元の個数が10個なので、「length(a)」は10を返却する。配列名の各次元の要素数を返却する関数である。
length2(配列名) length3(配列名) length4(配列名)
配列の要素数を調べる。
dim a1, 11 ;一次元配列 dim a2, 12, 22 ;二次元配列 dim a3, 13, 23, 33 ;三次元配列 dim a4, 14, 24, 34, 44 ;四次元配列 mes length(a1) mes length(a2) mes length(a3) mes length(a4) mes length(bb) stop
11, 12, 13, 14, 1と表示される。
各配列の一次元の個数が表示される。ちなみに、変数(bb)は個数が1個であるから1と表示される。
length()をlength2()に変更する。
0, 22, 23, 24, 0と表示される。
length2()をlength3()に変更する。
0, 0, 33, 34, 0と表示される。
length3()をlength4()に変更する。
0, 0, 0, 44, 0と表示される。
サンプルのように配列を用意したとき、length関数で返却される値を次表にまとめておく。
length( ) length2( ) length3( ) length4( ) a1 11 0 0 0 一次元配列 a2 12 22 0 0 二次元配列 a3 13 23 33 0 三次元配列 a4 14 24 34 44 四次元配列 bb 1 0 0 0 変数
◆ 配列の次元数取得関数(dim_length)作成
各次元の要素数を返却するlength関数で、0でなければその次元が用意されていると判定することができる。ただし、普通の変数も一次元が1個とされる。そこで、ここで作成する関数で調べる配列は、一次元目の要素数が2個以上用意されているものとする。
配列の次元数を返却する関数(dim_length)を作成する。
#module
#defcfunc dim_length array dd
;
;dim_length(配列)
; 配列の次元数を返却する関数である。
;
if length4(dd) > 0 : return 4
if length3(dd) > 0 : return 3
if length2(dd) > 0 : return 2
if length(dd) > 1 : return 1
return 0
#global
dim a1, 10
dim a2, 10, 20
dim a3, 10, 20, 30
dim a4, 10, 20, 30,40
mes dim_length(a1)
mes dim_length(a2)
mes dim_length(a3)
mes dim_length(a4)
mes dim_length(bb)
stop
1, 2, 3, 4, 0 と表示される。
2006 © Hiroshi Masuda |