Diseño modular.pdf

Preview:

Citation preview

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

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

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)

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

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?

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.

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

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

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

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

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

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.

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

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

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.

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.

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

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.

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)

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

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)

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

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

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.

Recommended