unidad 5 - dra. mireya tovar vidalmtovar.cs.buap.mx/doc/unidad5.pdf · unidad 5 diseño modular en...
TRANSCRIPT
![Page 1: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/1.jpg)
Unidad 5
Diseño modular
![Page 2: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/2.jpg)
![Page 3: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/3.jpg)
En la programación modular, el problemacomplejo es dividido en subproblemas máspequeños o más fáciles de resolver.
Cada problema se resuelve por una función omodulo. Una vez que cada modulo resuelvesu tarea, el problema complejo ha sidoresuelto en su totalidad.
Si algún subproblema, aún es demasiadocomplejo, éste es dividido a su vez, ensubproblemas, y así sucesivamente
![Page 4: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/4.jpg)
Conceptos de módulo
Es un conjunto de instrucciones o sentencias que resuelvenuna tarea especifica, al cual se hace referencia por medio deun nombre. Éste puede invocarse varias veces en unprograma.
Es un proceso con cierto grado de independencias delmodulo principal (programa principal).
Es un subprograma que resuelve una parte del problema.
El concepto de modulo tiene varias acepciones, dependiendodel lenguaje de programación: subrutinas (Basic y Fortran),procedimientos y funciones (Pascal y Delphi, Ada, etc.),funciones o métodos (C++, Java y C#)
![Page 5: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/5.jpg)
Declaración de un módulo
Tiene un tipo de retorno
Tiene un nombre o identificador.
Puede tener o no lista de parámetros (elementos de
comunicación con el modulo principal)
Tiene un cuerpo o conjunto de instrucciones que
resuelven una tarea especifica.
Pueden o no devolver un valor del algún tipo de
dato básico, estructurado o definido por el usuario.
![Page 6: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/6.jpg)
Sintaxis
[ Tipo ] Nombre del modulo (tipo param1, tipo param2,…, tipo paramn)
Inicio
Sentencia 1;
Sentencia 2;
…
Sentencia n;
[ Devolver ( expresión ) ]
FinModulo
Opcional: procedimiento
Obligatorio: función
Opcional: procedimiento
Obligatorio: función
![Page 7: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/7.jpg)
Ventajas de la modularidad
Disminuye la complejidad del problema a
resolver.
Aumenta la legibilidad y confiabilidad
Disminuye costos computacionales.
Se obtiene un mejor control del proyecto.
Se pueden agregar nuevos módulos.
Facilita el mantenimiento
![Page 8: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/8.jpg)
Fases para la modularización
1) Se realiza un análisis del problema considerando las
especificaciones del mismo (comprensión del problema)
2) Se forma un primer modulo enunciando el problema en términos
de la solución a éste.
3) Se toma este módulo y se busca la forma de dividirlo en otro
módulos más pequeños que ejecuten tareas o funciones
especificas.
4) Se repite el paso 3) para cada módulo nuevo definido, hasta llegar
a un nivel de detalle adecuado, es decir, hasta que cada módulo
ejecute una tarea especifica, que este claramente definida y que el
diseño de la lógica del mismo resulte fácil (utilizando
pseudocódigo).
![Page 9: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/9.jpg)
4) Se realizan pruebas de escritorio parciales a cada
módulo, para asegurarse que éstos realizan
correctamente su tarea especifica.
5) Se realiza una prueba de integración en la que se
consideran todos los módulos, así como el módulo
principal.
6) Si es el caso, se codifican los módulos en un lenguaje
de programación, iniciando desde los módulos del nivel
más inferior en la estructura jerárquica de la solución.
![Page 10: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/10.jpg)
Variables globales, locales y
parámetros Las variables globales son aquellas que se definen o declaran
fuera del módulo principal y tienen efecto en todos los módulos.
Esto es, una variable global puede ser modificada en cualquier
módulo incluido el principal.
Las variables locales son las que se definen dentro de un módulo,
y son distintas a las que se definen en otros módulos, a pesar de
que pueden tener el mismo nombre. El contexto de estas variables
es el módulo donde se declaran, fuera de éstos no son reconocidas
o válidas.
Los parámetros son un mecanismo de comunicación o intercambio
de información entre los módulos, inclusive el módulo principal. Se
relacionan de acuerdo a su posición y el tipo de dato asociado.
![Page 11: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/11.jpg)
Algoritmo: Nombre
/* Descripción del algoritmo
Var de Entrada
Var de Salida
*/
Var Globales
/*Módulos*/
[ Tipo ] Nombre del modulo (tipo param1, tipo param2,…, tipo paramn)
Inicio
Var locales
Sentencia 1;
…
Sentencia n;
[ Devolver ( expresión ) ]
FinModulo
NombreAlgoritmo(Principal)
Inicio
Var locales
Sentencia 1;
…
Sentencia n;
FinModulo
![Page 12: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/12.jpg)
Módulos predefinidos por el sistema
(funciones) Existen algunos módulos definidos por defecto en el
sistema, los cuales se pueden clasificar dependiendo de
la función de éstos.
Para el uso de estos módulos, solamente debemos
invocarlos mediante su nombre y parámetros,
agregando previamente la librería donde se encuentran
definidos.
La librería contiene a un conjunto de módulos que se
pueden utilizar.
Estos módulos pueden ser: matemáticos, carácter,
cadena, etc.
![Page 13: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/13.jpg)
Ejemplo: la librería matemática contiene los
siguientes módulos entre otros:Función Descripción
exp(x) exponencial de x, x es entero o real
ln(x) logaritmo neperiano de x, x es
entero o real
raiz2(x) raíz cuadrada de x, x es entero o
real
seno(x) Seno de x, x es entero o real
redondeo(x) redondea x, x es real
![Page 14: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/14.jpg)
Ejemplo
Elaborar un algoritmo modular para calcular el área,
perímetro y diámetro de una circunferencia de radio R.
Paso 1. Se consideran los datos de entrada, salida y
procesos para realizar los cálculos que resuelven el
problema.
Datos de entrada: Radio R
Datos de salida:
Area = Pi*R*R
Perímetro= 2*Pi*R
Diámetro = 2*R
![Page 15: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/15.jpg)
Paso 2.
Circunferencia
(Principal)
Área Perímetro Diámetro
Circunferencia
(Principal)
Paso 3.
![Page 16: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/16.jpg)
Real Area (real R)// declaración del módulo
Inicio
Real a
a=Pi*R*R
Regresar( a)
FinModulo
Real Perimetro(real R)
Inicio
Real p
p=2*Pi*R
Regresar( p)
FinModulo
Real Diametro(real R)
Inicio
Real d
d=2*R
Regresar( d)
FinModulo
Circunferencia (Principal)
Inicio
Real radio, A,P,D
Escribir “Ingrese radio:”
Leer radio
A= Area( radio) /* llamada del modulo */
P= Perimetro( radio)
D= Diametro( radio)
Escribir “ El area es = “, A
Escribir “ El perimetro es = “, P
Escribir “ El Diametro es = “, D
FinModulo
Paso 4: Diseñar la lógica de programación
de cada modulo, iniciando desde los módulos
de nivel más inferior.
![Page 17: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/17.jpg)
Ejercicio
Algoritmo modular para calcular el coeficiente
binomial definido como:
C(n, k ) = n! / k! * (n – k )!
![Page 18: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/18.jpg)
Coeficiente
Binomial (Principal)
CoefBin
Factorial
![Page 19: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/19.jpg)
Real Factorial (real n)
Inicio
Real f=1;
Entero i
Para i= 1 hasta n incrementos 1 hacer
f = f *i
finpara
regresar(f)
FinModulo
Real CoefBin( real n, real k)
Inicio
Regresar( factorial(n) / (factorial(k)* factorial (n-k))
FinModulo
CoeficienteBinomial( Principal )
Inicio
Real n, k
Leer n, k
Escribir “ Coeficiente Binomial =“, CoefBin(n, k )
FinModulo
![Page 20: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/20.jpg)
Variables locales
Son las que se declaran dentro de un módulo
(son locales a dicho modulo) y sólo se
pueden utilizar en el módulo en el que se han
declarado.
Se pueden declarar variables con el mismo
nombre en distintos módulos, a la hora de
ser utilizadas cada módulo podrá utilizar su
variable local, nunca una variable declarada
en otro módulo, aunque se llame igual.
![Page 21: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/21.jpg)
Ejemplo
![Page 22: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/22.jpg)
Variables globales
Se declaran de forma que puedan ser utilizadas por
todos los módulos.
La forma de declarar variables globales depende del
lenguaje de programación utilizado; en algunos casos
las variables globales se declaran fuera de cualquiera de
los módulos del programa, en otros se declaran dentro
de un módulo indicando de forma explícita que son
globales.
En cualquier caso, una variable global puede ser
utilizada (consultada y/o modificada) desde cualquier
módulo del programa.
![Page 23: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/23.jpg)
![Page 24: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/24.jpg)
Una variable global puede tener el mismo nombre que alguna de las
variables locales de alguno de los módulos (variable „A‟).
En los módulos donde no se ha declarado una variable A, siempre que se
haga referencia a dicha variable se estará accediendo a la variable global.
En el módulo 1, donde existe una variable local „A‟ si se hace referencia a
dicha variable, lo habitual, es que se acceda a la variable local.
Para acceder a la variable global dentro del módulo 1 habrá que utilizar un
mecanismo que indique de forma explícita que lo que se desea es acceder
a la variable global, este mecanismo dependerá del lenguaje de
programación empleado.
En cualquier caso y para evitar confusiones es recomendable que cuando
se empleen variables globales, sus nombres no coincidan con los nombres
de las variables locales de ninguno de los módulos.
![Page 25: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/25.jpg)
Acoplamiento común, se da cuando varios módulos
pueden acceder a una misma área de datos.
![Page 26: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/26.jpg)
En el primer caso los tres módulos acceden a la misma
área de memoria global donde se encuentra la variable
„A‟, el inconveniente de esto podría estar en que si por
ejemplo el módulo 2 modifica la variable „A‟ dejando en
ella un valor erróneo, el módulo 3 podría no funcionar
correctamente.
En el segundo caso, el módulo 1 (modulo principal) tiene
el control sobre la variable „A‟, y es este módulo el que
pasa al resto dicha variable como argumento, de esta
forma al módulo 3 no le afecta en nada lo que el módulo
2 pueda hacer con la variable „A‟ (eliminación de
acoplamiento común).
![Page 27: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/27.jpg)
Tipos de parámetros
Por Valor. Cuando se llama a un módulo pasándole un argumento por
valor el módulo llamado recibe una copia del valor del argumento, de forma
que si dicha copia es modificada, el argumento original del módulo llamador
no sufre ningún cambio.
Una característica de los paramentos por valor es que éstos copian sus valores en los
argumentos de los módulos. Al finalizar la llamada del módulo, los parámetros no se ven
modificados; no alteran su valor.
Por referencia: son variables; es copia de la referencia o localidad de
memoria donde se encuentran los datos que se envían como argumentos
en la invocación. La característica de estos parámetros es que son
modificados dentro del módulo en el cual fueron invocados. Con el uso de
parámetros por referencia, un módulo puede devolver más de un valor al
módulo principal o a los módulos que lo invoquen.
![Page 28: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/28.jpg)
EjemploPor valor Por referencia
Ejemplo (Entero x por valor)
Inicio
x = x +1
FinModulo
Modulo(Principal)
…
Entero a
a = 2
…
/*Llamada a „Ejemplo‟ */
Ejemplo(a)
/* en este punto la variable ‘a‟
vale „2‟ */
…
FinModulo
Ejemplo (Entero x por referencia)
Inicio
x = x +1
FinModulo
Modulo(Principal)
…
Entero a
a = 2
…
/*Llamada a „Ejemplo‟ */
Ejemplo(a)
/* en este punto la variable „a‟
vale ‘3’ */
…
FinModulo
![Page 29: Unidad 5 - Dra. Mireya Tovar Vidalmtovar.cs.buap.mx/doc/Unidad5.pdf · Unidad 5 Diseño modular En la programación modular, el problema complejo es dividido en subproblemas más](https://reader033.vdocuments.co/reader033/viewer/2022053007/5f0af4de7e708231d42e2b30/html5/thumbnails/29.jpg)
Bibliografía
Jesús Javier Rodríguez Sala. Introducción a
la programación: teoría y práctica
www.cmonkeys.net/blog/?p=14396