Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник Pascal ABC.doc
Скачиваний:
67
Добавлен:
07.11.2018
Размер:
985.6 Кб
Скачать

Операторы break, continue и exit

Операторы break и continue используются только внутри циклов.

Оператор break предназначен для досрочного завершения цикла. При его выполнении происходит немедленный выход из текущего цикла и переход к выполнению оператора, следующего за циклом. Оператор continue завершает текущую итерацию цикла, осуществляя переход к концу тела цикла. Например:

flag:=False; for i:=1 to 10 do begin   read(x);   if x<0 then continue; // пропуск текущей итерации цикла   if x=5 then   begin     flag:=True;     break; // выход из цикла   endend;

Использование операторов break и continue вне тела цикла ошибочно.

Оператор exit предназначен для досрочного завершения процедуры или функции. Например

function Analyze(x: integer): boolean; begin   if x<0 then   begin     Result:=False;     exit   end;   ... end;

Вызов exit в разделе операторов основной программы приводит к ее немедленному завершению.

Следует отметить, что в Pascal ABC (в отличие от Borland Pascal и Borland Delphi) break, continue и exit являются не процедурами, а операторами и входят в число служебных слов языка.

Оператор with

Оператор with позволяет сократить обращение к полям записи, а также к полям, методам и свойствам объекта. Он имеет вид:

with имя записи или объекта do оператор

или

with список имен do оператор

Всюду внутри оператора можно опускать имя записи при обращении к полю указанной записи или имя объекта при обращении к полю, методу или свойству указанного объекта. Например, пусть описана переменная

var   DateOfBirthday=record     Day: Integer;     Month: Integer;     Year: Integer;   end;

Тогда присваивание значений ее полям без использования оператора with имеет вид:

DateOfBirthday.Day:=23; DateOfBirthday.Month:=2; DateOfBirthday.Year:=1965;

Использование оператора with позволяет сократить предыдущую запись:

with DateOfBirthday do begin   Day:=23;   Month:=2;   Year:=1965;  end;

Если внешняя переменная имеет то же имя, что и поле (метод, свойство), то предпочтение отдается полю (методу, свойству). При наличии вложенных операторов with вначале предпринимается попытка рассматривать переменную как поле записи или объекта самого внутреннего оператора with, затем непосредственно объемлющего его оператора with и т.д. Если оператор with  содержит список объектов, то они рассматривается справа налево. Например, если имеются описания

var   x,y,z: integer;   a: record     x,y: integer;   end;   b: record     x: integer;   end;

то фрагмент программы

with a,b do begin   x:=1;   y:=2;   z:=3;  end;

эквивалентен фрагменту

with a do  with b do  begin    x:=1;    y:=2;    z:=3;   end;

а также фрагменту

b.x:=1; a.y:=2; z:=3;

Оператор безусловного перехода goto

Оператор безусловного перехода goto имеет следующую форму:

goto метка

Он переносит выполнение программы к оператору, помеченному меткой метка.

Метка представляет собой идентификатор или целое без знака. Чтобы пометить оператор меткой, необходимо перед оператором указать метку с последующим двоеточием:

label1: оператор

Метки должны быть описаны в разделе меток с использованием служебного слова label:

label 1,2,3;

Например, в результате выполнения программы

label 1,2; begin   i:=5; 2: if i<0 then goto 1;   write(i);   Dec(i);   goto 2; 1: end.

будет выведено 54321.

Метка должна помечать оператор в том же блоке, в котором описана. Метка не может помечать несколько операторов.

Переход на метку может осуществляться либо на оператор в том же блоке, либо на оператор в объемлющей конструкции. Так, запрещается извне цикла переходить на метку внутри цикла.

Использование оператора безусловного перехода в программе считается признаком плохого стиля программирования. Для основных вариантов использования goto в язык Паскаль введены специальные операторы: break - переход на оператор, следующий за циклом, exit - переход за последний оператор процедуры, continue - переход за последний оператор в теле цикла.

Единственный пример уместного использования оператора goto в программе  - выход из нескольких вложенных циклов одновременно. Например, при поиске элемента k в двумерном массиве:

  found:=False;   for i:=1 to 10 do   for j:=1 to 10 do     if a[i,j]=k then     begin       found:=True;       goto c1;     end; c1: writeln(found);