Documentación de HispanoLang

Referencia completa de sintaxis, comandos y características del lenguaje

🎯 Elegir/Caso (Switch)

La estructura elegir/caso es como el menú de la cafetería escolar: tienes un número y según ese número obtienes un plato diferente. Es más limpia que escribir muchos 'si-sino si' cuando comparas un valor contra múltiples opciones.

¿Qué es Elegir/Caso?

Imagina que en la cafetería escolar eliges tu almuerzo por número: 1=Milanesa, 2=Pizza, 3=Ensalada. En vez de preguntar '¿es 1? ¿es 2? ¿es 3?', simplemente dices tu número y te dan el plato correspondiente. Eso es elegir/caso.

elegir variable caso valor pordefecto
variable opcionMenu = 2

elegir (opcionMenu) {
  caso 1:
      mostrar "Milanesa con puré"
  caso 2:
      mostrar "Pizza de muzzarella" // Pizza de muzzarella
  caso 3:
      mostrar "Ensalada César"
  caso 4:
      mostrar "Pasta con salsa"
  pordefecto:
      mostrar "Opción no disponible"
}
  • elegir (variable) evalúa el valor de la variable
  • Compara ese valor con cada 'caso'
  • Ejecuta el código del caso que coincida
  • pordefecto se ejecuta si ningún caso coincide (opcional pero recomendado)
  • Más limpio que muchos si-sino si cuando comparas contra valores específicos

Comparación: Elegir vs Si-Sino Si

Veamos la diferencia entre usar 'si-sino si' y 'elegir/caso' para el mismo problema.

variable dia = 3

// Con si-sino si (muchas repeticiones)
si dia == 1 {
  mostrar "Lunes"
} sino si dia == 2 {
  mostrar "Martes"
} sino si dia == 3 {
  mostrar "Miércoles" // Miércoles
} sino si dia == 4 {
  mostrar "Jueves"
} sino si dia == 5 {
  mostrar "Viernes"
} sino {
  mostrar "Fin de semana"
}

// Con elegir/caso (más limpio)
elegir (dia) {
  caso 1:
      mostrar "Lunes"
  caso 2:
      mostrar "Martes"
  caso 3:
      mostrar "Miércoles" // Miércoles
  caso 4:
      mostrar "Jueves"
  caso 5:
      mostrar "Viernes"
  pordefecto:
      mostrar "Fin de semana"
}
  • Ambos hacen exactamente lo mismo
  • Con si-sino si: repetimos 'dia ==' muchas veces
  • Con elegir/caso: mencionamos 'dia' una sola vez
  • elegir/caso es más claro cuando comparas UNA variable contra MUCHOS valores
  • si-sino si es mejor cuando tienes condiciones complejas (mayor que, menor que, y, o)

Eligiendo Días de la Semana

Un uso común es mostrar información según el día. Como el horario escolar que cambia cada día.

variable diaSemana = 1

elegir (diaSemana) {
  caso 1:
      mostrar "Lunes - Matemática, Historia, Educación Física" // Lunes - Matemática, Historia, Educación Física
  caso 2:
      mostrar "Martes - Lengua, Ciencias, Arte"
  caso 3:
      mostrar "Miércoles - Matemática, Inglés, Música"
  caso 4:
      mostrar "Jueves - Historia, Ciencias, Educación Física"
  caso 5:
      mostrar "Viernes - Lengua, Matemática, Laboratorio"
  caso 6:
      mostrar "Sábado - No hay clases"
  caso 7:
      mostrar "Domingo - No hay clases"
  pordefecto:
      mostrar "Día inválido"
}

variable mesActual = 12

elegir (mesActual) {
  caso 1:
      mostrar "Enero - Vacaciones de verano"
  caso 2:
      mostrar "Febrero - Vacaciones de verano"
  caso 3:
      mostrar "Marzo - Inicio de clases"
  caso 12:
      mostrar "Diciembre - Fin de año escolar" // Diciembre - Fin de año escolar
  pordefecto:
      mostrar "Mes regular de clases"
}
  • Cada caso representa una opción diferente
  • Los números deben coincidir exactamente: caso 1 solo coincide con 1
  • El orden de los casos no importa (a diferencia de si-sino si)
  • pordefecto captura cualquier valor que no coincida con los casos
  • Útil para menús, días, meses, opciones numeradas

Uso con Texto: Calificaciones por Letra

Los casos no solo funcionan con números. También puedes usar texto, como las letras de calificación (A, B, C, D, F).

variable calificacion = "B"

elegir (calificacion) {
  caso "A":
      mostrar "Excelente - 90 a 100 puntos"
      mostrar "¡Felicitaciones!"
  caso "B":
      mostrar "Muy Bueno - 80 a 89 puntos" // Muy Bueno - 80 a 89 puntos
      mostrar "Buen trabajo" // Buen trabajo
  caso "C":
      mostrar "Bueno - 70 a 79 puntos"
      mostrar "Aprobado"
  caso "D":
      mostrar "Suficiente - 60 a 69 puntos"
      mostrar "Debes mejorar"
  caso "F":
      mostrar "Reprobado - Menos de 60 puntos"
      mostrar "Debes recursar"
  pordefecto:
      mostrar "Calificación inválida"
}
  • Los strings (texto) deben ir entre comillas: caso "A"
  • La comparación distingue mayúsculas: "A" ≠ "a"
  • Puedes poner múltiples líneas de código en cada caso
  • Cada caso se ejecuta completo antes de salir del elegir
  • Los casos con texto son útiles para menús, comandos, opciones

Sistema de Menú de Materias

Veamos un ejemplo práctico: un sistema para elegir materias optativas según tu preferencia.

variable materiaElegida = "Deportes"

elegir (materiaElegida) {
  caso "Arte":
      mostrar "=== MATERIA: ARTE ==="
      mostrar "Horario: Lunes y Miércoles 14:00-16:00"
      mostrar "Profesor: María González"
      mostrar "Materiales: Pinceles, témperas, lienzo"
  caso "Música":
      mostrar "=== MATERIA: MÚSICA ==="
      mostrar "Horario: Martes y Jueves 14:00-16:00"
      mostrar "Profesor: Carlos Ruiz"
      mostrar "Materiales: Instrumento propio"
  caso "Deportes":
      mostrar "=== MATERIA: DEPORTES ===" // === MATERIA: DEPORTES ===
      mostrar "Horario: Lunes, Miércoles y Viernes 15:00-17:00" // Horario: Lunes, Miércoles y Viernes 15:00-17:00
      mostrar "Profesor: Ana Martínez" // Profesor: Ana Martínez
      mostrar "Materiales: Ropa deportiva, zapatillas" // Materiales: Ropa deportiva, zapatillas
  caso "Teatro":
      mostrar "=== MATERIA: TEATRO ==="
      mostrar "Horario: Jueves 14:00-17:00"
      mostrar "Profesor: Roberto Silva"
      mostrar "Materiales: Ninguno especial"
  pordefecto:
      mostrar "Materia no disponible"
      mostrar "Opciones: Arte, Música, Deportes, Teatro"
}
  • Cada caso puede tener múltiples líneas de código
  • Es como un menú interactivo: seleccionas una opción y obtienes info
  • pordefecto muestra un mensaje de error y opciones válidas
  • Más organizado que si-sino si para este tipo de selección
  • Fácil de mantener: agregar una materia = agregar un caso

¿Cuándo Usar Elegir vs Si-Sino Si?

Guía práctica para decidir cuándo usar cada estructura.

variable opcion = 2

// elegir es mejor para valores exactos
elegir (opcion) {
  caso 1:
      mostrar "Opción A"
  caso 2:
      mostrar "Opción B" // Opción B
  caso 3:
      mostrar "Opción C"
}

variable nota = 85

// si-sino si es mejor para rangos
si nota >= 90 {
  mostrar "A"
} sino si nota >= 80 {
  mostrar "B" // B
} sino si nota >= 70 {
  mostrar "C"
}

Usa elegir/caso cuando:

  • Comparas UNA variable contra valores EXACTOS (==)
  • Tienes muchas opciones específicas (menús, días, letras)
  • Los valores son números o strings concretos
  • Quieres código más limpio y organizado

Usa si-sino si cuando:

  • Usas operadores de comparación
  • Verificas rangos (nota >= 90, nota >= 80...)
  • Combinas condiciones con 'y', 'o'
  • Las condiciones son complejas

Regla simple: igualdad usa elegir, comparaciones usa si-sino si

Sistema Completo: Selector de Nivel de Dificultad

Ejemplo completo que muestra cómo usar elegir/caso en un contexto real: un selector de dificultad de examen.

variable nivelSeleccionado = 2

mostrar "=== SELECTOR DE DIFICULTAD DE EXAMEN ===" // === SELECTOR DE DIFICULTAD DE EXAMEN ===
mostrar "" //

elegir (nivelSeleccionado) {
  caso 1:
      mostrar "NIVEL BÁSICO"
      mostrar "Duración: 60 minutos"
      mostrar "Preguntas: 20"
      mostrar "Temas: Conceptos fundamentales"
      mostrar "Puntaje mínimo: 70 puntos"
  caso 2:
      mostrar "NIVEL INTERMEDIO" // NIVEL INTERMEDIO
      mostrar "Duración: 90 minutos" // Duración: 90 minutos
      mostrar "Preguntas: 30" // Preguntas: 30
      mostrar "Temas: Aplicación de conceptos" // Temas: Aplicación de conceptos
      mostrar "Puntaje mínimo: 75 puntos" // Puntaje mínimo: 75 puntos
  caso 3:
      mostrar "NIVEL AVANZADO"
      mostrar "Duración: 120 minutos"
      mostrar "Preguntas: 40"
      mostrar "Temas: Análisis y síntesis"
      mostrar "Puntaje mínimo: 80 puntos"
  caso 4:
      mostrar "NIVEL EXPERTO"
      mostrar "Duración: 150 minutos"
      mostrar "Preguntas: 50"
      mostrar "Temas: Casos complejos y resolución de problemas"
      mostrar "Puntaje mínimo: 85 puntos"
  pordefecto:
      mostrar "Nivel inválido"
      mostrar "Por favor selecciona: 1, 2, 3 o 4"
}

mostrar "" //
mostrar "Examen configurado correctamente" // Examen configurado correctamente
  • Sistema organizado con información clara por nivel
  • Cada caso muestra múltiples datos relacionados
  • pordefecto maneja errores de entrada
  • Fácil de expandir: agregar nivel 5 = agregar un caso
  • Estructura clara para el usuario y el programador
  • Este patrón se usa en: configuraciones, menús, selectores

Consejos y Buenas Prácticas

Recomendaciones para usar elegir/caso de forma efectiva.

  • SIEMPRE incluye pordefecto (aunque creas que no es necesario)
  • Agrupa casos relacionados visualmente con líneas en blanco
  • Mantén los casos en orden lógico (1, 2, 3 o A, B, C)
  • Usa constantes para opciones: OPCION_BASICO = 1
  • Si todos los casos hacen lo mismo, considera usar otra estructura
  • No pongas lógica muy compleja dentro de un caso (crea funciones)
  • No uses elegir si solo tienes 2-3 opciones (usa si-sino)
  • elegir/caso brilla cuando tienes 4+ opciones específicas