Cómo hacer una calculadora con Visual Basic 6

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

Paso 1

Cómo hacer una calculadora con Visual Basic 6

Abre Visual Basic 6 y selecciona EXE estándar en el menú Nuevo proyecto. Verás un formulario en blanco.

Paso 2

Cómo hacer una calculadora con Visual Basic 6

Renombra tu proyecto y formulario: clic en Proyecto1 en el explorador de proyectos (derecha), escribe nuevo nombre en la propiedad Name de la ventana Propiedades (abajo). Pulsa Enter. Haz lo mismo con el formulario (nombre sugerido: CalculatorUI), asegurándote de poner un nombre similar en la propiedad Caption (cambia el texto de la barra de título). Guarda el proyecto en una carpeta nueva.

Paso 3

Cómo hacer una calculadora con Visual Basic 6

Añade botones y un cuadro de texto al formulario. Primero, un TextBox (donde aparecerán números y resultados). Selecciona el botón TextBox en la barra de herramientas (izquierda) y arrastra para definir tamaño y posición. Puedes cambiar tamaño/posición arrastrando el control o sus controladores (cuadrados en el borde). Con el TextBox seleccionado, cambia en Propiedades:
- (Name) = tbResult
- Alignment = 1 - Right Justify
- Data Format = (clic en «...») Number
- Locked = True
- Text = 0

Paso 4

Cómo hacer una calculadora con Visual Basic 6

Selecciona el icono CommandButton en la barra de herramientas y crea botones igual que el TextBox. Usa la calculadora de Windows en vista Estándar (Programas > Accesorios > Calculadora) como referencia, omitiendo botones «MC», «MR», «MS», «M+». En cada botón cambia propiedades (ej. botón «+»):
- (Name) = btnPlus
- Caption = +
Haz lo mismo para los demás botones y guarda. Tu formulario debería parecerse al ejemplo.

Paso 5

Añade el código. Nota: si tus botones y textbox no se llaman igual que en el código, cambia los nombres en el código o renombra los controles. Primero, variables para procesar la entrada:

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

Cada cálculo tiene cuatro partes: número izquierdo (sLeft, iLeft), operador (sOperator), número derecho (sRight, iRight), resultado (iResult). Para saber si el usuario está introduciendo el número izquierdo o derecho, usamos variable booleana bLeft. Si bLeft es True, se entra el lado izquierdo; si False, el derecho.

Paso 6

Inicializa bLeft. Crea subrutina Form_Load (escribiéndola o doble clic en zona vacía del formulario). Dentro, pon bLeft = True porque el primer número será el izquierdo:

Private Sub Form_Load()
    bLeft = True
End Sub

Paso 7

Cómo hacer una calculadora con Visual Basic 6

Crea subrutina que gestione el clic en cualquier botón numérico. Usamos subrutina porque el código es idéntico para los 10 botones, evitando repetirlo. Escribe bajo el End Sub de 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

Esta función toma un parámetro string sNumber (el número del botón pulsado). Si bLeft es True, lo añade a sLeft y actualiza tbResult. Si False, hace lo mismo con sRight.

Finalmente, crea un evento Click para cada botón numérico que llame a AddNumber. Doble clic en cada botón numérico crea la estructura; añade la llamada. Para el botón 0:

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

Para el 1:

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

Paso 8

Gestiona operadores: +, -, *, /. Igual que antes, subrutina llamada desde eventos Click de botones de operador:

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 True (usuario acaba de entrar lado izquierdo), guarda operador en sOperator y pone bLeft = False (ya no se entra lado izquierdo). Para encadenar operadores (ej. 9 * 3 * 2 * 6), si bLeft es False (usuario pulsó operador cuando se esperaba igual), llama a btnEquals_Click (próximo paso) que calcula y muestra resultado parcial. Luego limpia sRight para siguiente número y pone bLeft = False.

Añade llamada a AddOperator en cada botón operador. Para +:

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

Para -:

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

Paso 9

Crea evento Click para botón Igual (=), el más complejo. Doble clic en el botón = para crear estructura. Código:

Private Sub btnEquals_Click()
    If sLeft <> "" And sRight = "" And sOperator <> "" Then
        sRight = sLeft
    End If

    If sLeft <> "" And sRight <> "" And sOperator <> "" 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
End Sub

Las primeras 3 líneas: si solo hay lado izquierdo y operador, copia izquierdo a derecho (comportamiento estándar: 9 * = → 81). El resto ejecuta solo si hay ambos lados y operador. Copia strings a variables Double para calcular. Select Case ejecuta operación según operador, guarda en iResult. Actualiza textbox, copia resultado a sLeft, resetea sRight, pone bLeft = True para permitir encadenar cálculos.

Paso 10

Gestiona tres botones restantes: raíz cuadrada (√), % y 1/x.
Para √:

Private Sub btnSqrt_Click()
    If sLeft <> "" Then iLeft = sLeft Else iLeft = 0
    If sRight <> "" Then iRight = sRight Else iRight = 0
    If bLeft Then
        iLeft = Math.Sqr(iLeft)
        tbResult.Text = iLeft
    Else
        iRight = Math.Sqr(iRight)
        tbResult.Text = iRight
    End If
    If iLeft <> 0 Then sLeft = iLeft Else sLeft = ""
    If iRight <> 0 Then sRight = iRight Else sRight = ""
End Sub

Primeras 11 líneas: si no hay valor en un lado, usa 0 para evitar error. Líneas medias: calcula raíz del lado actual (izq o der). Final: revierte comprobaciones iniciales para copiar 0 como string vacío.

Para % (solo si ambos lados entrados):

Private Sub btnPercent_Click()
    If Not bLeft Then
        If sRight <> "" Then iRight = sRight Else iRight = 0
        iRight = iRight * (iLeft / 100)
        tbResult.Text = iRight
        If iRight <> 0 Then sRight = iRight Else sRight = ""
    End If
End Sub

Para 1/x (fracción):

Private Sub btnFraction_Click()
    If sLeft <> "" Then iLeft = sLeft Else iLeft = 0
    If sRight <> "" Then iRight = sRight Else iRight = 0
    If bLeft Then
        iLeft = 1 / iLeft
        tbResult.Text = iLeft
    Else
        iRight = 1 / iRight
        tbResult.Text = iRight
    End If
    If iLeft <> 0 Then sLeft = iLeft Else sLeft = ""
    If iRight <> 0 Then sRight = iRight Else sRight = ""
End Sub

Paso 11

Botones C (borra todo) y CE (borra entrada actual):

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

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

Paso 12

Cómo hacer una calculadora con Visual Basic 6

Ejecuta tu calculadora y haz cualquier cálculo. Este programa puede ampliarse fácilmente para más operaciones, cálculos complejos o incluso calculadora científica con un poco de trabajo extra.

Consejo

Si hay errores, revisa línea a línea, enfocándote en las que VB señala, y compara con el código de arriba. El código de este artículo ha sido probado y está libre de errores; copiarlo fielmente dará un programa funcional. Si usas versión anterior de VB, pueden haber cambios (ej. VB anterior usaba Math.Sqrt() en vez de Math.Sqr()). Consulta la referencia de tu versión.