jueves, 22 de marzo de 2012

Tarea FUNCIONES
¿Que es una función?
Una función es un modulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor a la parte principal del programa u otra función o procedimiento que la invoque.
La forma general de una función es:
Tipodato Nomfun(parametros)
{
cuerpo de instrucciones;
return [dato,var,expresion];
}
Donde tipodato especifica el tipo de dato que regresara la función.
La instrucción RETURN es quien regresa un y solo un dato a la parte del programa que la este llamando o invocando, sin embargo es de considerar que return puede regresar un dato, una variable o una expresión algebraica(no ecuación o formula).
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.



¿Qué es un prototipo de una función?
Un prototipo de función le da información importante al compilador. En el prototipo se indican el tipo de dato que retorna la función, el número, tipo y orden de parámetros que recibe la misma. El compilador utiliza los prototipos para verificar las llamadas a funciones. Antes el prototipado no existía y el compilador no podía detectar ciertos errores.           
Ejemplo:
int maximo(int, int, int);
Este prototipo indica que la función de nombre máximo retorna como resultado un valor de tipo entero. Además informa que la función debe ser llamada con tres parámetros del tipo entero también.
El prototipo también sirve para la coerción de argumentos, o sea, si la función es llamada con valores de otro tipo diferentes a los definidos en el prototipo de esa función, el compilador tratará de convertir esos valores a los tipos de datos correspondientes declarados en el prototipo (esto funcionará siempre y cuando sea posible la conversión entre esos tipos de datos). Por ejemplo, si la función espera un entero y recibe un decimal, intentará convertir ese decimal al entero truncando la parte decimal, lo cual puede generar errores si la exactitud de ese dato es importante.
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. El tipo del valor de retorno, que puede ser void, si no necesitamos valor de retorno.
Modificadores opcionales. Tienen un uso muy específico, de momento no entraremos en este particular, lo veremos en capítulos posteriores.
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, que yo prefiero, consiste en escribir la primera letra de cada palabra en mayúscula y el resto en minúsculas.
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.
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);
Funciones con y sin parámetros, funciones con y sin entrega de valores.
Normalmente, las funciones operan sobre ciertos valores pasados a las mismas ya sea como constantes literales o como variables, aunque se pueden definir funciones que no reciban parámetros. Existen dos formas en C++ de pasar parámetros a una función; por referencia o por valor. El hecho es que si en una declaración de función se declaran parámetros por referencia, a los mismos no se les podrá pasar valores literales ya que las referencias apuntan a objetos (variables o funciones) residentes en la memoria; por otro lado, si un parámetro es declarado para ser pasado por valor, el mismo puede pasarse como una constante literal o como una variable. Los parámetros pasados por referencia pueden ser alterados por la función que los reciba, mientras que los parámetros pasados por valor o copia no pueden ser alterados por la función que los recibe, es decir, la función puede manipular a su antojo al parámetro, pero ningún cambio hecho sobre este se reflejará en el parámetro original.

También se puede omitir el prototipo si se hace la definición antes de cualquier llamada a la función, es decir, en la zona de declaración de prototipos.
Como no es necesario que una función acepte parámetros, entonces la cota inferior es obviamente 0 (cero). La cota superior depende del compilador que uses.
El vocablo 'return' aparece al comienzo de una sentencia. Por lo tanto, esta sentencia puede aparecer tantas veces como requiera la lógica de la función. Si la función retorna un valor, entonces debe aparecer al menos una sentencia 'return' y recomiendo que sea libre de condiciones. Varios compiladores se quejarán si no "ven" una sentencia 'return' "suelta", sin que dependa de condiciones como la sentencia 'if'.
Cuando una función no tiene parámetros, es porque no realiza operaciones con valores externos, o que dentro de las instrucciones se solicitan los datos necesarios para calcular y ejecutar las operaciones.
Cuando se retorna un valor al lugar donde se  mando ejecutar la funciones, este se puede utilizar en operaciones dentro de ese bloque, por ejemplo a continuación la variable que regrese se podría imprimir en una pantalla desde el bloque principal. También existen casos donde la función calcula y utiliza el valor encontrado, sin necesidad de retornar un valor al bloque principal, aunque en estos casos se recomiendo utilizar Void en lugar de main, ya que el segundo exige que se regrese un valor y en el primero solo se excluye el vocablo return del código.
int Mayor(int a, int b)
{
   if(a > b) return a; else return b;
}
*Estructura void

void mayor ()
{
if (a>b)
cout<<"Mayor"<<a<<endl;
else
cout<<"Mayor"<<b<<endl;
}

No hay comentarios:

Publicar un comentario