見出し画像

Adaでプログラミングを学習中です(変数宣言とプロシジャの仕様)

 米国防省規格言語Adaを対象にプログラミングを習う第3回です。 内容は、John EnglishのAda 95: The Craft of Object-Oriented Programmingの2章後半の読書感想文です。
 変数の宣言とプロシジャの仕様について学習しました。以下はそのまとめです。

変数の宣言

procedure プロシジャ名 is
 変数名 : データ型 [:= 初期値];
begin
 ...
 変数を使用する文
 ...
end Sum;

 プロシジャの文にて変数を使用するには、まずは変数の宣言をしなければならない。
 宣言は、isとbeginの間にて、変数の名前とそのデータ型を指定することで行う。
 宣言の際、変数に値を設定することもできる。値を設定しない場合、変数の値は、未定義と呼ばれる。
 (変数を宣言することで、その変数の値を収納するための領域がコンパイラにより確保される、とのことですが何のことだかよく分かりませんでした。)

use節

with パッケージ名;
use パッケージ名;
 ...
プロシジャ名; 
 ...

 use節でパッケージ名を指定することにより、そのパッケージに含まれるプロシジャを参照する際に、パッケージ名を省略することができる。
 use節で指定した異なるパッケージに同名のプロシジャを含まれている場合、その参照の際には、コンパイラにより適当なプロシジャが選択される。
 (例えば、Ada.Text_IOとAda.Integer_Text_IOをuse節で指定して、同名のプロシジャPutを参照する場合、コンパイラはPutのパラメータが文字列であるか整数であるかにより、どちらのパッケージのPutなのかを判断します。)

proceduer X is
First, Second : Integer;
begin
...
 Put (First+Second);
...
end X;

 所定の方法で組み合わされた値から新たな値を生み出すものを式と呼ぶ。
 (例えば、'+'で組み合わされた二つの整数型の値1, 2からは、新たな整数型の値3が生成されます。このとき1+2を整数式と呼びます。)

プロシジャの仕様

仕様:
 procedure プロシジャ名 (パラメータ名 : in|out データ型名 [:= ディフォルト値]);
呼び出し:
プロシジャ名 (パラメータ名 => 値);

 Adaでは、多くの機能がパッケージにより提供される。そのため、パッケージに含まれるプロシジャの仕様(宣言)を読めるようになることはとても重要である。
 プロシジャとの入出力は、パラメータを介して行われるので、プロシジャの仕様を理解することは、そのパラメータについて理解するとも言える。
 プロシジャの仕様には、各パラメータについての、名前、入出力の別、データ型、ディフォルト値が含まれる。
 パラメータ名は、パラメータを特定するための名前である。パラメータ名は、例えば、プロシジャの呼び出し時に使用される。
 入出力の別は、プロシジャに値を渡す場合はin、プロシジャからの値を受け取る場合はoutとなる。
 ディフォルト値は、パラメータが指定されなかった場合の値である。省略される場合もある。その場合は、必ずパラメータを指定しなければならない。
 (オーバーロードについての説明がありましたが、何のことだか分かりませんでした。)
 

まとめ

 今回でようやく入門の入門が終わったといったところでしょうか。
 ところで、内容とは関係のない見た目の話なのですが、noteのエディタで"コード"と指定した部分(黒背景の部分)のハイライトがおかしい気がします。まさか、Adaはマイナー言語でサポートされていない…、いやいやいや人気言語リストに載っていたメジャーな現役言語のはずです。
 次回は、2章の練習問題に挑戦します。

古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。