配列とはデータの塊のことだ。
例えば中学校1クラスの全員の名前と誕生日を変数に入れる作業を想像してみていただきたい。苦痛で仕方がないはずだ。
プログラミングではデータをかたまりで入れることができる配列と呼ばれるデータの構造が用意されている。
このページでは配列について簡単に理解をできるようにご紹介した。参考にしていただければと思う。
配列とは何か?
配列とは
プログラムにおける「配列」とは、情報を記憶しておくための箱である変数の一つで、複数の箱が連なっているものの事を言う。
もう少し簡単に言うと、一つの変数の中に、複数の値を入れることが出来る、つまり複数の器を一つのかたまりとして扱うことだ。
次の図のようなイメージになる。箱の上についた数字は添字で、箱の番号だ。基本的に0から始まる。(ここら辺はまた後で詳しく)
このように変数の塊のような形で、箱が連なっているのが配列だ。
配列の例
配列を使うシーンは幾つかあるが、最も利用頻度が高いのが繰り返し処理だ。
例えば、クラス全員のテストの点数や、毎月の売上金額のように、同じ意味を持つ複数のデータを利用した計算を行う場合に配列を使うと良い。
40人のクラス全員のテストの平均を求める例で考えてみよう。
まず、配列を使わない場合、40人の個々のテストの点数を代入する為の変数が40個必要になる。
int score1, score2, score3,・・・・score40 ;
そして、この40個の変数に対して、点数を代入する処理を記述しなければならない。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
score1 = 80 ; score2 = 70 ; score3 = 90 ; ・ ・ ・ score40 = 85 ; |
さらには、この40個の変数を足して平均を求める処理が必要だが、以下のような記述になるだろう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
int sum = 0 ; sum = sum + score1 ; sum = sum + score2 ; sum = sum + score3 ; ・ ・ ・ sum = sum + score40 ; int average = sum / 40 ; |
なんとも面倒な記述だが、このようなプログラムの面倒な事を解決してくれるのが配列だ。
同じ処理を、配列を使って記述すると以下のようになる。
1 2 3 4 5 6 7 8 9 10 11 |
int score[] = {80,70,90,・・・,85}; int sum = 0 ; for(int i = 0 ; i < 40 ; i ++){ sum = sum + score[i]; } int average = sum / 40 ; |
記述内容の細かな説明は、次のページ以降の「配列の宣言」「配列の基本的な使い方」「配列の初期化」を参考にしてもらいたい。
このように、複数の値を扱うときには、配列を利用するとプログラムがすっきりする。
配列を使うときの注意
ただし、注意しなければならない点もある。
・同じ型のものしか配列では扱えない
・同じ性質の値だけを入れるようにする
・入れ物の数は変えられない
同じ型のものしか扱えない
1番目は何となくわかるだろう。
intの変数とStringの変数をもつ配列を作ることは出来ない。配列は必ず同じ型の変数で作成する必要がある。
同じ性質の値だけを入れるようにする
2番目はどういう事か。
例えば、intの配列を作成し、1番最初はテストの点数、2番目は生徒の人数、3番目はある生徒の出席番号というように性質の違う値を入れるのは、プログラミングのマナーとして避けるべきだ。
「避けるべき」としているのは、int型の配列として宣言すれば、このような値を代入する事は出来る。しかし、プログラムの読みやすさといった観点でいえば、まったく意味の違う値を一つの配列で扱うべきではない。
配列は、変数が連なったものではあるが、一つ一つを別の意味の変数として扱うのであれば、配列ではなく、通常の変数を個別に宣言するべきだろう。
入れ物の数は変えられない
配列を扱うとき、「何個の変数を連ねるか?」の事を「配列の長さ」という。
これは「配列の初期化」で詳しく説明するが、「配列の長さ」については、一度決めてしまったら、途中から増やしたり減らしたりは出来ない。
また、長さを決めずに使うことは出来ず、配列を宣言するとき、もしくは配列を利用するときには、必ず長さを決めなければならない。
箱の数は変えられない
少々難解なので理解しなくてもとりあえず構わないが、一応もう少し詳しく触れておこう。
配列の数を減らした場合には、単に使わない変数として扱えば良いのだが、増やしたい場合には少々面倒だ。
例えば、ファイルの読み込み処理を考えてみよう。
1行読み込むごとにStringの配列に文字列を代入するとした場合、果たして長さをいくつにすれば良いだろうか?
どんなプログラム言語でもそうだが、ファイル読み込み処理であらかじめファイル内の行数を知ることは出来ない。
もし、行数を知りたいとすれば、まずは一旦全行を読み込んで、そして行数を算出する必要があるのだ。
Stringの配列のそれぞれに、1行分の文字列を代入するのであれば、配列の長さを決めるために、まずは一旦全行を読み込みながら行数をカウントする。
その後配列の長さを決めてから、再度1行目から読み込みなおすしかない。
このように、必要に応じて長さを増やしたいような場合には、配列は向いていないのだ。
ここで詳しく説明はしないが、このケースではListという型の変数を使用すると良いだろう。
このように、配列には便利な面もあり、扱いにくい面もある。
しかし、Javaに限らずほとんどのプログラム言語がサポートしているものであり、プログラム内の繰り返し処理などでは必ずといってよいほど登場してくる。
使いどころを理解し、うまく活用してより良いプログラムが書けるように頑張ってもらいたい。
※ PHPなどのプログラムではその辺が柔軟で、配列要素を増やしたり減らしたりは簡単にできる。言語の特性にもよるので、その言語ごとの仕様を知っておこう。
まとめ
このページでは配列とは、について簡単にまとめてきた。配列は便利で、プログラムを組む上で必ず使うものだ。使い方はまた次のページで紹介しているが、まずはどういったものかを把握してしまおう。
コメント