1. 1
INTRODUCCIÓN
La computadora no solamente es una maquina que puede realizar procesos
para darnos resultados, sin que tengamos la noción exacta de las operaciones que
realiza para llegar a esos resultados. Con la computadora además de lo anterior
también podemos diseñar soluciones a la medida, de problemas específicos que
se nos presenten. Mas aun, si estos involucran operaciones matemáticas
complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de
datos.
La programación es una técnica esencial de la cual hay que tener
conocimientos. Su inserción las carreras universitaria, asegura que los estudiantes
tengan la facilidad necesaria para conocer las técnicas de solución más eficientes
de solución de problemas.
La estructura de este trabajo, está pensada para que se pueda usar como
guía para el aprendizaje de las técnicas de diseño, como guía de referencia
rápida para llevar a cabo cualquier tarea que el lector necesite realizar en un
momento determinado.
2. 2
Top Down
La programación descendente o "Top - Down" es el proceso mediante el
cual un problema se descompone en una serie de niveles o pasos sucesivos de
refinamiento (stepwise).
El diseño descendente es una técnica que permite diseñar la solución de un
problema con base en la modularización o segmentación dándole un enfoque de
arriba hacia abajo (Top Down Design). Esta solución se divide en módulos que se
estructuran e integran jerárquicamente, como si fuera el organigrama de una
empresa.
Ejemplo:
ALGORITMO
ALGO
MODULO MODULO MODULO
UNO DOS TRES
En el diagrama anterior se muestra la estructura del algoritmo ALGO, que
se auxilia de tres módulos subordinados, cada uno de los cuales ejecuta una tarea
especifica. En su momento el modulo principal ALGO invocara o llamara a los
módulos subordinados, es decir, dirigirá su funcionamiento.
Un modulo es un segmento, rutina, subrutina, subalgoritmo o
procedimiento, que puede definirse dentro de un algoritmo con el fin de ejecutar
una tarea especifica y puede ser llamado o invocado desde el algoritmo principal
cuando sea necesario.
3. 3
Ejemplo:
Se necesita diseñar un algoritmo que ayude a un niño a revisar sus tareas
referentes a las operaciones aritméticas fundamentales: sumar, restar, multiplicar
y dividir. El proceso es el siguiente:
Se ofrecerá un menú de opciones para escoger lo que desee hacer, de
acuerdo con el siguiente formato:
TE PUEDO AYUDAR A:
1. 1. SUMAR
2. 2. RESTAR
3. 3. MULTIPLICAR
4. 4. DIVIR
5. 5. FIN
OPCION
En el caso de la suma el procedimiento es el siguiente: leer los dos
números y el resultado obtenido por el niño, hacer el calculo de la maquina,
comparar ambos resultados y decirle si esta correcto o incorrecto. Se le puede
permitir realizar las revisiones de operaciones de suma que sean necesarias. Para
el caso de la resta, multiplicación y división se seguirá un procedimiento similar,
claro está, con las diferencias existentes.
Características
El programa principal o de control se prueba en primer lugar
Los módulos se integran uno por uno
Se hace hincapié en las pruebas de las interfaces
4. 4
Beneficios
Simplificación del problema y de los subprogramas de cada
descomposición.
Las diferentes partes del problema pueden ser programadas de modo
independiente e incluso por diferentes personas.
El programa final queda estructurado en forma de bloque o módulos lo
que hace más sencilla su lectura y mantenimiento.
Bottom Up
El diseño ascendente se refiere a la identificación de aquellos procesos que
necesitan computarizarse con forme vayan apareciendo, su análisis como sistema
y su codificación, o bien, la adquisición de paquetes de software para satisfacer el
problema inmediato.
Características
Permite una prueba temprana de módulos particulares
Los módulos se pueden integrar en diversos grupos
Se hace hincapié en la funcionalidad y prestaciones de los módulos
La diferencia del tipo de diseño ascendente y descendente solo se puede
dar a la hora de la programación. Porque en el momento de dibujar la estructura
del problema, en las dos formas el diseño queda igual, solamente que los módulos
son enumerados en forma diferente, pero esto se hace pensando ya en como se
va a comenzar a programar. En el diseño ascendente primero se programan los
módulos que se encuentran mas abajo de la estructura, hasta llegar al primer
modulo dibujado.
5. 5
Ejemplo:
Realiza el diseño ascendente para la gestión del control de un hotel
utilizando la siguiente información:
pagos a empleados (nombre, puesto, sueldo, horas extra)
prestamos externos (cliente, préstamo, aval, plazo)
libro de reservaciones(nombre, departamento, entrada, salida)
mantenimiento (área, daños, total)
Esta gráfica muestra los módulos generales que va a contener el programa.
SUBPROGRAMA
CONTROL 20
SUBPROGRAMA SUBPROGRAMA SUBPROGRAMA SUBPROGRAMA
PAGOS A PRESTAMOS LIBROS DE MANTENIMIENTO
EMPLEADOS 5 EXTERNOS RESERVACIONES 15 19
Áreas de Aplicación y Beneficios de Top Down y Botton-Up
En el proceso de desarrollo de software, los enfoques Top-down y Bottom-
up juegan un papel crucial.
El diseño Top-down fue promovido en los setenta por los investigadores de
IBM Harlan Mills y Niklaus Wirth. Mills desarrolló los conceptos de programación
estructurada para usos prácticos y los probó en un proyecto en 1969 para
automatizar el índice de la morgue del New York Times. El éxito administrativo e
6. 6
ingenieril del proyecto hicieron que el enfoque top-down se esparciera por IBM y
por el resto de la industria de los computadores. Niklaus Wirth, que entre sus
logros está el desarrollo del lenguaje de programación Pascal, escribió el artículo
Program Development by Stepwise Refinement, que tuvo mucha influencia.
El enfoque top-down enfatiza la planificación y conocimiento completo del
sistema. Se entiende que la codificación no puede comenzar hasta que no se haya
alcanzado un nivel de detalle suficiente, al menos en alguna parte del sistema.
Esto retrasa las pruebas de las unidades funcionales del sistema hasta que gran
parte del diseño se ha completado.
Bottom-up hace énfasis en la programación y pruebas tempranas, que
pueden comenzar tan pronto se ha especificado el primer módulo. Este enfoque
tiene el riesgo de programar cosas sin saber como se van a conectar al resto del
sistema, y esta conexión puede no ser tan fácil como se creyó al comienzo. La
reutilización del código es uno de los mayores beneficios del enfoque bottom-up.
El desarrollo de software moderno usualmente combina tanto Top-down
como Bottom-up. Aunque un conocimiento completo del sistema se considera
usualmente necesario para un buen diseño, haciendo que teóricamente sea un
enfoque top-down, la mayoría de proyectos de desarrollo de software tratan de
usar código existente en algún grado. El uso de módulos existentes le dan al
diseño un sabor 'bottom-up'. Algunos enfoques usan un enfoque en el que un
sistema parcialmente funcional es diseñado y programado completamente, y este
sistema se va expandiendo para llenar los requisitos del proyecto.
7. 7
Diagrama de Flujo
Son una manera de representar visualmente el flujo de datos a travéz de
sistemas de tratamiento de información. Los diagramas de flujo describen que
operaciónes y en que secuencia se requieren para solucionar un problema dado.
Un diagrama de flujo u organigrama es una representación diagramática
que ilustra la secuencia de las operaciones que se realizarán para conseguir la
solución de un problema. Los diagramas de flujo se dibujan generalmente antes
de comenzar a programar el código frente a la computadora. Los diagramas de
flujo facilitan la comunicación entre los programadores y la gente del negocio.
Ejemplos de Diagramas de Flujo
Diagrama de flujo que encuentra la suma de los primeros 50 números
naturales
8. 8
Suma, es la variable a la que se le va agregando la valor de cada número
natural. N, es el contador. Éste recorrerá lo números hasta llegar al 50.
El primer bloque indica el inicio del Diagrama de flujo
El segundo bloque, es un símbolo de procesos, en este bloque se asume que
las variables suma y N han sido declaradas previamente y las inicializa en 0 para
comenzar a el conteo y la suma de valores (Para declararlas existe el bloque
Tarjeta perforada).
El tercer bloque, es también un Símbolo de procesos. En éste paso se
incrementa en 1 la variable N (N = N + 1). Por lo que, en la primera pasada esta N
valdrá 1, ya que estaba inicializada en 0.
El cuarto bloque es exactamente lo mismo que el anterior Pero en éste, ya se le
agrega el valor de N a la variable que contendrá la suma (En el primer caso
contendrá 1, ya que N = 1).
9. 9
El quinto bloque es uno Símbolo de Toma de decisiones y Ramificación Lo
que hay dentro del bloque es una pregunta que se le hace a los valores que
actualmente influyen en el proceso (Por decir algo, no se como decirlo, soy muy
sope :D)¿Es N=50?, Obviamente la respuesta es no, ya que N todavía es 1. por lo
que el flujo de nuestro programa se dirigirá hacía la parte en donde se observa la
palabra no: Tercer Bloque, éste le sumará 1 (N=N+1) y vuelve a llegar a éste
bloque, donde preguntará ¿Es N=50?... ¡No!, todavía es 2. Ha pues, regresa al
Tercer bloque y vuelve hacer lo mismo. Y así hasta llegar a 50, obteniendo así la
suma de los primeros 50 primeros números naturales.
Por último indicamos que el resultado será mostrado en la impresora (Este
lo puedes cambiarlo por el display para mostrar datos).
Fin del programa (o diagrama)
Beneficios
Permite la puesta en común de conocimientos individuales sobre un
proceso, y facilita la mejor comprensión global del mismo.
10. 10
Proporciona información sobre los procesos de formaclara, ordenada y
concisa.
Características de los Diagramas de Flujo
Debido a sus características principales, la utilización del Diagrama de Flujo
será muy útil cuando:- Se quiere conocer o mostrar de forma global un proceso.-
Para comparar dos procesos o alternativas de uno dado.- Se necesita una guía
que permita un análisis sistemático de un proceso
Áreas de Aplicación
Se utiliza principalmente en programación, economía y procesos
industriales.
Los Diagramas de Flujo en el área de informática nos permiten la
apreciación paso por paso de lo que estamos haciendo en un determinado
problema y la manera ordenada en cómo se deben relacionar cada punto para
llegar a un determinado finaly mantener una vista clara y ordenada del sistema en
el que estamos trabajando para que sea acorde con el esfuerzo con el que se
trabajó.
Diagramas Estructurados
El diagrama estructurado también conocido como diagrama de chapin es
como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son
contiguas.
Beneficios
Adopta la filosofía de la programación estructurada, que utiliza un
enfoque descendente.
11. 11
Utiliza un número limitado de símbolos de tal forma que el diagrama de
flujo ocupa menos espacio y puede leerse con cierta finalidad.
Ejemplo:
Un algoritmo se representa en la sig. forma:
Inicio
Accion1
Accion2
...
Fin
Inicio
Leer
Nombre,Hrs,Precio
Calcular
Salario = Hrs * Precio
Calcular
Imp = Salario* 0.15
Calcular
Neto = Salario + Imp
Escribir
Nombre, Imp, SNeto
Fin
12. 12
Características
Fácil de leer y comprender.
Fácil de codificar en una amplia gama de lenguajes y en diferentes
sistemas.
Fácil de mantener.
Eficiente, aprovechando al máximo los recursos de la computadora.
Modularizable.
Aplicaciones de los Diagramas Estructurados
Los diagramas de flujo estructurados, como su nombre menciona, es
actualmente caracterizado como una herramienta de la programación
estructurada. Gracias a esta herramienta (y debido a las características de la
programación estructurada) podemos interpretar cada acción de un programa y
representarlo gráficamente (en un diagrama estructurado) con la debida estructura
(simple o compuesta) de la diagramación estructurada.
13. 13
CONCLUSIÓN
En esta investigación se abarcó diferentes técnicas de diseño las cuales
son el Top Down, Bottom Up Diagrama de Flujo, Diagrama Estructurado
La técnica Top Down también es conocida como arriba-abajo y consiste en
una serie de niveles de menor a mayor complejidad que dan solución al problema,
en esencia consiste en efectuar una relación entre las etapas de la estructuración
de forma que una etapa jerárquica y su inmediato inferior se relacionan mediante
la entrada y salida de información.
La técnica Bottom Up es conocida también como ascendente, la diferencia
entre el bottom up y el top down es que los módulos son enumerados de forma
diferente. En el bottom up se enumeran primero los módulos inferiores hasta llegar
al modulo superior.