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


ПОСТРОЕНИЕ ПРОГРАММЫ ВВОДА ЧИСЕЛ С ПОМОЩЬЮ СЛОВА KEY


В данном разделе мы покажем вам, как слово KEY может быть использовано при разработке специализированного интерпретатора ввода с клавиатуры. Допустим, вы хотите создать слово, подобное EXPECT, которое ожидало бы ввода с клавиатуры, но воспринимало бы только числовые символы. Остальные символы не должны восприниматься. Исключение составляют сигналы, посылаемые при нажатии клавиш ЗАБОЙ (в обычном значении) и RETURN (конец ввода). В отличие от EXPECT ваше слово не будет завершать свое выполнение при вводе заданного числа цифр, так как пользователь может, нажав клавишу ЗАБОЙ, исправить последнюю цифру до нажатия клавиш RETURN. Назовем это слово EXPECT# и зададим ему следующий порядок аргументов:( a макс-длина -- факт-длина)

где а - поле для размещения строки, а макс-длина - предельное число вводимых цифр. Фактическая длина может понадобиться в том случае, если вы захотите проверить, ввел ли пользователь хотя бы одну цифру.

Вам придется осуществлять такие действия, как возврат курсора на одну позицию, что программируется в разных системах по-разному. Принято вычленять подобные фрагменты в слова Форта и определять их отдельно от остальной части программы. Это делает программу более мобильной, поскольку при смене системы достаточно будет заменить лишь соответствующие слова. Такой прием называется локализацией или упрятыванием информации, не существенной для пользователя. Для большинства компьютеров мы можем написать определение: : ЗАБОЙ 8 EMIT ;

но в некоторых системах, где применяются устройства вывода с распределенной памятью, могут потребоваться другие определения. Кроме того, символы, получаемые словом KEY при нажатии клавиш ЗАБОЙ и RETURN, в различных системах различны. Упрятывание информации происходит следующим образом:: ЗБ? ( с -- t=клавиша-забоя) 8 = ; \ в некот.сист. 12 : ВК? ( с -- t=клавиша-RETURN) 13 = ; \ в некот.сист. 0

Основной конструкцией слова EXPECT# является цикл BEGIN WHILE REPEAT. Здесь WHILE выполняет проверку на нажатие клавиши RETURN.


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



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