Está en la página 1de 36

Teora 3

MODULARIZACIN Y COMUNICACIN ENTRE MDULOS Ejemplos

Clase 3

Programacin I

Modularizacin
Los problemas del mundo real implican:
Complejidad Extensin Modificaciones

Los tratamos de resolver con: Abstraccin. Descomposicin. Independencia Funcional.


Clase 3 Programacin I 2

Modularizacin
Modularizar significa dividir un problema en partes funcionalmente independientes, que encapsulen operaciones y datos. Cada una de estas partes se denomina Mdulo.
No se trata simplemente de subdividir el cdigo de un sistema de software en bloques con un nmero de instrucciones dado sino...

Se trata de separar en funciones lgicas con datos propios y datos de comunicacin perfectamente especificados.
Clase 3 Programacin I 3

Modularizacin

La descomposicin tiene siempre un objetivo.


Se busca obtener: Alta Cohesin: Medida del grado de identificacin de un mdulo con una funcin concreta. Bajo Acoplamiento: Medida de la interaccin de los mdulos que constituyen un programa.

Clase 3

Programacin I

Modularizacin

Cuando se descompone un problema en subproblemas, deben ser de forma tal que: Cada subproblema est en un mismo nivel de detalle. Cada subproblema puede resolverse independientemente. Las soluciones de los subproblemas puede combinarse para resolver el problema original.

Clase 3

Programacin I

Modularizacin
Descomposicin
Los Mdulos representan tareas especficas bien definidas que deben comunicarse entre s adecuadamente y cooperar para conseguir un objetivo comn. Se parte de la descomposicin de problemas grandes a problemas pequeos Cada mdulo encapsula acciones, tareas funciones Cada mdulo debe representar los objetos relevantes del subproblema a resolver.

Clase 3

Programacin I

Modularizacin

Qu es un mdulo en nuestras soluciones? Cmo debe ser un mdulo de software en nuestros programas? Existe una metodologa para trabajar? Es importante tener una buena metodologa de trabajo?
TOP DOWN Ir de lo general a lo particular Dividir conectar y verificar

Clase 3

Programacin I

Modularizacin - Ejemplo
Sistematizar la operatoria de un hotel

Gestin de Clientes

Gestin de Reservas

Incorporar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Efectuar reserva

Cancelar reserva

Consultar reservas de un da

Cules son los mdulos?

Clase 3

Programacin I

Modularizacin - Ventajas

Mayor productividad

Al dividir un sistema de software en mdulos funcionalmente independientes, un equipo de desarrollo puede trabajar simultneamente en varios mdulos, incrementando la productividad (es decir reduciendo el tiempo de desarrollo global del sistema). Ejemplo.

Clase 3

Programacin I

Modularizacin - Ejemplo
Sistematizar la operatoria de un hotel

Gestin de Clientes

Gestin de Reservas
Consultar reservas de un da

Incorporar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Efectuar reserva

Cancelar reserva

Clase 3

Programacin I

10

Modularizacin - Ventajas

Reusabilidad

Un objetivo fundamental de la Ingeniera de Software es la reusabilidad, es decir la posibilidad de utilizar repetidamente el producto de software desarrollado. Naturalmente la descomposicin funcional modularizacin favorece el reuso. Ejemplo. que ofrece la

Clase 3

Programacin I

11

Modularizacin - Ejemplo

Gestin de Clientes

Incorpora r un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Clase 3

Programacin I

12

Modularizacin - Ventajas

Facilidades de mantenimiento correctivo.

La divisin lgica de un sistema en mdulos permite aislar los errores que se producen con mayor facilidad. Esto significa poder corregir los errores en menor tiempo y disminuye los costos de mantenimiento de los sistemas.

Clase 3

Programacin I

13

Modularizacin - Ejemplo

No puedo eliminar un cliente

Gestin de Clientes

Eliminar un cliente

Clase 3

Programacin I

14

Modularizacin - Ventajas

Facilidades de crecimiento del sistema.

Los sistemas de software reales crecen (es decir aparecen con el tiempo nuevos requerimientos del usuario). La modularizacin permite disminuir los riesgos y costos de incorporar nuevas prestaciones a un sistema en funcionamiento. Ejemplo.

Clase 3

Programacin I

15

Modularizacin - Ejemplo
Sistematizar la operatoria de un hotel

Gestin de Pagos
Gestin de Clientes
Consultar /Modifica r datos cliente

Gestin de Reservas

Generar Factura Registrar pago

Cancelar pago

Incorporar un cliente

Eliminar un cliente

Efectuar reserva

Cancelar reserva

Consultar reservas de un da

Clase 3

Programacin I

16

Modularizacin - Ventajas

Mayor Legibilidad

Un efecto de la modularizacin es una mayor claridad para leer y comprender el cdigo fuente. El ser humano maneja y comprende con mayor facilidad un nmero limitado de instrucciones directamente relacionadas.

Clase 3

Programacin I

17

Modularizacin
Recursos de los lenguajes de programacin para especificar la modularizacin

Subroutine Module Procedure Function Package Class, etc.

Clase 3

Son provistos por Pascal

Programacin I

18

Modularizacin- Procedimientos Comenzamos a trabajar con Procedimientos


Un procedimiento se puede definir como un conjunto de instrucciones que realizan una tarea especfica y como resultado puede retornar 0, 1 o ms valores. Sintaxis en Pascal: PROCEDURE nombre (lista de parmetros formales): begin ...... end;

Clase 3

Programacin I

19

Procedimiento- Ejemplo
Revisemos entonces el esquema general del programa que usa procedimiento procedure prueba; Var x,y: integer; res:real; Begin x:= 25; y:= 4; res:= x/y; End; Cmo se invoca un procedimiento?
Clase 3

Program uno; var res:real; procedure prueba; Var x,y: integer; res:real; Begin x:= 25; y:= 4; res:= x/y; End;

Variables globales?

Variables locales?

begin prueba; End.


Programacin I 20

Modularizacin- Procedimientos
Cmo se invocan? Dnde vuelve el flujo de control del programa una vez ejecutado el mdulo?

Se invocan escribiendo su nombre seguido de los datos de comunicacin.


El control vuelve a la instruccin siguiente a la del llamado. Permite parmetros de entrada y de entrada/salida. Es un mdulo que realiza tareas y puede devolver 0, uno o ms valores. Permite operaciones de lectura y escritura.

Qu tipos de parmetros aceptan?

Cuntos valores devuelven como mnimo? Qu operaciones se pueden realizar?

Clase 3

Programacin I

21

Analicemos el alcance de Variables


Program dos; Var y, j: integer; procedure prueba; var x: integer; Begin x:= 9; write (x); End; Begin j:= 80; y:= j*2; prueba; End.
Clase 3

Dnde se pueden utilizar j e y? Dnde se puede utilizar x? Qu pasa si dentro de prueba se declara y: integer? Qu pasa si dentro de prueba se declara y: char? El alcance de una variable establece el contexto donde la variable es conocida o puede ser referenciada en el marco de un programa. Programacin I

22

Modularizacin
Variable global: su declaracin se hace fuera de todos los mdulos del programa y puede ser usada por el programa y todos los mdulos del mismo

Program dos; Var y, j: integer; procedure prueba; var x: integer; procedure otro; var z: integer; begin read (z); z := z div10; write (x); end; Begin x:= 9; write (x); x := x * j; otro; End; Begin j:= 90; y:= j*2; prueba; End.

Variable local: su declaracin se hace en un mdulo particular y solo puede ser usada por ese mdulo. Si este mdulo contiene a su vez otros mdulos, entonces esa variable puede ser tambin usada por todos los mdulos interiores.
Analicemos el siguiente ejemplo:

Clase 3

Programacin I

23

Ejemplos
Program tres; Var dato: Integer;

Proceso tiene datos propios?

Procedure proceso; begin Qu imprime? dato := 25; write (dato); dato: = 30; end; begin {del programa principal} dato := 0; write (dato); proceso; write (dato); end.
Clase 3 Programacin I

Con qu datos trabaja el mdulo?

proceso

alcance

dato=0

24

Ejemplos
Program cuatro; Var dato: Integer;

Proceso tiene datos propios?

Procedure proceso; Var Qu imprime? dato: integer; begin write (dato); dato: = 30; end; begin {del programa principal} dato:= 0; write (dato); proceso; write (dato); end.
Clase 3 Programacin I

Con qu datos trabaja el mdulo?

proceso

dato=???
alcance

dato=0

25

Ejemplos
Program cinco; Var dato: Integer;

Proceso tiene Datos propios?

Procedure proceso; Var dato: integer; Qu imprime? begin dato := 25; write (dato); dato: = 30; end; begin {del programa principal} dato:= 0; write (dato); proceso; write (dato); end.
Clase 3 Programacin I

Con que datos Trabaja el mdulo?

proceso

dato=25
alcance

dato=0

26

Modularizacin- Funciones
Recordemos que Pascal provee procedimientos y funciones para especificar la modularizacin

Trabajaremos ahora con Funciones

Una funcin se puede definir como un mdulo que realiza una nica tarea y devuelve un nico valor de tipo simple.
Sintaxis en Pascal: Function nombre (lista de parmetros formales): tipo; begin ...... end;
Clase 3 Programacin I 27

Modularizacin- Funciones
Sintaxis en Pascal: Function nombre (lista de parmetros formales): tipo; begin ...... nombre:= ; end;

La lista de parmetros es opcional (como en los procedimientos). Tipo es el tipo del dato que devolver la funcin. Debe ser de tipo simple. Al final del cuerpo de la funcin es obligatorio asignarle un valor del tipo devuelto al nombre de la funcin.
Clase 3 Programacin I 28

Funciones- Ejemplo
function producto: integer; Var x,y: integer; Observar: res:integer; Mdulo Funcin sin Begin parmetros. x:= 20; Devuelve un tipo simple. y:= 3; Se asigna al nombre de la res:= x*y; funcin, el resultado del objetivo producto:= res; del mdulo. End; Cmo se invoca?
Clase 3 Programacin I 29

Funciones- Ejemplo
Cmo es el esquema general del programa?
function producto: integer; Var x,y: integer; res:integer; Begin Cmo se invoca? x:= 20; y:= 3; res:= x*y; producto:= res; End;
Program uno; Var resu: integer; function producto: integer; Var x,y: integer; res: integer; Begin x:= 20; y:= 3; res:= x*y; producto:= res; End; Begin resu:= producto; End.
30

En una asignacin
Clase 3 Programacin I

Funciones- Ejemplo
Cmo es el esquema general del programa?
function producto: integer; Var x,y: integer; res:integer; Begin x:= 20; Cmo se y:= 3; res:= x*y; producto:= res; End; En una

Operacin de salida
Clase 3

Program uno; Var resu: integer; function producto: integer; Var x,y: integer; res: integer; Begin x:= 20; y:= 3; res:= x*y; invoca? producto:= res; End; Begin .. write (., producto ); End.
31

Programacin I

Funciones- Ejemplo
Cmo es el esquema general del programa?
function producto: integer; Var x,y: integer; res:integer; Begin x:= 20; Cmo se invoca? y:= 3; res:= x*y; producto:= res; End;

Como Condicin en la sentencia if


Clase 3 Programacin I

Program uno; Var resu: integer; function producto: integer; Var x,y: integer; res: integer; Begin x:= 20; y:= 3; res:= x*y; producto:= res; End; Begin .. if producto > 10 then. End.
32

Funciones- Ejemplo
Como es el esquema general del programa?
function producto: integer; Var x,y: integer; res:integer; Begin Cmo se invoca? x:= 20; y:= 3; res:= x*y; producto:= res; End;

Como Condicin en la sentencia while


Clase 3 Programacin I

Program uno; Var resu: integer; function producto: integer; Var x,y: integer; res: integer; Begin x:= 20; y:= 3; res:= x*y; producto:= res; End; Begin .. while (producto > 10) do End.
33

Funciones - Ejemplo
Implementar una funcin que lea un nmero y determine si es par o no. Function esPar: boolean; Var num: integer; Begin read (num); If num mod 2 = 0 then esPar:= true else esPar:= false end

Implementar 3 programas que invoquen a la funcin esPar de maneras diferentes.

Clase 3

Programacin I

34

Modularizacin- Funciones
Cmo se invocan?

Se invoca dentro de una condicin en un if o while, asignndola a una variable o dentro de un write.
El control vuelve a la misma instruccin donde fue llamada.

Dnde vuelve el flujo de control del programa una vez ejecutado el mdulo?

Qu tipos de parmetros aceptan?


Cuntos valores devuelven como mnimo? Qu operaciones se pueden realizar?

Permite slo parmetros de entrada.


Devuelve siempre un valor de tipo simple.

Permite operaciones de lectura.

Clase 3

Programacin I

35

Modularizacin
Algunas cuestiones para considerar:

Se deben minimizar los datos globales Por qu? Se deben declarar como locales los datos propios del mdulo Por qu? Si un mdulo necesita recibir/enviar datos de otro mdulo o del programa principal, cmo se hace?

Clase 3

Programacin I

36

También podría gustarte