Начальный курс программирования на языке Форт


ДВА СЛОВА С ВСТРОЕННЫМИ ОПЕРАТОРАМИ IF


DUP

Слово ?DUP дублирует вершину стека только в том случае, если там находится нулевое значение. Это помогает избавиться от лишних слов. Например, определение : ?EMIT ( с -- ) DUP IF EMIT ELSE BROP THEN ;

выдает на печать символ с любым кодом (кроме 0) Применяя ?DUP, можно сократить наше определение:: ?EMIT ( с -- ) ?DUP IF EMIT THEN ;

ABORT"

В каком-то месте сложной прикладной программы может быть обнаружена ошибка (например, деление на нуль), которая проявляется в одном из слов низкого уровня. Когда это происходит, вы, естественно, хотите, чтобы компьютер прекратил вычисления и чтобы из стека были удалены все данные.

Если вы предполагаете, что подобная ошибка может произойти, можно воспользоваться оператором аварийного прекращения выполнения задачи ABORT". Этот оператор проверяет значение флага я вершине стека и в случае его истинности прерывает вычисления. Оператор очищает стек и возвращает управление на терминал до поступления какого-либо сообщения. Оператор ABORT" также выводит имя последнего слова, обработанного текстовым интерпретатором, и предусмотренное вами для такой ситуации сообщение1.

 

Проиллюстрируем изложенное примером:: /ПРОВЕРКА ( числитель -знаменатель — результат) DUP 0= ABORT" Знаменатель нуль " / ;

Р этом определении, если знаменатель равен нулю, то любое оказавшееся в вершине стека, удаляется из последнего, а на терминал выводится сообщение:8 0 /ПРОВЕРКА /ПРОВЕРКА Знаменатель нуль

Теперь в порядке эксперимента попытайтесь поместить слово /ПРОВЕРКА внутрь другого определения: : ОБОЛОЧКА /ПРОВЕРКА ." Ответ равен " . ;

1 Для профессионалов. В Форте, кроме того, имеются слова. QUIT (ОКОНЧИТЬ), которое вызывает прекращение работы программы, но не очищает стек, и ABORT (ПРЕРВАТЬ), которое выполняет те же действия, что и QUIT, очищает стек но не выводит сообщение Мы рассмотрим эти слова в гл 9

и введите 8 4 ОБОЛОЧКА Ответ равен 2 Ок 8 0 ОБОЛОЧКА ОБОЛОЧКИ Знаменатель нуль

Обратите внимание на то, что когда слово /ПРОВЕРКА аварийно прерывает работу с помощью оператора ABORT", оставшаяся часть ОБОЛОЧКА пропускается.


Начало  Назад  Вперед