Цикл BEGIN-UNTIL: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 8: | Строка 8: | ||
BEGIN \ заголовок цикла | BEGIN \ заголовок цикла | ||
xxx \ тело цикла | xxx \ тело цикла | ||
f \ условие цикла: | f \ условие завершения цикла: -- flg | ||
UNTIL \ проверка условия: flg -- | UNTIL \ проверка условия: flg -- | ||
Отличительная особенность цикла «до» — проверка условия в конце тела цикла. Это означает, что цикл BEGIN…UNTIL всегда выполняется как минимум один раз. | Отличительная особенность цикла «до» — проверка условия в конце тела цикла. Это означает, что цикл BEGIN…UNTIL всегда выполняется как минимум один раз. |
Версия от 19:50, 12 сентября 2015
Цикл «до» BEGIN…UNTIL в Каллисто имеет следующий вид (xxx и f это последовательности слов Каллисто):
BEGIN xxx f UNTIL
Подробней:
BEGIN \ заголовок цикла xxx \ тело цикла f \ условие завершения цикла: -- flg UNTIL \ проверка условия: flg --
Отличительная особенность цикла «до» — проверка условия в конце тела цикла. Это означает, что цикл BEGIN…UNTIL всегда выполняется как минимум один раз.
Слово BEGIN является заголовком цикла. Последовательность слов xxx f между BEGIN и UNTIL является телом цикла и может исполняться больше одного раза. Тело цикла xxx f завершается последовательностью команд f — условием цикла, оставляющим на вершине стека флаг flg.
Слово UNTIL снимает этот флаг со стека и осуществляет проверку условия цикла. Если этот флаг ложь, то есть flg = 0 (условие не выполнено), цикл повторяется. Как только условие начинает выполняться (флаг истина, flg ≠ 0), цикл прерывается.
Если условие выполняется сразу, тело цикла будет выполнено ровно один раз.
Заметка
Выделять на отдельной строчке условие f в теле цикла xxx f это хорошая, но необязательная практика программирования. Флаг flg всегда проверяется в конце цикла, но может формироваться и в начале, и в середине цикла. Главное, чтобы после выполнения тела цикла этот флаг flg остался на вершине стеке. Только тогда этот флаг и проверит условный оператор ?BRANCH, в который компилируется слово UNTIL.
Циклы на Каллисто возможны лишь внутри определений через двоеточие. Перед тем, как на него передадут управление, цикл должен правильно скомпилироваться. Во время компиляции происходит проверка ошибок с помощью слова ?PAIR, чтобы каждому UNTIL соответствовал свой BEGIN.