Оператор while («цикл пока»)
Схема выполнения операторов имеет вид:
Этот оператор является оператором цикла с предусловием («цикл пока») - поскольку проверка условия цикла производится при каждом повторении перед выполнением тела цикла.
Формат записи:
while <условие> do <тело цикла> (пока выполняется условие, делать).
В цикле While. . . "оператор" выполняется если условие верно, если условие ложно, то цикл заканчивается, т. е. цикл While. . . повторяется пока выполняется условие.
ЦиклWhile. . . начинается проверкой условия, поэтому, если начальное условие ложно, то "оператор" не выполняется ни разу.
Для включения в тело цикла нескольких операторов применяется составной оператор: Begin "операторы" end.
Условие представляет собой логическое выражение.
Тело цикла - оператор, который может быть простым или составным.
Перед каждым выполнением тела цикла вычисляется значение условия.
Если значением будет True, цикл выполняется и снова вычисляется условие.
Так повторяется до тех пор, пока условие не даст значение False и не произойдет выход из цикла и передача управления следующему оператору программы,
Пример: Найдем с его помощью остаток от деления двух целых чисел а и Ь, не прибегая при этом к оператору mod.
В качестве тела цикла здесь использован простой оператор Х: =Х-В;.
Оператор while позволяет составлять компактные программы для вычисления различных сумм последовательностей чисел.
Пусть требуется вычислить сумму ряда
S = Х + X2 + ... + X" при произвольном значении х.
Запишем для этого программу:
while K=N do begin Y:=Y*X;
S:=S+Y;
I:=I+1;
end;
Writeln ("Суммам\\, S) ;
End.
Обратите внимание, что работой оператора while «дирижирует» оператор I:=1+1, называемый счетчиком циклов.
Пока значение счетчика не превышает N, цикл продолжается.
Значение счетчика, равное N+1, прекращает работу оператора while.
Пример №1 Дано натуральное число n. Подсчитать количество цифр данного числа.
Program example;
Var m, n: integer;
k: integer; (счетчик цифр)
Begin
Writeln (‘введите целое число’);
Readln (n);
k:=o;
m:=n
While m<>0 do
Begin
k:=k+1; (увеличиваем счетчик на единицу)
m:=m div 10; (уменьшаем число на последнюю цифру)
end;
writeln (‘количество цифр в числе ‘,n,’равно->’,k); (вывод результата)
End.
Оператор repeat («цикл-До»)
Схема выполнения операторов имеет вид:
Формат записи:
Repeat
<тело цикла>
until <условие окончания цикла>
Цикл Repeatповторяется, если условие ложно, и заканчивается, если условие верно, т. е. циклRepeat повторяется до выполнения условия.
Цикл Repeatзаканчивается проверкой условия, поэтому "операторы" выполняются не менее одного раза. В теле цикла может записываться более одного оператора.
Этот оператор организует выполнение цикла таким образом, что условие проверяется после очередного выполнения тела цикла.
Если выражение условияпринимает значение True, повторения прекращаются.
Поэтому оператор repeat называют еще циклом с послеусловием или просто - «циклом-До» (работа цикла продолжается до тех пор, пока не выполнено условие окончания).
Оператор repeat (как и оператор while) позволяет выполнять повторяющиеся действия, когда число повторений заранее не известно.
Пример:убывающая геометрическая прогрессия (q<l):
j I, q, q2, . .q^
Из математики, возможно, вы знаете, что сумма членов этой бесконечной прогрессии равнаI/ (1-q).
Составим программу, с помощью которой можно было бы проверить эту формулу на конкретных примерах.
Программа, как известно, не в состоянии вычислить сумму бесконечного числа членов прогрессии, даже если прогрессия и убывающая.
Поэтому мы построим алгоритм таким образом, чтобы вычисление суммы прекращалось, как только последний член в этой сумме будет меньше некоторой заранее заданной величины Е (например, Е=0. 0001).
В следующей программе выполняется ввод значений q, и суммирование членов прогрессии с помощью оператора repeat:
program Progression;
var , | I, N: integer;
Q, Y, S, E: real;
K. begin
Write in ("Введите Q") ;
Reading (Q);
Вопросы для самоконтроля.
1. Как записывается оператор цикла for в случае возрастающих и в случае убывающих значений параметра цикла?
2. Какой вид имеет оператор «цикла-Пока» в Паскале?
3. Какова структура оператора «цикла-До»?