РЕЖИМ КАЛЬКУЛЯТОРА
Ниже приводятся четыре простейшие операции над целочисленными значениями, записанные на языке Форт1: + плюс ( n1 n2 -- сумма ) сложение ( n1 + n2 ) - минус ( n1 n2 -- разность) вычитание ( n1 - n2 ) * звездочка ( n1 n2 -- произведение) умножение ( n1 * n2 ) / слэш ( n1 n2 -- частное) деление ( n1 / n2 )
В отличие от калькулятора на терминале компьютера не предусмотрены специальные клавиши для выполнения операций умножения и деления. Вместо них мы пользуемся клавишами * и /.
Из предыдущего раздела вы уже знаете, что можно сложить два числа, поместив их в стек и выполнив слово +, а затем ., чтобы вывести результат на терминал:
1 Для нематематиков. Хотя данная глава и напоминает .немного учебник по алгебре, решение математических задач— всего лишь небольшая часть из того, что вы сможете делать с помощью Форта. Позднее вы познакомитесь с другими применениями Форта. Здесь же уместно напомнить, что целые числа — это такие круглые числа, как ... — 3, —2, —1, 0, 1, 2, 3, ,.., а целочисленная арифметика (что достаточно логично) — операции над целыми числами.17 5 + . 22 ok
Вы можете выполнить таким образом все арифметические операции даже без составления «программы», используя Форт-систему как калькулятор. Решите задачу на умножение: 7 8 * . 56 ok
Как видите, знак операции следует за значениями. Если же вы производите вычитание и деление, необходимо учитывать порядок следования значений («7 — 4» не эквивалентно «4 — 7»).
Запомните следующее правило: для записи выражения в пост-фиксной форме достаточно передвинуть знак операции в конец этого выражения:

Поэтому чтобы выполнить вычитание
7 - 4 =
наберите на клавиатуре 7 4 - . 3 ok
Для начинающих, которым нравится развлекаться за терминалом. Если вы из тех, кто любит постигать суть вещей, не читая руководства, вы неизбежно столкнетесь с рядом проблем. Во-первых, как уже отмечалось, описанные выше операции являются целочисленными операциями. Это означает не только то, что вы не имеете права их выполнять над дробными числами, например
10.00 2.25 +
но и то, что вы можете получить лишь целочисленный результат, т. е.
21 4 / . 5 ok , а не 5.25 ok
Во-вторых, если вы попытаетесь выполнить умножение:
10000 10 *
или перемножить подобные большие числа, то получите неожиданный результат. Поэтому мы вас предупреждаем, что все операции, о которых шла речь выше, а также операция, для вывода результата могут выполняться только над числами, лежащими в диапазоне от — 32 768 до 32767. Эти числа называются числами одинарной длины со знаком.

Напомним, что, рассматривая перечень слов Фopтa, мы употребляли букву n, чтобы обозначить место, где должно находиться число. Так как в Форте числа одинарной длины используются гораздо чаще чисел других типов, вместо п следует подставлять число одинарной длины. Конечно, существуют операции, которые выполняются и над значениями из расширенного диапазона (двойной длины). Они обозначаются буквой d.
Все эти непонятные пока проблемы будут объяснены в свое время, так что не снижайте внимания.
Порядок чисел остается тем же. В качестве примера решите задачу на деление: 20 4 /
Слово / определено таким образом, что нижнее число в стеке делится на число, находящееся в его вершине.

Как поступить, если необходимо выполнить несколько операций? Например: 4 + (17 * 12)
Как известно, сначала нужно выполнить операцию, указанную в скобках, т. е. 17 умножить на 12, а затем добавить четыре. На Форте это будет выглядеть так:17 12 * 4 + . 208 ok

Числа 17 и 12 помещаются в стек. Слово * перемножает их и возвращает результат в стек.
Далее число 4 помещается в стек над числом 204. Слово + «выкатывает» суммирующую машину и складывает эти два числа, а в стек возвращается только результат.

Предположим, вы хотите сложить пять чисел. Вы можете это сделать на Форте, скажем, так: 17 20 + 132 + 3 + 9 + . 181 ok

Еще одна интересная задача: (3+9) * (4+6)
Чтобы ее решить, мы должны сначала сложить числа 3 и 9, затем 4 и 6 и, наконец, перемножить полученные две суммы.На Форте это можно записать следующим образом: 3 9 + 4 6 + *
В результате вы получите.

Заметьте, что мы весьма кстати сохранили сумму, равную 12, в стеке на то время, пока складывали числа 4 и 6.
Помните, что мы еще не пишем определений, а лишь используем Форт-систему в режиме калькулятора. Начинающим, возможно, потребуется решить несколько практических задач для того, чтобы чувствовать себя увереннее в применении постфиксной записи.