teoría – alejandro h. gonzález
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 PresentationTRANSCRIPT
![Page 1: Teoría – Alejandro H. González](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/1.jpg)
Teoría – Alejandro H. González
PROGRAMACIÓN I
![Page 2: Teoría – Alejandro H. González](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/2.jpg)
Temas
Modularización Ejemplos Ventajas
![Page 3: Teoría – Alejandro H. González](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/9.jpg)
Modularización – FormasRecursos de los lenguajes de programación para especificar la modularizaciónSubroutineModuleProcedureFunctionPackageClass, etc.
![Page 10: Teoría – Alejandro H. González](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/29.jpg)
Modularización - Ejemplo
No puedo eliminar un usuario
No puedo eliminar un usuario
Eliminar un
usuario
![Page 30: Teoría – Alejandro H. González](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062315/5681599e550346895dc6ea11/html5/thumbnails/38.jpg)
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;