ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

2次元配列について

みなさんこんにちは

コーラが大好きで家に1.5Lコーラを3、4本は常備しているブルーノです。今回は前回の配列の進化バージョンの2次元配列をやっていきたいと思います。

 

2次元配列とは?

前回、配列は同じカテゴリをまとめておくものだと説明しました。しかしときには2種類の添え字を使って管理すると便利な場合があります。例えば、1学年2クラスの生徒を出席番号順に並べる場合は一つの配列で全学年の生徒を羅列して別々の番号で保存するより、各クラスごとに保存したいですよね?この例があっているかは微妙なところですが、今回はそういう風に理解していくことにします。まずは書き方からやっていきます。

2次元配列の宣言の仕方

 

データ型[,] 配列名;

例)string[,] MyGrade;

 

 

これでMyGradeという名前の2次元配列ができました。普通の配列と違うところは [ ] の間にカンマ , が入っていることですね。宣言と同時に要素も生成したい場合は配列のように以下のようにします。

データ型[,] 配列名 = new データ型[要素数1, 要素数2];

例)string[,] MyGrade = new string[2, 5];

 

これで2×5の2次元配列ができました。つまり要素数は合計で10個ですね。しかし、配列の時のようにこれだけでは使えません。中に値を設定する、つまり初期化ですね。

ここで色々用語が紛らわしいので一旦整理しておくことにします。自分でもなかなか複雑で覚えづらいので....

配列の宣言 = これから使いますよという宣言(結局唱えただけで何も作っていない)

要素の生成 = 使う配列の中身の数の指定(その配列に何個の入れ物を用意するか)

初期化 = 中身の最初の設定(中に何を入れるかを指定する)

 初期化は配列の時と同じようにいきなり羅列してしまって構いません。

初期化の仕方

MyGradeの例でいうと

string[,] MyGrade = {

{ [0,0の初期値], [0,1の初期値], [0,2の初期値], [0,3の初期値], [0,4の初期値] },

{ [1,0の初期値], [1,1の初期値], [1,2の初期値], [1,3の初期値], [1,4の初期値] }

}

string[,] MyGrade = {

{ 亜位 上男, 柿 久華子, 佐子 周世男, 館 伝手子, 菜二 抜寝男 },

{ 葉火 府経子, 間未 武目男, 屋井 湯絵子, 羅理 留列子, 和井 音 }

}

 

のようになります(50音が10列でよかった...)。括弧の関係が見辛いので改行してみましたが無理にこの形にしなくても構わないです。要素数にアクセスするには以下のようにします

配列名[添え字1, 添え字2]

例)MyGrade[1,3]

 

この例だと羅理 留列子さんにアクセスしますね。では少し長くなりますが、2クラスの生徒の名前にアクセスするようなプログラムを組んでみます。

f:id:covory10101101276:20170523202030p:plain

f:id:covory10101101276:20170523202039p:plain

多分無駄が多いプログラムだと思います。欠点もあって出席番号の質問のときに整数以外を入力すると止まってしまいます。これを改善するにはまた別の方法を使わなければならないのですが今回は簡略化するためにこのようにしました。とにかく!これで2ックラスの生徒の管理ができるようになりましたね。ようは配列の簡単な派生のようなものですね。2次元があるということは3次元も4次元も永久にあるということです。しかしこのまとめでは簡略化するために使用頻度が高い2次元配列までにしておきます。多次元配列も今回の感じは変わらないようです。