Редактирование: Цикл BEGIN-UNTIL
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
[[Файл:indefinite.gif|thumb|right|491px|Цикл BEGIN xxx f UNTIL всегда выполняется хотя бы 1 раз.<br>Картинка из книги Лео Броди «Starting FORTH»]] | [[Файл:indefinite.gif|thumb|right|491px|Цикл BEGIN xxx f UNTIL всегда выполняется хотя бы 1 раз.<br>Картинка из книги Лео Броди «Starting FORTH»]] | ||
'''Цикл «до»''' BEGIN…UNTIL в [[Каллисто]] имеет следующий вид (xxx и f это последовательности слов Каллисто): | |||
BEGIN xxx f UNTIL | BEGIN xxx f UNTIL | ||
Строка 8: | Строка 8: | ||
BEGIN \ заголовок цикла | BEGIN \ заголовок цикла | ||
xxx \ тело цикла | xxx \ тело цикла | ||
f \ условие | f \ условие цикла: -- flg | ||
UNTIL \ проверка условия: | UNTIL \ проверка условия: flg -- | ||
Отличительная особенность цикла «до» — проверка условия в конце тела цикла. Это означает, что цикл BEGIN…UNTIL всегда выполняется как минимум один раз. | Отличительная особенность цикла «до» — проверка условия в конце тела цикла. Это означает, что цикл BEGIN…UNTIL всегда выполняется как минимум один раз. | ||
Строка 23: | Строка 23: | ||
Выделять на отдельной строчке условие f в теле цикла xxx f это хорошая, но необязательная практика программирования. Флаг flg всегда проверяется в конце цикла, но может формироваться и в начале, и в середине цикла. Главное, чтобы после выполнения тела цикла этот флаг flg остался на вершине стеке. Только тогда этот флаг и проверит условный оператор [[?BRANCH]], в который компилируется слово [[UNTIL]]. | Выделять на отдельной строчке условие f в теле цикла xxx f это хорошая, но необязательная практика программирования. Флаг flg всегда проверяется в конце цикла, но может формироваться и в начале, и в середине цикла. Главное, чтобы после выполнения тела цикла этот флаг flg остался на вершине стеке. Только тогда этот флаг и проверит условный оператор [[?BRANCH]], в который компилируется слово [[UNTIL]]. | ||
Циклы на [[Каллисто]] возможны лишь внутри определений через двоеточие. Перед тем, как на него передадут управление, цикл должен правильно скомпилироваться. Во время компиляции происходит проверка ошибок | Циклы на [[Каллисто]] возможны лишь внутри определений через двоеточие. Перед тем, как на него передадут управление, цикл должен правильно скомпилироваться. Во время компиляции происходит проверка ошибок, чтобы каждому [[UNTIL]] соответствовал свой [[BEGIN]]. | ||
== Ссылка == | == Ссылка == | ||
* [https://en.wikipedia.org/wiki/Do_while_loop Do while loop в английской Википедии] ''(англ.)'' | * [https://en.wikipedia.org/wiki/Do_while_loop Do while loop в английской Википедии] ''(англ.)'' | ||
[[Категория:Каллисто]] | [[Категория:Каллисто]] |