Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
622061_KL_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.45 Mб
Скачать

9.10.Структура и синтаксис оператора repeat … until

Имеет следующий синтаксис:

repeat оператор until условие_завершения;

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

Другим отличием оператора repeat…until является то, что входящее в его состав условие рассматривается как условие завершения цикла. То есть, если на очередной итерации результат вычисления условия оказывается равным true, цикл завершается. В противном случае управление вновь передается на тело цикла.

Пример. Алгоритм Евклида (с использованием цикла с постусловием)

Var

m, n, d, r : word;

Begin Write('Введите m: '); Read(m);

Write('Введите n: '); Read(n);

If m < n then Begin

r := m; m := n; n := r;

End;

If n > 0 then Repeat r := m mod n;

m := n;

n := r; Until n = 0;

d := m;

Writeln('d=',d);

End.

Раздел №12 (2 часа)

Оператор цикла с параметром

План:

Цикл с параметром. Структура и синтаксис оператора for

• Примеры программирования итерационных алгоритмов

Оператор цикла с параметром

9.11.Цикл с параметром. Структура и синтаксис оператора for

Рассмотрим в качестве примера несложную задачу: найти сумму первых ста положительных целых чисел: S = 1 + 2 + 3 + … + 99 + 100.

Алгоритм решения может быть представлен в виде:

РИСУНОК

Переменная i играет в этом алгоритме двоякую роль: с одной стороны, она является счётчиком числа повторений цикла. При этом до начала цикла ей присваивается определённое начальное значение: i := 1; на каждой итерации её значение увеличивается на единицу i := i + 1; и, кроме того, очередная итерация выполняется лишь в том случае, если значение i не превысило конечное значение: i  100.

С другой стороны, переменная i представляет собой очередное слагаемое искомой суммы, поэтому именно она добавляется в теле цикла к переменной S, в которой и накапливается эта сумма.

Чтобы показать более наглядно различие двух этих сторон использования переменной i, слегка изменим условие задачи: найти сумму первых ста положительных нечётных чисел: S = 1 + 3 + 5 + … + 197 + 199. Пронумеруем слагаемые, входящие в сумму:

слагаемого

1

2

3

99

100

Слагаемое

1

3

5

197

199

Общая структура алгоритма останется той же, что и в предыдущем примере: необходимо «пробежаться» по всем слагаемым, с первого по сотое, и накапливать их кумулятивную сумму в переменной S. Точно так же, переменной i можно придать смысл счётчика числа повторов цикла (т.е. счётчика слагаемых), однако в выражении для накапливания суммы теперь нельзя просто использовать i, поскольку теперь значение слагаемого отличается от его порядкового номера. Рассматривая приведённую выше таблицу несложно заметить, что между номером слагаемого и его значением существует функциональная связь:

.

Таким образом, схема алгоритма для данного примера примет вид:

РИСУНОК

Точно так же, как и в предыдущем случае, здесь присутствует переменная-счётчик числа повторений, которой до первого попадания в цикл присваивается начальное значение, на каждой итерации производится приращение счётчика на единицу, и цикл повторяется до тех пор, пока счётчик не превысит некоторое конечное значение.

На практике довольно часто возникают задачи, аналогичные по структуре рассмотренным выше, т.е. задачи программирования циклических алгоритмов, для которых число повторений известно заранее. И хотя они могут быть запрограммированы с использованием изученных ранее циклов типа while или repeat..until, здесь целесообразнее использовать специальный оператор цикла, который в Паскале называется оператор цикла с параметром for. С его помощью реализуются циклы, количество повторений которых заранее известно или может быть определено до начала выполнения цикла.

В общем виде алгоритмическая структура этого оператора имеет вид:

РИСУНОК

Синтаксически оператор for имеет вид:

for переменная_цикла := нач_знач to конечн_знач do оператор;

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

Существует еще одна форма оператора for:

for переменная_цикла := нач_знач downto конечн_знач do оператор;

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

Оператор for также относится к циклам с предусловием.

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