Está en la página 1de 74

Programacin

Clase 9. Programacin Modular


Prof. Gonzalo Mller
gmullerb@mail.com

Facultad de Ingeniera Universidad Central de Venezuela

Clase Anterior
Algunas aplicaciones numricas: Mtodos Secuenciales
Sucesin, Sumatoria y Productoria. Estadstica Descriptiva: Media, Varianza, Regresin. Integracin: Suma de Riemann.

Mtodos Iterativos
Solucin de una ecuacin f(x) = 0: Newton

Mtodos Evolutivos
Bsqueda del Mximo o Mnimo de f(x): 1 + 1.

Mtodos Iterativos Reduccin de Intervalos


Solucin de una ecuacin f(x) = 0: Biseccin. Bsqueda del Mximo o Mnimo de f(x): Seccin Dorada.
Programacin Prof. Gonzalo Mller Clase 9 GM - 2

Programacin Estructurada
Tcnica de programacin donde: El algoritmo tiene un solo final. Toda operacin realizada por el algoritmo est definida en un solo bloque. Todo el algoritmo est construido utilizando las estructuras bsicas:
Secuencial. Selectiva. Repetitiva.

Programacin Prof. Gonzalo Mller Clase 9 GM - 3

Programacin Estructurada
Ejemplo: Algoritmos estructurados:
Sumatoria S=0 k=0 Leer N S=S+k k=k+1 Mientras (k N) Escribir S
Fin V Comienzo

Leer A y B A>B
F

B=A+B Escribir B

Escribir A

FIN
Programacin Prof. Gonzalo Mller Clase 9 GM - 4

Programacin Estructurada
En la programacin estructurada se ataca el problema utilizando un solo bloque.

Programacin Prof. Gonzalo Mller Clase 9 GM - 5

Programacin Modular
Tcnica de programacin en la cual se descompone el proceso en pequeos mdulos independientes.

Programacin Prof. Gonzalo Mller Clase 9 GM - 6

Programacin Modular
Tcnica de programacin en la cual se descompone el proceso en pequeos mdulos independientes.

Divide y Vencers
Programacin Prof. Gonzalo Mller Clase 9 GM - 7

Mdulos
Conjunto de sentencias que realizan una tarea concreta. Cada mdulo se comporta como un subprograma: el cual recibe entradas, realiza un proceso y genera salidas.

Entradas

Mdulo

Salidas

Las entradas recibe el nombre de parmetros


Programacin Prof. Gonzalo Mller Clase 9 GM - 8

Mdulos
Conjunto de sentencias que realizan una tarea concreta. Cada mdulo se comporta como un subprograma: el cual recibe entradas, realiza un proceso y genera salidas.

Parmetros

Mdulo

Salidas
Valor utilizado fuera del algoritmo

Resultado
Valor utilizado dentro del algoritmo
Programacin Prof. Gonzalo Mller Clase 9 GM - 9

Mdulos

Resultado
Valor utilizado dentro del algoritmo

Mientras ()

Salidas
FIN

Valor utilizado fuera del algoritmo

Programacin Prof. Gonzalo Mller Clase 9 GM - 10

Clases de Mdulos
Reciben parmetros y retorna un resultado.
Mdulo

Parmetros

Resultado

Ejemplo:
sqrt(x): recibe un nmero x y devuelve el resultado de x1/2 pow(x, y): recibe dos nmero y devuelve xy
Programacin Prof. Gonzalo Mller Clase 9 GM - 11

Clases de Mdulos
No reciben parmetros y retorna un resultado.
Mdulo

Resultado

Ejemplo:
rand(): devuelve un nmero aleatorio entre 0 y 32767. random(): devuelve un nmero aleatorio entre 0 y 1.
Programacin Prof. Gonzalo Mller Clase 9 GM - 12

Clases de Mdulos
Reciben parmetros y no retorna resultado, pero cumplen un propsito(puede generar salidas).
Parmetros Mdulo Salidas

Programacin Prof. Gonzalo Mller Clase 9 GM - 13

Clases de Mdulos
Reciben parmetros y no retorna resultado, pero cumplen un propsito(puede generar salidas).
Parmetros Mdulo Salidas

Ejemplo:
write(texto): Escribe un texto en salida.
Salida C++ #1

write(C++

#1)
Programacin Prof. Gonzalo Mller Clase 9 GM - 14

Clases de Mdulos
No reciben parmetros y no retorna resultado, pero cumplen un propsito(puede generar salidas).
Mdulo Salidas

Programacin Prof. Gonzalo Mller Clase 9 GM - 15

Clases de Mdulos
No reciben parmetros y no retorna resultado, pero cumplen un propsito(puede generar salidas).
Mdulo Salidas

Ejemplo:
version(): datos sobre versin de programa.
Salida COLARA versin 1.101

version()

Programacin Prof. Gonzalo Mller Clase 9 GM - 16

Tipos de Mdulos
Se agrupan en: Funciones: realiza una operacin y retorna el resultado de la misma.
Ejemplo: rand(), sqrt(x), etc.

Subrutinas o procedimientos: realiza una tarea y regresa a la instruccin siguiente a su llamada, es decir, no generan un resultado.
Ejemplo: write(), version(), etc.

Ambos pueden o no recibir parmetros.


Programacin Prof. Gonzalo Mller Clase 9 GM - 17

Programacin Modular
Algoritmo Existe un bloque principal en el cual se encuentran las llamadas a los mdulos.

Programacin Prof. Gonzalo Mller Clase 9 GM - 18

Programacin Modular
Algoritmo Existe un bloque principal en el cual se encuentran las llamadas a los mdulos. El algoritmo estar construido con:
Estructuras:
Secuenciales. Selectivas. Repetitivas.

Programacin Prof. Gonzalo Mller Clase 9 GM - 19

Programacin Modular
Algoritmo Existe un bloque principal en el cual se encuentran las llamadas a los mdulos. El algoritmo estar construido con:
Estructuras:
Secuenciales. Selectivas. Repetitivas.

Dentro de las estructuras existirn:


Llamadas a mdulos previamente definidos.
Programacin Prof. Gonzalo Mller Clase 9 GM - 20

Programacin Modular

Nombre

Bloque Principal

Mientras () FIN

Estructuras Secuenciales, Selectivas, Repetitivas y Llamadas a mdulos.

Ni el bloque principal ni los mdulos debe ocupar ms de 20 lneas


Programacin Prof. Gonzalo Mller Clase 9 GM - 21

Representacin de Algoritmos Modulares


Definicin de una subrutina. PC Con parmetros:
Nombre(parmetro1, parmetro2, ) { }

Sin parmetros:
Nombre() { }
Programacin Prof. Gonzalo Mller Clase 9 GM - 22

Representacin de Algoritmos Modulares


Definicin de una subrutina. PC Con parmetros:
Nombre(parmetro1, parmetro2, ) { }

Sin parmetros:
Nombre() Los parntesis permiten diferenciar un mdulo del { bloque principal }
Programacin Prof. Gonzalo Mller Clase 9 GM - 23

Representacin de Algoritmos Modulares


DRE Con parmetros:
Nombre(parmetro1, parmetro2, ) Fin

Sin parmetros:
Nombre() Fin
Programacin Prof. Gonzalo Mller Clase 9 GM - 24

Representacin de Algoritmos Modulares


DF Con parmetros:
Nombre(parmetro1, parmetro2, )

Fin

Sin parmetros:
Nombre()

Fin
Programacin Prof. Gonzalo Mller Clase 9 GM - 25

Representacin de Algoritmos Modulares


Ejemplo: Construir una subrutina para presentar en la salida el mximo de dos nmeros. Fase 1: Diseo y Anlisis: DES, DRE DF y LV.

Programacin Prof. Gonzalo Mller Clase 9 GM - 26

Representacin de Algoritmos Modulares


Definicin de una funcin. PC Con parmetros:
Nombre(parmetro1, parmetro2, ) { retorna valor }

Sin parmetros:
Nombre() { retorna valor }
Programacin Prof. Gonzalo Mller Clase 9 GM - 27

Representacin de Algoritmos Modulares


DRE Con parmetros:
Nombre(parmetro1, parmetro2, ) retorna valor

Sin parmetros:
Nombre() retorna valor
Programacin Prof. Gonzalo Mller Clase 9 GM - 28

Representacin de Algoritmos Modulares


DF Con parmetros:
Nombre(parmetro1, parmetro2, )

retorna valor

Sin parmetros:
Nombre()

retorna valor
Programacin Prof. Gonzalo Mller Clase 9 GM - 29

Representacin de Algoritmos Modulares


Ejemplo: Construir una funcin para calcular el mximo de dos nmeros. Fase 1: Diseo y Anlisis: DES, DRE DF, LV.

Programacin Prof. Gonzalo Mller Clase 9 GM - 30

Representacin de Algoritmos Modulares


Llamada a una subrutina. PC Con argumentos:
Nombre(argumento1, argumento2, )

Sin argumentos:
Nombre()
Programacin Prof. Gonzalo Mller Clase 9 GM - 31

Representacin de Algoritmos Modulares


DRE Con argumentos:

Nombre(argumento1,argumento2,)

Sin argumentos:
Nombre()
Programacin Prof. Gonzalo Mller Clase 9 GM - 32

Representacin de Algoritmos Modulares


DF Con argumentos:

Nombre(argumento1, argumento2, )

Sin argumentos:

Nombre()

Programacin Prof. Gonzalo Mller Clase 9 GM - 33

Representacin de Algoritmos Modulares


Llamada a una funcin. PC Con argumentos:
variable = Nombre(argumento1, argumento2, )

Sin argumentos:
Escribir Nombre()
Programacin Prof. Gonzalo Mller Clase 9 GM - 34

Representacin de Algoritmos Modulares


DRE Con argumentos:

Mientras (Nombre(argumento1, ) ==)

Sin argumentos:

Variable = Nombre()
Programacin Prof. Gonzalo Mller Clase 9 GM - 35

Representacin de Algoritmos Modulares


DF Con argumentos:
Escribir Nombre(argumento1, argumento2, )

Sin argumentos:
variable = Nombre()

Programacin Prof. Gonzalo Mller Clase 9 GM - 36

Representacin de Algoritmos Modulares


Ejemplo: Construir dos algoritmos para calcular el mximo de dos nmeros que utilicen los mdulos desarrollados previamente. Fase 1: Diseo y Anlisis: DES, DRE DF y LV del Bloque Principal.

Programacin Prof. Gonzalo Mller Clase 9 GM - 37

Corrida en fro de Algoritmo Principal

Dato 1

Dato N

Mdulo1 ()

MduloZ ()

Condicin

Condicin

Salida

Variables

Llamadas
Programacin Prof. Gonzalo Mller Clase 9 GM - 38

Condiciones

Corrida en fro de Subrutinas

Parmetro

Parmetro

Dato 1

Dato N

Condicin

Condicin

Salida

Parmetros

Variables
Programacin Prof. Gonzalo Mller Clase 9 GM - 39

Condiciones

Corrida en fro de Funciones

Parmetro

Parmetro

Dato 1

Dato N

Condicin

Condicin

Retorno

Parmetros

Variables
Programacin Prof. Gonzalo Mller Clase 9 GM - 40

Condiciones

Corrida en fro de Mdulos


Ejemplo: Realizar una corrida en fro para el algoritmo principal y mdulos del ejemplo anterior.

Programacin Prof. Gonzalo Mller Clase 9 GM - 41

Programacin Modular
Nombre(argumento1,argumento2,) Llamada

Nombre(parmetro1, parmetro2, ) Fin


Programacin Prof. Gonzalo Mller Clase 9 GM - 42

Definicin

Programacin Modular
Nombre(argumento1,argumento2,)
1

Llamada

Asigna el argumento al parmetro antes de continuar la ejecucin: parametro1 = argumento1

Nombre(parmetro1, parmetro2, ) Fin


Programacin Prof. Gonzalo Mller Clase 9 GM - 43

Programacin Modular
Nombre(argumento1,argumento2,)
2
Continua la ejecucin el mdulo correspondiente

Nombre(parmetro1, parmetro2, ) Fin


Programacin Prof. Gonzalo Mller Clase 9 GM - 44

Programacin Modular
Nombre(argumento1,argumento2,)

Nombre(parmetro1, parmetro2, ) Fin


Programacin Prof. Gonzalo Mller Clase 9 GM - 45

Ejecuta todas las sentencias del mdulo

Programacin Modular
Nombre(argumento1,argumento2,)
4

Regresa y continua la ejecucin el algoritmo principal

Nombre(parmetro1, parmetro2, ) Fin


Programacin Prof. Gonzalo Mller Clase 9 GM - 46

Metodologa de la Programacin Modular


Diseo Modular del algoritmo Estructurar la resolucin del problema por mdulos. Cada mdulo se encarga de resolver una parcialidad del problema. Cada mdulo debe realizar una funcin especifica y debe ser sencillo e independiente. Divide y Vencers
Programacin Prof. Gonzalo Mller Clase 9 GM - 47

Metodologa de la Programacin Modular


Se debe realizar una descomposicin jerrquica, utilizando el diseo top-down o diagramas de estructuras. Diagramas Top-Down: Son una representacin grfica de la jerarqua existente entre los mdulos.
Cada mdulo se representa con un rectngulo. Existen dos tipos de mdulos:
Primitivos o Terminales: Es independiente. No Primitivos: Requiere de otros mdulos.

Programacin Prof. Gonzalo Mller Clase 9 GM - 48

Metodologa de la Programacin Modular


Los mdulos debe ser organizados de tal manera que la secuencia de ejecucin de los mismo sea de izquierda a derecha. 1. Se desarrolla un bosquejo inicial.
Mdulo No Primitivo

Programa Inicializacin Entrada Proceso

Mdulo Primitivo

Salida

Secuencia de Ejecucin
Programacin Prof. Gonzalo Mller Clase 9 GM - 49

Metodologa de la Programacin Modular


Cuando la descripcin de la tarea realizada por un mdulo no es lo suficientemente sencilla se debe subdividir en varios mdulos.
Se debe subdividir en al menos dos mdulos.

2. Se refina paso a paso de forma de enriquecer la jerarqua inicial con niveles adicionales.
Programa Inicializacin Lectura Entrada Proceso Tarea 2 Salida

Validacin

Tarea 1

Programacin Prof. Gonzalo Mller Clase 9 GM - 50

Metodologa de la Programacin Modular

Programa Inicializacin Lectura Entrada Proceso Tarea 2 Salida

Validacin

Tarea 1

Bottom-Up

Programacin Prof. Gonzalo Mller Clase 9 GM - 51

Metodologa de la Programacin Modular


Ejemplo: Se requiere un programa para obtener las races de una ecuacin cuadrtica. Realizar el diseo, utilizando una descomposicin jerrquica.

Programacin Prof. Gonzalo Mller Clase 9 GM - 52

Metodologa de la Programacin Modular


Luego de realizar el diagrama Top-Down, se continua con la construccin del algoritmo el cual se complementa con dos nuevos pasos muy importantes: Definicin de mdulos: se desarrolla el algoritmo que define a la subrutina.
Cada mdulo dispone de su propio diagrama.

Llamada a los mdulos: Se pone en ejecucin el modulo previamente definida donde sea necesario.

Programacin Prof. Gonzalo Mller Clase 9 GM - 53

Programacin Modular
Algunos mdulos clsicos son:
Mdulos de entrada de datos. Mdulos de proceso. Mdulos de presentacin de resultados.

Los mdulos se caracterizan por su:


Acoplamiento. Cohesin.

Programacin Prof. Gonzalo Mller Clase 9 GM - 54

Acoplamiento
Describe la dependencia de un mdulo respecto de otro. Acoplamiento de zonas: Los mdulos manejan los datos de entradas y de salida a travs de variables comunes, llamadas variables globales.

Acoplamiento de Alto Nivel Efecto Colateral

Mdulo A Mdulo B
Datos (Variables Globales)

Diagrama de acoplamiento

Programacin Prof. Gonzalo Mller Clase 9 GM - 55

Acoplamiento
Acoplamiento de datos: Los mdulos manejan los datos de entradas y de salida haciendo uso de parmetros.
Acoplamiento de Bajo Nivel Mdulo A
Datos (Parmetros)

Mdulo B
Datos (Parmetros)

Un buen programa contiene mdulos con acoplamiento de bajo nivel, ya que al realizar modificaciones no es necesario preocuparse por el impacto en los otros mdulos.
Programacin Prof. Gonzalo Mller Clase 9 GM - 56

Cohesin
Establece como se interrelacionan el conjunto de sentencias y datos que forman al mdulo.
Cohesin de Alto Nivel

Cohesin funcional: Todas las sentencias se destinan a llevar a cabo una y solo una sola tarea. Cohesin secuencial: Los resultados generados por una sentencia son utilizados en la siguiente. Cohesin en datos: Las sentencias realizan varias tareas a las vez utilizando los mismo datos.

Programacin Prof. Gonzalo Mller Clase 9 GM - 57

Cohesin
Cohesin temporal: Las sentencias realizan varias tareas sin importar el orden con distintos datos cuyo significado es el mismo. Por ejemplo: Mdulo de inicializacin.
Cohesin de Bajo Nivel

Cohesin lgica: Las sentencias realizan una de varias tareas a partir de datos de control. Por ejemplo: Mdulo de seleccin de un men. Cohesin coincidental: Las sentencias realizan varias tareas sin relacin alguna.

Programacin Prof. Gonzalo Mller Clase 9 GM - 58

Programacin Modular

Un buen programa contiene mdulos con cohesin de alto nivel, donde sus sentencias y datos se interrelaciona fuertemente entre s y no depende de otros mdulos, ya que es ms sencillo realizar modificaciones cuando stos se destina a realizar funciones especifica. Un mdulo debe tener una o pocas responsabilidades de lo contrario debera dividirse en varios para facilitar una fuerte cohesin.

Programacin Prof. Gonzalo Mller Clase 9 GM - 59

Acoplamiento de datos bsico


El bloque principal se construye solo con los bloques terminales del diagrama Top-Down y mdulos solo deben poseer parmetros de entrada.
Bloque Principal
Programa Inicializacin Lectura Entrada Proceso Tarea 1 Tarea 2 Salida

Validacin

Bloques Terminales

Programacin Prof. Gonzalo Mller Clase 9 GM - 60

Acoplamiento de datos bsico


El bloque principal se construye solo con los bloques terminales del diagrama Top-Down y mdulos solo deben poseer parmetros de entrada.
Bloque Principal
Programa Inicializacin Lectura Validacin Tarea 1 Tarea 2 Salida

Bloques Terminales

Programacin Prof. Gonzalo Mller Clase 9 GM - 61

Acoplamiento de datos bsico


Subrutinas:

Pueden recibir Valores o Parmetros de Entrada. No retorna resultado, pero realizar una operacin dada.
Utilizadas usualmente para presentacin de datos en pantalla.

Funciones: Retorna 1 resultado.

Pueden recibir Valores o Parmetros de Entrada.

Programacin Prof. Gonzalo Mller Clase 9 GM - 62

Acoplamiento de datos bsico


Ejemplo: Construir el algoritmo modular con acoplamiento de datos bsico para obtener las races de una ecuacin cuadrtica.

Programacin Prof. Gonzalo Mller Clase 9 GM - 63

Metodologa de la Programacin Modular


Tabla de Mdulos: Una vez desarrollados los algoritmos de todos los mdulos es de utilidad para la posterior implementacin en el lenguaje construir una tabla donde se listen todos los mdulos, sus tipos y parmetros.
Modulo Parmetros Nombre del Lista de mdulo parmetros Retorno Valor retornado Tipo Subrutina o Funcin

Programacin Prof. Gonzalo Mller Clase 9 GM - 64

Metodologa de la Programacin Modular


Ejemplo: Construir la tabla de mdulos del algoritmo anterior.

Programacin Prof. Gonzalo Mller Clase 9 GM - 65

Programacin Modular
Reutilizacin: Separa en un mdulos los procesos que se repita ms de una vez el programa. Disminuye el tamao del programa. Ejemplo: La lectura de un punto (X, Y)

Programacin Prof. Gonzalo Mller Clase 9 GM - 66

Programacin Modular
Reutilizacin: Separa en un mdulos los procesos que se repita ms de una vez el programa. Disminuye el tamao del programa. Ejemplo: La lectura de un punto (X, Y) Facilita las modificaciones y localizacin de errores: Se comprueba o modifica de forma individual cada uno de los mdulos.

Programacin Prof. Gonzalo Mller Clase 9 GM - 67

Programacin Modular
Reutilizacin: Separa en un mdulos los procesos que se repita ms de una vez el programa. Disminuye el tamao del programa. Ejemplo: La lectura de un punto (X, Y) Facilita las modificaciones y localizacin de errores: Se comprueba o modifica de forma individual cada uno de los mdulos. Reduce el tiempo de desarrollo: Se reparte la construccin de los mdulos entre diferentes equipos de trabajo.
Programacin Prof. Gonzalo Mller Clase 9 GM - 68

Ejercicios
a) Definir un mdulo para: 1) Establecer el mnimo de dos valores. 2) Determinar la distancia entre 2 maquinas. 3) Calcular f(x) = sen(2*x)+x4. 4) Determinar si un nmero entero es par. 5) Establecer el signo de un valor (-1, 0, 1). Fase 1: Diseo y Anlisis: DES, DRE DF, LV y CF del Mdulo.
Programacin Prof. Gonzalo Mller Clase 9 GM - 69

Ejercicios
b) Partiendo de los mdulos creados anteriormente construir un algoritmo modular para: 1) Establecer el menor de 3 valores. 2) Determinar las distancias entre 3 maquinas. 3) Calcular f(x) = sen(2*x)+x4 para N puntos. 4) Contar la cantidad de nmeros pares de N datos. 5) Establecer si 2 valores tienen el mismo signo. Fase 1: Diseo y Anlisis: DES, DRE DF, LV y CF del Bloque Principal.
Programacin Prof. Gonzalo Mller Clase 9 GM - 70

Ejercicios
c) Construir un algoritmo modular para: 1) Calcular el factorial de N nmeros. 2) Dado un conjunto de N nmeros, establecer cuales son nmeros compuestos. 3) Promediar los pares y promediar los impares de los nmeros entre A y B. 4) Dado N intervalos, calcular la sumatoria de los nmeros que contiene cada intervalo. Fase 1: Diseo y Anlisis: DES, DTD DES, DRE DF y LV de Mdulos y TM. DRE DF, LV y CF del Bloque Principal.
Programacin Prof. Gonzalo Mller Clase 9 GM - 71

Ejercicios
c) Construir un algoritmo modular para: 5) Dado un conjunto de puntos en R2 por el usuario determinar cuales se encuentra por encima, por debajo y sobre una recta dada por el usuario. 6) Encontrar por Newton 1 solucin para f(x) = 0. 7) Encontrar 1 Mnimo de f(x) por 1+1. Fase 1: Diseo y Anlisis: DES, DTD DES, DRE DF y LV de Mdulos y TM. DRE DF, LV y CF del Bloque Principal.
Programacin Prof. Gonzalo Mller Clase 9 GM - 72

Resumen
Programacin estructurada. Programacin modular. Algoritmo: Bloque principal, llamadas, 20 lneas. Mdulos. Clases. Tipos: Subrutinas y Funciones. Representacin de Algoritmos Modulares Definicin: subrutinas, funciones. Llamada: subrutinas, funciones.
Programacin Prof. Gonzalo Mller Clase 9 GM - 73

Resumen
Metodologa de la Programacin Modular Diseo Modular: Diagrama Top-Down. DRE, DF, PC y CF. Tabla de Mdulos. Caractersticas: Acoplamiento y Cohesin. Acoplamiento de datos bsico. Solo bloques terminales del DTD. Subrutinas: No generan resultado. Funciones: Generan 1 resultado. Beneficios: reutilizacin, cambios, errores y tiempo.
Programacin Prof. Gonzalo Mller Clase 9 GM - 74