プログラミング学習をするときに必要となる知識はの一つが、配列(はいれつ)です。
配列って聞いたことが無いと思うけど、プログラミングを学ぶうえで、とっても役立つものだから、ちゃんと読んでね。
小学生でも分かるように、詳しく説明していくから心配しないでね。
配列ってなに?
配列(はいれつ)とは、いくつもの変数が1つに並んでいるようなものだよ。
うーん。簡単にいうと、クラスの出席簿のようなものかな。
たとえば、3年A組には男女合計10の生徒がいた場合
番号 | 名前 | よみ | 性別 |
---|---|---|---|
1 | 飯田 | いいだ | 女 |
2 | 伊藤 | いとう | 男 |
3 | 井上 | いのうえ | 女 |
4 | 大広 | おおひろ | 男 |
5 | 岡道 | おかどう | 女 |
6 | 岡部 | おかべ | 男 |
7 | 河村 | かわむら | 女 |
8 | 川上 | かわむら | 男 |
9 | 木下 | きのした | 女 |
10 | 草間 | くさま | 男 |
という名簿になるね。
学校によっては、男女で別々に出席番号が付いているところもあるけど、今は男女関係なく出席簿を作っている学校もあるから、
今回は男女が交互にくる出席簿をイメージしてね。
このとき、名簿に書かれた情報は
- 番号
- なまえ
- ふりがな
- 性別
の4つだね。
変数は、何かを入れる箱だったよね?
忘れちゃったとう場合は、以下の記事を読んでね。
リンク
変数の場合は、何か1つの情報しか持てないんだ。
1つの情報というのは、
生徒の合計人数
番号「1」番の生徒の名前
といったものだよ。
でも、それじゃあ不便なときもある。
だって、先生が番号「1」番の生徒の名前は分かるのに、番号「3」番の生徒の名前は分からないってなったら大変だよね。
そんなときに使うのが配列(はいれつ)なんだよ。
配列というのは、さっきの名簿のように、表みたいなかたちでデータを持つことなんだ。
配列で情報を持つことができたら
番号「1」番の生徒の名前だけじゃなく、他の生徒の名前も分かるし、読み方や性別も分かるね。
配列の種類
次元(じげん)って言葉きいたことある?
アニメ「ドラえもん」の四次元(よじげん)ポケットは有名だよね。
私たちは普段、三次元の世界で生きているんだ。
一次元は、点と点を繋ぐ線のみの世界
二次元は、縦の線と、横の線を組み合わせた世界。絵や写真のことだね。
三次元は、縦の線と、横の線に奥行きを組み合わせた世界。物が立体になって掴むことができるんだよ。
つまり、1つの要素に要素を加えることで次元の数はどんどん増えていくんだ。
配列でも、1つの要素のとき、2つの要素のときと、目的によって次元の数を自由に変えることができるんだよ。
一次配列
一次配列(いちじはいれつ)とは、データが一列に並んだ状態のことだよ。
さっきの名簿でいうと
名前 | |
---|---|
飯田 | |
伊藤 | |
井上 | |
大広 | |
岡道 | |
岡部 | |
河村 | |
川上 | |
9 | 木下 |
草間 |
だよ。
一次配列は、ただの「配列」とよばれることが多いよ。
どんなときに使うかと言うと、生徒名前だけが知りたいときなどだよ。
二次元配列
名前 | よみ |
---|---|
飯田 | いいだ |
伊藤 | いとう |
井上 | いのうえ |
大広 | おおひろ |
岡道 | おかどう |
岡部 | おかべ |
河村 | かわむら |
川上 | かわむら |
木下 | きのした |
草間 | くさま |
難しい漢字があったりと名前が読めなときは、ふりがなも必要だよね。
そんなときには、二次元配列(にじげんはいれつ)が便利だよ。
配列のこれやっちゃダメ!
配列にデータを持たせるときには、同じ種類(ジャンル)のものだけを持たせるようにしてね。
たとえば、
名前 |
---|
飯田 |
男子 |
女子 |
男子 |
というように、名前と性別がごっちゃになっているのは、ダメだよ。
名前は名前だけの一次配列をつくるか、名前と性別の二次配列をつくるかにするべきだよ。
名前 | 性別 |
---|---|
飯田 | 女 |
伊藤 | 男 |
井上 | 女 |
大広 | 男 |
岡道 | 女 |
岡部 | 男 |
河村 | 女 |
川上 | 男 |
木下 | 女 |
草間 | 男 |
こんなふうにね。
配列には、どんな値も入れることができるんだけど、種類を分けないと配列の本来の良さが無くなってしまうんだ。
配列のメリット
配列は良く、繰り返し処理(ループ処理)と一緒に使用されることが多いんだ。
ループ処理については以下の記事を読んでね。
リンク
たとえば、さっきの名簿から「男子」の人数だけを知りたいときに、ループ処理と配列を使うことで、「配列の中の男子の数だけを数える」ということができるんだ。
生徒の数(30)回、男子がどうか調べる
男子の合計 = 0 ; for(生徒の数 = 0 ; 生徒の数 <= 30 ; 生徒の数 ++){ if (性別が「男子」の場合){ 男子の合計++ } }
となるよ。
条件式については以下の記事を読んでね。
リンク
「<=」の比較演算子については以下の記事を読んでね。
リンク
「++」インクリメント演算子については以下の記事を読んでね。
リンク
この処理で、全体の生徒のうち「男子」が何人いるか?がわかる。そして、全体から「男子」を引くことで、女子の人数も分かるんだ。
もし、これを配列ではなく変数で行ったとしたら
男子の合計=0 番号1番の性別=女子 番号2番の性別=男子 番号3番の性別=女子 番号4番の性別=男子 番号5番の性別=女子 番号6番の性別=男子 番号7番の性別=女子 番号8番の性別=男子 番号9番の性別=女子 番号10番の性別=男子 if (番号1番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号2番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号3番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号4番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号5番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号6番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号7番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号8番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号9番の性別の性別が「男子」の場合){ 男子の合計++ } if (番号10番の性別の性別が「男子」の場合){ 男子の合計++ }
変数がそれぞれ分かれているから、「男子かどうか?」を見分けるのも変数の数だけプログラムで書かなきゃいけない。
ちょっと大変だよね。
今回は10人分書いたけど、これが学校全体の男子の数となると、1000人以上にもなる。
でも、配列なら1000人になっても
男子の合計 = 0 ; for(生徒の数 = 0 ; 生徒の数 <= 1000 ; 生徒の数 ++){ if (性別が「男子」の場合){ 男子の合計++ } }
とするだけなんだ。
ね、全然違うよね。
まとめ
配列についてまとめるよ
- 配列(はいれつ)とは、いくつもの変数が1つに並んでいるようなもの
- 配列には、一次配列、二次配列など様々な次元がある
- 一次配列は「配列」とだけ呼ばれる
- 配列に入れる種類は同じものにする
- 配列はループ処理と一緒に使うことが多い
慣れないと、難しく感じると思うから分からなくなったら、学校の出席名簿をイメージしてみてね。
コメント