Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и программирование ч.2.doc
Скачиваний:
6
Добавлен:
24.09.2019
Размер:
7.68 Mб
Скачать

2. Организация циклов

Цикл — это фрагмент программы, повторяемый многократно. В Паскале три оператора цикла — while, repeat и for. В принципе, без них можно обойтись, поскольку любой цикл можно реализовать с помощью условного оператора if и оператора перехода goto, но операторы цикла гораздо удобнее и нагляднее. У каждого из них есть предпочтительная область применения.

Все циклы имеют схожую структуру (рис. 2.1). Операторы, ради многократного выполнения которых организуется цикл, называются телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией.

На этапе начальных установок (до входа в цикл) задаются значения переменных, которые в нем используются. Эти значения могут задаваться явно или неявно.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации (для этого применяется процедура continue), так и цикла в целом (процедура break и оператор goto). Передавать управление извне внутрь цикла не рекомендуется, потому что при этом не выполнятся начальные установки. Иными словами, выйти из цикла можно в любой момент, а войти — только в начало (примерно как в самолете).

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

В цикле с предусловием проверка условия продолжения цикла выполняется перед телом цикла (рис. 2.1,а). Если при входе в цикл условие не выполняется, он не будет выполнен ни разу.

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

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

Рис. 2.1. Структурная схема операторов цикла:

а — цикл с предусловием; б — цикл с постусловием

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

Оператор цикла с постусловием реализует структурную схему, приведенную на рис. 2.1,б, и имеет вид

repeat

тело цикла

until выражение

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

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

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

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

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

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

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

Выражения должны быть совместимы по присваиванию с переменной цикла. Они вычисляются один раз до входа в цикл. Оператор for реализован в Паскале как цикл с предусловием. Таким образом, если в первой форме выражение_1 будет больше, чем выражение_2, а во второй — меньше, тело такого цикла не будет выполнено ни разу.

ВНИМАНИЕ

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

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

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

Практические советы

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

  2. Области применения операторов щикла:

    • оператор for применяется, если требуется выполнить тело цикла заданное число раз;

    • оператор repeat используют, когда цикл требуется обязательно выполнить хотя бы один раз, например, при анализе корректности ввода данных;

    • оператор while удобнее во всех остальных случаях.

  3. Выражение, определяющее условие продолжения циклов while и repeat, вычисляется в соответствии с приоритетами операций и должно иметь тип boolean.

  4. Для принудительного перехода к следующей итерации цикла используется процедура continue, для преждевременного выхода из цикла — процедура break.

  5. Чтобы избежать ошибок при программировании циклов, рекомендуется:

    • заключать в блок тело циклов while и for, если в них требуется выполнить более одного оператора;

    • проверять, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения, а также возможно ли выполнение других операторов;

    • проверять, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;

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