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 論理演算子も用意されています。
論理演算子 | 説明 |
---|---|
xor | 排他的論理和 (xor) |
次の標準関数は論理型の値を返します。
関数 | パラメータ | 説明 |
---|---|---|
Odd() | 整数型の変数または 整数値 |
値が奇数のときに True を返す |
Eoln() | ファイル型変数 | 行の終わり。9 章で述べる |
Eof() | ファイル型変数 | ファイルの終わり。9 章で述べる |
Delphi には他に ByteBool, WordBool, LongBool という論理型があります。これらの論理型は順序値がゼロ以外 (非ゼロ) の場合、True とみなされます。Ord(LongBool(True))
は 1
ではなく -1
を返します。これは他言語との互換性のために用意された型だからです。
See also:
2.3. Integer 型 (Integer Types)
Integer 型は整数型の一つです。整数型は整数の部分集合を表します。次の論理演算子を整数型に使うと整数値を返します。
算術演算子 | 説明 |
---|---|
* | 乗算 |
div | 整数除算 |
mod | 剰余 |
+ | 加算 |
- | 減算 |
※ 整数同士の除算に用いられる演算子は /
ではなく div
です。
Delphi では次の論理 (ビット) 演算子も使えます。
論理 (ビット) 演算子 | 説明 |
---|---|
and | ビット論理積 |
or | ビット論理和 |
not | ビット否定 |
xor | ビット XOR |
shr | ビット右シフト |
shl | ビット左シフト |
次の標準関数は整数型の値を返します。
関数 | パラメータ | 説明 |
---|---|---|
Abs() | 整数型の変数または整数値 | 値の絶対値を返す |
Sqr() | 整数型の変数または整数値 | 値の 2 乗を返す |
Trunc() | 実数型の変数または実数値 | 値の整数部を返す |
Round() | 実数型の変数または実数値 | 値を丸めた整数を返す |
Succ() | 整数型の変数 | 値の一つ次の値を返す |
Pred() | 整数型の変数 | 値の一つ前の値を返す |
定義済み定数に MaxInt があり、その値は処理系依存です。Integer が 32 ビットとは限りません。
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 型の定義が異なります 1。
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 ではグローバル変数に限り、変数宣言と同時に初期化できます。
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. プログラムヘッダと宣言部 ]