私は Ada を初めて使用するので、その構文と規則を調べています。次に示すコードに注意を向けたいと思います。ここでは、変数 Actual_Stiffness を設定して定数値を保持しようとしています。その値は製品によって与えられます。
Actual_Stiffness := Stiffness_Ratio * Stiffness_Total
ここで、Stiffness_Total は、仕様ファイル Material_Data.ads で定数 Long_Float として定義されており、Stiffness_Total の値は ads ファイルで既に設定されています。
WITH Ada.Text_IO;
WITH Ada.Long_Float_Text_IO;
WITH Material_Data;
USE Material_Data;
PROCEDURE sample IS
Stiffness_Ratio : Long_Float;
Actual_Stiffness : CONSTANT Long_Float := Stiffness_Ratio * Stiffness_Total;
BEGIN -- main program
Ada.Text_IO.Put("Enter stiffness ratio: ");
Ada.Long_Float_Text_IO.Get(Item => Stiffness_Ratio);
Ada.Long_Float_Text_IO.Put(Item => Stiffness_Ratio);
--Ada.Text_IO.New_Line;
--Ada.Long_Float_Text_IO.Put(Item => Actual_Stiffness);
--Ada.Text_IO.New_Line;
--Ada.Long_Float_Text_IO.Put(Item => Stiffness_Total);
END sample;
コンパイル時に警告メッセージが表示されます
警告: 「Stiffness_Ratio」は値を持つ前に参照される可能性があります
プログラムを実行すると、Actual_Stiffness は正しい値を取得しません。Actual_Stiffness を単なる Long_Float として (CONSTANT を追加せずに) 定義し、プログラムの BEGIN の後で Actual_Stiffness := Stiffness_Ratio * Stiffness_Total の積からその値を取得することができました。これは正しいことです。
私の質問は:
Stiffness_Total を、所定の値を持つ定数 Long_Float として定義しました。ユーザーが端末で Stiffness_Ratio をインタラクティブに入力できるようにしながら、Actual_Stiffness を一定に定義する方法 (プログラムで変更されないため) は? それは可能ですか?
どうもありがとう..