※「セキュリティ保護のため...」というメッセージが出る方・日本語が入力できない方へ
配列(表)


配列(表)

配列(array)あるいは表(table)とは、データを単純に並べたものである。

ここで表というのはCOBOLの用語で、多くの処理系では配列というので、以下では配列の用語を使用する。

配列の特徴はデータが論理的な順序と同じ順序で物理的にも並んでいることである。(この意味はあとでリストのところを見て欲しい)

たとえば C で

    int sx[] = { 12,34,56,78,11 };
と書けば要素5個の配列が定義される。

この時、sx[0],sx[3] などの表現で、各要素にアクセスすることができる。この[]の中の値を一般に添え字と称する。COBOLなどは通常の添え字づけの他に索引という高速にアクセスできる形式の添え字も使用できる。また[]は処理系によっては()を使うものもある。

なお、この添え字を0から始めるか1から始めるかは処理系による。COBOLやFORTRANのように古い処理系では1から始めるが Cや Perl などは0から始める。BASICの場合は通常 OPTION BASE文によってどちらにでも切り替えられるようになっている。またPL/Iなどのように配列ごとに添え字のスタート番号(2とか5とか、あるいは-3とかにしてもよい)を宣言できるものもある。

また、配列を int ar[10] などといったふうに予め宣言する場合、ここに書いた 10 というのが、配列の個数を表す処理系と、最大番号を表す処理系とがある。BASICでは標準では添え字は0からで、宣言した場合最大添え字なので、ar(10) の宣言なら、ar(0)〜ar(10) の11個の要素を持つ配列が生成される。

要素の個数に関しては、自動的に管理してくれる処理系(BASIC, Perl, C++など)と、自分で管理しなければならない処理系(FORTRAN, COBOL, C など)とがある。また処理の途中でサイズを変更できる処理系(COBOL, Perl, C, C++ など)と、変更不可の処理系とがある。

Perlの場合は $#ar で 配列 ar の最大の添え字を得ることができる。(個数が欲しければそれに1加えればよい。) C++ の場合は ar.GetSize() によって配列の個数を得ることができる。

配列の次元

配列は2次元以上のものも定義できる。(まれに Perlのように多次元配列をもたないものもある)

たとえば、Cで ar[5][3] と書けば、これは 5×3 の15個の要素を持つ配列が生成される。BASICやFORTRANなら AR(5,3) のような宣言になる。

同様に3次元、4次元、5次元、.....といった配列も定義可能である。

ただし処理系によっては3次元までとか、255次元までとかいった制限がある場合もある。

2次元以上の配列で、どちらの添え字が先に動くかというのは処理系によって異なる。すなわち、たとえば ar(5,3) といった時に、実際の物理的順序が

 ar(0,0) ar(0,1) ar(0,2) ar(1,0) ar(1,1) ar(1,2) ar(2,0) ....

とならぶものと

ar(0,0) ar(1,0) ar(2,0) ar(3,0) ar(4,0) ar(0,1) ar(1,1) ....

とならぶものとがある。これは気を付けておかないと思いも寄らぬ結果が出る。新しい処理系に触れた時は、かならず一度実験して確認しておいた方がよい。COBOLやCは前者である。

連想配列

連想配列は Perl がサポートしているもので、非常に便利なものである。

通常の配列では添え字は数字だけだが、Perlの連想配列では文字列が使用できる。

$syuto{'日本'} = '東京';
$syuto{'アメリカ'} = 'ワシントン';
$syuto{'フランス'} = 'パリ';
$syuto{'ロシア'} = 'モスクワ';

といった使い方が可能である。なお、Perlで通常の配列は $tensu[3] のように [] を使用して連想配列の { } と区別する。連想配列を使えば、配列を添え字に使う!ことにより、実は $ar{3,4} のようにあたかも多次元配列のような使い方をすることも可能である。

なお、連想配列は実際には、添え字とデータとの列で実装されており、アクセスするときは毎回(多分ハッシュを利用した)検索が行われているはずである。



(C)copyright ffortune.net 1995-2007 produced by ffortune and Lumi.
お問い合わせはこちらから