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

ПЕРЕМЕННЫЕ В КАЧЕСТВЕ СЧЕТЧИКА


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

Сначала мы определяем

в которой будем вести подсчет. Каждое утро мы будем начинать подсчет с нуля, поэтому нам придется загружать в переменную ЯЙЦА нуль, используя слово, определение которого выглядит так:

: УСТАНОВИТЬ 0 ЯЙЦА ! ;

После этого где-нибудь в нашей программе по упаковке яиц нужно определить слово, которое всякий раз, когда яйцо минует электрический «глазок» на конвейере, выполняет следующее выра-жение:

1 ЯЙЦА +!

Слово +!1 добавляет заданное значение к содержи^мому (любому) по данному адресу. Таким образом, выражение 1 ЯЙЦА + ! увеличивает счетчик яиц на единицу. Для иллюстрации изложенного поместим это выражение внутрь некоторого определения:

: ЯЙЦО 1 ЯЙЦА +! ;

А в конце дня выясним, сколько яиц прошло через конвейер, набрав на клавиатуре ЯЙЦА?. Теперь проверим:

УСТАНОВИТЬ ok

ЯЙЦО ok

ЯЙЦО ok

ЯЙЦО ok

ЯЙЦА ? 3 ok

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

VARIABLE ххх ( -- ) Создание переменной с именем ххх. ххх ( -- а) Слово ххх при выполнении помещает в стек свой адрес. ! ( n а --) Запоминание числа одинарной длины по заданному адресу. @ ( a -- n) Замещение адреса его содержимым. ? ( а --) Вывод значения по заданному адресу с последующим пробелом. +! ( n а --) Сложение числа одинарной длины с содержимым заданного адреса.

1Для любознательных. Это слово обычно определяют на уровне языка Ассемблера, определение же на языке высокого уровня имеет вид:

: +! ( приращение а --) DUP @ ROT + SWAP ! ;



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