Additional menu

¿Qué es el lenguaje algorítmico?

La algorítmica tiene como objetivo el desarrollo de métodos y técnicas para el diseño de algoritmos, estructuras de datos eficientes y su análisis, así como el desarrollo de algoritmos y estructuras de datos que resuelvan problemas concretos.

El aprendizaje de la programación empieza por hacer las cosas más sencillas con herramientas básicas y, una vez asimiladas, progresar con nuevos conocimientos más complejos y avanzados, con herramientas más concretas.

Este proceso se tiene que realizar progresivamente y a medida que los conceptos más sencillos estén bien asimilados. Así, la algorítmica estudia los algoritmos, sus propiedades y su eficiencia.

En las sucesivas entradas de este blog, iré desarrollando todos los conceptos del lenguaje algorítmico de programación. Así como toda clase de ejemplos, diagramas de flujo, esquemas de recorrido, y mucho más. Para finalizar con el diseño de algoritmos descendente como metodología de trabajo.

Diagrama de flujo de una estructura secuencial

Tienes que aprender un lenguaje diferente del idioma habitual que utilizas diariamente, ya que, por ejemplo, un libro de recetas de cocina es en realidad un libro de algoritmos, donde el estado inicial de cada una de las recetas (algoritmos) consiste en tener un número de ingredientes y los recursos necesarios para cocinarlos.

El estado final es la presencia en la mesa de un plato con el que chuparnos los dedos. Ahora podemos pensar, ¿si un libro de cocina está escrito en lenguaje natural?

¿Por qué no describimos los algoritmos también en lenguaje natural?

En primer lugar, hay que tener claro que los lenguajes habituales presentan muchas ambigüedades que dificultan la comprensión del mensaje que hay que transmitir.

En segundo lugar, y lo más importante para no escribir nuestros algoritmos en lenguaje natural, es que si por ejemplo queremos hacer un "asado". Como pre-condición tenemos que disponer de todos los ingredientes, utensilios necesarios y elementos combustibles (gas, leña...).

Diagrama de flujo de una estructura condicional

¡Hasta aquí, ningún problema!

Pero, empezamos a describir el algoritmo:

En primer lugar, tenemos que picar media cabeza de ajos. ¿Qué significar "picar"? Qué medida han de tener los trozos?

Más adelante, el algoritmo nos dice que tenemos que poner una paella con cuatro cucharadas de aceite de oliva en el fuego entre bajo y medio, y freír el ajo que hemos picado. ¿Qué quiere decir exactamente "entre bajo y medio"? Cuando este un poco dorado (no demasiado), tenemos que añadir el tomate (que habremos pelado y picado previamente). ¿Cuándo está el ajo un poco dorado, pero no demasiado?

Todas estas preguntas las podría responder con seguridad una persona que este acostumbrada a cocinar; pero una persona que no haya cocinado nunca en su vida será incapaz de ejecutar el algoritmo o receta correctamente, incluso entenderlo.

¿Hasta que nivel debemos describir el algoritmo?

Evidentemente, según a quién vaya dirigido. Este es el segundo problema importante con el que nos encontramos si usamos el lenguaje natural para describir algoritmos.

Por estas dos razones (ambigüedad y dependencia del interlocutor), necesitamos definir otro lenguaje que disponga de una sintaxis reducida, simple y precisa que permita expresar algoritmos sin ambigüedad y una claridad y precisión necesarias para que sean interpretados por cualquier procesador sin presuponer ningún conocimiento previo por su parte. Este lenguaje será el lenguaje algorítmico.

Diagrama de flujo de una estructura do while
Al hacer servir el lenguaje algorítmico para describir nuestros diseños hace que matemos dos pájaros de un tiro, es decir, este lenguaje es suficientemente general para que lo podamos hacer servir para describir cualquier tipo de algoritmo sin tenernos que preocupar de su posterior codificación en cualquier entorno concreto.

Si aprendemos a diseñar algoritmos en este lenguaje genérico, después no nos debe costar demasiado codificarlos en el lenguaje de programación que el entorno en el cual trabajemos requiera, siempre que sea una lenguaje imperativo y procedimental.

banner-algoritmia

Botón para ir al inicio de la página