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 

 

 

inserted by FC2 system