2015-02-12 3 views
1

Без копирования в мой код здесь, как я могу остановить свою программу 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 поэтому найти правильный синтаксис является боль. Любая помощь?

+1

Зачем кому-то ЗАПУСТИТЬ выполнение программы ADA? Как насчет 'then return' – Jiminion

+0

Я считаю, что это не утверждение 'abort': http://www.adaic.org/resources/add_content/docs/95style/html/sec_6/6-3-3.html –

+0

Ваш пример исходного текста не компилируется и не запускается. Пожалуйста, покажите нам, что вы, по крайней мере, приложили немало усилий. –

ответ

4

Для этого не существует специального синтаксиса.

Если вы находитесь в основной процедуре, простенький return будет делать.

Ada83-совместимый ответ here on SO.

Оба они в порядке, пока у вас нет никаких задач.

Там в решение Ada95 Rosetta код, который будет работать, есть ли у вас задачи или нет:

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; 

и ВНСТ конкретного решения, а также в порядке с задачами:

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; 
+0

Лучший ответ, чем мой. –

+0

Брайан твой работал для меня хорошо, но спасибо за ответы. Приветствия. – user2855405

1
if variable_name >1 then 
    raise PROGRAM_ERROR with "Aborted because ..."; 
end if; 

будет делать то, что вы просите. То, что вы хотите, это другое дело, вы не дали нам достаточно контекста, чтобы догадаться об этом.

Оператор «abort» также может быть использован, но его нормальная роль заключается в завершении задач в рамках многозадачной программы.

Восстанавливать исключение, вероятно, проще всего, и если вам не нравятся стандартные, вы всегда можете заявить о себе. В исключительных случаях вы также можете выполнять любое утилизацию (например, закрывать файлы, если это необходимо) в вашем собственном обработчике исключений. См. the Wikibook для более подробной информации.

Смежные вопросы