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



         

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


Одной из причин того, что Форт так легко взаимодействует с пользователем, является как раз то, что программа на нем может быть легко написана (и скомпилирована) в виде набора небольших фрагментов, каждый из которых может быть опробован (и исполнен) немедленно. Именно поэтому Форт так легко изучать экспериментально.

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

: SQUARE DUP * ;

Слово DUP делает копию (дубликат) числа, находящегося в стеке. Предположим, что мы ввели

6 SQUARE .

результатом этого является

36 ok

Слово SQUARE делает копию числа 6 в стеке, оставляя 6 6, а затем перемножает эти два одинаковых числа, получая 36. Очевидно, слово . (точка) выводит результат. Теперь мы можем определить

: CUBE DUP SQUARE * :

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

: CUBE DUP DUP * * :

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

: SQUARE ( n1 - n2: квадрат числа ) DUP * ; : CUBE (n1 - n2: куб числа) DUP SQUARE * ;

Мы добавили комментарии, чтобы программа стала более понятной. Любые слова в Форте, заключенные в круглые скобки (с обязательным пробелом после открывающей скобки), игнорируются, в них заключаются комментарии для программиста. В начале комментария в соответствии с принятым для Форта соглашением помещается информация о состоянии стека в виде ( n1 - n2 ).Комментарий о стеке показывает, что было в стеке до исполнения и что стало после исполнения данного слова. Так, например, комментарий о стеке для * выглядит так: ( n1 n2 - n3). Комментарий о стеке необходим для всех, кроме самых коротких слов. Без него очень легко забыть, как работает программа.

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




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