Язык программирования Форт



         

Стек в арифметических операциях - часть 2


Инженеры и ученые обычно предпочитают такие калькуляторы, потому что, как мы далее увидим, не нужно беспокоиться о скобках, как при инфиксной нотации. Если вы привыкли к алгебре, постфиксная нотация поначалу вам покажется странной. На самом деле в ней нет ничего странного. В школе вас, наверное, приучили к решению задач на сложение в такой форме:

3 5 + --- 8

Но ведь это то же самое, что

3 5 + . 8 ok

Хотя учитель, возможно, читал это выражение как "три плюс пять равно восемь", запись говорит вам другое: возьми 3 и 5, сложи их, получишь 8. Действительно это одна из форм стековой нотации, причем числа 3 и 5 заменяются на 8. Стековая природа становится еще более очевидной для скользящего итога, например:

5 2 + ----- 7 3 - ----- 4

где горизонтальная черта служит для того, чтобы показать изменяющееся состояние стека, это что-то вроде смены кадров в кино. Совсем не случайно детей приучают к такой форме, она проще воспринимается, поэтому арифметика на языке Форт оказывается простой как для нас, так и для компьютера.

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

5 2 + 3 - .

интерпретатор поместил 5 и 2 в стек. Знак + снимает оба числа из стека, вычисляет их сумму и помещает в стек 7. Затем число 3 из стека помещается сверху числа 7, а оператор - вынимает из стека числа 7 и 3, производит вычитание и помещает в стек 4. Наконец оператор . (точка) вынимает из стека число 4 и представляет его на экране. (Отметьте себе, что в дальнейшем мы не будем говорить вам, когда нажать клавишу , означающую ввод, если это очевидно.) Другой способ выполнить последний пример состоит в том, чтобы ввести

5 2 3 - +

Вы должны проделать все, что делает интерпретатор, и проследить, что получится в стеке, чтобы понять, почему в обоих случаях получается одинаковый результат. Можете ли вы перестроить числа и операторы в стеке по-другому, чтобы получился тот же самый результат ?

Какой бы ни была простой и изящной постфиксная запись на языке Форт, она может использоваться в контексте с алгебраической записью.


Содержание  Назад  Вперед