Logo

28 ноября 2013 г.

Цикл «пока» и цикл Дейкстры

Развитие оператора цикла while до варианта с несколькими ветвями дает цикл Дейкстры, введенный в язык Кантор под влиянием Оберона-07.

На момент написания статьи принято, что операторы цикла имеются только в декларативном синтаксисе.

Цикл «пока»

В варианте с одной ветвью цикл Дейкстры имеет форму обычного цикла «пока»:
while условие do
  ветвь;
end;
Единственная ветвь цикла выполняется, пока условие истинно. Цикл — блочный оператор, поэтому операторы ветви разделяются точкой с запятой, и завершающий end обязателен.

Цикл Дейкстры

В полной форме оператор цикла «пока» становится циклом Дейкстры. Его особенность в языке Кантор — наличие эпилога:
while условие do
  ветвь;
elsif условие do
  ветвь;
elsif условие do
  ветвь;
else
  эпилог;
end;
Логика цикла:
  • На каждой итерации:
    • Последовательно вычисляются условия while и elsif.
    • При истинности условия соответствующая ветвь выполняется — одна ветвь на каждой итерации.
  • Если выполнена хоть одна итерация, перед выходом из цикла выполняется эпилог.
На момент написания статьи предполагается, что введение полноценного цикла Дейкстры и концепции эпилога избавляет от надобности в операторах досрочного выхода и продолжения цикла — break и continue. Эти операторы в языке Кантор отсутствуют.

После исключения циклов и elsif из синтаксиса ключевые слова while и elsif больше не подсвечиваются.

Комментариев нет :

Отправить комментарий

Выбрав в выпадающем списке пункт «Имя/URL», можно оставить комментарий от своего имени без предварительной регистрации.