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

         

ПОСТФИКСНАЯ ЗАПИСЬ


«Но, позвольте, — скажете вы, — почему на Форте нужно писать 3 4 +

а не 3 + 4

как это принято?» Дело в том, что в Форте применяется постфиксная запись (называемая так потому, что знак операции располагается после чисел) вместо инфиксной (где знак операции располагается между числами), поэтому все слова, которым «требуются» числа, могут их взять из стека. Например, слово + берет из стека два числа и складывает их, слово . берет одно число и выводит его, SPACES берет одно число и выводит соответствующее ему количество пробелов, EMIT берет число, которое изображает какой-либо символ, и выводит этот символ. Даже слово STARS, которое мы определили сами, берет число из стека и выводит заданное этим числом количество звездочек.

Когда все операции, которые должны быть выполнены над числами, уже находящимися в стеке, определены, обеспечить взаимодействие между ними достаточно просто, даже если программа становится сложной.

Ранее отмечалось, что Форт позволяет использовать слово любым из двух способов: либо называя его, либо применяя в определении другого слова, тем самым именуя то другое слово. Постфиксная запись является частью механизма, который предоставляет вам такую возможность. Например, предположим, что вам требуется слово, которое всегда прибавляет число 4 к любому числу, находящемуся в стеке. Назовем это слово ПЛЮС-ЧЕТЫРЕ

что означает «больше на четыре», и определим его следующим образом: : ПЛЮС-ЧЕТЫРЕ 4 + ;<return>

Выполним проверки 3 ПЛЮС-ЧЕТЫРЕ .<return> 7 ok

и еще раз -10 ПЛЮС-ЧЕТЫРЕ .<return> -6 ok

Число 4, находящееся внутри определения, помещается в стек таким же образом, как если бы оно находилось вне определения. Затем слово + складывает два числа, хранящихся в стеке. Так как операция сложения всегда выполняется над содержимым стека, тот факт, что число 4 пришло из определения, а 3 нет, не имеет значения.

В дальнейшем мы перейдем к более сложным примерам, и тогда процесс занесения значений в стек и арифметика в постфиксной записи будут вам намного понятнее. Чем больше операций вовлекается в процесс, тем важнее становится вопрос взаимодействия между ними. Применение стека упрощает это взаимодействие.



Содержание раздела