Tema 5: 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
Fundamentos de la Programación 1
Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas

1

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

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

2

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) ❏ ❏ ❏ ❏ ❏ Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 3 . Subprograma o Módulo: Parte de un programa que realiza una tarea concreta mediante una serie de instrucciones.Concepto de Subalgoritmo Subalgoritmo.

Criterios de Descomposición Modular Programación modular es uno de los métodos de diseño más flexible y potentes para mejorar la productividad de un programa Programa Principal Módulo 1 Módulo 2 Módulo 11 Módulo 21 Módulo 22 Módulo 23 Módulo 111 Módulo 112 Módulo 221 Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 4 .

Diseño Descendente Diseño 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 jerárquicas. de forma que se puede considerar cada estructura desde dos puntos de vista Nivel n: desde el exterior ¿lo qué hace? Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Nivel n+1: desde el interior ¿cómo lo hace? 5 .

.. . .. sólo se tienen en cuenta las llamadas a éste.La definición del subalgoritmo no se computa. .. . escritura. . salvo cuando en ellas aparezca la llamada a un subalgoritmo. Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 6 . Pasos de Programa : -Sentencias de asignación. lectura. 1 paso . entonces la complejidad de la sentencia será la del subalgoritmo más una unidad.Complejidad de un subalgoritmo.

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 Concepto de subalgoritmo Parámetros o argumentos (1) Entrada Algoritmo Salida Algoritmo Entrada/Salida Algoritmo Subalgoritmo Subalgoritmo Subalgoritmo Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 7 .

Concepto de subalgoritmo Pará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 Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 8 .

perimetro := 2 * (longitud + anchura) faccion Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 9 . anchura : real .Concepto de subalgoritmo Parámetros o argumentos (1) Ejemplos (2) accion rectangulo (longitud. perimetro : real) # Ejemplo de Parámetros de entrada y de salida area := longitud * anchura . var area.

Concepto de subalgoritmo Funció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 Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 10 .

. . pf2. prN) Parámetros Formales o Ficticios: los que aparecen en la declaración del módulo accion nombre_subalgoritmo (pf1. . pr2...Concepto de subalgoritmo Parámetros o argumentos (2) Parámetros Actuales o Reales: los que se escriben en la instrucción de llamada nombre_subalgoritmo (pr1. pfN) Correspondencia de parámetros: número de parámetros tipo de parámetros orden de los parámetros nombre de los parámetros Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 11 ..

falgoritmo.r2) .r1.5.raiz2 # Calcula las raíces de una ecuación de 2º grado var delta : real fvar delta := b *b-4*a* c . var raiz1.b.r1. . escribelin (‘Las soluciones son ‘.r2: real fvar ámetros accion raices ( a.r2). raices(t1. : ‘) .t2.r1.r2) .t3) .r1. Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 12 .t2. /(2 *a) .Concepto de subalgoritmo Parámetros o argumentos (3) algoritmo : Ejemplo # Ejemplo de Correspondencia de Par var t1.r1.t3.c : real.t2.r2) escribelin (‘Las soluciones son ‘. raices(1. escribe (‘Escribe los coeficientes de la ecuación lee (t1.4.t3. raiz1 := ( -b+raiz(delta)) raiz2 := ( -b-raiz(delta)) faccion # raices : real) /(2 *a) .

no las modificaciones que pueda tener dentro del subalgoritmo. que pasan información desde el algoritmo al subalgoritmo. Son parámetros unidireccionales. ❏ Por referencia: se pasa una referencia a la posición de memoria donde se encuentra dicho valor. Se trabaja con una copia del valor pasado. Puede ser cualquier expresión evaluable en ese momento. Se utilizan tanto para recibir como para transmitir información sobre el algoritmo y el subalgoritmo. Debe ser obligatoriamente una variable.Concepto de subalgoritmo Parámetros o argumentos (4) Paso de Parámetros : ❏ Por valor: únicamente nos interesa el valor.13 Clase Entrada Salida Entrada/Salida Paso por Valor } Referencia Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 13 .

perimetro := 2 * (longitud + anchura) faccion Parámetros por valor Parámetros por referencia Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 14 . perimetro : real) # Ejemplo de Parámetros de entrada y de salida area := longitud * anchura .Concepto de subalgoritmo Parámetros o argumentos (4) Ejemplo accion rectangulo (longitud. var area. anchura : real .

Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 15 . según el valor de éstos. Toma uno o más valores. devuelve un resultado en el nombre de la función.Concepto de Subalgoritmo Acciones y Funciones Acción o Procedimiento: Subalgoritmo que realiza una tarea específica y que puede ser definido con 0. denominados argumentos o parámetros actuales y. 1 o N parámetros Función: Subalgoritmo que devuelve un valor asociado a su nombre.

para i := 1 hasta exponente hacer resultado := resultado*base fpara .y). potencia := resultado ffuncion # potencia escribe(‘Escribe la base y el exponente : ‘).z). lee(x. z := potencia(x.exponente:entero) retorna entero # Calcula la potencia de un número entero var i.y). escribelin(‘Las solución es ‘. z := potencia(5.resultado : entero fvar resultado := 1.y.z : entero fvar funcion potencia(base. Función ejemplo algoritmo : Ejemplo # Ejemplo de Función var x. Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 16 . falgoritmo. escribelin(‘La solución es ‘.Concepto de Subalgoritmo.3).z).

sólo disponible durante el funcionamiento del mismo Variable Global: variable declarada en el programa principal y. 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.Ámbito de un identificador Variable Local: variable declarada dentro de un subprograma y. y no de variables globales Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 17 . por tanto. por ello.

NumMayor:=Resultado ffuncion Resultado:=0. leelin(Numero2). Mayor). Ejemplo. Resultado:entero fvar funcion NumMayor (n1. Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 18 . escribelin('El mayor es '.Numero2. Mayor. Mayor := NumMayor(Numero1. algoritmo: efecto_lateral var Numero1. Resultado:=Numero1+Numero2. escribelin('La suma es' . falgoritmo. leelin(Numero1).Efectos Laterales.Numero2).Resultado).n2:entero) retorna entero si (n1>n2) entonces Resultado:=n1 sino Resultado:=n2 fsi.

(Prevalece el más interno) Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 19 .Ámbito de un identificador (2) Reglas de ámbito: 1. 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. Un identificador se puede utilizar en el programa en el que está declarado y en todos los subprogramas de él 2.

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 .. q : entero fvar . y : real fvar accion A (var x : real ) var m. Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 20 . falgoritmo...Ámbito de un identificador (3) algoritmo Ejemplo var x. n : entero fvar accion B (w : real) var p... faccion #B ....

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) Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 21 .

Recursividad (2) Características: o Herramienta muy potente o Idónea para la resolución de aquellos problemas que pueden definirse de modo natual en términos recursivos o Tiene su equivalente iterativo o Necesitan mayor cantidad de memoria para su ejecución o Son más lentos en su ejecución Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 22 .

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 Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 23 .Recursividad (3).

Recursividad (4). fsi faccion escribe('Introduce una palabra o frase terminada en punto : '). alreves(l). sino lee(l). lee(letra). algoritmo : Recursividad var letra : caracter fvar accion alreves(l : caracter ) si (l = '.') entonces escribelin(). alreves(letra). Fundamentos de la Programación 1 Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas 24 . escribe(l). escribe(letra) falgoritmo. Ejemplo.

Sign up to vote on this title
UsefulNot useful