Javaアプレット(24) 言語による配列の違い
さて、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次元以上の配列を表記することはできません。
(つづく)
| 固定リンク
「Small Basic」カテゴリの記事
- プログラミング講座 (202) 1次元セルオートマトン(2020.09.20)
- プログラミング講座 (201) パラメーター(2020.09.14)
- プログラミング講座 (200) 3次ベジエ曲線(2020.09.14)
- プログラミング講座 (199) スーパー三角関数?(2020.09.02)
- プログラミング講座 (198) スーパー楕円(2020.09.01)
「Java」カテゴリの記事
- Javaアプレット(57) 開発を中断(2012.05.06)
- Javaアプレット(56) オイラーの公式(2012.04.07)
- Javaアプレット(55) 死活判定の研究(2012.04.06)
- Javaアプレット(54) 数式の見直し(2012.03.23)
- Javaアプレット(53) 数式のまとめ(2012.03.21)
コメント
自己レスその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