Edited at

<2> データの概念: 単純型 (標準 Pascal 範囲内での Delphi 入門)


2. データの概念: 単純型 (Simple Types)

単純型 (単純データ型) には 順序型 (順序データ型)実数型 があります。

標準 Pascal の順序型にはユーザーが定義した列挙型部分範囲型の他に、定義済みの Boolean, Integer, Char 等の型があります。


2.1. 順序型 (Ordinal Types)

順序型 (順序データ型) は値の前後に値のある型です。すべての順序型には 関係演算子 =, <>, <, <=, >=, > が使えます。また、次の宣言済み関数も順序型で使えます。

関数
パラメータ
説明

Succ()
順序型の式
式の値の一つ次の値

Pred()
順序型の式
式の値の一つ前の値

Ord()
順序型の式
式の値の順序値

Delphi では次の宣言済み関数も使えます。

関数
パラメータ
説明

High()
順序型の型識別子または
順序型の変数
型の最大の値

Low()
順序型の型識別子または
順序型の変数
型の最小の値

Inc()
順序型の変数
順序型変数の値を
インクリメント

Dec()
順序型の変数
順序型変数の値を
デクリメント

Inc()Dec() は C 言語の ++ / += や -- / -= に相当します 1

  Inc(i);      // i++;

Inc(i, 3); // i+=3;
Dec(i); // i--;
Dec(i, 5); // i-=5;


2.2. Boolean 型 (Boolean Types)

Boolean 型は論理型の一つです。論理値は定義済みの定数 True および False で表されます。順序値が 1 の場合には True、順序値が 0 の場合には False であると見なされます。

次の論理演算子を論理型に使うと論理値を返します。

論理演算子
説明

and
論理積 (AND)

or
論理和 (OR)

not
否定 (NOT)

関係演算子 =, <>, <, <=, >=, >, in を使っても論理値を返します。例えば A <> B は排他的論理和 (XOR) になります。なお、Delphi には xor 論理演算子も用意されています 2

論理演算子
説明

xor
排他的論理和 (xor)

次の宣言済み関数は論理型の値を返します。

関数
パラメータ
説明

Odd()
整数型の変数または
整数値
値が奇数のときに True を返す

Eoln()
ファイル型変数
行の終わり。9 章で述べる

Eof()
ファイル型変数
ファイルの終わり。9 章で述べる

Delphi には他に ByteBool, WordBool, LongBool という論理型があります。これらの論理型は順序値がゼロ以外の場合、True とみなされます。

See also:


2.3. Integer 型 (Integer Types)

Integer 型は整数型の一つです。整数型は整数の部分集合を表します。次の論理演算子を整数型に使うと整数値を返します。

算術演算子
説明

*
乗算

div
整数除算

mod
剰余

+
加算

-
減算

※ 整数同士の除算に用いられる演算子は / ではなく div です。

Delphi では次の論理 (ビット) 演算子も使えます 2

論理 (ビット) 演算子
説明

and
ビット論理積

or
ビット論理和

not
ビット否定

xor
ビット XOR

shr
ビット右シフト

shl
ビット左シフト

次の宣言済み関数は整数型の値を返します。

関数
パラメータ
説明

Abs()
整数型の変数または整数値
値の絶対値を返す

Sqr()
整数型の変数または整数値
値の 2 乗を返す

Trunc()
実数型の変数または実数値
値の整数部を返す

Round()
実数型の変数または実数値
値を丸めた整数を返す

Succ()
整数型の変数
値の一つ次の値を返す

Pred()
整数型の変数
値の一つ前の値を返す

定義済み定数に MaxInt があり、その値は処理系依存です。Integer が 32 ビットとは限りません。ちなみに Turbo Pascal の Integer は 16 ビットでした。

image.png

image.png

Delphi にはプラットフォーム依存の整数型として NativeInt, NativeUInt, LongInt, LongWord があります。

Delphi のプラットフォーム非依存の整数型には、ShortInt, SmallInt, LongInt, Integer, Int64, Byte, Word, LongWord, Cardinal, UInt64 があります。

See also:


2.4. Char 型 (Character Types)

Char 型は文字型の一つです。文字集合が処理系依存のため、例えば次の関係が常に成り立つとは限りません。

'@' > '#'

変換関数として次の宣言済み関数が使えます。

関数
パラメータ
説明

Ord()
文字型の変数または
文字定数
現在の文字集合での順序数を返す

Chr()
順序型の変数または
順序数
順序数をもつ文字を返す

Delphi の文字型には他に AnsiChar, WideChar, UCS2Char, UCS4Char があります。

また、Delphi には ANSI 版 Delphi (Delphi 2007 以前)Unicode 版 Delphi (Delphi 2009 以降) がありそれぞれで Char 型の定義が異なります 3

Delphi
Char
AnsiChar
WideChar

ANSI 版
8 ビット
8 ビット
16 ビット

Unicode 版
16 ビット
8 ビット
16 ビット

標準 Pascal の Char は現行の Delphi だと AnsiChar に相当します。

See also:


2.5. Real 型 (Real Types)

Real 型は実数型の一つです。単純型の中で唯一順序型ではありません。Real 型のサイズや精度は実装依存です。

次の算術演算子の少なくとも片方の項が実数型の場合、実数値を返します。

算術演算子
説明

*
乗算

/
実数除算

+
加算

-
減算

※ 少なくとも片方の項が実数型の場合、除算に用いられる演算子は / となります。

次の宣言済み関数は実数型のパラメータを受け取って整数型の値を返します。

関数
パラメータ
説明

Abs()
実数型の変数または実数値
値の絶対値を返す

Sqr()
実数型の変数または実数値
値の 2 乗を返す

次の宣言済み関数は整数型のパラメータを受け取って実数型の値を返します。

関数
パラメータ
説明

Sin()
実数型の変数または実数値
値の正弦を返す

Cos()
実数型の変数または実数値
値の余弦を返す

ArcTan()
実数型の変数または実数値
値の逆正接を返す

Ln()
実数型の変数または実数値
値の自然対数を返す

Exp()
実数型の変数または実数値
値の指数関数を返す

Sqrt()
実数型の変数または実数値
値の平方根を返す

Delphi の実数型には他に Real48, Single, Double, Extended, Comp, Currency があります。

Real48 はクラシック Pascalが稼働していた CDC 6000 シリーズにネイティブな 48 ビットの実数型です。

See also:


(2.6.) 順序型変数の初期化

Delphi ではグローバル変数に限り、変数宣言と同時に初期化できます。


SimpleTypeInitTest.pas

program SimpleTypeInitTest;

{$APPTYPE CONSOLE}

// グローバル単純型変数と初期化
var
b1: Boolean = True;
i1: Integer = 100;
c1: Char = 'A';
r1: Real = 3.14;

procedure Sub;
// ローカル単純型変数は初期化できない
//var
// b2: Boolean = True;
// i2: Integer = 100;
// c2: Char = 'A';
// r2: Real = 3.14;
begin
...
end; { Sub }
begin
...
end.


See also:


索引

[ ← 1. 記法: トークンと区切り文字 ] [ ↑ 目次へ ] [ → 3. プログラムヘッダと宣言部 ]





  1. 最適化されたコードを生成するので積極的に使ったほうがいいのですが、慣れないうちは普通に i := i + 1; と書いたほうがソースコードの視認性はいいと思います。 



  2. xor, shr, shl 演算子は Turbo Pascal 1.0 から存在しました。同様に BLS Pascal では EXORSHIFT 演算子があり、SHIFT 演算子は正の数で左シフト、負の数で右シフトでした。 



  3. Free Pascal には Delphi 互換モードの指定を行うコンパイラ指令があり、{$mode Delphi} が ANSI 版 Delphi、{$mode DelphiUnicode} が Unicode 版 Delphi 互換モードとなっています。