В конце главы будет приведено
1 для специалистов. В конце главы будет приведено более простое определение.
(К тому времени, когда процесс вычисления подойдет к выражению
SWAP DROP, в стеке будут находиться два значения: вес, который мы размножили с помощью команды
DUP, и номер категории, расположенный в вершине. Нам требуется только номер категории. Выражение
SWAP DROP убирает вес.)
Например, выражение 25 КАТЕГОРИЯ оставит в стеке число 3. Приведенное выше определение слова КАТЕГОРИЯ напоминает наше прежнее определение РАЗМЕР-ЯИЦ, но, следуя стилю Форта (слова должны создаваться по возможности более короткими), мы убрали из этого определения выдаваемые сообщения и определили еще одно слово, которое по заданному номеру сорта яиц выдает сообщение1: : МАРКИРОВКА ( номер-категории — ) DUP 0= IF ." Брак " ELSE DUP 1 = IF ." Мелкие " ELSE DUP 2 = IF ." Средние " ELSE DUP 3 = IF ." Крупные " ELSE DUP 4 = IF ." Очень крупные " ELSE ." Ошибка " THEN THEN THEN THEN THEN BROP ;
Например: 1 МАРКИРОВКА
Мелкие ok
Теперь мы можем определить слово РАЗМЕР-ЯИЦ, используя три наших собственных слова: : РАЗМЕР-ЯИЦ ( вес-на-дюжину — ) КАТЕГОРИЯ DUP МАРКИРОВКА УЧЕТ ;
Таким образом, выражение 23 РАЗМЕР-ЯИЦ выведет на вашем дисплее сообщение
Средние ok
и обновит счетчик яиц среднего размера.
Каким образом мы узнаем содержимое счетчиков в конце дня? Придется проверить по отдельности каждую ячейку массива, например, с помощью выражения 3 СЧЕТЧИК? (которое выведет число упакованных коробок с «крупными» яйцами). Однако можно
1 для специалистов Более элегантный вариант этого определения приводится в следующей главе.
попытаться для печати результирующей таблицы за день в приведенном ниже формате определить свое собственное слово:
КОЛИЧЕСТВО РАЗМЕР 1 Брак 112 Мелкие 132 Средние 143 Крупные 159 Очень крупные 0 Ошибка
Так как вы уже научились получать номера категорий, можно просто использовать цикл
DO с номером категории в качестве индекса:: СВОДКА РАGЕ ." КОЛИЧЕСТВО РАЗМЕР" CR CR 6 0 DO I СЧЕТЧИК @ 5 U.R 7 SPACES I МАРКИРОВКА CR LOOP ;
(Выражение I СЧЕТЧИК @ 5 U.R
выбирает номер категории, подготовленный словом I, как индекс массива и выводит содержимое соответствующего элемента последнего в виде поля из пяти значений.)
Содержание Назад Вперед