Алгодром


08. Команда повторения "ПОКА"

Общий вид:

нц пока УТВЕРЖДЕНИЕ

СЕРИЯ КОМАНД

кц


Выполнение:

Блок-схема выполнения:
Компьютер цикличкески выполняет следующие действия:
  1. проверяет записанное после служебного слова пока УТВЕРЖДЕНИЕ;
  2. если УТВЕРЖДЕНИЕ неверно (исполнитель ответил "НЕТ"), то выполнение цикла завершается и ЭВМ начинает выполнять команды, записанные после кц. Если же УТВЕРЖДЕНИЕ верно (исполнитель ответил "ДА"), то ЭВМ выполняет тело цикла (СЕРИЮ КОМАНД), снова проверяет утверждение и т.д.

Демонстрация: "До стены дойти нелегко..."

1.   Обратите внимание на диалог ЭВМ - Робот при выполнении цикла

2.   Попробуйте найти начальные условия, при которых тело цикла будет выполняться:
 
  • один раз;
  • три раза;
  • ни разу;
  • пятнадцать раз;
  • бесконечно.

Свойства:

  1. Если УТВЕРЖДЕНИЕ с самого начала неверно, то тело цикла (СЕРИЯ КОМАНД) не выполняется ни разу. (Поставьте, например, в демонстрации Робота в клетку № 15).
  2. Выполнение цикла завершается там, где его УТВЕРЖДЕНИЕ впервые оказывается неверным. (Иначе: после окончания цикла его УТВЕРЖДЕНИЕ обязательно ложно.)
  3. Если УТВЕРЖДЕНИЕ всегда верно, то тело цикла (СЕРИЯ КОМАНД) выполняется бесконечно (эту ситуацию принято называть зацикливанием).
  4. УТВЕРЖДЕНИЕ проверяется ЭВМ только перед выполнением тела цикла (СЕРИИ КОМАНД), но не проверяется в процессе выполнения.


Рекомендации по применению цикла "ПОКА"

Всякий раз, когда число повторений каких-либо действий заранее неизвестно, используется цикл "пока".

Лучше всего планировать цикл по частям:

  1. Понять, когда цикл должен закончиться, т.е. сформулировать условие окнчания цикла. Записать после пока противоположное УТВЕРЖДЕНИЕ - условие продолжения цикла.
  2. Выяснить, что и как будет меняться в процессе выполнения цикла; описать промежуточные состояния после нескольких повторений цикла.
  3. Описать, что происходит при однократном вылолнении цикла (принято говорить "за один шаг цикла"), т.е. записать тело цикла.
  4. Проверить, что цикл рано или поздно закончится, а не будет выполняться бесконечно.