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



         

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


Тогда вы можете определить (EMIT) CONSTANT SCREEN чтобы сохранить старое определение слова EMIT. Теперь можно определить слова : PRINTER-ON FIND PRINTER (EMIT) ! : и : PRINTER-OFF SCREEN (EMIT) ' ,

Когда исполняется слово PRINTER-ON, вывод будет идти на печатающее устройство, а после PRINTER-OFF - снова на экран.

Существует множество других способов выполнения подобного рода задач с помощью векторного исполнения, которого мы едва коснулись. Вы найдете новые примеры в упражнениях, а более сложные его применения освещаются в книге Броуди "Thinking FORTH" (1984).

Другое очень полезное применение массива, подобное векторному исполнению,- это поисковая таблица, специализированной формой которой является таблица перекодировки. Предположим, что вы пользуетесь терминалом, который неправильно понимает стандартные коды ASCIl, т.e., например, забой влево, код которого 8, а на вашем дисплее это 22, вместо кода перевода строки 13 у терминала он равен 2, ваша программа посылает 1, чтобы очистить экран, в то время как терминал для этой функции ожидает код 24.

Определим массив следующим образом: CREATE TRANSLATE 24 С, 2 С, З С, 4 С, 5 С, 6 С, 7 С, 22 С, 9 С, 10 С, 11 С, 12 С, 23 С, 14 С, 15 С, 16 С, 17 С, 18 С, 19 С, 20 С, 21 С, 22 С, 23 С, 24 С, 25 С, 26 С, 27 С,

Теперь определим слово NEWEMIT, которое в вашей программе должно будет использоваться вместо EMIT: : NEWEMIT 1- TRANSLATE + С@ EMIT :

Тогда вместо того, чтобы непосредственно выводить на экран коды, которые программа кладет в стек, слово NEWEMIT будет просматривать в таблице TRANSLATE (перевести), каким новым управляющим символом должен быть замещен символ из стека, прежде чем он будет выведен на терминал. Таблицы перекодировки особенно удобны в применении к программам редактирования или управления терминалами, в которых управляющие клавиши могут по вашему желанию выполнять сложные специализированные функции.

Упражнения

1. Определите три слова, которые должны печатать "Dear Sir : ", "Dear Madame : " или "Dear Sir or Madame : " (Глубокоуважаемый сэр, Глубокоуважаемая мадам, Глубокоуважаемый(ая) сэр или мадам).


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