Как остановить выполнение в моей программе

Не вставляя сюда мой код, как я могу помешать моей программе 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 для более подробной информации.

Другие вопросы по тегам