Sie sind auf Seite 1von 7

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA


CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Definir una funcin


Todo programa bien estructurado utiliza funciones creadas por el programador, a
continuacin se describen los pasos bsicos para trabajar con funciones.
Definicin de una Funcin: la definicin de una funcin puede ubicarse en
cualquier lugar del programa, con slo dos restricciones: debe hallarse luego de
dar su prototipo, y no puede estar dentro de la definicin de otra funcin (incluida
main() ). Es decir que a diferencia de Pascal, en C++ las definiciones no pueden
anidarse.
NOTA: no confundir definicin con llamada; una funcin puede llamar a tantas
otras como desee.
La definicin debe comenzar con un encabezamiento, que debe coincidir
totalmente con el prototipo declarado para la misma, y a continuacin del mismo,
encerradas por llaves se escribirn las sentencias que la componen; por ejemplo:
#include <stdio.h>
float mi_funcion(int i, double j ); /* DECLARACION observe que termina en ";" */
main()
{

float k ; int p ; double z ;


...........
k = mi_funcion( p, z );
/* LLAMADA a la funcin */
...........
/* fin de la funcin main() */

float mi_funcion(int i, double j ) /* DEFINICION observe que NO lleva ";" */


{
float n=2,3;
...................
printf("%d", i );
...................
return ( 2 * n );
/* RETORNO devolviendo un valor float */
}

Declaracin de una Funcin: antes de escribir una funcin es necesario


informarle al Compilador los tamaos de los valores que se le enviarn en el stack
y el tamao de los valores que ella retornar al programa invocante.
Estas informaciones estn contenidas en la DECLARACIN del PROTOTIPO DE
LA FUNCIN.
35

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Formalmente dicha declaracin queda dada por:


tipo del valor de retorno
nombre_de_la_funcin(lista de tipos de parmetros)
Algunos ejemplos :
float mi_funcion(int i, double j ) ;
double otra_funcion(void) ;
otra_mas(long p) ;
void la_ultima(long double z, char y, int x, unsigned long w) ;
El primer trmino del prototipo indica el tipo de dato retornado por la funcin; en
caso de obviarse el mismo, se toma por omisin el tipo int. Sin embargo, aunque
la funcin devuelva este tipo de dato, para evitar malas interpretaciones es
conveniente explicitarlo. Ya que el "default" del tipo de retorno es el int, se debe
indicar cuando la funcin NO retorna nada, esto se realiza por medio de la
palabra void (sin valor). Cuando no se envan argumentos, el parntesis
correspondiente queda vacio.
La declaracin debe anteceder, en el programa, a la definicin de la funcin. Es
normal, por razones de legibilidad de la documentacin, encontrar todas las
declaraciones de las funciones usadas en el programa, en el HEADER del mismo,
junto con los include de los archivos *.h que tienen los prototipos de las funciones
de Librera.
Si una ms de nuestras funciones son usadas habitualmente, se puede
disponer su prototipo en un archivo de texto, e incluirlo las veces que se necesite.

Llamados de Funcin
Una vez que en su programa se ha definido una funcin, esta puede ser llamada
las veces que sean necesarias. Para llamar a una funcin basta con hacer
referencia a su nombre y si la misma requiere de parmetros estos debern
indicarse dentro de parntesis.
Para llamar a una funcin que no requiera de parmetros se deber indicar el
nombre de la misma seguida de parntesis vacios. Por ejemplo, para llamar
una funcin llamada cuadrado, se escribira:
cuadrado();
Si la funcin cuadrado utiliza un parmetro de tipo int, se escribira:
cout << cuadrado(25);
cout << cuadrado(X);

36

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Si la funcin cuadrado utiliza un parmetro y adems devuelve un valor, su


llamada sera:
R = cuadrado(X); // guardar en R el cuadrado de X
Prototipos: para utilizar una funcin en un programa, se requiere en primer lugar
declararla y despus definirla. La declaracin de la funcin le indica al compilador
el nombre, el tipo de dato devuelto por la funcin y los parmetros pasados a la
funcin. A la declaracin de una funcin se le llama tambin el prototipo
Un prototipo es una declaracin de una funcin. Consiste simplemente en el
encabezado de la funcin, terminado con punto y coma (;) lo que hace es avisar
al compilador, como se va a llamar la funcin y si recibe y devuelve informacin
La estructura de un prototipo es:
<tipo> func(<lista de declaracin de parmetros>);
Ejemplo:
int Mayor(int a, int b); // es un prototipo de funcin que devuelve un entero y
recibe dos parmetros enteros.
Aunque C permite realizar el prototipo de la siguiente manera:
int Mayor(int,int);
Sin necesidad de escribir el nombre de las variables; entonces La estructura de
un programa en C quedara as:
[directivas del pre-procesador: include y define]
[declaracin de variables y constantes globales]
[prototipos de funciones]
funcin main ()
[definiciones de funciones] //definidas en los prototipos

Recursividad
Esta es la propiedad que tienen las funciones en C de poder llamarse a s
mismas. Se dice que una funcin es recursiva cuando se autollama. No todas
las funciones pueden llamarse a s mismas (ser recursivas), deben
estar diseadas especialmente para que tengan un final y no se conviertan en
ciclos o bucles infinitos.
Es importante notar que cuando una funcin se llama a s misma, una nueva
copia de esta funcin es la que se ejecuta. Las variables locales de la segunda
funcin no interfieren con las variables locales de la primera, as mismo, las
37

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

variables locales no se pueden afectar mutuamente. Se tomar como ejemplo


un programa que calcule el factorial de un nmero entero introducido por el
usuario. El factorial est definido como el producto del nmero en cuestin por
todos los nmeros enteros menores que l, de tal manera que el factorial de
5=5*4*3*2*1 = 120. El cdigo puede quedar as:
#include <iostream.h>
double factorial(int valor);
int K=1; // variable global, para un contador general
int main()
{
int num;
cout << "Introduzca un numero" << endl;
cin >> num;
cout << endl;
cout << El factorial del nmero es << factorial(num) << endl;
cout << "La funcin se llamo en forma recursiva " << k << " veces" << endl;
return 0;
}
double factorial(int valor)
{
double R;
if(valor<=1) return 1;
else
{
R= (valor*factorial(valor-1)); K = K+1;
}
return resultado;
}
1. La funcin se declara de tipo doble, puesto que los valores que retorna la
funcin pueden ser demasiado grandes.
2. Tambin se utiliza una variable global (K), que sirve de contador, para
determinar el nmero de iteraciones que la funcin se repite
3. El programa empieza solicitndole un nmero entero y despus llama por
primera vez a la funcin factorial ( ). La recursividad necesita una condicin
para terminar el proceso en el momento especifico, por sta razn, la funcin
factorial () determina en primer lugar si el valor pasado como parmetro de la
funcin es igual a 1, en cuyo caso la funcin retorna 1. Si el valor del
parmetro es mayor que 1, entonces la funcin factorial ( ) se llama a s
misma tomando como parmetro el valor original menos uno, multiplicando
ste valor por el valor del parmetro original y almacenando el
38

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

resultado en la variable llamada resultado. (se recomienda realizar una


prueba de escritorio para entender un poco ms el movimiento de la
funcin y sus iteraciones).
Tipos de funciones
En atencin a su formato, se pueden encontrar diferentes tipos de funciones, a
continuacin se analizarn las ms importantes.
Funciones que devuelven un tipo void
Cabe recordar que void significa vacio, por lo tanto las funciones que utilizan este
tipo no retornan valores. Si la funcin no devuelve nada, entonces no se debe
incluir en su codificacin la sentencia return, aunque su uso es opcional.
Para llamar una funcin que devuelve un tipo void, slo se necesita digitar su
nombre en una sentencia, e incluir parmetros si as fue diseada.
Ahora bien, estas funciones pueden tener o no parmetros
Funcin que retorna tipo void sin parmetros:
void Nom_Funcion( )
Ejemplo:
void Mensaje( )
{ system (cls);
cout<< Procesando informacin espere unos momentos;
}
Esta funcin se utiliza para imprimir un mensaje en pantalla, no recibe
ningn parmetro, ni retorna ningn valor.
Funcin que retorna tipo void con parmetros:
void Nom_Funcin( parmetro 1, parmetro 2, )
Ejemplo:
void Edad (int ed )
{ char nombre[30] = Marcela ;
cout<< nombre << tiene << ed << aos ;
system(pause);
}
La funcin recibe un valor de tipo inte que corresponde a una edad. Al
interior de la funcin se asigna el nombre de Mara a la variable nombre y
utilizando los contenidos de las variables nombre y ed se escribe una
expresin. Ntese que no se utiliza return porque la funcin se diseo
como tipo void.
Funciones que devuelven valores
39

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Tambin se encuentran las funciones que retornan valores que pueden ser de tipo
char, int, float, etc.
Estas funciones tambin se dividen en dos:
Funcin que retorna valor y no utiliza parmetros:
Tipo_dato Nombre_funcin( )
Ejemplo:
char letra( )
{ char opcin;
system(cls);
cout<<Indique su situacin laboral : ;
cout<<\n a. Dueo de negocio propio ;
cout<<\n b. Empleado ;
cout<<\n c. Desempleado ;
cout<<\n \n Por favor elija una opcin digitando la letra que indique su
estado laboral actual :
cin>> opcion;
return (opcion);
}
La funcin no recibe ningn valor y en interior solicita que se digite una
letra. Ese valor digitado por el usuario es el que retorna la funcin letra.
Funcin que retorna valor y utiliza parmetros:
Tipo_dato Nombre_funcin(lista de parmetros)
Ejemplo:
int Suma(int x, int y)
{ return (x+y);
}
La funcin recibe dos valores de tipo entero; al interior de la funcin los
valores recibidos se suman y mediante la instruccin return se devuelve el
resultado de la suma.

Paso de parmetros
En C++ hay dos mtodos para realizar el paso de parmetros a una funcin, estos
son: paso por valor y paso por referencia.
Es de aclarar que por defecto se utiliza el paso de argumentos por valor, a
excepcin de las situaciones en que se trabaja con arreglos.

Paso por valor


40

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

El paso por valor implica que se realiza una copia de los argumentos, antes de
que stos pasen realmente a la funcin.
Esta tcnica funciona muy bien cuando se est utilizando varibles simples, por
ejemplo nmeros o caracteres.
Ejemplo:
void Fun_paso_valor(int x, char y, int z)
{

}
La llamada a esta funcin sera:
Fun_paso_valor(3, a, 10);

Paso por referencia


Este mtodo posibilita cambiar el valor de los argumentos dentro de la funcin y
devolverlo modificado a la funcin o programa desde donde se llama.
Este mtodo es utilizado cuando se utiliza como parmetros array y estructuras.
Ejemplo:
void fun_por_referencia(int *x, int *y)
{

}
La llamada a la funcin sera: fun_por_referencia(&x, &y)
El operador & en C++ indica la direccin de una variable, dicho en otros trminos
lo que se est enviando es la direccin de memoria donde se encuentra
almacenada la variable.

Ampliar informacin consultando:


Carretero Prez, Jesus, Garcia Carballeira Felix, Garcia Snchez Jos Daniel,
Perez Menor Jos Maria, Snchez Garcia Luis Miguel. Pags. 94 a 96. Disponible
en
http://books.google.es/books?id=hERLHWu5vGIC&printsec=frontcover&dq=c%2B
%2B&hl=es&sa=X&ei=Jal7VNG7CcWogwTSioCYAg&ved=0CDsQ6AEwBA#v=one
page&q=c%2B%2B&f=false

41

Das könnte Ihnen auch gefallen