プログラミングの配列がどうも理解できません。
使い方などを教えて欲しい。
本記事の内容
「配列」はプログラミングを学ぶ上で必ず出てくる基本的な構文です。
使えればすごく便利なものですから、絶対に押さえておきたいですよね。
この記事では、「配列の基礎知識(利点など)」や「使い方」などを初心者向けに分かりやすく解説します。
≫初心者プログラミング|基本構文5つの解説まとめ【図解あり】
\挫折せず効率よく学ぶなら!/
-
なぜ無料?無料のプログラミングスクールの実態とは|2024年のおすすめスクールもご紹介
続きを見る
1.プログラミングの配列とは
「配列」とは一言でいうと、
間仕切りのついた箱
のようなものをイメージしてください。
間仕切りのついた箱の各箇所に値を入れておき管理(参照・代入)していこうというものです。
下記図のように、配列の間仕切りで区切られた各箇所のことを「要素」といいます。
そして、箱には「配列名」をつけることができます。
「曜日」という名前が付けられた配列があると仮定するとします。
その要素は先頭から日曜、月曜、火曜、水曜...と各曜日が入っているイメージですね(下図)。
要素|添字を使って任意の値が参照できる
配列の「要素」には、先頭から順番に番号(0,1,2,3...)が振られています(下図)。
この振られた番号のことを「添字」といい、任意の要素は以下のようにして参照します。
配列名[添字]
添字の先頭は必ず0から始まることに注意してくださいね。
では、以下のように「曜日」という配列に先頭から順番に日曜、月曜、火曜、水曜、木曜...と値が入っているとして、各要素の値を参照してみましょう。
配列名:曜日 | ||
位置 | 要素の値 | 添字 |
1番目 | 日曜 | 0 |
2番目 | 月曜 | 1 |
3番目 | 火曜 | 2 |
4番目 | 水曜 | 3 |
5番目 | 木曜 | 4 |
6番目 | 金曜 | 5 |
7番目 | 土曜 | 6 |
イメージは下記図となります。
「曜日」の先頭から4番目(添字=3)の要素を参照するのであれば以下のように記述します。
曜日[3]
結果は以下のとおり
水曜
添字の先頭は0(配列の1番目)であることから、添字の3(配列の4番目)は水曜になります。
※添字の先頭は必ず0から始まることに注意してくださいね。
では、配列を使うことでどういった「利点」があるのか、次節で解説していきます。
配列を使う利点
「配列」の利点は以下のとおり。
- 大量の値を扱う時や複数の値を次々と読み込む時に効率が良い
実際にJavaでコード例を書きます。
例えば、曜日(week)を「配列」で管理する場合だと以下のようなコードになります。
Java
String[] week = {"日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"};
コード的にもすごくシンプルで、weekという配列の管理だけで済みます。
そこで"月曜"という値を参照するのは以下のようなコードなります。
Java System.out.print( week[1] ); //実行結果:月曜
しかし、曜日(日曜〜土曜)をそれぞれ「変数」で管理していると、非常に効率が悪いです。
「変数」については下記記事で詳しく解説しています。
関連プログラミングの変数の基礎知識と使い方|図解でイメージを掴めばOK!
以下、曜日を「変数」で管理する場合のコードです。
Java
String sun = "日曜";
String mon = "月曜";
String tue = "火曜";
String wed = "水曜";
String tur = "木曜";
String fri = "金曜";
String sat = "土曜";
上記のように、各曜日に対し一つの変数を用意しないといけませんから、値が多くなればなるほどその変数も増えてきます。
コード的にもすごく長くなり、バグを埋め込む原因にもなります。
ですから、曜日のように一つでまとめて管理できるものは「一つにまとめる」という意識を持っておき「配列」をうまく利用しましょう。
2.プログラミングの配列の使い方
では、「配列」の使い方を解説していきます。
- 配列宣言
- 初期化
- 追加(代入)
- 二次元配列(多次元)
1.配列宣言
配列を使う場合には、まず「配列を使いますよ」という宣言が必要です。
宣言方法は以下のとおり。
データの型 配列名[要素の個数]
ですから「曜日」という配列の宣言は以下で表されます。
String 曜日[7];
「文字列型(String)の値を入れる「曜日」という配列に7つの要素を持たせます」
と宣言しているのです(下記図)。
Javaだと以下のようになりますね。
Java
String[] week = new String[7];
2.配列を初期化
配列の初期化とは、あらかじめ何らかの値を入れておくことです。
配列の宣言をしつつ、同時に値も設定(初期化)しておくことができます。
配列の初期化方法は以下のとおり。
データの型 配列名[要素の個数] = {要素...};
配列の宣言をやりつつ、値を設定(初期化)しています。
具体的に「曜日」という配列の宣言と初期化は以下で表されます。
String 曜日[7] = {"日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"};
文字列型(String)の値を入れる「曜日」という配列に7つの要素を持たせています。
同時に各曜日(値)も設定(初期化)しているのです(下記図)。
Javaだと以下のようになります。
Java
String week[] = {"日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"};
3.配列の追加(代入)
配列の要素に値を追加(代入)することも可能です。
追加(代入)は以下のとおり。
要素名[添字] = 値;
普通の「変数」のように追加(代入)ができます。
ただし、配列への追加(代入)時に注意しておきたいのは、添字の最大数を超えた代入はできません。
次節で解説します。
添字の範囲を超える追加(代入)はできない
例えば、要素が7つまでしか宣言していないのに、それを超える添字を指定し追加(代入)することはNGです。
例えば、以下の配列(7つの要素)があったと仮定します。
String 曜日[7];
上記の場合、以下のような要素(添字10)への追加(代入)は実行時にエラーとなります。
曜日[10] = 金曜;
添字に「0」〜「要素数-1」以外の数を指定することができないことに注意ですね(下記図)。
4.二次元配列
これまでの配列は、要素数が増えれば横に長くなっていく一次元的なイメージの配列です。
ここで解説する二次元配列とは、縦方向と横方向に伸びる表をイメージしてもらえばOKです。
二次元配列の宣言
二次元配列の宣言は以下のとおり
要素の型 配列名[行数][列数];
例として、成績表を二次元配列で宣言してみましょう。
int 成績表[3][4];
この場合、「行」が各生徒(3名)、「列」は教科(4教科)とします。
成績表という配列の宣言は以下のようなイメージです。
教科 | |||||
0列 | 1列 | 2列 | 3列 | ||
生徒 | 0行 | 成績表[0][0] | 成績表[0][1] | 成績表[0][2] | 成績表[0][3] |
1行 | 成績表[1][0] | 成績表[1][1] | 成績表[1][2] | 成績表[1][3] | |
2行 | 成績表[2][0] | 成績表[2][1] | 成績表[2][2] | 成績表[2][3] |
二次元配列の初期化
二次元配列の初期化は以下のようになります。
(宣言も同時に行っています)
データの型 配列名[行要素の個数][列要素の個数] = {{0行要素}{1行要素}...行数分};
具体的に「成績表」という二次元配列があるとして、その初期化は以下で表されます。
ここでは3名の成績表を二次元配列で表してみます。
int 成績表[3][4] = {
{50,40,60,70}
{40,80,55,60}
{90,60.55,85}
};
「成績表」という二次元配列の初期化のイメージは以下のとおりです。
教科 | |||||
0列 | 1列 | 2列 | 3列 | ||
生徒 | 0行 | 50 | 40 | 60 | 70 |
1行 | 40 | 80 | 55 | 60 | |
2行 | 90 | 60 | 55 | 85 |
二次元配列の追加(代入)
二次元配列も要素に値を追加(代入)することも可能です。
追加(代入)は以下のとおり。
要素名[行添字][列添字] = 値;
具体的には以下のように行います。
成績表[0][0] = 50;
成績表[0][1] = 40;
…
成績表[3][4] = 85;
二次元配列も、普通の「変数」のように追加(代入)ができるんです。
多次元配列
二次元配列もできるんだから、三次元、四次元配列も可能です。
下記、三次元配列の宣言ですが、[]が増えていきます。
データの型 配列名[高さ要素の個数][縦要素の個数][横要素の個数] ;
三次元配列は二次元配列の縦方向、横方向に加え、高さの要素数が加わります。
下記図のように、三次元配列は立方体や直方体などをイメージしてもらうとOKです。
しかし、配列の次元が増やせるからと無闇に増やしていくと、メモリを消費してしまいます。
ですから、システムに負担をかけることにもなるので注意です。
3.プログラミングの実用的な利用法
これまで配列について基礎的なことをお伝えしてきました。
ある程度分かったとはいえ、実際に使うとなるとどう使ってよいのかわかりませんよね。
配列の実用的な使い方については、僕と同じエンジニアである「サラプロ」氏が詳しく解説してくれています。
≫【PHPの基礎】配列に要素を追加するarray_push関数をマスターしよう!
配列を操作する関数の使い方で迷ったら、「サラプロ」氏の記事を見ればすべて解決すると言っても過言ではありません。
画像をふんだんに使っているので、未経験者にもわかりやすいです!
以下より、ぜひご覧になってくださいね!
まとめ
最後に要点をまとめます。
「配列」とは一言でいうと、間仕切りのついた箱のこと。
添字を使って任意の値を参照できます。
配列名[添字]
使い方は以下の通り
宣言:データの型 配列名[要素の個数]
初期化:データの型 配列名[要素の個数] = {要素...};
値の追加(代入):要素名[添字] = 値;
配列を使う利点:大量の値を扱う時や複数の値を次々と読み込む時に効率が良いです。
ですが、配列を使う時の注意点は以下のとおり。
添字の先頭は必ず0から始まる
添字に「0」〜「要素数-1」以外の数を指定することができない。
まずは、配列とはどういったものなのかイメージできればOKです。
一つでまとめて管理できるものは「一つにまとめる」という意識を持っておきましょう。
あとは、実際のプログラミングを通して、配列の便利さを実感し使いこなせるようになってくださいね。