Que es una función?
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.
Una función tiene un único nombre, al
utilizar éste nombre en otras partes del programa se pueden ejecutar los
enunciados contenidos en la función. A esto se le conoce como llamar a la
función. Una función puede ser llamada desde otra función.
Una función es independiente. Una función
puede ejecutar sus tareas sin interferencia en ó de otras partes del programa.
Una función ejecuta una tarea específica.
Esta es la parte fácil de la definición. Una tarea es un trabajo discreto que
su programa debe ejecutar como parte de su desempeño general, por ejemplo
mandar una línea de texto a impresión, ordenar una lista ó hacer un cálculo
matemático.
Una función opcionalmente devuelve un valor
al programa que la llamó. Cuando un programa llama a una función se ejecutan
los enunciados contenidos en ésta, si si programa lo requiere, éstos enunciados
pueden devolver un valor al programa que llamó a la función.
Cuando un programa llama a una función, la ejecución del código salta a
la posición inicial definida por el nombre de la función, el programa ejecuta
los enunciados contenidos en ésta y posteriormente el programa que llamó a la
función continúa en la línea de código siguiente. Una función bién diseñada
ejecuta una tarea específica y fácil de entender. Es recomendable ante una
tarea complicada, dividirla en múltiples funciones y entonces llamarlas a su
debido momento.
Prototipos de una función.
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 ";". La estructura de un prototipo es:
[extern|static] <tipo_valor_retorno>
[<modificadores>] <identificador>(<lista_parámetros>);
En general, el prototipo de una función se
compone de las siguientes secciones:
Opcionalmente, una palabra que especifique
el tipo de almacenamiento, puede ser extern o static. Si no se especifica
ninguna, por defecto será extern.
El tipo del valor de retorno, que puede ser
void, si no necesitamos valor de retorno. En C++ es obligatorio indicar el tipo
del valor de retorno.
El identificador de la función. Es
costumbre, muy útil y muy recomendable, poner nombres que indiquen, lo más
claramente posible, qué es lo que hace la función, y que permitan interpretar
qué hace el programa con sólo leerlos. Cuando se precisen varias palabras para
conseguir este efecto se puede usar alguna de las reglas más usuales. Una
consiste en separar cada palabra con un "_". Otra, consiste en
escribir la primera letra de cada palabra en mayúscula y el resto en minúsculas.
Por ejemplo, si hacemos una función que busque el número de teléfono de una
persona en una base de datos, podríamos llamarla "busca_telefono" o
"BuscaTelefono".
Una lista de declaraciones de parámetros
entre paréntesis. Los parámetros de una función son los valores de entrada (y
en ocasiones también de salida). Para la función se comportan exactamente igual
que variables, y de hecho cada parámetro se declara igual que una variable. Una
lista de parámetros es un conjunto de declaraciones de parámetros separados con
comas. Puede tratarse de una lista vacía. En C++ este procedimiento se considera
obsoleto, se usa simplemente "func()".
Por ejemplo:
int Mayor(int a, int b);
Un prototipo sirve para indicar al
compilador los tipos de retorno y los de los parámetros de una función, de modo
que compruebe si son del tipo correcto cada vez que se use esta función dentro
del programa, o para hacer las conversiones de tipo cuando sea necesario.
En el prototipo, los nombres de los
parámetros son opcionales, y si se incluyen suele ser como documentación y
ayuda en la interpretación y comprensión del programa. El ejemplo de prototipo
anterior sería igualmente válido si se escribiera como:
int Mayor(int, int);
Esto sólo indica que en algún lugar del
programa se definirá una función "Mayor" que admite dos parámetros de
tipo int y que devolverá un valor de tipo int. No es necesario escribir nombres
para los parámetros, ya que el prototipo no los usa. En otro lugar del programa
habrá una definición completa de la función.
Normalmente, los prototipos de las
funciones se declaran dentro del fichero del programa, o bien se incluyen desde
un fichero externo, llamado fichero de cabecera, (para esto se usa la directiva
#include, que veremos en el siguiente capítulo).
las funciones son externas por defecto.
Esto quiere decir que son accesibles desde cualquier punto del programa, aunque
se encuentren en otros ficheros fuente del mismo programa.
En contraposición las funciones declaradas
static sólo son accesibles dentro del fichero fuente donde se definen.
Llamada por valor y llamada por referencia
dos formas de invocar funciones en muchos lenguajes llamados llamada por valor y la llamada por referencia.
cuando los argumentos se pasan en llamada por valor, se efectúa una copia del valor del argumento y esta se pasa ala función llamada. las modificaciones a la copia no afecta el valor original de la variable del llamador.cuando un arguento es pasado a llamada por referencia, el llamador de hecho permite que la función llamada modifique el valor original de la variable.
Llamada por valor debería se utilizada cuando la función no necesite modificar el valor original del llamador. Mientras que la llamada por referencia debería de utilizarse en funciones llamadas confiables , que necesitan modificar la variable original.
dos formas de invocar funciones en muchos lenguajes llamados llamada por valor y la llamada por referencia.
cuando los argumentos se pasan en llamada por valor, se efectúa una copia del valor del argumento y esta se pasa ala función llamada. las modificaciones a la copia no afecta el valor original de la variable del llamador.cuando un arguento es pasado a llamada por referencia, el llamador de hecho permite que la función llamada modifique el valor original de la variable.
Llamada por valor debería se utilizada cuando la función no necesite modificar el valor original del llamador. Mientras que la llamada por referencia debería de utilizarse en funciones llamadas confiables , que necesitan modificar la variable original.
Pozo
salvador (2000).Curso c++http://c.conclase.net/curso/index.php?cap=015b#FUN2_StructParam
Gomez,Virgilio (1999). FuncionesC++ http://www.modelo.edu.mx/univ/virtech/frontal/progcpp.htm
Como programar en C/C++
H.M.Deitel/P.J.Deitel
segunda edicion
Prence Hall
Como programar en C/C++
H.M.Deitel/P.J.Deitel
segunda edicion
Prence Hall