Как сделать калькулятор на Visual Basic

Откройте Visual Basic 6 и выберите «Стандартный EXE» в меню нового проекта. На экране появится пустая форма.

Переименуйте свой проект и форму, нажав «Project1» в правой части экрана в списке проектов, и введите новое имя в строке «Имя» в поле «Свойства», которое должно появиться под списком проекта рядом с дефолт. Нажмите «Enter», чтобы принять новое имя. Сделайте то же самое для своей формы (предлагаемое имя формы - «CalculatorUI»), не забудьте ввести аналогичное имя в свойстве «Caption», которое изменит текст в верхней панели формы. Сохраните проект в новой папке на вашем компьютере.

Добавьте в форму кнопки и текстовое поле. Сначала добавьте текстовое поле, в котором будут отображаться числа, введенные в калькулятор, а также результаты вычислений. Сделайте это, выбрав кнопку TextBox на панели инструментов в левой части экрана, а затем перетащив мышью нужный размер и местоположение TextBox. После того, как вы разместили TextBox, вы можете изменить размер и расположение, перетащив его в другое место формы или перетащив ручки (маленькие квадратики) вдоль границы TextBox. Обязательно измените следующие строки в окне "Свойства" с выбранным текстовым полем: "(Name)" = tbResult, «Выравнивание» = 1 - Выровнять по правому краю, «Формат данных» = (нажмите кнопку «...», чтобы выбрать) Число, «Заблокировано» = Истина и «Текст» = 0.

Выберите значок CommandButton на панели инструментов и создайте первую кнопку так же, как вы создавали TextBox для добавления кнопок. Для справки используйте калькулятор Windows в стандартном представлении («Программы»> «Стандартные»> «Калькулятор») в качестве основы для компоновки калькулятора, исключив кнопки «MC», «MR», «MS» и «M +». На каждой кнопке измените следующие свойства (используя кнопку «+» в качестве примера): «(Name)» = btnPlus, «Caption» = +. Проделайте то же самое с остальными кнопками калькулятора, а затем сохраните свою работу. Теперь ваша форма должна напоминать показанный здесь пример.

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

Dim sLeft As String, sRight As String, sOperator As String Dim iLeft As Double, iRight As Double, iResult As Double Dim bLeft As Boolean

Каждое вычисление состоит из четырех частей: числа слева от оператора (sLeft, iLeft), оператора (sOperator), числа справа от оператора (sRight, iRight) и результата (iResult). Чтобы отслеживать, вводит ли пользователь левое или правое число, нам нужно создать логическую переменную bLeft. Если bLeft истинно, вводится левая часть вычисления; если bLeft ложно, вводится правая часть.

Инициализируйте переменную bLeft. Мы делаем это, создавая подпрограмму Form_Load, которую вы можете либо ввести, как указано здесь, либо автоматически создать двойным щелчком по любой части формы, не закрытой кнопкой или текстовым полем. Внутри функции нам нужно установить bLeft в True, потому что первое введенное число будет левой частью:

Создайте подпрограмму, которая будет обрабатывать нажатие любой из цифровых кнопок. Мы создаем это как подпрограмму, потому что мы используем идентичный код для каждой кнопки, а использование подпрограммы означает отсутствие необходимости повторять один и тот же код десять раз. Введите следующее под строкой End Sub подпрограммы Form_Load:

Как видите, эта функция принимает строковый параметр sNumber, который будет содержать номер, по которому щелкнул пользователь. Если bLeft истинно, это число добавляется к строке, представляющей вводимое число, sLeft, а текстовое поле tbResult обновляется для отображения нового числа. Если bLeft имеет значение false, вместо этого выполняется та же операция с использованием sRight.

Наконец, создайте функцию события Click для каждого номера, который вызывает нашу подпрограмму AddNumber. Вы можете легко сделать это, дважды щелкнув каждую цифровую кнопку, что создаст для вас структуру подпрограммы. Затем добавьте вызов в AddNumber, заменив число в кавычках на число, связанное с кнопкой. Для нулевой кнопки ваш код будет выглядеть так:

Точно так же для одной кнопки ваш код будет выглядеть так:

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

Если bLeft истинно, что означает, что пользователь только что ввел левую часть вычисления, эта подпрограмма устанавливает Переменная sOperator, которую мы создали на шаге 5, чтобы она соответствовала введенному оператору, который передается в AddOperator в виде строки sNewOperator. Второй шаг - установить для bLeft значение False, поскольку ввод оператора означает, что пользователь завершил ввод левой части уравнения. Чтобы обрабатывать записи, которые объединяют несколько операторов, например 9 * 3 * 2 * 6, нам необходимо также проверьте, является ли bLeft ложным, что означает, что пользователь ввел оператор, в котором мы ожидали равно. Сначала мы вызываем событие Click для кнопки равенства (описанное в следующем шаге), которое производит вычисление и устанавливает tbResult равным результату того, что уже было введено. Затем мы очищаем sRight, чтобы пользователь мог ввести следующее число, и устанавливаем для bLeft значение False, чтобы программа знала, что мы вводим следующую правую часть вычисления.

Наконец, добавьте вызов AddOperator к событию Click каждой кнопки оператора, используя тот же метод, который мы использовали на шаге 7 для создания событий Click для цифровых кнопок. Ваш код для кнопки с плюсом будет выглядеть так:

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

Первые три строки кода проверяют, введены ли обе стороны вычисления вместе с оператором. Если введены только левая часть и оператор, значение левой части копируется вправо, поэтому мы можем имитировать стандартное поведение калькулятора для обработки такой записи, как 9 * =, которая умножает 9 на себя, чтобы получить результат 81. Остальная часть кода будет выполняться, только если введены left, right и operator, и начинается с копирования строки чисел в наших переменных iLeft и iRight с двойным типом, которые могут расчеты. Оператор Select Case позволяет нам запускать различный код в зависимости от того, какой оператор был введен, и выполняет фактическое вычисление, помещая результат в iResult. Наконец, мы обновляем текстовое поле результатом, копируем результат в sLeft, сбрасываем sRight и устанавливаем bLeft = True. Эти последние строки позволяют нам взять результат вычисления и использовать его для выполнения другого вычисления.

Обрабатываем последние три кнопки операций: sqrt,% и 1 / x. Для события Click кнопки квадратного корня ваш код будет выглядеть так:

Первые 11 строк кода гарантируют, что, если мы не введем значение ни для одной из сторон уравнения, мы подставляем ноль вместо того, чтобы пытаться скопировать пустую строку в iLeft или iRight, что сгенерирует ошибка. Средние линии выполняют функцию извлечения квадратного корня в текущей части вычисления, левой или правой. Наконец, мы отменяем проверки, которые мы делали в начале, так что ноль копируется как пустая строка обратно в sLeft и sRight.

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

Наконец, событие Click 1 / x, или дробное, очень похоже на приведенный выше код:

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

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

Подсказка

Если вы столкнулись с ошибками, проверьте свой код построчно, сосредотачиваясь на тех строках, которые VB назвал содержащими ошибки, и сравните его с приведенным выше кодом. Код, содержащийся в этой статье, был полностью протестирован на отсутствие ошибок, поэтому точное его копирование приведет к созданию функциональной программы. Если вы используете предыдущую версию Visual Basic, вы можете столкнуться с некоторыми проблемами, когда в разные версии языка были внесены изменения. Предыдущие версии VB, например, использовали Math. Sqrt () вместо Math. Sqr () для выполнения операции извлечения квадратного корня. Проверьте ссылки для вашей конкретной версии, чтобы узнать, необходимы ли какие-либо изменения.