Está en la página 1de 6

22/02/44 ALGORITMOS Y PROGRAMACION

INSTITUTO TECNOLOGICO SUPERIOR


P´URHEPECHA
INGENIERIA INDUSTRIAL
ALGORITMOS Y LENGUAJES DE PROGRAMACION
METODOLOGIA PARA LA SOLUCION DE
PROBLEMAS

ALUMNOS: YOVANI ROSAS SHARICATA


JOSE MANUEL TALAVERA GARCIA

MAESTRO: LIC. JULIAN O. BALTAZAR HERNANDEZ


UNIDAD 2
4 SEMESTRE

CHERAN MICH. 23 FEBRERO 2016


22/02/44 ALGORITMOS Y PROGRAMACION

TOP DOWN.
El diseño top-Down fue promovido en la década de 1970 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 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 Programa Development by Stepwise Refinement,
que tuvo mucha influencia. Los métodos top-Down fueron favorecidos en la ingeniería de
software hasta que llegó la programación orientada a objetos a finales de los 1980s.

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.

En el modelo top-Down se formula un resumen del sistema, sin especificar detalles. Cada
parte del sistema se refina diseñando con mayor detalle. Cada parte nueva es entonces
redefinida, cada vez con mayor detalle, hasta que la especificación completa es lo
suficientemente detallada para validar el modelo. El modelo top-Down se diseña con
frecuencia con la ayuda de "cajas negras" que hacen más fácil cumplir requisitos aunque
estas cajas negras no expliquen en detalle los componentes individuales.
22/02/44 ALGORITMOS Y PROGRAMACION

BOTTOM- UP

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 cómo 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 da 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.

En contraste, en el diseño bottom-up las partes individuales se diseñan con detalle y luego
se enlazan para formar componentes más grandes, que a su vez se enlazan hasta que se
forma el sistema completo. Las estrategias basadas en el flujo de información "bottom-
up" se antojan potencialmente necesarias y suficientes porque se basan en el
conocimiento de todas las variables que pueden afectar los elementos del sistema.
22/02/44 ALGORITMOS Y PROGRAMACION

MODULAR
El concepto básico del diseño modular es muy simple. Consiste en dividir un programa en
módulos que puedan ser analizados, programados y depurados por separado. La máxima
que rige esta filosofía es: Divide y vencerás

La división de un problema en módulos o programas independientes exige que haya un


módulo que controle o relacione a todos los demás. Es el denominado módulo base o
principal del problema. En C éste sería main(). Todo programa C debe estar constituido
por un módulo main() y posiblemente otra serie de módulos secundarios.

Realmente, la programación modular es un intento por diseñar programas por


componentes, de forma que cualquiera de ellos pueda ser sustituido sin afectar al
conjunto.

Las ventajas de la programación modular se pueden resumir en los siguientes puntos:

Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a


punto). Se puede profundizar en las pruebas individuales de cada módulo mejor de lo que
se haría si fuera un programa mayor
22/02/44 ALGORITMOS Y PROGRAMACION

También es más fácil de mantener y modificar con adaptaciones posteriores a su creación

Es también más fácil de controlar y de abordarlo en equipo: el desglose de un problema


en módulos permite encomendar los módulos más complejos a programadores
experimentados y los sencillos a programadores inexpertos

Las rutinas o módulos se pueden usar mediante invocación varias veces en el mismo
programa o en otros con lo que en el primer paso se evita repetir código, y en el segundo
se amortiza el esfuerzo invertido en su desarrollo

El inconveniente principal sería en cambio la inexistencia de algoritmos precisos que


dirijan o auxilien al programador en la forma más adecuada de realizar la división
modular, por lo que la experiencia sería el factor más determinante en estos casos.

Finalmente, podríamos resumir de manera esquemática los objetivos de la programación


modular de la siguiente forma:

 Disminuir la complejidad
 Aumentar la claridad y fiabilidad
 Disminuir el coste de desarrollo
 Propiciar la división del trabajo
 Facilitar las ampliaciones y modificaciones del programa, con nuevos módulos
 Localizar problemas y desajustes de manera clara en un módulo determinado
22/02/44 ALGORITMOS Y PROGRAMACION

PROGRAMACION ESTRUCTURADA
Para programar cada módulo individual es necesario aplicar también técnicas que nos
faciliten la labor y nos aseguren al máximo la corrección y adecuación del producto final.
Los módulos deben estar dotados de una estructura interna sólida y se deben minimizar al
máximo los errores humanos. Este es el objetivo de la programación estructurada,
presentándose por tanto como el complemento ideal al diseño modular. Es difícil dar una
definición de lo que es en sí pero podríamos hablar de una:

Técnica de construcción de programas que utilizan al máximo los recursos del lenguaje,
limitan el número de estructuras aplicables a la construcción de algoritmos y presenta una
serie de reglas que coordinan el desarrollo de las diferentes fases de la programación.

Si bien la definición en sí es un poco abstracta, lo que sí podemos concretar son los


siguientes conceptos, presentes en todas las obras de teóricos de la programación al
respecto (Dijkstra, Hoare, Knuth...):

 Estructuras básicas aplicables


 Recursos Abstractos
 Diseño descendente top-down

También podría gustarte