C как завершить консольное приложение

Обновлено: 21.11.2024

Консольные программы легко разрабатывать, поскольку консольные приложения выполняют весь ввод и вывод в командной строке. Они идеально подходят для быстрого опробования функций языка и написания утилит командной строки. Если вы когда-нибудь изучали язык программирования, то знаете, что все они начинаются со слов «Hello, world!». программа. Здесь также мы начинаем с "Hello, world!".

Hello World — ваша первая программа

<р>1. Откройте визуальную студию

<р>2. В меню "Файл" выберите "Новый проект".

Затем появится диалоговое окно "Новый проект". В этом диалоговом окне перечислены различные типы приложений по умолчанию.

<р>3. Выберите «Консольное приложение» в качестве типа проекта и измените имя своего приложения в нижнем текстовом поле.

Если вас не устраивает местоположение по умолчанию, вы всегда можете ввести новый путь, если хотите.

<р>4. Затем нажмите "ОК".

После того, как вы нажмете кнопку OK, вы увидите экран, подобный следующему рисунку.

Здесь, в следующей программе, мы просто печатаем "Hello, world!" только сообщение. Поэтому скопируйте и вставьте следующую команду в основной блок кода.

Здесь вы можете увидеть полный исходный код.

После ввода команды следующим шагом будет запуск программы. Вы можете запустить свою программу, используя Ctrl+F5 . Затем Visual Studio будет держать окно консоли открытым, пока вы не нажмете клавишу. Вы получите экран, похожий на следующее изображение.


Вы создали свою первую программу в Visual Studio.

Первая программа запускает ваше приложение с помощью Ctrl+F5, поэтому окно консоли остается открытым, пока вы не нажмете клавишу. Недостатком этого (Ctrl+F5) является то, что вы теряете отладочную информацию Visual Studio. Если вы запустите консольное приложение, используя F5 вместо Ctrl+F5 , вы увидите, что окно внезапно исчезнет. Это потому, что ваша программа закончена. Когда консольные приложения завершают выполнение и возвращаются из своего основного метода, соответствующее окно консоли автоматически закрывается. Это ожидаемое поведение.

Если вы хотите, чтобы приложение оставалось открытым для целей отладки, вам нужно дать компьютеру команду дождаться нажатия клавиши, прежде чем завершать работу приложения и закрывать окно. В этом случае вы можете использовать Console.ReadLine() для ожидания ввода пользователя или Console.ReadKey для ожидания любой клавиши.

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

Аргументы метода Main представляют собой массив строк, представляющий аргументы командной строки. Обычно вы определяете, существуют ли аргументы, проверяя свойство Length.

Основная программа принимает аргументы в порядке args[0], args[1] и т. д. Следующая программа показывает, как отобразить все параметры, вводимые в консольное приложение.

Как приостановить консольное приложение

System.Threading.Thread.Sleep() задержит ваши программы. Он получает значение, указывающее количество миллисекунд ожидания. Это может быть полезно для ожидания внешнего приложения или задачи.

Когда вы запустите указанную выше программу, она подождет 5 секунд и выйдет из приложения.

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

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

Консольные приложения завершат работу, когда основная функция завершит работу, хотя вы должны быть осторожны, чтобы избавиться от любых устаревших ресурсов, которыми вы, возможно, управляли, поскольку они могут поддерживать основной процесс. В некоторых ситуациях вам может потребоваться принудительно завершить работу вашей программы. В этом случае вы можете явно выйти, используя Environment.Exit.
SystemEnvironment.Exit();

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

Сейчас я использую exit(0) для [попытки] завершить свою программу. Моя
программа представляет собой консольное приложение .exe. После того, как встретится
строка кода "exit(0)", консольное приложение ожидает
ввода, прежде чем завершить работу. Я хочу, чтобы он полностью завершился без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Сейчас я использую exit(0) для [попытки] завершить свою программу. Моя
программа представляет собой консольное приложение .exe.После того, как встретится
строка кода "exit(0)", консольное приложение ожидает
ввода, прежде чем завершить работу. Я хочу, чтобы он полностью завершился без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Вы запускаете это из IDE, такой как Visual Studio или что-то подобное?
Брайан

--
Пожалуйста, цитируйте предыдущее сообщение достаточно для контекста. Чтобы сделать это из
Google, нажмите "показать параметры" и используйте ответ, показанный в развернутом
заголовке.

Сейчас я использую exit(0) для [попытки] завершить свою программу. Моя
программа представляет собой консольное приложение .exe. После того, как встретится
строка кода "exit(0)", консольное приложение ожидает
ввода, прежде чем завершить работу. Я хочу, чтобы он полностью завершился без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Опубликуйте рабочий пример кода — возможно, мы сможем помочь.

Сейчас я использую exit(0) для [попытки] завершить свою программу. Моя
программа представляет собой консольное приложение .exe. После того, как встретится
строка кода "exit(0)", консольное приложение ожидает
ввода, прежде чем завершить работу. Я хочу, чтобы он полностью завершился без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Вы запускаете это из IDE, такой как Visual Studio или что-то подобное?
Брайан

--
Пожалуйста, цитируйте предыдущее сообщение достаточно для контекста. Чтобы сделать это из
Google, нажмите "Показать параметры" и используйте ответ, показанный в развернутом
заголовке.

Сейчас я использую exit(0) для [попытки] завершить свою программу. Моя
программа представляет собой консольное приложение .exe. После того, как встретится
строка кода "exit(0)", консольное приложение ожидает
ввода, прежде чем завершить работу. Я хочу, чтобы он полностью завершился без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Опубликуйте рабочий пример кода — возможно, мы сможем помочь.

if(result == EXIT_PROGRAM) printf("Обнаружена команда выхода из скрипта.\n");
выход(0); //Думал, что эта строка завершится, но
// это требует нажатия Enter после
консоли.
>

Вот так. Это не язык, это просто IDE. Люди
не хотят, чтобы это окно исчезало, потому что вы не можете видеть вывод.
Вы должны спросить в какой-нибудь группе новостей Visual Studion,
можно ли это изменить. C ничего не может сделать.

if(result == EXIT_PROGRAM) printf("Обнаружена команда выхода из скрипта.\n");
выход(0); //Думал, что эта строка завершится, но
// это требует нажатия Enter после
консоли.
>

Как я уже говорил, это IDE. Попробуйте запустить это из команды, которую вы
открыли, вы увидите ожидаемое поведение.

pemo написал:
ern написал:
Сейчас я использую exit(0) для [попытки] завершить мою программу. Моя
программа представляет собой консольное приложение .exe. После того, как встретится строка кода "exit(0)",
консольное приложение ожидает нажатия клавиши ввода,
прежде чем завершить работу. Я хочу, чтобы он полностью завершался без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Опубликуйте рабочий пример кода — возможно, мы сможем помочь.

--
==============
*Не педант*
==============
if(result == EXIT_PROGRAM) printf("Обнаружена команда выхода из скрипта.\n");
выход(0); //Думал, что эта строка завершится, но
// это требует нажатия Enter после
консоли.
>
Запустите приложение вне среды IDE.

if(result == EXIT_PROGRAM) printf("Обнаружена команда сценария выхода.\n");
выход(0); //Думал, что эта строка завершится, но
// это требует нажатия Enter после
консоли.
>

Как я уже говорил, это IDE. Попробуйте запустить это из команды, которую вы
открыли, вы увидите ожидаемое поведение.

Я пробовал следующие методы, все из которых находятся за пределами IDE:

<р>1. Запуск из командной строки.
2. Двойной щелчок в Проводнике Windows
3. Запуск из скрипта Python

Кажется, ни один из них не избавляется от консольного приложения после
обнаружения выхода (0). Все они требуют, чтобы я нажал
ввод в окне
консоли. ТОГДА окно исчезает. Аааа.

if(result == EXIT_PROGRAM) printf("Обнаружена команда сценария выхода.\n");
выход(0); //Думал, что эта строка завершится, но
// это требует нажатия Enter после
консоли.
>

Флэш Гордон написал: Эрн написал:

if(result == EXIT_PROGRAM) printf("Обнаружена команда сценария выхода.\n");
выход(0); //Думал, что эта строка завершится, но
// это требует нажатия Enter после
консоли.
>

Я закрыл IDE и поместил исполняемый файл в каталог,
IDE не смог его увидеть. Однако проблема остается.

Сейчас я использую exit(0) для [попытки] завершить свою программу. Моя
программа представляет собой консольное приложение .exe. После того, как встретится
строка кода "exit(0)", консольное приложение ожидает
ввода, прежде чем завершить работу. Я хочу, чтобы он полностью завершился без
нажатия ввода вручную. Кто-нибудь знает, что мне здесь не хватает?

Используете ли вы тестовую консоль IDE? Для этого часто требуется
нажатие клавиши, чтобы вы могли видеть вывод программы без
закрытия окна.

Кроме этого, у меня нет опыта работы с EXE.


> if(result == EXIT_PROGRAM) > printf("Обнаружена команда сценария выхода.\n");
> выход(0); // Думал, что эта строка завершится, но это не так,
> // Требуется нажать Enter после завершения
> консоли.
> >

Возможно, приложение завершило работу, но среда IDE
помогает и держит командное окно открытым для вас. Попробуйте запустить его
вне IDE. Что касается языка C, вызова для выхода
достаточно.

Я закрыл IDE и поместил исполняемый файл в каталог,
IDE не смог его увидеть. Однако проблема остается.

Как только ваша программа вызывает функцию exit(), она завершает работу.
(Если только вы не делаете что-то действительно ужасное с помощью atexit(), но я предполагаю, что
вы этого не делаете.) Что-то еще держит окно открытым,
и это "что-то еще" выходит за рамки
группы новостей comp.lang.c.

Пользователь по умолчанию написал: ern написал: > if(result == EXIT_PROGRAM) > printf("Обнаружена команда сценария выхода.\n");
> выход(0); // Думал, что эта строка завершится, но это не так,
> // Требуется нажать Enter после завершения
> консоли.
> >

Как я уже говорил, это IDE. Попробуйте запустить это из команды, которую вы
открыли, вы увидите ожидаемое поведение.

Я пробовал следующие методы, все из которых находятся за пределами IDE:

<р>1. Запуск из командной строки.
2. Двойной щелчок в Проводнике Windows
3. Запуск из скрипта Python

Кажется, ни один из них не избавляется от консольного приложения после
обнаружения выхода (0). Все они требуют, чтобы я нажал
ввод в окне
консоли. ТОГДА окно исчезает. Аааа.

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

C:\> cd directory\of\my\exe

Вы выполняете программу

и сразу после нажатия появляется /новое/ окно?
Если да, то почему? Что вызывает появление нового окна?

--
Если вы размещаете сообщения через Google, прочтите

Вот так. Это не язык, это просто IDE. Люди
не хотят, чтобы это окно исчезало, потому что вы не можете видеть вывод.
Вы должны спросить в какой-нибудь группе новостей Visual Studion,
можно ли это изменить. C ничего не может сделать.

Брайан
Делать нечего.
Создайте релизную версию, в ней не будет нажатия клавиши.

ern написал: Пользователь по умолчанию написал: ern написал:
> if(result == EXIT_PROGRAM) > printf("Обнаружена команда сценария выхода.\n");
> выход(0); // Думал, что эта строка завершится, но это не так,
> // Требуется нажать Enter после завершения
> консоли.
> >

Как я уже говорил, это IDE. Попробуйте запустить это из команды, которую вы
открыли, вы увидите ожидаемое поведение.

Я пробовал следующие методы, все из которых находятся за пределами IDE:

<р>1. Запуск из командной строки.
2. Двойной щелчок в Проводнике Windows
3. Запуск из скрипта Python

Кажется, ни один из них не избавляется от консольного приложения после
обнаружения выхода (0). Все они требуют, чтобы я нажал
ввод в окне
консоли. ТОГДА окно исчезает. Аааа.

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

C:\> cd directory\of\my\exe

Вы выполняете программу

и сразу после нажатия появляется /новое/ окно?
Если да, то почему? Что вызывает появление нового окна?

--
Если вы публикуете сообщения через Google, прочитайте

Нет, новое окно не появляется. Текстовое приложение запускается внутри
окна, вызвавшего его.


Педро Граса написал: ern написал: > Пользователь по умолчанию написал:
>> ern написал:
>> > if(result == EXIT_PROGRAM) >> > printf( "Обнаружена команда сценария выхода.\n");
>> > выход(0); // Думал, что эта строка завершится, но это не так,
>> > // Требуется нажать Enter после завершения
>> > консоли.
>> > >
>>
>> Как я уже говорил в другом месте, это IDE. Попробуйте запустить это из команды, которую вы
>> открыли, вы увидите ожидаемое поведение.
>
> Я пробовал следующие методы, все они вне IDE:
>
> 1. Запуск из командной строки.
> 2. Двойной щелчок в проводнике Windows
> 3. Запуск из скрипта Python
>
> Ни один из них не избавился от консольного приложения после выхода (0) встречается
>. Все они требуют, чтобы я нажал клавишу ввода внутри окна
> консоли. ТОГДА окно исчезает. А-а-а.

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

C:\> cd directory\of\my\exe

Вы выполняете программу

и сразу после нажатия появляется /новое/ окно?
Если да, то почему? Что вызывает появление нового окна?

Нет, новое окно не появляется. Текстовое приложение запускается внутри
окна, вызвавшего его.

И когда программа достигает (и выполняет) оператор ``exit(0);'',
она завершается или не завершается?

Если он завершится (и появится приглашение DOS, готовое к вводу),
в вашей программе, компиляторе или операционной системе все в порядке.

--
Если вы размещаете сообщения через Google, прочтите

>if(result == EXIT_PROGRAM)> printf("Обнаружена команда сценария выхода.\n");
> exit(0); // Думал, что эта строка завершится, но нет 1. Запуск из командной строки.
2. Двойной щелчок в Проводнике Windows
3. Запуск из скрипта Python Ни один из них не избавился от консольного приложения после
обнаружения выхода (0). Все они требуют, чтобы я нажал Enter в окне
консоли. ТОГДА окно исчезает. А-а-а.

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

C:\> cd directory\of\my\exe

Вы выполняете программу

C:\director\of\my\exe> приложение Нет, новое окно не появляется. Текстовое приложение запускается внутри
окна, вызвавшего его.

Наверное, вы работаете под управлением Windows. Если это так, щелкните правой кнопкой мыши
строку заголовка (во время работы приложения) и выберите свойства. Есть
флажок для закрытия при выходе. Если это решит проблему,
comp.lang.c был НАМНОГО неправильной группой для публикации.

Однако, согласно тому, что я понял из приведенной выше ветки, вы
сказали, что текстовое приложение запускается внутри окна, которое его вызвало, и что
после его завершения вы нажимаете Enter, и все окно исчезает. Я
не могу себе представить, что бы это могло сделать.

Опытным гуру C ясно, что код exit() действительно завершает работу
вашей программы. Не проверяя, не убьют ли меня за предложение
что-то не относящееся к ANSI, убедитесь, что нет вызова типа onexit(), который запрашивает
возврат.

Пользователь по умолчанию написал: ern написал:
Пользователь по умолчанию написал: > Вы запускаете это из IDE, такой как Visual Studio или что-то
> подобное?

Вот так. Это не язык, это просто IDE. Люди
не хотят, чтобы это окно исчезало, потому что вы не можете
видеть вывод. Вы должны спросить в какой-нибудь группе новостей Visual Studion,
можно ли это изменить. Си ничего не может сделать.
Делать нечего.
Создайте релизную версию, в ней не будет нажатия клавиши.
Я не вижу такого поведения.

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

Опытным гуру C ясно, что код exit() на самом деле
закрывает вашу программу. Не проверяя, не убьют ли меня за
предложение чего-то не относящегося к ANSI, убедитесь, что
вызов типа onexit() не требует возврата.

Если вы имеете в виду atexit(), то это стандарт C (я упоминал возможность
в другом месте этой темы).

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

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

Итак, прежде всего, как обнаружить CTRL+C ?
Использование функции делегата для присоединения обработчика к событию Console.CancelKeyPress. Вы можете сделать это несколькими способами, но наиболее распространены два из них: встраивание или определение фактической функции.

или, как функция:

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

После определения обработчика вы можете в любой момент прочитать определенное пользователем логическое свойство Program.cancelled, чтобы проверить, запросил ли пользователь завершение запущенного процесса.

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

Функция «Выполнить» просто загружает некоторые данные и обрабатывает их, однако, если пользователь попытается завершить работу, нажав CTRL+C, процесс будет остановлен до того, как начнется вторая половина процесса.

Функция ReadSomeData() также может проверять завершение, однако мы перейдем к функции ProcessSomeData(), так как она становится более сложной, когда мы начинаем обновлять вещи.

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

Причина, по которой он не может проверить терминацию, заключается в том, что здесь единственная функция, которая действительно что-то делает, — это ForEach, и у нее нет обратного вызова. Интересно, что Parallel.ForEach не может быть "сломан" (используя break/`continue` и т. д.), вам нужно выйти из текущей итерации для функции, используя return и предотвратить дальнейшие итерации цикла ForEach, установив остановленное состояние Parallel .

Вы можете встроить "Func<>", но для простоты я использую обычную функцию.

Итак, внутри функции ProcessDataItem(), которая может вызываться для разных элементов данных одновременно в нескольких потоках, нам нужно проверить

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

Происходит при одновременном нажатии клавиши-модификатора Control (Ctrl) и клавиши консоли C (C) или клавиши Break (Ctrl+C или Ctrl+Break).

Подпишитесь, чтобы узнать больше.

Получение общедоступного IP-адреса из командной строки

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

Настройте GPG для подписи коммитов Git (в Windows)

Настроить GPG для подписи коммитов Git непросто, особенно если вам нужна интеграция с интегрированной средой разработки, такой как VSCode или SourceTree. К счастью, есть простой набор шагов, которые вы можете предпринять. Установите необходимое программное обеспечениеВы можете пропустить любые шаги, которые вы уже выполнили, но в целом вам необходимо установить

Как восстановить пакеты NuGet из консоли, если Visual Studio отказывается

Иногда, особенно если я переключаю ветки в git, мои проекты Visual Studio загружаются без каких-либо зависимостей, на которые они полагаются (обычно в папке пакетов*). Указание Visual Studio восстановить все пакеты различными способами (включая полную пересборку) всегда кажется неудачным. Пакет Visual Studio

В этом руководстве вы:

В части 2 вы расширяете это приложение, добавляя больше проектов, изучая приемы отладки и ссылаясь на сторонние пакеты.

Предпосылки

У вас должна быть установлена ​​Visual Studio.

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.

Создать проект

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

В верхней строке меню выберите «Файл» > «Создать» > «Проект». (Можно также нажать Ctrl+Shift+N).

Добавить рабочую нагрузку (необязательно)

Вариант 1. Использование диалогового окна «Новый проект»

Выберите ссылку «Открыть установщик Visual Studio» на левой панели диалогового окна «Новый проект».

Вариант 2. Используйте строку меню "Инструменты"

Отмена в диалоговом окне "Новый проект" и в верхней строке меню выберите "Инструменты" > "Получить инструменты и функции".

Откройте Visual Studio и выберите "Создать новый проект" в окне "Пуск".

После применения фильтров языка, платформы и типа проекта выберите шаблон консольного приложения и нажмите кнопку Далее.

Если вы не видите шаблон консольного приложения, выберите Установить дополнительные инструменты и функции.

После этого нажмите кнопку «Изменить» в установщике Visual Studio. Вам может быть предложено сохранить вашу работу; если да, то делай так. Затем выберите Продолжить, чтобы установить рабочую нагрузку. Затем вернитесь к шагу 2 этой процедуры "Создание проекта".

В окне "Настройка нового проекта" введите Калькулятор в поле "Имя проекта". Затем нажмите «Далее».

Visual Studio открывает ваш новый проект, который включает код "Hello World" по умолчанию. Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне обозревателя решений, которое обычно находится в правой части Visual Studio.

Код "Hello World" по умолчанию вызывает метод WriteLine для отображения буквальной строки "Hello, World!" в окне консоли. Если вы нажмете F5, вы сможете запустить программу по умолчанию в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Нажмите любую клавишу, чтобы закрыть окно консоли.

Откройте Visual Studio и выберите "Создать новый проект" в окне "Пуск".

После применения фильтров языка, платформы и типа проекта выберите шаблон консольного приложения и нажмите кнопку Далее.

Если вы не видите шаблон консольного приложения, выберите Установить дополнительные инструменты и функции.

В окне "Настройка нового проекта" введите Калькулятор в поле "Имя проекта" и нажмите кнопку "Далее".

Visual Studio открывает ваш новый проект, который включает код "Hello World" по умолчанию.

Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне обозревателя решений, которое обычно находится в правой части Visual Studio.

Инструкция с одним кодом вызывает метод WriteLine для отображения буквальной строки "Hello, World!" в окне консоли. Если вы нажмете F5, вы сможете запустить программу по умолчанию в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Нажмите любую клавишу, чтобы закрыть окно консоли.

Создайте приложение

В этом разделе вы:

Изучите целочисленную математику

В редакторе кода удалите код "Hello World" по умолчанию.

В частности, удалите строку с текстом Console.WriteLine("Hello World!"); .

Вместо него введите следующий код:

Обратите внимание, что при этом функция IntelliSense в Visual Studio предлагает вам возможность автозаполнения записи.

Нажмите зеленую кнопку "Пуск" рядом с "Калькулятором", чтобы создать и запустить программу, или нажмите клавишу F5.

Открывается окно консоли, в котором отображается сумма 42 + 119, что равно 161.

(Необязательно) Вы можете изменить оператор, чтобы изменить результат. Например, вы можете изменить оператор + в int c = a + b; строка кода - для вычитания, * для умножения или / для деления. Затем, когда вы запускаете программу, результат тоже меняется.

Закройте окно консоли.

В обозревателе решений на правой панели выберите Program.cs, чтобы отобразить файл в редакторе кода

В редакторе кода замените код "Hello World" по умолчанию на Console.WriteLine("Hello World!"); .

Замените строку следующим кодом:

Если вы вводите код, функция IntelliSense Visual Studio предлагает вам возможность автозаполнения ввода.

Чтобы создать и запустить приложение, нажмите клавишу F5 или выберите зеленую стрелку рядом с названием "Калькулятор" на верхней панели инструментов.

Открывается окно консоли, в котором отображается сумма 42 + 119, что равно 161.

Закройте окно консоли.

При желании вы можете изменить оператор, чтобы изменить результат. Например, вы можете изменить оператор + в int c = a + b; строка кода - для вычитания, * для умножения или / для деления. Когда вы запускаете приложение, результат изменяется соответствующим образом.

Добавить код для создания калькулятора

Продолжите, добавив в проект более сложный набор кода калькулятора.

В редакторе кода замените весь код в program.cs следующим новым кодом:

Нажмите кнопку "Калькулятор" или нажмите F5, чтобы запустить приложение.

Откроется окно консоли.

В окне консоли следуйте инструкциям, чтобы сложить числа 42 и 119 вместе.

Ваше приложение должно выглядеть так, как показано на следующем снимке экрана:

В редакторе кода замените весь код в program.cs следующим новым кодом:

Нажмите кнопку "Калькулятор" или нажмите F5, чтобы запустить приложение.

Откроется окно консоли.

В окне консоли следуйте инструкциям, чтобы сложить числа 42 и 119 вместе.

Ваше приложение должно выглядеть так, как показано на следующем снимке экрана:

Добавить десятичные дроби

Теперь настройте код, чтобы добавить больше функциональности.

Текущий калькулятор принимает и возвращает только целые числа. Например, если вы запустите приложение и разделите число 42 на число 119, ваш результат будет равен нулю, что не является точным.

Чтобы исправить код для повышения точности за счет обработки десятичных знаков:

В program.cs в редакторе Visual Studio нажмите Ctrl+H, чтобы открыть элемент управления "Найти и заменить".

Введите int в элементе управления и введите float в поле «Заменить».

Выберите значки Учитывать регистр и Учитывать целое слово в элементе управления или нажмите клавиши ALT+C и ALT+W.

Выберите значок «Заменить все» или нажмите клавиши ALT+A, чтобы выполнить поиск и замену.

Снова запустите приложение-калькулятор и разделите число 42 на число 119.

Теперь приложение возвращает десятичное число вместо нуля.

Теперь приложение может выдавать десятичные результаты. Внесите еще несколько изменений в код, чтобы приложение могло также вычислять десятичные дроби.

Используйте элемент управления "Найти и заменить", чтобы изменить каждый экземпляр переменной с плавающей запятой на double и изменить каждый экземпляр метода Convert.ToInt32 на Convert.ToDouble .

Запустите приложение-калькулятор и разделите число 42,5 на число 119,75.

Теперь приложение принимает десятичные значения и возвращает в качестве результата более длинное десятичное число.

В разделе "Пересмотрите код" вы уменьшаете количество знаков после запятой в результатах.

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

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

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

Дополнительные сведения об отладчике и принципах его работы см. в статье Первый взгляд на отладчик Visual Studio.

Исправить ошибку "делить на ноль"

Если вы попытаетесь разделить число на ноль, консольное приложение может зависнуть, а затем отобразить ошибку в редакторе кода.

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

Чтобы изменить код для обработки этой ошибки:

В program.cs замените код между регистром "d": и комментарием, который гласит // Дождитесь ответа пользователя перед закрытием следующим кодом:

Между фигурными скобками добавьте следующий новый класс Calculator:

Также добавьте новый класс Program следующим образом:

Нажмите кнопку "Калькулятор" или нажмите F5, чтобы запустить приложение.

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

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

Закройте приложение

Если вы еще этого не сделали, закройте приложение "Калькулятор".

Закройте панель вывода в Visual Studio.

В Visual Studio нажмите Ctrl+S, чтобы сохранить приложение.

Добавить систему управления версиями Git

Теперь, когда вы создали приложение, вы можете добавить его в репозиторий Git. Visual Studio упрощает этот процесс благодаря инструментам Git, которые можно использовать непосредственно из IDE.

Чтобы связать свой код с Git, начните с создания нового репозитория Git, в котором находится ваш код:

В строке состояния в правом нижнем углу Visual Studio выберите Добавить в систему управления версиями, а затем выберите Git.

В диалоговом окне "Создать репозиторий Git" войдите в GitHub.

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

Независимо от того, является ли ваш репозиторий общедоступным или частным, лучше иметь удаленную резервную копию вашего кода, надежно хранящуюся на GitHub. Даже если вы не работаете в команде, удаленный репозиторий сделает ваш код доступным с любого компьютера.

Выберите «Создать и отправить».

После создания репозитория вы увидите сведения о состоянии в строке состояния.

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

Второй значок с карандашом показывает количество незафиксированных изменений в вашем коде. Вы можете выбрать этот значок, чтобы просмотреть эти изменения в окне Git Changes.

Чтобы узнать больше о том, как использовать Git с вашим приложением, см. документацию по контролю версий Visual Studio.

Проверка: код завершен

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

Читайте также: