180 likes | 537 Views
Funciones “En C”. Semestre de Otoño 2006. Claudio Gutiérrez-Soto. Aprendizajes Esperados. Contextualización de las funciones Definición de Funciones. Funciones.
E N D
Funciones“En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto
Aprendizajes Esperados • Contextualización de las funciones • Definición de Funciones
Funciones • Sea C(x) una definición de la complejidad de un problema x y E(x) una función que define el esfuerzo (en tiempo) requerido para resolver un problema x. Para dos problemas, p1 y p2 , si C(p1) > C(p2) 1.a se deduce que E(p1) > E(p2) 1.b
Funciones Para un caso general, este resultado es intuitivamente obvio. Se tarda más tiempo en resolver un problema difícil. Se ha encontrado otra propiedad interesante, a partir de la experimentación sobre la resolución humana de problemas. Se trata de lo siguiente: C(p1 + p2) > C(p1) + C(p2) 1.c
Funciones • La ecuación 1.c indica que la complejidad de un problema compuesto por p1 y p2 es mayor que la complejidad total cuando se considera cada problema por separado . Considerando la desigualdad 1.c y la condición implicada por las desigualdades 1.a y 1.b, se deduce que : E(p1+p2) > E(p1) + E(p2) 1.d
Funciones • Esto nos lleva a una conclusión del tipo “Divide y Vencerás". • Por consiguiente deberemos considerar las funciones como “Cajas Negras", las cuales se encargaran de ejecutar una tarea especifica. • Por lo tanto deberemos concentrarnos en el "Diseño Global de Programa" en lugar de los detalles.
Funciones La estructura de una función es como sigue: tipo_de_funcion nombre_de_la_funcion(argumentos) { Cuerpo de la Función return(variable ó valor); /* opcional sólo cuando la función es de tipo void*/ }
Funciones • Donde el tipo_de_funcion corresponde al tipo de datos que retorna ó devuelve dicha función, la cual puede ser del tipo entero ( int ) , flotante (float), carácter (char )
Funciones • argumentos: corresponde a valores recibidos por la función, los cuales también se deben definir de un tipo determinado, como si se tratase de una definición de variable común y corriente, cabe destacar además que no necesariamente una función debe recibir un valor, si no que esta puede estar vacía. La estructura de los argumentos pueden ser: nombre_de_la_funcion(tipo_dato arg1,tipo_dato arg2,...,tipo_dato argN)
Funciones ó también: nombre_de_la_funcion(arg1, arg2,..., argN) tipo_dato arg1,tipo_dato arg2,...,tipo_dato argN; { Cuerpo de la Función return(variable ó valor); }
Ejemplo • Crear un programa que sume dos valores utilizando una función llamada suma, la cual recibe como argumentos de tipo entero.
Ejemplo #include<stdio.h> #include<conio.h> int suma(int a,int b); void main() { int a,b,result; clrscr( ); printf("Ingrese el primer valor \n"); scanf("%d",&a); printf("Ingrese el segundo valor \n"); scanf("%d",&b); result=suma(a,b); //se ingresan las variables //adecuadas como parámetros y el valor devuelto por //la función es asignada a la variable result. printf("El resultado es : %d \n",result); } int suma(int a,int b) { return(a+b); }
Otro Forma #include<stdio.h> #include<conio.h> int suma(int a,int b); void main() { int a,b,result; clrscr( ); printf("Ingrese el primer valor \n"); scanf("%d",&a); printf("Ingrese el segundo valor \n"); scanf("%d",&b); result=suma(a,b); printf("El resultado es : %d \n",result); } int suma(int a,int b) { int result; result=a+b; return(result); }
Ejercicio • Crear un programa que calcule la potencia utilizando funciones
Solución #include<stdio.h> #include<conio.h> float potencia(int base, int exp); void main( ) { int a,b; float pot; clrscr( ); printf("Ingrese el valor de la base \n"); scanf("%d",&a); printf("Ingrese el valor del exponente \n"); scanf("%d",&b); pot=potencia(a,b); printf("El resultado es: %f \n",pot); } float potencia(int base, int exp) { int i; float pot; if(exp>=0) for(i=1,pot=1.0 ; i<=exp ; i++) pot=pot*base; else{ for(i=1,pot=1.0 ; i<= (-1*exp) ; i++) pot=pot*base; pot=1/pot; } return(pot); }
Conclusiones • La idea general es poder resolver el problema abstrayéndose de la implementación. • Es mejor dividir el problema, en pequeños subproblemas y luego resolver dichos subproblemas. (Dividir para Vencer) • Las funciones reciben argumentos. Dichos argumentos se utilizan como variables que sólo existen en el cuerpo de esa función. • Las funciones son del tipo, de acuerdo al valor que retornan.