viernes, 23 de marzo de 2012

Unidad III Funcones



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.










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

No hay comentarios:

Publicar un comentario