作为 Ada 的新手,我正在探索它的语法和规则,我想提请注意接下来给出的代码。在这里,我试图设置一个变量 Actual_Stiffness 来保持一个恒定值。它的值由产品给出:
Actual_Stiffness := Stiffness_Ratio * Stiffness_Total
其中 Stiffness_Total 已在规范文件 Material_Data.ads 中定义为常量 Long_Float,而 Stiffness_Total 的值已在广告文件中设置。
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_Ratio 已经获得了一个值。这将是正确的做法。
我的问题是:
我已将 Stiffness_Total 定义为具有规定值的常量 Long_Float。如何将 Actual_Stiffness 定义为常量(因为它不会在程序中更改),同时保持用户能够在终端以交互方式输入 Stiffness_Ratio 的能力?这甚至可能吗?
非常感谢..