配列--変数をグループ化したもの

疑問に思わなかったことは身につかない

『WRITING SOLID CODE』STEVE MAGUIRE著、関本健太郎訳より引用

配列とはいくつかの変数を一つのグループにまとめたものである。配列は、学校の中の一つのクラスだと考えるとイメージし易い。それぞれ一つずつの変数を一人の生徒だとみなすと、配列はある一つのクラス、たとえば 1 年 B 組などに相当するものだと考える事が出来る。

たとえ 1 年 B 組というグループがあったとしても、そのグループの生徒は、たとえば佐藤太郎君などのように、それぞれ名前を持っているが、配列の場合は、1 年 B 組に相当するグループの名前は与えられても、佐藤太郎君だとかの、個々の変数の名前はもちえない。が、それぞれに番号が与えられている。1 年 B 組でいえば、生徒の出席番号にあたるものだ。出席番号は 1 番から、そのグループの生徒数までだが、配列の場合、その下限値と上限値は自由に決められる。

var
  Ary: array[0..2] of Integer;
begin
  Ary[0] := 10;
  Ary[1] := 11;
  Ary[2] := 12;

  Writeln(Ary[0]);
  Writeln(Ary[1]);
  Writeln(Ary[2]);

  Readln;
end.
10
11
12

配列変数の宣言は、

<配列の名前>: array[<下限値>..<上限値>] of <配列の型>;

となる。

Ary: array[0..2] of Integer;

の場合では、<配列の名前> は Ary, <下限値> は 0, <上限値> は 2, <配列の型> は Integer である。配列はいくつかの変数を一つのグループにまとめたものであると述べたが、その変数は全て同じ型を有していなければならない。複数の型の混在させることは出来ない。配列の個々の要素にアクセスするには添え字を使う。上の例のように 0 番目の要素にアクセスするには Ary[0] のように書く。

配列と共によく使われる関数に High と Low 関数がある。High 関数は配列の添え字の上限値を返し、Low 関数は、配列の添え字の下限値を返す。

var
  Ary:  array[0..12] of Integer;
  Ary2: array[1..10] of Integer;
begin
  Writeln(Low(Ary));
  Writeln(High(Ary));

  Writeln(Low(Ary2));
  Writeln(High(Ary2));

  Readln;
end.
0
12
1
10

High, Low 関数については、実行結果の通り。

補足:このコードを実行する際、もしかしたら次のようなヒントメッセージが出るかもしれない。

[ヒント] 変数 'Ary' が宣言されていますが 'Project1' の中では使われていません
[ヒント] 変数 'Ary2' が宣言されていますが 'Project1' の中では使われていません

変数の初期化

var
  x: Integer;
begin
  Writeln(x);
  Readln;
end.

上のコードを実行する際、エディタには下図のように警告のメッセージが表示される。

このコードを実行すると何が表示されるのか。つまり、値が代入されていない変数には何が入っているのだろう?答えというと、何が入っているかわからない。何が入っているか分からないから、(おそらくそんな変数にアクセスするようなプログラムはコードの書き手が誤って書いたプログラムに違いないと推測して)値が代入されていない変数にアクセスするようなコードを書くと、コンパイラ(プログラムをコンパイルをする別のプログラム)が「警告」としてそれを教えてくれる。

ちなみに、エディタの"[警告]"と表示されている欄をマウスで選択してから F1 キーを押すと、それに関するヘルプが表示される。


up next

更新日:2004-11-23