Hasta ahora, nuestros programas ejecutaban instrucciones en línea recta. Hoy profundizaremos en cómo dotar de "razonamiento" a la máquina para que evalúe situaciones y elija diferentes caminos de forma autónoma.
En el mundo real, la solución a un problema casi nunca es una línea recta. Dependemos de condiciones: "Si mi saldo es mayor al precio, compro el juego; si no, sigo ahorrando."
Para lograr esto en código, utilizamos una estructura que evalúa una Expresión Lógica. Dependiendo si el resultado es True o False, el flujo del programa se desvía.
Explora cómo se ve el concepto de decisión en distintas herramientas que usamos en años anteriores:
En los diagramas, la decisión se representa con un Rombo. Tiene una entrada y dos salidas estrictas (Verdadero o Falso).
En pseudocódigo (PSeInt), utilizamos las palabras reservadas Si, Entonces y SiNo.
En MakeCode para Micro:bit, los bloques lógicos las piezas hexagonales (booleanas) dentro del bloque "Si <_> entonces Sino ".
En Scratch, el famoso bloque en forma de "C" envuelve las acciones que se ejecutan si / si no.
En Python, nos deshacemos de los bloques visuales y dependemos de la Indentación (sangría). La indentación le dice a Python qué código pertenece "adentro" de la decisión.
Usa un if simple (sin else). Verifica si la variable puntos es mayor a 1000. Si lo es, imprime "¡Nivel Desbloqueado!".
Verifica si la contrasena ingresada es exactamente igual a "admin123". Usa if-else para imprimir "Acceso concedido" o "Acceso denegado".
En matemáticas, si el resto de dividir un número entre 2 es cero, el número es par. Usa if numero % 2 == 0: para imprimir si el número es "Par" o "Impar".
La estructura if - else es binaria (blanco o negro). Sin embargo, muchos problemas requieren evaluar rangos o varias opciones (Ej: Categorías de peso, calificaciones, estados del clima).
Si usaramos puros if dentro de otros if (anidación), el código se iría empujando hacia la derecha formando una pirámide difícil de leer. Para solucionarlo, Python utiliza la cláusula elif (Else If).
if - elif - else, lo hace desde arriba hacia abajo. En el instante exacto en que una condición resulta True, ejecuta ese bloque y salta automáticamente hasta el final, ignorando todo el resto de las comprobaciones.
Clasifica el clima: Si temp > 30 imprime "Calor". Elif temp > 20 imprime "Agradable". Elif temp > 10 imprime "Fresco". Else, imprime "Frío".
Evalúa la variable color. Si es "Rojo" -> "Detener". Elif "Amarillo" -> "Precaución". Elif "Verde" -> "Avanzar". Else -> "Color inválido".
Si la batería es > 80 imprime "Batería Alta". Si es > 20 imprime "Batería Media". Si es <= 20 imprime "Batería Baja".
Introducida en Python 3.10, la estructura match-case (conocida como switch-case en otros lenguajes) está diseñada específicamente para comparar el valor de una variable contra patrones o valores exactos.
¿Por qué usarlo si ya tenemos elif? Cuando evaluamos un menú de opciones, escribir elif opcion == "A": repetidas veces ensucia el código. match-case es más elegante, directo y rápido para el procesador cuando hay coincidencias cerradas.
Usa match en la variable dia. Para 1 imprime "Lunes", 2 "Martes", etc. Usa el caso _ para imprimir "Día inválido".
Match error: 404 -> "No encontrado", 500 -> "Error de servidor", 403 -> "Prohibido", caso _ -> "Código desconocido".
Evalúa el string comando. "W" -> "Arriba", "S" -> "Abajo", "A" -> "Izquierda", "D" -> "Derecha", caso _ -> "Tecla no asignada".
Antes de pasar a los laboratorios de codificación, repasa conceptualmente cada estructura y observa en tiempo real cómo la computadora evalúa e "ilumina" el código según los valores que ingreses.
Evalúa una condición.
Si es True, ejecuta el bloque. Si es False, no hace nada y el programa continúa.
Bifurcación estricta.
Asegura que se ejecute un camino o el otro. Es blanco o negro.
Anidación limpia.
Permite evaluar múltiples condiciones en cadena. Se detiene en el primer True.
Selección exacta.
Compara una variable contra valores exactos. Ideal para menús.
if simpleSi es menor o igual a 100, la computadora salta el bloque sin entrar.
if - elseelifmatch-caseYa dominas la teoría. Ahora pondrás a prueba tu capacidad de modelar escenarios complejos mediante código interactivo.
Estás programando la Inteligencia Artificial (IA) de un aldeano en Minecraft que acaba de ver a un Zombie. Tu objetivo es escribir el bloque de código que decide qué hará el aldeano.
True) Y su vida es mayor a 50, debe imprimir "¡Atacar al zombie!"."¡Huir rápidamente!"."Esconderse en la casa."
Selecciona una de los problemas del menú desplegable. El editor cambiará dinámicamente y te presentará el código para esa situación. Estudia el problema, modifica las variables y ejecuta el programa para ver cómo reacciona.