Está en la página 1de 7

ALGORITMO

 Algoritmo: Es una lista bien definida, ordenada y finita de operaciones que permite hallar la
solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y
bien definidos se llega a un estado final, obteniendo una solución.

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos


problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales
muestran algoritmos para usar el aparato en cuestión o inclusive en las instrucciones que recibe
un trabajador por parte de su patrón. También existen ejemplos de índole matemático, como el
algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para
calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver
un sistema lineal de ecuaciones.

El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con


el concepto de programa. Mientras el primero es la especificación de un conjunto de pasos
(operaciones, instrucciones, órdenes,...) orientados a la resolución de un problema (método), el
segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de
programación y para un computador concreto, susceptible de ser ejecutado (o compilado o
interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se
implementa, ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato
mecánico, usando papel y lápiz, o en algún otro modelo de computación.

- Características de los algoritmos

El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son
ampliamente aceptadas como requisitos para un algoritmo:

1. Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de
pasos".
2. Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones
a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
3. Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de
que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas
son tomadas de conjuntos específicos de objetos".
4. Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".
5. Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las
operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que
en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre
usando lápiz y papel".
A partir del carácter finito y de la salida se deduce que ante una misma situación inicial (o
valores de entrada) un algoritmo debe proporcionar siempre el mismo resultado (o salida), con
excepción de los algoritmos probabilistas.

- Medios de expresión de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo:

 Lenguaje natural.
 Lenguaje de especificación de algoritmos: pseudocódigo,
 Diagramas de flujo
 Diagrama N-S (Nassi-Schneiderman).
 Fórmulas.
 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:

1. 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.
2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que
encuentran la solución.
3. 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.

También es posible incluir un teorema que demuestre que el algoritmo es correcto, un


análisis de complejidad o ambos.

- Escritura inicial del algoritmo: El sistema para describir (“escribir”) un algoritmo consiste
en realizar una descripción paso a paso con un lenguaje natural del citado algoritmo. Un
algoritmo es un método o conjunto de reglas para solucionar un problema. En cálculos
elementales estas reglas tienen las siguientes propiedades:
a) Debe estar seguidas de alguna secuencia definida de pasos hasta que se obtengan un
resultado diferente.
b) Solo puede ejecutarse una operación a la vez.
El flujo de control usual de un algoritmo es secuencial.
Palabras Reservadas
Existen palabras reservadas (son palabras propias de un lenguaje de programación), como
por ejemplo mientras, sino estas palabras describen las estructuras de control fundamentales y
procesos de toma de decisión en el algoritmo. Estas incluyen los conceptos importantes de
selección expresadas por si-entonces-sino (if-then-else) y de repetición expresadas con
mientras-hacer o a veces repetir-hasta e iterar-fin_iterar, en inglés while-do y repeat-until que
se encuentran en casi todos los algoritmos, especialmente los de proceso de datos. La capacidad
de decisión permite seleccionar alternativas de acciones a seguir o bien la repetición una y otra
vez de operaciones básicas.

Otro aspecto a considerar es el método elegido para describir los algoritmos: empleo de
indentación (sangrado o justificación) en escritura de algoritmos.

 Pseudocódigo: Es la descripción de un algoritmo que asemeja a un lenguaje de programación


pero con algunas convenciones del lenguaje natural. Tiene varias ventajas con respecto a los
diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar
instrucciones complejas. El pseudocódigo no está regido por ningún estándar. pseudo viene de
falso y por ende es un código al que aunque es entendible no se aplica al proceso que debe
realizar la máquina.

En programación, lenguaje artificial e informal útil para programadores para el desarrollo de


algoritmos. No es un lenguaje de programación verdadero y, por lo tanto, no puede ser compilado
y ejecutado.

En pseudocódigo se describen los algoritmos utilizando una mezcla de lenguaje común, con
instrucciones de programación, palabras claves, etc. El objetivo es que el programador se centre
en la solución lógica del algoritmo y no en la implementación en un lenguaje de programación
concreto (con las posibles complicaciones en las reglas sintácticas), o en otras palabras, sólo
ayudan a "pensar" un programa antes de escribirlo en un lenguaje de programación formal.

HERRAMIENTAS DE PROGRAMACIÓN

 DIAGRAMAS DE FLUJO (flowchart)

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados
con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

ISO: (International Standards Organization) Organismo multinacional dedicado a


establecer acuerdos mundiales sobre estándares internacionales.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan
mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como
introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas
ajenas a la computación.

Símbolos principales:

Terminal (representa el comienzo “inicio” y el final “fin”, de un


programa. Puede representar también una parada o
interrupción programada que sea necesario realizar en un
programa).

Entrada/Salida (cualquier tipo de introducción de datos en la


memoria desde los periféricos “entrada”, o registro de
información procesada en un periférico “salida”).

Proceso (cualquier tipo de operación que pueda originar


cambio de valor, formato o posición de la información
almacenada en memoria, operaciones aritméticas, de
transferencia, entre otros).

Decisión (indica operaciones lógicas o de comparación entre


datos – normalmente dos – y en función del resultado de la
misma determina cual de los distintos caminos alternativos del
programa se debe seguir, normalmente tiene dos salidas –
respuesta Si o No – pero puede tener tres o más según los
casos).

Conector (conexión entre dos puntos del organigrama situado


en páginas diferentes).

Conector (sirve para enlazar dos partes cualquiera de un


organigrama a través de un conector en la salida y otro
conector en la entrada. Se refiere a la conexión en la misma
página del diagrama).
 DIAGRAMAS DE FLUJO DE DATOS

(DFD). Los diagramas de flujo de datos son un tipo de herramienta de modelado, permiten
modelar todo tipo de sistemas, concentrándose en las funciones que realiza, y los datos de entrada
y salida de esas funciones.

Componentes de los DFD

 PROCESOS (burbujas): representan la parte del sistema que transforma ciertas entradas
en ciertas salidas.

 FLUJOS: representan los datos en movimiento. Pueden ser flujos de entrada o flujos de
salida. Los flujos conectan procesos entre sí y también almacenes con procesos.

 ALMACENES: representan datos almacenados. Pueden ser una base de datos, un archivo
físico, etc.

 TERMINADORES: representan entidades externas que se comunican con el sistema. Esas


entidades pueden ser personas, organizaciones u otros sistemas, pero no pertenecen al
sistema que se está modelando.

El DFD posee niveles de desagregación o explosión o apertura de burbujas. El Nivel 0 o


Diagrama de Contexto es aquel que muestra una sola burbuja y las entidades externas o
terminadores con los que interactúa el sistema.

Existen procesos y flujos especiales llamados procesos de control y flujos de control. Se emplean
para modelar sistemas en tiempo real.

Los flujos de control son señales o interrupciones, en tanto los procesos de control son burbujas
que coordinan y sincronizan otros procesos. Los procesos de control sólo se conectan con flujos
de control.

Los flujos de control de salida "despiertan" otras burbujas, en tanto los flujos de control de entrada,
especifican que una tarea terminó o se presentó un evento extraordinario.

Representación de un sistema en DFD

Un sistema puede representarse empleando varios diagramas de flujos de datos, cada flujo de
datos puede representar una parte "más pequeña" del sistema.
Los DFD permiten una partición por niveles del sistema. El nivel más general se representa
con un DFD global llamado diagrama de contexto.

El diagrama de contexto DFD representa a todo el sistema con una simple burbuja o proceso, las
entradas y salidas de todo el sistema, y las interacciones con los terminadores.

Complementos del DFD

Los DFD suelen servir para comprender fácilmente el funcionamiento de un sistema. De


todas maneras, no es la única herramienta para diagramar sistemas, es más, se debe
complementar con otras herramientas para agregar comprensión y exactitud al DFD.

Otras herramientas que se complementan con los DFD son los diccionarios de datos, las
especificaciones de procesos, los diagramas de entidad relación, los diagramas de transición de
estos, etc.

En síntesis, el Diagrama de Flujo de Datos describe:

 Los lugares de origen y destino de los datos (los límites del sistema),

 Las transformaciones a las que son sometidos los datos (los procesos internos),

 Los lugares en los que se almacenan los datos dentro del sistema, y

 Los canales por donde circulan los datos.

Características:

 Relevante: Ya que posibilita comunicar diferentes modelos para así facilitar el


entendimiento entre el usuario y el analista de sistemas.

 Lógico: Ya que no identifica soporte físico.

 Descendente: Se construye en forma descendente, de lo general a lo particular.

Guías para construir un DFD

1. Identificar las entidades externas ya que ello implica definir los límites del sistema.
2. Elegir nombres con significado tanto para procesos como también para flujos de datos,
almacenes y entidades externas. Si es posible a partir del vocabulario del usuario evitando
terminologías técnicas.
3. Identificar el papel del proceso del sistema, no quien lo realiza.
4. Numerar los procesos, mediante un esquema de numeración consistente que implique,
para los lectores del DFD, una cierta secuencia de ejecución.
5. Evitar en lo posible los DFD excesivamente complejos. Deberán ser comprensibles,
digeribles y agradables a la vista sin demasiados elementos.
6. Todos los elementos se relacionan entre sí a través de flujos de datos.
7. Procesos: Se relacionarán con:
 Almacenes
 Entidades externas
 Otros procesos
 Deberán tener al menos una Entrada y una Salida, no son manantiales de datos.

8. Almacenes: Se relacionarán solamente con Procesos.


9. Entidades Externas: Se relacionarán solamente con Procesos.
10. En todos los niveles del Diagrama de Flujo de Datos deberá haber igual cantidad de
Entradas y de Salidas.

Niveles del DFD:

 Nivel de Partida: Diagrama de Contexto:

- No existirán almacenes o archivos.


- Se representarán las entidades externas que son fuente y destino de los datos.
- El sistema será representado como un proceso simple.
- Se dibujarán sólo los flujos de datos de comunicación exterior-sistema.

 Nivel 1 y subsiguientes:

- Deberá haber igual cantidad de archivos. Aunque podrá existir mayor cantidad de
almacenamientos en el nivel 2 debido a la explosión de algún proceso.
- En el último nivel, cada proceso realizará una función específica y concreta.

Cada proceso en el DFD de alto nivel de un sistema puede ser "explotado" para convertirse
en un DFD en sí mismo.

Cada proceso en el nivel inferior deberá estar relacionado, inversamente, con el proceso del
nivel superior. Es decir que, cada proceso “padre” que se detalla en el DFD, ha de estar
balanceado. La regla del balanceo consiste en que cada proceso debe tener exactamente los
mismos datos de entrada/salida netos que el DFD hijo.

Los flujos de datos pueden descomponerse en la “explosión” del proceso en un DFD hijo.