134_______________________________________________
POKE 4 * i%, k% + i%
'в нечетных столбцах коды символов от 0 до 255 POKE 4 * i% + 1, 15
'в нечетных столбцах атрибут белого на черном NEXT i% 'конец цикла по столбцам NEXT j% 'конец цикла по строкам
Обратите внимание на то, что для перебора кодов использована вспомогательная переменная k%, которая вынесена за пределы внутреннего цикла. Вычисление вспомогательной переменной во внешнем цикле с целью уменьшения количества вычислений во внутреннем цикле имеет смысл для увеличения скорости работы программы.
Запустив эту программу вы увидите на экране полный набор символов текущей кодовой страницы. (Между прочим символ под номером 127 также невозможно вывести на дисплей процедурой PRINT).
Теперь добавим во внутренний цикл пару команд для проверки кодов атрибутов таким образом, чтобы они разместили проверочный символ с кодом 254 в четных столбцах четных строк. POKE 4 * i% + 162, 254
'в четных столбцах символы с кодом 254 POKE 4 * i% + 163, k% + i%
'в четных столбцах атрибуты от 0 до 255
Необходимость записи кода символа очевидна, так как без него мы увидели бы на экране только окраску фона. Запустив измененную программу, нетрудно убедиться, что окраска символов для одного и того же столбца одинакова, а окраска фона сохраняется в пределах строки. Анализ изображения на экране позволяет прийти к выводу, что 4 младших разряда байта атрибута используются для кодирования цвета символа, самый старший разряд — для кодирования признака мигания, оставшиеся 3 — для кодирования цвета фона.
Вернувшись в среду MS DOS после исполнения этой программы вы найдете на экране "подарочек", который при необходимости можно стереть командой CLS, имеющейся в составе команд этой среды.
Настала пора ознакомиться с кодированием вводимых через клавиатуру данных. Сначала попробуем для этой цели воспользоваться процедурой INPUT и в окне Immediate запишем и выполним следующую программу
INPUT A$: PRINT A$
На экране появится знак вопроса, что означает приглашение к вводу информации. Нажав любую клавишу с отображаемым символом, увидим его отображение на экране. Процесс ввода будет продолжаться до нажатия клавиши Enter. Нетрудно убедиться, что нажатие функциональных клавиш и стрелок вообще не приводит к вводу информации, то есть опробованная процедура подходит только для ввода текстовой или числовой информации (для последней текст будет преобразован в число соответствующего типа автоматически).
Функция INKEY$ неудобна для ввода данных в программу, так как она не выдает на экран информацию о нажатии клавиши, не ждет