Qué es un algoritmo y para qué sirve
Un algoritmo es un conjunto ordenado y finito de instrucciones que permite resolver un problema, realizar una tarea o alcanzar un objetivo. Las instrucciones deben indicar con claridad qué hay que hacer y en qué orden. Aunque los algoritmos son fundamentales en la programación, también aparecen en actividades cotidianas, como seguir una receta, calcular el cambio de una compra o buscar una palabra en un diccionario.
En informática, un algoritmo describe la solución de un problema antes de escribirla en un lenguaje de programación. Por eso, ayuda a organizar el razonamiento y a convertir una idea en un procedimiento que una persona o un ordenador pueda ejecutar.
Características de un algoritmo
Para que un conjunto de instrucciones pueda considerarse un algoritmo, debe cumplir varias características importantes:
- Precisión: cada paso debe estar explicado de forma clara y no debe admitir interpretaciones contradictorias.
- Orden: las instrucciones deben seguir una secuencia lógica. Cambiar el orden puede modificar el resultado.
- Finitud: el procedimiento debe terminar después de un número limitado de pasos.
- Definición: si se ejecuta con los mismos datos de entrada, debe seguir las mismas reglas y producir un resultado determinado.
- Entrada: puede recibir datos iniciales, como números, palabras, fechas o elecciones de una persona. Algunos algoritmos no necesitan datos de entrada.
- Salida: debe producir un resultado o realizar una acción, como mostrar un mensaje, ordenar datos o calcular una cantidad.
- Efectividad: las operaciones indicadas deben ser posibles de realizar y suficientemente sencillas para ejecutarse en la práctica.
¿Para qué sirve un algoritmo?
Un algoritmo sirve para describir una solución paso a paso y hacer que pueda aplicarse de manera ordenada y repetible. En programación, sus principales usos son los siguientes:
- Resolver problemas: permite dividir un problema complejo en tareas más pequeñas.
- Diseñar programas: ayuda a planificar qué debe hacer un programa antes de escribir el código.
- Automatizar tareas: permite que un ordenador realice operaciones sin que una persona tenga que indicar cada paso continuamente.
- Procesar información: se utiliza para buscar, clasificar, comparar, transformar y analizar datos.
- Evitar errores: una planificación clara facilita detectar pasos innecesarios, instrucciones ambiguas o casos que no se han tenido en cuenta.
- Comparar soluciones: dos algoritmos pueden resolver el mismo problema, pero uno puede necesitar menos tiempo o memoria.
Partes básicas de un algoritmo
La estructura concreta puede variar, pero muchos algoritmos incluyen tres elementos principales:
- Entrada: son los datos que recibe el procedimiento. Por ejemplo, dos números que se quieren sumar.
- Proceso: son las operaciones que se realizan con esos datos. En el ejemplo anterior, consistiría en calcular la suma.
- Salida: es el resultado obtenido, como el valor de la suma.
Esta estructura se puede expresar de forma sencilla como: entrada → proceso → salida. No todos los algoritmos tienen que recibir datos externos, pero sí deben producir un resultado o completar una acción.
Ejemplo de algoritmo sencillo
Supongamos que queremos calcular el área de un rectángulo. Para ello necesitamos conocer su base y su altura. El algoritmo sería:
- Leer la medida de la base.
- Leer la medida de la altura.
- Multiplicar la base por la altura.
- Mostrar el resultado.
Si la base mide 8 centímetros y la altura mide 3 centímetros, el proceso será:
Área = base × altura
Área = 8 × 3
Área = 24 centímetros cuadrados
En este caso, la entrada son la base y la altura, el proceso es la multiplicación y la salida es el área del rectángulo.
Cómo se representa un algoritmo
Un algoritmo puede expresarse de varias formas. Las más habituales son el lenguaje natural, el pseudocódigo y los diagramas de flujo.
Lenguaje natural
Consiste en explicar los pasos utilizando frases normales. Es fácil de entender, pero puede resultar ambiguo si las instrucciones no se redactan con suficiente precisión.
Por ejemplo, para determinar si un número es par:
- Leer un número.
- Dividirlo entre 2.
- Comprobar si el resto de la división es 0.
- Si el resto es 0, indicar que el número es par.
- Si el resto no es 0, indicar que el número es impar.
Pseudocódigo
El pseudocódigo es una forma de escribir algoritmos con palabras y estructuras parecidas a las de un lenguaje de programación, pero sin seguir las reglas exactas de un lenguaje concreto. Su objetivo es mostrar la lógica de la solución.
Un pseudocódigo posible para el ejemplo anterior es:
Inicio
Leer número
Si el resto de dividir número entre 2 es igual a 0, entonces
Mostrar «El número es par»
Si no
Mostrar «El número es impar»
Fin si
Fin
Diagrama de flujo
Un diagrama de flujo representa gráficamente los pasos de un algoritmo mediante símbolos y flechas. Las flechas muestran el orden de ejecución y los símbolos permiten distinguir acciones, decisiones, entradas y salidas.
En un algoritmo con una decisión, el flujo suele dividirse en dos caminos: uno para cuando se cumple una condición y otro para cuando no se cumple. Después, los caminos pueden volver a unirse o terminar en resultados diferentes.
Las estructuras de control
La mayoría de los algoritmos se construyen combinando tres estructuras fundamentales:
Secuencia
Las instrucciones se ejecutan una detrás de otra, en el orden en que aparecen.
Por ejemplo, para calcular el precio final de un producto con un descuento:
- Leer el precio inicial.
- Leer el porcentaje de descuento.
- Calcular la cantidad descontada.
- Restar el descuento al precio inicial.
- Mostrar el precio final.
Selección o condición
Permite escoger entre diferentes acciones dependiendo de si se cumple una condición. Se expresa habitualmente con estructuras como «si... entonces... si no».
Por ejemplo:
- Leer la edad de una persona.
- Si la edad es igual o superior a 18, mostrar «Es mayor de edad».
- Si la edad es inferior a 18, mostrar «Es menor de edad».
Repetición o iteración
Permite repetir una o varias instrucciones mientras se cumpla una condición o durante un número determinado de veces.
Por ejemplo, para mostrar los números del 1 al 5:
- Comenzar con el número 1.
- Mostrar el número actual.
- Aumentar el número en una unidad.
- Repetir los pasos anteriores mientras el número sea igual o inferior a 5.
Algoritmo y programa: diferencias
Un algoritmo y un programa están relacionados, pero no son exactamente lo mismo:
- El algoritmo es el procedimiento lógico que explica cómo resolver un problema.
- El programa es la implementación de ese procedimiento en un lenguaje de programación, como Python, Java o JavaScript.
Un mismo algoritmo puede traducirse a varios lenguajes de programación. Además, un programa puede incluir más elementos que el algoritmo principal, como una interfaz, controles de errores, almacenamiento de datos o comunicación con otros programas.
Por ejemplo, el algoritmo para calcular el área de un rectángulo puede escribirse en distintos lenguajes, pero la operación fundamental seguirá siendo multiplicar la base por la altura.
Algoritmos deterministas y no deterministas
Un algoritmo es determinista cuando, utilizando los mismos datos de entrada, sigue siempre los mismos pasos y obtiene el mismo resultado. Un algoritmo que calcula el área de un rectángulo es determinista.
En algunos contextos informáticos se habla de algoritmos no deterministas cuando una misma entrada puede dar lugar a diferentes caminos o resultados posibles, según decisiones, elecciones o elementos aleatorios. En la programación cotidiana, muchos procedimientos que incluyen azar siguen siendo algoritmos bien definidos, aunque no produzcan siempre el mismo resultado.
Corrección y eficiencia
No basta con que un algoritmo termine: también debe resolver correctamente el problema para el que se ha diseñado. Para comprobarlo, conviene probarlo con distintos datos, incluidos casos normales, valores límite y entradas que puedan provocar errores.
La eficiencia indica cuántos recursos necesita un algoritmo, principalmente tiempo de ejecución y memoria. Por ejemplo, para buscar un nombre en una lista, un método puede revisar los elementos uno a uno. Si la lista está ordenada, otro método puede descartar grandes grupos de elementos en cada paso y encontrar el nombre con menos comprobaciones.
La solución más sencilla no siempre es la más rápida, pero debe ser suficientemente clara, correcta y adecuada al tamaño del problema.
Cómo diseñar un algoritmo
Para crear un algoritmo útil, se puede seguir este procedimiento:
- Definir el problema: explicar con exactitud qué se quiere conseguir.
- Identificar los datos: determinar qué información se necesita como entrada y qué resultado se espera obtener.
- Dividir el problema: separar la tarea en partes pequeñas y manejables.
- Ordenar los pasos: decidir qué debe hacerse primero y qué depende de instrucciones anteriores.
- Incluir decisiones y repeticiones: añadir condiciones o bucles cuando el problema lo requiera.
- Representar la solución: utilizar lenguaje natural, pseudocódigo o un diagrama de flujo.
- Probar el algoritmo: ejecutarlo mentalmente o con ejemplos diferentes.
- Revisarlo: corregir ambigüedades, pasos innecesarios y posibles situaciones no contempladas.
Errores frecuentes al escribir algoritmos
- Usar instrucciones demasiado generales, como «hacer los cálculos», sin explicar cuáles son.
- Olvidar una entrada necesaria o no indicar qué debe ocurrir con datos incorrectos.
- Colocar los pasos en un orden que no permite obtener el resultado.
- Crear una repetición que nunca termina porque su condición no puede dejar de cumplirse.
- No indicar qué sucede cuando una condición se cumple y cuando no se cumple.
- Probar el procedimiento únicamente con un caso sencillo y no comprobar otros valores.
Ejemplo completo: calcular el mayor de dos números
El objetivo es recibir dos números y mostrar cuál es mayor. El algoritmo puede ser:
- Leer el primer número.
- Leer el segundo número.
- Si el primer número es mayor que el segundo, mostrar el primer número.
- Si el segundo número es mayor que el primero, mostrar el segundo número.
- Si ambos números son iguales, indicar que son iguales.
La tercera posibilidad es necesaria porque un algoritmo completo debe contemplar también el caso en que los dos datos tengan el mismo valor.
Ideas clave para recordar
- Un algoritmo es una secuencia ordenada, clara y finita de instrucciones.
- Sirve para resolver problemas, automatizar tareas y diseñar programas.
- Puede representarse con lenguaje natural, pseudocódigo o diagramas de flujo.
- Sus estructuras básicas son la secuencia, la selección y la repetición.
- Un algoritmo debe ser correcto, terminar y utilizar instrucciones que puedan ejecutarse.
- El programa es la traducción de un algoritmo a un lenguaje de programación.
Vídeo explicativo
Autor
Álvaro Martín
Autor de Aulaversum especializado en Tecnología e Informática. Participa en la elaboración y revisión de contenidos sobre informática, hardware, software, seguridad digital, tecnología y dibujo técnico. Su trabajo se centra en explicar conceptos técnicos de forma comprensible, utilizando ejemplos y procedimientos que permitan entender tanto su funcionamiento como sus aplicaciones prácticas.