Dado que los algoritmos permiten resolver problemas de forma mecánica, está claro que resulta muy interesante compartir dicho algoritmo de tal manera que otras personas puedan conocerlo y aplicarlo; así surge el problema de describir los algoritmos de forma tal que todas las características que los definen se mantengan invariables.
Lenguaje Natural
La primera y más sencilla forma de describir un algoritmo es empleando el lenguaje natural; por ejemplo, el
algoritmo para encontrar las raíces de una ecuación de segundo grado podría describirse así:
- Definir los coeficientes de la ecuación de segundo grado: a, b y c.
- Determinar el valor del discriminante: b2-4ac.
- Si el discriminante es cero sólo hay una solución: -b/(2a).
- Si el discriminante es positivo pero no cero hay dos soluciones: (-b±√discr)/(2a).
- Si el discriminante es negativo no hay soluciones reales.
La ventaja fundamental es la facilidad de comprensión, cualquier persona (que hable español, por supuesto) que lea dicho algoritmo podría entenderlo y aplicarlo; sin embargo, son varios los problemas que plantea describir un algoritmo de esta forma:
- El lenguaje natural no es universal, este algoritmo sería completamente inútil para las personas que no hablan nuesto idioma.
- El lenguaje natural es ambiguo y, por tanto, susceptible de errores.
- El lenguaje natural es demasiado amplio, lo que para una persona puede ser una instrucción sencilla puede no serlo para otra y desde luego no lo será para un ordenador.
Por todo ello, se han buscado nuevas formas de describir los algoritmos que, cuando menos, sean más universales, estén mejor delimitadas y no sean ambiguas; dos técnicas que logran esto son
los Diagramas de Flujo y el pseudocódigo.
Diagramas de Flujo
Nos flujo permiten describir los algoritmos de forma gráfica; para ello utilizan una serie de bloques que indican distintas circunstancias y flechas que muestran bajo qué condiciones se pasa de un bloque a otro. Algunos de los símbolos son los siguientes:
Los Diagramas de Flujo presentan varias ventajas frente al lenguaje natural:
- Los símbolos son universales.
- Son menos propensos a la ambigüedad.
- Por estar basados en un número pequeño de bloques y reglas para su empleo permiten delimitar mejor los algoritmos.
- Se aproximan más a la forma en que trabaja el ordenador.
Pseudocodigo
El pseudocódigo pretende aunar en un solo tipo de representación las ventajas del lenguaje natural y de los diagramas de flujo sin ninguno de sus problemas; por tanto, el pseudocódigo:
- Es fácilmente comprensible para una persona que lo vea por vez primera.
- Está bien delimitado.
- Elimina las ambigüedades del lenguaje natural.
- Se representa de una forma compacta.
De esta forma, el pseudocódigo se suele ver como un subconjunto de un lenguaje natural que proporciona un número limitado de operaciones para la construcción de algoritmos; la única finalidad del pseudocódigo (como de los diagramas de flujo) es la comunicación entre seres humanos.