You are on page 1of 50

UNIDAD VI

:
Programación Modular
o Análisis
Estructurado

Ing Luis Barrera - IAI115 -2015 1

PROGRAMACIÓN MODULAR
Conceptos Generales
Técnica divide y vencerás
Dividirlo en subprogramas
Diseño descendente
Partes son independientes entre si
Programa principal sub-programas
Cuando se invoca a una función los pasos
que están definidos se ejecutan y luego
vuelven al módulo donde fue llamado.

Ing Luis Barrera - IAI115 -2015 2

PROGRAMACION MODULAR
La programación modular es un método de diseño que permite
resolver un problema mediante su división en pequeños
subproblemas, denominados módulos.

La Programación Modular es uno de los métodos de diseño más
fáciles, flexibles, y potentes para programar y mejorar la
productividad de nuestros programas.

Cuando tenemos un problema complejo y queremos solucionarlo,
utilizamos la técnica de solución de problemas denominada
DIVIDE Y VENCERAS. Esta consiste en descomponer (dividir) el
problema en pequeñas partes o sub-problemas, cada uno de los
cuales se debe plantear, analizar y diseñar su solución 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
módulos; cada módulo debe realizar
una tarea o actividad específica.
Para resolver cada sub-problema (o módulo), éste se
debe plantear, analizar, diseñar su algoritmo y
codificarlo, individualmente. Recordemos que la
solución de cada sub-problema resuelve solo una
parte del problema; la solución completa del mismo
está formada por el conjunto de todas y cada una de
las pequeñas soluciones diseñadas y la interrelación
de todas ellas.
Ing Luis Barrera - IAI115 -2015 4

C

B D
A

E

G

F

Ing Luis Barrera - IAI115 -2015 5

1 Ing Luis Barrera .1 1.2 2. hay un módulo principal o raíz al que se enlazan los demás módulos en que se ha fraccionado el problema. En esta técnica.IAI115 -2015 6 . PROGRAMACION MODULAR La programación modular se basa en la descomposición descendente o jerarquía de módulos. A continuación se muestra la jerarquía de módulos Raiz Módulo Módulo 1 2 Módulo Módulo Módulo 1. conocida como técnica TOP-DOWN.

IAI115 -2015 7 .PROGRAMACION MODULAR Ing Luis Barrera .

IAI115 -2015 8 .Ing Luis Barrera .

IAI115 -2015 9 . En la programación modular. Programación modular En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a función. A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones. que integran el programa en su totalidad. Ing Luis Barrera . el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.

A estos subprogramas se les suele llamar módulos. entonces también tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos. de ahí viene el nombre de programación modular. En C disponemos de dos tipos de módulos: las funciones Ing Luis Barrera .IAI115 -2015 10 . Programación Modular Es evidente que si esta metodología nos lleva a tratar con subproblemas.

pero al terminar regresa el control de ejecución al algoritmo o módulo principal.IAI115 -2015 11 . transfiriendo el control de ejecución a cada módulo en el momento que sea requerido. tanto en ese módulo como en todos los demás. PRINCIPAL. De esa forma.PROGRAMACION MODULAR Un problema resuelto mediante programación modular genera un algoritmo modular que consta de un algoritmo principal y uno o varios subalgoritmos. comúnmente conocido como: módulo raíz. Ing Luis Barrera . módulo conductor o módulo de control. ya que controla todo lo que sucede. cada módulo puede realizar su función o tarea.

IAI115 -2015 12 .PROGRAMACION MODULAR Un subalgoritmo puede realizar las mismas acciones que un algoritmo: Aceptar datos Realizar cálculos Devolver resultados El subalgoritmo es utilizado por el algoritmo principal para un propósito específico El subalgoritmo recibe datos y devuelve resultados Ing Luis Barrera .

IAI115 -2015 13 .1 Subalgoritmo 2 Ing Luis Barrera . PROGRAMACION MODULAR Algoritmo Principal Subalgoritmo 1 Subalgoritmo 1.

IAI115 -2015 14 . Se dice que el algoritmo principal llama o invoca al subalgoritmo. Esto puede suceder en diferentes lugares del algoritmo principal. Ing Luis Barrera . Un subalgoritmo puede llamar a su vez a sus propios subalgoritmos.PROGRAMACION MODULAR Haciendo un símil 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.

El proceso sucesivo de subdivisión de módulos continúa hasta que cada módulo tenga solamente una tarea o acción específica que ejecutar. salida. Si diseña cada módulo con independencia de los demás. esta tarea puede ser de entrada. control de otros módulos o una combinación de todos o algunos de estos. Ing Luis Barrera .Si la tarea asignada a un módulo es muy compleja (o muy grande). y siguiendo un método ascendente o descendente. Los resultados producidos por un módulo pueden ser utilizados por otro módulo cuando se transfiera el control a ellos.IAI115 -2015 15 . se llega hasta la descomposición final del problema en módulos en forma jerárquica. debe dividirse todavía en otro u otros módulos más pequeños. procesamiento o manipulación de datos.

es decir es el que indica el orden en que se ejecutan cada sub-algoritmo. lo que es más frecuente. Cada sub-algoritmo como representación de la solución de un módulo debe mantener todas las propiedades de un algoritmo.PROGRAMACION MODULAR El algoritmo principal debe contener las llamadas (o invocaciones) a los sub-algoritmos. el modulo principal puede realizar una o varias tareas. tareas repetitivas que se ejecutan varias veces y son llamadas para ejecutarse desde el algoritmo principal. además.IAI115 -2015 16 . Ing Luis Barrera . Por lo tanto. estos pueden contener tareas simples que sólo se ejecutan una vez o.

IAI115 -2015 17 . principal función Llamada función función Llamada función Llamada función Llamada función función Llamada función Ing Luis Barrera .

la solución completa del mismo está formada por el conjunto de todas y cada una de las pequeñas soluciones diseñadas y la interrelación de todas ellas. analizar. en términos generales. es decir se debe plantear. si está representado en un diagrama: sub flujograma. individualmente. Recordemos que la solución de cada sub-problema resuelve solo una parte del problema. Un problema resuelto mediante programación modular genera un algoritmo modular que consta de un algoritmo principal y uno o varios subalgoritmos. diseñar su algoritmo y codificarlo.PROGRAMACION MODULAR La solución de cada módulo se le conoce como SUB- ALGORITMO. si está escrito en código subprograma (subrutina) y en lenguaje C función.IAI115 -2015 18 . Ing Luis Barrera . se le aplica la Metodología para Resolver Problemas completa. Para resolver cada sub-problema (o módulo).

IAI115 -2015 19 .Ing Luis Barrera .

Aplicar la Metodología para resolver problemas a cada sub-problema. 2. la técnica implica dos partes: 1. Dividir el problema en sub-problemas más pequeños.IAI115 -2015 20 . es decir para cada subproblema se hace lo siguiente: Planteamiento (Qué hace?) Análisis del problema (Cómo lo hace?) Diseño de la solución o flujograma Codificación o programa Ing Luis Barrera .PROGRAMACION MODULAR En pocas palabras.

IAI115 -2015 21 .TÉCNICAS DE DISEÑO MODULAR Ing Luis Barrera .

Top Down o Diseño Descendente 2. Warnier Orr Ing Luis Barrera .IAI115 -2015 22 .Con el objeto de facilitar el diseño de algoritmos y la organización de los diversos elementos que los componen se utilizan algunas técnicas que muestran una metodología a seguir para resolver los problemas. Estas técnicas hacen que los programas sean más fáciles de escribir. leer y mantener. verificar. Algunas de las técnicas más conocidas son : 1. Botton Up o Diseño Ascendente 3.

"lo que hace ?" Nivel n+1 : Vista desde el interior. las estructuras se consideran de la siguiente forma : nivel n : Vista desde el exterior. de solución más sencilla.IAI115 -2015 23 . El problema se descompone en etapas o estructuras jerárquicas. de modo que se puede considerar cada estructura como dos puntos de vista : lo que hace?. como un todo y descomponerlo sucesivamente en problemas más pequeños y por lo tanto. La descomposición del problema original (y de las etapas subsecuentes). y cómo lo hace ?. "cómo lo hace ?" Ing Luis Barrera . el problema completo. puede detenerse cuando los problemas resultantes alcanzan un nivel de detalle que el programador o analista pueden implementar fácilmente. que consiste en tomar inicialmente. Si se considera un nivel n de refinamiento.1. Top Down o Diseño Descendente TOP DOWN: Es una técnica de diseño.

IAI115 -2015 24 .Ing Luis Barrera .

o se cuenta con amplia pericia en la resolución de problemas semejantes. Ing Luis Barrera .2.IAI115 -2015 25 . este método es inverso al anterior. Botton Up o Diseño Ascendente BOTTON UP: Esta técnica consiste en partir de los detalles más precisos del algoritmo completando sucesivamente módulos de mayor complejidad. Conforme se va alcanzando el desarrollo de módulos más grandes se plantea como objetivo final la resolución global del problema. parte de lo más simple para llegar a lo complejo. La técnica de Botton Up es frecuentemente utilizada para la realización de pruebas a sistemas ya concluidos. o cuando se tiene un modelo a seguir y ya se sabe lo que se va a hacer. se recomienda utilizarlo cuando: ya se cuenta con experiencia en la aplicación de la técnica.

Básicamente. utiliza una notación de llaves para organizar los módulos y se auxilia en la siguiente simbología para indicar operaciones de control. Warnier Orr WARNIER ORR: Es una técnica que utiliza una representación semejante a la de cuadros sinópticos para mostrar el funcionamiento y organización de los elementos que conforman el algoritmo. utiliza una notación de llaves para organizar los módulos. 3. Ing Luis Barrera .IAI115 -2015 26 . Básicamente.

Símbolo Significado + OR (uno.IAI115 -2015 27 .n) = De cero veces a n veces (1.n) = De una vez a n veces Ing Luis Barrera .y) veces desde x hasta y (0. solo uno) puede hacerse tantas (x. otro o varios) XOR (uno u otro.

Ing Luis Barrera . Es decir. esto es de arriba hacia abajo. de modo que se conecten o comuniquen unas con otras.IAI115 -2015 28 . La metodología consiste en efectuar una relación entre las etapas de estructuración (o subproblemas). mediante entradas y salidas de información. de forma que se puede considerar cada estructura desde dos puntos de vista: ¿Qué hace esa etapa? Y ¿Cómo lo hace?. El diseño descendente o Top-down. Diseño Descendente o Top – down. es un función mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento. se descompone el problema en etapas o estructuras jerarquicas.

IAI115 -2015 29 . se debe consideran de la siguiente forma: Ing Luis Barrera . conocidos ahora como módulos.Cada nivel de refinamiento o sub-problema.

IAI115 -2015 30 .El diseño descendente o Top-down. puede verse a continuación: Ing Luis Barrera .

etc. ver las notas según distintas calificaciones. Supongamos que un profesor quiere crear un programa para gestionar las notas de sus alumnos.Veamos un ejemplo de cómo emplear el diseño descendente para resolver un problema. Quiere que dicho programa le permita realizar tareas tales como asignar notas. Ing Luis Barrera . A continuación tines un esquema que representa una de las posibles divisiones del problema en módulos. cambiar notas.IAI115 -2015 31 .

Ing Luis Barrera .Lo primero que podemos hacer es dividir el problema en tres partes: Entrada. casi siempre están presentes y si el proceso en sí es grande o complejo. se puede dividir en más partes. también podemos dejar la salida en el principal y diseñar un módulo de entrada de datos y desde luego los de proceso. que como son las partes de todo algoritmo.IAI115 -2015 32 . cada uno divide y diseña los módulos que considere necesarios. En fin que no hay una regla para dividir un problema. Con la práctica veremos que se puede dejar la entrada de datos como parte del módulo principal y que la salida puede ser un solo módulo o normar parte de los módulos de proceso. Proceso y Salida.

y estos forman parte de los datos de entrada. sino que son requeridos por el módulo que lo precede y.Cada módulo puede contener acciones solo de entrada. solo de proceso.IAI115 -2015 33 . se les conoce como Valor de Retorno. son enviados por el módulo que lo precede por ejemplo en la figura anterior. (pero no se leen). cada módulo puede producir resultados (datos de salida) que no se imprimen. los parámetros del módulo 1-2. una combinación de todos. Ing Luis Barrera . a estos datos. deben ser facilitados por el módulo 1. solo de salida de datos o. Los datos con que trabaja un módulo se conocen como parámetros. Además.

VENTAJAS DE UTILIZAR PROGRAMACIÓN MODULAR (o Análisis estructurado). Ing Luis Barrera .IAI115 -2015 34 .

como cada módulo se considera independiente. Además.IAI115 -2015 35 . varios programadores pueden diseñar por separado las soluciones a diferentes módulos. con lo cual se minimiza el trabajo o esfuerzo personal y el tiempo de diseño para la solución completa. el diseño del algoritmo y desde luego su codificación. que son fáciles de resolver. ya que se descompone un problema en módulos independientes más simples. Se diseña la solución de cada módulo con independencia de los demás.La técnica de Análisis Estructurado se conoce también como la técnica “Divide y Vencerás”. Ing Luis Barrera . Lo que nos facilita el análisis.

IAI115 -2015 36 . Facilitar las modificaciones y correcciones al quedar automáticamente localizadas en un módulo. Ing Luis Barrera . Facilitar la ampliación del programa mediante nuevos módulos.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. El desglose de un problema en módulos permite encomendar los módulos más complejos a los programadores más experimentados y los más sencillos a los programadores con menos pericia o experiencia. Un programa modular es más fácil de controlar. probar y poner a punto). Un programa modular es más fácil de escribir y depurar (ejecutar. lo cual indica que un programa modular es fácil de mantener y modificar.

A cada módulo se le debe asignar un identificador o nombre.REPRESENTACIÓN GRÁFICA DE UN ALGORITMO MODULAR La representación gráfica de la solución de un problema mediante esta técnica. tiene varios flujogramas: uno que representa el modulo principal y uno o varios más. que representan a cada uno de los módulos que se hayan diseñado. a esto se le conoce como “invocación del sub- flujograma” o “llamada a un sub-flujograma”. Para indicar dentro del FLUJOGRAMA principal que se hará uso de un subflujograma se utiliza el rectángulo con doble barra vertical. dentro del cual se escribe el nombre del módulo. que lo diferencie de otros. Ing Luis Barrera .IAI115 -2015 37 .

Ing Luis Barrera . al sub-flujograma que lo ha utilizado o invocado.IAI115 -2015 38 . también se escribe aquí el valor de retorno si el módulo produce alguno. ya que al llegar a éste. REPRESENTACIÓN GRÁFICA DE UN ALGORITMO MODULAR Para diferenciar un subflujograma del flujograma principal. a los símbolos de inicio y fin se le añaden barras verticales. es muy común terminar un sub- flujograma con la palabra retornar en el símbolo de fin. en el símbolo de inicio y fin. se escribe el identificador o no nombre del módulo y los parámetros de éste si los necesita. se regresa el control de ejecución al flujograma principal o.

IAI115 -2015 39 .Las siguientes figuras nos muestran los símbolos descritos anteriormente: Ing Luis Barrera .

adopta la estructura siguiente: Ing Luis Barrera .La representación gráfica (flujograma) de la solución de un problema descompuesto en forma modular.IAI115 -2015 40 .

IAI115 -2015 41 . al terminar de ejecutarse se retorna al flujograma principal o al subflujograma que lo invocó Ing Luis Barrera .Un subflujograma (módulo) puede ser invocado desde el flujograma principal o desde otro subflujograma.

En donde: Proceso1. asignación) • Selectivas (selección simple. doble o múltiple) • Iterativas (Mientras. Proceso2 y Proceso3 pueden contener estructuras: • Secuenciales (lectura. Ing Luis Barrera . escritura.IAI115 -2015 42 . al terminar de ejecutarse se retorna al flujograma principal o al sub-flujograma que lo invocó. Desde-hasta. Hasta que) Un sub-flujograma (módulo) puede ser invocado desde el flujograma principal o desde otro subflujograma.

Variables Locales: Son variables que se declaran dentro de un módulo. ese valor se puede cambiar en cualquier módulo 2. es decir que cuando se ejecuta otro módulo no existen en memoria. por lo tanto no se pueden utilizar. y. fuera del módulo donde fueron declaradas. Variables Globales: Estas variables pueden ser referenciadas desde cualquier módulo. 3. si se representa por medio de un diagrama se le conoce como sub flujograma. Lo cual significa que podemos utilizar estas variables en todos los módulos. Todo sub flujograma puede recibir uno o varios datos (parámetros) de quien lo invoca. conservando su valor en todas ellas. pero solo puede enviar Un único resultado (valor de retorno) Ing Luis Barrera .IAI115 -2015 43 . Sub algoritmo: Es un algoritmo que realiza una tarea específica dentro de la solución de un problema. y mantienen su valor mientras este módulo se está ejecutando. CONCEPTOS RELACIONADOS CON PROGRAMACIÓN MODULAR 1. es decir que resuelve una parte de un problema. Puede ser llamado o invocado desde el flujograma principal o cualquier otro sub flujograma.

Valor de retorno: Se conoce como valor de retorno aquel que se genera en el módulo y se envía al subflujograma de quien depende. Una subflujograma puede tener o no parámetros. 6. deben de declararse en la invocación al sub flujograma y en el inicio del mismo.IAI115 -2015 44 . es decir que. pero dentro del sub flujograma no se leen. CONCEPTOS RELACIONADOS CON PROGRAMACIÓN MODULAR 5. y con estos valores se trabajara en él. los parámetros reciben sus valores del módulo que invoca al subflujograma. Ing Luis Barrera . Parámetros: Los parámetros o argumentos de un sub flujograma son los datos que son parte de la entradas del módulo. Los parámetros se comportan como variables locales. es decir al subflujograma que lo invocó. creándose al entrar al subflujograma y destruyéndose al salir de éste.

COMO UTILIZAR MODULARIDAD EN C.IAI115 -2015 45 . Ing Luis Barrera .

Método de Top Down a) Grandes pasos o Cosas que hacer: b) Que diseñaremos? c) Diagrama Ing Luis Barrera .Modelo del Formato Metodología para Resolver Problemas I. Planteamiento General del Problema II.IAI115 -2015 46 .

Lee o Recibe? b. Modelo del Formato Metodología para Resolver Problemas III.//Esto será diseñado para cada modulo 3. Imprime.1 Aplicación de la Metodología para cada Modulo a) Nombre del modulo: Colocar el nombre relacionado con el objetivo del mismo (nemotécnico) b) Que hace? Descripción del objetivo del modulo c) Planteamiento del Modulo a. Análisis Estructurado .IAI115 -2015 47 . Devuelve o Envía? Ing Luis Barrera .

//El como lo hace será diseñado para cada modulo 3. Modelo del Formato Metodología para Resolver Problemas 3.2 Análisis del Problema .2. Definición de Variables de Salida: Imprime o Devuelve o Envía? b.1 Aplicación de la Metodología para cada Modulo a. Definición de Datos de Entrada: Lee o Recibe Parametros? Ing Luis Barrera .IAI115 -2015 48 .

Modelo del Formato Metodología para Resolver Problemas 3.Flujograma) Ing Luis Barrera . Restricciones: Hay Variables de entradas? d.1 Diseño de la Solución (Sub .2.IAI115 -2015 49 .1 Aplicación de la Metodología para cada Modulo Definición de Constantes: c. Proceso: No existe solo lee e. Definición de Variables de Proceso: 3.

Ing Luis Barrera .Fin de la clase.IAI115 -2015 50 . Gracias por asistir.