Explicación del código de la calculadora en Mojo

Te acompaño sección por sección, comentando cada línea con intención didáctica y práctica. Donde tiene sentido, agrupo varias líneas que forman una unidad lógica.

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.»)

  • Definición: fn pedir_numero(mensaje: String) raises -> Int: declara una función que recibe un texto (mensaje) y devuelve un entero. raises indica que la función puede lanzar excepciones.
  • Bucle: while True: crea un ciclo infinito hasta que obtengas una entrada válida y hagas return.
  • Intento: try: abre un bloque para capturar errores en la conversión.
  • Salida: return valor devuelve el entero cuando la conversión ha sido correcta.
  • Error: except: captura cualquier excepción del bloque try.
  • Aviso: print("\n\t⚠️ ...") informa al usuario que debe introducir un número.

Función del menú

  • fn menu()raises ->None:# menu

    • print (» Calculadora creada en Mojo \n»)
    • print («»»

      • Introduce tipo de operacion:
      • S -> Sumar
      • rz -> Raiz Cuadrada
      • R -> Restar
      • M -> Multiplicar
      • d -> Division
      • X -> Salir _________________________________________________________ """)

  • Título: print (" Calculadora creada en Mojo \n") muestra un encabezado con salto de línea.
  • Opciones: print(""" ... """) imprime un bloque multilínea con el listado de operaciones y una separación visual.

  • Función limpiar_pantalla

  • fn limpiar_pantalla() raises -> None:
  • print(«\n» * 50)

Función sumar

  • fn sumar()raises ->None:# Funcion sumar

    • 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))

Definición: función que no devuelve valor.

  • Entrada 1: pide el primer entero con el prompt indicado.
  • Entrada 2: pide el segundo entero.
  • Cálculo: es la suma de ambos enteros.
  • Salida: imprime el resultado usando en el string para insertar los valores.



🧮 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 True para 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.




Guía: Mojo + VS Code en Windows/WSL

1. Instalar Mojo

  • Abre tu terminal en WSL (Ubuntu).
  • Ejecuta:

curl -s https://get.modular.com | sh

Luego añade Mojo al PATH:

Asi:

  • export PATH=»$HOME/.modular/bin:$PATH»

2. Instalar VS Code y extensión de Mojo

  • Abre VS Code en Windows.
  • Instala la extensión oficial de Mojo desde el Marketplace.
  • Configura la extensión para que apunte al intérprete en WSL.

3. Crear tu primer archivo Mojo

  • En VS Code, crea un archivo hola.mojo.
  • Escribe:

fn main():
print(«¡Hola desde Mojo en VS Code!»)

  • Guarda y ejecuta desde la terminal integrada:

mojo run hola.mojo

4. Depuración y flujo de trabajo

  • Usa la terminal integrada para correr tus programas.
  • Configura tareas en VS Code para automatizar la ejecución.
  • Puedes abrir directamente tu carpeta de proyectos en WSL desde VS Code.



Operadores en Mojo

🔑 Principales operadores en Mojo

1. Operadores aritméticos

  • + → suma
  • - → resta
  • * → multiplicación
  • / → división (retorna flotante)
  • // → división entera
  • % → módulo
  • ** → potencia

Ejemplo:

  • let a = 10
  • let b = 3
  • print(a + b) # 13
  • print(a // b) # 3
  • print(a ** b) # 1000

2. Operadores de comparación

  • == → igualdad
  • != → desigualdad
  • <, <=, >, >= → comparaciones numéricas

Ejemplo:

  • print(5 == 5) # True
  • print(7 != 3) # True
  • print(4 < 2) # False

3. Operadores lógicos

  • and → conjunción
  • or → disyunción
  • not → negación

Ejemplo:

  • let x = True
  • let y = False
  • print(x and y) # False
  • print(x or y) # True
  • print(not x) # False

4. Operadores de asignación

  • = → asignación simple
  • +=, -=, *=, /=, //=, %= → asignación con operación

Ejemplo:

  • var n = 5
  • n += 2 # n = 7
  • n *= 3 # n = 21

5. Operadores especiales

  • is → identidad de objetos
  • in → pertenencia en colecciones
  • not in → ausencia en colecciones

Ejemplo:

  • let lista = [1, 2, 3]
  • print(2 in lista) # True
  • print(4 not in lista) # True

📌 Nota importante

Mojo está en desarrollo y su sintaxis evoluciona rápidamente. Aunque hoy comparte casi todos los operadores con Python, algunos detalles pueden cambiar en futuras versiones.




🧳 Python vs Mojo: ¿Quién viaja más ligero?

Introducción

En el mundo de la programación, cada lenguaje tiene su personalidad. Algunos son flexibles y amigables, otros potentes pero exigentes. Hoy te presento una comparativa entre Python, el viajero ligero, y Mojo, el atleta de alto rendimiento con maletas pesadas. ¿Cuál se adapta mejor a tu proyecto?

🐍 Python: El turista con mochila
Python es como ese viajero que lleva solo lo esencial:

  • Una mochila con su código
  • Puede entrar en casi cualquier sistema operativo sin pedir permisos
  • No necesita visados ni instalaciones complicadas
    Ventajas:
  • ✅ Portabilidad: puedes ejecutar tu script en Windows, Linux, Mac sin complicaciones
  • ✅ Sintaxis sencilla y legible
  • ✅ Comunidad enorme y recursos didácticos por doquier

Ejemplo:

  • def suma(a,b)

    • return a+b

  • resultado = suma (3, 5)
  • print(«La suma es: «.resultado)

🔥 Mojo: El viajero con equipaje técnico

Mojo, en cambio, es como un atleta que viaja con maletas llenas de herramientas especializadas.

  • Necesita que el país (el PC) tenga Linux o WSL
  • Requiere instalar su propio runtime y compilador
  • No se conforma con una mochila: quiere rendimiento extremo

Ventajas:

  • ⚡ Velocidad cercana a C++
  • 🧠 Tipado estático para optimización
  • 🛠️ Ideal para computación intensiva y sistemas

Ejemplo:

  • fn suma(a: Int, b: Int) -> Int:

    • return a+b

  • fn main():

    • let resultado = suma(3, 5)
    • print («La suma es: «,resultado

🎨 Infografía comparativa

Aquí tienes una ilustración que resume esta idea con humor:

  • Python: sonriente, con mochila ligera, entra sin problemas
  • Mojo: serio, con maletas grandes, necesita infraestructura especial



Variables en Mojo

Introducción divertida

  • En Mojo las variables son como cajas mutables donde guardamos valores.
  • Una caja con tapa que se puede abrir y cambiar el contenido.
  • Contrástalo con alias (constantes), que serían cajas selladas con cinta: no se pueden modificar.

2. Ejemplos básicos con código

  • var contador: Int = 0
  • contador += 1 # ✅ se puede modificar
  • alias PI: Float64 = 3.14159
  • # PI = 3.2 # ❌ Error: alias no se puede cambiar
  • ________________________
  • Tip visual: un contador con un marcador que sube, y un círculo con el símbolo π sellado.

3. Inferencia de tipos

  • var nombre = «Javier» # tipo inferido: String
  • var edad = 30 # tipo inferido: Int

  • Mojo como un “detective” que adivina el tipo de la variable por el valor.

4. Sección interactiva

  • Minijuego: “¿Mutable o constante?”
    Fragmentos de código si compila o da error.
  • Ejemplo:

  • alias saludo = «Hola»
  • saludo = «Adiós»
  • → ¿Funciona o falla?

5. Comparativa visual

Haz una tabla ilustrada:

Palabra clave Mutalidad Ejemplo imagen
var ✅ mutable var x = 10 Caja abierta
alias ❌ constante alias y = 20 Caja cerrada



📝 Tutorial: “Hola Mundo en Mojo — de error a éxito”

1. Primer intento (error)

print(«Hola desde Mojo»)

Resultado al ejecutar:

mojo: error: module does not define a `main` function

👉 Explicación: Mojo necesita un punto de entrada (main()), no permite expresiones sueltas en el archivo.

2. Segundo intento (error con comentarios)

  • fn main():
  • print(«Hola desde Mojo») // comentario

Resultado al ejecutar:

  • error: unexpected token in expression

👉 Explicación: En la versión actual, Mojo no soporta // para comentarios. Solo acepta #.

3. Versión corregida (funciona)

  • Mojo

    • fn main():

      • # Cada linea en Mojo se llama declaracion
      • print(«Hola desde Mojo»)
      • # El print(«Hola desde Mojo») es una instruccion
      • # Las instrucciones terminan con salto de linea
      • # Mojo trata todo entre comillas como una cadena
      • # Mojo trata todo entre comillas como una cadena

Resultado al ejecutar:

  • Hola desde Mojo

👉 Explicación:

  • fn main(): define el punto de entrada.
  • print(...) está indentado dentro de main.
  • Los comentarios se escriben con #.



🚀 Cómo instalar Mojo por primera vez en Windows usando WSL

Si estás en Windows y quieres empezar a programar en Mojo, el nuevo lenguaje diseñado para alto rendimiento y compatibilidad con Python, esta guía te llevará paso a paso desde cero. Usaremos WSL (Windows Subsystem for Linux) para crear un entorno Linux dentro de Windows, ideal para instalar Mojo y trabajar cómodamente.

🧠 ¿Qué es WSL?

WSL es una herramienta que te permite ejecutar Linux directamente dentro de Windows, sin máquinas virtuales ni reinicios. Es como tener Ubuntu funcionando como una app más en tu escritorio.

Con WSL puedes:

  • Usar comandos y herramientas de Linux (git, gcc, python, etc.).
  • Instalar entornos como Mojo, Rust, Node.js, etc.
  • Acceder a tus archivos de Windows desde Linux (/mnt/c/...).
  • Usar Visual Studio Code para editar archivos en Linux desde Windows.

🛠️ Paso 1: Instalar WSL y Ubuntu

  1. Abre PowerShell como administrador.
  2. Ejecuta:
  3. Reinicia tu PC si lo pide.
  4. Se instalará Ubuntu automáticamente (puedes elegir otra distro si lo prefieres).
  5. Abre Ubuntu desde el menú de inicio y crea tu usuario Linux.

    • Algo asi seria:
    • wsl –install
      La operación solicitada requiere elevación.
      Descargando: Subsistema de Windows para Linux 2.6.1
      Instalando: Subsistema de Windows para Linux 2.6.1
      Se ha instalado Subsistema de Windows para Linux 2.6.1.
      Instalando componente opcional de Windows: VirtualMachinePlatform
      Herramienta Administración y mantenimiento de imágenes de implementación
      Versión: 10.0.26100.5074
      Versión de imagen: 10.0.26200.7171
      Habilitando características
      [==========================100.0%==========================]
      La operación se completó correctamente.
      La operación solicitada se realizó correctamente. Los cambios se aplicarán una vez que se reinicie el sistema.
      La operación solicitada se realizó correctamente. Los cambios se aplicarán una vez que se reinicie el sistema.
      C:\Users\danie>^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O

🚀 Cómo instalar Mojo por primera vez en Windows usando WSL

Si estás en Windows y quieres empezar a programar en Mojo, el nuevo lenguaje diseñado para alto rendimiento y compatibilidad con Python, esta guía te llevará paso a paso desde cero. Usaremos WSL (Windows Subsystem for Linux) para crear un entorno Linux dentro de Windows, ideal para instalar Mojo y trabajar cómodamente.

🧠 ¿Qué es WSL?

WSL es una herramienta que te permite ejecutar Linux directamente dentro de Windows, sin máquinas virtuales ni reinicios. Es como tener Ubuntu funcionando como una app más en tu escritorio.

Con WSL puedes:

  • Usar comandos y herramientas de Linux (git, gcc, python, etc.).
  • Instalar entornos como Mojo, Rust, Node.js, etc.
  • Acceder a tus archivos de Windows desde Linux (/mnt/c/...).
  • Usar Visual Studio Code para editar archivos en Linux desde Windows.

🛠️ Paso 1: Instalar WSL y Ubuntu

  1. Abre PowerShell como administrador.
  2. Ejecuta:
  3. Reinicia tu PC si lo pide.
  4. Se instalará Ubuntu automáticamente (puedes elegir otra distro si lo prefieres).
  5. Abre Ubuntu desde el menú de inicio y crea tu usuario Linux.

⚙️ Paso 2: Preparar el entorno Linux

Dentro de Ubuntu:

sudo apt update && sudo apt upgrade

sudo apt install python3 python3-pip

Esto instala Python y pip, necesarios para Mojo.

📦 Paso 3: Instalar el SDK de Mojo

  1. Ve al sitio oficial de Modular.
  2. Regístrate para acceder al SDK.
  3. Descarga el archivo .tar.gz y colócalo en tu carpeta de usuario en Ubuntu.
  4. Descomprime el SDK:

    • tar -xvzf mojo-sdk.tar.gz

  5. Agrega Mojo al PATH. Edita tu archivo .bashrc:

    • nano ~/.bashrc
    • Añade al final:

      • export PATH=»$HOME/mojo/bin:$PATH»

    • Guarda y ejecuta:

      • source ~/.bashrc

  6. Verifica la instalación:

    • mojo –version

🧑‍💻 Paso 4: Configurar Visual Studio Code

  1. Instala Visual Studio Code en Windows.
  2. Instala la extensión Remote – WSL.
  3. Abre tu proyecto en Ubuntu desde VS Code.
  4. (Opcional) Instala la extensión Mojo Language Support si está disponible.

🧪 Paso 5: Tu primer programa en Mojo

Crea un archivo hola.mojo con este contenido:

fn main(): print(«¡Hola, Mojo!»)

Ejecuta desde la terminal:

mojo hola.mojo

¡Y listo! Tu entorno Mojo está funcionando.

🎯 Conclusión

Gracias a WSL, puedes disfrutar de la potencia de Linux sin salir de Windows. Mojo se instala fácilmente en este entorno, y con Visual Studio Code puedes tener una experiencia de desarrollo moderna, didáctica y visual.




Explorando Arrays en C: Un ejemplo paso a paso

En este artículo, vamos a desglosar un pequeño programa en C que utiliza un array de enteros para almacenar y mostrar valores. Este tipo de estructuras es fundamental para trabajar con colecciones de datos en C.

📌 Código completo

#include <stdio.h>

int main()
{
    int array1[5]; // Declaración de un array de enteros con 5 elementos

    array1[0] = 10;
    array1[1] = 20;
    array1[2] = 30;
    array1[3] = 40;
    array1[4] = 50;

    printf("Elementos del array1:\n");

    for (int i = 0; i < 5; i++) 
    {   // Bucle para recorrer el array desde 0 hasta 4
        printf("Elemento (indice  %d ) con valor -> %d int array[5] \n", i, array1[i]);
    }

    return 0;
}

🧩 ¿Qué hace este programa?

  1. Declaración del arrayint array1[5];Se crea un array llamado array1 que puede almacenar 5 enteros. Los índices válidos van del 0 al 4.
  2. Asignación de valoresarray1[0] = 10; array1[1] = 20; ...Cada posición del array se llena manualmente con un valor. Esto simula una carga estática de datos.
  3. Impresión de los elementosfor (int i = 0; i < 5; i++)Se utiliza un bucle for para recorrer el array. En cada iteración, se imprime el índice y el valor correspondiente.

🖼️ Salida esperada

Elementos del array1:
Elemento (indice  0 ) con valor -> 10 int array[5] 
Elemento (indice  1 ) con valor -> 20 int array[5] 
Elemento (indice  2 ) con valor -> 30 int array[5] 
Elemento (indice  3 ) con valor -> 40 int array[5] 
Elemento (indice  4 ) con valor -> 50 int array[5] 

🎓 ¿Qué puedes aprender de este ejemplo?

  • Cómo declarar y usar arrays en C.
  • Cómo acceder a cada elemento usando su índice.
  • Cómo recorrer un array con un bucle for.
  • La importancia de los comentarios para entender el código.

💡 Tip didáctico para tu blog

Puedes invitar a tus lectores a modificar el código para:

  • Cambiar los valores del array.
  • Usar un bucle while en lugar de for.
  • Imprimir los valores en orden inverso.



Ejemplo de Bucle do while con Colores ANSI en C

Aquí tienes un ejemplo de bucle do while en C con colores ANSI para resaltar partes clave en consola. Es compatible con sistemas que soportan ANSI (como Windows 10/11 con consola moderna).


🎨 Ejemplo educativo con colores ANSI

#include <stdio.h>

#define RESET   "\x1b[0m"
#define BLUE    "\x1b[94m"
#define GRAY    "\x1b[90m"
#define GREEN   "\x1b[92m"
#define RED     "\x1b[91m"
#define CYAN    "\x1b[96m"

int main() {
    int numero;

    // Titulo centrado en azul brillante
    printf(BLUE "\n========== INGRESO DE NUMERO ==========\n\n" RESET);

    do {
        // Comentario en gris
        printf(GRAY "// Solicita un numero mayor que 0\n" RESET);

        // Entrada del usuario en verde
        printf(GREEN "Introduce un numero: " RESET);
        scanf("%d", &numero);

        // Mensaje de error en rojo si el numero no es valido
        if (numero <= 0) {
            printf(RED "Numero invalido. Debe ser mayor que 0.\n\n" RESET);
        }

    } while (numero <= 0);

    // Confirmacion final en cian
    printf(CYAN "\nGracias! Has introducido: %d\n" RESET, numero);

    return 0;
}

🧠 Tips para enseñanza

  • Evita acentos para compatibilidad universal.
  • Usa #define para mantener el código limpio y modular.
  • Puedes adaptar los colores para resaltar otras secciones como menús o resultados.