PDF de programación - 4. Programación Modular - Fundamentos de Programación I

Imágen de pdf 4. Programación Modular - Fundamentos de Programación I

4. Programación Modular - Fundamentos de Programación Igráfica de visualizaciones

Publicado el 3 de Marzo del 2020
1.000 visualizaciones desde el 3 de Marzo del 2020
636,7 KB
41 paginas
Creado hace 12a (26/10/2011)
Fundamentos de Programación I
Fundamentos de Programación I

4 Programación modular
4. Programación modular

Luís Rodríguez Baena ([email protected])

Universidad Pontificia de Salamanca (campus Madrid)
Escuela Superior de Ingeniería y Arquitectura

Introducción a la programación
modular
odu a

Es más fácil resolver un problema complejo cuando se divide en

partes manejables: técnica de divide y vencerás.
● En un programa monolítico la cantidad de variables utilizadas y caminos

que debe seguir el flujo de control hace imposible su correcta
comprensión.



Se dificulta la corrección de errores y el mantenimiento posterior del

programa.

La programación modular proporciona un método para plasmar el
La programación modular proporciona un método para plasmar el

uso de recursos abstractos y la programación descendente.

Consiste en descomponer un problema complejo en partes más

pequeñas: módulos subalgoritmos o subprogramas
pequeñas: módulos, subalgoritmos o subprogramas.

Cada módulo sería un programa normal pensado para ser integrado

en una aplicación mayor.

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

2

Introducción a la programación
modular (II)
)

odu a (

Un programa modular estaría compuesto de:

● Un programa principal, encargado de coordinar la ejecución.
● Una serie de módulos que resolverían cada una de la tareas concretas del

problema.

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

3

Introducción a la programación
modular (III)
)

odu a (

Ventajas.

j

● Facilidad para aprehender el problema.
● División del trabajo entre un equipo de programadores.

Si los módulos son independientes, cada programador del equipo de

p g

q p

p

,

desarrollo puede encargarse de uno.

El jefe del proyecto integrará los distintos módulos en la aplicación

principal.

● Facilidad de mantenimiento y corrección de errores
● Facilidad de mantenimiento y corrección de errores.

Si cada módulo cumple una tarea completa es más fácil detectar

donde se produce un error.

Si se necesita realizar una mejora, sólo habrá que modificar un

q

,

j

módulo.

● Reutilización del código.

Un módulo que realice una tarea determinada podrá utilizarse en

t
otro programa que precise de la misma tarea.

d l

t

i

i

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

4

Criterios de descomposición modular

Es necesario un compromiso entre el tamaño de los módulos y la

complejidad de la aplicación.
● Si un programa se descompone en demasiadas unidades, decrece la

efectividad.

Cuando el número de módulos se incrementa, decrece el esfuerzo para

realizarlos, pero aumenta el esfuerzo de integración y la carga en memoria.

Algunos criterios de descomposición (no válidos).
Descomposición po tamaño (50 líneas po mód lo)
● Descomposición por tamaño (50 líneas por módulo).
● Complejidad del módulo: niveles de anidamiento (menos de 7 niveles).

Independencia funcional.

● Un módulo debe realizar una única tarea y comunicarse lo menos

ód l d b

ú

l

posible con el resto de módulos.

l

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

5

Criterios de descomposición modular
(II)
(
)

Un módulo se debe dividir hasta que se consiga un nivel

g
mínimo aceptable de independencia funcional.

q

La independencia funcional se puede medir según dos

criterios:
criterios:
● Cohesión.

Mide la relación entre las partes internas de un módulo.
Todas deben estar encaminadas a realizar una única función.
Todas deben estar encaminadas a realizar una única función.

● Acoplamiento.

Mide la relación del módulo con el resto de los módulos.

o Debe comunicarse lo menos posible.
o Pocas veces se conseguirá un acoplamiento nulo.

Un módulo debe tener mucha cohesión y poco

acoplamiento.

p

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

6

Llamadas a módulos

Un programa modular contará con un programa principal y uno o varios

módulos
módulos.

El programa principal llama o invoca a los módulos, cediendo a éstos el

control del flujo del programa.

100

200

300

400

500

600

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

7

Llamadas a módulos (II)

Cuando se hace la llamada a un módulo se transfiere el

control a la primera línea del módulo llamado.
● El programa llamador queda en suspenso hasta que termina el

módulo llamado.

En algunos lenguajes no estructurados (COBOL) es posible entrar

por otra línea.

El módulo llamado carga en memoria su código y un

espacio para sus propias variables y estructuras.

i bl

i

i

Cuando el programa llamado termina, transfiere el

control a la instrucción siguiente a la llamada.
● Se pierde la información generada por el módulo a no se que se

g

produzca un intercambio de información entre el programa
llamador y el llamado.

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

8

Llamadas a módulos (III)

Durante su ejecución el programa llamado actúa como si se tratara

del programa principal
del programa principal.
● Puede realizar llamadas a otros módulos que funcionan de la misma

forma antes expuesta.

● El posible realizar llamadas a otros módulos: llamadas anidadas.
● Es posible llamarse a si mismo (recursividad).

¿Cómo se retorna a la instrucción dónde se ha hecho la llamada?

● La dirección de la línea donde se realiza la llamada y el estado de las variables

del programa llamador se almacena en una estructura de tipo pila: la pila de
llamadas (callstack).

p g

p p

p

Los datos salen de forma inversa a como han entrado.
Cuando acaba un módulo, el flujo de control retorna a la dirección de
memoria almacenada en la parte superior de la pila: la ultima que ha
entrado
entrado.

Se retorna en orden inverso al orden de llamada.
Cuando termina un programa y la pila de llamadas está vacía, el control

retorna el sistema operativo.

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

9

Llamadas a módulos (IV)

100

200

300

400

500

600

Pila de llamadas

600

500

400

100200300

Programa principal

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

10

Tipos de subprogramas

● Ejecutan una acción que puede o no modificar valores y puede o no
● Ejecutan una acción que puede o no modificar valores y puede o no

Procedimientos.

necesitar datos de entrada.

ImprimirFactura.
OrdenarLista.

● Su llamada sustituye a una tarea.

Funciones.

● Realizan una operación que siempre tiene como resultado un valor.

Factorial.
Potencia.
Máximo
Máximo.

en VB.NET

void).

Algunos lenguajes hacen esta distinción entre subprogramas.

● Su llamada sustituye a un valor.
● Procedure y Function en Pascal, procedimientos Sub y procedimientos Function

En algunos lenguajes no hacen esa distinción
ó

● En C, a todo se le denomina función, aunque algunas no devuelven nada (funciones

● En Java, que utiliza programación orientada a objetos, a todo se le denomina método

y forman parte del objeto.

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

11

Funciones

Realizan una tarea que siempre devuelve un valor

p
asociado a la propia llamada.
● Cuando se detecta la llamada a una función, el control del

q

programa se transfiera a la función.

● Cuando la función termina se retorna y la llamada es sustituida
En la instrucción de asignación y 1 + sen(45)…

por el valor que devuelve.

● Se evalúa la expresión de izquierda a derecha.
● Antes de evaluar la expresión, el control se transfiera a la

llamada a la función sen() con el valor 45.

● La función se ejecuta, termina y devuelve el valor del seno de 45
● La expresión evaluada (1+0.7071) se asigna a la variable y.

(0,7071) que sustituye a la llamada.

Universidad Pontificia de Salamanca (Campus Madrid)

Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011

12

Funciones (II)

Funciones matemáticas internas (predefinidas o intrínsecas) del lenguaje algorítmico UPSAM 2.0.

Significado

y

igual que 0 y menor que 1
Devuelve el coseno de x

Devuelve el valor absoluto de la expresión
numérica x

Devuelve el primer valor entero menor que
la expresión numérica x

Función
Función en C
abs(x)
fabs() en el archivo de cabecera math.h
aleatorio() Devuelve un número aleatorio real mayor o rand() y srand() en al archivo de cabecera stdlib.h
rand() y srand() en al archivo de cabecera stdlib.h
cos(x)
cos() en el archivo de cabecera math.h
entero(x)
ceil(), redondea al entero mayor más cercano y floor(),
redondea al entero menor más cercano, en el archivo de
cabecera math h ceil(2 6) es 3; ceil(-2 6) es 2;
cabecera math.h. ceil(2.6) es 3; ceil(-2.6) es ‐2;
floor(2.6) es 2; floor(-2.6) es ‐3.
exp() en el archivo de cabecera math.h
log() en el archivo de cabecera math.h
l
th h
log10() en el archivo de cabecera math.h
sqrt() en el archivo de cabecera math.h
sin() en el ar
  • Links de descarga
http://lwp-l.com/pdf17350

Comentarios de: 4. Programación Modular - Fundamentos de Programación I (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad