Операторы передачи управления

  • break
  • Немедленный выход из циклов FOR, WHILE, REPEAT. Управление передается оператору находящемуся после цикла. Страница документации: http://www.freepascal.org/docs-html/rtl/system/break.html

  • continue
  • Прерывает выполнение цикла (текущую итерацию) и передает управление на заголовок цикла, даже если текущая итерация не была завершена. Страница документации: http://www.freepascal.org/docs-html/rtl/system/continue.html
     Примечание  Проявление лучшего стиля программирования является использование вместо процедур break и continue операторов цикла while и repeat.

  • goto
  • Оператор безусловного перехода. Передает управление оператору с меткой. Метки должны быть описаны в разделе описания меток label. В отличие от обычных идентификаторов имя метки может начинаться с цифры. Например:

    ...
    label
      123, 12a, aaa;
    ...
    begin
      ...
      if n > 0 then 
        goto 12a;
      ...
    12a: i := 2 * n - 1; 
      ...
    end;
    
     Примечание  Метка, на которую передается управление должна быть описана в разделе описания того блока (основная программа, процедура или функция), в которой эта метка используется.
     Примечание  Использование данного оператора усложняет понимание логики программы и нарушает принципы структурного программирования. В большинстве алгоритмов можно избежать использование goto.

  • exit
  • Осуществляет выход из подпрограммы. Если вызывается в основной программе, процедура exit останавливает программу. Страница документации: http://www.freepascal.org/docs-html/rtl/system/exit.html
    См. ниже работу процедуры exit в сочетании с Try … Finally.

  • halt
  • Процедура halt прекращает выполнение программы. Страница документации: http://www.freepascal.org/docs-html/rtl/system/halt.html

Исключения

Исключения предоставляют удобный способ контроля ошибок и обработки ситуаций, которые могут привести к ошибке в программе. Исключения связаны с классами и являются элементами ООП, поэтому используются в режиме {$MODE OBJFPC}. Данная директива устанавливается в самом начале модуля / исходного кода программы.
Всего существует три вида конструкции: Raise, Try … Except, Try … Finally. Пример использования последней при работе с файлом из документации:

Procedure Doit(Name : string);  
Var  
  F: Text;  
  B: Boolean;  
begin  
  B:=False;  
  Assign(F,Name);  
  Rewrite(name);  
  Try  
    // Работа с файлом  
    if B then  
      exit; // Преждевременная остановка процесса
    // Продолжается работа с файлом  
  Finally  
    Close(F);
  end;

Страница документации: http://www.freepascal.org/docs-html/ref/refch17.html

Print Friendly, PDF & Email

Добавить комментарий