Цикл Repeat-Until
Repeat
оператор 1;
оператор 2;
...
...
оператор n;
Until логическое выражение;Оператор Repeat (повторять)-Until (до тех пор, пока) содержит логическое выражение (после Until), которое управляет повторением выполнения последовательности операторов, записанных между Repeat и Until. Повторение продолжается до тех пор, пока логическое выражение не примет значение True!
Последовательность операторов тела цикла выполняется не менее одного раза.!!!
При использовании оператора Repeat-Until (цикла с постусловием) необходимо учитывать следующее:
· перед первым выполнением оператора логическое выражение его окончания (или продолжения) должно быть определено;
· О последовательность операторов должна содержать хотя бы один оператор, влияющий на значение логического выражения, иначе оператор Repeat-Until работает бесконечно долго;
· логическое выражение в конечном итоге должно принять значение True.
Пример бесконечной по времени работы цикла:
Repeat
writeln('цикл');
Until 10>100;
Repeat
writeln('цикл');
Until 10>100;
Оператор REPEAT…UNTIL имеет две части: начальную (слово REPEAT) и завершающую (слово UNTIL), которые охватывают группу операторов, составляющих тело цикла. Поэтому необходимости в использовании составного оператора для построения тела цикла из нескольких простых операторов не возникает.
Принципиальное отличие оператора REPEAT…UNTIL от оператора WHILE в том, что проверка условия производится не перед началом выполнения тела цикла, а после его выполнения, когда решается вопрос, повторить ли еще раз действия. Поэтому тело цикла всегда выполняется по крайней мере один раз.
Принципиальное отличие оператора REPEAT…UNTIL от оператора WHILE в том, что проверка условия производится не перед началом выполнения тела цикла, а после его выполнения, когда решается вопрос, повторить ли еще раз действия. Поэтому тело цикла всегда выполняется по крайней мере один раз.
Пример 1. Дано число N. Составить программу ввода чисел и найти количество чисел, введенных до первого нуля, если количество введенных чисел превысит N, закончить подсчет.
Program z1;
Var N,k,i : integer;
begin
read (N);
k:=0;
k:=0;
repeat
readln(i);
inc(k);
until ((i = 0) or (n=k));
if k=n
then writeln ('net 0')
else writeln (k-1,' chisel ');
End.
Задание 2. Дано натуральное число N. Определить К - количество делителей этого числа.
Тесты Посмотреть решение
Вывести делители числа на экран.
Задание 3. Целое положительное число N называется простым, если оно имеет только два делителя, а именно 1 и N. По соглашению 1 не считают простым числом. Начало последовательности простых чисел имеет вид:
2, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
Научимся устанавливать факт: является ли число N простым?
Считаем, что делители числа находятся в интервале от 2 до n Div 2, точнее в интервале от 2 до целой части Sqrt(n) - корня из числа N.
Считаем, что делители числа находятся в интервале от 2 до n Div 2, точнее в интервале от 2 до целой части Sqrt(n) - корня из числа N.
Тесты Посмотреть решение
1. Решите эту задачу с использованием оператора While.
2. Измените программу так, чтобы осуществлялся вывод всех делителей числа n.
Экспериментальный раздел работы
Основная теорема арифметики
Всякое натуральное число n разлагается на произведения простых чисел. Это разложение однозначно с точностью до порядка записи простых чисел в произведении.
Указание:
Рассмотрим математические операции умножения, сложения, деления и вычитания, которые обозначаются символами: '*', '+', '/', '-'. Будем использовать новый тип CHAR - символьный. '*', '+', '/', '-', '=' - символы. Обозначим Х - число, которое является компонентом действия, Y - значение выражения, O - арифметическая операция.
program p2;
var o:char;
x, y:real;
begin
y:=0;
o:='+';
repeat
readln(x);
case o of
'+': y:=y+x;
'-' : y:=y-x;
'*' : y:=y*x;
'/' : y:=y/x
end;
readln(o);
until o= '=';
writeln;
writeln('otvet=',y:15:4);
end.
Задания
S:=0; i=l;
Repeat
S:=S+5 div i;
i:= i– l;
Until i<= 1;
2. Составить программу вывода на экран всех простых делителей числа.
3. Составить программу запроса пароля пока не будет введен пароль верно. В программе предусмотреть счетчик неправильных вводов пароля.
4. Произведение нескольких первых нечетных чисел равно р. Сколько сомножителей взято?
5. Составить программу нахождения наибольшего общего делителя (НОД) двух натуральных чисел.
Задания
1. Билет называют "счасливым", если в его номере сумма первых трёх цифр равна сумме последних трёх. Найти количество счастливых билетов.
2. Билет называют "счасливым", если в его номере сумма первых трёх цифр равна сумме последних трёх. Подсчитать число тех "счастливых" билетов, у которых сумма трёх цифр равна 13.
Задания для самостоятельной работы
1. Определить значение переменной S после выполнения следующих операторов:
Repeat
S:=S+5 div i;
i:= i– l;
Until i<= 1;
2. Составить программу вывода на экран всех простых делителей числа.
3. Составить программу запроса пароля пока не будет введен пароль верно. В программе предусмотреть счетчик неправильных вводов пароля.
4. Произведение нескольких первых нечетных чисел равно р. Сколько сомножителей взято?
5. Составить программу нахождения наибольшего общего делителя (НОД) двух натуральных чисел.
Указание:
Алгоритм нахождения (НОД) двух целых неотрицательных чисел, основан на следующих свойствах: пусть х и у неравные 0, целые неотрицательные числа и пусть х >=у, тогда если у=0, то НОД(х,у)=х, а если у<>0, то для чисел х, у и r, где r – остаток от деления на х на у выполняется равенство НОД(х,у)= НОД(у, r).
Алгоритм нахождения (НОД) двух целых неотрицательных чисел, основан на следующих свойствах: пусть х и у неравные 0, целые неотрицательные числа и пусть х >=у, тогда если у=0, то НОД(х,у)=х, а если у<>0, то для чисел х, у и r, где r – остаток от деления на х на у выполняется равенство НОД(х,у)= НОД(у, r).