Ada言語

ここでは,Ada言語を初めて学ぶときに,知っていることが望ましいことを幾つか記載しておきます.詳細は,Adaに関する情報を見て下さい.

1. 強い型付けの言語です

型付けというコトバは,他の言語では余り用いられません.変数が取り得る値を,型として,規定するというのが型付けの意味になります.

 Initial : Character range 'A' .. 'C';

ここで,FirstThree が変数です.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 をレコード型として宣言します.

ptype 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)