PROGRAMACIÓN MODULAR Lic. Gladys Chuquimia ¿En qué consiste la programación modular? S M u O b D p U r L o O b S l e m a s Elaborado por Lic. Gladys Chuquimia Características Permite resolver problemas dividiéndolo en subproblemas más sencillos de resolver mediante el diseño descendente. Los módulos deben tener alta cohesión y mínimo acoplamiento. PROBLEMA Subproblema_1 Subproblema_1_1 Subproblema_2 Subproblema_1_2 Elaborado por Lic. Gladys Chuquimia Subproblema_N Tipos de Módulos Procedimientos Elaborado por Lic. Gladys Chuquimia Funciones Funciones Devuelve siempre un solo valor. Paso de parámetros por valor Elaborado por Lic. Gladys Chuquimia En diagrama de flujo Elaborado por Lic. Gladys Chuquimia Invocando una función Tome en cuenta que siempre devuelve un valor, por tanto: Asignar el valor a una variable. Realizar operaciones con el valor. Imprimir el valor Elaborado por Lic. Gladys Chuquimia Declaraciones en Lenguaje C Tipo_dato_devuelto nombre_funcion (tipo v1, tipo vn) { //Cuerpo del subprograma return val; //Devuelve valor que debe pertenecer al mismo // tipo de dato devuelto. } Elaborado por Lic. Gladys Chuquimia Elaboración de un programa sin emplear la programación modular Diseñar un programa para encontrar el factorial de un número entero positivo. N, número entero positivo El factorial de N Elaborado por Lic. Gladys Chuquimia #include “stdio.h” #include “conio.h” void main() { int n, fac, i; clrscr(); do{ printf(“Digite un número entero positivo”); scanf(“%d”,&n); } while (n <0); fac = 1; for(i=1; i<=n;i++) { fac = fac * i; } printf(“El factorial es: %d”, fac); getch(); } Elaborado por Lic. Gladys Chuquimia #include “iostream.h” #include “conio.h” void main() { int n, fac, i; clrscr(); do{ cout <<“Digite un número entero positivo”; cin >> n; } while (n <0); fac = 1; for(i=1; i<=n; i++) { fac = fac * i; } cout <<“El factorial es:” << fac; getch(); } Elaborado por Lic. Gladys Chuquimia ANALISIS: Trabajando con Procesos bien definidos Encontrar el factorial de un # Leer un número N (>0) Encontrar el factorial Elaborado por Lic. Gladys Chuquimia Mostrar el resultado Codificando en Lenguaje C int leenum ( ) { int n; do{ cin >> n; } while (n <= 0 ); return n; } Elaborado por Lic. Gladys Chuquimia Diseñando la función factorial Siempre devuelve UN VALOR Llamada a la función Elaborado por Lic. Gladys Chuquimia Codificando en Lenguaje C unsigned long int facto (int n) { unsigned long int fac; int i; fac = 1; for(i = 1; i <= n ;i++ ) fac = fac * i; return fac; } Elaborado por Lic. Gladys Chuquimia Llamando al programa principal en lenguaje C void main ( ) { int N; cout <<“Digite un número entero positivo”; N = leenum ( ); //Llamada a la función leenum cout << “El factorial de: ”<<N<<“ es:”<<factorial(N); } Elaborado por Lic. Gladys Chuquimia Inclusión de cabeceras y Prototipos #include <iostream.h> #include <conio.h> //Prototipos int leenum ( ); unsigned long int facto (int n); //Cuerpo de los módulos int leenum ( ) {…. } //Todos los cuerpos de módulos void main ( ) //Todo el programa principal Elaborado por Lic. Gladys Chuquimia El programa: facto.cpp #include <iostream.h> #include <conio.h> //Prototipos int leenum ( ); unsigned long int facto (int n); //Cuerpo de los módulos int leenum ( ) { int n; do{ cin >> n; Elaborado por Lic. Gladys Chuquimia } while (n <= 0 ); return n; } unsigned long int facto (int n) { unsigned long int fac; int i; fac = 1; for(i = 1; i <= n ;i++ ) fac = fac * i; return fac; } void main ( ) { int N; cout <<“Digite un número entero positivo”; N = leenum ( ); Elaborado por Lic. Gladys Chuquimia cout << “El factorial de: ”<<N<<“ es:”<<factorial(N); getch(); } Elaborado por Lic. Gladys Chuquimia Ejercicio Evaluar la siguiente función: F(a, b) = a! + b! Ejemplo: Si a = 3 y b = 5 Æ Salida es 126 (3! + 5!) Elaborado por Lic. Gladys Chuquimia ANALISIS: Trabajando con Procesos bien definidos F(a,b) Leer un número (>0) a, b Calcular la función Encontrar el factorial Elaborado por Lic. Gladys Chuquimia Mostrar el resultado De manera tradicional sería: Elaborado por Lic. Gladys Chuquimia Con módulos todo se simplifica: int leenum ( ) { int n; do{ cin >> n; } while (n <= 0 ); return n; } Elaborado por Lic. Gladys Chuquimia Contamos con la función factorial unsigned long int facto (int n) { unsigned long int fac; int i; fac = 1; for(i = 1; i <= n ;i++ ) fac = fac * i; return fac; } Siempre devuelve UN VALOR Elaborado por Lic. Gladys Chuquimia El programa principal, es: void main ( ) { int a, b; unsigned long int fa, fb, r; cout <<“A : ”; a = leenum ( ); cout <<“B : ”; b = leenum ( ); fa = facto (a ); fb = facto (b ); r = fa + fb ; cout <<“Resultado: ”<<r; getch(); } Elaborado por Lic. Gladys Chuquimia Elaborado por Lic. Gladys Chuquimia