配列の使い方


■ 配列を使った例

配列を用いたプログラム例として、前のページで次のようなプログラムを紹介しました。
public class Hairetu{
    public static void main(String args[]) {
          int suu[]=new int[5];                    //配列suuの宣言
          int sum;

          suu[0]=123;                   //配列suuの1番目の領域に123を代入 
          suu[1]=234;                   // 以下同様
          suu[2]=345; 
          suu[3]=456; 
          suu[4]=567;
  
          sum=suu[0]+suu[1]+suu[2]+suu[3]+suu[4];     // 配列の値の合計を計算する。
          System.out.println("配列の合計は,"+sum+"です。");  //合計を出力する。
    }
}
このプログラムでは、配列に格納された4個の数値の合計を計算しています。 しかし、10個の数値の合計を計算するとか、100個の数値の合計を計算するとなると、配列の宣言がいくら簡単に出来たとしても、上記の方法では限界があります。

次のプログラムは、10人の身長を配列に格納し、その平均を計算するプログラムです。

public class Sinchou1{
    public static void main(String args[]) {
	int sincho[]= {165,173,169,178,175,159,171,169,170,168};
	int goukei=0, i;

                  for( i=0;i<10;i++){
		      goukei=goukei+sincho[i];         //10人の身長の合計を計算する
		  }
                  System.out.println("身長の平均は,"+(goukei/10)+"です。");
    }
}
このプログラムを実行すると、次のような結果が出力されます。
[egi@taro]$ java Sinchou1 
身長の平均は,169です。
[egi@taro]$ 
■ 繰り返し処理

上記のプログラムには、10人の身長を合計する式は書かれておりません。その代わりに、 次のようなfor命令が使用されています。 このfor命令は典型的な繰り返し処理をする命令です。 詳細は、テキスト8章の繰り返し処理に説明がありますが、 配列を使用する場合、この命令を用いるととても簡潔なプログラムを書くことができます。 そのために、配列と繰り返し命令は組み合わせて使用されることが多いです。
                  for( i=0;i<10;i++){
		      goukei=goukei+sincho[i];
		  }
これは、「{ と }の間に記述された命令を10回繰り返し実行せよ」という意味です。 この命令は、繰り返す際に、i という int型の変数を用いて、
  1. 最初に i にゼロを代入し、
  2. { と } の間の命令を繰り返すたびに1を i に加えてゆき、
  3. i の値が10以上になると繰り返すのを停止する、(10未満の間は繰り返す)
という処理をします。 ここで、カウンターに使われている int型の変数の名前は何でも良く、 どのような名前の変数名でも構いません。

それでは、上記のプログラムで繰り返し実行されている命令

		      goukei=goukei+sincho[i];
はどのように実行され、変化し、合計が計算されるのでしょうか。 その経過を示したのが次の表です。この表の中の、( )の部分にどのような値が入るかを記述してみて下さい。

回数iの値配列要素の値計算前のgoukei値計算内容計算後のgoukei値
1回目0sinchu[0]は1650goukei=goukei+sinchou[0]165
2回目1sinchu[1]は173165goukei=goukei+sinchou[1]338
3回目2sinchu[2]は169338goukei=goukei+sinchou[2]507
4回目3sinchu[3]は178507goukei=goukei+sinchou[3]685
5回目4sinchu[4]は175685goukei=goukei+sinchou[4]860
6回目5sinchu[5]は159860goukei=goukei+sinchou[5]( )
7回目6sinchu[6]は171( )goukei=goukei+sinchou[6]( )
8回目7sinchu[7]は169( )goukei=goukei+sinchou[7]( )
9回目8sinchu[8]は170( )goukei=goukei+sinchou[8]( )
10回目9sinchu[9]は168( )goukei=goukei+sinchou[9]( )
11回目10--繰り返しから抜ける-

このように配列で宣言されたデータの合計を計算する場合は、「値をひとつ合計する」処理を繰り返し実行させるという方法で実現することができます。 これによって、データが多くなってもプログラムはほとんど変わらず、非常にすっきりした書き方ができます。


プログラミング / 江木