Консольное приложение windows что это такое

Консольное приложение windows что это такое

На этом шаге мы рассмотрим понятие консольного приложения и приведем пример такого приложения .

Консольное приложение — это программа, которая для взаимодействия с пользователем использует консоль — клавиатуру и монитор, работающий в режиме отображения символьной информации (буквы, цифры и специальные знаки).

В операционной системе консольное приложение работает в окне командной строки (рисунок 1), которое часто называют окном консоли .

Рис.1. Консольное приложение

Консольные приложения удобны для решения задач, в которых не предъявляется особых требований к интерфейсу. Они широко используются для решения системных задач. Следует обратить внимание, что многие утилиты Microsoft .NET Framework реализованы как консольные приложения.

Консольное приложение может вывести информацию на экран и получить данные с клавиатуры одним из трех способов:

  • при помощи функций printf ( вывод ) и scanf ( ввод ) ;
  • вывести информацию в поток вывода (cout) , прочитать данные из потока ввода (cin) ;
  • при помощи методов WriteLine и ReadLine объекта Console.

Основным способом взаимодействия с пользователем в консольных .NET -приложениях, созданных Microsoft Visual Studio , является использование объекта Console . Методы, обеспечивающие отображение и ввод данных, перечислены в таблице 1.

Таблица 1. Методы объекта Console
Метод Описание
Console::Write(st) Выводит на экран (в окно консоли) строку st
Console::WriteLine(st) Выводит на экран (в окно консоли) строку st , после чего переводит курсор в начало следующей строки
Console::ReadLine() Значением метода ReadLine является строка, набранная пользователем на клавиатуре. Для преобразования строки в число надо использовать, например, методы System::ToInt32() или System::ToSingle()
Console::Read() Значением метода Read является код символа, набранного на клавиатуре

Метод Console::Write выводит на экран (в окно консоли) строку, указанную в качестве параметра метода.

Если надо вывести значение числовой переменной, то для преобразования числа в строку следует использовать метод ToString . Вид (формат) строки, возвращаемой методом ToString , определяет параметр, указанный в инструкции вызова метода (таблица 2).

Таблица 2. Параметры метода ToString
Параметр Формат Пример
«c», «C» Currency — финансовый (денежный) . Используется для представления денежных величин. Обозначение денежной единицы, разделитель групп разрядов, способ отображения отрицательных чисел определяют соответствующие настройки операционной системы 5 5055,28р.
«e», «E» Scientific (exponential) — научный . Используется для представления очень маленьких или очень больших чисел. Разделитель целой и дробной частей числа задается в настройках операционной системы 5,505528+E04
«f», «F» Fixed — число с фиксированной точкой . Используется для представления дробных чисел. Количество цифр дробной части, способ отображения отрицательных чисел определяют соответствующие настройки операционной системы 55055,28
«g», «G» General — универсальный формат . Похож на Number , но разряды не разделены на группы 55055,28
«n», «N» Number — числовой . Используется для представления дробных чисел. Количество цифр дробной части, символразделитель групп разрядов, способ отображения отрицательных чисел определяют соответствующие настройки операционной системы 5 5055,28
«r», «R» Roundtrip — без округления . В отличие от формата Number , этот формат не выполняет округления (количество цифр дробной части зависит от значения числа) 55055,2755

Следует обратить внимание, что символ-разделитель целой и дробной частей числа задает операционная система. Этот же символ надо использовать и при вводе дробных чисел.

После выполнения инструкции Write курсор остается в той позиции экрана, в которую он переместился после вывода последнего символа строки. Следующая инструкция Write начинает вывод с той позиции экрана, в которой находится курсор.

Метод WriteLine отличается от метода Write тем, что после вывода строки курсор автоматически переходит в начало следующей строки.

Параметр метода WriteLine можно не указывать. В этом случае курсор будет переведен в начало следующей строки.

Метод ReadLine объекта Console обеспечивает ввод с клавиатуры строки символов. Для преобразования введенной строки в данные необходимо использовать соответствующие методы преобразования: System::ToInt16() , System::ToInt32() , System::ToSingle() , System::ToDouble() и т. д.

Следует обратить внимание на то, что в процессе преобразования строки в число возможны ошибки (исключения), например, из-за того, что при вводе дробного числа пользователь введет точку вместо запятой («правильным» символом, при стандартной для России настройке операционной системы, является запятая).

В качестве примера использования методов объекта Console приведем программу пересчета цены из долларов в рубли.

Результат работы приложения приведен на рисунке 2.

Рис.2. Результат работы приложения

На следующем шаге мы рассмотрим создание консольного приложения .

Возможности консольных приложений для Windows

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

И так: начнём с заголовка окна консоли. При запуске программы в заголовке окна отображается полное имя файла, с которого было запущено приложение. Вместо имени файла, в заголовке окна можно указать любой другой текст: название приложения, например. Это делается с помощью функции SetConsoleTitle.

Далее рассмотрим проблему с выводом на консоль текста кириллицы. Практически каждому программисту когда-нибудь приходилось с этим сталкиваться. По сложившейся традиции, для вывода текста на консоль в большинстве примеров на C++ используются функции стандартной библиотеки, такие как printf или puts, которые работают с текстом в кодировке OEM, что соответствует кодовой странице 866 для русского языка. То же самое происходит при использовании потока вывода cout. Но проблема в том, что большинство текстовых редакторов для Windows работают с текстом в кодировке ANSI, что для русского языка соответствует кодовой странице 1251.

Как решить эту проблему? Проще всего использовать функции, которые записывают текст непосредственно в буфер консоли, а не в стандартный поток. Для этого нужно в программный код включить заголовочный файл CONIO.H и, вместо функций printf и puts, вызывать аналогичные функции _cprintf и _cputs.

Так они выглядят в коде на Visual C++:

Несложно написать и собственную процедуру вывода текста на консоль с использованием системной функции WriteConsole. Вот пример такой процедуры:

А вот так она используется:

Как вы уже наверно заметили, для перевода строки необходимо указывать последовательность из двух символов: «\r\n», в отличие от стандартного потока, где указывается лишь один символ ‘\n’. Но бывает и так, что нужно вывести текст именно через стандартный поток, чтобы его можно было перенаправить в текстовый файл или в другое консольное приложение. Для этого текст нужно перевести в другую кодировку с помощью функции CharToOem. Или использовать функцию WideCharToMultiByte с параметром CP_OEMCP, если ваш текст в кодировке UNICODE.

Размер буфера консоли по умолчанию равен 80х300, т.е. 300 строк по 80 символов каждая. Задать буферу консоли другой размер можно при помощи функции SetConsoleScreenBufferSize.

Атрибутами текста консоли являются: цвет символов и цвет заднего фона. Код атрибута соответствует числовому значению в диапазоне от 0x00 до 0x7F. Так выглядит таблица с числовыми значениями атрибутов текста в шестнадцатеричном коде:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F

Функция SetConsoleTextAttribute задаёт выводимому тексту указанный атрибут. Для задания всему окну консоли указанных атрибутов применяется функция FillConsoleOutputAttribute.

Позиционирование текста (т.е. установка курсора на позицию с заданными координатами) производится с помощью функции SetConsoleCursorPosition.

Полный код моего примера в Visual C++ 2005 выглядит так:

Приведённый пример был создан в среде Visual C++ 2005 как проект Win32 Console Application.

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

Читайте также:  Как настроить часы windows
Оцените статью