Un algoritmo es un conjunto prescrito de instrucciones
o reglas bien definidas, ordenadas y finitas que permite
realizar una actividad mediante pasos sucesivos que no
generen dudas a quien deba realizar dicha actividad. Dados
un estado inicial y una entrada, siguiendo los pasos
sucesivos se llega a un estado final y se obtiene una
solución. Los algoritmos son el objeto de estudio de
la algoritmia.
DEFINICIÓN FORMAL
En general, no existe ningún consenso definitivo en cuanto a
la definición formal de algoritmo. Muchos autores los
señalan
como listas de instrucciones para resolver un cálculo o
un problema abstracto, es decir, que un número finito de
pasos convierten los datos de un problema (entrada) en una
solución (salida). Sin embargo cabe notar que algunos
algoritmos no necesariamente tienen que terminar o
resolver
un problema en particular. Por ejemplo, una versión
modificada de la criba de Eratóstenes que nunca termine de
calcular números primos no deja de ser un algoritmo.
TIEMPO SECUENCIAL
Un algoritmo funciona en tiempo discretizado –paso a
paso–,
definiendo así una secuencia de estados "computacionales"
por cada entrada válida (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 implementación (los algoritmos son
objetos abstractos) de manera que en un algoritmo las
estructuras de primer orden son invariantes bajo
isomorfismo.
EXPLORACIÓN ACOTADA
La transición de un estado al siguiente queda
completamente determinada por una descripción fija y finita;
es decir, entre cada estado y el siguiente solamente se
puede tomar en cuenta una cantidad fija y limitada de
términos del estado actual.
TIPOS DE ALGORITMOS
CUALITATIVOS
Son aquellos en los que se describen los pasos utilizando palabras.
CUANTITATIVOS
Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.
MEDIOS DE EXPRESIÓN DE UN
ALGORITMO
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje
natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones
en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo
evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas
para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de
programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
DESCRIPCIÓN DE ALTO NIVEL
Se establece el problema, se selecciona un modelo
matemático y se explica el algoritmo de manera
verbal, posiblemente con ilustraciones y omitiendo detalles.
DESCRIPCIÓN NORMAL
Se usa pseudocódigo para describir la secuencia de pasos
que encuentran la solución.
IMPLEMENTACIÓN
Se muestra el algoritmo expresado en un lenguaje de
programación específico o algún objeto capaz de llevar a
cabo instrucciones.
DISEÑO DEL ALGORITMO
Las características de un buen algoritmo son:
- Debe tener un punto particular de inicio.
- Debe ser definido, no debe permitir dobles interpretaciones.
- Debe ser general, es decir, soportar la mayoria de las variantes que se puedan presentar en la definición del problema.
- Debe ser finito en tamaño y tiempo de ejecución.
DIAGRAMAS DE FLUJO
El diagrama de flujo o diagrama de actividades es
la representación gráfica del algoritmo o proceso. Se utiliza
en disciplinas como programación, economía, procesos
industriales y psicología cognitiva.
En Lenguaje Unificado de Modelado (UML), un diagrama de
actividades representa los flujos de trabajo paso a paso de
negocio y operacionales de los componentes en un sistema.
Un diagrama de actividades muestra el flujo de control
general.
En SysML el diagrama ha sido extendido para indicar flujos
entre pasos que mueven elementos físicos (p.ej., gasolina) o
energía (p.ej., presión). Los cambios adicionales permiten al
diagrama soportar mejor flujos de comportamiento y datos
continuos.
Estos diagramas utilizan símbolos con significados definidos
que representan los pasos del algoritmo, y representan el
flujo de ejecución mediante flechas que conectan los puntos
de inicio y de fin de proceso.
NORMAS DE TRABAJO
Un diagrama de flujo presenta generalmente un único punto
de inicio y un único punto de cierre, aunque puede tener
más, siempre que cumpla con la lógica requerida.
Las siguientes son acciones previas a la realización del
diagrama de flujo:
- Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.
- Definir qué se espera obtener del diagrama de flujo.
- Identificar quién lo empleará y cómo.
- Establecer el nivel de detalle requerido.
- Determinar los límites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son:
- Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
- Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
- Si el nivel de detalle definido incluye actividades menores, listarlas también.
- Identificar y listar los puntos de decisión.
- Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
- Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.
TIPOS DE DIAGRAMA DE FLUJO
- Formato vertical: En él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
- Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
- Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
- Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.
SIMBOLOGÌA Y SIGNIFICADO
- Óvalo o Elipse: Inicio y término (Abre y cierra el diagrama).
- Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimientos).
- Rombo: Decisión (Formula una pregunta o cuestión).
- Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
- Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
- Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).
SOFTWARE PARA DISEÑO DE DIAGRAMA DE FLUJO
Actualmente existe una gran cantidad de software para la elaboración de diagramas de flujo:
- Microsoft Office ofrece 3 herramientas útiles para la elaboración de diagramas. Uno de ellos es Microsoft Office Word, que nos permite crear diagramas de flujo básicos a través de la opción "Formas" que tiene un apartado especial para diagramas de flujo. De igual manera Microsoft Office Power Point ofrece las mismas opciones para crear los diseños de diagramas de flujo. Otra herramienta un poco más sofisticada es Microsoft Office Visio, que además de la simbología básica de los diagramas de flujo cuenta con una variedad de herramientas para elaborar otros tipos de diagramas como es el caso diagramas UML entre otros tipos de diagramas de flujo.
- Otro programa eficiente y muy fácil de usar es el programa "Dia" que brinda una solución rápida para la creación de diagramas de flujo además de otro tipo de diagramas usados en el ambiente informático. Es considerado la versión no comercial de Microsoft Visio.
PSEUDOCODIGOS
En ciencias de la computación, y análisis numérico,
el pseudocódigo (o falso lenguaje) es una descripción
de alto nivel compacta e informal del principio operativo de
unprograma informático u otro algoritmo.
Utiliza las convenciones estructurales de un lenguaje de
programación real, pero está diseñado para la lectura
humana en lugar de la lectura mediante máquina, y con
independencia de cualquier otro lenguaje de programación.
Normalmente, el pseudocódigo omite detalles que no son
esenciales para la comprensión humana del algoritmo, tales
como declaraciones de variables, código específico del
sistema y algunas subrutinas. El lenguaje de programación
se complementa, donde sea conveniente, con descripciones
detalladas en lenguaje natural, o con notación matemática
compacta. Se utiliza pseudocódigo pues este es más fácil de
entender para las personas que el código del lenguaje de
programación convencional, ya que es una descripción
eficiente y con un entorno independiente de los principios
fundamentales de un algoritmo. Se utiliza comúnmente en
los libros de texto y publicaciones científicas que se
documentan varios algoritmos, y también en la planificación
del desarrollo de programas informáticos, para esbozar la
estructura del programa antes de realizar la efectiva
is estándar para el pseudocódigo, aunque los ocho IDE's
que manejan pseudocódigo tengan su sintaxis propia.
Aunque sea parecido, el pseudocódigo no debe confundirse
con los programas esqueleto que incluyen código ficticio,
que pueden ser compilados sin errores. Los diagramas de
flujo y UML pueden ser considerados como una alternativa
gráfica al pseudocódigo, aunque sean más amplios en papel.
APLICACIONES
Generalmente se utiliza pseudocódigo en los libros de texto
y publicaciones científicas relacionadas con la informática y
la computación numérica, para la descripción de algoritmos,
de manera que todos los programadores puedan entenderlo,
aunque no todos conozcan el mismo lenguaje de
programación. Generalmente, en los libros de texto se
adjunta una explicación que acompaña a la introducción y
que explica las convenciones particulares en uso. El nivel de
detalle del pseudocódigo puede, en algunos casos,
acercarse a la de formalizar los idiomas de propósito
general.
Un programador que tiene que aplicar un algoritmo
específico, sobre todo uno desfamiliarizado, generalmente
comienza con una descripción en pseudocódigo, y luego
"traduce" esa descripción en el lenguaje de programación
meta y lo modifica para que interactúe correctamente con el
resto del programa. Los programadores también pueden
iniciar un proyecto describiendo la forma del código en
pseudocódigo en el papel antes de escribirlo en su lenguaje
de programación, como ocurre en la estructuración de un
enfoque de Top-down y Bottom-up arriba hacia abajo.
SINTAXIS
En la actualidad y por lo general, el pseudocódigo, como su
nombre lo indica, no obedece a las reglas de sintaxis de
ningún idioma en particular ni es de forma estándar
sistemática, a pesar de que cualquier escritor en particular
vaya a pedir prestado las estructuras de control general, la
sintaxis y el estilo, por ejemplo, de algún lenguaje de
programación convencional. Pero en caso de que se quiera
ejecutar, se debe llevar a forma tipo, para que no genere
mensajes de error. Las fuentes populares incluyen la sintaxis
de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL. Por lo
general, se omiten las declaraciones de variables. A veces,
las llamadas a funciones, los bloques de código y el código
contenido dentro de un loop se remplazan por una sentencia
de una línea en lenguaje natural.
Dependiendo del escritor, el pseudocódigo puede variar
mucho en su estilo, yendo desde en un extremo, una
imitación casi exacta de un lenguaje de programación real,
hasta al acercarse a una descripción en prosa de formato de
pseudocódigo en el otro extremo.
FUNCIONES Y OPERACIONES
Cada autor usa su propio pseudocódigo con sus respectivas
convenciones. Por ejemplo, la instrucción "reemplace el
valor
de la variable
por el valor de la variable
" puede ser
representado como:
- asigne a
el valor de
Las operaciones aritméticas se representan de la forma
usual en matemáticas.
DESARROLLO DE ALGORITMOS
Con este pseudocódigo se puede desarrollar cualquier algoritmo que:
- Tenga un único punto de inicio.
- Tenga un número finito de posibles puntos de término.
- Haya un número finito de caminos, entre el punto de inicio y los posibles puntos de término.