Funciones en C

Anuncio
Funciones en C
Felipe Osorio
http://www.ies.ucv.cl/fosorio
Instituto de Estadı́stica
Pontificia Universidad Católica de Valparaı́so
Marzo 26, 2015
1/8
Funciones en C
I C es esencialmente funciones!
I Provee un mecanismo para producir programas más eficientes.
I Programas son más fáciles para entender, modificar y mantener.
2/8
Definiendo una función
El formato general para definir funciones es el siguiente:
tipo nombre función(argumento1 , argumento2 , . . . )
donde tipo representa uno de los siguientes tipos básicos:
1. int
2. float
3. double
4. char
5. void
3/8
Función valor absoluto
# include < stdio .h >
/* declaración de funciones */
double fun_abs ( double );
main ()
{
/* función ’ principal ’ */
double number ;
printf ( " Ingrese un numero : " );
scanf ( " % lf " , & number );
number = fun_abs ( number );
printf ( " El valor absoluto es % g \ n " , number );
return ;
}
double fun_abs ( double x )
{
/* calcula el valor absoluto de un número real */
if ( x < 0.0)
x = -x ;
return x ;
}
4/8
Recursividad
I Las funciones en C tienen la facultad de ser invocadas por ellas mismas.
I Esta caracterı́stica se denomina recursividad.
I Aunque esta caracterı́stica permite construir programas flexibles, no es muy
recomendable (puede consumir mucha memoria)
5/8
Cálculo del factorial de n
El factorial de n se define como el producto de todos los enteros desde 1 a n,1 es decir:
n! = 1 · 2 · · · (n − 1) · n.
Se puede notar que, el factorial de n, satisface la relación de recurrencia:
n! = (n − 1)! n
1 Recuerde que 0! = 1.
6/8
Cálculo del factorial de n: versión recursiva
long int factorial ( long int n )
{
/* calcula el factorial de ’n ’. versión recursiva */
long int ans ;
if ( n == 0)
ans = 1;
else
ans = n * factorial ( n - 1);
return ans ;
}
7/8
Trabajando con arreglos
# include < stdio .h >
/* declaracion de funciones */
double minimo ( double a [] , int n );
main ()
{
/* función ’ principal ’ */
double a [5] = {157. , -8. , -37. , 26. , 10.} ,
b [7] = {12.3 , 25.1 , 31. , 5.5 , 3.2 , 8. , 9.9};
printf ( " minimo de a : % g \ n " , minimo (a , 5));
printf ( " minimo de b : % g \ n " , minimo (b , 7));
return ;
}
double minimo ( double a [] , int n )
{
double ans ;
int i ;
ans = a [0];
for ( i = 1; i < n ; i ++) {
if ( a [ i ] < ans )
ans = a [ i ];
}
return ans ;
}
8/8
Intercambiar dos números
# include < stdio .h >
/* declaracion de funciones */
void i n t e r c a m b i a r _ 2 _ n u m e r o s ( double , double );
main ()
{
/* función ’ principal ’ */
double a = 0. , b = 1.;
printf ( " a = %g , b = % g \ n " , a , b );
printf ( " \ n I nt er c am bi an d o ...\ n " );
i n t e r c a m b i a r _ 2 _ n u m e r o s (a , b );
printf ( " a = %g , b = % g \ n " , a , b );
return ;
}
void i n t e r c a m b i a r _ 2 _ n u m e r o s ( double a , double b )
{
double x ;
/* a <-> b */
x = a;
a = b;
b = x;
return ;
}
9/8
Descargar