МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
  ГОРОДА КОСТРОМЫ
"ГИМНАЗИЯ №1"

 

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

 

Цикл с постусловием REPEAT-UNTIL

Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом исследовать условие повторять ли его еще раз. Эту задачу выполнит другой вид цикла Repeat.

repeat

операторы

until <условие>;

Есть небольшое отличие в организации цикла repeat по сравнению с while: для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin ... end. Зарезервированные слова repeat и until действуют как операторные скобки.

Алгоритм работы оператора

Конструкция repeat ... until работает аналогично циклу while. Различие заключается в том, что цикл while проверяет условие до выполнения действий, в то время как repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла.

Пример:

a) repeat b) repeat

read (Number); i := i+1;

Sum := Sum+Number; writeln (Sqr(i))

until Number=-1 until Number=-1

Program Prostoe;

Uses

Crt;

Var

i, {возможный делитель}

Number : integer; {исследуемое число}

Begin

ClrScr;

writeln (‘Какое число должно быть проверено? ‘);

read (Number);

i := 1;

repeat

i := i+1;

until Number mod i = 0;

if Number=i then

writeln (Number,’ является простым‘)

else writeln (Number,’ делится на ‘,i);

readln;

End.

Цикл с предусловием WHILE-DO

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

Общая форма записи:

while <логическое выражение> do

begin

группа операторов;

end;

Алгоритм работы оператора

При выполнении оператора while определенная группа операторов выполняется до тех пор, пока определенное в операторе while логическое условие истинно. Если условие сразу ложно, то оператор не выполнится ни разу.

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

При использовании цикла с предусловием надо помнить следующее:

1) значение условия выполнения цикла должно быть определено до начала цикла;

2) если значение условия истинно, то выполняется тело цикла, после чего повторяется проверка условия. Если условие ложно, то происходит выход из цикла;

3) хотя бы один из операторов, входящих в тело цикла, должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.

Пример:

Program Summa;

Uses Crt;

Var i, N : integer;

x, S : real;

Begin

ClrScr;

write (‘Сколько чисел для сложения? ‘);

readln (N);

S:=0;

i:=1;

while i<=N do

begin

write (‘Введите ‘,i,’-е число ’);

readln (x);

S:=S+x;

i:=i+1;

end;

write (‘Сумма введенных чисел равна ‘,s:5:2);

readln;

End.

Цикл со счетчиком FOR

Циклы со счетчиком составляют такой класс, в которых выполнение исполнительной части должно повторяться заранее определенное число раз. Циклы со счетчиком используются довольно часто, и поэтому в языке Паскаль для этих целей имеется специальная конструкция.

Можно, конечно, циклы со счетчиком моделировать при помощи операторов while и repeat, но структура цикла со счетчиком проще.

Общая форма записи цикла со счетчиком:

a) for i := A to B do б) for i := A downto B do

begin begin

. . . . . .

end; end;

Здесь переменная i - управляющая переменная или переменная цикла,

А - начальное значение переменной цикла,

В - конечное значение переменной цикла.

Алгоритм работы оператора

При переходе к обработке оператора цикла for управляющей переменной присваивается заданное начальное значение. Затем в цикле выполняется исполнительный оператор (или составной оператор). каждый раз при выполнении исполнительного оператора управляющая переменная увеличивается на 1 (для for...to) или уменьшается на 1 (для for...downto). Цикл завершается при достижении управляющей переменной своего конечного значения.

Пример:

1) for i := 1 to ListSize do

begin

readln (Number):

S := S +Number;

end;

2) for Dlina := 15 downto 1 do

writeln (Sqr(Dlina));

3) for x := 1 to 10 do

for y := 1 to 10 do

writeln (x,’*’,y,’=‘,x*y);

4) for Range := Number+1 to Multi*3 do

writeln (Sqrt(Range));

Следует помнить:

1) что управляющая переменная не может быть типа real;

2) исполнительная часть цикла может быть либо простым, либо составным оператором. Если начальное значение цикла for ...to больше конечного значения, то никакие операции не выполнятся.

Часто исполнительная часть одного из циклов For является новым оператором цикла For. Структуры такого рода называются вложенными циклами. При завершении внутреннего цикла управляющая переменная внешнего цикла увеличивается. Повторение этих действий будет продолжаться до вавершения внешнего цикла. Приведенный ниже вложенный цикл печатает пары чисел, начиная от (1,1), (1,2),... и кончая (10,10):

for х:= 1 to 10 do

for у:= 1 to 10 do

writeln (‘(‘,х,’,’,y,’), ’);

НАЦИОНАЛЬНЫЙ ФОНД ПОДГОТОВКИ КАДРОВ. ИНФОРМАТИЗАЦИЯ СИСТЕМЫ ОБРАЗОВАНИЯ.
Сайт сделан по технологии "Конструктор школьных сайтов".