Цикл - это последовательность операторов, которая может выполняться более одного раза. В языке PASCAL имеется несколько механизмов для конструирования циклов.
Простейший из них - оператор WHILE. При выполнении оператора WHILE повторяется определения группа операторов до тех пор, пока определенное в операторе WHILE условие истинно. Многократно повторяемые действия могут быть заданы оператором цикла
WHILE <условие> do <оператор>
Выполняется данный оператор цикла так: проверяется условие, и если оно удовлетворено, то выполняется оператор, а затем вновь проверяется условие и т.д. Как только на очередном шаге окажется, что условие не удовлетворяется, то выполнение оператора цикла прекратится.
Пример: Если x>0, то выполнение цикла
WHILE x<=0 DO x:= x+1
прекратится после первой же проверки условия x<=0, и значение x не изменится.
Если же значение x не положительно, то к этому значению будет добавляться по единице до тех пор, пока значение не станет положительным.
Задача 1.
При помощи цикла напечатать на экране: Начало счета 3 5 7 9 Конец счета
1. Program su1;
2. Var f: integer;
3. Begin
4. Write(’Начало счета’);
5. f:=3;
6. While f<=9 do Begin
7. Write (f,’ ’);
8. f:=f+2;
9. End;
10. Write(’Конец счета’)
11.End.
Повторяй выполнение операторов, стоящих между словами repeat и until до тех пор, пока не станет истинным условие.
Предыдущую задачу можно решить с помощью оператора REPEAT … UNTIL
Задача 1.2.
1. Program su2;
2. Var f: integer;
3. Begin
4. Write(’Начало счета’);
5. f:=3;
6. Repeat
7. Write (f,’ ’);
8. f:=f+2;
9. until f>9;
10. Write(’Конец счета’)
11.End.
Подсказка.
Отличия операторов REPEAT и WHILE:
* компьютер выходит из цикла оператора repeat тогда, когда условие истинно, а из цикла оператора while – когда условие ложно;
* while может ни разу не выполнить оператор, стоящий после do;
* repeat же хотя бы раз операторы, стоящие между repeat и until, выполнит.
Например:
K:=8; repeat k:=1 until 3>2; writeln(k) напечатает 1.
K:=8; while 2>3 do k:=1; writeln(k) напечатает 8.
* при компиляции оператор while дает несколько более эффективную программу, чем оператор repeat.
Проверьте себя:
Определите значение S после выполнения следующих операторов:
1. s:=0; i:=0; WHILE i<5 DO i:=i+1; s:=s+1/i;
2. s:=0; i:=1; WHILE i>1 DO BEGIN s:=s+1/i; i:=i-1 END;