Перейти к содержимому

Как сделать калькулятор в visual basic

  • автор:

visual basic калькулятор

По просьбе DenJoy» я сегодня мы будем делать калькулятор. Это наверно самое простое, что может быть в Basic» е =), т.к. там используются обычные знаки. Конечно это все легко, но я понимаю DenJoy , когда он не знает, как это делать. Я сам очень недавно был таким. Все хватит ! Приступаем к программированию. Для начала посмотрим вид калькулятора, он должен быть примерно такой:

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

1. Два текстовых поля с именами Text1 и Text2 . У них свойство Enabled поставьте равным False , чтобы их нельзя было изменять.

2. Пятнадцать кнопок с их стандартными номерами. Но предупреждаю . У меня они

идут не попорядку, так что лучшескачайте мой калькулятор с исходниками, чтобы посмотреть какой номер у каждой кнопки!

Теперь пишем код:

» Вводим две переменные, для присвоения им значений, которые мы введем на калькуляторе
Dim a As String
Dim b As String

Private Sub Command1_Click()
» При нажа на кнопку с цифрой «1», в текстовом поле появится «1»
Text1.Text = Text1.Text & «1»
End Sub

Private Sub Command11_Click()

» После нажатия на «*», присваиваем переменной » a » число из текстового поля №1

» В маленькое текстовое поле, пишем знак «*»
Text2.Text = «*»

» Отчищаем тексотовое поле №1
Text1.Text = «»
End Sub

Private Sub Command12_Click()

» При нажатии на «=», присваиваем переменной » b » второе значение, но тоже из текстового поля №1
b = Text1.Text

» Смотрим, какой знак в текстовом поле №2 и делаем нужное действие
If Text2.Text = «*» Then
Text1.Text = a * b
End If
If
Text2.Text = «/» Then
Text1.Text = a / b
End If
If
Text2.Text = «-» Then
Text1.Text = a — b
End If
End Sub

Private Sub Command13_Click()

» Отчищаем все текстовые поля
Text1.Text = «»
Text2.Text = «»
End Sub

Private Sub Command14_Click()
» После нажатия на «-«, присваиваем переменной » a » число из текстового поля №1

a = Text1.Text
Text2.Text = «-«
Text1.Text = «»
End Sub

Private Sub Command15_Click()
» После нажатия на » / «, присваиваем переменной » a » число из текстового поля №1

a = Text1.Text
Text2.Text = «/»
Text1.Text = «»
End Sub

» Все что ниже можно откоментировать одинаково: при нажатии на кнопку с определенной цифрой, она отабражается в текстовом поле №1

Private Sub Command2_Click()
Text1.Text = Text1.Text & «5»
End Sub

Private Sub Command3_Click()
Text1.Text = Text1.Text & «4»
End Sub

Private Sub Command4_Click()
Text1.Text = Text1.Text & «3»
End Sub

Private Sub Command5_Click()
Text1.Text = Text1.Text & «2»
End Sub

Private Sub Command6_Click()
Text1.Text = Text1.Text & «6»
End Sub

Private Sub Command7_Click()
Text1.Text = Text1.Text & «0»
End Sub

Private Sub Command8_Click()
Text1.Text = Text1.Text & «9»
End Sub

Private Sub Command9_Click()
Text1.Text = Text1.Text & «8»
End Sub

Private Sub Command10_Click()
Text1.Text = Text1.Text & «7»
End Sub

Вот, в принципе, и все. Калькулятор готов к использованию. Я сделал его минут за 5-7. Так что можете поэкспериментировать, даже если у вас очень мало времени =). Еще раз настоятельно рекомендаюскачать мой калькулятор, чтобы знать какая кнопка, что обозначает.

Как сделать калькулятор в visual basic

tele2

life

Лабораторная работа по Microsoft Visual Basic

Проект «Инженерный калькулятор»

1. Запустите программу Microsoft Visual Basic [Пуск — Все программы — Microsoft Visual Basic 6.0 — Microsoft Visual Basic 6.0]. Откроется окно программы:

На открывшейся диалоговой панели выбрать тип создаваемого проекта STANDART.EXE и нажать кнопку открыть. Появиться следующее окно интегрированной среды разработки Visual Basic:

  1. Поместите на форму три текстовых поля (TextBox) и пять кнопок (CommandButton). Поменять следующие свойства:
    1. Первому текстовому полю присвоить имя txt1 (в свойствах пункт Name) и убрать надпись внутри текстового поля (в свойствах очистить содержимое пункта Text). Для свойства Alignment установите значение Right Justufy (выравнивание по правому краю). Это поле отвечает за первое введённое число.
    2. Второму текстовому полю присвоить имя txt2 (в свойствах пункт Name) и убрать надпись внутри текстового поля (в свойствах очистить содержимое пункта Text). Для свойства Alignment установите значение Right Justufy (выравнивание по правому краю). Это поле отвечает за второе введённое число.
    3. Третьему текстовому полю присвоить имя txt3 (в свойствах пункт Name) и убрать надпись внутри текстового поля (в свойствах очистить содержимое пункта Text). Для свойства Alignment установите значение Right Justufy (выравнивание по правому краю). Это поле отвечает за выведенный результат.
    4. Первой кнопке присвоить имя cmdPlus (в свойствах пункт Name) и поменять надпись на кнопке (в свойствах пункт Caption ввести +). Это кнопка отвечает за сложение чисел.
    5. Второй кнопке присвоить имя cmdMinus (в свойствах пункт Name) и поменять надпись на кнопке (в свойствах пункт Caption ввести -). Это кнопка отвечает за вычитание чисел.
    6. Третьей кнопке присвоить имя cmdUmn (в свойствах пункт Name) и поменять надпись на кнопке (в свойствах пункт Caption ввести *). Это кнопка отвечает за умножение чисел.
    7. Четвертой кнопке присвоить имя cmdDelen (в свойствах пункт Name) и поменять надпись на кнопке (в свойствах пункт Caption ввести /). Это кнопка отвечает за деление чисел.
    8. Пятой кнопке присвоить имя cmdExit (в свойствах пункт Name) и поменять надпись на кнопке (в свойствах пункт Caption ввести ВЫХОД). Это кнопка отвечает за завершение работы программы.

    1. При двойном нажатии на кнопку CmdPlus открывается событийная процедура сложения CmdPlus_Сlic, которая должна изменять значение свойства Text текстового поля txt3 так, чтобы оно являлось суммой числовых значений свойства Text текстовых полей txt1 и txt2. Для преобразования строковых значений, вводимых в текстовые поля, в десятичные числа, воспользуемся функцией Val. Код событийной процедуры будет следующий:

    txt3.Text = Val (txt1.Text) + Val (txt2.Text)

    1. Событийные процедуры вычитания, умножения и деления создаются аналогично:

    txt3.Text = Val (txt1.Text) — Val (txt2.Text) //для кнопки cmdMinus

    txt3.Text = Val (txt1.Text) * Val (txt2.Text) //для кнопки cmdUmn

    txt3.Text = Val (txt1.Text) / Val (txt2.Text) //для кнопки cmdDelen

    1. Обработаем событийную процедуру на выход. Нажмем два раза на кнопке ВЫХОД и наберем следующий код:

    1. Запустите свой проект и проверьте, чтобы программа работала корректно. Для этого вверху программы нажмите на кнопочку play

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

    1. Продолжаем работу. Добавьте на форму шесть кнопок cmdSin, cmdCos, cmdTan, cmdSqr, cmdSt и cmdLog. Это кнопки которые отвечают соответственно за вычисление синуса, косинуса, тангенса, квадратного корня, возведения в степень и вычисление натурального логарифма. (Кто забыл где и как меняются надписи и имена кнопок см пункт 2).

    1. Для каждой из этих кнопок создайте событийные процедуры, реализующие вычисление соответствующих функций: синуса, косинуса, тангенса, квадратного корня, возведения в степень и натурального логарифма.
    2. Например,
      1. для возведения в степень событийная процедура cmdSt_Click() примет вид:

      txt3.Text = Val(txt1.Text) ^ Val(txt2.Text)

      1. для вычисления косинуса событийная процедура cmdCos_Click() примет вид:
      1. для вычисления синуса событийная процедура cmdSin_Click() примет вид:
      1. для вычисления тангенса событийная процедура cmdTan_Click() примет вид:
      1. для вычисления квадратного корня событийная процедура cmdSqr_Click() примет вид:
      1. для вычисления логарифма событийная процедура cmdLog_Click() примет вид:
      1. Проверить работу проекта.
      2. Продолжаем работу. Добавим новые опции в наш калькулятор. Необходимо, чтобы появилась возможность переводить целые числа из десятичной системы счисления в восьмеричную и обратно – из восьмеричной и шестнадцатеричной в десятичную.

      Для этого добавим на форму три текстовых поля (txtDec, txtOct, txtHex) для ввода и вывода чисел, четыре кнопки (cmdDecOct, cmdDecHex, cmdOctDec, cmdHexDec) для создания событийных процедур, реализующих перевод чисел, и три метки (Label) для вывода поясняющих надписей над текстовыми полями. Получается следующее:

      1. Создайте событийную процедуру cmdOctDec_Click(), реализующую перевод чисел из восьмеричной системы в десятичную. Для этого к вводимым в текстовые поля txtOct и txtHex в строковой форме числам добавим восьмеричную и шестнадцатеричную приставки “&O” или “&H” с помощью операции конкатенации (соединения) строк. Полученное восьмеричное или шестнадцатеричное число в строковой форме переведем в десятичную числовую форму с помощью функции Val:

      txtDec.Text = Val («&O»+txtOct.Text)

      1. Создайте событийную процедуру cmdHexDec_Click(), реализующую перевод чисел из шестнадцатеричной системы в десятичную^

      txtDec.Text = Val(«&H» + txtHex.Text)

      1. Введенные в текстовое поле txtDec числа будем переводить сначала из строковой формы в числовую с помощью функции Val, а затем из десятичной числовой в строковую восьмеричную или шестнадцатеричную с помощью функций Oct или Hex.
      2. Создать событийную процедуру cmdDecHex_Click(), реализующую перевод чисел из десятичной системы в шестнадцатеричную:
      1. Создать событийную процедуру cmdDecOct_Click(), реализующую перевод чисел из десятичной системы в восьмеричную:
      1. Сохраните свой проект под названием «Инженерный калькулятор». Для этого выбрать [Файл – Сохранить проект как].

      Исходный код калькулятора на языке Visual Basic

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

      Ну, давайте начнем, конечно же, у Вас должна уже быть установлена среда программирования Microsoft Visual Basic v 6.0. Запускаем среду, перед Вами окно выбора проекта, выбираем «standard.exe» и нажимаем открыть. Сейчас перед вами форма нашей с Вами программы и давайте ее наполнять.

      Для начала сделайте вот что, справа в окне свойств найдите такую строку «StartUpPosition» и выберите там 1-centerowner, это для того чтобы наша программа запускалась по центру нашего монитора.

      Далее давайте наполним внешний интерфейс, для этого уже слева в окне выбора объектов выберите «CommandButton», добавьте его на форму, и сделайте это 4 раза, т.е. добавьте 4 кнопки и расположите их слева направо, итого должно получиться так: Command1, Command2, Command3, Command4. Теперь давайте мы зададим им название, делается это снова в окне свойств (справа) строка Caption. Для этого щелкните по кнопке Command1 (она выделится) и в строке Caption окна свойств сотрите Command1 и напишите «сложение», потом щелкните (выделите) Command2 и напишите умножение, далее Command3 будет у нас деление, а Command4 вычитание.

      С кнопками мы с Вами разобрались, теперь добавим 3 текстовых поля, делается также в окне добавления объекта (слева), выберите TextBox и добавьте 3 штуки, а расположите их так: Text1 и Text2 сверху, а Text3 чуть ниже. Теперь в окне свойств (которое справа) изменим, значение поля Text, т.е. как и раньше с кнопками, выбирайте по очереди каждое текстовое поле и в окне свойств меняйте значение строки text на, да просто сотрите, что там есть и ничего не пишите. Значение этого свойства отображается по умолчанию в текстовых полях.

      Пример исходного кода программы калькулятор

      А теперь осталось добавить сам код программы, для этого нажмите 2 раза в пустом месте формы и у Вас появится что-то вроде этого:

      Private Sub Form_Load() End Sub

      Вы просто сотрите это и вставьте следующее:

      Private Sub Command1_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a + b End Sub Private Sub Command2_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a * b End Sub Private Sub Command3_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a / b End Sub Private Sub Command4_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a - b End Sub

      Вот такая незамысловатая программа, теперь ее нужно проверить, в верхнем меню найдите такую кнопочку (иконку) как «start» и нажмите, если Вы все сделали правильно, то у Вас запустится программа, где будет 3 текстовых поля и 4 кнопки. Вы можете в верхние 2 поля вставить, например: в правое 50, а в левое 10 и можете проверить действие программы, нажимая на все кнопки, только учтите, она выполняет все действия только с целыми числами.

      Когда мы все проверили ее можно скомпилировать в exe файл, для этого нажмите меню «файл» «Компилировать проект», потом просто укажите путь, куда его сохранить. После компиляции запустите нашу с Вами программу, и можете пробовать посчитать некоторые числа. В этой программе мы не прописывали никаких условий, поэтому строго соблюдайте, чтобы в текстовых полях были только целые числа. Вот мы и написали первую программу на Visual Basic в среде программирования Microsoft Visual Basic v 6.0. В следующих уроках мы уже будем писать программы немного посложней.

      Создание консольного приложения «Калькулятор» на C++

      Обычно программист C++ начинает с создания приложения «Hello, world!», которое запускается из командной строки. Это то, что вы сначала создадите в Visual Studio в этой статье, а затем мы перейдем к чему-то более сложному: приложению калькулятора.

      Предварительные требования

      • Установите и запустите на своем компьютере Visual Studio с рабочей нагрузкой Разработка классических приложений на C++ . Если установка еще не выполнена, см. статью Установка поддержки C++ в Visual Studio.
      • В этом руководстве демонстрируется функция «Изменить и продолжить», которая позволяет вносить изменения в код во время работы приложения. Чтобы убедиться, что функция «Изменить и продолжить» может работать в этой статье, в меню main выберите Сервис>Параметры>Отладка>Общие и убедитесь, что установлен флажок Требовать точное соответствие исходных файлов исходной версии.

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

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

      1. Если вы запустили Visual Studio, откроется диалоговое окно Запуск Visual Studio. Выберите Создать проект, чтобы приступить к работе. Снимок экрана: начальное диалоговое окно Visual Studio 2022 с такими параметрами, как создание нового проекта, открытие существующего проекта и т. д.Или в строке меню Visual Studio последовательно выберите Файл>Создать>Проект. Откроется окно Создание проекта.
      2. В списке шаблонов проектов выберите Консольное приложение и нажмите Далее. Снимок экрана: диалоговое окно

      Важно! Убедитесь, что вы выбрали версию C++ для шаблона Консольное приложение. Этот шаблон содержит теги C++ , Windows и Консоль, а в углу значка есть «++».

      Снимок экрана: диалоговое окно

      В диалоговом окне Настроить новый проект выберите поле ввода Имя проекта, назовите новый проект CalculatorTutorial и нажмите Создать. Будет создано пустое консольное приложение Windows на C++. Консольные приложения используют окно консоли Windows для отображения выходных данных и приема данных, вводимых пользователем. В Visual Studio откроется окно редактора с созданным кодом.

      // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include int main() < std::cout // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file 

      Проверка сборки и выполнения нового приложения

      Шаблон для нового консольного приложения Windows создает простое приложение Hello World на C++. На этом этапе вы можете видеть, как Visual Studio создает и запускает созданные вами приложения прямо из интегрированной среды разработки.

      1. Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки. Снимок экрана: окно вывода Visual Studio, в котором отображается результат сборки.
      2. Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки. Снимок экрана: консоль отладки Visual Studio, на которой отображаются выходные данные Открывается окно консоли, и запускается ваше приложение. При запуске консольного приложения в Visual Studio система выполняет код, а затем выводит сообщение «Нажмите любую клавишу, чтобы закрыть это окно. . .», чтобы вы могли просмотреть выходные данные. Поздравляем! Вы создали свое первое консольное приложение «Hello, world!» в Visual Studio!
      3. Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в редактор Visual Studio.

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

      Изменение кода

      Теперь давайте превратим код в этом шаблоне в приложение калькулятора.

        Замените содержимое CalculatorTutorial.cpp файла следующим кодом, чтобы оно соответствовало этому примеру:

      // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include using namespace std; int main() < cout // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file 
      • Операторы #include позволяют ссылаться на код, расположенный в других файлах. Иногда отображается имя файла, заключенное в угловые скобки (<>), а в других случаях — в кавычки (» «). В общем случае угловые скобки используются при ссылке на стандартную библиотеку C++, а кавычки — для других файлов.
      • Строка using namespace std; сообщает компилятору ожидать данные от стандартной библиотеки C++ для использования в этом файле. Без этой строки каждой ключевое слово из библиотеки необходимо было бы указать std:: , чтобы обозначить ее область. Например, без этой строки каждую ссылку на cout потребовалось бы записывать в виде std::cout . Оператор using добавляется, чтобы сделать код более чистым и понятным.
      • Ключевое слово cout используется для вывода сведений в стандартный поток вывода в C++. Оператор указывает компилятору отправить все содержимое справа от него в стандартный поток вывода.
      • Ключевое слово endl похожа на клавишу ВВОД; она заканчивает строку и перемещает курсор в следующую строку. Рекомендуется поместить \n внутри строки (содержащейся в «» ), чтобы сделать то же самое, так как endl всегда очищает буфер, что может повредить производительности программы. Но так как это очень маленькое приложение, endl вместо него используется для улучшения удобочитаемости.
      • Все операторы C++ должны заканчиваться точкой с запятой, а все приложения C++ — содержать функцию main() . Именно ее программа выполняет при запуске. Для использования весь код должен быть доступен из main() .

      Добавление кода для выполнения математических операций

      Пора добавить математическую логику.

      Добавление класса Calculator

      1. В меню Проект выберите команду Добавить класс. В поле ввода Имя класса введите Calculator. Нажмите кнопку ОК. В проект будут добавлены два новых файла. Чтобы сохранить сразу все измененные файлы, нажмите клавиши CTRL+SHIFT+S. Это сочетание клавиш для команды Файл>Сохранить все. Кроме того, есть кнопка Сохранить все на панели инструментов. Она имеет вид значка с двумя дискетами рядом с кнопкой Сохранить. В общем случае рекомендуется регулярно нажимать кнопку Сохранить все, чтобы не пропустить никакие файлы при сохранении. Снимок экрана: слово Класс подобен схеме для объекта, который выполняет какие-либо действия. В этом случае мы определяем калькулятор и особенности его работы. Мастер добавления класса , который вы использовали ранее, создал .h файлы и .cpp с тем же именем, что и класс. Вы можете просмотреть полный список файлов проекта в окне обозревателя решений, отображаемом в боковой части окна IDE. Если окно не отображается, его можно открыть из строки меню, выбрав Вид>Обозреватель решений. Снимок экрана: окно обозревателя решений в Visual Studio 2019 с проектом Теперь у вас в редакторе должно быть открыто три вкладки: CalculatorTutorial.cpp , Calculator.h и Calculator.cpp . Если вы случайно закроете одну из них, то можете повторно открыть эту вкладку, дважды щелкнув ее в окне обозревателя решений.
      2. Замените содержимое Calculator.h следующим кодом, чтобы файл выглядел следующим образом:
      #pragma once class Calculator < public: double Calculate(double x, char oper, double y); >; 
      • Этот код объявляет новую функцию с именем Calculate , которая используется для выполнения математических операций сложения, вычитания, умножения и деления.
      • Код C++ упорядочен по файлам заголовков ( .h ) и исходным файлам ( .cpp ). Различные компиляторы поддерживают несколько других расширений имени файла, но это основные, о которых вам нужно знать. Функции и переменные обычно объявляются, то есть получают имя и тип, в файлах заголовка, и реализуются, то есть получают определение, в исходных файлах. Для доступа к коду, определенному в другом файле, можно использовать #include «filename.h» , где filename.h — это имя файла, объявляющего переменные или функции, которые вы хотите использовать.
      • Рекомендуется упорядочивать код по различным файлам в зависимости от его назначения, чтобы позднее было проще найти нужный код. В данном случае мы определяем класс Calculator отдельно от файла, содержащего функцию main() , но планируем ссылаться на класс Calculator в main() .
    3. В разделе Calculate отображается зеленая волнистая волнистая линию, так как мы не определили функцию Calculate .cpp в файле. Наведите указатель мыши на Calculate , щелкните стрелку вниз на появившемся отвертке и выберите Создать определение calculate в Calculator.cpp . Снимок экрана: Visual Studio с раскрывающимся списком подсказок, в котором выделен параметр Отображается всплывающее окно, сообщающее об изменении кода, внесенном в другом файле. Код был добавлен в Calculator.cpp . Снимок экрана: всплывающее окно с определением Calculate.Сейчас он возвращает просто 0.0. Давайте изменим это. Нажмите клавишу ESC, чтобы закрыть всплывающее окно.
    4. Переключитесь на файл Calculator.cpp в окне редактора. Calculator() Удалите разделы и ~Calculator() (как это было в файле) и добавьте следующий код в .h Calculate() :

      #include "Calculator.h" double Calculator::Calculate(double x, char oper, double y) < switch(oper) < case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; default: return 0.0; >> 
      • Функция Calculate использует число, оператор и второе число, а затем выполняет запрошенную операцию над этими числами.
      • Оператор switch проверяет, какой оператор был предоставлен, и выполняет только вариант (case), соответствующий этой операции. Вариант default: является резервным на тот случай, если пользователь вводит неприемлемый оператор, чтобы программа не прервала работу. В общем случае лучше обрабатывать некорректный ввод данных пользователем более элегантным способом, но это выходит за рамки данного руководства.
      • Ключевое слово double обозначает тип числа, который поддерживает десятичные числа. Таким образом, калькулятор может выполнять математические операции с десятичными и целыми числами. Функция Calculate должна всегда возвращать такое число из-за элемента double в самом начале кода (обозначает тип возвращаемого значения функции), поэтому возвращается 0.0 даже в случае default.
      • Файл .h объявляет прототип функции, который заранее сообщает компилятору, какие параметры ему требуются и какой тип возвращаемого значения следует ожидать от него. Файл .cpp содержит все сведения о реализации функции.

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

      Вызов Calculator функций-членов класса

      1. Теперь давайте изменим функцию main в CalculatorTutorial.cpp :
      // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include #include "Calculator.h" using namespace std; int main() < double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout > x >> oper >> y; result = c.Calculate(x, oper, y); cout return 0; > 
      • Так как программы C++ всегда запускаются с функции main() , нам нужно вызвать из нее другой, для чего нужен оператор #include .
      • Объявлены начальные переменные x , y , oper и result для хранения, соответственно, первого числа, второго числа, оператора и окончательного результата. Рекомендуется всегда присваивать им некоторые начальные значения, чтобы избежать неопределенного поведения. Это мы здесь и делаем.
      • Строка Calculator c; объявляет объект «c» в качестве экземпляра класса Calculator . Сам класс является лишь схемой для описания работы калькуляторов, а объект — это конкретный калькулятор, который выполняет вычисления.
      • Оператор while (true) является циклом. Код внутри этого цикла продолжает выполняться снова и снова, пока выполняется условие в () . Так как условие просто указано как true , оно всегда выполняется, поэтому цикл выполняется бесконечно. Чтобы закрыть программу, пользователю нужно вручную закрыть окно консоли. В противном случае программа будет постоянно ожидать новые входные данные.
      • Ключевое слово cin используется для получения входных данных от пользователя. Этот входной поток способен обработать строку текста, введенного в окне консоли, и поместить ее внутрь каждой из перечисленных переменных в указанном порядке, при условии, что введенные пользователем данные соответствуют требуемой спецификации. Вы можете изменить эту строку, чтобы принимать различные типы входных данных, например более двух чисел, хотя Calculate() для обработки этой функции также потребуется обновить.
      • Выражение c.Calculate(x, oper, y); вызывает определенную ранее функцию Calculate и предоставляет введенные входные значения. Затем она возвращает число, сохраняемое в result .
      • Наконец, в консоль выводится result , благодаря чему пользователь видит результат вычисления.

      Повторная сборка и проверка кода

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

      Снимок экрана: командная строка с выходными данными:

      1. Нажмите клавиши CTRL+F5, чтобы перестроить и запустить приложение.
      2. Введите 5+5 и нажмите клавишу ВВОД. Убедитесь, что выводится результат 10.

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

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

      Запуск приложения в отладчике

      1. Установите точку останова на строке result = c.Calculate(x, oper, y); . Чтобы задать точку останова, щелкните рядом со строкой серую вертикальную панель, идущую вдоль левой части окна редактора. Появится красная точка. Снимок экрана Visual Studio с красной точкой, представляющей точку останова слева от строки: result = c.Calculate(x, oper, y).Теперь при отладке программа всегда приостанавливает выполнение на этой строке. Мы уже имеем примерное представление о том, что в простых случаях программа работает. Так как нам не нужно приостанавливать выполнение при каждом запуске, создадим условную точку останова.
      2. Щелкните правой кнопкой мыши красную точку, обозначающую точку останова, и выберите команду Условия. В поле ввода для условия введите (y == 0) && (oper == ‘/’) . По завершении нажмите кнопку Закрыть , чтобы сохранить условие точки останова. Снимок экрана: всплывающее окно Теперь выполнение приостанавливается в точке останова, в частности при попытке деления на 0.
      3. Чтобы отладить программу, нажмите клавишу F5 или выберите Локальный отладчик Windows — кнопку панели инструментов со значком зеленой стрелки. Если ввести в консольном приложении нечто вроде «5 — 0», программа работает как обычно и продолжает выполнение. Но если ввести «10 / 0», она приостанавливает выполнение в точке останова. Вы можете ввести любое число пробелов между оператором и числами; функция cin достаточно интеллектуальна для того, чтобы правильно проанализировать входные данные. Снимок экрана Visual Studio: программа, приостановленная в условной точке останова в строке: result = c.Calculate(x, oper, y);.

      Полезные окна в отладчике

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

      Снимок экрана: окно

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

      Снимок экрана: подсказка со значением переменной oper, выраженным символом

      Продолжение отладки

      Снимок экрана: консоль отладки Visual Studio с результатом деления на ноль, равным inf.

      1. Желтая стрелка слева показывает текущую точку выполнения. Текущая строка вызывает Calculate , поэтому нажмите клавишу F11, чтобы выполнить Шаг с заходом для этой функции. Теперь вы выполняете код в теле Calculate функции. Будьте осторожны с шагом с заходом , так как он выполняет шаги во всех функциях в строке, в которую вы находитесь, включая стандартные функции библиотеки. Можно перейти к стандартной библиотеке, но вы можете быть более заинтересованы в том, чтобы сосредоточиться на коде, а не на коде библиотеки.
      2. Теперь, когда точка выполнения находится в начале функции Calculate , нажмите клавишу F10 для перехода на следующую строку в рамках выполнения программы. При нажатии клавиши F10 активируется функция Шаг с обходом. Шаг с обходом можно использовать для перемещения по строкам, не вдаваясь в подробности того, что происходит в каждой части строки. Как правило, вместо step Into следует использовать шаг с обходом, если вы не хотите более глубоко изучить код, который вызывается из другого места (как это было для достижения основного Calculate текста ).
      3. Продолжайте использовать клавишу F10, чтобы выполнять Шаг с обходом для каждой строки, пока не вернетесь к функции main() в другом файле, и остановитесь на строке cout . Похоже, программа работает правильно — принимает первое число и делит его на второе. В строке cout наведите указатель мыши на переменную result или взгляните на result в окне Видимые. Его значение inf , которое выглядит неправильно, поэтому давайте исправим его. В строке cout просто выводится любое значение, хранящееся в result . Поэтому при продвижении еще на один шаг с помощью клавиши F10 в окне консоли отображается следующее: Причина такого результата в том, что деление на ноль является неопределенным, поэтому у программы нет числового ответа на запрошенную операцию.

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

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

        Внесите следующие изменения в CalculatorTutorial.cpp . (Вы можете оставить программу запущенной во время редактирования благодаря функции отладчика Под названием «Изменить и продолжить«). Изменение заключается в добавлении следующей if cin >> x >> oper >> y; инструкции в проверка деления на ноль и вывода сообщения пользователю, если это произойдет. В противном случае результат выводится.

      // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include #include "Calculator.h" using namespace std; int main() < double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout > x >> oper >> y; if (oper == '/' && y == 0) < cout else < result = c.Calculate(x, oper, y); >cout return 0; > 

      Снимок экрана: консоль отладки Visual Studio с окончательным результатом после изменений.

      Теперь нажмите клавишу F5 один раз. При этом выполнение программы продолжается вплоть до приостановки для запроса данных, вводимых пользователем. Снова введите 10 / 0 . Теперь выводится более информативное сообщение. У пользователя запрашиваются дополнительные входные данные, и программа продолжает выполнение в обычном режиме.

      В окне консоли отображаются две строки: «10 / 0 Результат: inf» и «10 / 0 Исключение: деление на 0».

      Примечание При редактировании кода в режиме отладки существует риск того, что код устареет. Это происходит, когда отладчик продолжает выполнять старый код, не учитывающий внесенные вами изменения. В отладчике отображается диалоговое окно с уведомлением о том, что это произойдет. В некоторых случаях может потребоваться нажать клавишу F5, чтобы обновить выполняемый код. В частности, если вы вносите изменения внутри функции, когда точка выполнения находится внутри этой функции, необходимо выйти из функции, а затем снова в нее, чтобы получить обновленный код. Если по какой-либо причине это не работает и вы видите сообщение об ошибке, можно остановить отладку, щелкнув красный квадрат на панели инструментов под меню в верхней части интегрированной среды разработки, а затем перезапустить отладку, нажав клавишу F5 или выбрав зеленую стрелку «воспроизведения» рядом с кнопкой остановки на панели инструментов. Еще одна причина, по которой изменение и продолжение могут завершиться ошибкой, заключается в том, что отображается сообщение «Требуется, чтобы исходные файлы точно соответствовали исходной версии в разделе Debug-Options-General>> необходимо включить. » Чтобы устранить эту проблему, в меню main выберите Сервис>Параметры>Отладка>Общие и убедитесь, что установлен флажок Требовать точное соответствие исходных файлов исходной версии.

      • Клавиша F5 (или команда Отладка>Запустить отладку) запускает сеанс отладки, если он еще не активен, и выполняет программу до тех пор, пока не будет встречена точка останова либо программе не потребуются вводимые пользователем данные. Если вводимые пользователем данные не требуются и точка останова отсутствует, программа завершает работу, а окно консоли автоматически закрывается после завершения выполнения программы. Если у вас есть что-то вроде программы «Hello World», нажмите клавиши CTRL+F5 или установите точку останова перед нажатием клавиши F5, чтобы сохранить окно открытым.
      • Сочетание клавиш CTRL+F5 (или команда Отладка>Запуск без отладки) запускает приложение без перехода в режим отладки. Это немного быстрее отладки, а окно консоли остается открытым после завершения выполнения программы.
      • Клавиша F10 (соответствующая возможности Шаг с обходом) позволяет выполнять построчную итерацию по коду, а также визуализировать выполнение кода и значения переменных на каждом шаге выполнения.
      • Клавиша F11 (соответствующая возможности Шаг с заходом) работает аналогично возможности Шаг с обходом, за исключением того, что заходит в любые функции, вызываемые в строке выполнения. Например, если в выполняемой строке вызывается функция, при нажатии клавиши F11 указатель перемещается в тело функции, чтобы вы могли проследить выполнение кода функции, прежде чем вернуться на исходную строку. При нажатии клавиши F10 выполняется шаг с обходом по вызову функции и простой переход на следующую строку. Вызов функции все равно выполняется, но программа не приостанавливается, чтобы показать вам, что именно она делает.

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

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

      Добавление системы управления исходным кодом Git

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

      Git — это наиболее широко используемая современная система контроля версий, поэтому, независимо от того, являетесь ли вы профессиональным разработчиком или учитесь программировать, Git может быть для вас весьма полезным. Если вы новичок в Git, вы можете начать с сайта https://git-scm.com/. Там вы найдете памятки, популярную электронную книгу и видеоматериалы по основам GIT.

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

      1. В строке состояния в правом нижнем углу Visual Studio нажмите Добавить в систему управления версиями и выберите Git. Снимок экрана кнопок управления исходным кодом Git под панелью обозревателя решений с выделенной кнопкой
      2. В диалоговом окне Создать репозиторий Git войдите в GitHub. Снимок экрана: диалоговое окно Имя репозитория заполняется автоматически в зависимости от расположения вашей папки. По умолчанию ваш новый репозиторий является частным. Это означает, что только вы можете получить к нему доступ.

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

      Снимок экрана: строка состояния репозитория, расположенная под панелью обозревателя решений Visual Studio, в которой отображается имя ветви и количество невыполненных изменений.

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

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

    Готовое приложение

    Поздравляем! Вы завершили написание кода для приложения калькулятора, а также выполнили его сборку и отладку и добавили его в репозиторий — и все это в Visual Studio.

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

    Обычно программист C++ начинает с создания приложения «Hello, world!», которое запускается из командной строки. Это то, что вы создадите в Visual Studio в этой статье, а затем мы перейдем к чему-то более сложному: приложению калькулятора.

    Предварительные требования

    • Установите и запустите на своем компьютере Visual Studio с рабочей нагрузкой Разработка классических приложений на C++ . Если установка еще не выполнена, см. статью Установка поддержки C++ в Visual Studio.

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

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

    Снимок экрана: диалоговое окно

    1. В строке меню Visual Studio последовательно выберите Файл>Создать>Проект. Открывается окно Новый проект.
    2. На боковой панели слева выберите Visual C++ . В центральной области выберите Консольное приложение Windows.
    3. В поле ввода Имя внизу введите имя нового проекта CalculatorTutorial, а затем нажмите кнопку ОК. Будет создано пустое консольное приложение Windows на C++. Консольные приложения используют окно консоли Windows для отображения выходных данных и приема данных, вводимых пользователем. В Visual Studio откроется окно редактора с созданным кодом.

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include int main() < std::cout // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file 

    Проверка сборки и выполнения нового приложения

    Шаблон для нового консольного приложения Windows создает простое приложение «Hello World» на C++. На этом этапе вы можете видеть, как Visual Studio создает и запускает созданные вами приложения прямо из интегрированной среды разработки.

    1. Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки. Снимок экрана: окно вывода Visual Studio, сообщающее о выполнении сборки.
    2. Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки. Снимок экрана: консоль отладки Visual Studio с выходными данными Открывается окно консоли, и запускается ваше приложение. При запуске консольного приложения в Visual Studio система выполняет код, а затем выводит сообщение «Нажмите любую клавишу, чтобы продолжить. . .», чтобы вы могли просмотреть выходные данные. Поздравляем! Вы создали свое первое консольное приложение «Hello, world!» в Visual Studio!
    3. Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в редактор Visual Studio.

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

    Изменение кода

    Теперь давайте превратим код в этом шаблоне в приложение калькулятора.

      Замените содержимое CalculatorTutorial.cpp файла следующим кодом, чтобы оно соответствовало этому примеру:

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include using namespace std; int main() < cout // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file 
    • Операторы #include позволяют ссылаться на код, расположенный в других файлах. Иногда отображается имя файла, заключенное в угловые скобки (<>), а в других случаях — в кавычки (» «). В общем случае угловые скобки используются при ссылке на стандартную библиотеку C++, а кавычки — для других файлов.
    • Строка using namespace std; сообщает компилятору ожидать данные от стандартной библиотеки C++ для использования в этом файле. Без этой строки каждому ключевое слово из библиотеки необходимо было бы предварять std:: , чтобы обозначить ее область. Например, без этой строки каждую ссылку на cout потребовалось бы записывать в виде std::cout . Оператор using добавляется, чтобы сделать код более чистым и понятным.
    • Ключевое слово cout используется для вывода сведений в стандартный поток вывода в C++. Оператор * указывает компилятору отправить все, что находится справа от него, в стандартные выходные данные.
    • Ключевое слово endl похожа на клавишу ВВОД. Она заканчивает строку и перемещает курсор на следующую строку. Рекомендуется поместить \n внутри строки (содержащейся в «» ), чтобы сделать то же самое, так как endl всегда очищает буфер и может повредить производительность программы. Но так как это очень маленькое приложение, endl вместо него используется для повышения удобочитаемости.
    • Все операторы C++ должны заканчиваться точкой с запятой, а все приложения C++ — содержать функцию main() . Именно ее программа выполняет при запуске. Для использования весь код должен быть доступен из main() .

    Видео, в котором показано действие «Отладка > Начать без отладки». Появляется диалоговое окно с запросом на сборку, поскольку проект устарел. Установлен флажок «Больше не показывать это окно». Выбран вариант «Да» для запуска сборки проекта, выполняется сборка проекта калькулятора, который затем запускается в окне консоли Windows.

    Добавление кода для выполнения математических операций

    Пора добавить математическую логику.

    Добавление класса Calculator

    Снимок экрана: окно обозревателя решений с проектом

    1. В меню Проект выберите команду Добавить класс. В поле ввода Имя класса введите Calculator. Нажмите кнопку ОК. В проект будут добавлены два новых файла. Чтобы сохранить сразу все измененные файлы, нажмите клавиши CTRL+SHIFT+S. Это сочетание клавиш для команды Файл>Сохранить все. Кроме того, есть кнопка Сохранить все на панели инструментов. Она имеет вид значка с двумя дискетами рядом с кнопкой Сохранить. В общем случае рекомендуется регулярно нажимать кнопку Сохранить все, чтобы не пропустить никакие файлы при сохранении. Класс подобен схеме для объекта, который выполняет какие-либо действия. В этом случае мы определяем калькулятор и особенности его работы. Мастер добавления класса , который вы использовали ранее, и .h файлы с тем же именем, что и .cpp класс. Вы можете просмотреть полный список файлов проекта в окне обозревателя решений, отображаемом в боковой части окна IDE. Если окно не отображается, его можно открыть из строки меню, выбрав Вид>Обозреватель решений. Теперь у вас в редакторе должно быть открыто три вкладки: CalculatorTutorial.cpp , Calculator.h и Calculator.cpp . Если вы случайно закроете одну из них, то можете повторно открыть эту вкладку, дважды щелкнув ее в окне обозревателя решений.
    2. Замените содержимое Calculator.h следующим кодом, чтобы файл выглядел следующим образом:
    #pragma once class Calculator < public: double Calculate(double x, char oper, double y); >; 
    • Этот код объявляет новую функцию с именем Calculate , которая используется для выполнения математических операций сложения, вычитания, умножения и деления.
    • Код C++ организован в файлы заголовков ( .h ) и исходные файлы ( .cpp ). Различные компиляторы поддерживают несколько других расширений имени файла, но это основные, о которых вам нужно знать. Функции и переменные обычно объявляются, то есть получают имя и тип, в файлах заголовка, и реализуются, то есть получают определение, в исходных файлах. Для доступа к коду, определенному в другом файле, можно использовать #include «filename.h» , где filename.h — это имя файла, объявляющего переменные или функции, которые вы хотите использовать.
    • Рекомендуется упорядочивать код по различным файлам в зависимости от его назначения, чтобы позднее было проще найти нужный код. В данном случае мы определяем класс Calculator отдельно от файла, содержащего функцию main() , но планируем ссылаться на класс Calculator в main() .
    #include "Calculator.h" double Calculator::Calculate(double x, char oper, double y) < switch(oper) < case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; default: return 0.0; >> 
    • Функция Calculate использует число, оператор и второе число, а затем выполняет запрошенную операцию над этими числами.
    • Оператор switch проверяет, какой оператор был предоставлен, и выполняет только вариант (case), соответствующий этой операции. Вариант default: является резервным на тот случай, если пользователь вводит неприемлемый оператор, чтобы программа не прервала работу. В общем случае лучше обрабатывать некорректный ввод данных пользователем более элегантным способом, но это выходит за рамки данного руководства.
    • Ключевое слово double обозначает тип числа, который поддерживает десятичные числа. Таким образом, калькулятор может выполнять математические операции с десятичными и целыми числами. Функция Calculate должна всегда возвращать такое число из-за элемента double в самом начале кода (обозначает тип возвращаемого значения функции), поэтому возвращается 0.0 даже в случае default.
    • Файл .h объявляет прототип функции, который заранее сообщает компилятору, какие параметры ему нужны и какой тип возвращаемого значения следует ожидать от него. Файл .cpp содержит все сведения о реализации функции.

    Если построить и запустить код еще раз на этом этапе, он по-прежнему завершит работу после запроса операции для выполнения. Затем измените функцию main , чтобы выполнить некоторые вычисления.

    Вызов функций-членов класса Calculator

    1. Теперь давайте изменим функцию main в CalculatorTutorial.cpp :
    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include #include "Calculator.h" using namespace std; int main() < double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout > x >> oper >> y; result = c.Calculate(x, oper, y); cout return 0; > 
    • Так как программы C++ всегда запускаются с функции main() , нам нужно вызвать из нее другой, для чего нужен оператор #include .
    • Объявлены начальные переменные x , y , oper и result для хранения, соответственно, первого числа, второго числа, оператора и окончательного результата. Рекомендуется всегда присваивать им некоторые начальные значения, чтобы избежать неопределенного поведения. Это мы здесь и делаем.
    • Строка Calculator c; объявляет объект «c» в качестве экземпляра класса Calculator . Сам класс является лишь схемой для описания работы калькуляторов, а объект — это конкретный калькулятор, который выполняет вычисления.
    • Оператор while (true) является циклом. Код внутри этого цикла продолжает выполняться снова и снова, пока выполняется условие в () . Так как условие просто указано как true , оно всегда выполняется, поэтому цикл выполняется бесконечно. Чтобы закрыть программу, пользователю нужно вручную закрыть окно консоли. В противном случае программа будет постоянно ожидать новые входные данные.
    • Ключевое слово cin используется для получения входных данных от пользователя. Этот входной поток способен обработать строку текста, введенного в окне консоли, и поместить ее внутрь каждой из перечисленных переменных в указанном порядке, при условии, что введенные пользователем данные соответствуют требуемой спецификации. Вы можете изменить эту строку, чтобы принимать различные типы входных данных, например более двух чисел, хотя Calculate() для обработки этой функции также потребуется обновить функцию.
    • Выражение c.Calculate(x, oper, y); вызывает определенную ранее функцию Calculate и предоставляет введенные входные значения. Затем она возвращает число, сохраняемое в result .
    • Наконец, в консоль выводится result , благодаря чему пользователь видит результат вычисления.

    Повторная сборка и проверка кода

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

    Снимок экрана: консоль отладки Visual Studio с правильным результатом сложения 5+5.

    1. Нажмите клавиши CTRL+F5, чтобы перестроить и запустить приложение.
    2. Введите 5+5 и нажмите клавишу ВВОД. Убедитесь, что выводится результат 10.

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

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

    Запуск приложения в отладчике

    1. Установите точку останова на строке result = c.Calculate(x, oper, y); . Чтобы задать точку останова, щелкните рядом со строкой серую вертикальную панель, идущую вдоль левой части окна редактора. Появится красная точка. Теперь при отладке программа всегда приостанавливает выполнение на этой строке. Мы уже имеем примерное представление о том, что в простых случаях программа работает. Так как нам не нужно приостанавливать выполнение при каждом запуске, создадим условную точку останова.
    2. Щелкните правой кнопкой мыши красную точку, обозначающую точку останова, и выберите команду Условия. В поле ввода для условия введите (y == 0) && (oper == ‘/’) . По завершении нажмите кнопку Закрыть , чтобы сохранить условие точки останова.

    Видео, в котором показан выбор точки останова правой кнопкой мыши. Точка останова находится в строке кода «result = c.Calculate(x, oper, y)». ‘Условия. ‘ выбран в раскрывающемся списке, в котором открывается окно параметров точки останова. В текстовом поле после раскрывающихся списков «Условное выражение» и «Is true» пользователь вводит условие «y == 0 && oper == ‘/'», а затем нажимает кнопку «Закрыть», чтобы установить условную точку останова.

    Полезные окна в отладчике

    Каждый раз при отладке кода вы можете заметить, что появляется несколько новых окон. Они могут оказаться полезными в процессе отладки. Давайте рассмотрим окно Видимые. Окно Видимые содержит текущие значения переменных, используемых по меньшей мере за три строки перед текущей строкой.

    Снимок экрана: окно

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

    Снимок экрана: окно

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

    Продолжение отладки

    Снимок экрана: консоль отладки Visual Studio с результатом деления на ноль, равным inf.

    1. Желтая стрелка слева показывает текущую точку выполнения. Текущая строка вызывает Calculate , поэтому нажмите клавишу F11 , чтобы перейти к функции Step Into , которая перейдет в текст Calculate функции. Будьте осторожны с шагом с переходом , так как он выполняет шаги по всем функциям в строке, в которую вы находитесь, включая стандартные функции библиотеки. Это нормально, чтобы перейти к стандартной библиотеке, но вы можете быть более заинтересованы в том, чтобы сосредоточиться на коде, а не на коде библиотеки.
    2. Теперь, когда точка выполнения находится в начале функции Calculate , нажмите клавишу F10 для перехода на следующую строку в рамках выполнения программы. При нажатии клавиши F10 активируется функция Шаг с обходом. Шаг с обходом можно использовать для перемещения по строкам, не вдаваясь в подробности того, что происходит в каждой части строки. В общем случае следует использовать Шаг с обходом, а не Шаг с заходом, если только вы не хотите подробно изучить код, вызываемый из другого расположения (как в случае с переходом к телу функции Calculate ).
    3. Продолжайте использовать клавишу F10, чтобы выполнять Шаг с обходом для каждой строки, пока не вернетесь к функции main() в другом файле, и остановитесь на строке cout . Похоже, программа работает правильно — принимает первое число и делит его на второе. В строке cout наведите указатель мыши на переменную result или взгляните на result в окне Видимые. Его значение равно inf , которое выглядит неправильно, поэтому давайте исправим его. В строке cout просто выводится любое значение, хранящееся в result . Поэтому при продвижении еще на один шаг с помощью клавиши F10 в окне консоли отображается следующее: Причина такого результата в том, что деление на ноль является неопределенным, поэтому у программы нет числового ответа на запрошенную операцию.

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

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

      Внесите следующие изменения в CalculatorTutorial.cpp . (Вы можете оставить программу запущенной во время редактирования с помощью функции отладчика Под названием «Изменить и продолжить«). Изменение заключается в добавлении следующей if инструкции cin >> x >> oper >> y; для проверка деления на ноль и вывода сообщения пользователю, если это произойдет. В противном случае выводится результат:

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include #include "Calculator.h" using namespace std; int main() < double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout > x >> oper >> y; if (oper == '/' && y == 0) < cout else < result = c.Calculate(x, oper, y); >cout return 0; > 

    Примечание При редактировании кода в режиме отладки существует риск того, что код устареет. Это происходит, когда отладчик продолжает выполнять старый код, не учитывающий внесенные вами изменения. В подобной ситуации отладчик выводит диалоговое окно с соответствующим сообщением. В некоторых случаях может потребоваться нажать клавишу F5, чтобы обновить выполняемый код. В частности, если вы вносите изменения внутри функции, а точка выполнения находится внутри этой функции, выходите из функции, а затем снова в нее, чтобы получить обновленный код. Если по какой-либо причине это не работает и вы видите сообщение об ошибке, можно остановить отладку, щелкнув красный квадрат на панели инструментов под меню в верхней части интегрированной среды разработки, а затем перезапустить отладку, нажав клавишу F5 или выбрав зеленую стрелку «воспроизведения» рядом с кнопкой остановки на панели инструментов. Еще одна причина, по которой изменение и продолжение могут завершиться сбоем, заключается в том, что необходимо перейти в меню main и выбрать Сервис>Параметры>Отладка>Общие и убедиться, что установлен флажок Требовать исходные файлы в точном соответствии с исходной версией.

    • Клавиша F5 (или команда Отладка>Запустить отладку) запускает сеанс отладки, если он еще не активен, и выполняет программу до тех пор, пока не будет встречена точка останова либо программе не потребуются вводимые пользователем данные. Если вводимые пользователем данные не требуются и точка останова отсутствует, программа завершает работу, а окно консоли автоматически закрывается после завершения выполнения программы. Если у вас есть что-то вроде программы Hello World, нажмите клавиши CTRL+F5 или установите точку останова, прежде чем нажать клавишу F5, чтобы окно оставалось открытым.
    • Сочетание клавиш CTRL+F5 (или команда Отладка>Запуск без отладки) запускает приложение без перехода в режим отладки. Это немного быстрее отладки, а окно консоли остается открытым после завершения выполнения программы.
    • Клавиша F10 (соответствующая возможности Шаг с обходом) позволяет выполнять построчную итерацию по коду, а также визуализировать выполнение кода и значения переменных на каждом шаге выполнения.
    • Клавиша F11 (соответствующая возможности Шаг с заходом) работает аналогично возможности Шаг с обходом, за исключением того, что заходит в любые функции, вызываемые в строке выполнения. Например, если в выполняемой строке вызывается функция, при нажатии клавиши F11 указатель перемещается в тело функции, чтобы вы могли проследить выполнение кода функции, прежде чем вернуться на исходную строку. При нажатии клавиши F10 выполняется шаг с обходом по вызову функции и простой переход на следующую строку. Вызов функции все равно выполняется, но программа не приостанавливается, чтобы показать вам, что именно она делает.

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *