Algoritmos y Diagramas de flujo
En los pasos a seguir para el desarrollo de un problema, existen básicamente dos tipos de
elementos con los cuales es posible especificar un problema en forma esquemática y con una
notación orientada a la computación, estas herramientas son los algoritmos y los diagramas de
flujo que se complementan.
El concepto de algoritmo es muy importante dentro del área de computación, cuyo significado
actual es similar a una receta, proceso, método, técnica, procedimiento o rutina para realizar una
actividad, excepto que el algoritmo tiene una connotación ligeramente diferente.
Un algoritmo es un conjunto de reglas que determinan la secuencia de las operaciones a seguir
para resolver un problema específico y que cumple con las siguientes cinco características:
1) Finitud: Un algoritmo debe terminar después de ejecutar un número finito de pasos.
2) Definición: Cada paso en un algoritmo debe estar definido con precisión, esto es, la acción
a seguir no debe ser ambigua, sino rigurosamente especificada. UN algoritmo descrito en
un lenguaje como inglés o español, en el cual una misma palabra puede significar varias
cosas, puede no cumplir con este punto. Es por eso que se han definido los lenguajes de
programación o lenguajes de computación para especificar algoritmos, ya que en ellos el
significado de cada palabra es uno y sólo uno.
3) Entrada: Se considera como entrada el conjunto de datos o información requerida para
resolver un problema dado. No cualquier grupo de datos se puede considerar como
entrada en el procedimiento señalado.
4) Salida: La salida es un conjunto de resultados que se obtienen al aplicar el algoritmo al
conjunto de datos de entrada.
5) Efectividad: Un algoritmo debe llevar a la solución del problema planteado, en otras
palabras, se puede decir que todas las operaciones que efectúa el algoritmo, deben ser lo
suficientemente simples para que en principio, se puedan ejecutar con papel y lápiz y al
final obtener el resultado deseado.
Diagrama de flujo
Introducción
Un Diagrama de Flujo representa la esquematización gráfica de un algoritmo , el cual muestra
gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema . Su correcta
construcción es sumamente importante porque, a partir del mismo se escribe un programa en
algún Lenguaje de Programación. Si el Diagrama de Flujo está completo y correcto el paso del
mismo a un Lenguaje de Programación es relativamente simple y directo. Es importante resaltar
que el Diagrama de Flujo muestra lugares de origen y destino de los datos, transformaciones a las
que son sometidos los datos, lugares en los que se almacenan los datos dentro del sistema, los
canales por donde circulan los datos. Además de esto podemos decir que este es una
representación reticular de un sistema, el cual lo contempla en términos de sus componentes
indicando el enlace entre los mismos.
Al igual que el pseudocódigo, los diagramas de flujo son útiles para el desarrollo y la
representación de algoritmos, aunque la mayor parte de los programadores prefieren el
pseudocódigo. Los diagramas de flujo muestran con claridad cómo operan las estructuras de
control utilizadas en la programación estructurada.
Un diagrama de flujo consta de un conjunto de símbolos con diferentes significados susceptibles
de ser conectados entre si.
En todo diagrama de flujo podemos encontrar los siguientes elementos:
a) Inicio de proceso.
b) Especificación de la alimentación de datos para efectuar el proceso.
c) Acciones aplicables a los datos.
d) Obtención de resultados.
e) Fin del proceso.
Para cada una de estas actividades existen símbolos específicos que denotan los elementos o
acciones que se tomarán en el proceso.
Nota: Estos han sido normalizados por el Instituto Norteamericano de Normalización (ANSI).
Entrada/salida
Terminal
(Inicio/Fin)
Proceso u
operación
Conectores
Decisión
Llamada a subrutina
Salida a
impresora
Dirección
de flujo
Programación estructurada
La programación estructurada significa escribir un programa de acuerdo a las siguientes reglas:
•
•
•
El programa tiene un diseño modular.
Los módulos son diseñados de modo descendente.
Cada modulo se codifica utilizando las tres estructuras de control básicas: secuencial,
alternativa y repetitiva.
El termino programación estructurada se refiere a un conjunto de técnicas que aumentan
considerablemente la productividad del programa reduciendo en elevado grado el tiempo requerido
para escribir, verificar, depurar y mantener los programas. La programación estructurada utiliza un
número limitado de estructuras de control que minimizan la complejidad de los programas y por
consiguiente reducen los errores.
La programación estructurada es el conjunto de técnicas que incorporan:
•
Recursos abstractos.
•
•
Diseño descendente (top – Down).
Estructuras básicas de control.
Recursos abstractos
Descomponer un programa en términos de recursos abstractos – según Dijkstra – consiste en
descomponer una determinada acción compleja en términos de un número de acciones más
simples.
Diseño descendente
El diseño descendente es el proceso mediante el cual un problema se descompone en una serie
de niveles o pasos sucesivos de refinamiento. La metodología descendente consiste en efectuar
una relación entre las sucesivas etapas de estructuración, de modo que se relacionen unas con
otras mediante entradas y salidas de información. Es decir, se descompone el problema en etapas
o estructuras jerárquicas de forma que se puede considerar cada estructura desde dos puntos de
vista: ¿Qué hace? Y ¿Cómo lo hace?.
Si se considera un nivel n de refinamiento, las estructuras se consideran de la siguiente manera:
Nivel n: desde el
exterior ¿ lo que hace?
Nivel n+1: vista desde el interior
¿Cómo lo hace?
El diseño descendente se puede ver en la siguiente figura.
Estructuras básicas
Cualquier programa con un solo punto de entrada y un solo punto de salida puede resolverse con
tres tipos de estructuras básicas de control: Secuencial, alternativa y repetitiva.
-
Secuencial
Es aquella que ejecuta las acciones sucesivamente unas a continuación de otras sin posibilidad de
omitir ninguna, y naturalmente sin bifurcaciones (saltos a subrutinas). Todas estas estructuras
tendrán una entrada y una salida.
A
B
C
D
-
Alternativa
Es aquella en la que únicamente se realiza una alternativa dependiendo del valor de una
determinada condición o predicado. Las estructuras alternativas también llamadas condicionales
pueden ser de tres tipos: Simple, doble o múltiple
Alternativa simple: Son aquellas en donde la existencia o cumplimiento de la condición implica la
ruptura de la secuencia y la ejecución de una determinada acción.
Inicio
Condición C
Acción A
Fin si
Alternativa doble
Es aquella que permite la elección entre dos acciones o tratamientos en función de que se cumpla
o no determinada condición
Inicio
Condición C
Acción A1
Acción A2
Fin si
Alternativa múltiple
Se adopta cuando la condición puede tomar n valores enteros distintos. Según se elija uno de
estos valores en la condición se realizara una de las n acciones. Esta estructura propuesta por
Hoare, es la case del lenguaje Pascal o case de los Basic estructurados (Case = estructura de
casos).
Inicio
Según
A1
A2
A3
An
Sx
Fin
Repetitiva o iterativa
Son aquellas en las que las acciones se ejecutan un número determinado de veces y dependen de
un valor predefinido o el cumplimiento de una determinada expresión lógica. Un bucle o lazo es el
conjunto de acciones a repetir. En consecuencia es preciso disponer de estructuras algorítmicas
que permitan describir una iteración de forma cómoda. Las tres estructuras mas usuales
dependiendo de que la condición se encuentre al principio o al final de la iteración son: Estructura
mientras, repetir hasta y estructura para.
Estructura Mientras
El bucle mientras determina la repetición de un grupo de instrucciones mientras la condición se
cumpla. Esta estructura se conoce normalmente como While.
no
ondición
Estructura Mientras
si
Acción
Fin Mientras
Estructura Hacer – Mientras
El número de iteraciones del grupo de instrucciones se ejecuta una o varias veces hasta que la
condición no se cumpla. Esta condición se ejecuta al menos una vez. A esta estructura también se
le conoce como Do While.
Acciones
Hacer Mientras
si
ondició
no
Estructura Para
Con el valor inicial se inicializa la variable de control de ciclo, se verifica la condición, si esta se
cumple se ejecuta el cuerpo del ciclo y posteriormente se incrementa la variable de control, lo
anterior se repite hasta que la condición no se cumpla.
Valor inicial
si
ondición
Cuerpo del
ciclo
Incremento de
la variable
no
Secuencia
Entendemos por secuencia la ejecución o realización de pasos o acciones en el desarrollo de un
algoritmo, siguiendo el orden establecido.
Programa
Se le llama programa a la serie de instrucciones escritas en alguno de los lenguajes, por medio de
los cuales se logra que la computadora realice todas las operaciones o decisiones señaladas en
dichas instrucciones.
Podemos distinguir dos tipos de programa:
Programa fuente: es el conjunto de instrucciones escritas en algún lenguaje de computadora, las
cuales han sido transcritos para ser interpretadas por algún dispositivo de lectura.
Programa objeto: es el conjunto de instrucciones que componen un programa fuente y que han
sido traducidas al lenguaje maquina por medio del compilador correspondiente.
Un compilador es un programa que traduce el programa fuente a programa objeto. Un compilador
independiente se requiere para cada lenguaje de programación. Éste efectúa sólo la traducción, no
ejecuta el programa. Una vez compilado el programa, el resultado en forma de programa objeto
será directamente ejecutable.
Pseudocódigo
El pseudocódigo de puede definir como un lenguaje de especificaciones de algoritmos. El
pseudocódigo no es realmente un código sino una imitación y una versión abreviada de
instrucciones reales para las computadoras.