Практикум по среде и языку QBasic____ _____________135
окончания ввода и не приводит числовую информацию к внутреннему представлению в компьютере. Но она выдает информацию о нажатой непосредственно перед обращением к ней клавише. Если клавиша не была нажата, то функция выдает строку нулевой длины. Поэтому нижеследующая программа вызывает эту функцию до тех пор, пока длина строки не превысит нулевую:
DO: A$=INKEY$: LOOP UNTIL LEN(A$): PRINT ASC(A$), LEN(A$);A$
Затем программа выводит на экран числовой код первого символа строки, длину строки и собственно строку, функция INKEY$ осуществляет ввод как от символьных (цифровых и буквенных) клавиш, так и от большинства клавиш специального назначения (например, функциональные клавиши или стрелки).
Нетрудно убедиться, что в последнем случае ASCII код не соответствует воспроизводимому на экране символу. Но в этом случае введенная строка состоит из двух символов, числовой код первого из которых равен нулю. Приведенный пример показывает, что для кодирования вводимой с клавиатуры информации приходится использовать не только однобайтное, но и двухбайтное представление данных.
Использование двухбайтных кодов обусловлено большим количеством клавиш в сочетании с необходимостью кодирования одновременного нажатия нескольких клавиш (например, Shift+клавиша, Ctrl+кпавиша и Alt+кпавиша). На аппаратном уровне коды клавиш другие (см. «Справочные сведения»). Приведенный пример только иллюстрирует сложности, возникающие при кодировании информации о нажатых клавишах. Для полного представления об их кодировании можно было бы написать программу для чтения буфера клавиатуры и ячейки статуса клавиатуры, адреса которых в ОЗУ стандартные. Впрочем, тем кто заинтересуется этим вопросом, будет не так уж сложно на основании навыков, полученных при изучении предыдущих программ, и справочных данных по BIOS написать программу получения кодов клавиш самостоятельно.
Подводя итоги четвертого занятия, необходимо отметить, что кодирование информации в каждом из устройств связано с особенностями его реализации и функционирования. Все сложности перекодирования информации обычно не замечаются (и не должны быть замечены!) обычным пользователем. Часть этих сложностей должна приниматься во внимание разработчиком прикладных программ. В полном объеме всеми вопросами кодирования приходится заниматься системным программистам (тем, кто занимается святая святых — программированием на уровне самом близком к физической реализации вычислительных устройств).
4.5. ВЫВОД НА ДИСПЛЕЙ В ГРАФИЧЕСКОМ РЕЖИМЕ
Вывод на дисплей в графическом режиме отличается от вывода в текстовом режиме использованием гораздо большего объема ЗУ. Так например, для одной страницы в текстовом режиме при 25 строках и 80 сим-