Algoritmos: secuencia de pasos
Algoritmos: el arte de pensar como una computadora
Imagina que intentas explicarle a un extraterrestre cómo atarte los cordones de los zapatos. Tendrías que ser increíblemente preciso: «toma el cordón izquierdo con la mano izquierda, el derecho con la derecha, cruza el izquierdo sobre el derecho…». Eso, exactamente eso, es un algoritmo: una secuencia ordenada, finita y sin ambigüedades de pasos para resolver un problema o realizar una tarea.
🎯 En este post aprenderás: La definición formal de algoritmo (sin miedo), sus características indispensables, cómo diseñar algoritmos efectivos, los tipos más comunes (secuenciales, condicionales, iterativos), ejemplos con pseudocódigo y la conexión directa con la programación.
🔍 ¿Qué es exactamente un algoritmo?
📐 Definición técnica (pero sabrosa)
📥 Entradas: Datos iniciales (pueden ser cero o más)
⚙️ Proceso: Pasos ordenados y no ambiguos
📤 Salidas: Resultados (al menos una)
🔚 Fin: Debe terminar en algún momento
Si falta algo de esto, ¡no es un algoritmo!
🍳 La receta de cocina perfecta
Una receta de tortilla de patatas es un algoritmo cotidiano:
Entrada: patatas, huevos, aceite, sal
Proceso: 1. Pelar patatas → 2. Cortar en láminas → 3. Freír → 4. Batir huevos → 5. Mezclar → 6. Cuajar
Salida: Tortilla de patatas
Fin: Cuando está dorada por ambos lados.
Si sigues los pasos exactamente, obtienes el mismo resultado (casi) siempre.
✅ Las 5 características de todo algoritmo
| Característica | Qué significa | Ejemplo (algoritmo de suma) |
|---|---|---|
| Preciso | Cada paso debe estar claramente definido, sin interpretaciones | «Sumar A y B» ✔️ vs «Hacer una operación» ✘ |
| Definido | Si ejecutas varias veces el mismo algoritmo con los mismos datos, obtienes el mismo resultado | 2+3 siempre da 5 |
| Finito | Debe terminar después de un número limitado de pasos (no puede ser infinito) | Sumar números hasta que no haya más (sí). «Repite para siempre» no vale |
| Entradas | Recibe cero o más datos de entrada | Podría sumar 0 números (entrada vacía) y dar 0 |
| Salidas | Produce al menos un resultado | El resultado de la suma |
⚠️ Ojo: «Definido» no significa «correcto». Un algoritmo puede estar perfectamente definido pero dar resultados equivocados porque su lógica es mala. Por ejemplo, un algoritmo para calcular el área del círculo que usara diámetro en lugar de radio estaría bien definido pero daría un área incorrecta. Eso es un error lógico.
🧩 Tipos de algoritmos según su estructura
La mayoría de los algoritmos se construyen combinando solo tres estructuras básicas (el teorema de Böhm-Jacopini): secuencia, selección (condicional) e iteración (bucles). Si dominas estas tres, puedes crear cualquier algoritmo.
1. Algoritmos secuenciales (línea recta)
Se ejecutan en orden, uno tras otro, sin desvíos ni repeticiones. Como leer un libro linealmente.
Leer temperatura_en_celsius
temperatura_en_fahrenheit = temperatura_en_celsius * 9/5 + 32
Escribir «Equivalente en Fahrenheit: «, temperatura_en_fahrenheit
FIN
Ejemplo real: Convertir moneda, calcular IVA, cambiar mayúsculas a minúsculas.
2. Algoritmos condicionales (decisiones)
Introducen bifurcaciones. Según se cumpla una condición, se ejecuta un bloque u otro. La estructura fundamental es SI-ENTONCES-SINO.
Leer edad
SI edad >= 18 ENTONCES
Escribir «Eres mayor de edad. Puedes votar.»
SINO
Escribir «Eres menor de edad. No puedes votar.»
FIN SI
FIN
Ejemplo real: Verificar si un usuario tiene permiso, mostrar descuento según categoría, validar formularios.
3. Algoritmos iterativos (bucles o repeticiones)
Repiten un bloque de instrucciones varias veces mientras se cumpla una condición o hasta alcanzar un límite. Las estructuras más comunes son MIENTRAS, REPETIR-HASTA y PARA.
suma = 0
contador = 1
MIENTRAS contador <= 10 HACER
suma = suma + contador
contador = contador + 1
FIN MIENTRAS
Escribir «La suma de los números del 1 al 10 es: «, suma
FIN
Ejemplo real: Calcular promedio de notas, buscar un elemento en una lista, mostrar menú hasta que el usuario elija salir.
💡 Combinaciones ganadoras: Los algoritmos reales combinan estas tres estructuras. Por ejemplo, un cajero automático: usa secuencia (leer tarjeta, pedir PIN), condiciones (si PIN correcto entonces mostrar menú, si no bloquear) e iteraciones (intentar PIN máximo 3 veces).
📝 Pseudocódigo: el español de los algoritmos
El pseudocódigo es una forma de escribir algoritmos usando una mezcla de lenguaje natural y estructuras de programación, pero sin preocuparse por la sintaxis estricta de ningún lenguaje. Es como el borrador de un programa. Lo usamos para diseñar la lógica antes de escribir código real.
✏️ Pseudocódigo
INICIO
Leer a, b
SI a > b ENTONCES
Escribir a, » es mayor»
SINO
Escribir b, » es mayor»
FIN SI
FIN
🐍 Python real
a = int(input())
b = int(input())
if a > b:
print(f»{a} es mayor»)
else:
print(f»{b} es mayor»)
📘 Explicación
El pseudocódigo se centra en la lógica. Python añade reglas de sintaxis (dos puntos, indentación, paréntesis). Para aprender algoritmos, empieza con pseudocódigo.
🎯 Reglas de oro del pseudocódigo:
✔️ Usa palabras en español como INICIO, FIN, LEER, ESCRIBIR, SI, MIENTRAS.
✔️ Indenta para mostrar la estructura (no obligatorio, pero sí legible).
✔️ No te preocupes por punto y coma, llaves o tipado fuerte.
✔️ Sé más detallado que en lenguaje natural pero menos que en código real.
🧪 Ejemplos clásicos de algoritmos (con pseudocódigo)
Ejemplo 1: Calcular la media de tres números
Leer num1, num2, num3
suma = num1 + num2 + num3
media = suma / 3
Escribir «La media es: «, media
FIN
Ejemplo 2: Determinar si un número es par o impar
Leer numero
SI numero % 2 == 0 ENTONCES
Escribir «El número es par»
SINO
Escribir «El número es impar»
FIN SI
FIN
Ejemplo 3: Contar cuántas veces aparece una letra en una frase
Leer frase, letra
contador = 0
PARA cada caracter EN frase HACER
SI caracter == letra ENTONCES
contador = contador + 1
FIN SI
FIN PARA
Escribir «La letra «, letra, » aparece «, contador, » veces.»
FIN
⚠️ Errores comunes al diseñar algoritmos
| Error típico | Ejemplo | Cómo corregirlo |
|---|---|---|
| Ambigüedad | «Ordena los números» (¿ascendente o descendente?) | Especifica siempre: «ordena de menor a mayor» |
| Falta de finitud | MIENTRAS verdad HACER … (bucle infinito) | Asegura que la condición de salida se alcanza |
| No considerar casos extremos | Dividir por un número sin verificar que no sea cero | Añade una condición que valide entradas peligrosas |
| Pasos demasiado grandes | «Prepara la comida» | Descompón en pasos atómicos: lavar, pelar, cortar… |
| Mezclar niveles de detalle | «Abre la puerta» y «Gira la llave 30 grados en sentido horario» en el mismo algoritmo | Define un nivel de abstracción y mantente en él |
| Olvidar la salida | Algoritmo que calcula algo pero no muestra/guarda el resultado | Siempre debe haber al menos una salida explícita |
🔁 Algoritmos vs programas: la gran diferencia
📜 ALGORITMO
- Independiente del lenguaje
- Puede ser en papel, en pseudocódigo, en diagrama
- No necesita ejecutarse en una máquina real
- Se centra en el «qué» y «cómo» lógico
- Ejemplo: los pasos para buscar una palabra en un diccionario
💻 PROGRAMA
- Implementación concreta de un algoritmo en un lenguaje de programación
- Debe seguir la sintaxis exacta (Python, Java, C++)
- Se ejecuta en una computadora
- Se centra en los detalles técnicos (variables, funciones, librerías)
- Ejemplo: la función buscar_palabra() escrita en Python
💡 Analogía del arquitecto vs constructor: El algoritmo es el plano de la casa (define habitaciones, medidas, materiales). El programa es la casa ya construida siguiendo ese plano. Puedes tener un buen plano (algoritmo) pero una casa mal ejecutada (programa con bugs). O un mal plano pero una casa que se sostiene de milagro. Ideal: buen algoritmo + buena implementación.
🧪 Ejercicios prácticos
Ejercicio 1: Detecta el error en el algoritmo
El siguiente algoritmo pretende calcular el factorial de un número (factorial de 5 = 5×4×3×2×1 = 120). Encuentra el error:
Leer n
factorial = 0
MIENTRAS n > 0 HACER
factorial = factorial * n
n = n – 1
FIN MIENTRAS
Escribir factorial
FIN
✅ Ver solución
Error: factorial comienza en 0, por lo que 0 × cualquier número = 0 siempre. Solución: Inicializar factorial = 1. Además, falla si n=0 (factorial de 0 es 1), pero ese caso especial se puede añadir después.
Ejercicio 2: Escribe el pseudocódigo para un cajero automático (retirada de efectivo)
Define el algoritmo que sigue un cajero automático para retirar dinero. Debe comprobar saldo suficiente, restar la cantidad y entregar billetes (supón billetes de 50, 20, 10). No es necesario optimizar el número de billetes, solo dar una combinación posible.
✅ Ver solución sugerida
Leer cantidad_deseada, saldo_actual
SI cantidad_deseada <= saldo_actual Y cantidad_deseada > 0 ENTONCES
saldo_actual = saldo_actual – cantidad_deseada
// Calcular billetes de 50
billetes50 = cantidad_deseada // 50
resto = cantidad_deseada % 50
billetes20 = resto // 20
resto = resto % 20
billetes10 = resto // 10
Escribir «Retira «, billetes50, » billetes de 50, «, billetes20, » de 20 y «, billetes10, » de 10.»
SINO
Escribir «Fondos insuficientes o cantidad inválida.»
FIN SI
FIN
Ejercicio 3: Convierte esta receta en algoritmo formal
Receta: «Para hacer una limonada, exprime 3 limones, añade 2 cucharadas de azúcar, mezcla con 1 litro de agua, remueve y sirve con hielo.» Escríbelo como algoritmo en pseudocódigo con pasos atómicos y comprueba las 5 características.
✅ Ver solución
// Entradas: 3 limones, azúcar, agua, hielo
Para cada limón del 1 al 3:
Cortar el limón por la mitad
Exprimirlo sobre un recipiente
Fin Para
Añadir 2 cucharadas de azúcar al zumo
Verter 1 litro de agua en el recipiente
Remover durante 30 segundos hasta que el azúcar se disuelva
Añadir cubitos de hielo al gusto
Servir en vasos
FIN
Características: preciso (cantidades exactas), definido (siempre igual), finito (pasos limitados), entradas (limones, azúcar..), salida (limonada).
Ejercicio 4: Encuentra el caso extremo no contemplado
El siguiente algoritmo calcula la raíz cuadrada de un número ingresado por el usuario usando una función «raiz()». ¿Qué problema tiene?
Leer numero
resultado = raiz(numero)
Escribir resultado
FIN
✅ Ver solución
Falta de validación: La raíz cuadrada de un número negativo no es un número real (normalmente da error). El algoritmo debería comprobar si numero >= 0, y si no, mostrar un mensaje de error o usar números complejos. Un algoritmo robusto debe anticipar entradas inválidas.
Ejercicio 5: Diseña un algoritmo de búsqueda simple
Escribe en pseudocódigo un algoritmo que reciba una lista de números y un número objetivo, y devuelva la posición (índice) donde aparece por primera vez, o -1 si no existe. No uses funciones predefinidas de búsqueda.
✅ Ver solución
Leer lista[], n, objetivo
posicion = -1
indice = 0
MIENTRAS indice < n Y posicion == -1 HACER
SI lista[indice] == objetivo ENTONCES
posicion = indice
FIN SI
indice = indice + 1
FIN MIENTRAS
Escribir posicion
FIN
Este es el algoritmo de búsqueda lineal. Es sencillo pero eficiente si la lista no está ordenada.
🌍 Aplicaciones reales de los algoritmos
🗺️ GPS y mapas
El algoritmo de Dijkstra calcula la ruta más corta entre dos puntos. Sin algoritmos, tu GPS te mandaría por caminos aleatorios.
📱 Redes sociales
El algoritmo que decide qué publicaciones mostrarte en tu feed no es aleatorio: usa complejos sistemas de recomendación (basados en tu historial, interacciones, etc.).
💳 Detección de fraude
Tu banco ejecuta algoritmos en tiempo real que analizan cada compra y deciden si es sospechosa (basados en patrones de gasto).
🎵 Recomendación musical
Spotify, YouTube Music: algoritmos de filtrado colaborativo («a los que les gusta A también les gusta B»).
📖 Glosario
| Término | Definición |
|---|---|
| Algoritmo | Secuencia finita y definida de pasos para resolver un problema. |
| Pseudocódigo | Notación intermedia entre lenguaje natural y código de programación. |
| Secuencia | Ejecución lineal de instrucciones, una detrás de otra. |
| Condicional (SI) | Estructura que permite ejecutar un bloque solo si se cumple una condición. |
| Bucle/Iteración | Repetición controlada de un bloque de instrucciones. |
| Variable | Espacio de almacenamiento temporal con un nombre y un valor. |
| Inicializar | Dar un valor por primera vez a una variable. |
| Depuración | Proceso de encontrar y corregir errores en un algoritmo o programa. |
🎯 Resumen final
📌 Lo que no debes olvidar
✔️ Un algoritmo es una receta precisa para la computadora.
✔️ Debe ser preciso, definido, finito, con entradas y salidas.
✔️ Sólo se necesitan secuencia, condicionales e iteraciones para cualquier algoritmo.
✔️ El pseudocódigo es la herramienta de diseño antes de programar.
✔️ Los algoritmos son independientes del lenguaje; los programas son su implementación.
✔️ Pensar algorítmicamente se entrena: descompón problemas grandes en pasos pequeños.
✔️ Siempre contempla casos extremos (entradas vacías, valores negativos, divisiones por cero).
📚 Sigue aprendiendo en TrasteandoenlaEscuela
Estos posts del cluster de Programación Básica te ayudarán a profundizar:
- Qué es la programación: lenguajes de programación – El pilar fundamental.
- Diagramas de flujo: representación gráfica – Visualiza tus algoritmos paso a paso.
- Scratch: programación para niños – Ideal para poner en práctica algoritmos sin escribir código.
- Programación en bloques: primeros pasos – Otra forma visual de crear algoritmos.
También puedes revisar el post principal sobre lenguajes de programación si aún no lo has leído.
🧪 Reto para casa: Elige un proceso cotidiano que te lleve al menos 5 minutos (por ejemplo, «preparar la mochila del colegio», «lavar los platos a mano» o «cambiar una rueda de bicicleta»). Escríbelo como algoritmo en pseudocódigo con al menos 10 pasos. Luego dáselo a un amigo o familiar para que lo ejecute literalmente. Si se saltan algún paso porque «es obvio», tendrás que añadirlo. ¡Descubrirás lo difícil que es ser explícito sin ambigüedades!



Publicar comentario