Está en la página 1de 38

PROGRAMACIN I

Teora Alejandro H. Gonzlez

Temas

Modularizacin Ejemplos Ventajas

Modularizacin
MOTIVACIN Los problemas del mundo real implican: Complejidad Extensin Modificaciones Los tratamos de resolver con: Abstraccin. Descomposicin funcional.

Modularizacin
Modularizar significa dividir un problema en partes funcionalmente independientes, que encapsulen operaciones y datos.
No se trata simplemente de subdividir el cdigo de un sistema de software en bloques con un nmero de instrucciones dado. Separar en funciones lgicas con datos propios y datos de comunicacin perfectamente especificados.

Modularizacin - Abstraccin
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.

Modularizacin - Abstraccin
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 independientemente posible. resolverse lo ms

Las soluciones de los subproblemas puede combinarse para resolver el problema original.

Modularizacin - Descomposicin
Qu son los Mdulos? Es un conjunto de instrucciones que cumplen una tarea especfica bien definida, se comunican entre s adecuadamente y cooperan para conseguir un objetivo comn.
Cada mdulo encapsula, acciones tareas o funciones

Se descompone de problemas grandes a Hay que representar los objetos relevantes del problema a resolver. problemas pequeos

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

Modularizacin Formas
Recursos de los lenguajes especificar la modularizacin

de

programacin

para

Subroutine Module Procedure Function Package Class, etc.

Modularizacin - Procedures
En Da Vinci
programa uno procesos proceso auxiliar comenzar fin variables . comenzar fin

En Pascal
program uno; procedure auxiliar begin end; var . begin end.

program uno; var . procedure auxiliar var . begin end; begin end.

Modularizacin - Procedures
Conjunto de instrucciones que realizan una tarea especifica y retorna 0, 1 o ms valores.
program uno; procedure auxiliar; var x:integer; begin x:= 8; x:= x * x; end;
Procedimiento sin parmetros.

No devuelve nada.

Cmo se invoca?

Modularizacin - Procedures
program uno; Var // variables del programa procedure auxiliar var x:integer; begin x:= 8; x:= x * x; end; begin .. auxiliar; .. end.
Por el nombre

Modularizacin - Procedures
Resumen
Es un mdulo que realiza tareas y puede devolver 0, 1 ms valores. Se invocan: escribiendo su nombre. En general devuelve el resultado a travs de PARAMETROS. Respecto de las operaciones de lectura y escritura, no es aconsejable introducirlas como parte del mdulo. Lo charlamos? Permite parmetros de entrada y de entrada salida.

Modularizacin - Function
En Da Vinci
No existe
En Pascal program uno; var . function auxiliar: tipo begin .. end; begin end.
En Pascal program uno; var . function auxiliar: tipo var . begin .. end; begin end.

Modularizacin - Function
Conjunto de instrucciones que realizan una tarea especifica y retorna 1 valor.
Function sin parmetros.

function auxiliar: tipo; var x:integer; begin x:= 8; auxiliar:= x; end;

Tipo que devuelve. Slo simples Devuelve el valor

Modularizacin - Function
program uno; function auxiliar: integer; var x:integer; begin x:= 8*5; auxiliar:= x; end;

Cmo se invoca?

Modularizacin - Function
program uno; var res:integer;
function auxiliar: integer; var x:integer; begin x:= 8*5; auxiliar:= x; end;

begin .. res:= auxiliar; .. end.


Por su nombre, asignando el resultado a una variable del mismo tipo que devuelve la funcin

Modularizacin - Function
program uno; function auxiliar: integer; var x:integer; begin x:= 8*5; auxiliar:= x; End; begin .. write (El resultado es, auxiliar); .. end.
Por su nombre, informando su resultado.

Modularizacin - Function
program uno; function auxiliar: integer; var x:integer; begin x:= 8*5; auxiliar:= x; End; begin .. if (auxiliar = 5) then .. end.
Por su nombre, en una condicin

Modularizacin - Function
program uno; function auxiliar: integer; var x:integer; begin x:= 8*5; auxiliar:= x; End; begin .. while (auxiliar = 5) do .. end.
Por su nombre, en una condicin

Modularizacin - Function
Resumen
Es un mdulo que realiza una nica tarea y devuelve SIEMPRE un slo valor de tipo simple.

Para devolver el resultado se asigna al nombre de la funcin como ltima instruccin.


Respecto de las operaciones de lectura y escritura, no es aconsejable introducirlas como parte del mdulo. Lo charlamos? Se pueden invocar: dentro de una condicin (por ejemplo, en la condicin de un if o de un while), o asignarla a una variable o dentro de un write. Pueden recibir slo parmetros de entrada.

Diferencias entre procedimiento y funcin


Dnde vuelve el flujo de control del programa una vez ejecutado el mdulo? Cmo se invocan? Qu tipos de parmetros aceptan? Cuntos valores devuelven como mnimo? Operaciones que se pueden realizar en cada uno.

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

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.

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

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 que ofrece la modularizacin favorece el reuso. Ejemplo.

Modularizacin - Ejemplo
Gestin de Clientes

Incorporar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Se puede utilizar para cualquier otro sistema

Modularizacin - Ventajas
Facilidad 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. Ejemplo

Modularizacin - Ejemplo
No puedo eliminar un usuario

Eliminar un usuario

Modularizacin - Ventajas
Facilidad para el 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.

Modularizacin - Ejemplo
Sistematizar la operatoria de un hotel

Gestin de Pagos

Gestin de Clientes Gestin de Reservas


Incorporar un cliente Eliminar un cliente Consultar /Modificar datos cliente Efectuar reserva
Registrar pago Generar Factura

Cancela pago

Cancelar reserva

Consultar reservas de un da

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. Ejemplo.

Modularizacin Alcance de
variables
Program dos; Var y,j: integer; procedure prueba; var x: integer; Begin x:= 9; write (x); End; Begin j:= 89; y:= j*2; End.

Donde se pueden utilizar j e y? Donde se puede utilizar x? Qu pasa si dentro de prueba se declara y: integer? Qu pasa si dentro de prueba se declara y: char?

Modularizacin Alcance de
variables
Program dos; Var a,b: integer; procedure prueba; var
Begin x:= 9; write (x); End; Begin .. End. 2. Si no es variable local, entonces se fija si es un parmetro. 3.Si no es variable local y no es parmetro, entonces se fija si es variable global. 1.Se fija si es variable local

Modularizacin Qu imprime?
Program dos; Var x,a,b: integer; procedure prueba; var x: integer; Begin x:= 9; write (x); End; Begin x:= 8; prueba; End.

Program dos; Var x,a,b: integer; procedure prueba; Begin write (x); End; Begin x:=8; prueba; End.

Program dos; Var x,a,b: integer; procedure prueba; Begin x:= 9; write (x); End; Begin x:=8; prueba; End.

Modularizacin Qu imprime?
Program ejemplo; Var talle: integer; peso: real; Procedure asigna; var peso: real; Begin talle:= 25; peso:= 62.50; End; Begin talle:= 28; peso:= 55; asigna writeln(talle, peso); End.

25 55 El 25 corresponde al talle El 55 al peso

Modularizacin Qu imprime?
Program alcance; Var global : Integer; Procedure proceso; begin global := 25; write ( global ); global: = 30; end;

begin {del programa principal} global := 0; write ( global ); proceso; write ( global ); end.

Modularizacin Qu imprime?
Program alcance; Var global : Integer; Procedure proceso; var global:integer; begin global := 25; write ( global ); global: = 30; end;

begin {del programa principal} global := 0; write ( global ); proceso; write ( global ); end.

También podría gustarte