第5回 これであなたもプログラマ「4.配列変数:背番号のついた変数」

5−4 配列変数:背番号のついた変数

先ほどの例では、全てのカメさんが同じ動きなので、今1つ物足りないですね。ということで、それぞれのカメさんがバラバラに動くようにしましょう。
バラバラに動くためには、まず、DrawBitmapコマンドで指定している座標をカメの数だけ用意しなければなりませんね。
例えば、x1,x2,x3,x4という名前の変数を用意すれば、
        DrawBitmap 1005+Mod(x1,2),x1,30
        DrawBitmap 1005+Mod(x2,2),x2,60
        DrawBitmap 1005+Mod(x3,2),x3,90
        DrawBitmap 1005+Mod(x4,2),x4,120
となりますが、これでは、For Nextを使ってせっかくスッキリしたのに、無粋な方法に逆戻りですね。
このように、同じようなデータや、順に並んだデータを格納するために「配列変数」という仕組みがあります。
配列変数とは、簡単に言えば「背番号のついた変数」です(あまり、簡単じゃないですね)
具体的には、次のように宣言します。

    Dim A(3) as Integer

あれ?Dimや、as Integerは、普通の変数の宣言と同じジャン、と思ったらOKです。そう、基本的には、同じ取り扱いになります。
しかし、変数名にカッコがついているところが若干異なる点で、このように宣言された変数は、具体的には、

    A(1)
    A(2)
    A(3)

という3つの変数が使えるようになります。
このカッコ内の数字のことを「添字」といいます。 BASICの種類によっては、添字が 0から始まるか、1から始まるか、もしくは自分で指定できる場合がありますが、NS Basicでは、1から始まります。
配列変数は、このように表記されても、変数と同じなので、代入も「=」を使って行います。

配列変数の便利な使い方は、添字にも変数が使えることです。
例えば、10個の変数を用意して、全てに「5」という値を代入したい場合、通常の変数なら、
    Dim A1 as Integer
    Dim A2 as Integer
    Dim A3 as Integer
      …中略…
    Dim A9 as Integer
    Dim A10 as Integer

    A1=5
    A2=5
    A3=5
     …中略…
    A9=5
    A10=5
というように宣言に10行、代入に10行必要になります。
一方、配列を使えば
    Dim i as Integer
    Dim A(10) as Integer

    For i=1 to 10
         A(i)=5
    Next
で済みます。添字に変数が使えるため、プログラムが簡単になりますね。

A(10)や、X(5)など、カッコ内の数字が1つの配列変数は、「1次元」の配列といいます。
一方、
    Dim A(5,10) as Integer
と言うような配列を宣言することができます。
イメージ的には、こんな感じですね。

    

このような配列を2次元配列といいます。
この配列の次元数もBASICの仕様によって異なりますが、NS Basicでは、B(3,5,10)のように、3次元まで扱えるようです。

2次元配列を使った簡単は例は、九九の表でしょうか。九九って、掛け算ですね「ににんがし、にさんがろく」っていうヤツです。
    Dim i as Integer
    Dim j as Integer
    Dim KK(9,9) as Integer

    For j=1 to 9
        For i=1 to 9
            KK(i,j)=i*j
        Next
    Next
2重のループと組み合わせると、こんな簡単なコードで、KK(x,y)には九九の表を代入できます。例えば、KK(3,5)は 15が入りますね。

とりあえず「背番号付きの変数」と理解しておけば、それほど難しくないと思います。しかし、使い方次第で、かなり便利になるのが配列変数です。
例えば、AmiSolでも2次元の配列を使って、コマのデータをチェックしています。Ami宝当LOTO!やAmiKujiでも、配列変数は使っていますね。



前へ     目次へ     次へ

第5回 これであなたもプログラマ「4.配列変数:背番号のついた変数」