Sei sulla pagina 1di 50

UNIDAD VI:

Programacin Modular
o Anlisis
Estructurado

Ing Luis Barrera - IAI115 -2015 1


PROGRAMACIN MODULAR
Conceptos Generales
Tcnica divide y vencers
Dividirlo en subprogramas
Diseo descendente
Partes son independientes entre si
Programa principal sub-programas
Cuando se invoca a una funcin los pasos
que estn definidos se ejecutan y luego
vuelven al mdulo donde fue llamado.

Ing Luis Barrera - IAI115 -2015 2


PROGRAMACION MODULAR
La programacin modular es un mtodo de diseo que permite
resolver un problema mediante su divisin en pequeos
subproblemas, denominados mdulos.

La Programacin Modular es uno de los mtodos de diseo ms


fciles, flexibles, y potentes para programar y mejorar la
productividad de nuestros programas.

Cuando tenemos un problema complejo y queremos solucionarlo,


utilizamos la tcnica de solucin de problemas denominada
DIVIDE Y VENCERAS. Esta consiste en descomponer (dividir) el
problema en pequeas partes o sub-problemas, cada uno de los
cuales se debe plantear, analizar y disear su solucin de forma
independiente.
Ing Luis Barrera - IAI115 -2015 3
A las divisiones o partes de un problema
y a las soluciones o algoritmos que los
resuelven, se les conoce como
mdulos; cada mdulo debe realizar
una tarea o actividad especfica.
Para resolver cada sub-problema (o mdulo), ste se
debe plantear, analizar, disear su algoritmo y
codificarlo, individualmente. Recordemos que la
solucin de cada sub-problema resuelve solo una
parte del problema; la solucin completa del mismo
est formada por el conjunto de todas y cada una de
las pequeas soluciones diseadas y la interrelacin
de todas ellas.
Ing Luis Barrera - IAI115 -2015 4
C

B D
A

Ing Luis Barrera - IAI115 -2015 5


PROGRAMACION MODULAR
La programacin modular se basa en la descomposicin descendente o
jerarqua de mdulos, conocida como tcnica TOP-DOWN.

En esta tcnica, hay un mdulo principal o raz al que se enlazan los


dems mdulos en que se ha fraccionado el problema.

A continuacin se muestra la jerarqua de mdulos Raiz

Mdulo Mdulo
1 2

Mdulo Mdulo Mdulo


1.1 1.2 2.1

Ing Luis Barrera - IAI115 -2015 6


PROGRAMACION MODULAR

Ing Luis Barrera - IAI115 -2015 7


Ing Luis Barrera - IAI115 -2015 8
Programacin modular
En la programacin modular consta de varias
secciones dividas de forma que interactan a
travs de llamadas a funcin, que integran el
programa en su totalidad.

En la programacin modular, el programa principal


coordina las llamadas a los mdulos secundarios y
pasa los datos necesarios en forma de
parmetros.

A su vez cada modulo puede contener sus propios


datos y llamar a otros mdulos o funciones.

Ing Luis Barrera - IAI115 -2015 9


Programacin Modular
Es evidente que si esta
metodologa nos lleva a tratar con
subproblemas, entonces
tambin tengamos la necesidad
de poder crear y trabajar con
subprogramas para resolverlos.
A estos subprogramas se les
suele llamar mdulos, de ah
viene el nombre de programacin
modular. En C disponemos de
dos tipos de mdulos: las
funciones
Ing Luis Barrera - IAI115 -2015 10
PROGRAMACION MODULAR
Un problema resuelto mediante programacin
modular genera un algoritmo modular que consta de
un algoritmo principal y uno o varios subalgoritmos.

PRINCIPAL, comnmente conocido como: mdulo


raz, mdulo conductor o mdulo de control; ya que
controla todo lo que sucede, tanto en ese mdulo
como en todos los dems, transfiriendo el control de
ejecucin a cada mdulo en el momento que sea
requerido. De esa forma, cada mdulo puede realizar
su funcin o tarea, pero al terminar regresa el control
de ejecucin al algoritmo o mdulo principal.

Ing Luis Barrera - IAI115 -2015 11


PROGRAMACION MODULAR
Un subalgoritmo puede realizar las mismas acciones que
un algoritmo:
Aceptar datos
Realizar clculos
Devolver resultados

El subalgoritmo es utilizado por el algoritmo principal para


un propsito especfico

El subalgoritmo recibe datos y devuelve resultados

Ing Luis Barrera - IAI115 -2015 12


PROGRAMACION MODULAR
Algoritmo
Principal Subalgoritmo 1 Subalgoritmo 1.1

Subalgoritmo 2
Ing Luis Barrera - IAI115 -2015 13
PROGRAMACION MODULAR
Haciendo un smil con una oficina:

El jefe (algoritmo principal) da instrucciones a sus


subordinados (subalgoritmos) para que ejecuten una
tarea y cuando esta haya sido realizada informen.

Se dice que el algoritmo principal llama o invoca al


subalgoritmo. Esto puede suceder en diferentes
lugares del algoritmo principal.

Un subalgoritmo puede llamar a su vez a sus propios


subalgoritmos.

Ing Luis Barrera - IAI115 -2015 14


Si la tarea asignada a un mdulo es muy compleja (o muy grande),
debe dividirse todava en otro u otros mdulos ms pequeos. El
proceso sucesivo de subdivisin de mdulos contina hasta que
cada mdulo tenga solamente una tarea o accin especfica que
ejecutar, esta tarea puede ser de entrada, salida, procesamiento o
manipulacin de datos, control de otros mdulos o una combinacin
de todos o algunos de estos. Los resultados producidos por un
mdulo pueden ser utilizados por otro mdulo cuando se transfiera
el control a ellos.

Si disea cada mdulo con


independencia de los dems,
y siguiendo un mtodo
ascendente o descendente,
se llega hasta la
descomposicin final del
problema en mdulos en
forma jerrquica.
Ing Luis Barrera - IAI115 -2015 15
PROGRAMACION MODULAR
El algoritmo principal debe contener las
llamadas (o invocaciones) a los sub-algoritmos,
es decir es el que indica el orden en que se
ejecutan cada sub-algoritmo; adems, el modulo
principal puede realizar una o varias tareas.
Cada sub-algoritmo como representacin de la
solucin de un mdulo debe mantener todas las
propiedades de un algoritmo. Por lo tanto, estos
pueden contener tareas simples que slo se
ejecutan una vez o, lo que es ms frecuente,
tareas repetitivas que se ejecutan varias veces y
son llamadas para ejecutarse desde el algoritmo
principal.

Ing Luis Barrera - IAI115 -2015 16


principal funcin

Llamada funcin

funcin

Llamada funcin
Llamada funcin

Llamada funcin
funcin

Llamada funcin

Ing Luis Barrera - IAI115 -2015 17


PROGRAMACION MODULAR
La solucin de cada mdulo se le conoce como SUB-
ALGORITMO, en trminos generales, si est representado en un
diagrama: sub flujograma, si est escrito en cdigo subprograma
(subrutina) y en lenguaje C funcin. Un problema resuelto
mediante programacin modular genera un algoritmo modular que
consta de un algoritmo principal y uno o varios subalgoritmos.

Para resolver cada sub-problema (o mdulo), se le aplica la


Metodologa para Resolver Problemas completa, es decir se debe
plantear, analizar, disear su algoritmo y codificarlo,
individualmente.

Recordemos que la solucin de cada sub-problema resuelve solo


una parte del problema; la solucin completa del mismo est
formada por el conjunto de todas y cada una de las pequeas
soluciones diseadas y la interrelacin de todas ellas.
Ing Luis Barrera - IAI115 -2015 18
Ing Luis Barrera - IAI115 -2015 19
PROGRAMACION MODULAR
En pocas palabras, la tcnica implica dos partes:
1. Dividir el problema en sub-problemas ms pequeos.

2. Aplicar la Metodologa para resolver problemas a cada


sub-problema; es decir para cada subproblema se
hace lo siguiente:
Planteamiento (Qu hace?)
Anlisis del problema (Cmo lo hace?)
Diseo de la solucin o flujograma
Codificacin o programa

Ing Luis Barrera - IAI115 -2015 20


TCNICAS DE DISEO
MODULAR

Ing Luis Barrera - IAI115 -2015 21


Con el objeto de facilitar el diseo de algoritmos y la organizacin de los
diversos elementos que los componen se utilizan algunas tcnicas que
muestran una metodologa a seguir para resolver los problemas. Estas
tcnicas hacen que los programas sean ms fciles de escribir,
verificar, leer y mantener. Algunas de las tcnicas ms conocidas son :

1. Top Down o Diseo Descendente

2. Botton Up o Diseo Ascendente

3. Warnier Orr

Ing Luis Barrera - IAI115 -2015 22


1. Top Down o Diseo Descendente

TOP DOWN: Es una tcnica de diseo, que consiste en tomar inicialmente, el


problema completo, como un todo y descomponerlo sucesivamente en problemas
ms pequeos y por lo tanto, de solucin ms sencilla.
La descomposicin del problema original (y de las etapas subsecuentes), puede
detenerse cuando los problemas resultantes alcanzan un nivel de detalle que el
programador o analista pueden implementar fcilmente.

El problema se descompone en etapas o estructuras jerrquicas, de modo que se


puede considerar cada estructura como dos puntos de vista : lo que hace?, y cmo lo
hace ?. Si se considera un nivel n de refinamiento, las estructuras se consideran de la
siguiente forma :

nivel n : Vista desde el exterior.


"lo que hace ?"

Nivel n+1 : Vista desde el interior.


"cmo lo hace ?"

Ing Luis Barrera - IAI115 -2015 23


Ing Luis Barrera - IAI115 -2015 24
2. Botton Up o Diseo Ascendente

BOTTON UP: Esta tcnica consiste en partir de los detalles ms precisos


del algoritmo completando sucesivamente mdulos de mayor complejidad,
este mtodo es inverso al anterior, parte de lo ms simple para llegar a lo
complejo; se recomienda utilizarlo cuando: ya se cuenta con experiencia en
la aplicacin de la tcnica, o cuando se tiene un modelo a seguir y ya se
sabe lo que se va a hacer, o se cuenta con amplia pericia en la resolucin
de problemas semejantes.

Conforme se va alcanzando el desarrollo de mdulos ms grandes se


plantea como objetivo final la resolucin global del problema. La tcnica de
Botton Up es frecuentemente utilizada para la realizacin de pruebas a
sistemas ya concluidos.

Ing Luis Barrera - IAI115 -2015 25


3. Warnier Orr
WARNIER ORR: Es una tcnica que utiliza una
representacin semejante a la de cuadros
sinpticos para mostrar el funcionamiento y
organizacin de los elementos que conforman el
algoritmo. Bsicamente, utiliza una notacin de
llaves para organizar los mdulos.

Bsicamente, utiliza una notacin de llaves para


organizar los mdulos y se auxilia en la siguiente
simbologa para indicar operaciones de control.

Ing Luis Barrera - IAI115 -2015 26


Smbolo Significado
+ OR (uno, otro o varios)
XOR (uno u otro, solo uno)
puede hacerse tantas
(x,y)
veces desde x hasta y

(0,n) = De cero veces a n veces


(1,n) = De una vez a n veces

Ing Luis Barrera - IAI115 -2015 27


Diseo Descendente o Top down.

El diseo descendente o Top-down, esto es de


arriba hacia abajo, es un funcin mediante el cual
un problema se descompone en una serie de
niveles o pasos sucesivos de refinamiento.

La metodologa consiste en efectuar una relacin


entre las etapas de estructuracin (o
subproblemas), de modo que se conecten o
comuniquen unas con otras, mediante entradas y
salidas de informacin. Es decir, se descompone
el problema en etapas o estructuras jerarquicas,
de forma que se puede considerar cada estructura
desde dos puntos de vista: Qu hace esa etapa?
Y Cmo lo hace?.
Ing Luis Barrera - IAI115 -2015 28
Cada nivel de refinamiento o sub-problema, conocidos ahora como mdulos, se
debe consideran de la siguiente forma:

Ing Luis Barrera - IAI115 -2015 29


El diseo descendente o Top-down, puede
verse a continuacin:

Ing Luis Barrera - IAI115 -2015 30


Veamos un ejemplo de cmo emplear el diseo descendente para resolver un
problema. Supongamos que un profesor quiere crear un programa para
gestionar las notas de sus alumnos. Quiere que dicho programa le permita
realizar tareas tales como asignar notas, cambiar notas, ver las notas
segn distintas calificaciones, etc. A continuacin tines un esquema que
representa una de las posibles divisiones del problema en mdulos.

Ing Luis Barrera - IAI115 -2015 31


Lo primero que podemos hacer es dividir el problema en tres
partes: Entrada, Proceso y Salida, que como son las partes
de todo algoritmo, casi siempre estn presentes y si el
proceso en s es grande o complejo, se puede dividir en ms
partes. Con la prctica veremos que se puede dejar la
entrada de datos como parte del mdulo principal y que la
salida puede ser un solo mdulo o normar parte de los
mdulos de proceso; tambin podemos dejar la salida en el
principal y disear un mdulo de entrada de datos y desde
luego los de proceso. En fin que no hay una regla para dividir
un problema, cada uno divide y disea los mdulos que
considere necesarios.

Ing Luis Barrera - IAI115 -2015 32


Cada mdulo puede contener acciones solo de entrada, solo de
proceso, solo de salida de datos o, una combinacin de todos.

Los datos con que trabaja un mdulo se conocen como parmetros,


y estos forman parte de los datos de entrada, (pero no se leen), son
enviados por el mdulo que lo precede por ejemplo en la figura
anterior, los parmetros del mdulo 1-2, deben ser facilitados por el
mdulo 1.
Adems, cada mdulo puede producir resultados (datos de salida)
que no se imprimen, sino que son requeridos por el mdulo que lo
precede y, a estos datos, se les conoce como Valor de Retorno.

Ing Luis Barrera - IAI115 -2015 33


VENTAJAS DE UTILIZAR
PROGRAMACIN MODULAR
(o Anlisis estructurado).

Ing Luis Barrera - IAI115 -2015 34


La tcnica de Anlisis Estructurado se conoce tambin como la
tcnica Divide y Vencers, ya que se descompone un
problema en mdulos independientes ms simples, que son
fciles de resolver. Se disea la solucin de cada mdulo con
independencia de los dems. Lo que nos facilita el anlisis, el
diseo del algoritmo y desde luego su codificacin.

Adems, como cada mdulo se considera independiente,


varios programadores pueden disear por separado las
soluciones a diferentes mdulos, con lo cual se minimiza el
trabajo o esfuerzo personal y el tiempo de diseo para la
solucin completa.

Ing Luis Barrera - IAI115 -2015 35


Algunas ventajas de programar modularmente son:

Disminuir la complejidad
Aumentar la claridad y fiabilidad.
Posibilita el uso repetitivo de las rutinas en el mismo o en
diferentes programas.
Facilitar la ampliacin del programa mediante nuevos
mdulos.
Facilitar las modificaciones y correcciones al quedar
automticamente localizadas en un mdulo, lo cual indica
que un programa modular es fcil de mantener y modificar.
Un programa modular es ms fcil de escribir y depurar
(ejecutar, probar y poner a punto).
Un programa modular es ms fcil de controlar. El desglose
de un problema en mdulos permite encomendar los
mdulos ms complejos a los programadores ms
experimentados y los ms sencillos a los programadores
con menos pericia o experiencia.

Ing Luis Barrera - IAI115 -2015 36


REPRESENTACIN GRFICA DE UN
ALGORITMO MODULAR
La representacin grfica de la solucin de un problema
mediante esta tcnica, tiene varios flujogramas: uno que
representa el modulo principal y uno o varios ms, que
representan a cada uno de los mdulos que se hayan
diseado. A cada mdulo se le debe asignar un
identificador o nombre, que lo diferencie de otros.

Para indicar dentro del FLUJOGRAMA principal que se


har uso de un subflujograma se utiliza el rectngulo con
doble barra vertical, dentro del cual se escribe el nombre
del mdulo, a esto se le conoce como invocacin del sub-
flujograma o llamada a un sub-flujograma.

Ing Luis Barrera - IAI115 -2015 37


REPRESENTACIN GRFICA DE UN
ALGORITMO MODULAR
Para diferenciar un subflujograma del flujograma principal,
a los smbolos de inicio y fin se le aaden barras
verticales; en el smbolo de inicio y fin, se escribe el
identificador o no nombre del mdulo y los parmetros de
ste si los necesita; es muy comn terminar un sub-
flujograma con la palabra retornar en el smbolo de fin, ya
que al llegar a ste, se regresa el control de ejecucin al
flujograma principal o, al sub-flujograma que lo ha utilizado
o invocado, tambin se escribe aqu el valor de retorno si
el mdulo produce alguno.

Ing Luis Barrera - IAI115 -2015 38


Las siguientes figuras nos muestran los smbolos descritos
anteriormente:

Ing Luis Barrera - IAI115 -2015 39


La representacin grfica (flujograma) de la solucin de un
problema descompuesto en forma modular, adopta la estructura
siguiente:

Ing Luis Barrera - IAI115 -2015 40


Un subflujograma (mdulo) puede ser invocado desde el flujograma
principal o desde otro subflujograma, al terminar de ejecutarse se retorna
al flujograma principal o al subflujograma que lo invoc

Ing Luis Barrera - IAI115 -2015 41


En donde: Proceso1, Proceso2 y Proceso3 pueden
contener estructuras:
Secuenciales (lectura, escritura, asignacin)
Selectivas (seleccin simple, doble o mltiple)
Iterativas (Mientras, Desde-hasta, Hasta que)

Un sub-flujograma (mdulo) puede ser invocado desde


el flujograma principal o desde otro subflujograma, al
terminar de ejecutarse se retorna al flujograma
principal o al sub-flujograma que lo invoc.

Ing Luis Barrera - IAI115 -2015 42


CONCEPTOS RELACIONADOS
CON PROGRAMACIN MODULAR
1. Variables Globales: Estas variables pueden ser referenciadas desde cualquier
mdulo. Lo cual significa que podemos utilizar estas variables en todos los mdulos,
conservando su valor en todas ellas; y, ese valor se puede cambiar en cualquier
mdulo
2. Variables Locales: Son variables que se declaran dentro de un mdulo, y
mantienen su valor mientras este mdulo se est ejecutando, es decir que cuando se
ejecuta otro mdulo no existen en memoria, por lo tanto no se pueden utilizar, fuera
del mdulo donde fueron declaradas.
3. Sub algoritmo: Es un algoritmo que realiza una tarea especfica dentro de la solucin
de un problema, es decir que resuelve una parte de un problema; si se representa por
medio de un diagrama se le conoce como sub flujograma.
Puede ser llamado o invocado desde el flujograma principal o cualquier otro sub
flujograma. Todo sub flujograma puede recibir uno o varios datos (parmetros) de quien
lo invoca, pero solo puede enviar Un nico resultado (valor de retorno)

Ing Luis Barrera - IAI115 -2015 43


CONCEPTOS RELACIONADOS
CON PROGRAMACIN MODULAR
5. Parmetros: Los parmetros o argumentos de un sub flujograma son los datos que
son parte de la entradas del mdulo, pero dentro del sub flujograma no se leen, deben
de declararse en la invocacin al sub flujograma y en el inicio del mismo. Una
subflujograma puede tener o no parmetros.

Los parmetros se comportan como variables locales, crendose al entrar al


subflujograma y destruyndose al salir de ste; es decir que, los parmetros reciben
sus valores del mdulo que invoca al subflujograma, y con estos valores se trabajara
en l.

6. Valor de retorno: Se conoce como valor de retorno aquel que se genera en el


mdulo y se enva al subflujograma de quien depende, es decir al subflujograma que
lo invoc.

Ing Luis Barrera - IAI115 -2015 44


COMO UTILIZAR MODULARIDAD EN C.

Ing Luis Barrera - IAI115 -2015 45


Modelo del Formato Metodologa para
Resolver Problemas

I. Planteamiento General del Problema

II. Mtodo de Top Down


a) Grandes pasos o Cosas que hacer:
b) Que disearemos?
c) Diagrama

Ing Luis Barrera - IAI115 -2015 46


Modelo del Formato Metodologa para
Resolver Problemas
III. Anlisis Estructurado
- //Esto ser diseado para cada modulo
3.1 Aplicacin de la Metodologa para cada Modulo
a) Nombre del modulo: Colocar el nombre relacionado con el objetivo
del mismo (nemotcnico)
b) Que hace? Descripcin del objetivo del modulo
c) Planteamiento del Modulo

a. Lee o Recibe? b. Imprime, Devuelve o Enva?

Ing Luis Barrera - IAI115 -2015 47


Modelo del Formato Metodologa para
Resolver Problemas
3.2 Anlisis del Problema
- //El como lo hace ser diseado para cada modulo
3.2.1 Aplicacin de la Metodologa para cada Modulo
a. Definicin de Variables de Salida:
Imprime o Devuelve o Enva?

b. Definicin de Datos de Entrada:


Lee o Recibe Parametros?

Ing Luis Barrera - IAI115 -2015 48


Modelo del Formato Metodologa para
Resolver Problemas
3.1 Aplicacin de la Metodologa para cada Modulo
Definicin de Constantes:

c. Restricciones: Hay Variables de entradas?

d. Proceso: No existe solo lee

e. Definicin de Variables de Proceso:

3.2.1 Diseo de la Solucin (Sub - Flujograma)

Ing Luis Barrera - IAI115 -2015 49


Fin de la clase.

Gracias por asistir.

Ing Luis Barrera - IAI115 -2015 50

Potrebbero piacerti anche