Кодинг
★ Рубрика: Кодинг
★ Тема: Pascal

Операторы повтора в Паскале

Операторы повтора используются при организации циклов. Цикл – это последовательность операторов, которая может выполняться более одного раза. Если количество повторов известно заранее, как правило используют оператор for, а если нет, то операторы repeat или while.

Оператор цикла for

Оператор может быть представлен в двух вариантах:
for < параметр цикла > := < S1 > to < S2 > do < оператор >;
for < параметр цикла > := < S1 > downto < S2 > do < оператор >;
S1,S2 – начальное и конечное значения параметра цикла. Первый вариант обеспечивает прокрутку параметра по возрастанию, второй по убыванию. Тело цикла может быть простым или составным. Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. При этом допустим любой скалярный тип кроме вещественного.

Примеры.
for i:=10 to 14 do write (i:3);
for i:=14 downto 10 write (i:3);
for Ch:='a' to 'e' do write (Ch:2);
Замечание 1. В операторе for не допускается изменение параметра цикла на величину отличную от единицы. Этого недостатка лишены while, repeat.
Замечание 2. В теле оператора for не допускается изменение величины параметра цикла.
Замечание 3. Для досрочного выхода из цикла, можно использовать оператор goto. Но с точки зрения структурного программирования в случае необходимости досрочного выхода из цикла следует пользоваться операторами while, repeat.
Замечание 4. В теле цикла могут находиться другие циклы (вложенные). Здесь следует соблюдать осторожность.

Оператор повтора repeat
repeat
 <оператор;>
 . . .
 <оператор:>
until <условие>;
Условие – булево выражение. Операторы между заголовком и условием образуют тело цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевого выражения "ложь", тело цикла активизируется еще раз, если результат "истина" – происходит выход из цикла.

Замечание 1. Тело цикла обязательно выполняется хотя бы один раз.
Замечание 2. В теле цикла может находиться произвольное число операторов без операторных скобок begin .. end.
Замечание 3. Для преждевременного выхода из цикла можно присвоить параметру цикла значение заведомо не удовлетворяющее условию цикла.

Примеры.
repeat
 s:=100/A; D:=A/5;
 if s<0.5 then goto Metka;
 A:=A+1
until (A<=100) and (D<>0);
Metka: . . . repeat
 s:=100/A;
 if s<0.5 then A:=-999;
 A:=A+1
until (A<=100);
Оператор while

Этот оператор аналогичен оператору repeat, но проверка условия выполнения тела цикла производится в самом начале оператора.
while <условие> do <тело цикла>;
Условие- булево выражение, а тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется условие, и если оно истинно, то тело цикла выполняется. Если результат ложный, то происходит вы-ход из цикла и переход к первому после while оператору.

Замечание 1. Если перед первым выполнением значение условия ложно, то тело цикла вообще не будет выполняться.
Замечание 2. Для организации изначально бесконечного цикла можно в условии цикла записать константу True или заведомо справедливое условие.
Замечание 3. Использование оператора while вызывает гораздо меньше ошибок, чем использование оператора repeat, поэтому если нет особой необходимости, следует отдавать предпочтение while.

Примеры. <
while True do 
write ('бесконечный цикл'); i:=30;
while (i<0) do i:=i+i;
write (i);
 Похожие публикации: Pascal

Войти и комментировать [ Вход | Регистрация ]