Está en la página 1de 25

Diseo de Programas

Modularizacin
Introduccin a la Computacin

1
Ing. Diego Figueyra

Diseo
Disear un programa se puede comparar con resolver un
problema de la vida cotidiana.
El programador debe tener muy presente el objetivo del
programa, es recomendable que siempre se tenga en
mente:
Propsito del programa: Qu hace? Qu tan rpido debe ser? En que
procesador se va a implementar?
Parmetros de entrada: Cmo se pasan los parmetros (registro, por
stack, por memoria, etc)? Cuantos son? Qu tipo de datos?
Salidas esperadas del programa: Cmo debe alterar registros o zonas
de memoria?
Hay casos particulares o excepciones: Cdigos de error frente a
entradas o salidas errneo

Modularizacin
Introduccin a la Computacin

2
Ing. Diego Figueyra

Diseo
Es conveniente simplificar el problema original siguiendo
los siguientes lineamientos
Paso 1:
Evitar realizar todo de una sola vez
Subdividir el problema en pasos simples o en tareas lgicas
independientes
De esta manera uno programa mdulos ms sencillos.
Probar mdulos ms simples es ms rpido
Integrar mdulos lgicamente independientes es ms sencillo

Paso 2:
Realizar diagramas de flujo (si aplica)
Un diagrama de flujo debe ser simple de seguir
No debe contener instrucciones especficas de un procesador
sino ideas o conceptos generales

Modularizacin
Introduccin a la Computacin

3
Ing. Diego Figueyra

Diagrama de Flujo
Un diagrama de flujo nos permite realizar un seguimiento
conceptual del programa a disear

Modularizacin
Introduccin a la Computacin

4
Ing. Diego Figueyra

Modularizacin
Si un programa es suficientemente complejo un diagrama de
flujo no resuelve todo.
En estos casos es conveniente modularizar el programa.

Modularizacin
Introduccin a la Computacin

5
Ing. Diego Figueyra

Modularizacin
Modularizar un problema implica dividir el mismo en
problemas ms pequeos o mdulos. Resolviendo problemas
ms pequeos se puede resolver el problema ms complejo
Para poder modularizar uno debe encontrar los bloques
fundamentales que constituyen el problema.
Esta divisin da origen a lo que se conoce como el paradigma
de la programacin modular.
En el proceso de modularizacin se debe:
Dividir el problema en segmentos simples
Buscar que los mdulos sean genricos (que tengan flexibilidad)
En la bsqueda de flexibilidad no debo perder el objetivo del cual part

Modularizacin
Introduccin a la Computacin

6
Ing. Diego Figueyra

Modularizacin
Divido el problema en bloques fundamentales

Resolviendo cada bloque y unindolo puedo resolver el problema


planteado

Modularizacin
Introduccin a la Computacin

7
Ing. Diego Figueyra

Modularizacin
Si diseo segmentos o mdulos flexibles puedo reutilizarlos en
otro momento

Una locomotora?
Modularizacin
Introduccin a la Computacin

Un hombre?
8
Ing. Diego Figueyra

Modularizacin
Un problema complejo como calcular el coseno de un
nmero podra analizarse como varios bloques simples

Modularizacin
Introduccin a la Computacin

9
Ing. Diego Figueyra

Modularizacin
Que bloques empleo?
Funcin Potencia
Funcin Divisin
Funcin Factorial
Con que profundidad?

Modularizacin
Introduccin a la Computacin

10
Ing. Diego Figueyra

Modularizacin
Ahora no es tan complicado resolver esto no?

Modularizacin
Introduccin a la Computacin

11
Ing. Diego Figueyra

Modularizacin
Ventajas
Un solo modulo es mas simple de escribir y de poner en funcionamiento.
Un modulo puede ser til en diferentes partes de un programa e inclusive
formar parte de otros programas. Esto ser cierto siempre y cuando el modulo
realice una tarea lo suficientemente general.
Los errores son mas fciles de aislar y la correccin de los mismos se limita a la
modificacin de un modulo.

Desventajas
La integracin de los mdulos puede ser compleja en particular si fueron
escritos por diferentes personas.
Los mdulos requieren de documentacin cuidadosa dado que pueden afectar a
otras partes del programa. Se debe prestar mucha atencin cuando se utilizan
mdulos que modifican estructuras de datos compartidas con otros mdulos.
La prueba de un modulo puede ser difcil en situaciones en las que se necesitan
datos generados por otros mdulos.

Modularizacin
Introduccin a la Computacin

12
Ing. Diego Figueyra

Modularizacin
Principios de la modularizacin
Aquellos mdulos que hacen referencia a datos comunes deben
ser parte de un mismo modulo.
Dos mdulos en donde el primero depende o hace uso del
segundo deben estar separados.
Un modulo que es usado por varios mdulos debe ser separado
de los dems.
Dos mdulos cuya frecuencia de uso es significativamente
diferente deben ser separados
La organizacin (estructura) de datos relacionados entre si debe
estar oculta en un solo modulo

Modularizacin
Introduccin a la Computacin

13
Ing. Diego Figueyra

Modularizacin
Si un problema es difcil de modularizar hay que intentar
redefinir las tareas involucradas en el problema.
Demasiados casos especiales o demasiadas variables que
requieren un tratamiento especial son signos de que la
definicin del problema es inadecuado

Modularizacin
Introduccin a la Computacin

14
Ing. Diego Figueyra

Modularizacin
Los mdulos (tambin llamados subrutinas o funciones)
pueden recibir valores llamados parmetros y/o devolver
resultados (valor de retorno)
Parmetro

Modulo o
Subrutina

Valor de
Retorno

Modularizacin
Introduccin a la Computacin

15
Ing. Diego Figueyra

Modularizacin
Una subrutina puede ser invocada desde distintos lugares
del programa

Modulo o
Subrutina

Modularizacin
Introduccin a la Computacin

16
Ing. Diego Figueyra

Modularizacin
Ejemplo: Temporizador
Supongamos que tenemos que escribir un programa que controle el
tiempo de encendido de una lmparita.
Se pide que un usuario presione un pulsador, que se encienda la luz y
un minuto despus se apague automticamente.
El procesador controlar todas las entradas y salidas del proceso
Procedamos a plantear el diagrama de flujo

Modularizacin
Introduccin a la Computacin

17
Ing. Diego Figueyra

Ejemplo: Temporizador
Termin
tiempo?

Inicio/Espero

SI
Se presin
el pulsador?

SI

NO

Apago la luz

Fin
Enciendo Luz

Inicio Temporizador

Modularizacin
Introduccin a la Computacin

18
Ing. Diego Figueyra

NO

Ejemplo: Temporizador
Utilizando los conceptos de progamacin modular podramos
pensar en dos mdulos principales para este programa:
MODULO 1:
Espera que se cierre el interruptor y enciende la luz como respuesta
MODULO 2:
Provee el reatrdo de un minuto y luego apaga la luz
Si bien temos modularizado el progama no lo hemos hecho de la mejor
manera:
En ambos mdulos se opera con datos que no estn relacionados
entre s: el tiempo y el estado de la luz (on/off). Modularizando de
esta manera perdemos flexbilidad y por ende portabilidad del
cdigo.

Modularizacin
Introduccin a la Computacin

19
Ing. Diego Figueyra

Ejemplo: Temporizador
Recuerden que los criterios para modularizar nos
recomiendan mantener los datos (entradas o salidas) que
estn relacionados entre s en el mismo mdulo.
Podramos entonces redefinir los mdulos de la siguiente
manera
MODULO1:
Espera que se cierre el interruptor
MODULO 2:
Estos mdulos comparten los
Enciende la luz
mismos datos. Los podramos
MODULO 3:
convertir en un nico mdulo
Apaga la luz
MODULO 4:
Retardo de 1 minuto

Modularizacin
Introduccin a la Computacin

20
Ing. Diego Figueyra

Ejemplo: Temporizador
Podramos mejorar el diseo aun ms. El primer mdulo
comprende una etapa de decisin (cuando se cierra el
interruptor?) con una etapa de lectura del estado del
interruptor (abierto o cerrado)
Separemos dejando la decisin afuera de uno de los mdulos.
El proceso de decisin estar en el programa principal.
Redefiniendo esta condicin el esquema del programa estar
dado de la siguiente manera:
MODULO 1:
Indicar estado del interruptor (on/off)
MODULO 2:
Endender o apagar la luz (on/off)
MODULO 3:
Retardo de 1 minuto

Modularizacin
Introduccin a la Computacin

21
Ing. Diego Figueyra

Ejemplo: Temporizador
Documentemos cada mdulo:
MODULO 1:
Indica si el interruptor est abierto o cerrado. Este mdulo no
recibe ningn parmetro de entrada. Como salida ofrece dos
valores posibles: 0 = Abierto; 1 = Cerrado
MODULO 2:
Enciende o apaga la luz. El mdulo recibe un parmetro que le
indica si debe encender o apagar la luz: 0 = Off ; 1 = On. No
devuelve ningn parmetro.
MODULO 3:
Establece la constante de tiempo de 1 minuto. No recibe o
devuelve ningn parmetro. La ejecucin de este mdulo debera
extenderse durante 1 minuto.

Modularizacin
Introduccin a la Computacin

22
Ing. Diego Figueyra

Ejemplo: Temporizador
Cada modulo es independiente de los dems lo que los
convierte en genricos y por lo tanto pueden ser usados en
cualquier programa. Debe notarse que los dos primeros
mdulos tienen subyacente la estructura del hardware y
por lo tanto toda modificacin realizada sobre dicha
estructura se vera reflejada nicamente en estos mdulos y
no en el resto del programa.

Modularizacin
Introduccin a la Computacin

23
Ing. Diego Figueyra

Ejemplo: Temporizador
Termin
tiempo?

Estado Interruptor

SI
Se presin
el pulsador?

NO

SI
LUZ

Temporizador

Modularizacin
Introduccin a la Computacin

ON

NO

OFF
LUZ

Fin

Modulos: Verde
Parmetros: Negro
Programa: Celeste

24
Ing. Diego Figueyra

Modularizacin
Introduccin a la Computacin

25
Ing. Diego Figueyra

También podría gustarte