logo search
otvety1

146 Операторы циклов (Pascal, c, c#).

Для реализации многократного вычисления группы операторов предусмотрены составные операторы цикла.

Цикл whileпредназначен для повторного вычисления группы операторов, определенных в его блоке. Операторы блока будут циклически выполняться, пока остается истинным задаваемое в конструкции while выражение-условие. Синтаксис этого оператора цикла имеет две формы:

[МЕТКА] while (ВЫРАЖЕНИЕ) БЛОК

[МЕТКА] while (ВЫРАЖЕНИЕ) БЛОК continue БЛОК1

Метка, задаваемая как идентификатор с завершающим двоеточием, является не обязательной частью конструкции и используется для изменения естественного алгоритма выполнения оператора цикла командами управления циклом.

Приведем схему выполнения оператора while.

  1. Вычисляется выражение-условие ВЫРАЖЕНИЕ.

  2. Если оно истинно, то выполняются операторы блока и осуществляется возврат к пункту 1.

  3. Если выражение-условие ложно, то оператор цикла завершает свою работу и передает управление следующему после него оператору программы.

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

Для корректной работы цикла while необходимо, чтобы на каждом шаге цикла изменялось выражение-условие, иначе мы получим бесконечный цикл, если при вхождении в него это выражение истинно. Изменение выражения-условия на каждой итерации цикла можно реализовать либо непосредственно в самом выражении, либо при выполнении операторов блока обеспечить изменение значений переменных, входящих в выражение-условие.

Вторая форма оператора цикла while с блоком continue отличается от его первой формы только тем, что блок операторов БЛОК1, задаваемый после ключевого слова continue, выполняется всякий раз, когда осуществляется переход на выполнение новой итерации цикла. Это происходит после выполнения последнего оператора тела цикла или при явном переходе на следующую итерацию цикла командой next. Блок continue на практике используется редко, но с его помощью можно строго определить цикл for через оператор цикла while.