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



Глава 6. Хранение чисел в памяти - часть 16


Следующее слово выполнит эту задачу: : CHOOSE KEY 65 - 2* CHOICE + @ EXECUTE :

Конечно, нужно быть внимательным, чтобы ошибочно не нажать другую клавишу; слово CHOOSE (выбрать) должно быть определено так, чтобы имелась защита от неправильного ввода. Чтобы запомнить адрес слова, которое должно быть исполнено, вместо массива может быть также использована переменная (в конце концов, переменная это всего лишь массив из одного элемента).

Предположим, что вы хотите иметь одно слово, которое исполняло бы одну из нескольких различных задач, например 1TASK, 2TASK и т.д. Когда вы составляете программу, то не знаете точно, какие это будут задачи. Можно в самом начале программы объявить переменную, например WHICH-TASK (какая_задача). Затем можно определить слово : DO-TASK ( addr - ) WHICH-TASK @ EXECUTE , которое исполнит то слово, адрес которого записан в переменной WHICH- TASK. Впоследствии при составлении программы вы определите 1TASK, 2TASK и т.д. Теперь, если вы хотите, чтобы слово DO-TASK (делать_задачу) исполнило задачу 1TASK, нужно ввести FIND 1TASK WHICH-TASK ! и слово DO-TASK- то же самое, как если бы вы ввели 1TASK. С другой стороны, если ввести FIND 2TASK WHICH-TASK ! то тогда DO-TASK исполнит задачу 2TASK. Другими словами, DO-TASK будет исполнять то слово, адрес которого находится в переменной WHICH-TASK. Вводом одного слова можно обеспечить выполнение одной из нескольких различных задач, в зависимости от значения содержимого переменной.

Некоторые Форт-системы очень широко применяют векторное исполнение, используя переменную или константу, которая должна содержать исполнительный адрес базовых слов ядра Форт-системы. Например, слово EMIT (вывести) может быть определено как : EMIT (EMIT) EXECUTE : где слово (EMIT) является константой, которая содержит исполнительный адрес. Вы можете определить теперь новое слово, например PRINTER (печать), которое в соответствии с вашим желанием изменило бы действие слова EMIT (возможно, определенное в машинных кодах), переводя вывод с экрана на печатающее устройство.


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