Está en la página 1de 24

Tema 5: Programacin modular

Ingeniera Informtica Ingeniera Tcnica en Informtica de Sistemas Ingeniera Tcnica en Informtica de Gestin Fundamentos de la Programacin 1
Departamento de Ciencia de la Computacin e Inteligencia Artificial Universidad de Alicante
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Contenidos
Criterios de Descomposicin Modular Concepto de Subalgoritmo Variables locales y formales Efectos laterales mbito de un identificador

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Concepto de Subalgoritmo
Subalgoritmo, Subprograma o Mdulo: Parte de un programa que realiza una tarea concreta mediante una serie de instrucciones. Ventajas
Facilita el diseo descendente Disminuye la complejidad del algoritmo Disminuye el tamao total del programa Reusabilidad: ahorro de tiempo de programacin Divisin de la programacin entre un equipo de programadores reduccin del tiempo de desarrollo Facilidad en la depuracin: comprobacin individual de los mdulos Programas ms fciles de modificar Estructuracin en libreras especficas (biblioteca de mdulos)

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Criterios de Descomposicin Modular


Programacin modular es uno de los mtodos de diseo ms flexible y potentes para mejorar la productividad de un programa
Programa Principal

Mdulo 1

Mdulo 2

Mdulo 11

Mdulo 21

Mdulo 22

Mdulo 23

Mdulo 111

Mdulo 112

Mdulo 221

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Diseo Descendente
Diseo Descendente (top-down) proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise) El problema se descompone en etapas o estructuras jerrquicas, de forma que se puede considerar cada estructura desde dos puntos de vista

Nivel n: desde el exterior lo qu hace?


Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Nivel n+1: desde el interior cmo lo hace?


5

Complejidad de un subalgoritmo.
Pasos de Programa :
-Sentencias de asignacin, lectura, escritura, ... 1 paso ... salvo cuando en ellas aparezca la llamada a un subalgoritmo, entonces la complejidad de la sentencia ser la del subalgoritmo ms una unidad.

. . .
- La definicin del subalgoritmo no se computa, slo se tienen en cuenta las llamadas a ste.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Transferencia de informacin a/desde los subalgoritmos


Subalgoritmos sin parmetros: no existe comunicacin entre el programa principal y el subalgoritmo Subalgoritmos con parmetros: existe comunicacin entre el programa principal y el subprograma

Concepto de subalgoritmo Parmetros o argumentos (1)

Entrada
Algoritmo

Salida
Algoritmo

Entrada/Salida
Algoritmo

Subalgoritmo

Subalgoritmo

Subalgoritmo

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Concepto de subalgoritmo Parmetros o argumentos (1)


Ejemplos
accion linea (n : entero) # Ejemplo de Parmetros de entrada var j : entero fvar

para j := 1 hasta n hacer escribe(*) fpara faccion

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Concepto de subalgoritmo Parmetros o argumentos (1)


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

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Concepto de subalgoritmo Funcin Ejemplo


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

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

10

Concepto de subalgoritmo Parmetros o argumentos (2)


Parmetros Actuales o Reales: los que se escriben en la instruccin de llamada
nombre_subalgoritmo (pr1, pr2, ... prN)

Parmetros Formales o Ficticios: los que aparecen en la declaracin del mdulo


accion nombre_subalgoritmo (pf1, pf2, ... pfN)

Correspondencia de parmetros: nmero de parmetros tipo de parmetros orden de los parmetros nombre de los parmetros
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

11

Concepto de subalgoritmo Parmetros o argumentos (3)


algoritmo : Ejemplo # Ejemplo de Correspondencia de Par var t1,t2,t3,r1,r2: real fvar metros accion raices ( a,b,c : real; var raiz1,raiz2 # Calcula las races de una ecuacin de 2 grado var delta : real fvar delta := b *b-4*a* c ; raiz1 := ( -b+raiz(delta)) raiz2 := ( -b-raiz(delta)) faccion # raices : real)

/(2 *a) ; /(2 *a) ;

escribe (Escribe los coeficientes de la ecuacin 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.

: ) ;

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

12

Concepto de subalgoritmo Parmetros o argumentos (4)


Paso de Parmetros :
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 parmetros unidireccionales, que pasan informacin desde el algoritmo al subalgoritmo. Puede ser cualquier expresin evaluable en ese momento. Por referencia: se pasa una referencia a la posicin de memoria donde se encuentra dicho valor. Se utilizan tanto para recibir como para transmitir informacin sobre el algoritmo y el subalgoritmo. Debe ser obligatoriamente una variable.13

Clase Entrada Salida Entrada/Salida

Paso por Valor

Referencia

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

13

Concepto de subalgoritmo Parmetros o argumentos (4)


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

Parmetros por valor

Parmetros por referencia

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

14

Concepto de Subalgoritmo Acciones y Funciones


Accin o Procedimiento: Subalgoritmo que realiza una tarea especfica y que puede ser definido con 0, 1 o N parmetros Funcin: Subalgoritmo que devuelve un valor asociado a su nombre. Toma uno o ms valores, denominados argumentos o parmetros actuales y, segn el valor de stos, devuelve un resultado en el nombre de la funcin.

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

15

Concepto de Subalgoritmo. Funcin ejemplo


algoritmo : Ejemplo # Ejemplo de Funcin var x,y,z : entero fvar funcion potencia(base,exponente:entero) retorna entero # Calcula la potencia de un nmero 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 solucin es ,z); z := potencia(5,3); escribelin(Las solucin es ,z); falgoritmo.

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

16

mbito de un identificador
Variable Local: variable declarada dentro de un subprograma y, por tanto, slo 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 comunicacin entre un programa y un subprograma debe realizarse a travs de parmetros, y no de variables globales
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

17

Efectos Laterales. Ejemplo.


algoritmo: efecto_lateral var Numero1,Numero2, Mayor, Resultado:entero fvar funcion NumMayor (n1,n2:entero) retorna entero si (n1>n2) entonces Resultado:=n1 sino 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.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

18

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 algn subprograma interno Q, entonces cualquier referencia a dicho identificador en Q (o algn subprograma de Q) utilizar el identificador declarado en Q y no el declarado en P. (Prevalece el ms interno)
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

19

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
mbito de c mbito de y mbito de m

mbito de w

accion C (var letra : caracter) var c : caracter fvar ... faccion #C ... falgoritmo.

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

20

Recursividad (1)
Definicin de un objeto de forma que lo que se define est incluido en la definicin Caso base : condicin de terminacin o condicin de lmite Caso general o recursivo: debe haber un progreso (tendencia al caso base)

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

21

Recursividad (2)
Caractersticas: o Herramienta muy potente o Idnea para la resolucin de aquellos problemas que pueden definirse de modo natual en trminos recursivos o Tiene su equivalente iterativo o Necesitan mayor cantidad de memoria para su ejecucin o Son ms lentos en su ejecucin

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

22

Recursividad (3). Ejemplo.


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

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

23

Recursividad (4). Ejemplo.


algoritmo : Recursividad var letra : caracter fvar accion alreves(l : caracter ) si (l = '.') entonces escribelin(); sino lee(l); alreves(l); escribe(l); fsi faccion escribe('Introduce una palabra o frase terminada en punto : '); lee(letra); alreves(letra); escribe(letra) falgoritmo.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

24

También podría gustarte