teoría – alejandro h. gonzález

38
Teoría – Alejandro H. González PROGRAMACIÓN I

Upload: totie

Post on 03-Feb-2016

54 views

Category:

Documents


0 download

DESCRIPTION

PROGRAMACIÓN I. Teoría – Alejandro H. González. Temas. Modularización Ejemplos Ventajas. Modularización. MOTIVACIÓN Los problemas del mundo real implican: Complejidad Extensión Modificaciones. Los tratamos de resolver con: Abstracción. Descomposición funcional. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Teoría  – Alejandro H. González

Teoría – Alejandro H. González

PROGRAMACIÓN I

Page 2: Teoría  – Alejandro H. González

Temas

Modularización Ejemplos Ventajas

Page 3: Teoría  – Alejandro H. González

Modularización MOTIVACIÓN

Los problemas del mundo real implican:ComplejidadExtensiónModificaciones

Los tratamos de resolver con:Abstracción.Descomposición funcional.

Los tratamos de resolver con:Abstracción.Descomposición funcional.

Page 4: Teoría  – Alejandro H. González

Modularización

Modularizar significa dividir un problema en partes funcionalmente independientes, que encapsulen operaciones y datos.

No se trata simplemente de subdividir el código de un sistema de software en bloques con un número de instrucciones dado.

Separar en funciones lógicas con datos propios y datos de comunicación perfectamente especificados.

Page 5: Teoría  – Alejandro H. González

Modularización - Abstracción

La descomposición tiene siempre un objetivo. Se busca obtener:Alta Cohesión: medida del grado de identificación de un módulo con una función concreta.Bajo Acoplamiento: medida de la interacción de los módulos que constituyen un programa.

Page 6: Teoría  – Alejandro H. González

Modularización - Abstracción

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 lo más independientemente posible.

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

Page 7: Teoría  – Alejandro H. González

Modularización - Descomposición

¿Qué son los Módulos?

Es un conjunto de instrucciones que cumplen una tarea específica bien definida, se comunican entre sí adecuadamente y cooperan para conseguir un objetivo común.

Se descompone de problemas grandes a problemas pequeños

Cada módulo encapsula, acciones tareas o funciones

Hay que representar los objetos relevantes del problema a resolver.

Page 8: Teoría  – Alejandro H. González

Modularización ¿Qué es un módulo en nuestras soluciones? ¿Cómo debe ser un módulo de software en

nuestros programas? ¿Existe una metodología para trabajar? ¿Es importante tener una buena metodología de

trabajo?TOP DOWNIr de lo general a lo particularDividir … conectar … y verificar

Page 9: Teoría  – Alejandro H. González

Modularización – FormasRecursos de los lenguajes de programación para especificar la modularizaciónSubroutineModuleProcedureFunctionPackageClass, etc.

Page 10: Teoría  – Alejandro H. González

Modularización - ProceduresEn Da Vinciprograma uno procesos proceso auxiliar comenzar fin variables …. comenzar … fin

En Pascalprogram uno;procedure auxiliar begin end; var …. begin … end.

program uno;var ….procedure auxiliarvar ….beginend;begin … end.

Page 11: Teoría  – Alejandro H. González

Modularización - Proceduresprogram uno;procedure auxiliar;var x:integer;begin x:= 8; x:= x * x; end;

Conjunto de instrucciones que realizan una tarea especifica y retorna 0, 1 o más valores.

Cómo se invoca?

Procedimiento sin parámetros.

No devuelve nada.

Page 12: Teoría  – Alejandro H. González

Modularización - Proceduresprogram uno;Var // variables del programaprocedure auxiliarvar x:integer;begin x:= 8; x:= x * x; end;

begin ….. auxiliar; …..end.

Por el nombre

Page 13: Teoría  – Alejandro H. González

Modularización - Procedures

ResumenEs un módulo que realiza tareas y puede devolver 0, 1 ó más valores.

En general devuelve el resultado a través de PARAMETROS.

Se invocan: escribiendo su nombre.

Permite parámetros de entrada y de entrada salida.

Respecto de las operaciones de lectura y escritura, no es aconsejable introducirlas como parte del módulo. Lo charlamos?

Page 14: Teoría  – Alejandro H. González

Modularización - FunctionEn Da VinciNo existe…

En Pascalprogram uno; var ….function auxiliar: tipo begin ….. end; begin … end.

En Pascalprogram uno; var ….function auxiliar: tipo var …. begin ….. end; begin … end.

Page 15: Teoría  – Alejandro H. González

Modularización - Function

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

Conjunto de instrucciones que realizan una tarea especifica y retorna 1 valor.

Function sin parámetros.

Devuelve el valor

Tipo que devuelve. Sólo simples

Page 16: Teoría  – Alejandro H. González

Modularización - Function

program uno;function auxiliar: integer;var x:integer;begin x:= 8*5; auxiliar:= x;end; ¿Cómo se invoca?

Page 17: Teoría  – Alejandro H. González

Modularización - Functionprogram 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 función

Page 18: Teoría  – Alejandro H. González

Modularización - Functionprogram 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.

Page 19: Teoría  – Alejandro H. González

Modularización - Functionprogram 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 condición

Page 20: Teoría  – Alejandro H. González

Modularización - Functionprogram 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 condición

Page 21: Teoría  – Alejandro H. González

Modularización - Function

ResumenEs un módulo que realiza una única tarea y devuelve SIEMPRE un sólo valor de tipo simple.

Para devolver el resultado se asigna al nombre de la función como última instrucción.

Respecto de las operaciones de lectura y escritura, no es aconsejable introducirlas como parte del módulo. Lo charlamos?Se pueden invocar: dentro de una condición (por ejemplo, en la condición de un if o de un while), o asignarla a una variable o dentro de un write.Pueden recibir sólo parámetros de entrada.

Page 22: Teoría  – Alejandro H. González

Diferencias entre procedimiento y función

• ¿Dónde vuelve el flujo de control del programa una vez ejecutado el módulo?

• ¿Cómo se invocan?• ¿Qué tipos de parámetros aceptan?• ¿Cuántos valores devuelven como mínimo?• Operaciones que se pueden realizar en cada uno.

Page 23: Teoría  – Alejandro H. González

Modularización - EjemploSistematizar la

operatoria de un hotelSistematizar la

operatoria de un hotel

Gestión de ClientesGestión de ClientesGestión de ReservasGestión de Reservas

Incorporar un cliente

Incorporar un cliente

Eliminar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Consultar /Modificar datos cliente

Efectuar reservaEfectuar reserva

Cancelar reservaCancelar reserva

Consultar reservas de un día

Consultar reservas de un día

Page 24: Teoría  – Alejandro H. González

Modularización – Ventajas

Mayor productividadMayor productividad

Al dividir un sistema de software en módulos funcionalmente independientes, un equipo de desarrollo puede trabajar simultáneamente en varios módulos, incrementando la productividad (es decir reduciendo el tiempo de desarrollo global del sistema). Ejemplo.

Page 25: Teoría  – Alejandro H. González

Modularización - EjemploSistematizar la

operatoria de un hotelSistematizar la

operatoria de un hotel

Gestión de ClientesGestión de ClientesGestión de ReservasGestión de Reservas

Incorporar un cliente

Incorporar un cliente

Eliminar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Consultar /Modificar datos cliente Efectuar

reservaEfectuar reserva

Cancelar reservaCancelar reserva

Consultar reservas de un día

Consultar reservas de un día

Page 26: Teoría  – Alejandro H. González

Modularización - Ventajas

Un objetivo fundamental de la Ingeniería de Software es la reusabilidad, es decir la posibilidad de utilizar repetidamente el producto de software desarrollado.

Naturalmente la descomposición funcional que ofrece la modularización favorece el reuso. Ejemplo.

ReusabilidadReusabilidad

Page 27: Teoría  – Alejandro H. González

Modularización - Ejemplo

Se puede utilizar para

cualquier otro sistema

Gestión de ClientesGestión de Clientes

Incorporar un cliente

Incorporar un cliente

Eliminar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Consultar /Modificar datos cliente

Page 28: Teoría  – Alejandro H. González

Modularización - Ventajas

La división lógica de un sistema en módulos 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

Facilidad de Mantenimiento CorrectivoFacilidad de Mantenimiento Correctivo

Page 29: Teoría  – Alejandro H. González

Modularización - Ejemplo

No puedo eliminar un usuario

No puedo eliminar un usuario

Eliminar un

usuario

Page 30: Teoría  – Alejandro H. González

Modularización - Ventajas

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

Facilidad para el crecimiento del sistemaFacilidad para el crecimiento del sistema

Page 31: Teoría  – Alejandro H. González

Modularización - Ejemplo

Gestión de Pagos

Gestión de Pagos

Generar FacturaGenerar Factura

Cancelar pagoCancelar pagoRegistra

r pagoRegistrar pago

Sistematizar la operatoria de un hotel

Sistematizar la operatoria de un hotel

Gestión de ClientesGestión de ClientesGestión de Reservas

Gestión de Reservas

Incorporar un cliente

Incorporar un cliente

Eliminar un cliente

Eliminar un cliente

Consultar /Modificar datos cliente

Consultar /Modificar datos cliente

Efectuar reservaEfectuar reserva

Cancelar reservaCancelar reserva

Consultar reservas de un día

Consultar reservas de un día

Page 32: Teoría  – Alejandro H. González

Modularización - Ventajas

Un efecto de la modularización es una mayor claridad para leer y comprender el código fuente. El ser humano maneja y comprende con mayor facilidad un número limitado de instrucciones directamente relacionadas. Ejemplo.

Mayor LegibilidadMayor Legibilidad

Page 33: Teoría  – Alejandro H. González

Modularización – Alcance de variablesProgram 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?

Page 34: Teoría  – Alejandro H. González

Modularización – Alcance de variablesProgram dos;Var a,b: integer;

procedure prueba; var Begin x:= 9; write (x); End;Begin …..End.

1.Se fija si es variable local

2. Si no es variable local, entonces se fija si es un parámetro.

3.Si no es variable local y no es parámetro, entonces se fija si es variable global.

Page 35: Teoría  – Alejandro H. González

Modularización – ¿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.

Page 36: Teoría  – Alejandro H. González

Modularización – ¿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

Page 37: Teoría  – Alejandro H. González

Modularización – ¿Qué imprime?

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

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

Page 38: Teoría  – Alejandro H. González

Modularización – ¿Qué imprime?

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

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