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

Concepto de Subalgoritmo Subalgoritmo. 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) ❏ ❏ ❏ ❏ ❏ 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 .

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 .

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 . .. .. lectura.Complejidad de un subalgoritmo. Pasos de Programa : -Sentencias de asignación. sólo se tienen en cuenta las llamadas a éste.. entonces la complejidad de la sentencia será la del subalgoritmo más una unidad..La definición del subalgoritmo no se computa. 1 paso . . . . escritura.

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 .

var area.Concepto de subalgoritmo Parámetros o argumentos (1) Ejemplos (2) accion rectangulo (longitud. 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 . perimetro : real) # Ejemplo de Parámetros de entrada y de salida area := longitud * anchura .

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 .

. . prN) Parámetros Formales o Ficticios: los que aparecen en la declaración del módulo accion nombre_subalgoritmo (pf1. pf2. 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 . .

t2.b. var raiz1.r2) .r1. . escribe (‘Escribe los coeficientes de la ecuación lee (t1.t2.raiz2 # 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)) raiz2 := ( -b-raiz(delta)) faccion # raices : real) /(2 *a) .t3.r1.r2) escribelin (‘Las soluciones son ‘.t2.r1.r2). /(2 *a) .4.r2: real fvar ámetros accion raices ( a. falgoritmo.t3) .Concepto de subalgoritmo Parámetros o argumentos (3) algoritmo : Ejemplo # Ejemplo de Correspondencia de Par var t1. : ‘) .5.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 . escribelin (‘Las soluciones son ‘.r2) .c : real.t3.r1. raices(t1. raices(1.

no las modificaciones que pueda tener dentro del subalgoritmo.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 . Debe ser obligatoriamente una variable. ❏ Por referencia: se pasa una referencia a la posición de memoria donde se encuentra dicho valor. Son parámetros unidireccionales. Se trabaja con una copia del valor pasado. que pasan información desde el algoritmo al subalgoritmo. Se utilizan tanto para recibir como para transmitir información sobre el algoritmo y el subalgoritmo. Puede ser cualquier expresión evaluable en ese momento.

anchura : real . var area. 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. 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 .

devuelve un resultado en el nombre de la funció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 15 . 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.Concepto de Subalgoritmo Acciones y Funciones Acción o Procedimiento: Subalgoritmo que realiza una tarea específica y que puede ser definido con 0. según el valor de éstos.

potencia := resultado ffuncion # potencia escribe(‘Escribe la base y el exponente : ‘).z).3).resultado : entero fvar resultado := 1.y.z).Concepto de Subalgoritmo. Función ejemplo algoritmo : Ejemplo # Ejemplo de Función var x.y). z := potencia(5. z := potencia(x. escribelin(‘Las solución es ‘.exponente:entero) retorna entero # Calcula la potencia de un número entero var i. falgoritmo. escribelin(‘La solución es ‘.y). para i := 1 hasta exponente hacer resultado := resultado*base fpara .z : entero fvar funcion potencia(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 16 . lee(x.

por ello. 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 . 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. por tanto. sólo disponible durante el funcionamiento del mismo Variable Global: variable declarada en el programa principal y.Ámbito de un identificador Variable Local: variable declarada dentro de un subprograma y.

Efectos Laterales. 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('La suma es' . leelin(Numero1). Mayor := NumMayor(Numero1.Numero2). Mayor. Resultado:=Numero1+Numero2. Mayor).Resultado). falgoritmo. leelin(Numero2). Resultado:entero fvar funcion NumMayor (n1. Ejemplo.n2:entero) retorna entero si (n1>n2) entonces Resultado:=n1 sino Resultado:=n2 fsi. algoritmo: efecto_lateral var Numero1. escribelin('El mayor es '.Numero2. NumMayor:=Resultado ffuncion Resultado:=0.

Un identificador se puede utilizar en el programa en el que está declarado y en todos los subprogramas de él 2. 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.Á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. (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 .

. faccion #A ámbito de c ámbito de y ámbito de m ámbito de w accion C (var letra : caracter) var c : caracter fvar . faccion #B . n : entero fvar accion B (w : real) var p. q : entero fvar . falgoritmo..... 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 . y : real fvar accion A (var x : real ) var m... faccion #C ..Ámbito de un identificador (3) algoritmo Ejemplo var x.

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 .

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). Ejemplo.

Ejemplo.Recursividad (4). escribe(l).') entonces escribelin(). algoritmo : Recursividad var letra : caracter fvar accion alreves(l : caracter ) si (l = '. 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 . alreves(letra). escribe(letra) falgoritmo. alreves(l). sino lee(l). fsi faccion escribe('Introduce una palabra o frase terminada en punto : '). lee(letra).

Sign up to vote on this title
UsefulNot useful