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



             

Глава 7. Операторы сравнения и ветвления - часть 16


если в данном случае вы не хотите, чтобы альтернативным путем было использование слова OTHER, то можете использовать программу NCASE 20 40 60 " 1TASK 2TASK 3TASK CASEND А теперь рассмотрим более сложный, но и более полезный пример. Пусть у вас есть программа, в которой используется слово KEY для ввода чисел. Вы хотите, чтобы она печатала все, что является алфавитно-цифровыми знаками, при вводе CtrI-C (код ASCII 3) очищала бы экран с помощью слова CLS, при вводе Ctrl-G (код ASCII 7) включала бы звуковой сигнал (с помощью слова ВЕЕР) и при Ctrl-P (код ASCII 16) вывод переключался бы на принтер (с помощью слова PRNT), Это может делать следующая программа : : GETKEY KEY DUP NCASE 3 7 16 " CLS BEEP PRNT OTHERWISE DUP 32 < IF DROP ELSE EMIT THEN CASEND ;

Надеемся, что вы поняли, как она работает.

Одно из самых полезных применений слова NCASE состоит в обслуживании запросов, связанных с нажатием определенных клавиш при ответе на предложения из меню. Слово NCASE будет работать правильно только с числами, не превышающими по величине максимального значения одного байта (от 0 до 255), и оно устроено так, что фактически игнорирует старший байт 16-разрядного числа. Это значит, что результат будет один и тот же, если NCASE обнаружит число 0A или AB0A (в шестнадцатеричном представлении), т.е. оно ищет совпадение с 0A в одном из следующих после него чисел. Аналогичным образом числа, следующие за NCASE, могут быть больше, чем представляются одним байтом, при этом старший байт числа будет игнорироваться. Таким образом, NCASE 55A3 2221 AC55 " . . . будет исполняться так же, как NCASE A3 21 55 " . . .

Следовательно, поскольку вы уверены, что старший байт числа никогда не может повлиять на выбор, определяемый словом NCASE, можно применять числа больше 255. Слово ACASE в MMSFORTH близко по назначению слову NCASE. Но оно реагирует не на число, а на символы ASCII. Приведем пример его синтаксиса: ACASE NKT" 1TASK 2TASK 3TASK OTHERWISE OTHER CASEND

Слово ACASE просматривает стек, и если оно обнаруживает букву N, то исполняется 1TASK, если букву К- то 2TASK, а при Т уходит на 3TASK.


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