前回は、繰り返し構文をやりました。今回は配列です。

配列は、一つの変数に複数の値を入れることができます。
例えば、5つの同じ型を使うとします。5つ変数を用意するのではなく、一つの変数を配列にします。そうすると変数を5つ用意したことになります。

では、ソースコードを見てみましょう。

C#

public class Hairetu{
    public static void Main(){
        int[] suji = new int[3];
        int gokei=0;
        suji[0] = 10;
        suji[1] = 20;
        suji[2] = 30;
        for (int i=0; i<suji.Length; i++){
            gokei += suji[i];
        }
        System.Console.WriteLine((gokei/suji.Length).ToString());
    }
}

結果

20

変数を配列にする場合、型の後に"[ ]"を書き、そのあとにnew int [箱の数]で配列を宣言しています。newという新しいキーワードが出てきましたが、値型の変数とは違いこう書くんだ!と覚えてください。

※ ここでは詳しく説明しませんが、配列は値型ではなく参照型なります。IEnumerableインターフェースが継承されたり、関数(メソッド)が違ったりします。 

サンプルプログラムでは、数値の箱を3つ(int[3])用意しました。
値を入れる場合は、"[ ]"の中に番号(添字)を書いて対象の箱にいれています。ちなみにこの添字は、0から始まります。3つ用意しましたので、使う添字は0~2です。

※ CやC#・VB.NET・javaの世界では、添字は、0から始まります(先頭)。しかし、ExcelのVBA・VB6は1から始まるのでご注意を!

続いてFor文です。suji変数に.Lengthと書くと、配列の数を取得できます。「配列の数だけ繰り返す」というFor条件になります。
繰り返し中では、下記の処理を記述しています。
 gokei += suji[i];
は、
 gokei = gokei + suji[i];
になり、元のgokei変数と配列の値を足して、gokei変数に代入し直しています。"+="は、値を加算したい時などによく使います。減算したい時は、”-=”です。

最後に平均を出力して終わっています。結果の数値を括弧でくくって.ToString()で文字列にしています。計算を括弧でくくっている理由は、計算結果が数値型になるためです。


配列はforeach文が使える

配列は、foreachという繰り返し文で使用することができます。(foreachは、配列以外にコレクションオブジェクトでも使用できます)
結構便利な構文なので、覚えておきましょうφ(.. )

C#

public class Hiretu2{
    public static void Main(){
        string[] names = {"taro","jiro","saburo","shiro"};
        foreach (string nm in names){
            System.Console.WriteLine(nm);    
        }
        names[0] = "ichiro";
        System.Console.WriteLine(names[0]);
    }
}

結果

taro
jiro
saburo
shiro
ichiro

最初に、names配列の箱数を決めずに初期化します("[ ]"内に数字を書かず、代入で初期化するパターン)。配列の初期化は"{ }"で囲って、カンマでそれぞれの値をセットしていきます。このサンプルソースでは、4つの文字列を格納したことになります。

そして、foreach文でnamesの格納数だけ繰り返しています。( )内で配列の値型であるstring変数を用意し、inの後に配列を指定します。こうすることによって、一つずつの要素がnm変数に格納され繰り返されます。要素がなくなればforeachから抜けます。
最後に、0個目の値を変えています。

多次元配列

今までやった配列は、一次元配列といい、単純な値の列になります。多次元配列と言われてもわかりにくいので、よく使う二次元で説明しますと、列と行から成るExcelの表なイメージです。

最初は、とっつきにくいですが使って慣れれば怖くありません>_<

C#

public class Hiretu3{
    public static void Main(){
        int[,] hyo = new int[9,9];
        for (int iRetu=0; iRetu<9 ; iRetu++){
            for (int iGyo=0; iGyo<9; iGyo++){
                hyo[iRetu,iGyo] = (iRetu+1)*(iGyo+1);
            }
        }
        for (int i=0; i<9; i++){
            for (int j=0; j<9; j++){
                System.Console.Write(hyo[i,j].ToString() + " ");
            }
            System.Console.Write("\n");
        }
    }
}

結果

1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81 

最初にnew int[9,9]で九九表の結果を入れるスペースを作っています。あとは、for文で掛け算の結果を代入しています。最後は、結果を出力しています。単純な表の代入です。掛け算の時に1を足しているのは、0から始まるため。

配列やコレクションオブジェクトは、大量のデータを格納させて、処理するときによく使います。

次回は、関数(メソッド)について説明したいと思います。