Пятница, Октябрь 30Добро пожаловать!

Работа с циклами в языке Pascal

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

Ниже представим синтаксис арифметического цикла:

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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *