Documentos de Académico
Documentos de Profesional
Documentos de Cultura
11funciones 1230518770746262 2
11funciones 1230518770746262 2
Funciones
Qu son?Para qu sirven?
Son un grupo de sentencias bajo el mismo nombre que realizan una tarea especfica. Sirven para facilitar la resolucin de problemas mediante la aplicacin del paradigma Dividir y Conquistar.
Los programas son usados por un usuario externo. Las funciones son utilizadas por un programador. El usuario del programa Hola Mundo no conoce que es la funcin printf. El programador que usa printf no siempre conocer explcitamente como sta hace para mostrar informacin en pantalla. El programador que escribi printf conoce exactamente su funcionamiento interno.
Conceptos Bsicos
Funcin
Grupo de sentencias bajo el mismo nombre que realizan una tarea especfica.
Llamada a una funcin
Una vez llamada la funcin, esta hace su trabajo, y regresa al mismo punto donde fue llamada.
Funciones
Vamos a conocer tres cosas muy importantes sobre las funciones:
Cmo se declaran? Cmo se implementan?, y Cmo se usan?
Declaracin de Funciones
De forma similar a las variables, las funciones deben ser declaradas: La forma de declarar una funcin es siguiendo la forma predefinida:
tipoDatoRetorno nombreFuncion(lista parmetros);
Por ejemplo:
int potencia(int base, int exponente); float farenheitACelsius(double celsius);
Implementacin de Funciones
int potencia(int base, int exponente) { sentencias; }
La primera lnea se escribe igual que en la declaracin, pero sin el punto y coma.
float farenheitACelsius(double celsius) { Entre llaves se escriben sentencias; las sentencias que } ejecutan lo que debe
realizar la funcin
Cmo Retornar?
Si la funcin debe generar un valor, lo retornar usando la sentencia return dentro del cuerpo de la funcin. La forma de usarla es: return (variable o expresin que se debe retornar); Esto especifica que la funcin debe terminar, retornando el valor calculado. Hay funciones que no retornan datos, en este caso, se puede usar return, pero sin mencionar una expresin. return;
Uso de Funciones
Como las funciones siempre retornan un valor, el uso de una funcin consiste en utilizar el valor de retorno. Se lo puede hacer de dos formas:
Almacenar el valor de retorno en una variable que deber ser del mismo tipo de dato que el tipo de dato de retorno de la funcin. Utilizar el valor de retorno en una expresin.
Nmeros Pseudoaleatorios
Secuencia pre-establecida de nmeros aleatorios La misma secuencia para cada llamada a la funcin
Librera MATH
La librera math.h permite al programador efectuar clculos matemticos comunes a travs de funciones.
Numero ceil(x) floor(x) fabs(x) fmod(x,y) sqrt(x) pow(x,y) log(x) log10(x) exp(x) sin(x) cos(x) tan(x) Descripcion
redondea x al entero mas pequeo no menor que x redondea x al entero mas grande no mayor que x valor absoluto de x residuo de x/y como numero de punto flotante raiz cuadrada de x x elevado a la potencia y logaritmo natural de x(base e) logaritmo de x(base 10) funcion exponencial seno trigonometrico de x(en radianes) coseno trigonometrico de x(en radianes) tangente trigonometrico de x(en radianes)
Ejemplo ceil(9.2) es 10.0 ceil(-9.8) es 9.0 floor(9.2) es 9.0 floor(-9.8) es 10.0 fabs(-9.5) es 9.5 fmod(13.657, 2.333) es 1.992 sqrt(9.0) es 3.0 pow(2,7) es 128 log10(x) log(2.718282) es 1 exp(0.1) es 2.71828 sin(0.0) es 0.0 cos(0.0) es 1 tan(0.0) es 0
Funciones Predicado
Las funciones que retornan valores lgicos se conocen como funciones predicado. Llamar a una funcin de predicado es equivalente a hacer una pregunta donde la respuesta puede ser Verdadera (TRUE) o Falsa (FALSE).
Si vemos slo el programa principal, tiene sentido, pues se imprime el factorial de todos los nmeros hasta el 10
int Factorial (int n) { int fact, i; fact = 1; for(i = 1; i <=n; i++) fact = fact * i; return (fact); }
Si vemos slo la funcin, tiene sentido, pues se encarga de calcular el factorial de la variable n
1 2 6
n 0 1 2 3 expr 1 2 6
Variables Locales
En la funcin Factorial se usa una variable i, y en el programa principal se usa otra variable i, pero no parece que se usaran para lo mismo, son diferentes?. De hecho, si son diferentes. Cada funcin puede usar sus propias variables, y estas slo sern vlidas dentro de la funcin, se conocen como variables locales.
main i
La variable i es local a la funcion main
fact
Al llamar a la funcin Factorial, se crean 3 variables locales a Factorial, pueden tener cualquier nombre, en este caso: n, fact e i. Factorial Las variables locales del main aun existen, pero, no se pueden ver mientras Factorial este activa. i Cuando todo Factorial termina, retorna el 1 valor, y las variables locales al main permanecen iguales como antes de la llamada.
Ms sobre
Un tipo especial de funciones: Procedimientos
Procedimientos
Existen funciones que no retornan ningn valor, como printf:
Implementacin de Procedimientos
void mostrarMenu (void) { printf printf printf printf printf (1. (2. (3. (4. (5. Tabla de Sumar\n); Tabla de Restar\n); Tabla de Multiplicar\n); Tabla de Dividir\n); Salir\n);
Paso de Parmetros
Ahora que conocemos de funciones, y sabemos crearlas, podemos crear una funcin que reciba dos valores y los retorne, intercambiados. Podramos decir que el prototipo sera: void main()
{ int x, y; printf(Ingrese x:); scanf(%d,&x); printf(Ingrese y:); scanf(%d,&y); printf(x = %d, y= %d, x, y); intercambiar(x,y); printf(x = %d, y= %d, x, y); } void intercambiar(int a, int b) { int tmp; tmp = a; a = b; b = tmp; }
main x
4 a
Intercambiar b
tmp
3 4
4 3
void main() {
scanf(%d,&x);
printf(Ingrese y:); scanf(%d,&y); printf(x = %d, y= %d, x, y); intercambiar(&x,&y); printf(x = %d, y= %d, x, y); } void intercambiar(int *a, int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; }
main x
3 4
a
4 3
b
Intercambiar tmp
3 4
3 4
Refinamiento
Cuando un problema es muy grande, se busca separarlo, para resolver todo por partes. Esto es ventajoso: Las partes ms pequeas son mas fciles de entender Si algo falla, el error es mas fcil de encontrar. Al escribir un programa, usualmente se piensa en el programa principal (main),y se piensa en las tareas ms importantes. Se piensa en dividir el programa en componentes individuales, los cuales pueden ser a su vez, divididos en piezas ms pequeas. Esto se conoce como diseo top-down, o refinamiento paso a paso.
Un Problema ms Grande
Se requiere escribir un programa que muestre el Dar Instrucciones calendario completo de un ao dado, que no puede ser Imprimir Mes menor a 1900.
Ingreso y Validacion de Ao
Mostrar Nombre del Mes Determinar que dia de la semana fue el primer dia del mes
Calendario
Dar Instrucciones
Pedir Ao
Calcular el dia de la semana del primer dia del ao, contando el total de das desde 1900 hasta el ao actual, considerando los aos bisiestos
Calcular el dia de la semana del primer dia del mes, sumndole al primer dia del ao, el total de das hasta el mes actual, considerando el total de das de cada mes