プログラムの基本(二次元配列)

ロッカールームプログラム

今回はデータの型で勉強した配列について、もう一歩進んだ二次元配列について説明したいと思います。

配列とは

配列とは何?という人。そういう人はまずプログラミングの基礎(変数とデータの型)の章で復習してきてください。変数とデータの型についての記事はこちら

プログラムの基本(変数とデータの型)
プログラムを行っていく上で変数とデータ型というのがあります。教育用プログラミング言語のScratchなどではこの指定はあまり意識する必要はありませんが、実際のプログラムではこのあたりを考慮してやる必要があります。ただScratchでも変数や...

 

 

二次元配列とは

二次元配列とは、配列を2つ並べたものです。通常の配列が1次元なので、線の世界(Xだけ)です。それに対して二次元配列は二次元なので面の世界(XとY)です。

つまり、配列の場合は以下のような表データを格納するのにつかわれます。

 

もしプロ小学校4年1組 期末テスト3教科の点数

名前国語算数理科
山田958060
鈴木559575
田中1008050

 

上記の表を点数を意味するtenという名前の二次元配列で表すと、それぞれのセルは次のように表現されます。

名前国語算数理科
 山田ten[0][0]ten[0][1]ten[0][2]
 鈴木ten[1][0]ten[1][1]ten[1][2]
 田中ten[2][0]ten[2][1]ten[2][2]

 

これをイメージ化するとこんな感じです。

二次元配列(その3)

つまり1行の内容がまずは配列(1次元配列)で表現されて、それが更に別の配列の中に入ることで複数行の内容が表現されて二次化されています。ここまでわかりますか?

もっとイメージ化するとこうですね。

二次元配列(その4)

 

このような形で上記の点数の表が配列に格納されることになります。ここで、もし山田さんの国語の点数を取りたいときはten[0][0]をしているすると95という値がとれ、ten[0][2]とやると山田さんの理科の点数 60 の値がとれます。

 

多次元配列

さて、こういうことができるのであれば三次元配列もいけちゃいますよね。三次元ということは、線、面、に加えて立体。そう空間座標を表すのに使います。

次元の説明

 

それを配列としてイメージ化してみるとこうなんですが・・・こうなるとわけわかんない感じですよね。この三次元配列を先ほどと同じ例で表すならten[0][0][0]  といった感じです。

 

二次元配列(その6)

 

この原理を使えば基本何次元でも表せます。そのため二次元配列以上のことを多次元配列とよぶことがあります。実際は三次元までぐらいしか使いませんので、この上記のイメージを頭にもっているぐらいで十分じゃないでしょうか、多次元についてイメージしたのがこちらです。このようにプログラミングをやっていくと、ほんと数学的な抽象概念を鍛えられます。プログラミングをやると理数系に強くなるというのも納得できます。

二次元配列(その7)

 

なお、理系っこの大好き雑誌Newtonによる宇宙には16次元まであるという理論を展開している人もいるそうな、ちょっとそんなプログラミングには出くわしたことがないのですが宇宙関係の研究職に進む人は四次元以上のプログラムをつくることがあるかもしれませんね。

 

 

ちなみに4次元はこんな感じじゃないかといわれています。空間に時間という概念が加わり時空という表現となる。いま居る場所は時間によっても定義され、過去と未来という時間座標が加わるタイムマシン的なものでしょうか、アインシュタイン博士の相対性理論によるとタイムマインの存在は否定されているみたいですけどね。三次元の世界に生きている我々は四次元以上の存在は理解できないので想像でしかないですけど、なんかワクワクしますよね。

 

四次元の説明

 

まとめ

このように今回は二次元配列とその応用の多次元配列というものについて説明しました。ちなみにこの多次元配列については、残念ながら教育用プログラミング言語の代表格であるScratchでは採用されていません。Scratchでつかえるのは(一次元)配列までです。

そのため、このサイトの主である教育用プログラミングではちょっと早い概念かもしれませんが、チェスや将棋、RPGのマップ作成などをする場合にはいずれ、この二次元配列の概念を知らないと対応できないので、遅かれ早かれといったところでしょう。

なお、今回の例 もしプロ小学校4年1組の例では、点数のみを配列の中にいれましたが、データの作り方によっては1列目に名前が入っている場合もあります。そのような場合は名前も一緒に格納してやり、一番点数が高い人は誰?赤点の人は誰?という抽出プログラムを書くことも可能です。

こんなイメージですね。

二次元配列(その2)

 

さて、この二次元配列を使ってプログラムを書くと一気に難易度があがります。というのも行と列のデータを全てチェックするために反復(ループ)処理を2重に回す必要があるからです。ここで、慣れていないと頭が混乱します。そして、1列ずつ1行ずつ処理していくために変数をつかっていきます。この行と列の場所を示す変数とそれを使って反復(ループ処理)をさせる、さらには結果を入力する変数も用意するというところが難しいのですが・・・・

 

二次元配列(その5)

 

それは、また次回、二次元配列と反復処理について別途、記事を書きたいと思います。今回はここまで。

コメント

タイトルとURLをコピーしました