Cómo hacer una calculadora con Visual Basic

Microsoft Visual Basic es un lenguaje de programación basado en el lenguaje BASIC, desarrollado originalmente para facilitar el aprendizaje de la programación. Visual Basic toma los comandos familiares de BASIC y agrega herramientas e interfaces orientadas a objetos para diseñar controles web y aplicaciones de Windows similares a WYSIWYG, entre muchas otras mejoras. Un proyecto de aprendizaje relativamente simple para Visual Basic es la creación de una calculadora de Windows.

Paso 1

Abra Visual Basic 6 y seleccione "EXE estándar" en el menú del nuevo proyecto. Verá aparecer un formulario en blanco en la pantalla.

Paso 2

Cambie el nombre de su proyecto y su formulario haciendo clic en "Proyecto1" en el lado derecho de la pantalla, en la lista de proyectos e ingresando un nuevo nombre en la línea "Nombre" del cuadro Propiedades, que debería aparecer debajo de la lista de proyectos al defecto. Presiona "Enter" para aceptar el nuevo nombre. Haga lo mismo para su formulario (un nombre de formulario sugerido es "CalculatorUI"), asegurándose de ingresar un nombre similar también en la propiedad "Título", lo que cambiará el texto en la barra superior del formulario. Guarde el proyecto en una nueva carpeta en su computadora.

Paso 3

Agregue botones y un cuadro de texto al formulario. Primero, agregue un cuadro de texto, que será donde aparecerán los números ingresados ​​​​en la calculadora, así como los resultados de los cálculos. Haga esto seleccionando el botón TextBox de la barra de herramientas en el lado izquierdo de la pantalla y luego arrastrando con el mouse el tamaño y la ubicación que desea para el TextBox. Una vez que haya colocado el cuadro de texto, puede cambiar el tamaño y la ubicación arrastrándolo a otra ubicación del formulario o arrastrando los controladores (los cuadrados pequeños) a lo largo del borde del cuadro de texto. Asegúrese de cambiar las siguientes líneas en la ventana Propiedades, con el cuadro de texto seleccionado:"(Nombre)" =tbResult, "Alineación" =1- Justificar a la derecha, "Formato de datos" =(haga clic en el botón "..." para seleccionar) Número, "Bloqueado" =Verdadero y "Texto" =0.

Paso 4

Seleccione el ícono CommandButton en la barra de herramientas y cree el primer botón de la misma manera que creó el cuadro de texto para agregar botones. Como referencia, utilice la calculadora de Windows en la vista estándar (Programas> Accesorios> Calculadora) como base para el diseño de su calculadora, omitiendo los botones "MC", "MR", "MS" y "M+". En cada botón, cambie las siguientes propiedades (usando el botón "+" como ejemplo):"(Nombre)" =btnPlus, "Título" =+. Haga lo mismo con el resto de los botones de la calculadora y luego guarde su trabajo. Su formulario ahora debería parecerse al ejemplo que se muestra aquí.

Paso 5

Agrega el código. Tenga en cuenta que si los botones y el cuadro de texto no tienen el mismo nombre que el código que se muestra aquí, deberá cambiar los nombres para que coincidan con los botones y el cuadro de texto, o cambiar los botones y el cuadro de texto para que coincidan con este código. Primero necesitamos crear algunas variables para procesar la entrada de la calculadora:

Dim sLeft como cadena, sRight como cadena, sOperator como cadena Dim iLeft como doble, iRight como doble, iResult como doble Dim bLeft como booleano

Cada cálculo consta de cuatro partes:un número a la izquierda del operador (sLeft, iLeft), un operador (sOperator), un número a la derecha del operador (sRight, iRight) y un resultado (iResult). Para rastrear si el usuario está ingresando el número izquierdo o derecho, necesitamos crear una variable booleana, bLeft. Si bLeft es verdadero, se ingresa el lado izquierdo del cálculo; si bLeft es falso, se ingresa el lado derecho.

Paso 6

Inicialice la variable bLeft. Lo hacemos creando una subrutina Form_Load, que puede escribir como se indica aquí o crear automáticamente haciendo doble clic en cualquier parte del formulario que no esté cubierta por un botón o cuadro de texto. Dentro de la función, debemos establecer bLeft en True, porque el primer número ingresado será la parte izquierda:

Sub privado Form_Load() bLeft =True End Sub

Paso 7

Cree una subrutina que manejará el clic de cualquiera de los botones numéricos. Creamos esto como una subrutina porque usamos código idéntico para cada botón, y usar una subrutina significa no tener que repetir el mismo código diez veces. Introduzca lo siguiente debajo de la línea End Sub de la subrutina Form_Load:

Private Sub AddNumber(sNumber As String) If bLeft Then sLeft =sLeft + sNumber tbResult.Text =sLeft Else sRight =sRight + sNumber tbResult.Text =sRight End If End Sub

Como puede ver, esta función toma un parámetro de cadena, sNumber, que contendrá el número en el que el usuario ha hecho clic. Si bLeft es verdadero, este número se agrega a la cadena que representa el número que se ingresa, sLeft, y el cuadro de texto, tbResult, se actualiza para mostrar el nuevo número. Si bLeft es falso, se realiza la misma operación usando sRight en su lugar.

Finalmente, cree una función de evento Click para cada número que llame a nuestra subrutina AddNumber. Puede hacerlo fácilmente haciendo doble clic en cada botón numérico, lo que creará la estructura de la subrutina por usted. Luego agregue la llamada a AddNumber, reemplazando el número entre comillas con el número asociado con el botón. Para el botón cero, su código se verá así:

Sub privado btn0_Click() AddNumber ("0") End Sub

Del mismo modo, para el botón único, su código se verá así:

Sub privado btn1_Click() AddNumber ("1") End Sub

Paso 8

Manejar los operadores:más, menos, veces y dividir. Haremos esto como último paso, creando una subrutina que se llama en los eventos Click para los botones del operador. La subrutina tendrá el siguiente aspecto:

Private Sub AddOperator(sNewOperator As String) If bLeft Then sOperator =sNewOperator bLeft =False Else btnEquals_Click sOperator =sNewOperator sRight ="" bLeft =False End If End Sub

Si bLeft es verdadero, lo que significa que el usuario acaba de ingresar la parte izquierda del cálculo, esta subrutina establece la variable sOperator que creamos en el paso 5 para que sea igual al operador ingresado, que se pasa a AddOperator como la cadena sNewOperator. El segundo paso es establecer bLeft en False, porque la entrada de un operador significa que el usuario ha terminado de ingresar el lado izquierdo de la ecuación. Para manejar entradas que unen varios operadores, como 9 * 3 * 2 * 6, también debemos verificar si bLeft es falso, lo que significa que el usuario ha ingresado un operador donde esperábamos un igual. Primero llamamos al evento Click para el botón de igual (descrito en el siguiente paso), que hace el cálculo y establece tbResult en el resultado de lo que ya se ha ingresado. Luego borramos sRight para que el usuario pueda ingresar el siguiente número y establecemos bLeft en False para que el programa sepa que estamos ingresando el lado derecho del cálculo a continuación.

Finalmente, agregue una llamada AddOperator al evento Click de cada botón del operador, usando el mismo método que usamos en el paso 7 para crear los eventos Click para los botones numéricos. Su código para el botón más se verá así:

Sub privado btnPlus_Click() AddOperator ("+") End Sub

Asimismo, el código para el botón menos se verá así:

Sub privado btnMinus_Click() AddOperator ("-") End Sub

Paso 9

Cree el evento Click para el botón de igual, que es el código más complejo de este programa. Cree la estructura de la subrutina como lo hizo con los otros botones, haciendo doble clic en el botón igual en su formulario. Su subrutina se verá así cuando haya ingresado el código:

Sub privado btnEquals_Click() If sLeft <> "" And sRight ="" And sOperator <> "" Entonces sRight =sLeft End If

If sLeft &amp;lt;&amp;gt; "" And sRight &amp;lt;&amp;gt; "" And sOperator &amp;lt;&amp;gt; "" Then
 iLeft = sLeft
 iRight = sRight

 Select Case sOperator
 Case "+"
 iResult = iLeft + iRight
 Case "-"
 iResult = iLeft - iRight
 Case "/"
 iResult = iLeft / iRight
 Case "*"
 iResult = iLeft * iRight
 End Select

 tbResult.Text = iResult

 sLeft = iResult
 sRight = ""
 bLeft = True
End If

Finalizar sub

Las primeras tres líneas de código verifican si ambos lados del cálculo se han ingresado junto con un operador. Si solo se ingresan el lado izquierdo y un operador, el valor del lado izquierdo se copia a la derecha, por lo que podemos imitar el comportamiento estándar de la calculadora para manejar una entrada como 9 * =, que multiplica 9 por sí mismo para obtener un resultado de 81. El resto del código se ejecutará solo si se ingresan la izquierda, la derecha y el operador, y comienza copiando las cadenas de números en nuestras variables de tipo doble iLeft e iRight, que pueden hacer los cálculos reales. La declaración Select Case nos permite ejecutar un código diferente según el operador que se ingresó y realiza el cálculo real, colocando el resultado en iResult. Finalmente, actualizamos el cuadro de texto con el resultado, copiamos el resultado en sLeft, restablecemos sRight y establecemos bLeft =True. Estas últimas líneas nos permiten tomar el resultado del cálculo y usarlo para realizar otro cálculo.

Paso 10

Maneje los últimos tres botones de operación:sqrt, % y 1/x. Para el evento Click del botón de raíz cuadrada, su código se verá así:

Sub privado btnSqrt_Click() Si sLeft <> "" Entonces iLeft =sLeft Else iLeft =0 End If

If sRight &amp;lt;&amp;gt; "" Then
 iRight = sRight
Else
 iRight = 0
End If

If bLeft Then
 iLeft = Math.Sqr(iLeft)
 tbResult.Text = iLeft
Else
 iRight = Math.Sqr(iLeft)
 tbResult.Text = iRight
End If

If iLeft &amp;lt;&amp;gt; 0 Then
 sLeft = iLeft
Else
 sLeft = ""
End If

If iRight &amp;lt;&amp;gt; 0 Then
 sRight = iRight
Else
 sRight = ""
End If

Finalizar sub

Las primeras 11 líneas de código aseguran que si no tenemos un valor ingresado para ninguno de los lados de la ecuación, sustituimos cero en lugar de intentar copiar una cadena vacía en iLeft o iRight, lo que generará un error. Las líneas del medio realizan la función de raíz cuadrada en la parte actual del cálculo, ya sea a la izquierda o a la derecha. Finalmente, invertimos las comprobaciones que hicimos al principio para que un cero se copie como una cadena vacía en sLeft y sRight.

Para el botón de porcentaje, el código es similar, con una excepción:la operación de porcentaje solo se puede realizar si se ingresan los lados izquierdo y derecho.

Sub privado btnPercent_Click() If Not bLeft Then If sRight <> "" Then iRight =sRight Else iRight =0 End If

iRight = iRight * (iLeft / 100)
 tbResult.Text = iRight

 If iRight &amp;lt;&amp;gt; 0 Then
 sRight = iRight
 Else
 sRight = ""
 End If
End If

Finalizar sub

Por último, el evento Click 1/x, o fracción, que es muy similar al código anterior:

Sub privado btnFraction_Click() Si sLeft <> "" Entonces iLeft =sLeft Else iLeft =0 End If

If sRight &amp;lt;&amp;gt; "" Then
 iRight = sRight
Else
 iRight = 0
End If

If bLeft Then
 iLeft = 1 / iLeft
 tbResult.Text = iLeft
Else
 iRight = 1 / iRight
 tbResult.Text = iRight
End If

If iLeft &amp;lt;&amp;gt; 0 Then
 sLeft = iLeft
Else
 sLeft = ""
End If

If iRight &amp;lt;&amp;gt; 0 Then
 sRight = iRight
Else
 sRight = ""
End If

Finalizar sub

Paso 11

Agregue código para manejar los botones C y CE. C borra todas las entradas de la calculadora, mientras que CE solo borra el número que se está ingresando actualmente.

Sub privado btnC_Click() sLeft ="" sRight ="" sOperator ="" tbResult.Text ="0" bLeft =True End Sub

Sub privado btnCE_Click() If bLeft Then sLeft ="" Else sRight ="" End If tbResult.Text ="0" End Sub

Paso 12

Ejecute su programa de calculadora y haga cualquier cálculo que desee. Esta calculadora se puede expandir fácilmente para manejar más operaciones, cálculos más complejos o incluso para ser una calculadora científica con un poco de trabajo adicional.

Consejo

Si encuentra errores, verifique su código línea por línea, enfocándose en las líneas que VB ha indicado que contienen errores y compárelo con el código anterior. El código contenido en este artículo ha sido completamente probado para estar libre de errores, por lo que copiarlo fielmente resultará en un programa funcional. Si está utilizando una versión anterior de Visual Basic, es posible que encuentre algunos problemas en los que se hayan realizado cambios en el idioma en todas las versiones. Las versiones anteriores de VB, por ejemplo, usaban Math.Sqrt() en lugar de Math.Sqr() para realizar una operación de raíz cuadrada. Consulte las referencias de su versión específica para ver si es necesario realizar algún cambio.