1. Оператор цикла с параметром[1]
В языке ОР имеются три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ (циклы).
Циклы - повторяющееся выполнение одних и тех же операторов. Операторы могут быть простыми или составными.
Счетный оператор цикла for имеет следующую структуру:
For <параметр цикла> := <начальное значение> to <конечное значение> do <оператор>;
При выполнении оператора for вначале вычисляется <начальное значение> и осуществляется присваивание. После этого циклически повторяется:
- проверка условия: <начальное значение> <= <конечное значение>;
- если условие не выполнено, оператор for завершает свою работу;
- выполнение <оператора>;
- наращивание переменной <параметр цикла> на единицу.
Например, вычисление суммы чисел от 1 до n.
Var I, n, sum: integer;
Begin
…
Sum := 0
For I := 1 to n do
Sum := sum + I;
…
End;
Следует отметить, что условие, управляющее работой for, проверяется перед выполнением <оператора>, если условие не выполняется в самом начале работы, то выполняемый оператор не будет выполнен ни разу.
Шаг наращивания цикла строго постоянен и равен единице. Существует и другая форма оператора:
For <наращивание цикла> := <начальное значение> downto <конечное значение> do <оператор>;
Замена слова to на downto означает, что шаг наращивания параметра цикла равен (-1).
Например: Вычислить: (cos(1+cos(2+… cos(39+cos 40)…))
Y:=cos(40);
FOR I:= 39 DOWNTO 1 DO
Y:= (cos(I+y));
Два других оператора повторений лишь проверяют условие выполнения или повторения цикла, но не связаны с изменением счетчика цикла.
2. Оператор цикла с предусловием[2]
Оператор цикла While с проверкой условия в общем виде выглядит следующим образом:
While <условие> do <оператор>;
(пока выполняется условие, делать).
Если логическое выражение <условие> имеет значение true, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение false, то оператор While продолжает работу.
Пример: Вычислить 10!
Var fact, n: integer;
Begin
fact:=1; n:=1;
While n<=10 Do
Begin[3]
fact:=fact*n
n:=n+1;
End;
Writeln (fact);
End.
3. Оператор цикла с постусловием[4]
Оператор Repeat…Until с постпроверкой условия.
Repeat <тело цикла> Until <условие>;
(повторять до тех пор, пока не будет выполнено условие).
<Тело цикла> выполняется хотя бы один раз, после чего вычисляется выражение <условие>, если его значение false, операторы <тело цикла> повторяются, в противном случае Repeat заканчивает свою работу.
Пример: вычислить сумму 1+1/2+1/3+...+1/n
Read (n);
H:=0; i:=n;
Repeat
H:=H+1/n;
i:=i-1
Until i=0;
Write(H);
Для гибкого управления циклическими операторами в состав ОР введены две процедуры без параметров:
BREAK – реализует немедленный выход из цикла действия и заключается в передаче управления оператору, следующему за концом цикла;
CONTINUE – обеспечивает досрочное очередного прохода цикла; эквивалент передачи управления в самый конец циклического оператора.