Работа с циклами Паскаль

Иногда в программах, написанных на Паскале, приходится многократно выполнять одно и то же действие. Процесс, в ходе которого производится множество раз одно и то же действие, именуется циклом. Цикл называют арифметическим, если наблюдателю (пользователю) заранее известно количество повторений. Ниже представим синтаксис арифметического цикла:

for <переменная> := <значение1> to <оператор> do <значение2>

или

for <переменная> := <значение1> downto <оператор> do <значение2>

Оператор for в приведенном примере вызывает оператор, который находится после do, по одному разу для каждого из значений в промежутке от значения1 до значения2.

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

Помните: не рекомендуется внутри цикла самостоятельно менять значение управляющей переменной.  В синтаксисе языка допускается записывать только один оператор после слова do. Если вы желаете выполнить в цикле несколько операторов, необходимо объединить эти операторы в составной (заключить между служебными словами begin и end), иначе велика вероятность возникновения логической ошибки в программе.

Работа с циклами Паскаль

Цикл называется итерационным, если заранее неизвестно количество необходимых действий. Итерационные циклы позволяют проверить некоторое условие. В зависимости от того, каков результат выполненной проверки, либо осуществляется выход из цикла, либо повторяется выполнение тела цикла. Существует два типа итерационных цикла:

  • цикл с предусловием ( while … do … ), если проверка происходит непосредственно перед выполнением некоторого блока операторов,
  • цикл с постусловием ( repeat … until … ), если проверка происходит после выполнения некоторого блока операторов.

Рассмотрим каждый из этих циклов.

Цикл с предусловием Pascal

Итак, циклы с предусловием имеют синтаксис:

 while <выражение>  do <оператор>

Оператор после ключевого слова do выполняется, пока логическое выражение (под ним понимается условие возобновления цикла) принимает значение true (истина).

Истинность этого логического будет проверяться всякий раз перед тем, как в очередной раз произойдет повторение оператора цикла. И когда логическое выражение примет значение false (ложь), то сразу производится переход к следующему за while оператору.

Оценка выражения осуществляется до выполнения оператора, т.е., если изначально это выражение принимало значениеfalsе, то оператор ни разу не выполнится. Как и в случае арифметического оператора, необходимо учитывать возможность использования только одного оператора после слова do.

Для выполнения группы операторов, используйте составной оператор. Простенький пример:

epsilon:=0.000001; while n > epsilon do n:=n/2;

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

Итерационный цикл с постусловием имеет формат:

Работа с циклами Паскаль

Судя по синтаксису между словами repeat и until операторы многократно повторяются, пока логическое выражение принимает значение false. Когда логическое выражение примет значение true — всё, выход из цикла. Поскольку выражение проверяется после выполнения операторов, то хотя бы один раз выполнятся операторы. Для визуального восприятия короткий пример:

Работа с циклами Паскаль

Обратим внимание на еще одни очень важные операторы — это операторы завершения цикла. Выход из цикла для всех операторов, как правило, производится по окончании оператора цикла.  Но для этих целей можно использовать оператор выхода и оператор перехода. В Турбо Паскаль (версия 7.0) имеются следующие встроенные процедуры:

break      —  осуществляет безусловный выход из цикла,

continue  —  производит переход к началу новой итерации в цикле.

Мы знаем, что оператор безусловного перехода goto обеспечивает выход из цикла, но использовать его в этих целях не рекомендуется, поскольку для этого специально предназначены процедуры continue и break.

Рейтинг
( Пока оценок нет )
Загрузка ...