Алгоритмы решения многих задач являются циклическими, т. е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз.
Например, для того чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т. д. до тех пор, пока не будет найдена нужная фамилия или не будет достигнут конец списка.
Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется телом цикла.
В программе цикл может быть реализован при помощи инструкций while, repeat и for.
Цикл, который создается с помощью инструкции for…to…do, будет рассмотрен в следующей работе. Пока же мы рассмотрим инструкции while…do, и repeat…until.
Особенность циклов, создаваемых с помощью этих инструкций, в том, что в них заранее не известно, сколько раз будет выполняться тело цикла. Выполнение повторяется, пока удовлетворяется некоторое условие. Поэтому говорят, что это циклы, в которых явно задаются условия продолжения, или выхода из цикла.
Типичными примерами использования таких циклов являются вычисления с заданной точностью, поиск в массиве или в файле.
5.1.2 Инструкция while…do
Особенность этой инструкции состоит в том, что условие проверяется перед входом в тело цикла, поэтому цикл whileназывают еще циклом с предусловием.
В общем виде инструкция while записывается следующим образом.
Рисунок 5.1 – Синтаксис инструкции while…do
В этом описании <условие продолжения> - это выражение логического типа, определяющее условие при котором выполняются <инструкции тела цикла>.
В целом, инструкция while выполняется следующим образом:
– Вычисляется значение выражения <условие продолжения>.
– Если значение выражения условие равно false,то есть условие не выполняется, выполнение <инструкций тела цикла>прекращается.
– Если значение выражения <условие продолжения> равно true (условие выполняется), то выполняются <инструкции тела цикла>, расположенные между словами begin и end.
– После этого снова все повторяется.
Следует заметить, что для того чтобы цикл завершился, нужно чтобы последовательность инструкций, расположенных между begin и end, влияла на значение <условия продолжения >.
На рисунке 5.2 представлена схема алгоритма выполнения этого цикла.
Рисунок 5.2 – Схема алгоритма выполнения цикла While .. do
5.1.3 Инструкция repeat…until
Особенность этой инструкции состоит в том, что условие проверяется после выполнения операторов тела цикла, поэтому <инструкции тела цикла> выполняются, как минимум, один раз. Цикл Repeatназывают еще циклом с постусловием.
Схема алгоритма выполнения этого цикла представлена на рисунке 5.3.
Рисунок 5.3 – Схема алгоритма выполнения цикла Repeat
На языке Delphi в общем виде инструкция Repeat записывается следующим образом.
Рисунок 5.4 – Синтаксис инструкции Repeat
Здесь <условие выхода из цикла> это выражение логического типа, определяющее условие завершения цикла.
Инструкция выполняется следующим образом:
– Сначала выполняются <инструкции тела цикла> находящиеся между словами repeat и until.
– Затем вычисляется значение выражения <условие выхода из цикла>. Если оно не выполняется (значение выражения равно false), то инструкции тела цикла выполняются еще раз.
– Если условие выполняется (значение выражения равно true), то выполнение цикла прекращается.
Таким образом, инструкции цикла, находящиеся между repeat и until, выполняются до тех пор, пока не выполнится условие выхода из цикла.