Excelで理解する「2次元配列」 — 行と列で考えるデータ管理

プログラミングを学習していると

「配列」は避けて通れません。

1次元配列は理解できても、

2次元配列になると急に分からなくなる

という方が非常に多いです。

そこで今回は、誰もが触れたことのある Excel(表計算) を例にして

2次元配列を直感的に理解していきます。

対象:C#初学者


■ 1次元配列の復習(横一列)

まず復習です。

1次元配列は「横一列の箱」です。

scores[0]  scores[1]  scores[2]
   70         80         90

これはC#では

var scores = new int[3];

インデックスは1つでした。

scores[番号]

■ 2次元配列とは?

ここでExcelを思い出してください。

ABC
1102030
2405060

Excelでは

  • 行(縦)
  • 列(横)

の2つで位置が決まります。

これがそのまま 2次元配列の考え方 です。


■ Excel → 配列の対応関係

Excel配列
行番号1つ目のインデックス
列番号2つ目のインデックス

つまり

配列[行, 列]

になります。


■ C#で作る2次元配列

2行3列の表を作る

var table = new int[2, 3];

意味:

行 = 2
列 = 3

Excelでいうと

行\列012
 0  
 1  

の空表を用意した状態です。


■ 値の代入

table[0,0] = 10;
table[0,1] = 20;
table[0,2] = 30;

table[1,0] = 40;
table[1,1] = 50;
table[1,2] = 60;

Excelイメージ

012
0102030
1405060

■ 取り出し

Console.WriteLine(table[1,2]);

出力

60

Excelでいうと

2行目C列

を見る感覚です。


■ ループで表を処理する(重要)

2次元配列は 二重ループ を使います。

これは現場でも試験でも超重要です。

for (var row = 0; row < 2; row++)
{
    for (var col = 0; col < 3; col++)
    {
        Console.Write(table[row, col] + " ");
    }
    Console.WriteLine();
}

出力

10 20 30
40 50 60

■ なぜ二重ループ?

Excelの操作を思い出してください。

1行目を左から順に
2行目を左から順に

という動きをします。

つまり

行ループ
    列ループ

が自然な処理順序なのです。


■ 初学者がつまずくポイント

● インデックスは1始まりではない

Excel

→ 1行1列

配列

→ 0,0

ここが最大の混乱ポイントです。


● 行と列を逆にする

table[col,row]

と書いてしまう人が非常に多いです。

授業でも頻発します。

Excelイメージを常に思い出してください。

[行, 列]

■ 教育現場でよく使う例題

クラス3人×テスト2回

var score = new int[3,2]
{
    {70, 80},
    {90, 85},
    {60, 75}
};

平均点計算

for (var student = 0; student < 3; student++)
{
    var sum = 0;

    for (var test = 0; test < 2; test++)
    {
        sum += score[student, test];
    }

    Console.WriteLine($"平均:{sum/2}");
}

現実世界のデータと結びつくため理解が定着します。


■ まとめ

2次元配列は難しい概念ではありません。

理解の鍵はこれだけです。

覚えることは1つ

Excelの表をそのままプログラムで扱う仕組み

対応関係

Excel → 行・列
配列 → [row, col]

処理の基本形

二重forループ

ここまで理解できれば、

  • Unityのタイルマップ
  • 画像処理
  • AIグリッド
  • 数値解析
  • 基本情報アルゴリズム問題

すべての基礎になります。


訪問数 14 回, 今日の訪問数 14回

C#,配列

Posted by hidepon