Sei sulla pagina 1di 32

PROGRAMACION

MODULAR

 Uno de los métodos más conocidos para resolver un
problema es dividirlo en problemas más pequeños,
llamados subproblemas. De esta manera, en lugar de
resolver una tarea compleja y tediosa, resolvemos
otras más sencillas y a partir de ellas llegamos a la
solución.

 Se le suele llamar diseño descendente, metodología


del divide y vencerás, refinería de soluciones o
programación top-down.
Diseño Descendente

 Técnica que permite diseñar la solución de un
problema con base en la modularización o
segmentación.
 Su enfoque es de arriba hacía abajo (Top Down).
 Todos los módulos se organizan y relacionan
jerárquicamente como en un organigrama.
 Consiste “desmenuzar” o “dividir” el problema en
partes pequeñas y simples denominadas módulos.
Ejemplo:

 Un profesor quiere crear un programa para gestionar
las notas de sus alumnos. Quiere que dicho
programa le permita realizar tareas tales como
asignar notas, cambiar notas, ver las notas según
distintas calificaciones, etc.
Esquema de Módulos y
Diseño descendente

Notas
Alumnos

Elegir Asignar Borrar


Visualizar
Opción Nota Nota

Por
Por notas
apellidos
¿Qué es un Módulo?

 Un módulo es un segmento, rutina, subrutina,
subprograma que puede ser definido dentro de un
programa.
 Ejecuta una tarea específica.
 Puede ser llamado o invocado desde el programa
principal cuando se requiera.

 En C++ se manejan dos tipos: funciones y


procedimientos.
Justificación

 Las principales razones de la estructura de módulos
se deben a que los programas son más fáciles de:
 Escribir,
 Comprender,
 Modificar,
 De Usar.
FUNCIONES Y
PROCEDIMIENTOS

 Desde un punto de vista práctico, podemos decir que una
función es una parte de un programa (subrutina) con un
nombre, que puede ser invocada (llamada a ejecución)
desde otras partes tantas veces como se desee.
 Un bloque de código que puede ser ejecutado como una
unidad funcional.
 Opcionalmente puede recibir valores; se ejecuta y puede
devolver un valor.
 En conclusión el uso de funciones se justifica en dos
palabras: organización y reutilización del código.
 La diferencia entre una función y un procedimiento es
que la función devuelve un valor y el procedimiento no.
Ventajas

 Facilita el diseño descendente.
 Los procedimientos dentro de ellas se pueden
ejecutar varias veces.
 Facilita la división de tareas.
 Se pueden probar individualmente
Variables Globales y
Locales

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.
Estructura de Función

tipo nombre_funcion(lista de parámetros)
{
cuerpo de la función
return [dato,var,expresion];
}
 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.
 return: La instrucción RETURN es quien regresa un y solo un
dato a la parte del programa que la este llamando o invocando,
sin embargo es de considerar que return puede regresar un
dato, una variable o una expresión algebraica (no ecuación o
formula).
Ejemplos de return

 a) return 3.1416;
 b) return area;
 c) return x + 15/2;
Tipos de Funciones

 Una función puede o no realizar dos cosas. Recibir
datos y retornar datos.
 Los principales tipos de funciones son:
1. No reciben ni retornan
2. Reciben y no retornan
3. No reciben y retornan
4. Reciben y retornan
Importante

 Recibir es enviar datos del main a la función.

 Retornar es enviar datos de la función al main. Para


retornar datos hay que hacer dos cosas: no usar void
como tipo y usar return.
No reciben ni retornan

 Las más sencillas. Para usarlas sólo tenemos que saber
cómo crearlas y cómo llamarlas. Una función se crea de
esta forma general:
tipo nombre(){ }
 El „tipo‟ se refiere al tipo de dato (int, float, void, char) y en
las funciones que no retornan siempre es void.
 El „nombre‟ es el nombre de la función: cualquiera que
empiece con una letra, que sea significativo y que no sea
una palabra reservada.
 Para llamarlas sólo hay que escribir el nombre de la
función seguido de sus paréntesis y un punto y coma (;).
nombre();
Ejemplo
#include <iostream.h>
#include <conio.h>

void sumar()
{
int num1, num2, r;
cout << "Numero 1: "; cin >> num1;
cout << "Numero 2: "; cin >> num2;
r = num1 + num2;
cout << "La suma es " << r;
}

int main()
{
sumar(); //se llama a la función pero no se retorna ningún valor.

getch();
}
Reciben y No retornan

 ¿Cómo haríamos para pedir los dos números en el main y que la
función haga la suma?
 Para eso tenemos que hacer una función capaz de recibir datos,
entonces la sintaxis cambia un poco:
tipo nombre(tipo_var1 nombre_var1, tipo_var2 nombre_var2){ }
 „tipo‟ y „nombre‟ se refieren a lo mismo y como no retorna el tipo siempre
es void.
 Dentro del paréntesis tenemos otros aspectos:
 „tipo_var1′ se refiere al tipo de la variable que nuestra función va a recibir.
 „nombre_var1′ se refiere al nombre de esa variable.
 Para llamar la función hay que poner la variables que vamos a enviar
dentro del paréntesis en el mismo orden en que las declaramos en la
función:
nombre(var1, var2);
Ejemplo
#include <iostream.h>

#include <conio.h>
//Pedimos los dos números en el main, los enviamos a la función, ésta los suma y los muestra.
void sumar(int num1, int num2) //funcion que recibe los datos de tipo int
{
int r;
r = num1 + num2;
cout << "La suma es " << r;
}
int main()
{
int num1, num2;
cout << "Numero 1: "; cin >> num1;
cout << "Numero 2: "; cin >> num2;
sumar(num1, num2);
getch();
}
Retornan y no reciben

 Para pedir los números en la función, pero mostrar el
resultado en el main, necesitamos una función que
retorne.
 Recibir es enviar datos del main a la función. Retornar
es enviar datos de la función al main. Para retornar
datos hay que hacer dos cosas: no usar void como
tipo y usar return.
 De forma general:
tipo nombre() { return var; }

 El „tipo‟ tiene que ser del tipo de variable que
queremos retornar, si nuestra variable retorna una
variable int, pues el tipo de la función es int.
 Para indicar qué variable estamos retornando
usaremos la palabra return seguido de la variable.
Usualmente esto va al final de la función.
 Para llamar a la función hay que preparar un colchón
en donde caiga la variable que está retornando.
var = nombre();

 La variable que está retornando nuestra función se
va a almacenar en la variable „var‟. Cabe mencionar
que las variables declaradas entre dos llaves { }
únicamente existen entre esas dos llaves. O sea que
la variable „var‟ de la función no es la misma que la
variable „var‟ de la función
Ejemplo
#include <iostream.h>

#include <conio.h>

int sumar()
{
int num1, num2, r;
cout << "Numero 1: "; cin >> num1;
cout << "Numero 2: "; cin >> num2;
r = num1 + num2;
return r; //retorna el valor de la variable r (r=num1+num2)
}

int main()
{
int r;
r = sumar();
cout << "La suma es " << r;
getch();
}
Reciben y Retornan

 Ahora queremos que nuestra función únicamente
sume, el main se va a encargar de pedir los números
y sumar los resultados. Para eso necesitamos que
nuestra función reciba las variables y además retorne
el resultado.
Ejemplo

#include <iostream.h>
#include <conio.h>
int sumar(int num1, int num2)
{
int r;
r = num1 + num2;
return r;
}
int main()
{
int num1, num2, r;
cout << "Numero 1: "; cin >> num1;
cout << "Numero 2: "; cin >> num2;
r = sumar(num1, num2);
cout << "La suma es " << r;
}

MANEJO DE
PARAMETROS
Parámetros de una
función

 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 través de la llamada.
 Ejemplo:
Transferencia de la
Información

 por valor: Pasar los parámetros por valor significa
que los valores de las variables enviadas son
copiados a otra dirección de memoria con la etiqueta
indicada en el parámetro formal.

 por referencia: Al hablar de parámetros por


referencia, estamos pasando la dirección, o
referencia, en donde se encuentra el valor.
Ejemplo

 Construya un programa que calcule el cuadrado de
los 10 primeros números enteros.
#include <stdio.h>
int cuadrado(int x){
int r;
r=x*x; 
return r;
}
main(){
int i,resultado;
for (i=0;i<10;i++){
resultado = cuadrado (i);
cout<<"Cuadrado de “<<i<<“es..:” <<resultado;
}
return 0;
}
Ejemplo

 Construya una función que realice intercambio de
los valores entre 2 variables.
#include <stdio.h>
void intercambio(int x, int y){


int temp;
temp=x;
x=y;
y=temp;
cout<<x<<y<<temp;
}
int main(){
int a=1,b=2;
cout<<a << b;
intercambio (a,b);
cout<<a << b;
return 0;
}
Parámetros por
referencia y valor

Potrebbero piacerti anche