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

Итерационные циклы

Когда в программе возникает необходимость выполнить некоторые операторы несколько раз, но число повторений сложно предугадать заранее – то используются операторы While – do и Repeat-until. Эти два составных оператора служат в языке Паскаль для реализации итерационных (пошаговых) циклов. Итерационные циклы бывают двух видов:

  • Циклы с предусловием – такие, когда условие выхода из цикла проверяется до выполнения действий в цикле
  • Циклы с постусловием – такие, когда условие выхода из цикла проверяется после выполнения действий в цикле.

Особенность этих циклов заключается в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, а тело цикла с предусловием может ни разу не выполниться. В зависимости от решаемой задачи необходимо использовать тот или иной вид итерационных циклов. Однако в любом случае не следует забывать, что из цикла должен быть выход. Он может быть реализован по-разному. Наиболее простой способ – создание переменной-счетчика как для цикла FOR и изменение ее значений в каждом шаге цикла. Более сложные способы могут включать в себя модификацию переменной-счетчика только в исключительных ситуациях или вообще не использовать счетчики.

В качестве цикла с предусловием в языке Паскаль используется цикл While-Do.

Синтаксис:

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

Оператор после do будет выполняться до тех пор, пока логическое выражение после ключевого словаWhile принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.

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

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

Пример 1

eps:=0.001;

while x > eps do

x:=x/2;

Пример 2 Проверка вводимого значения

var

S: String;

begin

While S <> 'end' do

Readln(S);

Write('Вот и все! Вы ввели end!');

Readln;

end.

Пример 2 Подсчет cсуммы чисел

S:=0;
i:=1;
while i<=10 do
begin

S:=S+i;
i:=i+1;
end

Блок-схема цикла While – do приведена на рисунке 3.

Рисунок 3. Блок-схема цикла While – do