Еще одно предупреждение: как и все условные операторы, слово LEAVE должно находиться в том же определении, что и условия, по которым оно покидает цикл (DO и LOOP). Запомните, что нельзя помещать LEAVE в определении слова, вызываемого из цикла. Приведем пример неправильного использования слова LEAVE:: ВЫБОР ВАРИАНТ1 IF ВАРИАНТ2 LEAVE THEN ; : НЕПРАВИЛЬНЫЙ-ЦИКЛ 1000 0 DO ВЫЧИСЛЕНИЯ ВЫБОР LOOP ;
Здесь LEAVE используется вне цикла. Эти определения будут скомпилированы, но при выполнении приведут к непредсказуемому результату (возможно, даже к разрушению системы).
Два полезных приема. PAGE и QUIT. Для того чтобы придать более аккуратный вид данным, выводимым циклически (таким как таблицы и геометрические фигуры), перед выводом информации вам, возможно, придется очистить экран с помощью слова PAGE (СТРАНИЦА). Вы можете использовать слово PAGE непосредственно всякий раз, когда нужно очистить экран
PAGE ПРЯМОУГОЛЬНИК
При этом экран будет очищаться перед выводом прямоугольника, который вы определили ранее. А можно поместить слово PAGE один раз в начало определения:: ПРЯМОУГОЛЬНИК РAGЕ 256 0 DO I 16 MOD 0= IF CR THEN ." *" LOOP ;
Если вы не хотите, чтобы по завершении вычисления на экране появилось приглашение ok, примените слово QUIT (ВЫЙТИ). Вы можете использовать QUIT непосредственно:
ПРЯМОУГОЛЬНИК QUIT
а можете сделать его последним словом определения (перед точкой с запятой).
Ниже дается перечень слов Форта, приводимых в настоящей главе. DO ... LOOP DO: ( граница Организация цикла со счетчиком по задан- индекс -- ) ному диапазону индексов. LOOP: ( -- )
DO ... +LOOP DO: ( граница Аналогично DO ... LOOP . Только к ин- индекс — ) дексу на каждом шаге добавляется значение +LOOP: ( n -- ) n (а не как всегда единица ).
LEAVE ( -- ) Немедленное завершение выполнения цикла LOOP или +LOOP. (Используетея только внутри цикла.)
BEGIN ... UNTIL: ( ? -- ) Организация цикла с условием, который за- UNTIL вершается, когда ? принимает значение истина.
BEGIN ххх WHILE: ( ? -- ) Организация цикла с условием, причем ххх WHILE ууу выполняется всегда, а ууу—только REPEAT если ? истинно.
.R ( u ширина- Вывод числа одинарной точности без зна- поля -- ) кa. Число выровнено справа по границе поля.
PAGE ( -- ) Чистка экрана дисплея и установка курсора в верхний левый угол.
QUIT ( -- ) Завершение выполнения текущей задачи и возврат управления на терминал.