Está en la página 1de 35

Programación Modular

Ing. Rudy Luis Manzaneda Veizaga


Definición de Programación Modular

 Se puede definir a la programación modular como aquella que usa el concepto


de dividir un problema complejo en subproblemas más pequeños, hasta
que estos sean fáciles de tratar y resolver por separado. Así la solución de los
subproblemas en conjunto dan como resultado la solución del problema
completo (López Román, 2003).
 Cuando se requieren resolver problemas más complejos, en los que el número
de instrucciones aumenta, existen técnicas que permiten resolverla de forma
eficiente estos problemas, facilitando al programador la construcción de la
solución.
Definición de Programación Modular
 Aplicando este principio a la hora de hacer un programa, entonces
habría que dividir el programa en “subprogramas” que realicen tareas
específicas.
Definición de Programación Modular

 Dividir la complejidad de un problema convirtiendo problemas complejos en


un conjunto de problemas más simples y por tanto más sencillos de
implementar.
 Reutilizar el código de un programa en cualquier momento de la ejecución
del mismo.
 La programación modular es la técnica de programación basada en la filosofía
del diseño descendente
Características de la Programación
Modular
 Facilita el diseño descendente
 Disminuye la complejidad del algoritmo
 Disminuye el tamaño total del programa
 Reusabilidad: ahorro de tiempo de programación

Problema en términos
de la solución general

Módulos que ejecuten


Módulos más pequeños tareas o funciones
específicas
Características de la Programación
Modular
 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)

Problema en términos
de la solución general

Módulos que ejecuten


Módulos más pequeños tareas o funciones
específicas
Características de la Programación
Modular
 Sin embargo, una descomposición desordenada puede producir un efecto
contrario que se puede contrarrestar reagrupando los componentes en
módulos o paquetes.
 La descomposición de un sistema en componentes individuales ayuda a
manejar la complejidad.
Diseño Descendente

 Técnica que permite diseñar la solución de un problema con base en la


modularizarían o segmentación, dándole un enfoque de arriba hacia abajo
(Top Down Design)

Subprograma
principal

Módulo I Módulo II

Módulo I.I Módulo I.II Módulo II.I


Acoplamiento
“La modularidad es la descomposición de un sistema en
un conjunto de módulos cohesivos y débilmente
acoplados.”
 Muchos aspectos de la modularizarían pueden ser comprendidos solo si se
examinan módulos en relación con otros
 En principio veremos el concepto de independencia. Diremos que dos módulos
son totalmente independientes si ambos pueden funcionar completamente sin
la presencia del otro. Esto implica que no existen interconexiones entre los
módulos, y que se tiene un valor cero en la escala de "dependencia".
 El concepto de independencia funcional es una derivación directa del de
modularidad y de los conceptos de abstracción y ocultamiento de la
información.
Cohesión
La cohesión es la medida cualitativa de cuan
estrechamente relacionados están los elementos
internos de un módulo.
 Este concepto representa la técnica principal que posee un diseñador para
mantener su diseño lo más semánticamente próximo al problema real, o
dominio de problema.
 Claramente los conceptos de cohesión y acoplamiento están íntimamente
relacionados. Un mayor grado de cohesión implica un menor de acoplamiento.
Maximizar el nivel de cohesión intramódular en todo el sistema resulta en una
minimización del acoplamiento intermódular.

UNA BUENA MODULARIDAD SE OBTIENE SI


EXISTE UNA ALTA COHESIÓN Y UN BAJO
ACOPLAMIENTO
Cohesión y Acoplamiento

Cohesión Acoplamiento
Contribuir a Mínima
la misma dependencia
tarea
Cohesión y Acoplamiento

 Alta cohesión: las instrucciones contenidas dentro de un


módulo deben contribuir a la ejecución de la misma tarea.
 Bajo acoplamiento: a dependencia entre módulos debe ser
mínima. Lo que implica que no debe haber dantos
compartidos entre los módulos (ver figura 4).
Por lo general se espera que cada módulo de código realice una
sola tarea; es decir, todos los componentes de un módulo
(sentencias) deben ir dirigidos a resolver un y sólo un problema. A
esta propiedad se le denomina cohesión y se dice que los módulos
deben ser cohesivos.
Cohesión y Acoplamiento
Modulo

 Es un segmento, rutina, subrutina, sub algoritmo o procedimiento que puede


ser definido dentro de un algoritmo mayor con el propósito de ejecutar una
tarea específica, pudiendo ser llamado o invocado desde el módulo principal
cuando se requiera.
Tipos de Módulos
 Según su función dentro del programa
a) Programa o módulo principal b) Módulos o módulos secundários
 Según su uso
 A) Funciones devuelven un valor (evaluación de la función)
 B) Procedimientos Realizan tareas pero no devuelven ningún valor directamente
 Según los mecanismos de activación
 Invocados por referencia
 Invocados mediante interrupción
 Según el Camino de Control
 Módulos Convencionales Única entrada y única Salida
 Módulos reentrantes Pueden ser usados mas de una tarea recurrente
Modulo Principal y Secundarios

 Modulo Principal
 El papel más importante del programa principal (main()) es coordinar a las otras
funciones mediante llamadas o invocaciones, es la primer función llamada por el
compilador.
 Módulos Secundarios
 Es un subprograma que realiza una tarea específica que puede o no recibir valores
(parámetros).
 En Java podemos devolver cualquier tipo de datos escalares (puntero, tipo
numérico y el tipo carácter o en su caso regresar un valor nulo que llamaremos
nada o ninguno). Asimismo, no se pueden devolver arreglos ni estructuras.
Módulos
static int esPrimo(int n) public static void main(String[] args) {
{
int i=1,cont=0,c; int[] numeros = {11, 19, 20, 50, 61, 100};
while(cont<=n) { for (int i = 0; i < numeros.length; i++) {
i++; c=0; if (esPrimo(numeros[i])) {
for(int k=1;k<=i;k++) System.out.println("El número " + numeros[i] + " es primo");
} else {
if (i%k==0) c=c+1; System.out.println("El número " + numeros[i] + " no es primo");
if (c==2) cont++; }
} }
return (i);
}
}
Funciones

 Cuando existe un cálculo que será usado de manera repetida a lo


largo del programa en distintos momentos se implementan funciones que el
usuario define. Una función es muy parecida a los módulos, con la
diferencia de que sólo devuelve un valor de un tipo de dato simple.
 Son procedimientos con características peculiares: a excepción de un
parámetro de salida, todos los demás son de entrada. El parámetro de salida
sirve para albergar el valor devuelto por la función.
Ventajas de las Funciones

 Los programas son más sencillos de implementar y corregir, puesto que


son tareas básicas compuestas de unas pocas líneas de instrucciones.
 Fomenta la reutilización.
 Evitar la repetición de código, ya que agrupar código en forma de funciones
permite que se ejecute dicho código desde distintas posiciones en un
programa, simplemente llamando dicha función.
 Se puede llamar a una función desde diferentes partes de un programa.
Funciones
Procedimientos

 Sirven para definir partes de un programa mediante la


asociación de un identificador. Posteriormente dichas
partes se pueden activar utilizando sentencias de
llamada.
 Un procedimiento es pues un algoritmo diseñado de tal
modo que es susceptible de ser llamado por otros
algoritmos que, a su vez, pueden ser procedimientos
 La llamada a un procedimiento se realiza escribiendo
su nombre seguido de las expresiones sobre las que
deseemos que trabaje. Estas van encerradas entre
paréntesis y en el orden en que han sido especificadas
en el procedimiento llamado.
Parametros

 Los parámetros son tanto las variables usadas en la


definición del procedimiento como los valores
utilizados en la llamada.
 Entrada: son aquellos que se utilizan para aportar datos al
procedimiento.
 Salida: son aquellos que se utilizan para exportar datos
desde el procedimiento.
Pasos de Parámetros (comunicación)

 Entre los módulos que componen la estructura completa de un problema, se


establece una serie de comunicaciones a través de determinadas interfaces
que permiten el paso de información de un módulo a otro así como la
trasferencia del control de la ejecución del programa.
 Un método puede aceptar información para usarla en su cuerpo de
sentencias. Esta información es suministrada en forma de literales, variables
pasadas al método a través de su cabecera y cada uno de estos elementos de
información se denomina parámetro.
Pasos de Parámetros (comunicación)
La comunicación entre los distintos módulos
permite el paso de información y la trasferencia
de control de la ejecución del programa

Parámetros
Valor que se pasa cuando un método
es invocado
En la
Formales definición del
método
Parámetros
En las
Actuales invocaciones
al método
Paso de Parametros

 Por valor
 Recibe una copia del valor que se le transfiere
 La variable original no cambia de valor
 Por referencia
 Se pasa la identificación de la zona de memoria donde
se almacena el valor
 Al cambiar un valor pasado por referencia se manipula
el mismo valor que se utiliza fuera
Paso de parámetros por valor

 En este caso el método recibe una copia del valor que se le pasa. La variable
original (parámetro actual) no cambia de valor, independientemente de que
en el método se cambie el contenido del parámetro formal.
Paso de parámetros por Referencia

 En el paso por referencia no se pasa una copia del valor sino la identificación
de la zona de memoria donde se almacena dicho valor. Por esta razón al
trabajar dentro del módulo con la entidad pasada por referencia se está
manipulando el mismo valor que se utiliza fuera.
 Para efectos prácticos si se realiza una modificación de ese valor dentro del
módulo, la modificación se mantiene al salir del mismo y la diferencia con el
paso por valor, es que el que el módulo maneja una copia del valor original, y
las modificaciones realizadas dentro del método no afectan a la variable
externa.
Paso de parámetros por Referencia
 Se define a la variable X en el módulo principal, la
cual tiene su contenido en la memoria, y se le coloca
0.

Variable
Variable Contenido
Contenido
X 0

 Cuando se llama al Módulo Cambiar, se conecta X y Y


vía parámetro por referencia, lo que hace que sean
sinónimos, es decir, que Y utilice la misma dirección
de memoria que X.

Variable
X Contenido
Variable Contenido
0
Y
Paso de parámetros por Referencia

 Cuando Y se le colca 1 ¿qué le pasa a X?

Variable
X Contenido
Variable Contenido
1
Y
 A X le pasa lo mismo que le sucede a Y; es
decir, a Y se le coloca 1 e indirectamente le
sucede lo mismo a X, porque manejan el
mismo contenido en la memoria (López
Román, 2003).
Ventajas de la Modularización

 Programas más sencillos de implementar y


corregir
 Fomenta la reutilización
 Evita repetición de código
 Se pueden llamar funciones desde diferentes
partes de un programa
 Se pueden crear programas partiendo de
funciones estandarizadas que ejecuten tareas
específicas
Alcance de Variables

 Cuando se consideran varios módulos de software y no un solo programa


principal, se pueden declarar variables tanto en el contexto global del
algoritmo, como de manera local en cada módulo a lo que se le conoce como
alcance de las variables, en otras palabras esto permite identificar la zona del
programa donde una variable es accesible “conocida”.
Alcance de Variables

Zona del programa donde la variable es


accesible “conocida”
Variables

Globales Locales
Alcance de Variables
 Variables globales

Algoritmo GLOBALES
num: Entero
 
Módulo principal
num ← 0
Todos los módulos
Llamar resultado
reconocen la variable
Escribir num
num como global y
Fin Módulo principal
la pueden cambiar
 
Módulo resultado
num ←1
El resultado al Fin Módulo resultado
escribir el  
valor de num
sería 1
Variable Globales

 Son las que son accesibles desde cualquier punto del programa y se pueden
usar desde cualquier módulo o subprograma, esto lleva a considerar que la
variable puede usarse en cualquier parte del programa y su valor se puede
alterar incontroladamente, y si posteriormente es necesario usar la variable
en otra parte del programa con su valor original, se tendrá un error.
Variables Locales

 Las variables locales sólo existen en un ámbito determinado del programa,


por ejemplo en un subprograma o en un bloque de sentencias. Solo pueden
ser utilizadas en el módulo donde fueron definidas

También podría gustarte