Иногда в программах, написанных на Паскале, приходится многократно выполнять одно и то же действие. Процесс, в ходе которого производится множество раз одно и то же действие, именуется циклом. Цикл называют арифметическим, если наблюдателю (пользователю) заранее известно количество повторений. Ниже представим синтаксис арифметического цикла:
или
Оператор for в приведенном примере вызывает оператор, который находится после do, по одному разу для каждого из значений в промежутке от значения1 до значения2.
Начальное значение, конечное значение и переменная цикла должны быть порядкового типа. При использовании слова to происходит увеличение значения переменной цикла на 1 при каждой следующей итерации цикла. Если применить слово downto, то произойдет уменьшение значения переменной цикла на 1 при каждой следующей итерации цикла.
Помните: не рекомендуется внутри цикла самостоятельно менять значение управляющей переменной. В синтаксисе языка допускается записывать только один оператор после слова do. Если вы желаете выполнить в цикле несколько операторов, необходимо объединить эти операторы в составной (заключить между служебными словами begin и end), иначе велика вероятность возникновения логической ошибки в программе.
Цикл называется итерационным, если заранее неизвестно количество необходимых действий. Итерационные циклы позволяют проверить некоторое условие. В зависимости от того, каков результат выполненной проверки, либо осуществляется выход из цикла, либо повторяется выполнение тела цикла. Существует два типа итерационных цикла:
- цикл с предусловием ( while … do … ), если проверка происходит непосредственно перед выполнением некоторого блока операторов,
- цикл с постусловием ( repeat … until … ), если проверка происходит после выполнения некоторого блока операторов.
Рассмотрим каждый из этих циклов.
Цикл с предусловием Pascal
Итак, циклы с предусловием имеют синтаксис:
Оператор после ключевого слова do выполняется, пока логическое выражение (под ним понимается условие возобновления цикла) принимает значение true (истина).
Истинность этого логического будет проверяться всякий раз перед тем, как в очередной раз произойдет повторение оператора цикла. И когда логическое выражение примет значение false (ложь), то сразу производится переход к следующему за while оператору.
Оценка выражения осуществляется до выполнения оператора, т.е., если изначально это выражение принимало значениеfalsе, то оператор ни разу не выполнится. Как и в случае арифметического оператора, необходимо учитывать возможность использования только одного оператора после слова do.
Для выполнения группы операторов, используйте составной оператор. Простенький пример:
Цикл с постусловием Pascal
Итерационный цикл с постусловием имеет формат:
Судя по синтаксису между словами repeat и until операторы многократно повторяются, пока логическое выражение принимает значение false. Когда логическое выражение примет значение true — всё, выход из цикла. Поскольку выражение проверяется после выполнения операторов, то хотя бы один раз выполнятся операторы. Для визуального восприятия короткий пример:
Обратим внимание на еще одни очень важные операторы — это операторы завершения цикла. Выход из цикла для всех операторов, как правило, производится по окончании оператора цикла. Но для этих целей можно использовать оператор выхода и оператор перехода. В Турбо Паскаль (версия 7.0) имеются следующие встроенные процедуры:
continue — производит переход к началу новой итерации в цикле.
Мы знаем, что оператор безусловного перехода goto обеспечивает выход из цикла, но использовать его в этих целях не рекомендуется, поскольку для этого специально предназначены процедуры continue и break.