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



         

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


Это слово определено в Форт-79; в Форт-83 перед словом MESSAGE нужно ввести ' с клавиатуры либо ['], если слово встречается в определении через двоеточие; слова ' и ['] в Форт-83 действуют так же, как слово FIND в Форт-79. Слово же FIND в Форт-83 имеет совершенно другое назначение (см. гл. 14). Поэтому для Форт-83 нужно заменить слово FIND на ' или ['] в последующем сложении.

Если заглянуть в стек, то мы обнаружим, что в него был помещен некоторый адрес. Теперь, имея этот адрес в стеке, если напечатать EXECUTE (исполнить), вы увидите на экране слово "Message" (сообщение). Слово FIND (или ' и ['] в Форт-83) возвращает адрес, который дает возможность слову EXECUTE выполнить это слово. Таким образом, FIND NESSAGE EXECUTE производит то же самое, т.е. выдает на экран Message что делает слово MESSAGE само по себе. Это означает, что можно исполнить слово не только по имени, но также косвенно с помощью FIND, находя в словаре его адрес и затем используя слово-команду EXECUTE. При векторном исполнении применяется вектор (или переменная), в котором содержатся адреса слов, найденные словом FIND. Затем соответствующий элемент засылается в стек и слово EXECUTE исполняет нужное слово. Рассмотрим пример. Создадим массив из трех элементов: CREATE CHOICE 6 ALLOT и теперь определим три слова : 1PROG ." Program 1" ; : 2PROG ." Program 2" ; : 3PROG ." Program 3" ; Теперь запишем адреса этих слов в массив, вводя с клавиатуры FIND 1PROG CHOICE 0 + ! FIND 2PROG CHOICE 2 + ! FIND 3PROG CHOICE 4 + ! Если теперь введем CHOICE 2 + @ EXECUTE на экране появится сообщение "Program2", т.е. было исполнено слово 2PROG.

Предположим теперь, что вы хотите сделать выбор одной из программ 1PROG, 2PROG или 3PROG, нажимая одну из трех клавиш А, В или С. Вы можете сделать это, вводя коды ASCII клавиш с помощью слова KEY, преобразуя затем их в числа 0, 1 или 2 соответственно, пользуясь которыми можно выбрать и исполнить соответствующий элемент массива.


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