(日本語) Ada言語

Sorry, this entry is only available in Japanese. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

ここでは,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)