как сделать калькулятор в windows forms c
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Калькулятор на C#
В данном уроке мы разработаем с вами калькулятор на C#. Программа будет написана согласно принципам объектно-ориентированного программирования (ООП): будет определен интерфейс для методов, реализующих функционал клавиш математических операций калькулятора, от интерфейса выполним наследование и напишем соответствующий класс и методы. Калькулятор, помимо базовых операций сложения, вычитания, умножения и деления, будет предоставлять возможность выполнять операции: извлечения квадратного корня, извлечения корня произвольной степени, возведения в квадрат, возведения в произвольную степень, вычисления факториала, а также работу с регистром памяти (MRC).
Создание пользовательского интерфейса калькулятора
Создадим в Visual Studio проект на Visual C# Windows Forms. Добавим на форму элемент GroupBox, в который поместим Label. В свойстве Dock, элемента Label, необходимо указать Right, чтобы Label был привязан к правому краю. Связка данных элементов управления будет реализовывать дисплей калькулятора.
Калькулятор также содержит кнопки. Всего их 28 штук. Пользовательский интерфейс представлен на рисунке 1.
Рисунок 1. Интерфейс калькулятора
Кнопка “+/-” меняет знак операнда на противоположный.
Кнопка MRC, а также кнопки M+, M-, M×, M÷, реализуют отдельный регистр памяти калькулятора и команды для управления им. Что такое MRC можно прочитать – здесь.
Программирование калькулятора на C#
Реализация интерфейса класса
Поскольку наш калькулятор будет написан в рамках парадигмы ООП (объектно-ориентированного программирования), то начнем кодирование с описания структуры интерфейса для класса, реализующего математические операции программы.
Добавим в проект класс InterfaceCalc.cs и определим в созданном файле интерфейс InterfaceCalc.
Для выполнения математических операций понадобится два операнда: a и b (например, a + b). Операнд a придется хранить в памяти калькулятора, пока пользователь будет вводить второй аргумент операции. Для сохранения числа a объявим прототип метода void Put_A(double a), для очистки – void Clear_A(). Для умножения, деления, сложения и вычитания чисел a и b соответственно понадобятся методы: double Multiplication(double b), double Division(double b), double Sum(double b), double Subtraction(double b). Вычисление корня степени b из a: double SqrtX(double b). Возведение числа a в степень b: double DegreeY(double b). Вычисление квадратного корня: double Sqrt(). Возведение числа a в квадрат: double Square(). Вычисление факториала a!: double Factorial(). Теперь объявления методов для работы с регистром памяти (MRC) калькулятора. Показать содержимое памяти и очистить его: double MemoryShow(), void Memory_Clear(). M×, M÷, M+ и M- к регистру соответственно: void M_Multiplication(double b), void M_Division(double b), void M_Sum(double b), void M_Subtraction(double b).
Создание класса, реализующего интерфейс InterfaceCalc
Теперь добавим в калькулятор класс, который будет реализовывать написанный ранее интерфейс. Для этого в проекте создадим класс Calc : InterfaceCalc. Как вы видите, здесь используется наследование (оператор “двоеточие”). В данном классе напишем реализацию всех методов, требуемых спецификацией нашего интерфейса.
Создание консольного приложения «Калькулятор» на C++
Обычной отправной точкой для программиста на C++ является приложение «Hello World», выполняемое в командной строке. Вот что вы создадите в Visual Studio в этой статье, и затем мы перейдем к более сложной задаче: приложению калькулятора.
Предварительные требования
Создание проекта приложения
Visual Studio использует проекты, чтобы упорядочить код для приложения, и решения, чтобы упорядочить проекты. Проект содержит все параметры, конфигурации и правила, используемые для сборки приложения. Кроме того, он управляет связью между всеми файлами проекта и любыми внешними файлами. Чтобы создать приложение, сначала создайте проект и решение.
Если вы только запустили Visual Studio, вы увидите диалоговое окно Visual Studio 2019. Выберите Создать проект, чтобы приступить к работе.
Или в строке меню Visual Studio последовательно выберите Файл > Создать > Проект. Откроется окно Создание проекта.
В списке шаблонов проектов выберите Консольное приложение и нажмите Далее.
В диалоговом окне Настроить новый проект выберите поле ввода Имя проекта, назовите новый проект CalculatorTutorial и нажмите Создать.
Будет создано пустое консольное приложение Windows на C++. Консольные приложения используют окно консоли Windows для отображения выходных данных и приема данных, вводимых пользователем. В Visual Studio откроется окно редактора с созданным кодом.
Проверка сборки и выполнения нового приложения
Шаблон для нового консольного приложения Windows создает простое приложение Hello World на C++. На этом этапе вы можете видеть, как Visual Studio создает и запускает созданные вами приложения прямо из интегрированной среды разработки.
Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки.
Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки.
Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в редактор Visual Studio.
Теперь у вас есть средства для сборки и запуска приложения после каждого изменения, чтобы убедиться, что код по-прежнему работает должным образом. Позже мы покажем, как выполнить его отладку при неправильной работе.
Изменение кода
Теперь давайте превратим код в этом шаблоне в приложение калькулятора.
В файле CalculatorTutorial.cpp измените код таким образом, чтобы он соответствовал этому примеру:
Чтобы сохранить файл, нажмите клавиши CTRL+S или выберите элемент Сохранить в верхней части интегрированной среды разработки, выглядящий как значок гибкого диска на панели инструментов в строке меню.
Чтобы запустить приложение, нажмите клавиши CTRL+F5 или перейдите в меню Отладка и выберите Запуск без отладки. Должно отобразится окно консоли с текстом, указанным в коде.
По завершении закройте окно консоли.
Добавление кода для выполнения математических операций
Пора добавить математическую логику.
Добавление класса Calculator
В меню Проект выберите команду Добавить класс. В поле ввода Имя класса введите Calculator. Нажмите кнопку ОК. В проект будут добавлены два новых файла. Чтобы сохранить сразу все измененные файлы, нажмите клавиши CTRL+SHIFT+S. Это сочетание клавиш для команды Файл > Сохранить все. Кроме того, есть кнопка Сохранить все на панели инструментов. Она имеет вид значка с двумя дискетами рядом с кнопкой Сохранить. В общем случае рекомендуется регулярно нажимать кнопку Сохранить все, чтобы не пропустить никакие файлы при сохранении.
Класс подобен схеме для объекта, который выполняет какие-либо действия. В этом случае мы определяем калькулятор и особенности его работы. Использованный ранее мастер Добавить класс создал файлы H и CPP, имя которых совпадает с именем класса. Вы можете просмотреть полный список файлов проекта в окне обозревателя решений, отображаемом в боковой части окна IDE. Если окно не отображается, его можно открыть из строки меню, выбрав Вид > Обозреватель решений.
Теперь у вас в редакторе должно быть открыто три вкладки: CalculatorTutorial.cpp, Calculator.h и Calculator.cpp. Если вы случайно закроете одну из них, то можете повторно открыть эту вкладку, дважды щелкнув ее в окне обозревателя решений.
На вкладке Calculator.h удалите созданные строки Calculator(); и
Под Calculate появится зеленая волнистая линия. Это вызвано тем, что мы еще не определили функцию Calculate в CPP-файле. Наведите указатель на это слово, щелкните по появившейся лампочке (в данном случае отвертке) и выберите Создать определение «Calculate» в Calculator.cpp.
Отображается всплывающее окно, сообщающее об изменении кода, внесенном в другом файле. Код был добавлен в Calculator.cpp.
Сейчас он возвращает просто 0.0. Давайте изменим это. Нажмите клавишу ESC, чтобы закрыть всплывающее окно.
Переключитесь на файл Calculator.cpp в окне редактора. Удалите разделы Calculator() и
Calculator() (как сделали в H-файле) и добавьте в Calculate() следующий код:
Если построить и запустить код еще раз на этом этапе, он по-прежнему завершит работу после запроса операции для выполнения. Далее вам нужно изменить функцию main для выполнения вычислений.
Вызов функций-членов класса Calculator
Теперь давайте изменим функцию main в CalculatorTutorial.cpp:
Повторная сборка и проверка кода
Пришло время снова протестировать программу еще раз, чтобы убедиться в ее правильной работе.
Нажмите клавиши CTRL+F5, чтобы перестроить и запустить приложение.
Введите 5 + 5 и нажмите клавишу ВВОД. Убедитесь, что выводится результат 10.
Отладка приложения
Так как пользователь может ввести в окне консоли что угодно, нужно убедиться, что калькулятор обрабатывает некоторые входные данные правильно. Вместо запуска программы давайте выполним ее отладку, чтобы можно было проверить ее выполнение шаг за шагом.
Запуск приложения в отладчике
Теперь при отладке программа всегда приостанавливает выполнение на этой строке. Мы уже имеем примерное представление о том, что в простых случаях программа работает. Так как нам не нужно приостанавливать выполнение при каждом запуске, создадим условную точку останова.
Теперь выполнение приостанавливается в точке останова, в частности при попытке деления на 0.
Полезные окна в отладчике
Каждый раз при отладке кода вы можете заметить, что появляется несколько новых окон. Они могут оказаться полезными в процессе отладки. Давайте рассмотрим окно Видимые. Окно Видимые содержит текущие значения переменных, используемых по меньшей мере за три строки перед текущей строкой. Чтобы просмотреть все переменные из этой функции, переключитесь в окно Локальные. Вы можете изменять значения этих переменных во время отладки, чтобы оценить их влияние на программу. В данном случае мы оставим их без изменений.
Кроме того, вы можете просто навести указатель на переменные в самом коде, чтобы просмотреть их текущие значения на участке, где приостановлено выполнение. Сначала щелкните окно редактора, чтобы сделать его активным.
Продолжение отладки
Причина такого результата в том, что деление на ноль является неопределенным, поэтому у программы нет числового ответа на запрошенную операцию.
Исправление ошибки деления на ноль
Давайте обеспечим корректную обработку деления на ноль, чтобы пользователь мог осознать проблему.
Внесите следующие изменения в CalculatorTutorial.cpp. (Прерывать выполнение программы при редактировании не требуется благодаря функции отладчика Изменить и продолжить):
При редактировании кода в режиме отладки существует риск того, что код устареет. Это происходит, когда отладчик продолжает выполнять старый код, не учитывающий внесенные вами изменения. В подобной ситуации отладчик выводит диалоговое окно с соответствующим сообщением. В некоторых случаях может потребоваться нажать клавишу F5, чтобы обновить выполняемый код. В частности, если вы вносите изменения внутри функции, когда точка выполнения находится внутри этой же функции, вам потребуется выполнить шаг с выходом из функции, а затем вернуться в нее, чтобы получить обновленный код. Если по какой-либо причине это не работает и вы видите сообщение об ошибке, можно остановить отладку, щелкнув красный квадрат на панели инструментов под меню в верхней части интегрированной среды разработки, а затем перезапустить отладку, нажав клавишу F5 или выбрав зеленую стрелку «воспроизведения» рядом с кнопкой остановки на панели инструментов.
Пояснения по сочетаниям клавиш для выполнения и отладки
Закрытие приложения
Добавление системы управления исходным кодом Git
Теперь, когда вы создали приложение, вы можете добавить его в репозиторий Git. Мы их предоставим. Visual Studio упрощает этот процесс с помощью инструментов Git, которые вы можете использовать непосредственно из IDE.
Git — это наиболее широко используемая современная система контроля версий, поэтому, независимо от того, являетесь ли вы профессиональным разработчиком или учитесь программировать, Git может быть для вас весьма полезным. Если вы новичок в Git, вы можете начать с сайта https://git-scm.com/. Там вы найдете памятки, популярную электронную книгу и видеоматериалы по основам GIT.
Чтобы связать свой код с Git, вы начинаете с создания нового репозитория Git, в котором находится ваш код. Вот как это сделать.
В строке состояния в правом нижнем углу Visual Studio нажмите Добавить в систему управления версиями и выберите Git.
В диалоговом окне Создать репозиторий Git войдите в GitHub.
Имя репозитория заполняется автоматически в зависимости от расположения вашей папки. По умолчанию ваш новый репозиторий является частным. Это означает, что только вы можете получить к нему доступ.
Независимо от того, является ли ваш репозиторий общедоступным или частным, лучше всего иметь удаленную резервную копию кода, надежно хранящуюся на GitHub. Даже если вы не работаете с командой, удаленный репозиторий позволит получать доступ к коду с любого компьютера.
Щелкните Создать и отправить.
После того как вы создали свой репозиторий, вы увидите информацию о статусе в строке состояния.
Первый значок со стрелками показывает, сколько исходящих и входящих фиксаций в вашей текущей ветке. Вы можете использовать этот значок, чтобы получать любые входящие или исходящие фиксации. Вы также можете выбрать отображение этих фиксаций в первую очередь. Для этого щелкните значок и выберите Просмотреть исходящие/входящие.
Второй значок с карандашом показывает количество незафиксированных изменений в вашем коде. Щелкните этот значок, чтобы просмотреть эти изменения в окне Git Changes.
Чтобы узнать больше о том, как использовать Git с вашим приложением, см. документацию по управлению версиями Visual Studio.
Готовое приложение
Поздравляем! Вы завершили написание кода для приложения калькулятора, а также выполнили его сборку и отладку и добавили его в репозиторий — и все это в Visual Studio.
Следующие шаги
Обычной отправной точкой для программиста на C++ является приложение «Hello World», выполняемое в командной строке. Вот что вы создадите в Visual Studio в этой статье, и затем мы перейдем к более сложной задаче: приложению калькулятора.
Предварительные требования
Создание проекта приложения
Visual Studio использует проекты, чтобы упорядочить код для приложения, и решения, чтобы упорядочить проекты. Проект содержит все параметры, конфигурации и правила, используемые для сборки приложения. Кроме того, он управляет связью между всеми файлами проекта и любыми внешними файлами. Чтобы создать приложение, сначала создайте проект и решение.
В строке меню Visual Studio последовательно выберите Файл > Создать > Проект. Открывается окно Новый проект.
В поле ввода Имя внизу введите имя нового проекта CalculatorTutorial, а затем нажмите кнопку ОК.
Будет создано пустое консольное приложение Windows на C++. Консольные приложения используют окно консоли Windows для отображения выходных данных и приема данных, вводимых пользователем. В Visual Studio откроется окно редактора с созданным кодом.
Проверка сборки и выполнения нового приложения
Шаблон для нового консольного приложения Windows создает простое приложение «Hello World» на C++. На этом этапе вы можете видеть, как Visual Studio создает и запускает созданные вами приложения прямо из интегрированной среды разработки.
Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки.
Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки.
Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в редактор Visual Studio.
Теперь у вас есть средства для сборки и запуска приложения после каждого изменения, чтобы убедиться, что код по-прежнему работает должным образом. Позже мы покажем, как выполнить его отладку при неправильной работе.
Изменение кода
Теперь давайте превратим код в этом шаблоне в приложение калькулятора.
В файле CalculatorTutorial.cpp измените код таким образом, чтобы он соответствовал этому примеру:
Чтобы сохранить файл, нажмите клавиши CTRL+S или выберите элемент Сохранить в верхней части интегрированной среды разработки, выглядящий как значок гибкого диска на панели инструментов в строке меню.
Чтобы запустить приложение, нажмите клавиши CTRL+F5 или перейдите в меню Отладка и выберите Запуск без отладки. Если отображается всплывающее окно This project is out of date (Этот проект устарел), можно выбрать Больше не показывать это диалоговое окно, а затем — Да, чтобы создать приложение. Должно отобразится окно консоли с текстом, указанным в коде.
По завершении закройте окно консоли.
Добавление кода для выполнения математических операций
Пора добавить математическую логику.
Добавление класса Calculator
В меню Проект выберите команду Добавить класс. В поле ввода Имя класса введите Calculator. Нажмите кнопку ОК. В проект будут добавлены два новых файла. Чтобы сохранить сразу все измененные файлы, нажмите клавиши CTRL+SHIFT+S. Это сочетание клавиш для команды Файл > Сохранить все. Кроме того, есть кнопка Сохранить все на панели инструментов. Она имеет вид значка с двумя дискетами рядом с кнопкой Сохранить. В общем случае рекомендуется регулярно нажимать кнопку Сохранить все, чтобы не пропустить никакие файлы при сохранении.
Класс подобен схеме для объекта, который выполняет какие-либо действия. В этом случае мы определяем калькулятор и особенности его работы. Использованный ранее мастер Добавить класс создал файлы H и CPP, имя которых совпадает с именем класса. Вы можете просмотреть полный список файлов проекта в окне обозревателя решений, отображаемом в боковой части окна IDE. Если окно не отображается, его можно открыть из строки меню, выбрав Вид > Обозреватель решений.
Теперь у вас в редакторе должно быть открыто три вкладки: CalculatorTutorial.cpp, Calculator.h и Calculator.cpp. Если вы случайно закроете одну из них, то можете повторно открыть эту вкладку, дважды щелкнув ее в окне обозревателя решений.
На вкладке Calculator.h удалите созданные строки Calculator(); и
Под Calculate появится зеленая волнистая линия. Это вызвано тем, что мы еще не определили функцию Calculate в CPP-файле. Наведите указатель на это слово, щелкните появившуюся лампочку и выберите Создать определение «Calculate» в Calculator.cpp. Отображается всплывающее окно, сообщающее об изменении кода, внесенном в другом файле. Код был добавлен в Calculator.cpp.
Сейчас он возвращает просто 0.0. Давайте изменим это. Нажмите клавишу ESC, чтобы закрыть всплывающее окно.
Переключитесь на файл Calculator.cpp в окне редактора. Удалите разделы Calculator() и
Calculator() (как сделали в H-файле) и добавьте в Calculate() следующий код:
Если построить и запустить код еще раз на этом этапе, он по-прежнему завершит работу после запроса операции для выполнения. Далее вам нужно изменить функцию main для выполнения вычислений.
Вызов функций-членов класса Calculator
Теперь давайте изменим функцию main в CalculatorTutorial.cpp:
Повторная сборка и проверка кода
Пришло время снова протестировать программу еще раз, чтобы убедиться в ее правильной работе.
Нажмите клавиши CTRL+F5, чтобы перестроить и запустить приложение.
Введите 5 + 5 и нажмите клавишу ВВОД. Убедитесь, что выводится результат 10.
Отладка приложения
Так как пользователь может ввести в окне консоли что угодно, нужно убедиться, что калькулятор обрабатывает некоторые входные данные правильно. Вместо запуска программы давайте выполним ее отладку, чтобы можно было проверить ее выполнение шаг за шагом.
Запуск приложения в отладчике
Теперь при отладке программа всегда приостанавливает выполнение на этой строке. Мы уже имеем примерное представление о том, что в простых случаях программа работает. Так как нам не нужно приостанавливать выполнение при каждом запуске, создадим условную точку останова.
Теперь выполнение приостанавливается в точке останова, в частности при попытке деления на 0.
Полезные окна в отладчике
Каждый раз при отладке кода вы можете заметить, что появляется несколько новых окон. Они могут оказаться полезными в процессе отладки. Давайте рассмотрим окно Видимые. Окно Видимые содержит текущие значения переменных, используемых по меньшей мере за три строки перед текущей строкой.
Чтобы просмотреть все переменные из этой функции, переключитесь в окно Локальные. Вы можете изменять значения этих переменных во время отладки, чтобы оценить их влияние на программу. В данном случае мы оставим их без изменений.
Кроме того, вы можете просто навести указатель на переменные в самом коде, чтобы просмотреть их текущие значения на участке, где приостановлено выполнение. Сначала щелкните окно редактора, чтобы сделать его активным.
Продолжение отладки
Причина такого результата в том, что деление на ноль является неопределенным, поэтому у программы нет числового ответа на запрошенную операцию.
Исправление ошибки деления на ноль
Давайте обеспечим корректную обработку деления на ноль, чтобы пользователь мог осознать проблему.
Внесите следующие изменения в CalculatorTutorial.cpp. (Прерывать выполнение программы при редактировании не требуется благодаря функции отладчика Изменить и продолжить):
При редактировании кода в режиме отладки существует риск того, что код устареет. Это происходит, когда отладчик продолжает выполнять старый код, не учитывающий внесенные вами изменения. В подобной ситуации отладчик выводит диалоговое окно с соответствующим сообщением. В некоторых случаях может потребоваться нажать клавишу F5, чтобы обновить выполняемый код. В частности, если вы вносите изменения внутри функции, когда точка выполнения находится внутри этой же функции, вам потребуется выполнить шаг с выходом из функции, а затем вернуться в нее, чтобы получить обновленный код. Если по какой-либо причине это не работает и вы видите сообщение об ошибке, можно остановить отладку, щелкнув красный квадрат на панели инструментов под меню в верхней части интегрированной среды разработки, а затем перезапустить отладку, нажав клавишу F5 или выбрав зеленую стрелку «воспроизведения» рядом с кнопкой остановки на панели инструментов.
Пояснения по сочетаниям клавиш для выполнения и отладки
Закрытие приложения
Поздравляем! Вы завершили написание кода для приложения калькулятора, а также выполнили его сборку и отладку в Visual Studio.