Как остановить выполнение в моей программе
Не вставляя сюда мой код, как я могу помешать моей программе ADA больше выполнять строки кода во время выполнения, если она вычисляет определенное значение в "X"?
что-то вроде:
variable_name := variable_name +4;
if variable_name >1 then
// END program here and dont execute any lines under this one
end if
Я не новичок в программировании, но плохо знаком с ADA, поэтому поиск правильного синтаксиса - это боль. Любая помощь?
2 ответа
Для этого нет определенного синтаксиса.
Если вы находитесь в основной процедуре, простой return
Сделаю.
Ada83-совместимый ответ здесь, на SO.
И те, и другие в порядке, если у вас нет задач.
Существует решение Ada95 Rosetta Code, которое будет работать независимо от того, есть у вас задачи или нет:
with Ada.Task_Identification; use Ada.Task_Identification;
procedure Main is
-- Create as many task objects as your program needs
begin
-- whatever logic is required in your Main procedure
if some_condition then
Abort_Task (Current_Task);
end if;
end Main;
и GNAT-специфичное решение, также хорошо с задачами:
with Ada.Text_IO; use Ada.Text_IO;
with GNAT.OS_Lib;
procedure Stopping is
procedure P is
begin
GNAT.OS_Lib.OS_Exit (0);
end P;
begin
Put_Line ("starting");
P;
Put_Line ("shouldn't have got here");
end Stopping;
if variable_name >1 then
raise PROGRAM_ERROR with "Aborted because ...";
end if;
будет делать то, что вы просите. Если это то, что вы хотите, это другое дело, вы не дали нам достаточно контекста, чтобы догадаться об этом.
Оператор "abort" также может использоваться, но его обычная роль - завершение задач в многозадачной программе.
Вызвать исключение, вероятно, проще всего, и если вам не нравятся стандартные, вы всегда можете объявить свое. За исключением, вы также можете выполнить любую очистку (например, закрытие файлов, если вам нужно) в своем собственном обработчике исключений. Смотрите Wikibook для более подробной информации.