ここでは,Ada言語を初めて学ぶときに,知っていることが望ましいことを幾つか記載しておきます.詳細は,Adaに関する情報を見て下さい.
1. 強い型付けの言語です
型付けというコトバは,他の言語では余り用いられません.変数が取り得る値を,型として,規定するというのが型付けの意味になります.
Initial : Character range 'A' .. 'C';
ここで,Initial が変数です.Character は文字を表す基本型です.ここでは,範囲制約が付くことにより,Character range ‘A’ .. ‘C’ で副型(subtype)を構成します.
繰り返しこの副型を使用する場合,明示的に宣言することができます.
subtype InitialCharacter is Character range 'A' .. 'C';
これにより,変数宣言は,次のように書くことができます.
Initial : InitialCharacter;
いま,Initial に,’D’ を代入しようとすると,副型が保証している範囲制約を越えることになるので,コンパイルエラーとなります.変数の取り得る値に制約を加えることができ,共通のものについては,「型」とすることができる.誤って,異なる型同士の演算が書かれていれば,静的にコンパイラが見つけるというのが,「強い型付け」というときの主たる意味になります.
2. 基本構造
基本単位は,パッケージになります.パッケージは,(パッケージの)仕様部とボディ部に分かれます.副プログラムには,手続き(procedure)と関数(function)の2種類があります.仕様部では,そのパッケージで用いる型や,副プログラムを宣言します.ボディ部では,副プログラムの実体を定義します(下図参照).
例を見てみます.いま,パッケージ Buffer を考えます.この Buffer の仕様部では,バッファー値を設定する Load 手続きを考えます.
procedure Load ( B : out Buffer; S: in String);
ここで,in / out は引数モードと呼ばれます.B は手続きの出力で,S は,入力になります.他には,in out モードがあります.値が更新される入力変数ということを示します.
また,型 Buffer をレコード型として宣言します.
type Buffer is
record
Data: String ( 1 .. 80 );
Start: Integer;
Finish: Integer;
end record;
ボディ部では,この手続きを実装します.
procedure Load ( B : out Buffer; S: in String) is
begin
B.Start : = 1;
B.Finish := S'Length;
B.Data ( B.Start .. B.Finish ) : = S;
end Load
前述のように副プログラムには,手続きの他に関数があります.関数は返り値を持ち,式の一部として用いることができます.
(NIL)