4.3 Uso de funciones con parámetros

Ejemplo visto en clases

Elaborado por Alfonso Cervantes Luis Rogelio, Armas Zacarías Edgar Adrian, Espinosas Rosas Daniel Eduardo Periodo Ene-Junio 2017

Las funciones son un conjunto de instrucciones que realizan una tarea específica.

En general toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque en c++, tanto unos como el otro son opcionales, y pueden no existir.

PROTOTIPOS DE FUNCIONES.

En c ++ es obligatorio usar prototipos. Un prototipo es una declaración de una función. consiste en una presentación de la función, exactamente con la misma estructura que la definición, pero sin cuerpo y terminada con un ";"

En general, el prototipo de una función se compone de las siguientes secciones:

*Una palabra que se especifique el tipo de almacenamiento, puede se externo o estático. Si no se especifica ninguna, por defecto será externo.

* El tipo de valor de retorno puede ser void. En C++ es obligatorio indicar el tipo del valor de retorno.

*Modificadores opcionales. Tienen un uso muy especifico

* El identificador de la función es recomendable poner nombres que indiquen lo mas claramente posible lo que hace la función y que permita interpretar lo que hace el programa con solo leerlos.

*Lista de declaraciones de parámetros entre paréntesis. Los parámetros de una función son los valores de entrada y en ocaciones también de salida. En C++ este procedimiento se considera obsoleto, se usa simplemente "función(void)". Por ejemplo

int Mayor (int a, int b) ;

Ejemplo1. Código de función con parámetros (suma de dos números)

Al ejecutar el código anterior se visualiza la siguiente salida

Ejemplo 2

PARAMETRO POR VALOR Realizado por Rafael Carmona Moha

En C++ el paso por valor significa que al compilar la función y el código que llama a la función, ésta recibe una copia de los valores de los parámetros que se le pasan como argumentos. Las variables reales no se pasan a la función,

sólo copias de su valor.

Cuando una función debe modificar el valor de la variable pasada como parámetro y que esta modificación retorne a la función llamadora, se debe pasar el parámetro por referencia. En este método, el compilador no pasa una copia del

valor del argumento; en su lugar, pasa una referencia, que indica a la función dónde existe la variable en memoria.

La referencia que una función recibe es la dirección de la variable. Es decir, pasar un argumento por referencia es, simplemente, indicarle al compilador que pase la dirección del argumento.

PARAMETRO POR REFERENCIA Realizado por Javier Sánchez Torres

Como vimos las funciones por lo general reciben parámetros, éstos hasta el momento fueron pasados a la función mediante el "paso por valor" que consiste en hacer un copia del argumento, para que la función trabaje con la copia y no con el argumento original.

Esto significa que si la función modificara el valor, el original no se alterarla ya que estamos manejando una copia. Esto resulta bastante útil para asegurarnos de que la función no modifique nuestros argumentos de manera accidental.

Pero surgen dos problemas:

1.-Podríamos querer modificar el argumento original y no una copia.

1.-Con mucha cantidad de variables (o estructuras como veremos) el paso por valor (copiando) puede resultar un gasto excesivo de memoria.

Para resolver estos problemas contamos con las referencias y punteros, por el momento nos ocuparemos de las referencias.

Una referencia a una variable es un "alias" de la variable. Para indicarle a C++ que estamos hablando de una referencia y no una variable anteponemos al nombre el caracter ampersand (&).

Por ejemplo una referencia llamada refPresupuesto apuntando a un valor double se escribiría así:

double &refPresupuesto

Si quisieramos que una función trabaje con la variable original y no con una copia podríamos indicarle a la función que reciba el parámetro como una referencia.

Cuando una función se declara anteponiendo la palabra reservada void le estamos diciendo a C++ que esa función no devolverá valor alguno.

Como se comenta en el código, en la llamada de la función es importante notar que no hay manera de darse cuenta si el parámetro es pasado por referencia (modificable) o si es por valor (se le envía una copia a la función).

Otro ejemplo

Lobato Alor Noel Genaro