Sei sulla pagina 1di 9

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

8 PROGRAMACIN MODULAR
La gran mayora de los programas que desarrolla normalmente un programador, son mucho
ms largos que los desarrollados hasta el momento. La mejor forma de escribirlos y
mantenerlos es a partir de piezas menores, mdulos o funciones de usuario; siendo cada una
de ellas ms fciles de manipular que un programa extenso que contenga la totalidad del
cdigo del programa.
Utilizar funciones en la elaboracin de un programa en C++, facilita el diseo, implementacin,
operacin y mantenimiento de programas grandes.
La programacin modular, tambin llamada programacin estructurada, se realiza cuando el
programador define funciones de usuario, donde cada una realiza una tarea sencilla.
En el siguiente diagrama la funcin main se comunica con varias funciones en forma jerrquica y
estas a su vez pueden llamar otras funciones.

Para utilizar en un programa funciones, se requiere tres pasos: Que la funcin se declare antes
de su uso (prototipo), que se haga la llamada de la funcin y finalmente que se defina o escriba
la funcin (estructura).
A continuacin se muestra un programa que usa una funcin definida por el programador para
calcular el cuadrado de un nmero. Observe las tres partes que conforman la funcin:
Ejemplo:

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

8.1 PROTOTIPO DE LA FUNCIN


C++ requiere que una funcin se declare antes de su uso. La declaracin de la funcin se
denomina prototipo. Los prototipos se sitan en las instrucciones de preprocesador.
Sintaxis de la instru cc i n :
Tipo_de_retorno nombre _func in (lista_de _parmetros);
Donde:
Tipo de retorno:

Tipo de dato que retorna la funcin, una funcin solo retorna un


dato a la vez, en caso de que la funcin no tenga que retornar nada,
se escribe void.

Nombre de la funcin:

Escoja un identificador apropiado de la funcin.

Lista de parmetros:

Llamados tambin argumentos y son los datos que debemos


transmitir para que pueda llevarse a cabo la tarea en la funcin. Se
escribe en el prototipo solamente el tipo de dato a utilizar,
mencionando uno por cada dato que se vaya a pasar a la funcin.
Si son varios parmetros van separados por comas.

Los prototipos terminan con un punto y coma.


Ejemplos:
int cuadrado(int);
float radianes(float);
double area(float,float);
void imprimir(int,long int,float);
void titulos(void);

8.2 LLAMADA DE LA FUNCIN


Como hemos visto en las unidades anteriores, todo programa en C++ contiene la funcin
principal o funcin main(). Las funciones de programador y de biblioteca, se pueden llamar
2

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

desde cualquier parte del programa y reutilizarlas si as se requiere.


As como la funcin main(), llama funciones Estndar de Biblioteca, tan solo con mencionar
el nombre de la funcin y los parmetros que se requieran, de esta misma manera podemos
hacerlo con las funciones de usuario, llamndolas y transmitindoles los datos como argument os
en los parntesis que siguen al nombre de la funcin, as:
Sintaxis de la instruccin para llamar una f uncin:
Nombre_de_la_funcin(parmetros);
Por ejemplo:
z=ecuacion(x,y);
cout<<Area_del_circulo(x);
cout<<x<<"

"<<cuadrado(x)<<endl;

imprimir(a,b,c);
titulos();
Al ser llamada la funcin se redirigir el control del programa a la funcin nombrada hasta que
retorne el resultado. Normalmente la llamada a una funcin se realizar desde la funcin
principal main(), aunque tambin podra ser llamada desde otra funcin. Cuando no se envan
datos en la llamada para la funcin, se deja vaco el parntesis.
Las funciones de programador no se pueden anidar, esto significa que una funcin no se puede
declarar dentro de otra funcin.
En el ejemplo, la funcin de nombre ec uacin proporciona los datos almacenados en x y y, para
que se realice la tarea y retorne el resultado para almacenarlo en la variable z.
En la segunda lnea del ejemplo, se llama la funcin Area_del_circulo y se le proporciona el dato
almacenado en x, para ser impreso el resultado.
En C++ todas las funciones son externas o globales, es decir, pueden ser llamadas desde
cualquier punto del programa ya sea desde la funcin principal o desde otra funcin.

8.3 DEFINICIN DE LA FUNCIN (ESTRUCTURA)


La estructura de la funcin es la que contiene las sentencias o el cdigo para realizar la tarea
para la cual fue creada. Se puede escribir antes o despus de la funcin main().
Sintaxis de la instruccin:
Tipo_de_retorno nombre_funcin (lista_de _parmet ros)
{
cuerpo de la funcin
return expresin;
}
La primera lnea se llama la cabecera de la funcin y encerrado entre llaves, se escribe el
cuerpo de la funcin
3

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

Tipo de retorno:

Tipo de dato que retorna la funcin, debe coincidir con lo escrito en


el prototipo.

Nombre de la funcin:

Escriba el identificador escogido para el prototipo.

Lista de parmetros:

A diferencia del prototipo, adems del tipo de dato a utilizar, se debe


declarar las variables locales a la funcin que se est definiendo.

{ }:

Las llaves encierran el cuerpo de la funcin.

Ejemplos:
int cuadrado(int y)
{
return y*y;
}
void imprimir(int a,long int b,float c)
{
cout<<"EDAD: "<<a<<endl;
cout<<"IDENTIFICACION: "<<b<<endl; cout<<"SUELDO BASICO: "<<c<<endl;
cout<<"SUELDO A PAGAR: "<<c*0.88<<endl;
}

8.4 RETORNO DE LA FUNCIN


El retorno de la funcin se escribe como ltima lnea en la estructura de la funcin. Una
funcin retorna un valor nico del tipo que se defina en el prototipo.
Ejemplo:
return y*y;
Retorna un entero, producto de obtener el cuadrado del nmero a la llamada de la funcin.
En las funciones que no retornan valores el tipo de dato de retorno es void.

8.5 MBITO DE LAS VARIABLES


C++ reconoce el mbito de una variable, segn haya sido declarada como local o global.
El mbito de la variable es la parte del programa en que el compilador la reconoce. Si una
funcin reconoce una variable se dice que es visible en esa funcin.
Las variables globales pueden ser referenciadas por cualquier funcin en el programa, mientras
que las variables locales tienen mbito solo en la funcin,
Las variables globales tienen mbito de programa, por lo que suelen definirse en las
declaraciones globales del programa. Las variables locales, tienen mbito de funcin, esto es,
se pueden referenciar desde cualquier parte de la funcin pero por fuera de esta, no se pueden
utilizar; se definen casi siempre iniciando como primeras instrucciones en los cuerpos de las
4

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

funciones.
/*programa que muestra variables globales y locales*/
#include<iostream>
double z;
int cuadrado(int);
void imprimir(void);
using namespace std;
int main()
{
int x;
cout<<"Ingrese un valor para x:"<<endl;
cin>>x; z=cuadrado(x); imprimir();
system("pause");
return 0;
}
int cuadrado(int y)
{
return y*y;
}
void imprimir(void)
{
cout<<"El cuadrado es: "<<z<<endl;
return;
}

La variable global z, es visible en todo el programa, por lo que es referenciada en la funcin


main y en la funcin imprimir. Las variables x, y, son locales y solo son visibles en la funcin
en la cual fueron declaradas.
En caso de que una variable global tenga el mismo nombre que la variable local, el programa
reconocer el mbito de la variable local. Si el programador requiere el dato de la variable
global, deber utilizar un juego de doble dos puntos (::), antes de la variable para utilizarla.
Ejemplo:
/*programa que muestra variables globales y locales*/
#include<iostream>
double a = 8;
using namespace std;
int main()
{
5

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

double a =5;
double b=a+a; double
c=::a+::a;
cout << "Local a:
" << a << endl;
cout << "Local b:
" << b << endl;
cout << "Global a: " << ::a << endl; cout <<
"Local c: " << c << endl; system("pause");
return 0;
}

8.6 PASO DE PARAMETROS POR VALOR


Cada vez que se llama una funcin se establece automticamente una correspondencia entre
los parmetros formales de la funcin y los parmetros del programa principal; esto es, a cada
parmetro de la funcin, se le asigna el valor real de su correspondiente parmetro actual. A
esto se le denomina parmetros por valor o llamada por valor.
Cuando C++ compila la funcin y el cdigo llama a la funcin, esta recibe una copia de los
valores de los parmetros que deben corresponder exactamente en cantidad y tipo a cuando
se invocan y se declaran.
La siguiente ilustracin muestra como es esta correspondencia:
float calculo (float,float,float);
int main()
{
cout<< calculo(numero,aos,tasa);
}
En este caso se establece una correspondencia entre los tres parmetros de la funcin calculo
y los parmetros en la llamada de la funcin desde el programa principal.
Ejercicio 1
En el siguiente ejemplo se muestra un programa que contiene una funcin de usuario que
recibe tres parmetros y retorna el mayor de los tres nmeros proporcionados:
/*programa que calcula el mayor de tres enteros*/
#include<iostream>
int maximo(int,int,int);
using namespace std;
int main()
{
6

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

int a,b,c;
cout<<"Digite tres enteros: ";
cin>>a>>b>>c;
cout<<"El Maximo es:
"<< maximo(a,b,c)<<endl;
system("pause");
}
int maximo(int x,int y,int z)
{
int max=z;
if (x>y&&x>z)
max=x;
if (y>x&&y>z)
max=y;
return max;
}

El prototipo de la funcin, es declarado en las instrucciones de preprocesador. Declara la


funcin entera de nombre mximo y la lista de los parmetros, en este caso son tres enteros.
En la funcin principal, se hace la llamada de la funcin desde el flujo de salida, esto es se
invoca la funcin maximo, con sus argumentos. Una vez la funcin retorna el valor, estar listo
el programa para la impresin.
A continuacin del programa principal se encuentra la estructura de la funcin, en el
encabezado, se indica el tipo de dato que regresa, el nombre de la funcin y los argument os,
as esta funcin recibe tres parmetros enteros en las varia bles x, y, z y retorna un valor
entero.
En la funcin se declara la variable entera loc al max para el clculo del mximo de tres nmeros
enteros. La instruccin de retorno a su punto de referencia, devuelve el valor que contiene
la variable max.

Ejercicio 2
En el siguiente ejemplo se presente un programa que usa funciones con retorno vaco para
imprimir resultados:
/*Programa que intercambia los dgitos para nmeros entre 10 y 99
utilizar una funcin con retorno vaco para imprimir*/
#include<iostream>
void intercambio(int);
using namespace std;
int main()
{
7

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

int a;
cout<<"Entre UN NUMERO ENTRE 10 Y 99: "<<endl;
cin>>a;
if (a>=10&&a<=99)
intercambio(a);
else
cout<<"\n DATO INVALIDO: ";
cout<<"\n FIN DEL PROGRAM ";
system("pause");
}
void intercambio(int x)
{
int z, y;
z=x%10;
y=x-z;
y=y/10;
cout<<x<<" invertido es:

"<<z*10+y;

Como el prototipo de la funcin intercambio inicia con void, indica que no hay retorno de valor
en esta funcin; as mismo, se le declara un parmetro de tipo entero.
En caso de que se cumpla la condicin se hace la llamada a la funcin intercambio, con el
argumento a, de lo contrario cuando no se cumple la condicin llama el flujo de salida: DATO
INVALIDO.
Como en la definicin de la funcin se encuentra el encabezado void, se indica que no retorna
valor.
el nombre de la funcin y el argumento, as esta funcin recibe el parmetro en la variable
x. La Instruccin de retorno es sin parmetros.
RESUMEN
-

C++ permite
funciones.

realizar

programas

estructurados o modulares,

con la

utilizacin de

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

Las funciones de usuario son mini programas dentro de un programa. Las funciones
permiten realizar diferentes tareas especficas que pueden ser utilizadas varias veces por el
programa

Los programas en C++ contienen la funcin main() y por lo general varias funciones
de biblioteca y funciones definidas por el programador, cada una de las cuales realiza una
tarea.

Las funciones no se pueden anidar, esto significa que una funcin no se puede declarar
dentro de otra funcin.

Para utilizar en un programa funciones, se requiere de tres pasos: Que la funcin se


defina antes de su uso (prototipo), que se haga la llamada de la funcin y finalment e
que se defina o escriba la funcin (estructura).

La estructura de una funcin se puede escribir antes o despus de la funcin main()

La llamada de una funcin especifica el nombre de la misma y los parmetros que


proporcionan la informacin que la funcin necesita a fin de llevar a cabo la tarea designada.

Una funcin con retorno vaco, no devuelve valores, por lo tanto inicia con la palabra
void.

Las funciones con retorno vaco siguen las mismas reglas que las funciones con retorno de
datos: Se debe definir antes de su uso (prototipo), se hace la llamada a la funcin y
finalmente se define o escribe la funcin (estructura).

C++ reconoce el mbito de una variable, segn haya sido declarada como local o global,
las variables globales suelen definirse en las declaraciones globales del programa, mientras
que las variables locales se definen en los cuerpos de las funciones iniciando como
primeras instrucciones.

Cuando una funcin tiene un parmetro por valor esta recibe una copia de los valores de
los parmetros, mientras que cuando tiene parmetros por referencia reciben la direccin
de los argumentos pasados y cambia los valores de los argumentos originales.