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


СТЕК ВОЗВРАТОВ - часть 2


заданные выражением>R SWAP R>

Каждое слово >R и соответствующее ему слово R> должны выполняться совместно в одном и том же определении или, если они выполняются в диалоговом режиме, в одной и той же вводимой строке (прежде чем вы нажмете клавишу RETURN).

Слово R@ только копирует значение из стека возвратов, но не удаляет его. Так что, введя выражение >R SWAP R@

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

Поясним изложенное на примере. Допустим, вам настолько не повезло, что приходится вычислять значение полинома ах2 + bx+с, причем задаваемые величины хранятся в стеке в следующем порядке: ( а b с х -- )

(Напоминаем, что операция возведения в степень должна выполняться первой.) ОПЕРАЦИЯ СТЕК ДАННЫХ СТЕК ВОЗВРАТОВ

а b с х >R a b с х SWAP ROT с b а х R@ с b а х х * с b ах х + с (ax+b) х R> * с x(ax+b) + x(ax+b)+c

Попытаемся вычислить его. Загрузите следующее определение: : ПОЛИНОМ ( a b c x -- n) >R SWAP ROT R@ * + R> * + ;

Теперь проверим его: 2 7 9 3 ПОЛИНОМ 48 ok




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