Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ОАиП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

Цикл с постусловием repeat

Тело цикла с постусловием заключено между служебными словами repeat и until, поэтому заключать его в блок не требуется.

repeat

тело цикла

until выражение

В отличие от цикла while, этот цикл будет выполняться, пока логическое выражение после слова until ложно. Как только результат выражения станет истинным, произойдет выход из цикла. Вычисление выражения выполняется в конце каждой итерации цикла.

Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз: например, если в цикле вводятся данные и выполняется их проверка.

Пример. Программа, вычисляющая квадратный корень вещественного аргумента с заданной точностью eps по итерационной формуле:

где y ( n –1) — предыдущее приближение к корню (в начале вычислений выбирается произвольно), y ( n ) — последующее приближение. Процесс вычислений прекращается, когда приближения станут отличаться друг от друга по абсолютной величине менее, чем наeps — величину заданной точности (пример 2.3)..

program square_root;

var X, eps, { аргумент и точность }

Yp, Y : real; { предыдущее и последующее приближение }

begin

repeat

writeln('Введите аргумент и точность (больше нуля): ');

readln(X, eps);

until (X > 0) and (eps > 0);

Y := 1;

repeat

Yp := Y;

Y := (Yp + X / Yp) / 2;

until abs(Y - Yp) < eps;

writeln('Корень из ', X:6:3, ' с точноcтью ', eps:7:5,

'равен ', Y:9:5);

end.

Цикл с параметром for

Этот оператор применяется, если требуется выполнить тело цикла заранее заданное количество раз. Параметр порядкового типа на каждом проходе цикла автоматически либо увеличивается, либо уменьшается на единицу.

for параметр := выражение_1 to выражение_2 do оператор

for параметр := выражение_2 downto выражение_1 do оператор

Выражения должны быть совместимы по присваиванию с переменной цикла (о правилах совместимости мы поговорим в конце третьей лекции), оператор — простым или составным. Циклы с параметром обычно применяются при работе с массивами.

Пример 1. Программа выводит на экран числа от 10 до 1 и подсчитывает их сумму:

var i, sum : integer;

begin

sum := 0;

for i := 10 downto 1 do begin

writeln(i); inc(sum, i)

end;

writeln('Сумма чисел: ', sum);

end.

В этом цикле переменная i автоматически уменьшается на 1.

Пример 2. Программа выводит на экран символы от 'a' до 'z' :

var ch : char;

begin

for ch := 'a' to 'z' do write(ch:2)

end.

Здесь счетчик цикла ch символьного типа поочередно принимает значение каждого символа от 'a' до 'z'.

ВНИМАНИЕ Если в теле цикла необходимо выполнить более одного оператора, необходимо заключить их в блок с помощью ключевых слов begin и end.

Выражения, определяющие начальное и конечное значения счетчика, вычисляются один раз до входа в цикл. Цикл for реализован в Паскале как цикл с предусловием.

После нормального завершения цикла значение счетчика не определено. Фактически оно равно первому значению, для которого выполняется условие выхода из цикла, но использовать это в программах не рекомендуется. Также не следует изменять значение счетчика внутри цикла вручную, например:

for i := 1 to 10 do begin inc(i,3); ... end; { плохо! }

Это может привести к зацикливанию программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]