Третий вид циклов, используемых в Pascal - это цикл с постусловием.
Форма записи:
repeat
оператор
until условие;
Проверка условия осуществляется после каждого выполнения тела цикла, а сам цикл выполняется до тех пор, пока условие не станет истинным. То есть, оператор выполняется пока условие ложно.
В отличие от двух других циклов цикл repeat выполнится хотя бы один раз.
Если в теле цикла несколько операторов, то нет необходимости заключать их в операторные скобки begin ... end, так как роль этих скобок играют служебные слова repeat ... until
Переменные, участвующие в записи условия, должны изменяться в теле цикла, иначе может произойти зацикливание!
Задание 1. Какое значение примет переменная x в результате выполнения следующего фрагмента программы?
x:=1;
repeat
x:=x+1;
until x>10;
Выберите аналогичный фрагмент, записанный с помощью цикла while.
1. X:=1;
While x>10 do x:=x+1;
2. X:=1;
While x<10 do x:=x+1;
3. X:=1;
While x<=10 do x:=x+1;
Задание 2. Составьте фрагменты программ для вычисления суммы всех двузначных чисел тремя различными циклами.
S=10+11+...+99
S=10+11+...+99
1). S:=0;
for i:=10 to 99 do S:=S+i;
2). S:=0;
i:=10;
while i<=99 do begin S:=S+i;
i:=i+1;
end;
3). S:=0;
i:=10;
repeat
S:=S+i;
i:=i+1;
until i>99;
Задание 3. Составить программу, которая запрашивает пароль (например, число 12345) до тех пор, пока он не будет правильно введен.
repeat
writeln('введите пароль');
readln(x);
until x=12345;
writeln('пароль верный');
Задание 4. Какая задача решается программой, приведенной на блок-схеме?
Запишите соответствующий программный код.
Поиск наибольшего числа.
Предположим, нам необходимо ввести с клавиатуры 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.