付録
定義済み識別子 (標準名)
定数
定数 | 値 |
---|---|
False | 0 |
MaxInt | (環境依存) |
True | 1 |
※ 特殊な定数 nil もあります。
Delphi にはこの他にも様々な定数が定義されています。
変数
変数 | 型 | 説明 |
---|---|---|
Input | テキストファイル | 標準入力 |
Output | テキストファイル | 標準出力 |
Delphi にはこの他にも様々な変数が定義されています。
型
型 | 説明 |
---|---|
Boolean | 論理型 |
Char | 文字型 |
Integer | 整数型 |
Real | 実数型 |
Text | ファイル型 |
Delphi にはこの他にも様々な型が定義されています。
標準手続きと標準関数
標準 Pascal の標準手続きと標準関数は、それぞれ次のように呼ばれる事があります。
- 宣言済み手続き / 宣言済み関数
- 定義済み手続き / 定義済み関数
つまりは最初から使えるルーチンの事です。Delphi だと 組み込みルーチン
が標準手続き/標準関数に相当します。
標準手続き (Required procedures)
ファイル処理手続き (File handling procedures)
手続き | 説明 | Turbo | UCSD |
---|---|---|---|
Get() | ファイルを次の要素まで進め、 その値をバッファ変数 F^ に格納する。 要素が存在しなければ Eof() は True になり F^ は不定となる。 |
〇 | |
Page() | ページ送りを行う。 | 〇 | |
Put() | ファイル F にバッファ変数 F^ の値を追加する。 実行後は Eof() は True になり F^ は不定となる。 |
〇 | |
Read() | ファイルからデータを読み込む。 | 〇 | 〇 |
Readln() | ファイルからテキストを 1 行読み込む。 | 〇 | 〇 |
Reset() | ファイル F を先頭に位置付け、 F が空でなければ F の最初の要素が F^ に代入され、Eof() は False を返す。 |
〇 | 〇 |
Rewrite() | ファイル F を生成する。 F は空になり、Eof() は True を返す。 |
〇 | 〇 |
Write() | ファイルにデータを書き込む。 | 〇 | 〇 |
Writeln() | ファイルにテキストを 1 行書き出す。 | 〇 | 〇 |
動的割付け手続き (Dynamic allocation procedures)
手続き | 説明 | Turbo | UCSD |
---|---|---|---|
Dispose() | 動的変数用に割り当てられたメモリを解放する。 | 〇 | |
New() | 新しい動的変数を作成し、パラメータに渡された ポインタ変数を動的変数のポインタに設定する。 オリジナル Pascal では Alloc()。 |
〇 | 〇 |
変換手続き (Transfer procedures)
手続き | 説明 | Turbo | UCSD |
---|---|---|---|
Pack() | パックされていない配列型の内容を パックされている配列型へコピーする。 |
||
Unpack() | パックされている配列型の内容を パックされていない配列型へコピーする。 |
標準関数 (Required functions)
算術関数 (Arithmetic functions)
関数 | パラメータ | 説明 | Turbo | UCSD |
---|---|---|---|---|
Abs() | 単純型の変数または 単純値 |
値の絶対値を返す | 〇 | 〇 |
ArcTan() | 実数型の変数または 実数値 |
値の逆正接を返す | 〇 | 〇 |
Cos() | 実数型の変数または実数値 | 値の余弦を返す | 〇 | 〇 |
Exp() | 実数型の変数または 実数値 |
値の指数関数を返す | 〇 | 〇 |
Ln() | 実数型の変数または 実数値 |
値の自然対数を返す | 〇 | 〇 |
Sin() | 実数型の変数または 実数値 |
値の正弦を返す | 〇 | 〇 |
Sqr() | 単純型の変数または 単純値 |
値の 2 乗を返す | 〇 | 〇 |
Sqrt() | 実数型の変数または 実数値 |
値の平方根を返す | 〇 | 〇 |
変換関数 (Transfer functions)
関数 | パラメータ | 説明 | Turbo | UCSD |
---|---|---|---|---|
Round() | 実数型の変数または 実数値 |
値を丸めた整数を返す | 〇 | 〇 |
Trunc() | 実数型の変数または 実数値 |
値の整数部を返す | 〇 | 〇 |
順序関数 (Ordinal functions)
関数 | パラメータ | 説明 | Turbo | UCSD |
---|---|---|---|---|
Chr() | 順序型の変数または 順序数 |
順序数をもつ文字を返す。 | 〇 | 〇 |
Ord() | 文字型の変数または 文字定数 |
現在の文字集合での 順序数を返す。 オリジナル Pascal では Int() |
〇 | 〇 |
Pred() | 整数型の変数 | 値の一つ前の値を返す | 〇 | 〇 |
Succ() | 整数型の変数 | 値の一つ次の値を返す | 〇 | 〇 |
論理関数 (Boolean functions)
関数 | パラメータ | 説明 | Turbo | UCSD |
---|---|---|---|---|
Eof() | ファイル型変数 | ファイルの終わり | 〇 | 〇 |
Eoln() | ファイル型変数 | 行の終わり | 〇 | 〇 |
Odd() | 順序型の変数または 順序値 |
値が奇数のときに True を返す |
〇 | 〇 |
Delphi にはこの他にも色々な組み込みルーチンが用意されています。
記号
特殊シンボル (特殊記号)
標準 Pascal:
# ' ( ) * + , - . / : ; < = > [ ] ↑ { }
Delphi:
# $ & ' ( ) * + , - . / : ; < = > @ [ ] ^ { }
CDC 科学用 64 文字集合
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | : | A | B | C | D | E | F | G | H | I |
10 | J | K | L | M | N | O | P | Q | R | S |
20 | T | U | V | W | X | Y | Z | 0 | 1 | 2 |
30 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | - | * |
40 | / | ( | ) | $ | = | , | . | ≡ | [ | |
50 | ] | % | ≠ | ↱ 1 | ∨ | ∧ | ↑ | ↓ 2 | < | > |
60 | ≤ | ≥ | ¬ | ; |
文字集合変換ルール (1973)
CDC (Pascal) | ∨ | ∧ | ¬ | ≠ | ≤ | ≥ | { | } | ↑ | [ | ] |
---|---|---|---|---|---|---|---|---|---|---|---|
ASCII | OR | AND | NOT | <> | <= | >= | /* | */ | @ | [ | ] |
EBCDIC | | | & | ¬ | ¬= | <= | >= | /* | */ | @ | (. | .) |
代替表現 (ダイグラフ )
標準 Pascal:
※ 1983 年よりも前の Pascal では注釈 ({ }
-> (* *)
) 以外の代替表現は明確に定義されていません。
文字 (基準表現) |
ダイグラフ (代替表現) |
---|---|
↑ または ^ | @ |
{ | (* |
} | *) |
[ | (. |
] | .) |
『J&W』第 3 版以降では ↑ の代わりに @ または ^
という記述がありますが、ISO / ANSI Pascal では
文字 ↑ は ISO 646の国別表現によっては文字 ^ と同等とみなされている。
この規格では見やすさを考慮して文字 ↑ を用いる。
JIS ではさらに
文字 ↑ は JIS X 0201 の文字 ^ に対応する。
とあるため、上記の表が正確だと思います。
Delphi:
Delphi での @
は ↑
(または ^
) の代替表現ではなく演算子です。
予約語 (綴り記号)
標準 Pascal:
and end nil set
array file not then
begin for of to
case function or type
const goto packed until
div if procedure var
do in program while
downto label record with
else mod repeat
Delphi:
and except label set
array exports library shl
as file mod shr
asm finalization nil string
begin finally not then
case for object threadvar
class function of to
const goto or try
constructor if packed type
destructor implementation procedure unit
dispinterface in program until
div inherited property uses
do initialization raise var
downto inline record while
else interface repeat with
end is resourcestring xor
指令
指令
標準 Pascal:
forward
Delphi:
absolute final override safecal
abstract forward package sealed
assembler helper pascal static
automated implements platform stdcall
cdecl index private stored
contains inline protected strict
default library public unsafe
delayed local published varargs
deprecated message read virtual
dispid name readonly winapi
dynamic near reference write
experimental nodefault register writeonly
export operator reintroduce
external out requires
far overload resident
ヒント指令
標準 Pascal:
(なし)
Delphi:
platform deprecated library
構文オプション (コンパイラ指令)
次の構文オプションは [プロジェクト | プロジェクトオプション] でも変更できます。
※ * が付いているスイッチがデフォルトです。
VAR 文字列の厳密処理 {$V}
説明 | |
---|---|
{$V+}* | 厳密な型チェックが行われ,仮パラメータと 実パラメータが同一の文字列型であることを 要求する。 |
{$V-} | 短い文字列型の変数はすべて実パラメータとして 使用可能。 |
完全な論理評価 {$B}
説明 | |
---|---|
{$B+} | 完全論理評価を行う |
{$B-}* | 短絡論理評価 (ショートサーキット論理評価)を 行う |
拡張構文 {$X}
説明 | |
---|---|
{$X+}* | 関数の結果を別の関数に渡したり演算や代入に 使用することなく破棄できる。 関数内で Result 変数が使える。 ヌルで終わる文字列と Delphi 文字列の 代入互換性がある。 |
{$X-} | 関数の結果は別の関数に渡したり演算や代入に 使用しなくてはならない。 関数内で Result 変数は使えない。 ヌルで終わる文字列と Delphi 文字列の 代入互換性がない。 |
型付き @ 演算子 {$T}
説明 | |
---|---|
{$T+} | @ 演算子の結果の型は型付きポインタ |
{$T-}* | @ 演算子の結果の型は型なしポインタ |
オープンパラメータ {$P}
説明 | |
---|---|
{$P+}* | string はオープン文字列パラメータ |
{$P-} | string は変数パラメータ |
長い文字列を使う {$H}
説明 | |
---|---|
{$H+} | string を短い文字列 (ShortString) |
{$H-}* | string は長い文字列 (AnsiString) |
型付き定数への代入 {$J}
説明 | |
---|---|
{$J+} | 型付き定数へ書き込み可能 |
{$J-}* | 型付き定数へ書き込み不可能 |
資料とチュートリアル
Pascal 関連で参考になるサイト
- ETH Research Collection
- Pascal Central
- Turbo Pascal Compiler Internals
- THE ISO 7185 STANDARD PASCAL PAGE
- Pascal for small machines
スイス連邦工科大学チューリッヒ校 (ETH) にある資料
- The programming language Pascal (1970)
- An axiomatic definition of the programming language Pascal (1972)
- The programming language Pascal (Revised Report) (1973)
- The PASCAL "P" compiler: Implementation notes (1974)
- PASCAL-S (1975)
- A Collection of Pascal programs (1979)
書籍とドキュメント
- Delphi 言語ガイド (DocWiki)
- Delphi’s Object Pascal Style Guide (DocWiki)
- Object Pascal Handbook 11.0 Alexandria Edition (日本語: 書籍)
- Object Pascal Handbook 11.0 Alexandria Edition (英語: PDF / 無料)
- Object Pascal Handbook 10.4 Sydney Edition (英語: PDF / 無料)
- Object Pascal Handbook 10 Seattle Edition (日本語: 書籍)
- OBJECT PASCAL HANDBOOK 10.4 Sydney Edition / 11.0 Alexandria Edition に掲載のソースコード (GitHub)
-
Delphiで始める ビジュアルプログラミング (PDF / 無料)
- ホワイトペーパー
-
Packt の Delphi 関連書籍
- Expert Delphi (Paweł Głowacki, 2017)
- Delphi Cookbook - Third Edition (Daniele Spinetti, Daniele Teti, 2018)
- Delphi High Performance (Primož Gabrijelčič, 2018)
- Hands-On Design Patterns with Delphi (Primož Gabrijelčič, 2019)
- Delphi Programming Projects (William Duarte, 2019)
- Mastering Delphi Programming: A Complete Reference Guide (Primož Gabrijelčič, 2019)
- Delphi GUI Programming with FireMonkey (Andrea Magni, 2020)
-
Fearless Cross-Platform Development with Delphi (David Cornelius, 2021)
- Leanpub の Delphi 関連書籍
- Qiita の書評
- Delphi の日本語書籍 (ht-deko.com)
【DELPHI STARTER チュートリアルシリーズ】 シーズン2
~ 無料の開発環境 Delphi Starter Edition で Object Pascal言語を優しく学ぶ ~
- 第1回 「シューティングゲームのプログラム」
- 第2回 「変数と型」
- 第3回 「条件とループ」
- 第4回 「Function と Procedure (関数と手続き)」
- 第5回 「配列 と レコード」
- 第6回 「文字列 と オブジェクト」
- 第7回 「オブジェクト指向」その1
- 第7回 「オブジェクト指向」その2
- 第8回 「作ってみよう」Delphiの部
Delphi Starter Edition でメモ帳クローンを作る
- Delphi Starter Edition でメモ帳クローンを作る (前編) (Qiita)
- Delphi Starter Edition でメモ帳クローンを作る (後編) (Qiita)
- Delphi Starter Edition でメモ帳クローンを作る - 2nd Edition - (Qiita)
- Delphi Starter Edition でメモ帳クローンを作る - 番外編 (Qiita)
後継言語や ISO 規格との比較
Pascal (1970) |
Modula-2 (1979) |
Oberon (1988)/ Oberon-07 (2007) |
Oberon-2 (1991) |
|
---|---|---|---|---|
モジュール化 | △ ISO 10206 (1991) |
〇 | 〇 | 〇 |
オブジェクト指向 | × ドラフト |
△ ISO 10514-3 (1988) |
△ | 〇 |
※ ISO/IEC 10206:1991 = 拡張 Pascal (Extended Pascal)
※ ISO/IEC 10514-3:1988 = オブジェクト指向 Modula-2 (Object Oriented Modula-2)
検証環境一覧
- 標準 Pascal: PASCAL-P5
- UCSD Pascal: DOSBOX-X / UCSD p-System IV.2.2
- Pascal/MT+ (CP/M): RunCPM (Win32) / Pascal/MT+ ver5.6.1
- Apple II Pascal: AppleWin / Apple Pascal System 1.1
- Turbo Pascal (CP/M): RunCPM (Win32) / Turbo Pascal 3.01A
- Turbo Pascal (MS-DOS): DOSBOX-X / Turbo Pascal 1.0 / 3.0 / 5.5
- MPW Pascal: Basilisk II | SheepShaver / MPW Pascal 3.6d7
- Think Pascal: Basilisk II | SheepShaver / Think Pascal 4.5d4
- Delphi: Delphi 10.4 Sydney
- GNU Pascal: ideone.com
- Free Pascal: ideone.com
- Modula-2: XDS-x86
- Oberon-2: XDS-x86
See also:
- PASCAL-P5 (SourceForge)
- Embarcader Delphi (Embarcadero)
- RunCPM (Win32) についてのツイート
- Apple Pascal System についてのツイート
- MPW Pascal についてのツイート
- Think Pascal についてのツイート
ギャラリー
・Apple II Pascal System (UCSD II.1)
・UCSD p-System IV.2.2 (Pecan Software Systems, Inc.)
・Apple Macintosh Programmer's Workshop (WPM) 3.6d7
・Blue Label Software (BLS) Pascal 1.2
・Borland Turbo Pascal 1.0 (MS-DOS)
Compiler Version: 1.0
・Borland Turbo Pascal 3.01A (CP/M)
Compiler Version: 3.0
・Borland Turbo Pascal 5.5 (MS-DOS)
Compiler Version: 5.5
・Borland Delphi 1
Compiler Version: 8.0
・Borland Delphi 7
Compiler Version: 15.0
・Borland Kylix 3 for Delphi (Linux)
・CodeGear Delphi 2007
Compiler Version: 18.5
・Embarcadero Delphi 10.4 Sydney
Compiler Version: 34.0
See also:
- 割と簡単に ’標準 Pascal' を試してみたい (Qiita)
- 割と簡単に ’標準 Modula-2 / Oberon-2' を試してみたい (Qiita)
- UCSD Pascal を触るためだけの UCSD p-System 操作ガイド (Qiita)
- Pascal/MT+ の簡単な使い方 (Qiita)
- Macintosh Programmer's Workshop (MPW) Object Pascal の簡単な使い方 (Qiita)
- Pascal の勉強に使えそうな Pascal 処理系 (Qiita)
索引
[ ← 12. テキストファイルの入出力 ] [ ↑ 目次へ ] [用語集 →]