さて、2進行列をJavaの配列として表す、というところまでお話しましたが、ここで、Javaの配列について特徴を述べておきます。
下図のような3路盤を配列で表す場合を考えます。行(row)と列(column)をrow, colという変数で表すとします。

【図32 3路盤】
今はビットではなく空点が0、黒石が1、白石が2という整数の配列について考えると、Javaの場合は、
int[][] board = {
{0, 2, 0},
{2, 1, 1},
{0, 0, 0}
};

【図33 Javaの配列】
となります。これは行は1次元の値の配列ですが、列はその配列の参照になっています。この配列の中のある行(row)と列(col)を参照するには、
piece = board[row][col];
とします。Javaの配列は以下のCの配列に比べると、行ごとの長さを変えることが可能という点が挙げられます。
これと比較し、C言語の場合、
int board[3][3] = {
{0, 2, 0},
{2, 1, 1},
{0, 0, 0}
};

【図34 Cの配列】
となり、9個のint型の変数がメモリ上に配置され、要素board[row][col]を参照する場合、
piece = board[row][col];
と書いて、内部では添字(そえじ)計算3×row+colが実行されます。ちなみに添字(subscript)とは[ ]内に指定する数字のことです。
さらに、ついでながら、Small Basicの場合は、
board[0][0] = 0
board[0][1] = 1
:
board[2][2] = 0

【図35 Small Basicの配列】
となり、(たぶん)内部はすべて文字列で表されます。添字も格納されており、数字以外を添字に指定することができます。また、値を設定しないことも可能で、いつでも配列を拡張することができます。逆に配列が文字列で表現されるので参照は内部で文字列内の検索が必要になり、単純には求められません。
piece = board[row][col]
と、書き方の上では大差ありませんが。また、Small Basicの場合、配列は2次元までとされており、3次元以上の配列を表記することはできません。
(つづく)
