Оператор цикла с предусловием while . . Do
Цикл с оператором while используется в том случае, если последовательность действий надо выполнить несколько раз, причем количество повторений может быть определено только во время работы программы (заранее оно не известно).
Процессы, в которых количество повторений заранее не определено, называются итерационными. А сами циклы – называются итеративными.
В этом виде цикла условие стоит перед телом цикла, поэтому этот цикл называют с предусловием.
Алгоритмическая структура «Пока» реализуется оператором
while . . do
while <выражение> do <оператор>;
while - пока есть,
do - делать,
Выражение – логическое, истинность которого
проверяется в начале каждой итерации.
Пока <выражение> = true (истинно), выполняется оператор тела цикла.
При условии <выражение> = false (ложно) цикл прекращается.
Тело цикла может не выполняться ни разу.
Если в цикле требуется выполнить несколько инструкций, то надо применить составной оператор.
Например:
while <условие истинно> do
begin
//инструкции, которые надо выполнить несколько раз;
end;
Оператор while выполняется следующим образом:
-
Сначала вычисляется значение выражения условия.
-
Если значение выражения условия равно true (истинна), то выполняются очередные инструкции тела цикла. После этого снова проверяется выполнение условия. Если условие выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока условие не станет ложным (false).
-
Если значение выражения условия равно false (ложно), то цикл прекращается, выполнение оператора цикла заканчивается и выполняется следующий оператор, предусмотренный программой.
Цикл while , как правило, используется для организации приближенных вычислений с заданной точностью, задач поиска и обработки данных в массиве или в файле.
Задача4. Вычислить наибольшее положительное целое число n, удовлетворяющее условию: 3n5 - 690n 7.
program
Example4; … uses
SysUtils;
var n: byte ;
begin
n:=1;
while 3*exp(
5*ln(n))
690*n<= 7 do
n : = n +
1;
writeln('n= ', n -
1);
readln end.
Задача5. Определить число К натуральных чисел, сумма которых не превышает S.
program Example5;
…
uses
SysUtils;
var
S, K : integer;
Sum :
real;
begin
Writeln(' Vvedite S');
readln(S);
If S>=0
Then
begin
K:=0;
// Начальное значение К.
Sum:=0; //
Начальное значение суммы
while
(Sum<=S) Do //
Начало цикла
begin
K:=K+1;
// Получить очередное число
Sum:=K*(K+1)/2;
// Расчет по формуле
end;
// Конец цикла
Writeln(' Summa', K-1, ' naturally
chisel
<= ', S );
end
// Вывод правильного результата
else
Writeln(' Error – S<0 ' );
readln // Вывод
сообщения об ошибке
end.