Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/ja

English · Français · Български · 中文(中国) · 日本語

5C - 1次元配列 (著者: Tao Yue, 状態: 原文のまま変更なし)

5000個の整数を読み込み、何か処理をしたいと考えてみよう。それらの整数をどう保存しておけばよいだろうか?

次のように5000個の変数を使うかもしれない。

text
aa, ab, ac, ad, ... aaa, aab, ... aba, ...

しかし、これは煩雑になる(これらの変数を宣言した後で、変数それぞれに値を読み込まなくてはならない)。

配列は同じタイプの保存スペースを含んでいる。それぞれの保存スペースは添え字付きの配列名で参照できる。定義は次のようになる。

pascal
type
  typename = array [?????????] of ????????????;

データ型は何でもよく、別な配列でもよい。どんな列挙型も問題ない。カッコ内に列挙型、あるいは事前に定義した列挙型を指定できる。例えば、次のようになる。

pascal
type
  enum_type = 1..50;
  arraytype = array [enum_type] of integer;

上の例は以下の例と同じである。

pascal
type
  arraytype = array [1..50] of integer;

余談: これは実際、文字列が内部的に処理されているやり方、すなわち配列として処理されている方法である。現代の Pascal コンパイラが文字列のネイティブなサポートを加える前は、プログラマーは以下のように宣言し、さらに文字列の最後を示すある種の終端文字を用いて自ら文字列を処理しなくてはならなかった。

pascal
type
  String = packed array [0..255] of char;

大抵の場合、終端文字はヌル・キャラクター (序数 0, あるいは ord(0))であった。packed という指定子はその配列が、最小のメモリーを占めるよう圧縮されることを意味している。

文字列を表すキャラクターの配列はしばしばバッファと呼ばれ、C や C++ のプログラミング言語でそれらを扱う際のエラーはバッファー・オーバーランにつながることもある。バッファ・オーバーランは、たとえば200キャラクタの文字を150の長さの配列に入れようとするときに生じる。もし、バッファを超えたメモリが上書きされ、もし、そのメモリにもとは実行コードが含まれていたなら、攻撃者は任意のコードをシステムに挿入しようとするかもしれない。これはインターネット上で数日間猛威を振るった有名なスラマー・ウォーム(Slammer worm)の原因にもなった。Pascal でそれをやって、何が起きるか試してみよう。

配列はプログラムで後から利用するために大きなデータを保存しておきたい場合には有用である。特にループではうまく働く。なぜならインデックスが添え字として利用できるからである。50個の数を読むためには、以下の定義のようになる。

pascal
type
  arraytype = array[1..50] of integer;
  
var
  myarray : arraytype;

以下のようにすればよい。

pascal
for count := 1 to 50 do
  read (myarray[count]);

四角カッコの [ ] は配列の場合には添え字を囲む。

pascal
myarray[5] := 6;
previous contents next

From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/ja", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Edited on wiki.freepascal.org by 3 people, 2015–2022

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
DerakunCreated page
Derakun
Derakun
Derakun
Derakun
GANFixed syntax highlighting (minor)
Kai BurghardtKai Burghardt moved page 1-dimensional arrays/ja to Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/ja: tidy up main name space: create subpage hierarchy for basic Pascal tutorial [cf. [[Special:... (minor)
Kai Burghardtbypass redirects [cf. discussion]
Kai Burghardtbypass [previously missed] redirect [cf. discussion]
Kai Burghardtbypass language bar/categorization template redirect [cf. discussion] (minor)

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.