Цикл с постусловием
Продолжим знакомство с операторами цикла, имеющимися в
Паскале. Повторение группы операторов (тела цикла) можно организовать и с
помощью оператора, где проверка условия осуществляется после выполнения тела
цикла.
11.1.Оператор цикла REPEAT (цикл ДО).
Формат оператора:
REPEAT оператор; оператор;...оператор UNTIL логическое условие;
Часть программы, заключенная между служебными словами REPEAT и UNTIL,
повторяется до тех пор, пока не станет истинным логическое выражение, стоящее
после слова UNTIL. Между словами REPEAT (повторить) и UNTIL(до тех пор, пока)
можно записать любое количество операторов без использования операторных
скобок.
В отличие от оператора WHILE вычисление логического выражения происходит
не до, а после очередного повторения цикла. Из-за этого цикл REPEAT обязательно
выполнится хотя бы раз, а цикл WHILE может не выполнится ни разу. Если условие
в цикле ПОКА является условием продолжения повторений, то условие в цикле ДО -
условием выхода из цикла, его завершения. Поэтому для одной и той же задачи эти
условия противоположны.
Пример 1. Составить программу подсчета суммы S первых 1000 членов
гармонического ряда 1+1/2+1/3+1/4+...1/N используя оператор цикла REPEAT.
Program Summa;
Var S:real;
N:integer;
Begin
S:=0;N:=0;
repeat
N:=n+1;
S:=s+1/n
Until n>1000;
Writeln(s);
Readln
End.
11.2.Поиск
наибольшего числа.
Предположим, нам необходимо ввести с клавиатуры N чисел, найти из них
наибольшее и вывести его. Для решения этой задачи предлагается следующий
алгоритм:
1. Ввести первое число в переменную Max.
2. Ввести следующее число в переменную Next.
3. Если Next>Max, то Max:=Next.
Пункты 2 и 3 повторять, пока не будут введены все числа.
4. Вывести значение переменной Max.
Действительно ли будет напечатано наибольшее из N чисел? Докажем это.
После выполнения первого пункта в переменной Max находится наибольшее из
уже введенных чисел. Это справедливо, т.к. введено лишь одно число.
Повторение пунктов 2 и 3, в сущности, представляет собой цикл, который
выполняется, пока не будут введены все числа. Если перед очередным повторением
цикла в Max находится наибольшее из введенных чисел, то после выполнения
пунктов 2 и 3 там снова будет наибольшее из введенных чисел.
В последнем пункте значение Max будет выведено.
Этот пример показывает, что алгоритм можно доказать, как доказывают
математическую теорему. Программируя доказательный алгоритм, можно не опасаться
ошибок в алгоритме, конечно, если нет ошибок в доказательстве.
Program maximum;
Var N, max, next, k: integer;
Begin
Write('Введите количество чисел'); Readln(n);
Write('Введите число'); Readln(max);
k:=1;
repeat
Write('Введите число'); Readln(next);
K:=k+1;
If next>max then max:=next
Until k=n;
Writeln(max);
Readln
End.
Тренировочные задания.
1. Введите с клавиатуры 6 чисел и определите их среднее арифметическое.
2. Напишите программу, которая вводит целые числа с клавиатуры и складывает их,
пока не будет введено число 0.
3. Напечатайте 20 первых степеней числа 2.
4. Найдите минимальное из N чисел.
5. Дано натуральное число. Выяснить, является ли оно простым, т.е. делится
только на 1 и на само себя.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.