
- •1.2.5. Лексика, синтаксис и семантика языков программирования
- •2.1. Алфавит языка
- •2.2. Структура программы
- •2.3. Концепция типа для данных
- •2.4. Стандартные типы данных
- •2.5. Перечисляемые и ограниченные типы
- •2.6. Константы
- •2.7. Переменные
- •2.8. Инициализация переменных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода и вывода
- •3.3. Выражения
- •3.4. Составной оператор
- •3.5. Условный оператор
- •3.6. Оператор варианта
- •3.7. Цикл с предусловием
- •3.8. Цикл с постусловием
- •3.9. Цикл с параметром
- •3.10. Операторы завершения цикла
- •3.11. Метки и операторы перехода
3.10. Операторы завершения цикла
Иногда нужно прервать выполнение цикла, проанализировав какие-то условия внутри него. Для этого можно использовать оператор Break. Он прерывает выполнение тела цикла и передает управление следующему за циклом оператору.
Для прерывания циклов, размещенных в процедурах или функциях, можно использовать процедуру Exit. Она прерывает выполнение той процедуры или функции, в которой расположен цикл.
Прервать выполнение блока, в котором расположен цикл, можно, сгенерировав исключение. Наиболее часто используется процедура Abort, генерирующая «молчаливое» исключение, не связанное с каким-то сообщением об ошибке.
Процедура Continue прерывает выполнение текущей итерации, текущее выполнение тела цикла и передает управление на следующую итерацию.
Для всех операторов цикла выход из цикла осуществляется как вследствие естественного окончания оператора цикла, так и с помощью операторов перехода и выхода.
3.11. Метки и операторы перехода
При необходимости можно доказать, что рассмотренных операторов достаточно для написания программ любой сложности. К тому же современная технология структурного программирования основана на принципе "программировать без GOTO": считается, что злоупотребление операторами перехода затрудняет понимание программы, делает ее запутанной и сложной в отладке. Но в некоторых случаях использование операторов перехода может упростить программу.
Оператор перехода имеет следующий синтаксис:
goto <метка>;
Метку можно назвать именем оператора программы. В стандарте языка Pascal, в языках Object Pascal и Delphi метка – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Для совместимости со стандартом языка Pascal в Object Pascal и в Delphi в качестве меток можно использовать целые числа без знака. Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем, как появиться в программе, метка должна быть описана. Описание меток состоит из зарезервированного слова label (метка), за которым следует список меток:
label loop, 1, 2;
begin
goto 1;
loop:
1:2:
goto 2;
…
Действие оператора goto заключается в передаче управления соответствующему помеченному оператору. При использовании меток необходимо помнить о том, что метка, на которую ссылается оператор goto, должна быть описана в разделе описаний, и она обязательно должна встретиться где-нибудь в тексте программы. Метки, описанные в подпрограмме, локализуются в ней, поэтому передача управления извне подпрограммы на метку внутри нее невозможна.