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.