C++ || Funciones: Definición, División y Ejemplos

Como funciona una función en cpp


Una función es un bloque de código que está separado de la función principal main y realiza una función específica. La función después se manda a llamar dentro de la función main para ser utilizada todas las veces que sea requerida; Pueden crearse más de una función.

______________________________________________

ÍNDICE

______________________________________________


División de una Función

Las funciones deben tener dos aspectos fundamentales: 

1. Prototipos de función 

2. Definición de la función


Prototipos de función

Los prototipos de función son básicamente la declaración de la función, la forma que le decimos al programa que la función existe; es como la declaración de variable, que se presenta como ya lo explicamos, solo que en vez de llaves, terminará en un punto y coma (;). Se ubica arriba de la función principal. 

int numero(int num1, int num2); 

Una dato común que se usa seguido es que, al crear el prototipo de función, no es necesario determinar el nombre de las variables de los parámetros, simplemente con el tipo de dato que será es más que suficiente. 

int numero(int, int);

No obstante, al definir la función es obligatorio determinar los nombres de las variables. 


Definición de función

La sintaxis de una función se determina igual que la función principal main. Primero el tipo de dato que va a ser (int, float, char, double, void), luego el nombre de la función y entre paréntesis los parámetros. Seguido de estos, se abrirán unas llaves, y dentro de estas el conjunto de códigos que se va a ejecutar cuando se llame a la función. 
tipo nombre(tipo variable, tipo variable){ 
           conjunto de código; 
       } 

Hablando del tipo de dato que tendrá la función debemos de tener en cuenta de que, dependiendo del tipo de dato que se le coloque, es el tipo de dato que la función va a devolver. Es decir, que si hacemos una función de tipo entero (int) nos retornará un valor de tipo entero, y así con los demás tipos de datos. 
Como dato, el tipo de dato void es uno que no retornará ningún tipo de valor, no retornará nada.

No es aconsejable definir las funciones encima de la función principal. Aunque no cause ningún error, es una mala práctica de programación porque se vería demasiado desordenado.

Los parámetros también tienen su sintaxis. Dentro de los paréntesis para cada parámetro se le asignará su tipo de dato y el nombre de la variable (lo mismo debe hacerse en el prototipo de función, aunque en el prototipo, como ya se dijo, es opcional colocar el nombre de variable). Se colocara tantos parámetros como se requieran para la función.

Algunos ejemplos: 

int numero(int num1, int num2){...} 

       char mayuscula(char letra1, char letra2, char letra3){...}

       float descuento(float precio1){...}

 

¿Cómo llamar una función? 

Para llamar la función se debe de escribir, dentro de la función principal, el nombre de la misma, y dentro de los paréntesis, las variables que serán los parámetros de la función (si es que se enviará alguno). 

Cuando se llama una función, no importa si las variables no tienen el mismo nombre de los parámetros de la definición de la función, ya que estos tomaran los valores dentro de las variables y los almacenaran como suyos para utilizarlos en la función. 

Hay que tener cuidado de como colocar las variables de los parámetros, ya que puede causar resultados distintos si se colocaran de forma distinta. Ejemplo:

Existe una función que se llame potencia, que saque la potencia de un número base y su exponente. La función llama como parámetros primero al número base y después al exponente. Si se invirtieran estas variables al llamar a la función, daría un resultado completamente distinto.

int base = 2, exponente = 3;

potencia(base, exponente); // 8 (correcto)

       potencia(exponente, base); // 9 (incorrecto)

 

¿Quieres aprender sobre el Paso de Parámetros por Referencia? Entra a este Artículo:


¿Cómo mostrar una función? 

Hay dos formas de mostrar una función: 

1. La primera es crear una variable que almacene el dato que retornará la función; un ejemplo en código seria así: 

Imaginemos que hay dos variables, numero y exponente, donde numero almacenará el número base, y exponente almacenará la potencia a la que se va a elevar, y una función que se llame potencia que reciba dos parámetros, donde el primer parámetro sea el número base y el segundo el valor al que se elevará: 

#include <iostream>
using namespace std;

int potencia(int, int);

int main(){
	int numero = 5;
	int exponente = 3;
	int resultado = 0;
	
	resultado = potencia(numero, exponente);
	
	cout<<"El resultado es: "<<resultado<<endl; //125
	
	return 0;
}

int potencia(int base, int exp){
	int resultado = 1;
	
	for(int i=1; i<=exp; i++){
		resultado *= base;
	}
	
	return resultado;
}
La variable número se le asignó el valor 5, y a la variable exponente el valor 3. Se enviaron los datos a la función, la función hizo la potencia y retorno el resultado (125). 

Lo relevante es la forma en que mostramos el resultado. Creamos una variable llamada resultado que almacenará el valor que devuelva la función, y seguidamente lo mostramos con un cout. 

Esta es la primera forma en la que se puede mostrar una función (y personalmente la mejor). 

2. La segunda forma es más directa. Usaremos el mismo ejemplo de la primera forma:
#include <iostream>
using namespace std;

int potencia(int, int);

int main(){
	int numero = 5;
	int exponente = 3;
	int resultado = 0;

	cout<<"El resultado es: "<<potencia(numero, exponente)<<endl; //125
	
	return 0;
}

int potencia(int base, int exp){
	int resultado = 1;
	
	for(int i=1; i<=exp; i++){
		resultado *= base;
	}
	
	return resultado;
}
La diferencia de esta forma con la anterior es que se trata de mostrar la función directamente dentro del cout, sin almacenar su valor dentro de una variable. Tan simple como eso. 

¿Qué son las Variables Globales?

Las variables globales son aquellas que se encuentran fuera de cualquier función, las cuales pueden ser usadas por cualquier función en el programa. 
Esto es útil cuando una función va a usar las mismas variables que otra.

Usualmente se colocan encima de cualquier función (incluida la función principal).
Aquí un pequeño ejemplo de como se vería:
... int entero, float real;
       int main(){
       cout<<entero;
       cout<<real;
       ...} 
       void Mostrar(){ 
       cout<<entero;
       cout<<real; 
       ...}

Ejemplo de funciones: 

Un programa que tenga una función que multiplique dos números: 
#include <iostream>
using namespace std;

int multiplicar(int, int);

int main(){
	int num1, num2, resultado = 0;
	
	cout<<"Ingrese primer numero: ";
	cin>>num1;
	cout<<"Ingrese segundo numero: ";
	cin>>num2;
	
	resultado = multiplicar(num1, num2);
	
	cout<<"\nResultado: "<<resultado<<endl;
	
	return 0;
}

int multiplicar(int num1, int num2){
	int resultado;
	
	resultado = num1 * num2;
	
	return resultado;
}

Tal vez te interesen estas entradas