-
Notifications
You must be signed in to change notification settings - Fork 1
Funciones cpp
#include <iostream>
using namespace std;
//Declaración o prototipo de función
int suma(int a, int b);
int main(){
int a,b;
cout << "Ingresa dos enteros: \n";
cin >> a >> b;
cout << "La suma es: " << suma(a,b);
cout << endl;
}
//Definción de la función
int suma(int a,int b){
return a + b;
}
No es obligatorio hacerlo de esta manera, pero si ayuda a mantener más entendible el código.
Si nos damos cuenta lo primero que vemos en el código de arriba, es que después de definir el namespace a utilizar, vemos una porción de código, esta porción de código es la declaración o prototipo de función, de esta manera le decimos al compilador que existe o vamos a una tener una función llamada suma
de tipo entero y que recibe como parámetros dos enteros.
Para definir una función se hace de la siguiente manera
tipo nombre(parametros);
Aquí se pone lo que hace la función, se trata de mantener separado la definición y la declaración para que el código seas mas limpio y legible, también pueden estar contenidas en archivos separados, esto se verá más adelante, es mas una cuestión de estética, pero que en códigos enormes se aprecia mucho.
Por lo que en vez de poner el prototipo podemos poner diretamente la definición.
Al igual que las variables, las funciones también tienen tipos, que son los mismos de las variables, int, float, double, char, bool y void
, hay mas tipos de datos pero son mas para propósitos específicos.
Todos los datos salvo void
nos devuelven un valor del tipo al que hacen referencia, aquí return
toma cierta relevancia.
Si vemos en la definición de la función
int suma(int a,int b){
return a + b;
}
Tenemos nuevamente return
, aquí la función retorna directamente el valor de la suma, ya que también podríamos crear una variable y guardar el resultado ahí.
Si queremos retornar float
definimos la función como tipo float
, y así con cada tipo, si no queremos retornar nada, hay que definirla como tipo void
.
Los valores retornados por una función se pueden guardar en otra variable o usarse directamente en el flujo de salida.
Son los tipos de datos o variables que va a recibir la función al momento de llamarla, puede contener mas de un parámetro o no contener ninguno, los parámetros también pueden ser arreglos.
Son parámetros a los que les definimos un valor en caso de que uno de los parámetros no se manden a la función cuando sea llamada.
#include <iostream>
using namespace std;
//Declaración o prototipo de función
int suma(int a = 3, int b = 5;
int main(){
int a,b;
cout << "Ingresa un entero: \n";
cin >> a;
cout << "La suma es: " << suma(a);
cout << endl;
}
//Definción de la función
int suma(int a = 3,int b = 5){
return a + b;
}
Al llamar a la función, no le pasamos el parámetro b
, normalmente daría error pero al darle un valor por defecto, cuando se ejecute la función tomara ese valor, de esta manera podemos asegurar que la función se ejecute en caso de no mandar correctamente los parámetros.
Cuando se pasa un parámetro por valor, simplemente se pasa una copia de la variable, de manera que aunque pareciera ser que se modifica en la función realmente no es así, solo se modifico la copia pero no la variable original, aquí entra en juego el ámbito local.
Sino agregamos ningún tipo de operador, los parámetros se pasan por valor
int suma(int a, int b);
Cuando se pasa un parámetro por referencia en realidad le estamos pasando su dirección de memoria, de momento no nos centremos tanto en la memoria; en realidad estamos mandando la variable original, por lo que si la modificamos en la función, aquí si estaremos modificando su valor original.
Si pasamos un arreglo o una matriz a una función, siempre se pasa por referencia.
Para pasar por referencia hay que usar el operador de dirección &
.
int suma(int &a, int &b);
.
.
.
cout << "La suma es: " << suma(a,b);
Aquí vuelve a aparecer el famoso ámbito local, si en la función suma
declaramos una variable, esa variable solo será utilizable y conocida dentro de la función y cuando la función retorne o digamos el programa regrese a la función principal, todo lo contenido dentro de la función suma
no podrá ser utilizado por la función principal ni por otra función.
.
.
cout << "La suma es: " << suma(a,b) << c;
.
.
int suma(int a,int b){
int c = a+b;
return a;
}
Aunque la variable c
esta definida en la función suma
no lo está en la función principal, ya que el ámbito en el que se encuentra definidad la variable c
es el ámbito de la función suma
y solo puede ser utilizada ahí, por lo que el código nos daría error.
Introducción | Funciones anónimas | Recursividad | Macros | Apuntadores |
---|