24
Tema 5: Tema 5: Programación modular Programación modular Ingeniería Informática Ingeniería Técnica en Informática de Sistemas Ingeniería Técnica en Informática de Gestión Fundamentos de la Programación 1 Departamento de Ciencia de la Computación e Inteligencia Artificial Universidad de Alicante

Diseño modular.pdf

Embed Size (px)

Citation preview

Page 1: Diseño modular.pdf

1Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Tema 5:Tema 5:Programación modularProgramación modular

Ingeniería InformáticaIngeniería Técnica en Informática de SistemasIngeniería Técnica en Informática de Gestión

Fundamentos de la Programación 1

Departamento de Ciencia de la Computación e Inteligencia ArtificialUniversidad de Alicante

Page 2: Diseño modular.pdf

2Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Contenidos

❏ Criterios de Descomposición Modular❏ Concepto de Subalgoritmo❏ Variables locales y formales❏ Efectos laterales❏ Ámbito de un identificador

Page 3: Diseño modular.pdf

3Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de SubalgoritmoSubalgoritmo, Subprograma o Módulo: Parte de un programa que realiza una tarea concreta mediante una serie de instrucciones.

Ventajas❏ Facilita el diseño descendente❏ Disminuye la complejidad del algoritmo❏ Disminuye el tamaño total del programa❏ Reusabilidad: ahorro de tiempo de programación❏ División de la programación entre un equipo de programadores → reducción

del tiempo de desarrollo❏ Facilidad en la depuración: comprobación individual de los módulos❏ Programas más fáciles de modificar❏ Estructuración en librerías específicas (biblioteca de módulos)

Page 4: Diseño modular.pdf

4Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Criterios de Descomposición ModularProgramación modularProgramación modular es uno de los métodos de diseño es uno de los métodos de diseño más flexible y potentes para mejorar la productividad de más flexible y potentes para mejorar la productividad de un programaun programa

ProgramaPrincipal

Módulo 1 Módulo 2

Módulo 11 Módulo 22Módulo 21 Módulo 23

Módulo 111 Módulo 112 Módulo 221

Page 5: Diseño modular.pdf

5Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Diseño Descendente

El problema se descompone en etapas o estructuras jerárquicas, de forma que se puede considerar cada estructura desde dos puntos de vista

Diseño DescendenteDiseño Descendente (“top-down”) proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise)

Nivel n+1: desde el interior¿cómo lo hace?

Nivel n: desde el exterior¿lo qué hace?

Page 6: Diseño modular.pdf

6Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Complejidad de un subalgoritmo.Pasos de Programa :

-Sentencias de asignación, lectura, escritura, ...1 paso1 paso

... salvo cuando en ellas aparezca la llamada a un subalgoritmo, entonces la complejidad de la sentencia será la del subalgoritmomás una unidad.......

- La definición del subalgoritmo no se computa, sólo se tienen en cuenta las llamadas a éste.

Page 7: Diseño modular.pdf

7Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (1)

Transferencia de información a/desde los subalgoritmos❏ Subalgoritmos sin parámetros: no existe comunicación entre el programa

principal y el subalgoritmo❏ Subalgoritmos con parámetros: existe comunicación entre el programa

principal y el subprograma

Algoritmo

Subalgoritmo

Entrada

Algoritmo

Subalgoritmo

Salida

Algoritmo

Subalgoritmo

Entrada/Salida

Page 8: Diseño modular.pdf

8Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (1)

Ejemplos accion linea (n : entero) # Ejemplo de Parámetros de entrada var j : entero fvar para j := 1 hasta n hacer escribe(‘*’) fpara faccion

Page 9: Diseño modular.pdf

9Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (1)

Ejemplos (2) accion rectangulo (longitud, anchura : real ; var area, perimetro : real) # Ejemplo de Parámetros de entrada y de salida area := longitud * anchura ; perimetro := 2 * (longitud + anchura) faccion

Page 10: Diseño modular.pdf

10Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoFunción Ejemplo

Ejemplos (3) accion modifica (var n : entero) # Ejemplo de Parámetro de entrada/salida si (n>0) entonces n := n * 2 sino n := n * 3 fsi faccion

Page 11: Diseño modular.pdf

11Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (2)

Parámetros Actuales o Reales: los que se escriben en la instrucción de llamadanombre_subalgoritmo (pr1, pr2, ... prN)Parámetros Formales o Ficticios: los que aparecen en la declaración del móduloaccion nombre_subalgoritmo (pf1, pf2, ... pfN)

Correspondencia de parámetros:número de parámetrostipo de parámetrosorden de los parámetrosnombre de los parámetros

Page 12: Diseño modular.pdf

12Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (3)algoritmo : Ejemplo# Ejemplo de Correspondencia de Par ámetros

var t1,t2,t3,r1,r2: real fvar

accion raices ( a,b,c : real; var raiz1,raiz2 : real)# Calcula las raíces de una ecuación de 2º grado

var delta : real fvar

delta := b*b-4*a*c ;raiz1 := (-b+raiz(delta)) /(2 *a) ;raiz2 := (-b-raiz(delta)) /(2 *a) ;

faccion # raices

escribe (‘Escribe los coeficientes de la ecuación : ‘) ;lee (t1,t2,t3);raices(t1,t2,t3,r1,r2);escribelin (‘Las soluciones son ‘,r1,r2) ;raices(1,5,4,r1,r2) ;escribelin (‘Las soluciones son ‘,r1,r2) ;

falgoritmo.

Page 13: Diseño modular.pdf

13Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (4)

Paso de Parámetros :❏ Por valor: únicamente nos interesa el valor, no las modificaciones que pueda

tener dentro del subalgoritmo. Se trabaja con una copia del valor pasado. Son parámetros unidireccionales, que pasan información desde el algoritmo al subalgoritmo. Puede ser cualquier expresión evaluable en ese momento.

❏ Por referencia: se pasa una referencia a la posición de memoria donde se encuentra dicho valor. Se utilizan tanto para recibir como para transmitir información sobre el algoritmo y el subalgoritmo. Debe ser obligatoriamente una variable.13

Clase Paso porEntrada Valor

Salida Entrada/Salida } Referencia

Page 14: Diseño modular.pdf

14Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de subalgoritmoParámetros o argumentos (4)

Ejemplo accion rectangulo (longitud, anchura : real ; var area, perimetro : real) # Ejemplo de Parámetros de entrada y de salida area := longitud * anchura ; perimetro := 2 * (longitud + anchura) faccion

Parámetros por valor Parámetros por

referencia

Page 15: Diseño modular.pdf

15Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de SubalgoritmoAcciones y Funciones

Acción o Procedimiento: Subalgoritmo que realiza una tarea específica y que puede ser definido con 0, 1 o N parámetros

Función: Subalgoritmo que devuelve un valor asociado a su nombre. Toma uno o más valores, denominados argumentos o parámetros actuales y, según el valor de éstos, devuelve un resultado en el nombre de la función.

Page 16: Diseño modular.pdf

16Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Concepto de Subalgoritmo.Función ejemplo

algoritmo : Ejemplo # Ejemplo de Función var x,y,z : entero fvar funcion potencia(base,exponente:entero) retorna entero

# Calcula la potencia de un número entero var i,resultado : entero fvar resultado := 1; para i := 1 hasta exponente hacer resultado := resultado*base fpara ; potencia := resultado ffuncion # potencia escribe(‘Escribe la base y el exponente : ‘); lee(x,y); z := potencia(x,y); escribelin(‘La solución es ‘,z); z := potencia(5,3); escribelin(‘Las solución es ‘,z); falgoritmo.

Page 17: Diseño modular.pdf

17Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Ámbito de un identificadorVariable Local: variable declarada dentro de un

subprograma y, por tanto, sólo disponible durante el funcionamiento del mismo

Variable Global: variable declarada en el programa principal y, por ello, pueden ser utilizadas por el programa principal y por todos sus subprogramas

La comunicación entre un programa y un subprograma debe realizarse a través de parámetros, y no de variables globales

Page 18: Diseño modular.pdf

18Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Efectos Laterales. Ejemplo. algoritmo: efecto_lateral

var Numero1,Numero2, Mayor, Resultado:entero fvar

funcion NumMayor (n1,n2:entero) retorna enterosi (n1>n2)

entonces Resultado:=n1sino Resultado:=n2

fsi;NumMayor:=Resultado

ffuncion

Resultado:=0;leelin(Numero1);leelin(Numero2);Resultado:=Numero1+Numero2;Mayor := NumMayor(Numero1,Numero2);escribelin('La suma es' ,Resultado);escribelin('El mayor es ', Mayor);

falgoritmo.

Page 19: Diseño modular.pdf

19Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Ámbito de un identificador (2)

Reglas de ámbito:

1. Un identificador se puede utilizar en el programa en el que está declarado y en todos los subprogramas de él

2. Si un identificador declarado en un programa P se redeclara en algún subprograma interno Q, entonces cualquier referencia a dicho identificador en Q (o algún subprograma de Q) utilizará el identificador declarado en Q y no el declarado en P. (Prevalece el más interno)

Page 20: Diseño modular.pdf

20Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Ámbito de un identificador (3)algoritmo Ejemplo

var x, y : real fvar

accion A (var x : real )var m, n : entero fvar

accion B (w : real)var p, q : entero fvar...

faccion # B

...faccion # A

accion C (var letra : caracter)var c : caracter fvar...

faccion # C

...falgoritmo.

ámbito de w

ámbito de m

ámbito de c

ámbito de y

Page 21: Diseño modular.pdf

21Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Recursividad (1)Definición de un objeto de forma que lo que se define está

incluido en la definición

Caso base : “condición de terminación” o “condición de límite”

Caso general o recursivo: debe haber un progreso (tendencia al caso base)

Page 22: Diseño modular.pdf

22Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Recursividad (2)

Características:o Herramienta muy potenteo Idónea para la resolución de aquellos problemas que

pueden definirse de modo natual en términos recursivoso Tiene su equivalente iterativoo Necesitan mayor cantidad de memoria para su ejecucióno Son más lentos en su ejecución

Page 23: Diseño modular.pdf

23Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Recursividad (3). Ejemplo.

funcion factorial (n : entero) retorna entero # Calcula el factorial de un número dado si (n=0) entonces factorial := 1 sino factorial := n * factorial(n-1) fsi ffuncion

Page 24: Diseño modular.pdf

24Fundamentos de la Programación 1Fundamentos de la Programación 1Ingeniería InformáticaIngeniería Técnica en Informática de GestiónIngeniería Técnica en Informática de Sistemas

Recursividad (4). Ejemplo.algoritmo : Recursividadvar letra : caracter fvar

accion alreves(l : caracter ) si (l = '.')

entonces escribelin();sino lee(l);

alreves(l);escribe(l);

fsifaccion

escribe('Introduce una palabra o frase terminada en punto : ');lee(letra);alreves(letra);escribe(letra)

falgoritmo.