COMPONENTES DE UNA FUNCION
Una función
tiene tres componentes importantes:
Los parámetros, que son los
valores que recibe la función como entrada.
El código de la función, que son
las operaciones que hace la función. El resultado (o valor
de retorno)que es el valor final que entrega la función.
En esencia, una
función es un mini programa. Sus tres componentes son análogos a la entrada, el
proceso y la salida de un programa.
Declaración: una declaración es una sentencia que
introduce un nombre en una unidad de compilación, dándole
existencia semántica.
Argumentos: son los valores realmente suministrados
a un procedimiento cuando éste es invocado o llamado. En ocasiones se
considera sinónimo de parámetro, pero técnicamente no significan lo mismo.
Parámetro: Un parámetro es una
propiedad intrínseca de un procedimiento, dado que está incluido en su
definición.
Invocación de funciones
Las invocación de funciones se realiza colocando el nombre de la función y los argumentos actuales en el mismo orden que los parámetros formales correspondientes. Ejemplo:
void funcion (int x, char c);
...int z = 12;char ch = 'Z';funcion(ch, z); // Error: orden de argumentos cambiado !!funcion(z, ch); // Ok: invocación con orden correcto
valor de retorno de una función
Una función puede devolver cualquier tipo de valor a la función que la invoca; incluso main puede devolver un valor al ámbito en que se está ejecutando el programa, pero téngase en cuenta que aunque una función devuelva un valor, es potestad de la función invocante recibirlo o ignorarlo.
En otros lenguajes las funciones que no devuelven nada reciben el nombre de procedimientos ("Procedures"). Así pues, los procedimientos serían un caso particular de las funciones C++.
Ámbito o alcance de las variables
Es la parte del programa donde la variable es accesible.
Esta definición es también aplicable a constantes y objetos.
En C++ existen tres tipos de ámbitos:
- Global o de programa
- Local o de función.
- De bloque.
Variables globales.
Son variables declaradas fuera de cualquier función, normalmente al comienzo del programa.
// Ejemplo de variable global
#include <iostream>
using namespace std;
//se declara x como global.
int x = 1
Variables locales.
Las variables locales son las que se declaran dentro de una función. Son accesibles desde el punto donde se declaran hasta el final del bloque donde se han declarado.
#include <iostream>
using namespace std;
bool es_primo(int);
int main()
{ int numero, i; // variables locales de main
cout << "Introduzca 10 numeros enteros > 0: ";
for(i=1;i<=10;i++)
{
do
{
cout << "numero " << i << ": ";
cin >> numero;
}while(numero <= 0);
if (es_primo(numero))
cout << "Es primo" << endl;
else
cout << "No es primo" << endl;
}
system("pause");
}
Variables de bloque.
Una función puede contener bloques definidos dentro de otros. Los límites de los bloques están definidos por las llaves de apertura y cierre { }.
Paso de argumentos por valor:
Al realizar la definición de la función colocamos los parámetros que ésta recibe especificando el tipo de dato de los mismos.Luego, cuando hacemos el llamado y especificamos los argumentos, estos se evalúan y se le pasa a la función una copia de los mismos. A esto es lo que llamamos paso por valor
Paso de argumentos por referencia:
En el pasaje por referencia se pasa a la función las direcciones de memoria de las variables en cuestión en lugar de su valor. A diferencia del paso por valor, aquí no se realizan copias de las variables sino que se trabaja sobre la dirección de memoria que pasamos, lo que nos permite modificar el valor de la variable en cuestión.
Luego hacemos el llamado a la función de la misma
manera, pero pasando las direcciones de memoria de x e y:
Obteniendo lo siguiente al compilar el programa y
ejecutarlo:
}
Paso de argumentos por referencia:
En el pasaje por referencia se pasa a la función las direcciones de memoria de las variables en cuestión en lugar de su valor. A diferencia del paso por valor, aquí no se realizan copias de las variables sino que se trabaja sobre la dirección de memoria que pasamos, lo que nos permite modificar el valor de la variable en cuestión.
Luego hacemos el llamado a la función de la misma
manera, pero pasando las direcciones de memoria de x e y:
Obteniendo lo siguiente al compilar el programa y
ejecutarlo:







