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



         

Учимся на практике - часть 3


55 111 + * .

тогда вы увидите

332 ok

Форт берет из стека два верхних числа 55 и 111, складывает их, кладет сумму назад в стек, поэтому в нем находятся

2 166

Оператор * затем умножает число 2 на 166, что дает 332, и кладет в стек результат, который после этого печатается. Наша аналогия с картами показана на . Использование обратной польской нотации в выражении

2 55 111 + *

эквивалентно

2 * (55 + 111)

в обычной алгебраической нотации. Если вы набрали на клавиатуре

55 111 2 + *

то это эквивалентно вводу

55 * (111 + 2)

что, конечно же, отличается от предыдущего примера.


рис. 1.2

Поначалу ОПН и стек немного смущают, но после небольшой практики вы будете считать ее по меньшей мере такой же естественной, как и обычная алгебраическая нотация. В следующей главе у вас будет очень много практики, но вам уже сейчас хочется сделать что-нибудь самостоятельно. Давайте пока отложим в сторону детали, связанные со стеком и обратной польской записью, перестанем использовать Форт как калькулятор и попробуем написать программу. Наберите следующий текст:

: TIMES2 * . ;

и вы увидите только "ok", т.е. будто бы ничего не произошло. Но теперь, если вы напечатаете

5 TIMES2

то увидите

10 ok

Вы только что определили (описали) слово TIMES2 (умножить_на_2) на языке Форт, которое представляет собой крошечную программу: ее действие состоит в том, чтобы поместить в стек число 2, умножить его на то значение, которое было в стеке раньше, и затем напечатать результат. : (двоеточие) дало Форту указание начать определение и принять слово TIMES2 (каждая следующая порция ввода заканчивается пробелом) в качестве имени нового слова Форта. Три символа (2, * и.) -- ранее существовавшие слова Форта, которые рассказывают программе, что она должна делать, затем ; (точка с запятой) указывает на то, что определение закончено. (Обратите внимание, что в качестве слова в Форте может выступать один символ, как, например, в английском языке слова "I" (я) и "а" (артикль).)




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