Будучи новой для Ada, я изучаю ее синтаксис и правила, и я хотел бы обратить внимание на приведенный ниже код. Здесь я пытаюсь установить переменную Actual_Stiffness для сохранения постоянного значения. Его значение определяется произведением:Постоянная декларация в Ada
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 на терминале? Это возможно?
Большое спасибо ..
Спасибо. Это правильная вещь. Думаю, вы имели в виду: «Вам нужно будет сделать Actual_Stiffness ...». – yCalleecharan
@yCalleecharan: да - моя ошибка. Я исправлю. –
Спасибо за исправление. – yCalleecharan