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


ИСПОЛЬЗОВАНИЕ МАССИВА СЧЕТЧИКОВ - часть 2


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, как индекс массива и выводит содержимое соответствующего элемента последнего в виде поля из пяти значений.)




Начало  Назад  Вперед



Книжный магазин