🧮 Cómo crear una calculadora en Mojo paso a paso

Mojo es un lenguaje emergente que combina la simplicidad de Python con la potencia de lenguajes de bajo nivel. Para aprenderlo, nada mejor que construir un proyecto práctico: una calculadora interactiva. En este artículo te muestro cómo diseñar una calculadora básica que suma, resta, multiplica, divide y calcula raíces cuadradas.
✨ Estructura general del programa
El código se organiza en funciones que encapsulan cada operación matemática y en un bucle principal que gestiona el menú. Esto permite que el programa sea modular y fácil de mantener.
🔹 Función pedir_numero
fn pedir_numero(mensaje: String) raises -> Int: while True: try: var valor: Int = Int(input(mensaje)) return valor except: print(«\n\t⚠️ Entrada no válida. Por favor introduce un número.»)
- Objetivo: pedir un número al usuario y validar que sea correcto.
- Detalles: usa un bucle
while Truepara repetir la petición hasta que el usuario introduzca un valor válido. - Ventaja: evita que el programa se rompa por entradas erróneas.
🔹 Menú principal
fn menu() raises -> None:
print (» Calculadora creada en Mojo \n»)
print («»» Introduce tipo de operacion: S -> Sumar rz -> Raiz Cuadrada R -> Restar M -> Multiplicar d -> Division X -> Salir _____________________________________________ «»»)
- Muestra las opciones disponibles.
- El usuario selecciona la operación escribiendo una letra.
- Incluye un toque visual con separadores y alineación.
🔹 Operaciones básicas
Cada operación está en su propia función:
- Sumar:
fn sumar() raises -> None: var numero1: Int = pedir_numero(«\n Introduce el primer número -> «) var numero2: Int = pedir_numero(«\n Introduce el segundo número -> «) var resultado: Int = numero1 + numero2 print(«\n\t\tLa suma de {} y {} es = {}».format(numero1, numero2, resultado))
- Restar y Multiplicar siguen la misma lógica, cambiando el operador.
- División añade validación para evitar dividir entre cero:
fn division() raises -> None: var numero1: Float64 = pedir_numero(«\n Introduce el primer número -> «) var numero2: Float64 = pedir_numero(«\n Introduce el segundo número -> «) if numero2 == 0: print(«❌ Error: No se puede dividir entre cero») numero2 = pedir_numero(«\n Introduce un número distinto de cero -> «) if numero2 == 0: print(«😏 Pero si insistes, el resultado es ‘∞’ (infinito simbólico)») var resultado: Float64 = numero1 / numero2 print(«\n\t\tLa división de {} y {} es = {}».format(numero1, numero2, resultado))
🔹 Raíz cuadrada
import math
fn raiz_cuadrada(numero: Float64) -> Float64:
return math.sqrt(numero)
- Usa la librería estándar
math. - Se valida que el número no sea negativo antes de calcular.
🔹 Función principal main
fn main() raises -> None:
while True: menu() var tecla = input(«\n introduce tipo de operacion -> «).lower() if tecla == «s»: sumar() elif tecla == «r»: restar() elif tecla == «m»: multiplicar() elif tecla == «d»: division() elif tecla == «rz»: var numero: Float64 = pedir_numero(«\n Introduce el número -> «) if numero < 0: print(«❌ Error: No se puede con valores inferiores a cero») else: var resultado = raiz_cuadrada(numero) print(«\n La raíz cuadrada de «, numero, » es «, resultado) elif tecla == «x»: print(«Saliendo…») break else: print(«\n\n No válido»)
- Controla el flujo del programa.
- Llama a la función correspondiente según la tecla introducida.
- Permite salir con la opción
X.
🎯 Conclusión
Este proyecto muestra cómo estructurar un programa en Mojo usando funciones, validaciones y un menú interactivo. Es un ejemplo perfecto para aprender los fundamentos del lenguaje y practicar la lógica de programación.
👉 Próximos pasos: añadir más operaciones (potencias, logaritmos, porcentajes) o incluso una interfaz gráfica para hacer la calculadora más atractiva.