CULTURA NAZCA, presentación en aula para compartir
Programación modular
1. Programación modular (Lic. Menfy Morales)
Divide un problema complejo en problemas específicos, a esta división se le llama módulos, que es
un proceso específico. Utiliza distintos denominativos, programación descendente, divide y
vencerás, top-down.
Un diseño modular está estructurado de la siguiente manera:
Donde A es el programa principal, B, C y D son los subprogramas llamados módulos. Los módulos
pueden ser procedimientos o funciones dependiendo de sus entradas y salidas.
Se recomienda definir si un módulo es un procedimiento o es una función, esto depende de los
datos de entrada y los datos de salida.
Por lo tanto si se tienen los siguientes módulos, se define si es procedimiento o función dependiendo
de los datos de entrada y los datos de salida.
Se recomienda empezar definiendo primero si es función, caso contrario se define el procedimiento.
Ejercicio 1: Dado un lote de n número mostrar los dígitos extremos, el dígito menor y el digito mayor
de cada número del lote.
Por ejemplo: si n = 3 y el lote es: 54786, 97124, 37264
La salida: 5, 6 9, 4 3, 4 // dígitos extremos
4 1 2 // dígito menor
8 9 7 // dígito mayor
A
B C D
Entradas Salidas
Función 1, 2, 3, + 1
Procedimiento 0, 1, 2, 3, + 0, 1, 2, 3, +
A B C
D E F
Módulo Tipo Entradas Salidas
A Procedimiento 2 0
B Función 3 1
C Procedimiento 1 2
D Procedimiento 0 1
E Procedimiento 1 2
F Función 2 1
2. El ejemplo nos muestra los procesos específicos que da este programa y podemos definir los
módulos con las entradas y salidas a cada uno, para posteriormente definir los nombres: extre,
mayor, menor.
Se definen si los módulos son procedimientos o funciones.
Queda realizar el diseño modular.
Ahora usamos la técnica botton up para resolver cada módulo de abajo hacia arriba.
extre54786 5
6
mayor54786 8
menor54786 4
Módulo Tipo Entradas Salidas
extre Procedimiento 1 2
mayor Función 1 1
menor Función 1 1
lote
extre mayor menor
extre ( w, e1, e2)
e2 w % 10
cd |log(w)|+1
e1 |w/10^(cd-1)|
return
extre54786 5
6
Procedimiento “extre”
3. mayor( w )
dm 0
w < > 0
d w % 10
w | w / 10 |
d>dm
dm d
return ( dm )
VF
mayor54786 8
Función “mayor”
menor( w )
de 9
w < > 0
d w % 10
w | w / 10 |
d < de
de d
return ( de )
VF
menor54786 4
Función “menor”
4. Una vez desarrollados todos los módulos se procede a desarrollar el programa principal
Nota: Recordar que la función solo retorna un valor, en cambio los procedimientos definen sus
valores de salida al principio junto con los valores de entrada.
Las funciones que usan la mayoría de los lenguajes, son funciones predefinidas o funciones básicas
(sin, cos, sqrt y otros), pero las que definimos en el camino se llaman funciones definidas por el
usuario.
Los procedimientos utilizan parámetros (variables) de entrada y salida, estos pueden ser parámetros
por valor (solo pasan el valor y los datos originales se mantienen) o por referencia (pasan los datos
y los originales cambian). En este caso se están usando pase por valor.
Ejercicios:
1. Dado un lote de n números, rotar los dígitos extremos a la derecha, según muestra el ejemplo
Si n = 5 y el lote es: 2157, 1293, 426, 7895, 8354
La salida es: 2297, 123, 4896, 7355, 8154
En este caso se utilizan los siguientes módulos, extre, reem, y se describen de esta forma:
inicio
n
i 1, n
x
extre ( x, ei, ed )
dmay mayor ( x )
dmen menor ( x )
ei, ed
dmay
dmen
fin
extre2157 2
7
reem
1293
2
7
2297
5. 2. Resolver la siguiente sumatoria, para n términos:
12!
23!
25!
37!
311!
313!
417!
419!
423!
S = -------- - ------- + ------- + ------- - ------- - ------- - ------- + ------- + ------- +/-
11!
23!
13!
13!
25!
35!
25!
15!
15!
Puede usar los siguientes módulos, clásica, primo, facto, signo, subebaja, impar
3. Resolver la siguiente ecuación:
A B!
+ C D!
------------------
F!
Nota: solo puede usar el signo + y -, puede usar lo módulos, multi, expo, facto, divi