Будучи новичком в Ada, я изучаю его синтаксис и правила и хотел бы обратить внимание на приведенный далее код.Здесь я пытаюсь установить переменную Actual_Stiffness для хранения постоянного значения.Его значение определяется произведением:
Actual_Stiffness := Stiffness_Ratio * Stiffness_Total
, где Stiffness_Total была определена как постоянная Long_Float в файле спецификации Material_Data.ads, а 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), а затем получить его значение из продукта Actual_Stiffness: = Stiffness_Ratio * Stiffness_Total после BEGIN в моей программе, когда Stiffness_Ratio уже получил бы значение.Это было бы правильно.
Мой вопрос:
Я определил Stiffness_Total как константу Long_Float с заданным значением.Как определить, что Actual_Stiffness также должен быть постоянным (поскольку он не будет изменяться в программе), сохраняя при этом возможность для пользователя в интерактивном режиме вводить Stiffness_Ratio на терминале?Это вообще возможно сделать?
Спасибо большое ..