Консольные приложения

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    29,45 Кб
  • Опубликовано:
    2014-12-23
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Консольные приложения

Оглавление

Цель работы

Краткая теория

Введение в API-программированиеоперационных системAPI

Структура API-программ

Консольные приложения

Организация ввода-вывода в консольном приложении Windows

Организация низкоуровнего консольного ввода-вывода

Поддержка работы с мышью в консоли

Расширенная поддержка клавиатуры в консоли

Описание используемых функций

ЛИСТИНГ ПРОГРАММЫ

Вывод

Список литературы

Цель работы

Курсовая работа заключается в изучении одного из разделов операционной системы - работа с консольными приложениями.

Выполнение курсовой работы требует самостоятельного изучения 32-битного программирования на ассемблере под Windows ассемблере с использованием API-функций и в конечном итоге написание программы, демонстрирующей усвоение полученных знаний.

Введение в API-программирование

(application programming interface) - интерфейс прикладного программирования (иногда интерфейс программирования приложений). Другими словами, это те возможности (функции, переменные, константы, классы), которые предоставляет приложение для использования прикладными программами.определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API - это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать, при этом ящик будет производить какие-то определенные действия понятные и необходимые пользователю, но пользователь, при этом, не имеет даже представления о их реализации.

Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию - высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

В индустрии программного обеспечения общие стандартные API для стандартной функциональности имеют важную роль, так как они гарантируют, что все программы, использующие общий API, будут работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс, что облегчает процесс освоения новых программных продуктов.

 

Widows API

API - общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows (от Windows 3.11 до Windows 98) и Windows NT корпорации «Microsoft». Является самым прямым способом взаимодействия приложений с Windows.

Работа через Windows API - это наиболее близкий к системе способ взаимодействия с ней из прикладных программ.- 32х разрядный API для современных версий Windows. Самая популярная ныне версия. Win32 появился вместе с Windows NT и затем был перенесён (в несколько ограниченном виде) в системы серии Windows 9x.- 64-разрядная версия Win32, содержащая дополнительные функции для использования на 64-разрядных компьютерах.

 

Структура API-программ


Центральным понятием программирования в среде Windows является сообщение. Система посылает сообщение приложению, а то, в свою очередь, должно правильно отреагировать на него. Получателями сообщений являются функции окон приложения, на программирование которых и уходит большая часть времени при разработке API-приложений.

Классическая структура API-программы определяется четырьмя компонентами: инициализация; цикл ожидания, или цикл обработки сообщений; функция главного окна; другие функции. В простейшем случае последний компонент может отсутствовать. Два первых компонента располагаются в функции WinMain, остальные реализуются отдельными функциями.

 

Консольные приложения


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

 

Организация ввода-вывода в консольном приложении Windows

программа консоль мышь клавиатура

Язык ассемблера - язык системных программистов, исследователей принципов работы операционных систем, программ и аппаратных средств. Здесь не нужны красивые графические оболочки, а, наоборот, велика потребность в удобных средствах для работы с текстовой информацией. Операционная система Windows обеспечивает встроенную поддержку консолей, которые, по определению, являются интерфейсами ввода-вывода для приложений, работающих в текстовом режиме. Консоль состоит из одного входного и нескольких экранных буферов. Входной буфер представляет собой очередь, каждая запись которой содержит информацию относительно отдельного входного события консоли. Экранный буфер - двумерный массив, содержащий символы, выводимые в окно консоли, и данные об их цвете. Очередь входного буфера содержит информацию о следующих событиях:

·        нажатии и отпускании клавиш;

·        манипуляциях мышью - движение, нажатие-отпускание кнопок;

·        изменение размера активного экранного буфера, состояние прокрутки.

Для поддержки работы консольных приложений API Win32 содержит более сорока функций, предназначенных для интеграции в среду Windows программ, работающих в текстовом режиме. Данные функции предоставляют два уровня доступа к консоли - высокий и низкий. Консольные функции ввода высокого уровня позволяют приложению извлечь данные, полученные при вводе с клавиатуры и сохраненные во входном буфере консоли. Консольные функции вывода высокого уровня позволяют приложению записать данные в устройства стандартного вывода или ошибки с тем, чтобы отобразить этот текст в экранном буфере консоли. Функции высокого уровня также поддерживают переназначение стандартных дескрипторов ввода-вывода и управление режимами работы консоли. Консольные функции низкого уровня позволяют приложениям получить детальную информацию о вводе с клавиатуры, событиях нажатия-отпускания кнопок мыши и о манипуляциях пользователя с окном консоли, а также осуществить больший контроль над выводом данных на экран. Таким образом, API Win32 предоставляет два разных подхода для обеспечения ввода-вывода с консолью, выбор нужного зависит от гибкости и полноты контроля, которыми хочет обладать приложение для обеспечения своей работы с консолью. Функции высокого уровня обеспечивают простоту процесса ввода-вывода путем использования стандартных дескрипторов ввода-вывода, но при этом невозможен доступ к входному и экранным буферам консоли. Функции низкого уровня требуют учета большего количества деталей и объема кода, но это компенсируется большей гибкостью.
Высокоуровневый и низкоуровневый консольный ввод-вывод не являются взаимоисключающими, и приложение может использовать любую комбинацию этих функций. С каждой консолью связаны две кодовые таблицы - по одной для ввода и вывода. Консоль использует входную кодовую таблицу для трансляции ввода с клавиатуры в соответствующее символьное значение. Аналогичным образом используется кодовая таблица вывода - для трансляции символьных значений, формируемых различными функциями вывода, в символ, отображаемый в окне консоли. Для работы с кодовыми таблицами приложение может использовать пары - функции SetConsoleCP и GetConsoleCP для входных кодовых таблиц и функции SetConsoleOutputCP и GetConsoieOutputCP для выходных кодовых таблиц. Идентификаторы кодовых таблиц, доступные на компьютере, сохраняются в системном реестре следующим ключом:

<HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Nls\\CodePage

 

Организация низкоуровнего консольного ввода-вывода


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

 

Поддержка работы с мышью в консоли


Большое достоинство консольных приложений - встроенная средствами Windows поддержка мыши. Она реализуется с помощью функции ReadConsolelnput. Важно отметить, что эта функция используется для получения информация о событиях не только мыши, но и о событиях клавиатуры, изменении размера окна и так далее.

B00L ReadConsoleInput(hConsolelnput,_RECORD lpBuffer,nLength,lpNumberOfEventsRead); - стандартный дескриптор ввода, полученный функцией GetStdHandle;- указатель на буфер, в который записывается информация о событии мыши, - эта область памяти имеет структуру, называемую INPUT_ RECORD;- размер во входных записях буфера, на который указывает указатель lpBuffer;- определяет переменную, в которую записывается действительное число прочитанных записей входного буфера.

 

Расширенная поддержка клавиатуры в консоли


Функции работы с текстом высокого уровня не дают других возможностей работы с клавиатурой, кроме как примитивного ввода текста. При разработке программ текстового режима часто требуется информация о состоянии управляющих клавиш, о факте удержания клавиши, что может свидетельствовать о желании пользователя повторить ввод некоторого символа или просто о желании получить тривиальный скан-код клавиши. Эти и другие события клавиатуры доступны программе посредством функции ReadConsolelnput. События клавиатуры генерируются при нажатии любой клавиши. Процесс их обработки аналогичен обработке событий мыши. В первую очередь заполняется о нажатии некоторых управляющих клавиш. Для всех остальных клавиш просто фиксируется факт нажатия. При этом необходимо помнить, что однократному нажатию клавиши реально соответствуют два события - нажатие и отпускание клавиши. В связи с этим программа выводит два сообщения. На практике этого можно избежать, анализируя поле bKeyDown: bKeyDown=l, когда клавиша нажата; bKeyDown=0, когда клавиша отпущена. Выход из программы - при выполнении любых действий с мышью.

Описание используемых функций


Функция извлекает дескриптор для стандартного ввода данных, стандартного вывода или стандартной ошибки устройства.GetStdHandle(nStdHandle

);- стандартное устройство, для которого дескриптор должен быть возвращен.

На вход функции GetStdHandle должно быть подано одно из следующих значений:

·        STD_OUTPUT_HANDLE = -11 - дескриптор стандартного выходного потока;

·        STD_ERROR_HANDLE = -12 - дескриптор стандартного потока ошибок.

Дескрипторы, возвращенные функцией GetStdHandle, могут быть использованы прикладными программами, которым нужно читать из консоли или записывать в консоль. Когда консоль создана, дескриптором стандартного ввода является дескриптор буфера ввода консоли, а стандартного вывода и обработки стандартной ошибки является дескриптор активного экранного буфера консоли. Эти дескрипторы могут быть использованы функциями ReadFile <#"785063.files/image001.jpg">

рисунок 1- работа программы

Вывод

В результате выполнения курсовой работы был изучен один из разделов операционной системы - работа с консольными приложениями, также в консольном приложении были задействованы клавиатура и мышь. Была написана программа на 32-битном ассемблере с применением API-функций.

Список литературы

1. Пирогов В. Ю. Ассемблер для Windows. - М.: Издатель Молгачева С.В., 2002. -552 с.

.        Методические указания для выполнения курсовой работы «Изучение операционной системы Windows» по курсу «Операционные системы» для студентов специальности 23.01.00 «Вычислительные машины, комплексы,

.        Особенности работы с 32-битным ассемблером (дата обращения: 20.04.2014) http://wasm.ru/wault/

Похожие работы на - Консольные приложения

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!