Parte 4 — Control del programa

⏮️ Parte 3 · ⬅️ Programa · 📚 Índice · ⏭️ Parte 5

16 clases · rango 057–072 · clases de código · nivel intermedio · ~40 h (cronograma)

🧭 Decidir, repetir y fallar: el flujo del programa y sus formas en diez lenguajes.


🧭 De qué trata esta parte

Un programa que solo calcula expresiones no es todavía un programa. La Parte 4 añade las dos operaciones que lo convierten en uno —decidir y repetir— y termina con la tercera que nadie llama control de flujo y lo es: fallar.

El recorrido va de lo más concreto a lo más expresivo. Empieza por la condición y sus formas (if, ternario, switch, match), sigue por los bucles en sus tres sabores (por condición, por rango, por colección) y llega a la iteración perezosa y a las comprensiones, donde el «cómo recorro» empieza a desaparecer del código. Después, map/filter/reduce y la recursión muestran que se puede repetir sin escribir un solo bucle.

El cierre son las dos filosofías del error: la excepción, que salta por la pila hasta quien sepa atenderla, y el resultado como valor, que obliga a mirarlo en el sitio. Es una de las divisiones más profundas entre los lenguajes del núcleo y se ve mejor con las dos implementadas lado a lado.

🎒 Qué necesitas traer

La Parte 3 completa: booleanos (046), operadores (055) y entrada/salida (056) se usan en todas las clases de esta parte.

🎯 Qué sabrás hacer al terminar

Resultados comprobables: si no puedes hacerlos, la parte no está cerrada.

  1. Elegir entre if, switch y match con un criterio explícito y no por costumbre.
  2. Escribir un bucle con su invariante y su condición de parada argumentadas.
  3. Reescribir un bucle imperativo como comprensión o como map/filter/reduce.
  4. Explicar qué hace el cortocircuito y por qué es semántica y no optimización.
  5. Implementar el mismo fallo con excepciones y con Result, y defender cuál conviene.
  6. Reconocer cuándo la recursión es la forma natural y cuándo va a desbordar la pila.

🗺️ El recorrido, clase a clase

Las clases están agrupadas en bloques por la razón que las une. El orden es secuencial: cada una asume la anterior.

🔹 Decidir · clases 057–062

De la condición booleana a la coincidencia de patrones, pasando por las guardas y el switch.

🔹 Repetir · clases 063–067

Los tres sabores de bucle, la evaluación perezosa y las comprensiones.

🔹 Repetir sin bucles · clases 068–069

Funciones de orden superior y recursión: el mismo trabajo sin escribir el recorrido.

🔹 Salir del flujo y fallar bien · clases 070–072

Saltos controlados y las dos grandes filosofías del manejo de errores.

⚠️ Los malentendidos que esta parte corrige

Se suele creer Lo que ocurre en realidad
«match es un switch más bonito.» El switch compara con constantes; el match compara formas y desestructura. Son operaciones distintas.
«La recursión siempre es más elegante.» Es más natural sobre estructuras recursivas y desastrosa sobre secuencias largas en lenguajes sin optimización de cola.
«Las excepciones son el manejo de errores moderno.» Go y Rust demuestran lo contrario: el error como valor es igual de moderno y mucho más visible en la firma.

🧪 Cómo estudiar esta parte

  1. Lee el modelo y el pseudocódigo primero. Si entiendes el algoritmo neutral, las diez implementaciones son diez traducciones, no diez problemas.
  2. Lee las diez implementaciones, no solo la de tu lenguaje. El aprendizaje está en el contraste: ahí se distingue lo esencial del accidente sintáctico.
  3. Ejecuta el verificador (python scripts/verificar_equivalencia.py NNN) y comprueba tú mismo que coinciden. Fuerza después un caso límite y observa quién se rompe primero.
  4. Lee primos.md para ver el mismo programa en la familia de cada lenguaje: es donde el concepto deja de estar atado a diez nombres concretos.
  5. Haz el reto de transferencia. Portarlo a un lenguaje que no dominas es la única prueba real de que aprendiste el concepto y no la sintaxis.

📚 Fuentes de referencia de esta parte

Cada clase cita estos libros en su sección de referencias. No se reproduce su contenido: la redacción es original.

🔗 Qué abre esta parte

Con flujo y datos elementales, la Parte 5 introduce la abstracción que lo ordena todo: la función y el módulo.


⏮️ Parte 3 · ⬅️ Programa · 📚 Índice · ⏭️ Parte 5