Вы находитесь на странице: 1из 9

Tema:

FUNCIONES C++
FUNCIONES
Definicin:
Una funcin es un bloque de cdigo que realiza alguna operacin. Una
funcin puede definir opcionalmente parmetros de entrada que
permiten a los llamadores pasar argumentos a la funcin. Una funcin
tambin puede devolver un valor como salida.
Las funciones son tiles para encapsular las operaciones comunes en
un solo bloque reutilizable, idealmente con un nombre que describa
claramente lo que hace la funcin. La funcin siguiente acepta dos
enteros de un llamador y devuelve su suma; a y b son parmetros de
tipo int.

La funcin puede invocarse, o llamarse, desde cualquier nmero de


partes del programa. Los valores que se pasan a la funcin son
los argumentos, cuyos tipos deben ser compatibles con los tipos de
parmetro de la definicin de funcin.

No hay ningn lmite prctico para la longitud de la funcin, pero un


buen diseo tiene como objetivo funciones que realizan una sola
tarea bien definida. Los algoritmos complejos deben dividirse en
funciones ms sencillas y fciles de comprender siempre que sea
posible.
Las funciones definidas en el mbito de clase se denominan funciones
miembro. En C++, a diferencia de otros lenguajes, una funcin
tambin pueden definirse en el mbito de espacio de nombres
(incluido el espacio de nombres global implcito).Estas funciones se
denominan funciones libres o funciones no miembro; se usan
ampliamente en la biblioteca estndar

Tipos de funciones:

No reciben ni retornan
Las ms sencillas. Para usarlas slo tenemos que saber cmo crearlas
y cmo llamarlas. Una funcin 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 funcin: cualquiera que empiece con una letra, que sea
significativo y que no sea una palabra reservada.
Para llamarlas slo hay que escribir el nombre de la funcin seguido
de
sus
parntesis
y
un
punto
y
coma
(;).
nombre();
As el programa sera:

Como se ve, todo lo que se habra puesto en el main mejor se lo puso


en una funcin y desde el main la llamamos. Una funcin siempre,
siempre, tiene que ir antes del main.
Una funcin de este tipo que hemos usado muchas veces es getch();
Reciben y No Retornan
Cmo haramos para pedir los dos nmeros en el main y que la
funcin haga la suma? Para eso tenemos que hacer una funcin 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 parntesis tenemos otros aspectos:

tipo_var1 se refiere al tipo de la variable que nuestra funcin


va a recibir.
nombre_var1 se refiere al nombre de esa variable.

Si queremos recibir una variable hasta ah es suficiente, si queremos


otra variable ponemos una coma (,) y declaramos la siguiente
variable. Para llamar la funcin hay que poner la variables que vamos
a enviar dentro del parntesis en el mismo orden en que las
declaramos
en
la
funcin:
nombre(var1, var2); As el programa sera:

Pedimos los dos nmeros en el main, los enviamos a la funcin, sta


los suma y los muestra. Una funcin de este tipo que hemos usado
muchas veces es el odiado por muchos, amados por
otros, gotoxy(x,y);

Retornan y No Reciben
Y si ahora queremos lo contrario? Pedir los nmeros en la funcin,
pero mostrar el resultado en el main. Para eso necesitamos una
funcin que retorne.
Recibir es enviar datos del main a la funcin. Retornar es enviar datos
de la funcin 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 funcin es
int.
Para indicar qu variable estamos retornando usaremos la
palabra return seguido de la variable. Usualmente esto va al final de
la funcin. Para llamar a la funcin hay que preparar un colchn en
donde caiga la variable que est retornando.
var = nombre();
La variable que est retornando nuestra funcin se va a almacenar en
la variable var. Este es un buen momento para recordarles que las
variables declaradas entre dos llaves {} nicamente existen entre
esas dos llaves. O sea que la variable var de la funcin no es la
misma que la variable var de la funcin; sin embargo la var del
main est adquiriendo el valor de la var del main. El programa
quedara as:

Reciben y Retornan
Ahora queremos que nuestra funcin nicamente sume, el main se va
a encargar de pedir los nmeros y sumar los resultados. Para eso
necesitamos que nuestra funcin reciba las variables y adems
retorne el resultado. Wow! Es acaso eso posible? Claro que s.
Es slo cuestin de combinar las funciones que reciben y no retornan
con las que retornan y no reciben.
El programa quedara as:

Las funciones de la librera math.h son en su mayora de este tipo.


sqrt(); pow(); sin();
Elementos de la declaracin de una funcin
Una declaracin de funcin mnima consiste en el tipo de valor
devuelto, el nombre de funcin y la lista de parmetros (que puede
estar vaca), junto con las palabras clave opcionales que proporcionan
instrucciones adicionales para el compilador.

Una definicin de funcin se compone de una declaracin ms


el cuerpo, que es todo el cdigo incluido entre llaves. Una declaracin
de funcin seguida de un punto y coma puede aparecer en varios
lugares de un programa. Debe aparecer antes de cualquier llamada a
esa funcin en cada unidad de traduccin. La definicin de funcin
debe aparecer solo una vez en el programa, segn la regla de una
definicin (ODR).

Los elementos necesarios de una declaracin de funcin son los


siguientes:

1. El tipo de valor devuelto, que especifica el tipo del valor que


devuelve la funcin, o void si no se devuelve ningn valor. En

C++11, auto es un tipo de valor devuelto vlido que indica al


compilador que debe inferir el tipo de la instruccin return. En
C++14, tambin se permite decltype(auto). Para obtener ms
informacin, consulte ms adelante Deduccin de tipos en tipos
de valor devueltos.
2. El nombre de funcin, que debe comenzar con una letra o un
carcter de subrayado y no puede contener espacios. En
general, un carcter de subrayado inicial en los nombres de
funcin de la biblioteca estndar indica funciones de miembro
privado o funciones no miembro que no estn pensadas para
que las use el cdigo.
3. La lista de parmetros, que es un conjunto delimitado por llaves
y separado por comas de cero o ms parmetros que
especifican el tipo y, opcionalmente, un nombre local mediante
el cual se puede acceder a los valores de dentro del cuerpo de
la funcin.

Los elementos opcionales de una declaracin de funcin son los


siguientes:

1. constexpr, que indica que el valor devuelto de la funcin es un


valor constante que se puede calcular en tiempo de
compilacin.

2. Su especificacin linkage, extern o static.

3. inline, que indica al compilador que reemplace todas las


llamadas a la funcin con el propio cdigo de la funcin. La

insercin en lnea puede mejorar el rendimiento en escenarios


donde una funcin se ejecuta rpidamente y se invoca varias
veces en una seccin del cdigo crtica para el rendimiento.

4. noexcept, que especifica si la funcin puede producir una


excepcin. En el ejemplo siguiente, la funcin no produce una
excepcin si la expresin is_pod se evala como true.

5. (Solo funciones miembro) Los calificadores cv, que especifican


si la funcin es const o volatile.

6. (Solo
funciones
miembro) virtual, override o final. virtual especifica que una
funcin se puede reemplazar en una clase derivada. Override
significa que una funcin de una clase derivada reemplaza una
funcin virtual. final significa que una funcin no se puede
reemplazar en ninguna otra clase derivada.

7. (Solo funciones miembro) static aplicado a una funcin


miembro significa que la funcin no est asociada con
instancias de objeto de la clase.

8. (Solo funciones miembro no esttica)


referencia, que indica al compilador qu
funcin debe elegir cuando el parmetro
(*this) es una referencia rvalue frente a una
Link-Grafa

El calificador de
sobrecarga de una
de objeto implcito
referencia lvalue.

https://ccodigo.wordpress.com/tag/funciones/
http://www.zator.com/Cpp/E4_4_1.htm
http://www.nebrija.es/~abustind/Informatica/MetodologiaI/funciones.p
df
http://c.conclase.net/curso/?cap=003
https://msdn.microsoft.com/es-es/library/c4d5ssht.aspx

Вам также может понравиться