0% encontró este documento útil (0 votos)
40 vistas7 páginas

Programación Modular y Modularización

El documento describe los conceptos de programación modular, incluyendo dividir un problema en módulos funcionales más pequeños, el paso de parámetros entre módulos, y las ventajas de la modularidad como un código más fácil de depurar y reutilizable. Se proporcionan ejemplos de cómo dividir un problema en módulos y pasar parámetros por valor y referencia entre ellos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
40 vistas7 páginas

Programación Modular y Modularización

El documento describe los conceptos de programación modular, incluyendo dividir un problema en módulos funcionales más pequeños, el paso de parámetros entre módulos, y las ventajas de la modularidad como un código más fácil de depurar y reutilizable. Se proporcionan ejemplos de cómo dividir un problema en módulos y pasar parámetros por valor y referencia entre ellos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Jorge Tancara Aguilar UCB 1-2019

PROGRAMACIÓN I
MSc. Jorge Tancara Aguilar
DOCUMENTO 1

PROGRAMACIÓN MODULAR
Es una técnica que permite “resolver problemas grandes” a partir de la solución de “pequeños
nuevos problemas”.

MODULARIZAR

Es el proceso de dividir un problema en pequeños nuevos problemas.

PROFUNDIDAD DE LA MODULARIZACIÓN (límite de la modularidad)

El proceso de modularización debe detenerse, cuando los módulos sean “funcionales”

MÓDULO

Es un trozo de programa que puede ser visto como un programa independiente, que tendrá su
propio inicio y su propio final y puede ser invocado una o más veces.

MÓDULO FUNCIONAL

Es aquel módulo altamente cohesionado y mínimamente acoplado

UNA ESTRATEGIA DE MODULARIZACIÓN

“Desarrollaremos normalmente la solución de un problema, pero


tomando en cuenta lo siguiente: En el momento en que aparezca un
caso problemático sin importar su complejidad, a este le daremos
un nombre asociándole los parámetros necesarios (módulo),
asumiendo que ya existe o que ya está resuelto, continuaremos con
la programación la solución, posteriormente luego de finalizado el
problema, según un orden definido o arbitrario programaremos todo
los módulos que hubiéramos asumido como existentes, al final la
integración de estos nos dará la solución del problema”.

1
Jorge Tancara Aguilar UCB 1-2019

VENTAJAS DE LA MODULARIZACIÓN

a) Más fácil de depurar

El depurar programas “grandes”, puede ser muy complejo y si estos no tienen


enfoque modular, muchas veces puede ser más factible repetir la programación
total, por el contrario, si están desarrollado con enfoque modular la búsqueda y la
corrección de errores será mucho más simple por que los errores estarán en los
módulos que son pequeños trozos de programa que realizar trabajos bien definidos
y conocidos.

b) Código reutilizable

Código modular permite a los programadores fácilmente reutilizar código. Si las


tareas particulares se seccionaron a ciertas funciones o clases, esto significa que el
programador puede reutilizar ese código particular cada vez que ella necesita para
realizar esa tarea otra vez. Si el código no está organizado en partes discretas,
entonces es más difícil (o imposible) de referencia, separar o ejecutar ese código en
otros contextos de programación.

c) Trabajo en equipo

Gracias a la modularidad, es posible dividir un problema en varias partes las cuales


pueden ser desarrolladas por diferentes personas.

2
Jorge Tancara Aguilar UCB 1-2019

PASE DE PARAMETROS

La programación modular se caracteriza por el uso frecuente de funciones (módulos), donde


las funciones pueden recibir parámetros que son considerados datos de entrada al módulo o
función.

Formato general de una función o módulo:

tipo nombre (parámetros){

} Parametros de llegada o
receptoras
Ejemplo

int sumar(int x, int y){


int s;
s = x + y; Valor devuelto
return s;
}

Ahora desde otro lugar del programa llamamos a la función:

#include <iostream>
using namespace std;
void sumar(int, int);
Parámetros
int main(int argc, char *argv[]) {
enviados
int a=5,b=6;
int r = sumar(a, b)
cout << r;
return 0;
}

Existen dos formas de pasar parámetros: por valor y por referencia.

PASE DE PARAMETROS POR VALOR

Se emplea esta forma cuando se desea pasar datos que pueden ser constantes o variables, los
parámetros recibidos en el módulo llamado pueden cambiar de valor y estos no afectarán a los
parámetros enviados, en términos simples es enviar información sin preocuparnos de lo que
ocurra con ellas.

3
Jorge Tancara Aguilar UCB 1-2019

PASE DE PARAMETROS POR REFERENCIA

Necesariamente los parámetros enviados deben ser variables (nunca constantes como los
siguientes: 123, “abc”); La característica principal de esta forma de pasar parámetros es que:
“Todo lo que suceda con las variables receptoras dentro la función llamada, afectarán
directamente a las variables enviadas durante la llamada”.

Para pasar parámetros por referencia se requiere utilizar el concepto de “Puntero o


apuntador”.

PUNTEROS O APUNTADORES

Las variables puntero o apuntadores se caracterizan por ser declarados con un asterisco por
delante, de la siguiente manera:
tipo *variable;
Ejemplos:
int *contador;
float *uno;

Estas variables tienen la capacidad de recibir direcciones de memoria, correspondientes a


otras variables de la RAM. Para enviar la dirección de memoria de alguna variable, se debe
anteponer al nombre el carácter ampersand (&).
Ejemplo:
sumador(&var_enviada);
Invoco a la función sumador y como parámetro le envío la dirección de memoria de la variable
var_enviada, está debe llegar a una función con la siguiente forma:
tipo sumador(int *var_puntero).

4
Jorge Tancara Aguilar UCB 1-2019

Ejemplos:
1. Reciba un número y determine si es primo, aplique el pase de parámetros por valor.
Solución:
#include <iostream>
using namespace std;
int getLeer();
bool getEsPrimo(int);
int getCDE(int);
int main(int argc, char *argv[]) {
int a;
a=getLeer();
if(getEsPrimo(a)==true)
cout << a <<" SI ES PRIMO";
else
cout << a <<" NO ES PRIMO";
return 0;
}
int getLeer(){
int x;
cout << "Ingrese un número ";
cin >> x;
return x;
}
bool getEsPrimo(int t){
if(getCDE(t)==2)
return true;
else
return false;
}
int getCDE(int N){
int c=0, d;
for(d=1;d<=N;d++){
if(N%d==0){
c++;
}
}
return c;
}

5
Jorge Tancara Aguilar UCB 1-2019

2. Obtener la sumatoria de los factoriales, de los primeros N elementos primos de la serie


de Fibonacci. Aplique pase de parámetros por valor y por referencia.

Solución:

#include<iostream>
using namespace std;
void getLeer(int *);
void getSuma(int *, int);
bool getEsPrimo(int t);
int getCDE(int);
int getFact(int);

int main (int argc, char *argv[]) {


int n, s=0;
getLeer(&n);
getSuma(&s,n);
cout <<"Resultado: "<< s;
return 0;
}

void getLeer(int *nt){


cout << "Ingrese un numero: ";
cin >> *nt;
}

void getSuma(int *s, int nt){


int a=-1, b=1, f;
while(nt>0){
f = a+b;
if(getEsPrimo(f)==true){
*s=*s+getFact(f);
nt--;
}
a = b;
b = f;
}
}

6
Jorge Tancara Aguilar UCB 1-2019

bool getEsPrimo(int t){


if(getCDE(t)==2)
return true;
else
return false;
}

int getCDE(int N){


int c=0, d;
for(d=1;d<=N;d++){
if(N%d==0){
c++;
}
}
return c;
}

int getFact(int t){


int ft=1;
while(t>1){
ft=ft*t;
t--;
}
return ft;
}

También podría gustarte