C консольное приложение русский язык

Содержание

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Как включить русский язык в Си

На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.

Например, при запуске вот этой программы:

В консоли будет отображено следующее:

Всё дело в том, что мы не подключили русскую локализацию.

Исправить эту ошибку очень легко!

Для начала надо добавить следующую библиотеку:

Она отвечает за локализацию.

А затем нам надо просто написать в начале тела кода вот эту строку:

Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.

“Rus”, как легко догадаться говорит о том, что локализация произойдёт на русский язык.

Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так:

Поделиться в соц. сетях:

15 комментария(ев) к статье “ Как включить русский язык в Си ”

Что именно? Какая ошибка?

Можете попробовать такой код:

#include
#include
#include

int main()
<
setlocale(LC_ALL, “Rus”);
printf(“Всем привет! Как дела?”);
getch(); //В Visual Studio _getch();
return 0;
>

Этот вариант работает, но он не включает русский язык в стандартном потоке ошибок.

Вместо одних каракулей появились другие. Но никаких ошибок не выдает.

Здравствуйте, Евгений. Существует ещё один способ включения русского языка в Си. Попробуйте использовать следующий код:

#include
#include
#include

int main()
<
SetConsoleCP(1251); //установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); //установка кодовой страницы win-cp 1251 в поток вывода
printf(“Всем привет! Как дела?”);
_getch();
return 0;
>

Здравствуйте, использовала такой метод как в статье.
Все работает при выводе текста функцией printf.
Но, когда я считываю слово функцией scanf, а потом вывожу его функцией printf появляются снова непонятные символы.
Подскажите пожалуйста как это можно исправить.

Здравствуйте! Чуть выше в комментариях приводятся ещё два способа, как включить русский язык в Си. Попробуйте их, должно сработать.

У меня та же проблема, с printf всё работает, но вот если ввести при scanf, то в выводе printf будут кракозябры

Попробуйте способы, указанные в комментариях выше. Один из них точно сработает.

Спасибо за инфу! Все работает.

Всё работает! Спасибо большое!

Правильно “Ru”, а не “Rus”.
setlocale(LC_ALL, “Ru”);

у меня получилось так:

#include
#include
#include

void main()
<
setlocale(LC_ALL, “Rus”);
wprintf(L”Спасибо”);
>

Если кто-то пишет в NotePad++ или чём-то подобном, не забудьте поменять кодировку самого файла с UTF-8 на, например, Windows-1251.
Спасибо за статью.

Источник

Русский язык в консоли

Учу C++ по книжке Страуструпа, не выводятся русские символы. Вот код:

В Code::Blocks всё работает и без крякозяблов. Даже без setlocale.

5 ответов 5

Для данной задачи существует множество решений. Если вам нужно быстрое и не обязательно универсальное решение, чтобы сильно не разбираться, прокручивайте к разделу «Менее правильные, но пригодные решения».

Правильное, но сложное решение

Для начала, проблема у консоли Windows состоит в том, что её шрифты, которые стоят «по умолчанию», показывают не все символы. Вам следует сменить шрифт консоли на юникодный, это позволит работать даже на английской Windows. Если вы хотите поменять шрифт только для вашей программы, в её консоли нажмите на иконку в левом верхнем углу → Свойства → Шрифт. Если хотите поменять для всех будущих программ, то же самое, только заходите в Умолчания, а не Свойства.

Дальнейшее рассмотрение касается лишь Microsoft Visual Studio. Если у вас другой компилятор, пользуйтесь предложенными на свой страх и риск, никакой гарантии нету.

Настроив среду, перейдём к решению собственно задачи.

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

Вам нужно _setmode(_fileno(. ), _O_U16TEXT); для переключения режима консоли:

Такой способ должен работать правильно с вводом и выводом, с именами файлов и перенаправлением потоков.

Если очень не хочется переходить на Unicode, и использовать однобайтную кодировку, будут возникать проблемы. Для начала, символы, не входящие в выбранную кодировку (например, для случая CP1251 — базовый английский и кириллица), работать не будут, вместо них будет вводиться и выводиться абракадабра. Кроме того, узкие строковые константы имеют ANSI-кодировку, а это значит, что кириллические строковые литералы на нерусской системе не сработают (в них будет зависимая от системной локали абракадабра). Держа в голове эти проблемы, переходим к изложению следующей серии решений.

Менее правильные, но пригодные решения

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

Убедитесь, что ваши исходники в кодировке CP 1251 (это не само собой разумеется, особенно если у вас не русская локаль Windows). Если при добавлении русских букв и сохранении Visual Studio ругается на то, что не может сохранить символы в нужной кодировке, выбирайте CP 1251.

(1) Если компьютер ваш, вы можете поменять кодовую страницу консольных программ на вашей системе. Для этого сделайте вот что:

Преимущества способа: примеры из книг начнут работать «из коробки». Недостатки: смена реестра может повлечь за собой проблемы, кодировка консоли меняется глобально и перманентно — это может повлиять сломать другие программы. Плюс эффект будет только на вашем компьютере (и на других, у которых та же кодировка консоли). Плюс общие проблемы неюникодных способов.

(2) Вы можете поменять кодировку только вашей программы. Для этого нужно сменить кодировку консоли программным путём. Из вежливости к другим программам не забудьте потом вернуть кодировку на место!

Это делается либо при помощи вызова функций

в начале программы, либо про помощи вызова внешней утилиты

(То есть, у вас должно получиться что-то вроде

и дальше обыкновенный код программы.)

Можно обернуть эти вызовы в класс, чтобы воспользоваться плюшками автоматического управления временем жизни объектов C++.

(если выполняете задание из Страуструпа можно вставить в конец заголовочного файла std_lib_facilities.h )

Если вам нужен не русский, а какой нибудь другой язык, просто замените 1251 на идентификатор нужной кодировки (список указан ниже в файле), но, разумеется, работоспособность не гарантируется.

Остались методы, которые тоже часто встречаются, приведём их для полноты.

Методы, которые работают плохо (но могут помочь вам)

Метод, который часто рекомендуют — использование конструкции setlocale(LC_ALL, «Russian»); У этого варианта (по крайней мере в Visual Studio 2012) гора проблем. Во-первых, проблема с вводом русского текста: введённый текст передаётся в программу неправильно! Нерусский текст (например, греческий) при этом вовсе не вводится с консоли. Ну и общие для всех неюникодных решений проблемы.

Поэтому стоит хранить исходники в Unicode (например, UTF-8).

Причем сохранить следует с сигнатурой

Ситуацию частично спасает пересохранение исходников в кодировке UTF-8 с обязательным символом BOM, без него Visual Studio начинает интерпретировать «широкие» строки с кириллицей весьма своеобразно. Однако, указав BOM (Byte Order Mark — метка порядка байтов) кодировки UTF-8 — символ, кодируемый тремя байтами 0xEF, 0xBB и 0xBF, мы получаем узнавание кодировки UTF-8 в любой системе

Стоит пояснить кое-что для тех, кто ищет правильный ответ по поводу функции setlocale:

Метод, который часто рекомендуют — использование конструкции setlocale(LC_ALL, «Russian»); У этого варианта (по крайней мере в Visual Studio 2012) гора проблем. Во-первых, проблема с вводом русского текста: введённый текст передаётся в программу неправильно! Нерусский текст (например, греческий) при этом вовсе не вводится с консоли. Ну и общие для всех неюникодных решений проблемы.

Я добавлю по этому методу побольше информации: Его вообще не правильно рекомендуют!

Читайте также:  Дога на татарском языке за детей

Начнём с первого: Во втором параметре функция принимает не название страны или языка, хотя в некоторых случаях она сработает, а языковый идентификатор, согласно ISO 3166-1. Поэтому правильно и корректно указывать: «ru-RU». Теперь второе: в документации к этой функции написано чёрным по белому: «If execution is allowed to continue, the function sets errno to EINVAL and returns NULL.» Что буквально толкуется: при возникновении ошибки, функция устанавливает значение переменной errno в EINVAL и возвращает NULL.

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

И не забывайте, что setlocale устанавливает локальную таблицу только для ANSI кодировки, поэтому и не будут отображаться греческие, испанские, китайские и даже японские знаки. Для русского языка это будет таблица номер 1251.

И важно: почему эта функция является надёжней, нежели прямая установка таблицы символов через SetConsoleCP, ибо потому, что она переключает все внутренние надстройки именно для раскладки под язык. Начиная от стандарта отображения даты, заканчивая знаками разделителя.

И да, не стоит устанавливать языковый указатель виде «ru», так как в зависимости от сборки самой ось и имеющихся языковых пакетов, может установиться ru-BY, ru-UA, ru-MO и другие языковые стандарты, значительно отличающиеся от ru-RU. И категорично нельзя указывать «Russia», «Russian», «Russian Federation» (да, такую вакханалию уже встречал пару раз). Хотя функция производит проверку и по названию региона, не всегда в таблице локализации это указано, или может быть указано «Россия» или «Русский» уже на нашей раскладке. Это и есть основная ошибка, из-за которой функция setlocale зачастую отказывается работать.

И да, для приложения, работающего в режиме юникогда, стоит использовать функцию _wsetlocale. Она идентична, и также устанавливает базовые настройки для локализации. Кроме того, если проект приложения в Visual Studio настроен в режим юникода, то и будет работать только _wsetlocale, так как setlocale, по документации, не приспособлена к работе с юникодом вообще никак.

Совсем забыл указать, что функция setlocale и _wsetlocale, в случае успеха вернёт именно идентификатор региона. То есть, в нашем случае строку «ru_RU\0».

Источник

Символы кириллицы в консоли Windows

Ходят упорные слухи, что в Linux нет проблем с работой с кириллицей в консоли. Эта статья для тех, кому повезло меньше — для виндузятников.

Проблема заключается в том, что когда в Microsoft придумывали Windows, то попутно придумали новую кодировку для кириллицы. Трудно сказать зачем, но придумали. А старую кодировку, которая использовалась в MS DOS, оставили. Видимо в целях обратной совместимости. И случилась жопа. С выходом новых версий Windows ситуация только ухудшилась. Т.к. консоль, уже как часть операционной системы, унаследовала кодировку кириллицы от MS DOS.

В итоге сейчас для кириллицы имеем две кодировки: cp866 — старая досовская кодировка и cp1251 (она же windows-1251) — новая, от Windows. В настоящее время дело осложняется тем, что окончательно созрел Unicode, что дает еще несколько кодировок не совместимых с cp1251 и с cp866, и не совсем совместимых между собой. Но о Unicode как-нибудь в другой раз.

Кстати, буковки «cp» в названии кодировки означает codepage — кодовая страница в смысле «страница кодировки символов».

Итак, при написании программ строки могут встречаться в двух различных кодировках в следующих местах:

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

Первое правило при работе с национальными алфавитами: все строки должны быть в единой кодировке.

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

Еще один подводный камень:

В окне консоли, использующем растровые шрифты (Raster fonts), корректно отображается только кодовая страница оригинального производителя оборудования (OEM), установленная с Windows XP. Другие кодовые страницы отображаются корректно в полноэкранном режиме или в окне консоли, которое использует шрифты True Type.

При этом в самой консоли отображение кириллицы при вводе (в командной строке) работает даже при использовании растровых шрифтов.

Второе правило при работе с национальными алфавитами: в настройках консоли установите для вывода шрифт True Type.

Сделать это можно следующим способом:

И еще. Похоже, что ни Unicode, ни UTF-8, ни мультибайтовые строки в консоли напрямую не поддерживаются. По крайней мере, у меня с ними ничего путного не вышло.

Далее несколько советов для борьбы с этими проблемами.

Самый простой (и самый неудобный) способ

Работать в «родной» для консоли кодовой странице, в cp866. Т.е. все строки с кириллицей в исходном коде программы должны быть написаны в кодировке cp866. В этой же кодировке должны быть все входные файлы для программы. И в этой же кодировке будут и все выходные файлы. Полное впечатление, что мы вернулись на 20 лет назад, в MS DOS.

Если под рукой есть IDE, которая работает в консоли — особых проблем не возникнет. Если же использовать среду разработки под Windows GUI, то возникают вполне понятные сложности, поскольку IDE обычно работают в кодировке cp1251, «родной» для Windows. Кстати, как бы ни хаяли MS Visual Studio, она умеет работать с исходными текстами программ в различных кодировках, корректно их отображая в своем редакторе.

Вывод на консоль Windows 7

Способ подходит, если необходим только вывод кириллицы на консоль, и вы работаете под Windows 7. Под Windows XP это не работает (прим. редактора — все работает).

Самое простое — использовать функцию setlocale() :

Функция setlocale() устанавливает или изменяет для текущей программы информацию о национальной специфике (то, что задается в апплете Region and Language в Control panel). Описание функции можно найти в MSDN.

Также популярен урезанный вариант вызова:

Здесь используется, что символ LC_ALL равен 0 и подразумевается, что в операционной системе установлена страна пребывания Россия (локализация самой Винды роли не играет). Но лучше все-таки использовать полную форму.

Функция достаточно капризная. Это касается второго параметра. Некоторые значения, которые указаны в документации, могут на каких-то системах (компиляторах?) не работать.

Ввод и вывод на консоль

В качестве единственного параметра обеим функциям передается номер кодовой страницы. В нашем случае (кириллица) — это 1251.

Этот способ работает и для Windows XP, и для Windows 7. Опробовано с Dev-C++ 5.6.3 (компилятор TDM-GCC 4.8.1 и MS Visual Studio 2012.

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

Исходный текст в кодировке cp1251:

Эта программа также удобна для экспериментов с различными кодовыми таблицами и их сочетаниями.

Для практических целей можно использовать шаблон:

Функции перекодировки

В Windows API есть две (а точнее, четыре пары) функции, осуществляющие перекодировку OEM ANSI (так сказано в документации). Проще говоря, в контексте рассматриваемого вопроса, это перекодировка между cp866 (OEM) и cp1251 (ANSI).

«Опасные» функции без контроля длины строки:

В качестве параметров получают указатели на входной и выходной буферы. Нулевой символ считается концом входной строки.

«Безопасные» функции с контролем длины строки:

В качестве параметров получают указатели на входной и выходной буферы и количество символов для входной строки. Нулевые символы не считаются концом строки. Преобразуется указанное количество символов.

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

P. S. Не судите строго — это мой первый опыт в написании статьи. Я так посмотрел, люди пишут, а чем я хуже? Тем более, что появилось чем поделиться. А оказалось, что это трудно. И написать, и ошибки проверить, и иллюстрации подготовить.

На написание статьи меня сподвиг вопрос о «кракозябрах в XP». Под это дело из руин даже был извлечен старый комп с XP. И оказалось, что проблема действительно имеет место. Пришлось провести небольшое исследование, результаты которого я здесь и изложил. Также скомпилировал доступную информацию по этой теме из материалов сайта, что бы все было в одном месте. Насколько у меня это получилось — решать вам. Буду рад замечаниям и дополнениям в комментариях к статье.

Читайте также:  Вакансии главного бухгалтера со знанием английского языка

Источник

ЧаВо = Часто задаваемые Вопросы

по интегрированой среде Dev-C++

Список вопросов

Как настроить русский язык в консольных программах?

В консольных приложениях (похожих на текстовый режим) русские буквы выводятся к кодировке CP-866, а в оболочке Dev-C++ они набираются в кодировке CP-1251. Это значит, что вместо русских букв вы увидите «кракозябры». Чтобы этого не случилось, кодировку нужно исправить с помощью простой дополнительной программы. Сделайте следующее:

Примечание от Ю. Проценко: Если программа при запуске не обнаруживает библиотеки libintl-8.dll и libiconv-2.dll, их нужно поместить в каталог C:\WINDOWS\SYSTEM32.

Как писать простые графические программы?

Для работы с графикой через браузер можно использовать онлайн-сервис Антона Деникина.

Для того чтобы на локальном компьютере подключить модуль для работы с графикой, сделайте следуюшее:

После выполнения этих действий вы можете использовать команды для рисования графических примитивов (отрезков, прямоугольников, окружностей и т.д.), так же, как раньше в Turbo C и Borland C++. Полное описание команд (на английском языке) можно найти на странице Михаэля Майна.

Вот так выглядит простейшая программа, которая выводит на экран отрезок из точки (0,0) (это левый верхний угол окна) в точку (50,50) и ждет нажатия на любую клавишу:

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

Как работать с графикой в Windows 8/10?

Спасибо П.Ф. Муль, который прислал ссылку на эту инструкцию.

Проблема состоит в том, что устаревшая версия Bloodshed Dev-C++ 4.9.9.2 не работает в операционных системах Windows 8/10.

Полная инструкция по установке современной версии Dev-C++ и подключению модуля работы с графикой пожно посмотреть на видео How to Make Graphics in Dev C++ on Windows 10.

Для того, чтобы подключить модуль для работы с графикой в Windows 8/10, сделайте следуюшее:

Ещё одна инструкция по подключению простой графики от А. Ковалёва:

The following library directories don't exist:
C:\Program Files\Dev-Cpp\MinGW64\lib32

. \Dev-Cpp\MinGW64\lib
. \Dev-Cpp\MinGW64\lib32 (это ранее сделанная копия)
. \Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib
. \Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32

Источник

Учебник. Создание простого консольного приложения C# в Visual Studio Tutorial: Create a simple C# console app in Visual Studio

В этом учебнике по C# вы создадите и запустите консольное приложение с помощью Visual Studio, а также ознакомитесь с некоторыми возможностями интегрированной среды разработки (IDE) Visual Studio. In this tutorial for C#, you’ll use Visual Studio to create and run a console app and explore some features of the Visual Studio integrated development environment (IDE) while you do so.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. If you haven’t already installed Visual Studio, go to the Visual Studio downloads page to install it for free.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. If you haven’t already installed Visual Studio, go to the Visual Studio downloads page to install it for free.

Создание проекта Create a project

Для начала мы создадим проект приложения C#. To start, we’ll create a C# application project. Для этого типа проекта уже имеются все нужные файлы шаблонов, что избавляет вас от лишней работы. The project type comes with all the template files you’ll need, before you’ve even added anything!

Откройте Visual Studio 2017. Open Visual Studio 2017.

В верхней строке меню последовательно выберите Файл > Создать > Проект. From the top menu bar, choose File > New > Project. (Или нажмите CTRL+SHIFT+N). (Alternatively, press Ctrl+Shift+N).

Добавление рабочей нагрузки (необязательно) Add a workload (optional)

Вариант 1: использование диалогового окна «Новый проект» Option 1: Use the New Project dialog box

Выберите ссылку Открыть Visual Studio Installer в левой области диалогового окна Новый проект. Choose the Open Visual Studio Installer link in the left pane of the New Project dialog box.

Вариант 2: использование меню «Сервис» Option 2: Use the Tools menu bar

Закройте диалоговое окно Создать проект и в верхней строке меню выберите Сервис > Получить средства и компоненты. Cancel out of the New Project dialog box and from the top menu bar, choose Tools > Get Tools and Features.

Запустите Visual Studio 2019. Open Visual Studio 2019.

На начальном экране выберите Создать проект. On the start window, choose Create a new project.

В окне Создание проекта выберите C# в списке языков. In the Create a new project window, choose C# from the Language list. Затем выберите Windows в списке платформ и Консоль в списке типов проектов. Next, choose Windows from the Platform list and Console from the project types list.

Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное приложение и щелкните Далее. After you apply the language, platform, and project type filters, choose the Console Application template, and then choose Next.

Если шаблон Консольное приложение отсутствует, его можно установить в окне Создание проекта. If you do not see the Console Application template, you can install it from the Create a new project window. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. In the Not finding what you’re looking for? message, choose the Install more tools and features link.

Затем нажмите кнопку Изменить в Visual Studio Installer. After that, choose the Modify button in the Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. You might be prompted to save your work; if so, do so. Выберите Продолжить, чтобы установить рабочую нагрузку. Next, choose Continue to install the workload. После этого вернитесь к шагу 2 в процедуре Создание проекта. Then, return to step 2 in this «Create a project» procedure.

В поле Имя проекта окна Настроить новый проект введите Calculator. In the Configure your new project window, type or enter Calculator in the Project name box. Затем щелкните Далее. Then, choose Next.

В окне Дополнительные сведения для целевой платформы должна быть указана версия .NET Core 3.1. In the Additional information window, .NET Core 3.1 should already be selected for your target framework. Если это не так, выберите .NET Core 3.1. If not, select .NET Core 3.1. Затем нажмите Создать. Then, choose Create.

Visual Studio открывает новый проект, включающий код по умолчанию «Hello World». Visual Studio opens your new project, which includes default «Hello World» code.

Создание приложения Create the app

Во-первых, мы рассмотрим некоторые базовые расчеты для целых чисел в C#. First, we’ll explore some basic integer math in C#. Затем мы добавим код для создания простого калькулятора. Then, we’ll add code to create a basic calculator. После этого нам предстоит отладить приложение, чтобы найти и исправить ошибки. After that, we’ll debug the app to find and fix errors. И, наконец, мы оптимизируем код для повышения эффективности. And finally, we’ll refine the code to make it more efficient.

Вычисления с целыми числами Explore integer math

Давайте начнем с базовых расчетов целых чисел в C#. Let’s start with some basic integer math in C#.

В редакторе кода удалите созданный по умолчанию код Hello, World!. In the code editor, delete the default «Hello World» code.

Вместо нее введите следующий код: In its place, type the following code:

Обратите внимание на то, что при этом функция IntelliSense в Visual Studio предлагает возможность автовыполнения записи. Notice that when you do so, the IntelliSense feature in Visual Studio offers you the option to autocomplete the entry.

Следующая анимация не предназначена для дублирования предыдущего кода. The following animation isn’t intended to duplicate the preceding code. Она предназначена только для того, чтобы продемонстрировать, как работает функция автозаполнения. It’s intended only to show how the autocomplete feature works.

Нажмите зеленую кнопку Пуск или клавишу F5 рядом с калькулятором, чтобы создать и запустить программу. Choose the green Start button next to Calculator to build and run your program, or press F5.

Откроется окно консоли с суммой 42 + 119, которая равна 161. A console window opens that reveals the sum of 42 + 119, which is 161.

Закройте окно консоли. Close the console window.

Добавление кода для создания калькулятора Add code to create a calculator

Давайте продолжим, добавляя более сложный набор кода калькулятора в проект. Let’s continue by adding a more complex set of calculator code to your project.

Удалите весь код, который отображается в редакторе кода. Delete all the code you see in the code editor.

Читайте также:  Как готовить языки трески в кляре

Введите или вставьте в редактор кода следующий код: Enter or paste the following new code into the code editor:

Выберите Calculator, чтобы запустить программу, или нажмите клавишу F5. Choose Calculator to run your program, or press F5.

Откроется окно консоли. A console window opens.

Просмотрите приложение в окне консоли и сложите числа 42 и 119, пользуясь предложенными подсказками. View your app in the console window, and then follow the prompts to add the numbers 42 and 119.

Теперь приложение должно выглядеть как на следующем снимке экрана: Your app should look similar to the following screenshot:

Добавление функциональных возможностей в калькулятор Add functionality to the calculator

Давайте изменим этот код, чтобы добавить функциональные возможности. Let’s tweak the code to add further functionality.

Обработка десятичных чисел Add decimals

Пока наше приложение принимает и возвращает только целые числа. The calculator app currently accepts and returns whole numbers. Вычисления можно сделать точнее, добавив код для обработки десятичных чисел. But, it will be more precise if we add code that allows for decimals.

Как показано на следующем снимке экрана, при делении числа 42 на число 119 вы получите результат 0, что для нас недостаточно точно. As in the following screenshot, if you run the app and divide number 42 by the number 119, your result is 0 (zero), which isn’t exact.

Давайте исправим код, чтобы он обрабатывал десятичные числа. Let’s fix the code so that it handles decimals.

Нажмите клавиши CTRL + H, чтобы открыть элемент управления Найти и заменить. Press Ctrl + H to open the Find and Replace control.

Переключите Учитывать регистр (ALT+C) и Слово целиком (ALT+W) в элементе управления Найти и заменить. Make sure that you toggle Match case (Alt+C) and Match whole word (Alt+W) in the Find and Replace control.

Еще раз запустите приложение калькулятора и разделите число 42 на число 119. Run your calculator app again and divide the number 42 by the number 119.

Обратите внимание, что теперь приложение возвращает не просто ноль, а десятичное число. Notice that the app now returns a decimal numeral instead of zero.

Но пока приложение только возвращает десятичные числа. However, the app produces only a decimal result. Давайте изменим код так, чтобы приложение могло выполнять операции над десятичными числами. Let’s make a few more tweaks to the code so that the app can calculate decimals too.

Запустите приложение калькулятора и разделите число 42,5 на число 119,75. Run your calculator app and divide the number 42.5 by the number 119.75.

Обратите внимание на то, что теперь приложение принимает и возвращает значения десятичные числа. Notice that the app now accepts decimal values and returns a longer decimal numeral as its result.

(Количество десятичных разрядов мы исправим с помощью инструкций по пересмотру кода.) (We’ll fix the number of decimal places in the Revise the code section.)

Отладка приложения Debug the app

Мы уже улучшили наше простое приложение калькулятора, но пока оно не умеет обрабатывать исключения, включая ошибки во входных данных. We’ve improved on our basic calculator app, but it doesn’t yet have fail safes in place to handle exceptions, such as user input errors.

Например, при попытке разделить любое число на ноль или при вводе буквенного символа там, где приложение ожидает число (или наоборот), приложение может перестать работать, вернет ошибку или непредвиденный нечисловой результат. For example, if you try to divide a number by zero, or enter an alpha character when the app expects a numeric character (or vice versa), the app might stop working, return an error, or return an unexpected nonnumeric result.

Давайте рассмотрим несколько типичных ошибок во входных данных, найдем их с помощью отладчика, если они там есть, и исправим код, чтобы устранить их. Let’s walk through a few common user input errors, locate them in the debugger if they appear there, and fix them in the code.

Дополнительные сведения об отладчике и принципах его работы см. в разделе Знакомство с отладчиком Visual Studio. For more information about the debugger and how it works, see the First look at the Visual Studio debugger page.

Исправление ошибки деления на ноль Fix the «divide by zero» error

При попытке деления числа на ноль консольное приложение может перестать отвечать, а затем покажет, что именно не так в редакторе кода. When you try to divide a number by zero, the console app might freeze and then show you what’s wrong in the code editor.

Иногда приложение не зависает, а отладчик не отображает ошибку деления на ноль. Sometimes, the app doesn’t freeze and the debugger won’t show a divide-by-zero error. Вместо этого приложение может вернуть непредвиденный нечисловой результат, например символ бесконечности. Instead, the app might return an unexpected nonnumeric result, such as an infinity symbol. Приведенное ниже исправление кода по-прежнему применимо. The following code fix still applies.

Давайте изменим код, чтобы он обрабатывал такую ошибку. Let’s change the code to handle this error.

Замените его следующим кодом. Replace it with the following code:

Когда вы добавите новый код, раздел с оператором switch будет выглядеть так, как показано на следующем снимке экрана: After you add the code, the section with the switch statement should look similar to the following screenshot:

Теперь при делении любого числа на ноль приложение предложит ввести другое число. Now, when you divide any number by zero, the app will ask for another number. Даже лучше: Оно будет снова и снова повторять этот запрос, пока не получит значение, отличающееся от нуля. Even better: It won’t stop asking until you provide a number other than zero.

Исправление ошибки формата Fix the «format» error

Если вы введете буквенный символ там, где приложение ожидает цифру (или наоборот), приложение консоли перестает работать. If you enter an alpha character when the app expects a numeric character (or vice versa), the console app freezes. Visual Studio отображает причину проблемы в редакторе кода. Visual Studio then shows you what’s wrong in the code editor.

Чтобы устранить эту ошибку, мы выполним рефакторинг введенного ранее кода. To fix this error, we must refactor the code that we’ve previously entered.

Пересмотр кода Revise the code

Класс Calculator выполняет основную часть работы для вычислений, а класс Program отвечает за пользовательский интерфейс и перехват ошибок. The Calculator class will handle the bulk of the calculation work, and the Program class will handle the user interface and error-capturing work.

Итак, начнем. Let’s get started.

Удалите все в пространстве имен Calculator между открывающей и закрывающей фигурными скобками: Delete everything in the Calculator namespace between its opening and closing braces:

Теперь добавьте новый класс Calculator со следующим содержимым: Next, add a new Calculator class, as follows:

Затем добавьте новый класс Program со следующим содержимым: Then, add a new Program class, as follows:

Выберите Calculator, чтобы запустить программу, или нажмите клавишу F5. Choose Calculator to run your program, or press F5.

Разделите число 42 на число 119, следуя подсказкам на экране. Follow the prompts and divide the number 42 by the number 119. Теперь приложение должно выглядеть как на следующем снимке экрана: Your app should look similar to the following screenshot:

Обратите внимание на то, что вы можете ввести несколько выражений, не закрывая консольное приложение. Notice that you have the option to enter more equations until you choose to close the console app. Также мы сократили количество десятичных разрядов в результате. And, we’ve also reduced the number of decimal places in the result.

Закрытие приложения Close the app

Закройте приложение калькулятора, если оно еще открыто. If you haven’t already done so, close the calculator app.

Закройте область вывода в Visual Studio. Close the Output pane in Visual Studio.

В Visual Studio нажмите клавиши CTRL+S, чтобы сохранить приложение. In Visual Studio, press Ctrl+S to save your app.

Закройте Visual Studio. Close Visual Studio.

Полный код Code complete

В этом руководстве мы внесли много изменений в приложение «Калькулятор». During this tutorial, we’ve made a lot of changes to the calculator app. Теперь оно более эффективно использует вычислительные ресурсы и обрабатывает большинство ошибок во входных данных. The app now handles computing resources more efficiently, and it handles most user input errors.

Ниже мы собрали в один блок весь код: Here’s the complete code, all in one place:

Следующие шаги Next steps

Другие руководства Continue with more tutorials:

Перейдите ко второй части этого руководства: Continue with the second part of this tutorial:

Источник

Интересные факты из жизни