Консоль в программировании что это такое
Консольный ввод-вывод информации с примерами на C# и Windows Terminal
Консольный ввод-вывод информации с примерами на C#
Понятие консоли и Windows Terminal
Консоль (Console)- характерная особенность ранних операционных систем (например, MS DOS), использующих интерфейс командной строки для интерактивного обмена информацией с пользователем. Консольные приложения используются и сейчас. По сравнению с графическим интерфейсом, интерфейс командной строки требует меньше системных ресурсов и предоставляет инструменты автоматизации для повторяющихся задач.
Наиболее яркими примерами интерфейсов командной строки (англ. Command line interface, CLI) являются: Командная оболочка Windows, PowerShell, а также Bash, доступная на всех платформах (наибольшее распространение Bash получил в Unix-системах и Mac, присутствует также в компонентах Подсистема Windows для Linux (англ. Windows Subsystem for Linux, WSL)).
В операционной системе Windows консоль называется окном командной строки, для вызова которой Вы можете пройти в меню Пуск — Командная строка. В 2019 году компания Micrsoft также представила Windows Terminal — современное консольное приложение для пользователей инструментов и оболочек командной строки, таких как Command Prompt, PowerShell и WSL.
Форма интерфейсов командной строки используется в основном для обработки сценариев команд с использованием последовательности операций чтения (для принятия данных путем ввода текстовой информации пользователем) и операций записи (в вывод консоли, для отображения результатов обратной связи).
Программный способ записи в вывод консоли
Для вывода информации на консоль применяются 2 ключевых метода класса Console — C onsole.WriteLine и Console.Write, отличие которых заключается в том, что WriteLine самостоятельно добавляет терминатор строки (разделитель строки) ко всему, что вы записали. Использование метода Write предполагает ручное разбиение строки на несколько путем добавления в запись вывода терминатора строки, где это необходимо.
Записывает указанные данные с текущим признаком конца строки в стандартный выходной поток.
Console.WriteLine(“Hello, World!”);
Console.WriteLine(“=Second Line=”);
Результатом вывода будет две строки.
Записывает текстовое представление заданного значения или значений в стандартный выходной поток без признака конца строки.
Console.Write(“Hello,”);
Console.Write(“ “);
Console.Write(“World!”);
Console.Write(Environment.NewLine);
Console.Write(“=Second Line=”);
Результат вывода этого примера идентичен.
Программный способ ввода информации с консоли
Как и запись в вывод, класс Console предоставляет различные методы для чтения ввода от пользователя.
Метод Console.ReadLine
Считывает набор символов до тех пор, пока не найдет признак окончания или новой строки, и возвращает все, что он считает, как строковое значение.
Console.WriteLine(“What is your name?”);
string response = Console.ReadLine();
Console.WriteLine(“Hello, “ + response+“!“);
Метод Console.Read
Считывает следующий символ в строке и возвращает его как код целочисленного символа.
Console.WriteLine(“Please, type anything: “);
int value = Console.Read();
Console.Write(“You typed: “ + (char)value);
Метод Console. ReadKey
ConsoleKeyInfo описывает нажатую клавишу, включая символ, представленный этой клавишей, и состояние управляющих клавиш-модификаторов (например, Shift, Alt и др.). Нижеследующий пример ожидает нажатия клавиши Enter.
Что такое консоль?
Калифорнийский стартап ALMAMAT обучает IT-специалистов по методологии Crowd Learning и Lean Education, а затем помогает им найти работу либо аутсорсит их услуги. У блога Almamat три направления: IT-ликбез, интервью и IT-Edutainment (развлечение + обучение). Раздел IT-ликбез помогает новичкам сориентироваться, чтобы продвигаться вперед к работе IT-специалиста. Например, с программой ALMAMAT #Women_in_Tech.
Что такое консоль?
Меняя профессию и переходя в сферу IT, нужно привыкать ко множеству новых понятий. К примеру, вы будете часто слышать слово «консоль». Оно имеет разные значения, и это поначалу путает.
В широком смысле Console на английском означает «пульт управления». Игровая консоль – тут все понятно, это игровое устройство, подсоединяемое к компьютеру. Аналогично называют весь комплект устройств ввода-вывода: мышь, дисплей, клавиатура, а также внешние микрофоны и камеры.
Интерфейс командной строки, то есть окно для вывода системных сообщений и приема команд, – тоже «консоль».
В контексте разработки ПО и тестирования слово «консоль» часто употребляется еще в одном значении. Это один из инструментов разработки, поэтому говорят «консоль разработчика». В браузере Google Chrome в «Дополнительных инструментах» есть «Инструменты разработчика». Нажмите F12 или кликните правой клавишей мыши на странице в Google Chrome и выберите «Просмотреть код» в самом низу. У вас откроется Chrome DevTools: у него, кстати, есть официальная документация, которую полезно изучить, параллельно кликая на разные вкладки консоли в процессе знакомства. В других браузерах есть свои инструменты разработчика: в Mozilla, например, это Firebug.
Консоль помогает разработчику отладить код и ускоряет темпы разработки, а Quality Assurance инженер с ее помощью проводит тестирование, ищет ошибки. Она позволяет проверить код элемента, ссылки, стили, количество пикселей, отображение сайта и события; отредактировать НTML-код; отладить ошибки в JavaScript-сриптах; отладить страницу; эмулировать работу кода на мобильных устройствах и при медленном Интернет-соединении, и т. д. Это поверхностная информация для общего понимания.
Постепенно знания и навыки будут накапливаться, слова и аббревиатуры типа брейкпоинты и DOM станут вам о чем-то говорить. Присоединяйтесь к программе ALMAMAT #Women_in_Tech, чтобы получить специальность QA Engineer, она позволяет быстро войти на IT-рынок.
Дальше можно почитать интервью, где QA-инженер Сабина Хасанова рассказывает, как использует консоль в своей работе. almamat blog
Console Класс
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет стандартные потоки для консольных приложений: входной, выходной и поток сообщений об ошибках. Этот класс не наследуется.
Примеры
В следующем примере показано, как считывать данные из стандартных входных и выходных потоков и записывать их в них. Обратите внимание, что эти потоки можно перенаправить с SetIn помощью SetOut методов и.
Комментарии
Консоль — это окно операционной системы, в котором пользователи взаимодействуют с операционной системой или текстовым консольным приложением, вводя ввод текста с помощью клавиатуры компьютера и считывая текстовые данные из терминала компьютера. например, в Windows операционной системе консоль называется окном командной строки и принимает команды MS-DOS. ConsoleКласс предоставляет базовую поддержку для приложений, считывающих символы из и записывающих символы в консоль.
Сведения о разработке с помощью Console класса см. в следующих разделах:
Потоки ввода-вывода консоли
Не используйте Console класс для вывода выходных данных в автоматических приложениях, таких как серверные приложения. Вызовы методов, таких как Console.Write и, Console.WriteLine не влияют на приложения GUI.
Console члены класса, работающие нормально, когда базовый поток направляется на консоль, могут вызывать исключение, если поток перенаправляется, например, в файл. Запрограммировать приложение для перехвата System.IO.IOException исключений при перенаправлении стандартного потока. Кроме того, можно использовать IsOutputRedirected IsInputRedirected свойства, и, IsErrorRedirected чтобы определить, перенаправляется ли стандартный поток перед выполнением операции, вызывающей System.IO.IOException исключение.
Эту проблему можно решить, установив TextWriter.NewLine свойство Out или в Error другую строку завершения строки. Например, следующая инструкция C# задает строку завершения строки для стандартного потока вывода ошибок в два символа возврата каретки и перевода строки:
Затем можно явно вызвать WriteLine метод объекта потока вывода ошибок, как показано в следующей инструкции C#:
Буфер экрана и окно консоли
Двумя тесно связанными функциями консоли являются буфер экрана и окно консоли. Текст на самом деле считывается из потоков, принадлежащих консоли, и записывается в нее, но читается или записывается в область, принадлежащую консоли, которая называется буфером экрана. Буфер экрана является атрибутом консоли и организован в виде прямоугольной сетки строк и столбцов, где каждое пересечение сетки или символьная ячейка может содержать символ. Каждый символ имеет собственный цвет переднего плана, а каждая символьная ячейка имеет собственный цвет фона.
Буфер экрана просматривается через прямоугольную область, называемую окном консоли. Окно консоли — это еще один атрибут консоли; Это не сама консоль, которая является окном операционной системы. Окно консоли упорядочивается по строкам и столбцам, меньше или равно размеру буфера экрана и может быть перемещено для просмотра различных областей базового буфера экрана. Если буфер экрана больше, чем окно консоли, консоль автоматически отображает полосы прокрутки, чтобы окно консоли можно было переместить в область буфера экрана.
Курсор указывает позицию буфера экрана, в которой текст в данный момент считывается или записывается. Курсор можно скрыть или сделать видимым, и его высоту можно изменить. Если курсор является видимым, то расположение окна консоли перемещается автоматически, поэтому курсор всегда находится в представлении.
Поддержка Юникода для консоли
Как правило, консоль считывает ввод и запись выходных данных с помощью текущей кодовой страницы консоли, которую по умолчанию определяет языковой стандарт системы. Кодовая страница может обрабатывать только подмножество доступных символов Юникода, поэтому при попытке отобразить символы, не сопоставленные определенной кодовой страницей, консоль не сможет отобразить все символы или представить их точно. Приведенный ниже пример иллюстрирует данную проблему. Он пытается отобразить символы кириллицы в алфавите от U + 0410 до U + 044F в консоли. Если запустить пример в системе, которая использует кодовую страницу консоли 437, каждый символ заменяется вопросительным знаком (?), поскольку символы кириллицы не сопоставляются с символами в кодовой странице 437.
Для поддержки символов Юникода кодировщику необходимо распознать определенный символ Юникода, а также шрифт, который содержит глифы, необходимые для визуализации этого символа. Для успешного вывода символов Юникода на консоль в качестве шрифта консоли необходимо задать нерастровый или TrueType-шрифт, такой как consolas или ЛуЦида Console. В следующем примере показано, как можно программным способом изменить шрифт с растрового шрифта на консоль ЛуЦида.
Однако шрифты TrueType могут отображать только подмножество глифов. Например, шрифт консоли ЛуЦида отображает только 643 из приблизительно 64 000 символов от U + 0021 до U + FB02. Чтобы узнать, какие символы поддерживает конкретный шрифт, откройте приложение шрифты на панели управления, выберите параметр найти символ и выберите шрифт, набор символов которого необходимо проверить в списке Шрифт окна » Таблица символов «.
Windows использует связывание шрифтов для вывода глифов, недоступных в определенном шрифте. Дополнительные сведения о связывании шрифтов для вывода дополнительных наборов символов см. в разделе глобализация пошаговых действий: шрифты. Связанные шрифты определяются в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink подразделе реестра. Каждая запись, связанная с этим подразделом, соответствует имени базового шрифта, а его значение — массив строк, который определяет файлы шрифтов и шрифты, связанные с базовым шрифтом. Каждый член массива определяет связанный шрифт и принимает форму Font-File-Name и Font-Name. В следующем примере показано, как программным способом определить связанный шрифт с именем SimSun, найденный в файле шрифтов с именем simsun. ТТК, который отображает упрощенные символы типа «символ».
Поддержка Юникода для консоли имеет следующие ограничения.
Кодировка UTF-32 не поддерживается. Поддерживаются только кодировки Юникода UTF-8 и UTF-16, которые представлены UTF8Encoding UnicodeEncoding классами и соответственно.
Двунаправленный вывод не поддерживается.
Отображение символов за пределами базовой многоязычной плоскости (т. е. суррогатных пар) не поддерживается, даже если они определены в связанном файле шрифта.
Отображение символов в сложных скриптах не поддерживается.
Объединение последовательностей символов (то есть символов, которые состоят из базового символа и одного или нескольких Объединенных символов), отображается в виде отдельных символов. Чтобы обойти это ограничение, можно нормализовать строку для отображения, вызвав String.Normalize метод перед отправкой выходных данных в консоль. В следующем примере строка, содержащая объединенную последовательность символов U + 0061 U + 0308, отображается в консоли как два символа до нормализации выходной строки и как один символ после String.Normalize вызова метода.
Обратите внимание, что нормализация является приемлемым решением, только если Стандарт Юникода для символа содержит предварительно сформированную форму, соответствующую определенной последовательности Объединенных символов.
Если шрифт содержит глиф для кодовой точки в области личных использований, этот глиф будет отображаться. Однако, поскольку символы в частной области использования относятся к конкретному приложению, это может быть не ожидаемый глиф.
В следующем примере на консоль выводится диапазон символов Юникода. Пример принимает три параметра командной строки: начало отображаемого диапазона, конец отображаемого диапазона и необходимость использования текущей кодировки консоли ( false ) или кодировки UTF-16 ( true ). Предполагается, что в консоли используется шрифт TrueType.
Общие операции
ConsoleКласс содержит следующие методы для чтения входных данных консоли и записи вывода на консоль:
Перегрузки ReadKey метода считывают отдельный символ.
ReadLineМетод считывает всю строку входных данных.
WriteПерегрузки метода преобразуют экземпляр типа значения, массив символов или набор объектов в форматированную или неформатированную строку, а затем записывают эту строку в консоль.
Параллельный набор WriteLine перегрузок метода выводит ту же строку, что и Write перегрузки, но также добавляет строку завершения строки.
ConsoleКласс также содержит методы и свойства для выполнения следующих операций:
Возвращает или задает размер буфера экрана. BufferHeightСвойства и BufferWidth позволяют получить или задать высоту и ширину буфера соответственно, а SetBufferSize метод позволяет задать размер буфера в одном вызове метода.
Возвращает или задает размер окна консоли. WindowHeightСвойства и WindowWidth позволяют получить или задать высоту и ширину окна соответственно, а SetWindowSize метод позволяет задать размер окна в одном вызове метода.
Возвращает или задает размер курсора. CursorSizeСвойство задает высоту курсора в ячейке символа.
Возвращает или задает расположение окна консоли относительно буфера экрана. WindowTopСвойства и WindowLeft позволяют получить или задать верхнюю строку и крайний левый столбец буфера экрана, который отображается в окне консоли, а SetWindowPosition метод позволяет задать эти значения в одном вызове метода.
Переместите или очистите данные в буфере экрана, вызвав MoveBufferArea Clear метод или.
Возвращает или задает цвет переднего плана и фона с помощью ForegroundColor BackgroundColor свойств и или сбросьте фон и передний план на цвет по умолчанию, вызвав ResetColor метод.
Воспроизведение звука звукового сигнала с помощью динамика консоли путем вызова Beep метода.
Если приложение зависит от конкретных кодировок кодовых страниц, вы все равно можете сделать их доступными, выполнив следующие действия перед вызовом Console методов.
Добавьте в проект ссылку на сборку System.Text.Encoding.CodePages.dll.
Передайте объект EncodingProvider в метод Encoding.RegisterProvider, чтобы сделать доступными дополнительные кодировки, поддерживаемые поставщиком кодировки.
ConsoleКласс будет автоматически использовать системную кодировку по умолчанию, а не UTF8, при условии, что поставщик кодирования зарегистрирован до вызова Console методов вывода.
Свойства
Возвращает или задает цвет фона консоли.
Возвращает или задает высоту буферной области.
Возвращает или задает ширину буферной области.
Возвращает значение, указывающее, включен или отключен режим CAPS LOCK клавиатуры.
Возвращает или задает позицию столбца курсора в буферной области.
Возвращает или задает высоту курсора в символьной ячейке.
Возвращает или задает позицию строки курсора в буферной области.
Возвращает или задает значение, указывающее, видим ли курсор.
Возвращает стандартный выходной поток сообщений об ошибках.
Возвращает или задает цвет фона консоли.
Возвращает стандартный входной поток.
Возвращает или задает кодировку консоли, используемую при чтении входных данных.
Получает значение, показывающее, был ли перенаправлен выходной поток ошибок от стандартного потока ошибок.
Получает значение, показывающее, был ли перенаправлены ли входные данные от стандартного входного потока.
Получает значение, показывающее, был ли перенаправлены выходные данные от стандартного выходного потока.
Возвращает или задает значение, указывающее, доступно ли нажатие клавиши во входном потоке.
Возвращает максимальное число строк окна консоли с учетом текущего шрифта и разрешения экрана.
Возвращает максимальное число столбцов окна консоли с учетом текущего шрифта и разрешения экрана.
Возвращает значение, указывающее, включен или отключен режим NUM LOCK клавиатуры.
Возвращает стандартный выходной поток.
Получает или задает кодировку консоли, используемую при записи выходных данных.
Возвращает или задает заголовок для отображения в строке заголовка консоли.
Получает или задает значение, указывающее, интерпретируется ли комбинация клавиши-модификатора Control и клавиши консоли C (Ctrl+C) как обычный ввод или как прерывание, которое обрабатывается операционной системой.
Возвращает или задает высоту области окна консоли.
Возвращает или задает позицию левого края области окна консоли относительно буфера экрана.
Возвращает или задает позицию верхнего края области окна консоли относительно буфера экрана.
Возвращает или задает ширину окна консоли.
Методы
Воспроизводит звуковой сигнал через динамик консоли.
Воспроизводит звуковой сигнал заданной частоты и длительности через динамик консоли.
Удаляет из буфера консоли и ее окна отображаемую информацию.
Возвращает положение курсора.
Копирует заданную исходную область буфера экрана в заданную область назначения.
Копирует заданную исходную область буфера экрана в заданную область назначения.
Получает стандартный поток сообщений об ошибках.
Получает стандартный поток сообщений об ошибках, для которого установлен заданный размер буфера.
Получает стандартный входной поток.
Получает стандартный входной поток, для которого установлен заданный размер буфера.
Получает стандартный выходной поток.
Получает стандартный выходной поток, для которого установлен заданный размер буфера.
Читает следующий символ из стандартного входного потока.
Получает следующий нажатый пользователем символ или функциональную клавишу. Нажатая клавиша отображается в окне консоли.
Получает следующий нажатый пользователем символ или функциональную клавишу. Нажатая клавиша может быть отображена в окне консоли.
Считывает следующую строку символов из стандартного входного потока.
Устанавливает для цветов фона и текста консоли их значения по умолчанию.
Устанавливает заданные значения высоты и ширины буферной области экрана.
Устанавливает положение курсора.
Присваивает свойству Error указанный объект TextWriter.
Присваивает свойству In указанный объект TextReader.
Присваивает свойству Out указанный объект TextWriter.
Задает позицию окна консоли относительно буфера экрана.
Устанавливает заданные значения высоты и ширины окна консоли.
Записывает текстовое представление заданного логического значения в стандартный выходной поток.
Записывает значение заданного знака Юникода в стандартный выходной поток.
Записывает заданный массив знаков Юникода в стандартный выходной поток.
Записывает заданный дочерний массив знаков Юникода в стандартный выходной поток.
Записывает текстовое представление заданного значения Decimal в стандартный выходной поток.
Записывает текстовое представление заданного значения двойной точности с плавающей запятой в стандартный выходной поток.
Записывает текстовое представление заданного 32-битового целого числа со знаком в стандартный поток вывода.
Записывает текстовое представление заданного 64-битового целого числа со знаком в стандартный поток вывода.
Записывает текстовое представление заданного объекта в стандартный выходной поток.
Записывает текстовое представление заданного значения одинарной точности с плавающей запятой в стандартный выходной поток.
Записывает заданное строковое значение в стандартный выходной поток.
Записывает текстовое представление заданного объекта в стандартный выходной поток, используя заданные сведения о форматировании.
Записывает текстовые представления заданных объектов в стандартный выходной поток, используя заданные сведения о форматировании.
Записывает текстовые представления заданных объектов в стандартный выходной поток, используя заданные сведения о форматировании.
Записывает текстовое представление заданных объектов и список параметров переменной длины в стандартный выходной поток, используя заданные сведения о форматировании.
Записывает текстовое представление заданного массива объектов в стандартный выходной поток, используя заданные сведения о форматировании.
Записывает текстовое представление заданного 32-битового целого числа без знака в стандартный выходной поток.
Записывает текстовое представление заданного 64-битового целого числа без знака в стандартный выходной поток.
Записывает текущий признак конца строки в стандартный выходной поток.
Записывает текстовое представление заданного логического значения с текущим признаком конца строки в стандартный выходной поток.
Записывает заданный знак Юникода, за которым следует текущий признак конца строки, в стандартный выходной поток.
Записывает заданный массив знаков Юникода, за которым следует текущий признак конца строки, в стандартный выходной поток.
Записывает заданный подмассив знаков Юникода, за которым следует текущий признак конца строки, в стандартный выходной поток.
Записывает текстовое представление указанного значения Decimal, за которым следует текущий знак завершения строки, в стандартный выходной поток.
Записывает текстовое представление заданного значения двойной точности с плавающей запятой, за которым следует признак конца строки, в стандартный выходной поток.
Записывает текстовое представление заданного 32-битового целого числа со знаком, за которым следует текущий знак завершения строки, в стандартный выходной поток.
Записывает текстовое представление заданного 64-битового целого числа со знаком, за которым следует текущий знак завершения строки, в стандартный поток вывода.
Записывает текстовое представление заданного объекта, за которым следует текущий признак конца строки, в стандартный выходной поток.
Записывает текстовое представление заданного значения одинарной точности с плавающей запятой, за которым следует признак конца строки, в стандартный выходной поток.
Записывает заданное строковое значение, за которым следует текущий признак конца строки, в стандартный выходной поток.
Записывает текстовое представление заданного объекта, за которым следует текущий признак конца строки, в стандартный выходной поток с использованием заданных сведений о форматировании.
Записывает текстовые представления заданных объектов, за которыми следует текущий признак конца строки, в стандартный выходной поток с использованием заданных сведений о форматировании.
Записывает текстовые представления заданных объектов, за которыми следует текущий признак конца строки, в стандартный выходной поток с использованием заданных сведений о форматировании.
Записывает текстовые представления заданных объектов и список параметров переменной длины, за которыми следует текущий признак конца строки, в стандартный выходной поток с использованием заданных сведений о форматировании.
Записывает текстовые представления заданного массива объектов, за которым следует текущий признак конца строки, в стандартный выходной поток с использованием заданных сведений о форматировании.
Записывает текстовое представление заданного 32-битового целого числа без знака, за которым следует текущий признак конца строки, в стандартный выходной поток.
Записывает текстовое представление заданного 64-битового целого числа без знака, за которым следует текущий признак конца строки, в стандартный выходной поток.
События
Возникает при одновременном нажатии клавиши-модификатора Control (Ctrl) и либо клавиши консоли C (C), либо клавиши Break (Ctrl+C или Ctrl+Break).