- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.1. Физическое устройство и разумная деятельность мозга
- •§2. Самодостаточная эвм
- •2.1. Память (оперативная память)
- •2.2. Процессор
- •2.3. Программа
- •2.4. Жизненный цикл «Самодостаточной эвм»
- •§3. Язык процессора – базовый язык эвм
- •§4. Реальная эвм. Периферийные устройства
- •§5. Язык программирования. Программа транслятор
- •§6. Язык программирования Pascal
- •6.1. Базовые типы числовых информационных объектов
- •6.2. Явные константы
- •6.3. Оператор описания var
- •Var и1, и2, и3, . . . . ,Иn: Итипа;
- •6.5. Операторы консольного ввода информации
- •6.5.1. Стандартные форматы вывода числовой информации.
- •6.6. Логические переменные
- •6.7. Операторы управления программой
- •6.7.1. Условный оператор if then
- •If Условие then Оператор ;
- •6.7.2. Условный оператор выбора if then else
- •6.8. Метки операторов. Оператор безусловного перехода
- •6.9. Циклические вычисления. Операторы зацикливания
- •Организация циклических вычислений операторами if then goto
- •Программа вычисления корня по формуле Герона.
- •6.9.3. Оператор цикла for to
- •6.9.4. Оператор цикла for downto
- •6.9.5. Оператор цикла while
- •6.9.6. Программа вычисления длины дуги кривой
- •7. Массивы переменных
- •7.1. Программа нахождения экстремальных значений
- •7.2. Программа решения системы линейных алгебраических уравнений
- •8. Сортировка информации
- •8.1. Элементы формальной логики, теории множеств и операций
- •8.2. Упорядоченные структуры информационных объектов
- •8.3. Алгоритм сортировки «поплавок»
- •8.3.1. Программа сортировки массива «на месте»
- •8.3.2. Программа сортировки «индексов» массива
- •8.4. Алгоритм быстрого поиска информации в линейно упорядоченном массиве
- •8.4.1. Программа поиска в отсортированных массивах.
- •9. Символьные переменные
- •9.1.Строковые переменные
- •9.1.1. Программа написания чисел прописью
- •10. Клавиатурное управление эвм
- •§.11. Информационные объекты класса – изображение
- •11.1. Устройство функционированиемонитора
- •11.2. Процедурный язык управления графическим экраном
- •11.3. Оцифровка и масштабирование реальных изображений (чертежей) для последующего их вывода на экран
- •11.4. Пример построения фрагмента графика функции
- •11.5. Ввод и обработка информации в форме изображений
- •§12. Информационные объекты класса – подпрограммы
- •12.1. Подпрограммы типа procedure
- •12.1.1. Пример оформления подпрограммы-процедуры
- •12.2. Подпрограммы класса function
- •12.2.1.Пример оформления подпрограммы-функции
- •12.3. Процедурные языки программирования
- •12.4. Библиотечные модули Unit
- •§13. Динамическое распределение оперативной памяти эвм
- •13.1. Программа использующая динамические переменные
- •§14. Переменные типа record
- •§15. Внешняя память эвм. Работа с файлами
- •15.1. Процедурный язык обработки файлов
- •15.2.Программа “ Жизненный путь файла “
- •15.3. Текстовые файлы
- •§16. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
10. Клавиатурное управление эвм
Клавиатура (KeyBoard) – периферийное устройство ЭВМ предназначенное для механического ввода информации в оперативную память.
Пульт клавиатуры содержит около ста кнопок (клавиш), которым принято присваивать названия совпадающие с соответствующими надписями.
Из прагматических соображений, кнопки пульта принято подразделять на классы: символьные (для ввода символов из таблиц ANSI), функциональные (F1, F2, .., для подачи специфических команд оригинальных ПП), управления (Home, End, Delete,..., для редактирования текстовой информации), регистровые (Ctrl, Alt, Shift,.., для перенастройки смыслового значения символьных клавиш пульта).
Основные приемы механического воздействия на клавиатуру.
1). Кратковременное (продолжительностью не более 0.1 секунды) нажатие (надавливание) на клавишу. Время задержки реакции может настраиваться как в сторону увеличения, так и уменьшения.
2). Удержание задавленной кнопки.
3). «Одновременное» нажатие нескольких, обычно, двух или трех кнопок. Термин «одновременное» - не совсем удачен, т.к. такое действие практически не реализуемо: какая-то клавиша нажимается на микросекунду раньше, а какая-то позже. Под одновременность следует понимать:
либо надавливание и удержание клавиш в строгой последовательности, причем последняя из набираемых клавиш нажимается кратковременно,
либо удержание в задавленном состоянии только первой клавиши, из некоего требуемого набора, с последующим кратковременным нажатием всех остальных клавиш.
Опр. Макрос – сложная (макро!) команда, образованная строгой последовательностью элементарных (базовых) команд.
Пример. Редакторская работа в среде turbo Pascal. Для копирования фрагментов (блоков) текста необходимо:
указать начало копируемого блока (макрос CTRL-K-B),
указать конец копируемого блока (макрос CTRL-K-K),
поместить копию блока в указанное место (макрос CTRL-K-С).
Для выполнения первого пункта следует:
- поместить курсор перед первым символом блока,
нажать и удерживать клавишу CTRL,
кратковременно нажать клавишу K,
кратковременно нажать клавишу B,
отпустить клавишу CTRL.
Рекомендуется: удерживаемую клавишу нажимать левой рукой, а остальные правой (левши поступают наоборот !).
Физические события создаваемые клавиатурой могут быть только двух типов:
нажата кнопка с порядковым номером N,
отпущена, ранее нажатая, кнопка с порядковым номером N.
Для размещения этой информации достаточно всего одного байта. Операционная система постоянно и независимо от выполняемых ею программ анализирует последовательность происходящих и происходивших ранее (специально запомненных) физических события клавиатуры и создает командные события клавиатуры.
Командное событие клавиатуры можно формализовать предложением: нажата и отпущена кнопка (или несколько кнопок – макрос) с числовым именем Name (кодом командного события или кодом сканирования).
Коды командных событий размещаются в специальном разделе оперативной памяти (в буфере команд клавиатуры) в строгой очередности их поступления. Если в выполняемой ЭВМ программе предусмотрено получение команд (информации) от пользователя через клавиатуру, то эти команды выбираются программой именно из указанного буфера. Если к моменту востребования программой команды (информации) буфер пуст, т.е. пользователь не нажимал никаких клавиш, то ЭВМ переходит в режим ожидания соответствующих действий пользователя.
Системные ограничения на допустимые воздействия пользователя на клавиатуру:
одновременное нажатие четырех и более кнопок блокирует порождение физических событий клавиатуры,
переполнение буфера командных событий (поступило более десяти невостребованных программой команд) также блокирует порождение физических событий клавиатуры и сопровождается предупредительным звуковым сигналом,
постоянное удерживание в нажатом состоянии любой, кроме регистровых, клавиши вызывает автоматическую генерацию командных кодов соответствующих последовательному кратковременному нажатию этой клавиши с интервалом 0.1 секунды.
Поскольку клавиатура используется не только для управления собственно самой выполняемой программы, но и для управления другими ПП, в частности операционной системой, определенная часть генерируемых командных событий клавиатуры скрывается (не доступна) для программистов, которые используют только возможности языка высокого уровня. Например, в языке Pascal невозможно прочесть команды: «нажата левая (или правая) кнопка Ctrl», «одновременно нажаты обе клавиши Shift» и т.п.
Терминология: числовые коды команд управления, которые порождаются физическими событиями клавиатуры и доступны программисту, называются кодами сканирования клавиатуры.
Коды сканирования символьных кнопок клавиатуры совпадают с кодами соответствующих символов в таблицах ANSI, поэтому для их размещения в буфере отводится всего один байт.
Коды сканирования остальных команд, подаваемых с клавиатуры, размещаются в двух байтах буфера, причем в первом байте всегда содержится #0 (чистый ноль), а во втором отличное от #0 содержимое.
Вывод: возможности языка программирования Pascal, позволяют получить от клавиатуры не более 512 различных кодов сканирования.
Для сканирования команд, поступивших от клавиатуры, к стандартному языку Pascal следует подключить две специальные процедуры-функции: ReadKey и KeyPressed, которые размещаются в библиотечном модуле CRT.
Процедура-функция ReadKey:
возвращает код очередного командного события клавиатуры в виде переменной литерного (char) типа,
автоматически удаляет запись об этом событии из буфера,
если буфер пуст, то выполнение программы приостанавливается, т.е. программа переходит в режим ожидания до момента получения любого клавиатурного сообщения.
Процедура-функция KeyPressed возвращает булевское значение:
true, если в буфере командных событий клавиатуры есть записи, т.е. к моменту запроса от клавиатуры были получены какие-то сообщения,
false, если буфер пуст.
Пример: программа, в бесконечном цикле, печатает на экране символьную переменную СС и после каждой печати проверяет факт поступления от клавиатуры каких-либо сообщений. Если сообщение от клавиатуры поступило, то анализируется его код:
- если пользователь нажал клавиши Enter (код клавиатурного сообщения #13) или Esc (код #27), то выполнение программы завершается,
- если нажата любая иная клавиша, то выполнение программы продолжится, но с этого момента будет печататься символ соответствующий коду полученного сообщения.
Program NN;
Uses CRT; {подключить к программе процедуры из библиотеки CRT !}
Var CC, K: char;
Begin
CC:=’X’; {внести в переменную СС символ (букву) X ! }
While TRUE do {организовать бесконечный цикл оператором While !}
begin
write(CC); {отпечатать на экране символ СС !}
if KeyPressed then {если пользователь нажал какие-то клавиши то ...! }
begin
K:=ReadKey; {занести в переменную К код поданной команды !}
if K=#0 then K:=ReadKey; {если команда двухбайтовая, то прочесть в
переменную К вторую половину кода команды!}
if (K=#13) or (K=#27) then exit; {если нажаты клавиши Enter или Esc
то завершить выполнение программы !}
CC:=K; {скопировать содержимое переменной К в переменную СС 1}
end;
end;
End.