Qué es un algoritmo
Un algoritmo es una secuencia finita de pasos que resuelve un problema. Definición clara, ejemplos cotidianos y en código, y cómo diseñar el tuyo paso a paso.
Definición rápida
Un algoritmo es una secuencia finita y ordenada de pasos sin ambigüedad que, partiendo de unos datos de entrada, produce el resultado buscado.
Un algoritmo es una secuencia finita de pasos, ordenados y sin ambigüedad, que transforma unos datos de entrada en un resultado. No es un concepto de informática avanzada: una receta de cocina o las instrucciones para montar un mueble son algoritmos. Programar consiste en diseñar algoritmos y después escribirlos en un lenguaje que el ordenador entienda.
Las tres propiedades que lo definen
Para que una lista de pasos merezca el nombre de algoritmo tiene que cumplir tres cosas:
- Finito. Termina. Un proceso que no acaba nunca no resuelve nada; en código eso se llama bucle infinito y es un error.
- Ordenado. Los pasos van en una secuencia concreta. Cambiar el orden cambia el resultado: cobra después de servir, no antes.
- No ambiguo. Cada paso significa una sola cosa. «Añade sal al gusto» no vale para un ordenador; «añade 5 gramos de sal» sí.
Además todo algoritmo tiene entrada (los datos con los que trabaja) y salida (lo que devuelve). Tenerlo claro antes de escribir código evita la mitad de los bloqueos del principio.
Del problema al algoritmo, con un ejemplo
Problema: dada una lista de notas, decir si el alumno aprueba.
Antes de escribir código, los pasos en lenguaje natural:
- Empieza con una suma a cero.
- Recorre las notas una por una sumándolas.
- Divide la suma total entre la cantidad de notas: ese es el promedio.
- Si el promedio es 5 o más el resultado es «Aprobado»; si no, «Suspenso».
Eso ya es un algoritmo: termina, está ordenado y no hay ningún paso que dependa de la interpretación. Solo queda traducirlo:
function evaluar(notas) {
let suma = 0;
for (let i = 0; i < notas.length; i++) {
suma = suma + notas[i];
}
const promedio = suma / notas.length;
if (promedio >= 5) {
return "Aprobado";
}
return "Suspenso";
}
console.log(evaluar([7, 8, 6])); // "Aprobado"
El código es una traducción casi literal de los cuatro pasos. Cuando el algoritmo está bien pensado, escribirlo es la parte fácil. Cuando alguien se atasca delante del editor casi nunca es un problema de sintaxis: es que no tiene el algoritmo.
El paso que todo el mundo se salta
Sentarse a escribir código directamente. Funciona con problemas triviales y se derrumba en cuanto hay tres casos que considerar. La alternativa cuesta cinco minutos: escribir los pasos en pseudocódigo o en castellano llano y solo después traducirlos usando variables, condicionales y bucles.
Un mismo problema, varios algoritmos
Casi siempre hay más de una forma de resolver algo, y unas son mucho mejores que otras. Buscar un nombre en una lista ordenada de un millón de elementos:
- Mirar uno por uno desde el principio: hasta un millón de comprobaciones.
- Partir la lista por la mitad en cada paso, aprovechando que está ordenada: unas veinte comprobaciones.
Mismo resultado, misma corrección, coste radicalmente distinto. Comparar algoritmos por su coste es lo que separa a alguien que «hace que funcione» de alguien que escribe software capaz de aguantar datos reales.
Cómo se practica esto en el curso
El módulo 2 introduce la idea de algoritmo antes de enseñar sintaxis, para que el orden mental sea el correcto: primero piensas, luego escribes. A partir del módulo 3 cada ejercicio autocorregible es un algoritmo pequeño con su especificación —qué entra, qué sale y qué casos límite hay— y el módulo 7 se dedica entero a los algoritmos clásicos de búsqueda, ordenación y recursión. Puedes ver la secuencia completa en el temario.
Preguntas frecuentes
¿Cuál es la diferencia entre algoritmo y programa?
El algoritmo es la idea: los pasos para resolver el problema. El programa es esa idea escrita en un lenguaje concreto y ejecutable. El mismo algoritmo puede programarse en JavaScript, Python o C sin cambiar.
¿Un algoritmo tiene que ser complicado?
No. Sumar dos números es un algoritmo. Lo que define a un algoritmo no es su dificultad, sino que sus pasos sean finitos, ordenados y sin ambigüedad.
¿Cómo sé si mi algoritmo es correcto?
Probándolo con casos límite, no solo con el ejemplo bonito: lista vacía, un único elemento, valores negativos, empates. Si sobrevive a los casos raros, suele ser correcto.