El diagrama de flujo es una de las tcnicas de representacin de algoritmos ms antigua y tambin ms
utilizada, al menos entre principiantes y para algoritmos sencillos. Un diagrama de flujo o flowchart es un grfico en el que se utilizan smbolos (o cajas) para representar los pasos del algoritmo. Las cajas estn unidas entre s mediante flechas, llamadas lneas de flujo, que indican el orden en el que se deben ejecutar para alcanzar la solucin. Los smbolos de las cajas estn estandarizados y son muy variados. En la tabla siguiente aparecen los ms sencillos de usar.
Consideremos el ejemplo anterior: la representacin del algoritmo que calcula el rea y el permetro de un rectngulo mediante un diagrama de flujo. Antes, tengamos en cuenta que: los valores de base y altura los introducir el usuario del programa a travs del teclado; as, el programa servir para cualquier rectngulo despus se realizarn los clculos necesarios los resultados, rea y permetro, deben mostrarse en un dispositivo de salida (por defecto, la pantalla) para que el usuario del programa vea cul es la solucin Esta estructura en 3 pasos es muy tpica de todos los algoritmos: primero hay una entrada de datos, luego se hacen clculos con esos datos, y por ltimo se sacan los resultados.
Pseudocdigo El pseudocdigo es un lenguaje simplificado de descripcin de algoritmos. El paso desde el pseudocdigo hasta el lenguaje de programacin real (por ejemplo, C), es relativamente fcil. Adems, la descripcin de algoritmos en pseudocdigo ocupa mucho menos espacio que su equivalente con un diagrama de flujo, por lo que lo preferiremos a la hora de disear algoritmos complejos. El pseudocdigo es bastante parecido a la mayora de los lenguajes de programacin reales, pero no tiene unas reglas tan estrictas, por lo que el programador puede trabajar en la estructura del algoritmo sin preocuparse de las limitaciones del lenguaje final El pseudocdigo utiliza ciertas palabras reservadas para representar las acciones del programa. Estas palabras originalmente estn en ingls (y se parecen mucho a las que luego emplean los lenguajes de programacin algoritmo rectngulo inicio leer (base) leer (altura) rea = base * altura permetro = 2 * base + 2 * altura escribir (rea) escribir (permetro) fin
ALGORITMO
El trmino algoritmo proviene del matemtico Persa Muhammad ibn Musa al-Khwarizmi, que vivi aproximadamente entre los aos 780 y 850 d.C. En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del latn, dixit algorithmus [ es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemticas son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones.
Caractersticas principales y definicin formal
En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores los sealan como listas de instrucciones para resolver un problema abstracto, es decir, que un nmero finito de pasos convierten los datos de un problema (entrada) en una solucin (salida). Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Un algoritmo debe cumplir estas condiciones:
Finitud: el algoritmo debe acabar tras un nmero finito de pasos. Es ms, es casi fundamental que sea en un nmero razonable de pasos Definibilidad: el algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigedad al definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemtico o de programacin para un computador. Entrada: el algoritmo tendr cero o ms entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen adems a conjuntos especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales, fraccionarios, etc. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretacin por el computador. Salida: el algoritmo tiene una o ms salidas, en relacin con las entradas. Efectividad: se entiende por esto que una persona sea capaz de realizar el algoritmo de modo exacto y sin ayuda de una mquina en un lapso de tiempo finito. Un algoritmo tiene tres propiedades
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una secuencia de estados "computacionales" por cada entrada vlida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente queda completamente determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado actual.
Implementacin de algoritmos
En programacin, los algoritmos se implementan en forma de sentencias en algn lenguaje de programacin. De esta manera, la forma de escribir los algoritmos depende del lenguaje de programacin, y del paradigma usado. Los algoritmos tambin pueden representarse grficamente empleando diagramas de flujo o formas similares. De esta manera, son fcilmente comprensibles, especialmente para personas que no son programadores. Tambin, de esta manera, los algoritmos son ms "universales", pues no dependen de un lenguaje de programacin especfico.
Los algoritmos tambin pueden escribirse en pseudocdigo, lo que tambin los hace fciles de entender. Se hacen intentos para que las computadoras interpreten y ejecuten los diagramas de flujo y los pseudocdigos, pero no logran la flexibilidad, potencia y velocidad de los algoritmos puramente escritos en un lenguaje de programacin especfico. Un algoritmo tambin puede expresarse en lenguaje natural, aunque esto puede traer ambigedades e interpretaciones errneas (la ambigedad es propia del lenguaje humano).
Algoritmos en programacin
Un programa de computadora es un algoritmo que le dice a la computadora los pasos especficos para llevar acabo una tarea. Los algoritmos son rigurosamente definidos para que la computadora pueda interpretarlos. El orden en que se ejecuta cada uno de los pasos que constituyen un algoritmo es fundamental. El orden ms bsico es de arriba hacia abajo, ejecutndose una instruccin tras otra de un cdigo. Pero un algoritmo puede variar en su flujo u orden de ejecucin de pasos dependiendo de los valores de inicio o que entran durante su ejecucin. El flujo es manejado por las estructuras de control.