Оператор цикла с постусловием Repeat . . Until Оператор цикла с постусловием repeat . . Until
Цикл с оператором repeat используется в том случае, если последовательность действий надо выполнить несколько раз, причем количество повторений может быть определено только во время работы программы.
Относится к итеративным циклам.
В этом виде цикла условие стоит после тела цикла, поэтому этот цикл называют с постусловием.
Алгоритмическая структура «До» реализуется оператором
repeat… until
repeat . . .
<группа операторов> // тело цикла
. . .
until <выражение>;
repeat - повторять,
until - пока не станет.
Результат выражения должен быть логического типа, определяющее условие завершения цикла.
Пока <выражение> = false (ложно), инструкции цикла повторяются.
Если <выражение> = true (истинно), осуществляется выход из цикла.
Тело цикла выполняется хотя бы один раз.
repeat и until образуют операторные скобки. Поэтому тело цикла может содержать несколько операторов.
Например:
repeat
//инструкции, которые надо выполнить несколько раз;
until <условие ложно>;
Оператор repeat выполняется следующим образом:
-
Сначала выполняются находящиеся между repeat и until инструкции тела цикла.
-
Затем вычисляется значение выражения условия.
-
Если значение выражения условия ложно (false), то инструкции тела цикла выполняются еще раз.
-
Если значение выражения условия истинно (true), то выполнение цикла прекращается и выполняется следующий оператор, предусмотренный ходом выполнения программы.
Цикл repeat, как правило, используется для организации приближенных вычислений с заданной точностью, задач поиска и обработки данных в массиве или в файле.
Задача6. Вычислить наибольшее положительное целое число n, удовлетворяющее условию: 3n5 - 690n 7.
program
Example6; … uses
SysUtils
var n: byte;
//вводимое число
begin
n:=1;
repeat n :
= n + 1;
until
3*exp(5*ln(n))
690*n > 7;
writeln('n= ', n -
1);
readln
end.
Задача7. Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел, которые вводятся с клавиатуры.
program
Example7; … uses
SysUtils;
var
a:integer;
// вводимое с клавиатуры число
n:integer;
// количество чисел
s:integer;
// сумма чисел
m:real;
// среднее арифметическое begin
s:=0; n:=0;
// начальные значения
writeln('Vvodite posle > chisla. ',
'Dly zaversheniy cikla vvedite
0 .');
repeat
write(' > ');
readln(a); // ввод
чисел
s:=s+a;
// накопление суммы
n:=n+1;
// подсчет чисел
until
a<=0;
n:=n-1;
writeln('vvedeno chisel: ',n); //
количество
writeln('summa chisel: ',s); // сумма
m:=s/n;
writeln('srednee: ',m:6:2); // среднее
readln
арифметическое
end.
Регулярные циклы с шагом не равным 1
Решение подобных задач можно организовать на основе структуры ветвление или с помощью итеративных циклов.
Задача8.
Вычислить на ЭВМ значения функций
при а=1.3, b=1.29, t = [ 0.1… 2.2], t изменяется в диапазоне от 0.1 до 2.2 с шагом h=0.3.
Организовать вывод значений аргумента и вычисленного значения функции в виде таблицы с заголовком.