deas 2015

Una función nos permite estructurar programas en segmentos de código para que se realicen tareas individuales. Mas claro, una función es un bloque de código que realiza alguna operación dentro de un programa.
En C++ una función no es más que un grupo de declaraciones a las que se les da un nombre y se les puede llamar desde algún punto del programa. 
La sintaxis más común para definir una función es:
//sintaxis común de función C++
tipo nombre (parametros) {statements}
Dónde:
  • tipo es el tipo del valor devuelto por la función.
  • nombre es el identificador por el cual se puede llamar a la función.
  • Parámetros (todos los que sean necesarios): cada parámetro se parece mucho a una declaración de variable regular (por ejemplo: int x) y de hecho actúa dentro de la función como una variable regular que es local para la función. El propósito de los parámetros es permitir pasar argumentos a la función desde la ubicación desde donde se le llama.
  • Statements es el cuerpo de la función. Es un bloque de instrucciones rodeado de llaves {} que especifica qué hace realmente la función.
Echemos un vistazo a un ejemplo práctico:
[tab] [content title="Uso de Funciones en C ++"] [/content] [/tab]
Este programa se divide en dos funciones: addition y main. Recuerde que no importa el orden en que se definan, un programa en C++ siempre comienza llamando a main. De hecho, main es la única función llamada automáticamente y el código de cualquier otra función solo se ejecuta si su función se llama desde main (directa ó indirectamente).
En el ejemplo anterior, main comienza declarando la variable  de tipo int y luego de esto realiza la primera llamada a la función addition. La llamada a una función sigue una estructura muy similar a su declaración. En el ejemplo anterior, la llamada a addition se puede comparar con su definición unas líneas antes.












Los parámetros en la declaración de la función tienen una correspondencia clara con los argumentos pasados en la llamada a la función. La llamada pasa dos valores, que son 5 y 3 a la función; estos corresponden a los parámetros a y b  declarados para la función addition.
En el punto en el que se llama a la función desde main, el control pasa a la función addition: aquí ya la ejecución de main se detiene y sólo se reanudará una vez que la función addition finalice. En el momento de la llamada a la función, el valor de ambos argumentos (5 y 3) son copiados para las variables locales int aint b dentro de la función.
Luego, dentro de addition se declara otra variable local (int r) y mediante la expresión r = a + b, el resultado de la suma se asigna a r; que para este caso (a es 5 y b es 3), significa que 8 se adiciona a r.
La declaración final dentro de la función:
return r;
Finaliza la función addition; y se devuelve el control al punto desde donde se llamó a la función, en este caso a la función main. En este momento preciso, el programa reanuda su curso en main retornando exactamente al mismo punto donde fué interrumpido por llamada a addition. Pero, adicionalmente, como addition tiene un tipo de devolución; la llamada se evalúa como si tuviera un valor y este valor es especificado en la declaración de devolución que finalizó con la suma: en este caso particular, el valor de la variable local r, que al momento de la declaración de devolución tenía un valor de 8.
Por lo tanto, la llamada a addition es una expresión con el valor devuelto por la función y en este caso, ese valor 8 se asigna a z. Es como si toda la llamada a la función (addition(5,3)) hubiera sido reemplazada por el valor que devuelve (es decir, 8).
Entonces main simplemente imprime este valor llamando:
cout << "The result is " << z;
En realidad, se puede invocar una función varias veces dentro de un programa y naturalmente su argumento no esta limitado solo a los literales:
Similar a la función addition en el ejemplo anterior, este ejemplo define una función de resta ó substracción que simplemente devuelve la diferencia del valor de esos dos parámetros. Esta vez, main llama a esta función varias veces, lo que demuestra más formas posibles de llamadas teniendo en cuenta que cada llamada de función es en sí misma una expresión que se evalúa a medida que el valor retorna. Una vez más, usted puede pensar de este como si la llamada a la función ha sido reemplazada por el valor devuelto:
z = substraccion (7,2);
cout << "El primer resultado es " << z;
Si reemplazamos la llamada de la función por el valor retirando (es decir,5) tendríamos:
z = 5;
cout << "El primer resultado es " << z;
Con el mismo procedimiento, podríamos interpretar:
cout << "El segundo resultado es "<< substraccion (7,2);
como:
cout << "El segundo resultado es " << 5;
Ya que 5 es el valor devuelto por substaccion(7,2).
En el caso de:
cout << "El tercer resultado es " << substraccion(x,y);
Los argumentos pasados en substraccion son variables en lugar de literales. Eso también es válido y funciona muy bien. La función se llama con los x y y que tienen en el momento de la llamada valores de 5 y 3 respectivamente y devuelven 2 como resultado.
En el cuarto párrafo todo es nuevamente similar:
z = 4 + substraccion(x,y);
La única adición es que ahora la llamada a la función también es un operando de una operación de suma. Nuevamente, el resultado es el mismo como si la función llamada fuese reemplazada por este resultado: 6. Tenga en cuenta que gracias a la propiedad conmutativa de las adiciones, lo anterior se puede también escribir como:
z = substraccion(x,y) + 4;
Con exactamente el mismo resultado. Tenga en cuenta también que el punto y coma no necesariamente vá después de la llamada a la función, sino como siempre, al final de la declaración completa.
Nuevamente, por lógica podríamos ver fácilmente de nuevo a esta, reemplazando las llamadas de función por su valor devuelto:
z = 4 + 2; //igual que z = 4 + substraccion(x,y);
z = 2 + 4; //igual que z = substraccion(x,y) + 4; 


Ahora que hemos llegado hasta aquí, no olvidemos de practicar más y más hasta fijar estos conocimientos; luego pasa al siguiente episodio de este interesante tutorial!

Publicar un comentario

Con la tecnología de Blogger.