> Manuales > Manual de iniciación a la programación

Qué son los algoritmos, por qué son tan importantes en la programación. Qué partes tienen generalmente todos los algoritmos y qué tipos de herramientas existen para especificarlos formalmente, antes de ponerse a programar.

Metodología de la programación

Uno de los retos más importantes en la programación es el diseño de algoritmos, entendiendo esta tarea como el análisis y detalle de los pasos que tendría un algoritmo, con sus correspondientes variantes. Hacer un algoritmo directamente con código en un lenguaje de programación puede resultar una tarea compleja, principalmente cuando estamos comenzando en el mundo de la programación, por lo que existen diversas herramientas y pasos previos que podemos realizar para facilitarnos la vida.

Qué es un algoritmo

Por supuesto, antes de hablar de las herramientas posibles para diseñar algoritmos, conviene describir qué es un algoritmo.

Un algoritmo es una secuencia de acciones que se deben realizar para resolver una tarea. No es algo que encontremos solamente en la programación, sino es un concepto perteneciente a la vida real. Por ejemplo, cuando nos dicen en una receta de cocina qué debemos hacer para poder realizarla, nos están entregando un algoritmo.

En la programación son muy importantes los algoritmos dado que los ordenadores por sí solos no son capaces de entender nada. Veamos esto con un ejemplo: si en una receta nos dicen "cocinar a fuego medio durante 30 minutos", nosotros podemos saber que se refiere realmente a varios pasos:

Por supuesto, un cocinero puede entender todo eso gracias a su propia experiencia, sin embargo, el ordenador no va a poder entender ni realizar absolutamente nada que no le hayamos indicado. Ese es el motivo por el cual tenemos que ser tan precisos a la hora de especificar un algoritmo, y no dejar por entendido ni un solo paso.

Si nos interesa profundizar sobre este tema recordamos que existe un videotutorial dedicado a los algoritmos en DesarrolloWeb.com.

También encuentras más información sobre este tema y enlaces a otros contenidos en la home de algoritmos.

Características de un algoritmo

Un algoritmo es la descripción abstracta de todas las acciones que debe realizar un ordenador, que nos conduce a la solución del problema.

Debe ser conciso y detallado, así como finito, pero sobre todo tiene que ser claro y lo más sencillo posible.

Dificultad en el diseño de algoritmos

Muchas veces, hacer un algoritmo puede ser algo bastante sencillo. Por ejemplo, sumar una secuencia de números no debería representar ningún problema. Sin embargo, hay veces que las necesidades de un algoritmo pueden hacer que su programación se nos escape de las manos.

Ejemplos de algoritmos que pueden ser complejos es ordenar una secuencia de números, recorrer una estructura de datos de tipo árbol, o un grafo. Estos son ejemplos típicos de programación que se ven en las escuelas y que no estaría mal que practicases en algún momento. Pero aparte de los ejemplos "de libro", en la vida real también pueden haber algoritmos complejos, cuando se tienen que hacer procedimientos en los que entren en juego muchos pasos, que además se pueden ramificar en muchas variantes.

Cuando un algoritmo se pone complicado, y sobre todo cuando estamos aprendiendo a programar, es posible echar mano de una serie de herramientas y técnicas que vamos a explicar a lo largo de este manual de Iniciación a la Programación.

En la práctica, cuando estamos programando aplicaciones raras veces usamos algunas de estas herramientas, dados varios factores: 1) Existen librerías con código para hacer cosas difíciles, como ordenar estructuras de datos con distintos criterios o recorrerlas. 2) Nuestros códigos deben de ser muy sencillos, por lo que la mayoría de veces descomponemos los problemas en distintos módulos, de modo que cada uno de ellos sea más sencillo que los anteriores. 3) Porque los años de experiencia nos ofrecen una base sobre la cual no tenemos tantos problemas para especificar los pasos para realizar las tareas.

Estructuras de un programa

Antes de ver las herramientas de utilidad para diseñar algoritmos, es interesante detenerse para analizar la estructura de de la mayoría de los programas informáticos.

Un programa se va a dividir en 3 partes claramente diferenciadas:

Todo programa está constituido por un conjunto de instrucciones capaces de gestionar un conjunto de datos.

Herramientas y técnicas para el diseño de algoritmos

Para el diseño de algoritmos muchas veces un lápiz y un papel es lo más adecuado. Expresar las cosas de antemano, sin código, antes de ponerse a programar es útil para aclarar las ideas y tener una pauta de trabajo. Analizar este problema a nuestra manera, con nuestro sentido común, y con diagramas totalmente arbitrarios puede ser una buena opción.

Sin embargo, en el aprendizaje de la programación nos indican cómo podemos realizar estos diagramas de manera estándar, para que usemos todos una misma notación y nos podamos hacer entender los unos a los otros.

En este caso, el tipo de diagrama que más se utiliza para especificar un algoritmo es el diagrama de flujo.

Diagramas de flujo

Los diagramas de flujo son representaciones gráficas que mediante el uso de símbolos unidos mediante líneas de flujo, muestran la secuencia lógica que se debe suceder para la solución del problema.

Los diagramas de flujo deber ser independientes del lenguaje de programación empleado, deben ser flexibles y sencillos.

Por otro lado tienen que estar normalizados con algún estándar como puede ser el ISO (a nivel mundial), ANSI (a nivel americano) o el IEEE ( a nivel europeo)

Existen 3 tipos de diagramas de flujos:

Dentro de estos tres los más utilizados son los ordinogramas o los pseudocódigos, ya que son los que más ayudan a los programadores a la hora de pasar esos algoritmos a los distintos lenguajes de programación.

En los siguientes artículos profundizaremos más en cada uno de ellos y aprenderemos a construirlos y leerlos, para su posterior paso al lenguaje de programación requerido. Puedes seguir leyendo en el artículo dedicado al diagrama de flujo.

Sara Alvarez

Equipo DesarrolloWeb.com

Manual