Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 3
Programacin I
Modularizacin
Los problemas del mundo real implican:
Complejidad Extensin Modificaciones
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
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
Efectuar reserva
Cancelar reserva
Consultar reservas de un da
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
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
Clase 3
Programacin I
12
Modularizacin - Ventajas
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
Gestin de Clientes
Eliminar un cliente
Clase 3
Programacin I
14
Modularizacin - Ventajas
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
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
Clase 3
Programacin I
18
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?
Modularizacin- Procedimientos
Cmo se invocan? Dnde vuelve el flujo de control del programa una vez ejecutado el mdulo?
Clase 3
Programacin I
21
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;
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
proceso
alcance
dato=0
24
Ejemplos
Program cuatro; Var dato: Integer;
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
proceso
dato=???
alcance
dato=0
25
Ejemplos
Program cinco; Var dato: Integer;
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
proceso
dato=25
alcance
dato=0
26
Modularizacin- Funciones
Recordemos que Pascal provee procedimientos y funciones para especificar la modularizacin
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;
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;
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
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?
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