Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧЕБНИК-Pascal.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
499.71 Кб
Скачать

2.6.2. Оператор цикла с предусловием

Оператор while является универсальной управляющей конструкцией. С его помощью можно записать любое циклическое действие. Формат оператора можно изобразить одним из следующих способов.

Тело цикла состоит из одного действия

Тело цикла состоит из более чем одного действия

While Условие do

Действие;

While Условие do

Begin

Действие 1;

Действие 2;

. . . . . .

Действие n;

end;

В нашем случае процедура Init будет выглядеть следующим образом:

procedure Init;

begin

Writeln('Insert chislo 1');

Readln(Chislo1);

Writeln('Insert Znak');

Readln(Znak);

Writeln('Insert chislo 2');

Readln(Chislo2);

While (znak=’/’) and (Chislo2=0) do

begin

Writeln('Insert chislo 2');

Readln(Chislo2);

End;

End

Если знак действия не будет равен "/" или второе число будет неравно нулю, то в процессе выполнения программы этот цикл будет обойден, то есть цикл ни разу не выполнится. Посмотрите, как работает эта программа, проведя ее трассировку (используя клавишу F7).

2.6.3. Оператор цикла со счетчиком (параметром)

Оператор цикла со счетчиком (параметром) применяется только тогда, когда заранее известно начальные и конечные значения счетчика повторений цикла. Он имеет два вида:

For Имя счетчика:= Начальное значение to Конечное значение do

Действие;

For Имя счетчика:= Начальное значение downto Конечное значение do

Действие;

При выполнении цикла, значение счетчика увеличивается на 1 в первом случае и уменьшается на 1- во втором. Поэтому для того, что бы цикл работал в первом случае необходимо, чтобы выполнялось следующее условие: Начальное значение Конечное значение. Для второго варианта использования цикла со счетчиком нужно чтобы выполнялось условие: Начальное значение Конечное значение.

Количество повторений можно определить следующим образом:

Конечное значение - Начальное значение + 1 - для первого случая;

Начальное значение - Конечное значение + 1 - для второго случая.

Допустим, что нам надо вывести результат работы нашего калькулятора на экран три раза. Если бы мы не использовали оператор цикла, мы должны были бы написать процедуру writeln() три раза:

procedure Exi;

begin

writeln(resultat);

writeln(resultat);

writeln(resultat);

end;

С использованием оператора цикла со счетчиком процедура procedure Exi будет выглядеть следующим образом:

procedure Exi;

var

i : byte;

begin

For i:=1 to 3 do

writeln(resultat);

end;

Здесь: i - имя счетчика, 1- начальное значение счетчика, 3 - конечное значение которое может принять счетчик. Перед использованием счетчика его необходимо описать в блоке описания переменных. Так как переменная с именем "i" используется только в процедуре procedure Exi, ее можно описать как локальную переменную данной процедуры.

Как уже отмечалось, цикл с параметром, или как мы говорили цикл с фиксированным количеством действий, является частным случаем цикла с предусловием.

Посмотрим, как будет выглядеть этот фрагмент программы при использовании оператора while:

procedure Exi;

var

i : byte;

begin

i:=1

while i<= 3 do

begin

writeln(resultat);

inc(i);

end;

end;

Как видим задание начального значения счетчика цикла (i:=1), при использовании оператора цикла с предусловием, выполняется перед заголовком цикла, а не в самом заголовке, как в случае цикла с параметром. Кроме этого, в теле цикла используется специальный оператор, который увеличивает значение счетчика на единицу (inc(i)), а в цикле с параметром это происходит автоматически при выполнении тела цикла. Если изменения параметра участвующего в условии выполнения цикла с предусловием не будет происходить, то цикл будет выполнятся - «бесконечно долго» (до аварийной остановки программы). Это замечание касается и цикла с постусловием. Так что при использовании циклов с нефиксированным количеством действий внимательно следите, что бы не произошло «бесконечного зацикливания».

При написании последнего фрагмента программы мы использовали новую процедуру inc(i,n), познакомимся с ней поближе:

Процедура inc(i,n) – увеличивает значение переменной i на величину n , если n опущена, то увеличение происходит на единицу (здесь i и n – целые числа). Действие данной процедуры аналогично выражению i:= i + n , но выполняется быстрее.

Процедура dec(i,n) – обратная по действию процедуре inc(i,n) и аналогична выражению i:= i - n .