Давайте разберёмся, откуда такая любовь к циклу Дейкстры.
При конструировании циклов используют комбинацию пред-(пост-)условия и инварианта цикла.
Единственное достоинство цикла Дейкстры в том, что (по сравнению с циклом LOOP) он позволяет сохранить понятие инварианта.
## Код:
```
WHILE condition1 DO (* P = инвариант цикла *) ...
ELSIF condition2 DO (* и здесь выполняется P = инвариант цикла *)
END (* P & ~(condition1 OR condition2) *)
```
В этом всё (теоретическое) преимущество по сравнению с LOOP (если не считать того, что оператор EXIT привязан к LOOP контекстуально, а не синтаксически).
Цикл LOOP (в сочетании с IF...ELSIF...ELSE EXIT END) позволяет легко имитировать цикл Дейкстры, но не принуждает к использованию инварианта цикла в его крайней точке (начале или конце).
Вместе с тем, использование исключительно структурных циклов имеет свои недостатки. В одном месте вводится (необязательная) вспомогательная переменная, в другом - дублируется код.
Пообсуждаем?
Особенно интересно мнение info21.
Желательны примеры.