Оператор цикла с предусловием
Тема 4
Операторы цикла
Назначение операторов цикла
Линейные алгоритмы и алгоритмы с ветвлениями не позволяют во многих случаях эффективно использовать одну из главных составляющих производительности компьютера – его быстродействие (до 109 операций в секунду и более). Для этого необходимы программы, в которых отдельные фрагменты выполняются многократно. Одним из наиболее простых средств организации повторного выполнения серии команд являются циклы.
Многие явления природы, алгоритмы человеческой деятельности (в частности, вычислительные алгоритмы) цикличны по своей сути.
Несмотря на то, что в определенном смысле операторы организации циклов вторичны (их можно моделировать посредством операторов перехода), их корректное использование позволяет создавать понятные, удобочитаемые, легко модифицируемые программы. Для компьютера циклы эквивалентны определенной последовательности операторов, ограниченной операторами условного и безусловного перехода.
В языке Паскаль возможна организация циклов трех видов:
1. Циклы с предусловием (пока – while);
2. Циклы с параметром (для – to/downto);
3. Циклы с постусловием (до – repeat/until).
Каждый из трех способов организации цикла имеет свои особенности, для каждого способа есть свой круг задач, наиболее естественно решаемых именно с его помощью.
Оператор цикла с предусловием
Цикл – "пока" используют в том случае, когда необходимо, чтобы вначале проверялось некоторое условие, а затем, если условие истинно, выполнялись некоторые действия. В процессе выполнения этих действий происходит изменение значений переменных, входящих в указанное условие в качестве операндов. Поэтому при многократном выполнении цикла происходит изменение значения логического выражения-условия с TRUE на FALSE. В этом случае выполнение цикла заканчивается, и выполняется первый оператор, стоящий после оператора цикла. Если при записи условия или операторов, выполняемых в цикле, была допущена ошибка, то в такой ситуации возможно зацикливание – значение логического выражения никогда не станет FALSE и, как следствие, группа операторов в цикле будет выполняться "вечно".
Цикл – "пока" служит для организации многократного выполнения группы операторов (тела цикла) до тех пор, пока остается истинным условие выполнения цикла. Цикл с предусловием имеет следующий формат:
while <условие> do
<оператор>;
Структурная схема цикла с предусловием имеет вид:
Выполняется этот цикл следующим образом. Вычисляется значение выражения-условия. Если оно истинно (принимает значение TRUE), то выполняется тело цикла. В противном случае выполняется оператор, стоящий после оператора цикла "пока" (т.е. тело цикла выполняется до тех пор, пока значение условия не станет равным FALSE).
Замечания:
1. В качестве тела цикла может быть использован любой оператор, в том числе и составной. Это дает возможность циклически повторять не одно, а несколько действий. В этом случае конструкция цикла "пока" приобретает вид:
while <условие> do
Begin
<оператор_1>;
. . .
<оператор_n>;
End;
2. Если <условие> в операторе while имеет значение FALSE уже при первой проверке, то тело цикла не выполняется ни разу.
3. Разрешено использование вложенных циклов, т.е. конструкций, в которых некоторые операторы тела цикла сами могут являться циклами. Иной способ вложения циклов не допустим.
Пример:
while <условие_1> do
while <условие_2> do
Begin
<оператор_k>
while <условие_3> do
<оператор_n>;
<оператор_l>;
End;
4. Следует подбирать форму записи условия для цикла "пока" таким образом, чтобы в некоторый момент значение условия изменилось с TRUE на FALSE, иначе наступит "зацикливание" программы – т.е. выполнение тела цикла до момента исчерпания ресурсов компьютера или прерывания выполнения программы пользователем.
5. Вход в тело цикла возможен только через его заголовок.