Hemos dicho que programar no es (solo) escribir código en un lenguaje como Python o C++. Programar es diseñar algoritmos.
A menudo, cuando la gente escucha la palabra Algoritmo, se imagina fórmulas matemáticas complejas flotando en el aire o inteligencias artificiales que controlan el mundo. Pero el concepto es mucho más sencillo.
Qué es un algoritmo
Un algoritmo no es más que una estrategia sistematizada para resolver un problema. Aprender a programar es, en realidad, aprender a dividir problemas grandes en pasos pequeños, precisos y ordenados que una máquina pueda seguir.
El lenguaje es solo la herramienta para comunicárselo a la máquina.
Hoy vamos a aprender qué es exactamente un algoritmo, qué reglas debe cumplir y cómo podemos diseñarlos antes de tocar una sola tecla.
Definición de algoritmo
Si nos ponemos formales, un algoritmo es un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.
Podemos verlo como una “caja negra” que transforma una entrada en una salida mediante una serie de pasos predefinidos.

La analogía clásica es la receta de cocina:
- Entrada (Input): Ingredientes (huevos, harina, azúcar).
- Algoritmo: Los pasos a seguir (batir, mezclar, hornear a 180º durante 20 min).
- Salida (Output): Un bizcocho.
Sin embargo, a diferencia de una receta que puede decir “echa una pizca de sal” (algo subjetivo), un algoritmo informático debe ser una definición matemáticamente precisa.
Tres propiedades fundamentales
Para que una lista de instrucciones sea considerada un algoritmo real, debe cumplir tres características sagradas. Si falla alguna, no es un algoritmo.
Cada paso debe estar perfectamente definido. No puede haber lugar a interpretación.
- ❌ Mal: “Mueve el personaje un poco a la derecha”. ¿Cuánto es un poco?
- ✔️ Bien: “Mueve el personaje 10 píxeles a la derecha”.
El ordenador es un soldado obediente pero tonto; hará exactamente lo que le digas, ni más ni menos.
Dado el mismo conjunto de datos de entrada, el algoritmo debe producir siempre el mismo resultado. Si sumas 2 + 2 hoy, debe dar 4. Si lo sumas mañana, debe seguir dando 4.
¿Y los números aleatorios? En realidad, los ordenadores generan números “pseudo-aleatorios”. Son algoritmos deterministas que parecen azarosos, pero si conoces la semilla inicial, puedes predecir la secuencia exacta.
Un algoritmo debe tener un fin. Debe estar diseñado para terminar después de un número finito de pasos.
Si creas una secuencia que nunca termina (un bucle infinito involuntario), el programa se “cuelga”. Eso no es un algoritmo válido para resolver un problema, es un error.
Un ejemplo práctico: La lámpara no funciona
Vamos a ver cómo pensaría un programador ante un problema cotidiano para convertirlo en un algoritmo.
Problema: Entro en una habitación, doy al interruptor y la luz no se enciende.
Diseño del Algoritmo:
Inicio
¿Está la lámpara enchufada?
- NO: Enchufar la lámpara → Fin
- SI: Continuar.
¿Está la bombilla quemada?
- SI: Cambiar la bombilla → Fin
- NO: Continuar.
Comprar una lámpara nueva.
Fin
Igual te parece una tontería, pero acabas de definir un proceso ordenado, finito y preciso (una serie de IF-ELSE) para solucionar una avería.
Las herramientas de diseño
Antes de escribir código, usamos herramientas intermedias para estructurar nuestras ideas. Es como hacer el plano de una casa antes de poner ladrillos.
Son representaciones gráficas del algoritmo. Usan formas geométricas estándar unidas por flechas para mostrar el flujo de la lógica.
- Óvalos: Inicio y Fin.
- Rectángulos: Acciones (ej:
x = x + 1). - Rombos: Decisiones (ej:
¿Es x > 10?).
Son muy útiles para visualizar “caminos” y decisiones complejas, aunque pueden volverse un caos en programas muy grandes.
Es el paso intermedio entre el lenguaje humano y el lenguaje de programación. No tiene una sintaxis estricta (no hay que poner ; al final), pero imita la estructura del código.
Su objetivo es que cualquier programador lo entienda, independientemente de si luego lo va a programar en Java, Python o C#.
Por ejemplo, un algoritmo para saber si un número es par.
INICIO
LEER numero
SI (numero MODULO 2) ES IGUAL A 0 ENTONCES
IMPRIMIR "Es par"
SINO
IMPRIMIR "Es impar"
FIN SI
FIN
Personalmente, odio muy fuerte el pesudocódigo 😎.
Los bloques de construcción
Por muy complejo que sea un programa (desde el Tetris hasta el sistema de navegación de un cohete), todo se construye combinando solo tres estructuras de control básicas:
Secuencia: Un paso va después de otro.
Selección (Condicionales): Tomar decisiones basadas en una pregunta.
Iteración (Bucles): Repetir una acción mientras se cumpla una condición.
Esto se conoce como el Teorema de la programación estructurada (o teorema de Böhm-Jacopini). Con estas tres piezas de Lego, puedes construir cualquier lógica computable.
