Programación Modular
Prof. Duwlian Montalti
Concepto de Programación Modular
La programación modular es una técnica que consiste en dividir un programa en
tareas y dar origen a la creación de pequeños programas llamados módulos,
subprogramas o subrutinas con la finalidad de simplificar la elaboración del mismo,
en donde cada modulo se codifica y se procesa de manera independiente, sin
importar los detalles de otros módulos.
En lenguaje C a cada modulo o subprograma se le conoce como función; en este
lenguaje se trabaja a base de funciones y, de manera general, los programas se
elaboran combinando funciones que el programador escribe y funciones
“predefinidas” disponibles en las bibliotecas de C.
Las ventajas de la programación modular son:
1. Facilita el diseño descendente.
2. Se simplifica un algoritmo complejo.
3. Cada modulo se puede elaborar de manera independiente, lo que permite trabajar
simultáneamente a varios programadores y con ello disminuir el tiempo de elaboración
del algoritmo.
4. La depuración se lleva acabo en cada modulo.
5. El mantenimiento es mas sencillo.
6. Creación de bibliotecas con módulos específicos.
Programa principal y funciones.
La base de la programación en C es la función, ya que constituye una parte fundamental
de la codificación en el proceso de solución de problemas. Un programa contiene una o
mas funciones en uno o mas archivos. Una de las funciones es la principal main() en
donde se inicia la ejecución de un programa. El resto de las funciones se llaman desde
main() y desde el interior de otras funciones.
Programa principal o función main().
El papel mas importante del programa principal es coordinar a las otras funciones
mediante llamadas o invocaciones.
Función.
Es un subprograma que realiza una tarea especifica que puede o no recibir valores
(parámetros). En C es posible regresar cualquier tipo de dato escalar (apuntadores. Tipos
numéricos y caracteres o no regresar ningún valor), no es posible regresar arreglos ni
estructuras.
Ámbito de las variables.
Variable local. Variable declarada en una determinada función, solo se encuentra
disponible durante el funcionamiento de la misma, es decir, esta en memoria cuando
dicha función esta activa.
Variable global. Variable declarada fuera de cualquier función y que puede ser utilizada
por las funciones que se encuentran después de dicha declaración.
Llamada o invocación de una función.
Para llamar a una función es necesario escribir el nombre o identificador de la
función y enseguida un par de paréntesis, que estarán vacíos en caso de que a
una función no se le pasen parámetros y tendrán información en caso de que
se le envíen parámetros.
Cómo se ejecuta un programa que contiene funciones
El compilador siempre inicia con la primera instrucción que encuentra en el
programa principal y continua ejecutándolo según la estructura de control del
programa; cuando encuentra la llamada a una función, este se traslada y
ejecuta el cuerpo de la función desde la primera instrucción hasta encontrar el
fin de la misma; cuando esto sucede el compilador regresa a la siguiente
instrucción que llamo a la función y continua de la misma manera.
Ubicación de una función en un programa.
Las funciones pueden ir antes o después del programa principal, pero si se
ubican después es necesario escribir el prototipo de la función antes del
programa principal. Una función puede que regrese un valor o que no regresse
nada (void).
Funciones en lenguaje C
Funciones
• Definición:
– Las funciones son los bloques de construcción básicos
de C. Dentro de ellas se da toda la actividad del
programa.
• Criterios para crearlas:
– Se usa la estrategia de “Dividir y Conquistar”, en otras
palabras, es realizar la partición de la tarea en subtareas
más fáciles de abordar.
– Todo problema se puede resolver con funciones o sin
ellas, pero su uso adecuado hace que el programa sea
más eficiente, fácil de leer y probar.
6
Funciones: ventajas
1.- Facilita el diseño descendente.
2.- Los procedimientos dentro de ellas se pueden ejecutar
varias veces.
3.- Facilita la división de tareas.
4.- Se pueden probar individualmente
5.- Con funciones apropiadamente diseñadas, es posible
ignorar como se realiza una tarea, sabiendo qué es lo
que hacen.
7
Funciones: Especificación formal
tipo nombre_funcion(lista de parámetros){
cuerpo de la función
}
• tipo : especifica el tipo de valor que devuelve la función.
Si no se especifica tipo, el compilador asume que es entero
(int).
• lista de parámetros : es la lista de nombres de
variables separados por comas con sus tipos asociados que
reciben los valores de los argumentos actuales de la
llamada a la función.
8
La sentencia return
– Fuerza la salida inmediata de la función en que se
encuentra.
– Se puede utilizar para devolver un valor.
9
Funciones
– Las funciones terminan su ejecución ya sea a través de
la ejecución de la última instrucción o utilizando la
sentencia return.
– Una función puede retornar valor sólo cuando el tipo de
retorno no es void.
– Las funciones que son de tipos distintos de void pueden
ser utilizadas como operandos en otras expresiones del
lenguaje.
10
Funciones: modos de uso
1.- Funciones diseñadas para realizar operaciones a
partir de sus argumentos y devolver un valor
basado en sus cálculos.
2.- Funciones que no reciben argumentos, realizan
un proceso y devuelven un valor .
3.- Funciones que no tienen argumentos ni valor de
retorno explícito, operan sobre el entorno de
variables globales o atributos del sistema
operativo.
11
Función main()
• Mediante la sentencia return, el programa puede
devolver un código de terminación al proceso de
llamada.
• El valor devuelto puede ser 0 que indica
terminación normal o un valor que identifica un
error detectado por el programa.
• El valor devuelto puede ser usado para ejecución
condicional de.
12
Variables locales y globales
• Variables Locales:
– Se declaran dentro de la función y sólo están
disponibles durante su ejecución.
– Se crean cuando se entra en ejecución una función y se
destruyen cuando se termina.
• Variables globales:
– Se declaran fuera de las funciones. Pueden ser
utilizadas por todas las funciones.
– Existen durante toda la vida del programa.
13
Argumentos de funciones
• Son variables locales conocidas como parámetros
formales y se utilizan como un medio para entregarle
información a la función.
• Los parámetros formales reciben sus valores iniciales
desde los parámetros reales, es decir desde los valores
que se les pasan a traveś de la llamada. Ejemplo:
Parámetro real (llamada)
main( ){ Parámetro formal (declaración)
imprimeEntero(5);
}
void imprimeEntero(int x){
printf(“%d\n”, x);/* x vale 5 */
}
14
Transferencia de Información
– por valor: copia el valor de un argumento de la
llamada en el parámetro formal de la función. Por lo
tanto, los cambios en los parámetros de la función no
afectan a las variables que se usan en la llamada.
– por referencia: se copia la dirección del argumento
en el parámetro. Los cambios hechos a los parámetros
afectan a las variables usadas en la llamada a la
función.
15
Ejemplo
Construya un programa que calcule el cuadrado de
los 10 primeros números enteros.
16
Solución
#include <stdio.h> Nombre de la Función
Parámetro Formal
int cuadrado(int x){
int r; Valor que
retorna
Variables r=x*x; La Función Función
Locales return r;
} Variables Globales
Llamado de la función Parámetro Real
main(){
int i,resultado;
Guarda el for (i=0;i<10;i++){
Resultado
que retorna
resultado = cuadrado (i); Programa
la función printf("Cuadrado de %d: %d\n",i,resultado); Principal
}
}
17
Ejemplo
Construyan una función que diga que si un número
es par o impar
18
Solución
#include <stdio.h>
#include <stdlib.h>
/* funcion que verifica si el numero es par o impar*/
int esImpar(int x){
int salida;
if (x % 2 !=0)
salida=1;
else
salida=0;
return(salida);
}
main() {
int num,resultado;
num=0;
printf ("Ingrese un numero entero positivo: \n");
scanf("%d",&num);
/* llamado a la funcion y el valor que retorna se guarda en RESULTADO*/
resultado=esImpar(num);
if (resultado==0)
printf("El Numero %d es PAR \n",num);
else
printf("El Numero %d es IMPAR \n",num);
}
19
Ejemplo
Construyan una función para cada proceso de
verificación de factorial de un numero y para los
números pares o impares.
20
Solución parte i
#include <stdio.h>
#include <stdlib.h>
/* funcion que verifica si el numero es par o impar*/
int esImpar(int x){
int salida;
if (x % 2 !=0)
salida=1;
else
salida=0;
return(salida);
}
/* funcion que determina el factorial de un numero*/
int factorial(int y){
int fact,valor;
fact=1;
if (y==0 || y==1)
valor=1;
else {
while ( y!=0) {
fact=fact*y;
y--;
valor=fact;
}
}
return(valor);
} 21
Solución parte ii
main() {
int num,opc,resultado;
/* llamado a la funcion*/
printf (" M E N U \n");
printf ("[1] PAR - IMPAR \n");
printf ("[2] FACTORIAL DEL NUMERO \n");
printf (" SELECCIONE UNA OPCION \n");
scanf("%d",&opc);
printf ("Ingrese un numero entero positivo: \n");
scanf("%d",&num);
if (opc==1) {
resultado=esImpar(num);
if (resultado==0)
printf("El Numero %d es PAR \n",num);
else
printf("El Numero %d es IMPAR \n",num);
}
if (opc==2) {
resultado=factorial(num);
printf("El Factorial %d \n",resultado);
}
} 22