« Javaアプレット(23) グラフ理論とは | トップページ | Javaアプレット(25) 2進行列クラスの作成 »

2012/02/02

Javaアプレット(24) 言語による配列の違い

さて、2進行列をJavaの配列として表す、というところまでお話しましたが、ここで、Javaの配列について特徴を述べておきます。

下図のような3路盤を配列で表す場合を考えます。行(row)と列(column)をrow, colという変数で表すとします。
図:3路盤
【図32 3路盤】

今はビットではなく空点が0、黒石が1、白石が2という整数の配列について考えると、Javaの場合は、
int[][] board = {
 {0, 2, 0},
 {2, 1, 1},
 {0, 0, 0}
};
図:Javaの配列
【図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}
};
図:Cの配列
【図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
図:Small Basicの配列
【図35 Small Basicの配列】

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

(つづく)

|

« Javaアプレット(23) グラフ理論とは | トップページ | Javaアプレット(25) 2進行列クラスの作成 »

Small Basic」カテゴリの記事

Java」カテゴリの記事

コメント

自己レスその2。Small Basic でも3次元以上の配列は記述可能です。ただ、遅くなるので推奨されません。

投稿: たかはしのんき | 2017/08/19 18:22

自己レスです。Small Basicの配列はRubyのハッシュに似ているかもしれません。以下のようなことも可能です。

' 配列を部分的に初期化できます
array2[1] = "1=test1;2=test2"
TextWindow.WriteLine(array2[1][1]) ' test1
' 配列の要素を削除できます
array2[1][1] = ""
TextWindow.WriteLine(array2) ' 1=2\=test2\;;

投稿: たかはしのんき | 2012/06/30 13:16

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Javaアプレット(24) 言語による配列の違い:

« Javaアプレット(23) グラフ理論とは | トップページ | Javaアプレット(25) 2進行列クラスの作成 »