Está en la página 1de 39

Programacin

Funciones en C: Recursividad

Funciones en C
Agrupan un conjunto de instrucciones bajo el mismo nombre para realizar una tarea
especfica.
Facilitan la resolucin de problemas, dividiendo a ste en pequeos subproblemas.

Funciones en C
Una llamada a una funcin ejecuta el grupo de instrucciones de una funcin
Una vez que la funcin ha sido llamada, ejecuta sus instrucciones y luego regresa al
mismo punto donde fue llamada. Esta ltima accin se conoce como retorno.

Declaracin de Funciones
Al igual que las variables, las funciones deben ser
declaradas antes de usarse.
La forma de declarar una funcin es:

Ejemplo:

Implementacin de Funciones
int potencia (int base, int exponente)
{
/* Aqu, siempre entre llaves, se
escriben todas las instrucciones que debe
ejecutar la funcin */
}

La primera lnea se escribe igual que en


la declaracin, pero sin el punto y
coma.

Retorno en Funciones
Si la funcin debe retornar un valor, lo har usando la sentencia return
dentro del cuerpo de la funcin y en el lugar en que deba retornar.
La forma de usar esta sentencia es:
Esto especifica que la funcin debe terminar y devolver el valor de la
variable o expresin indicada.
Hay funciones que no retornan datos, en este caso puede usarse return,
de la siguiente forma:

Uso de Funciones
Para las funciones que retornan un valor, el uso de ellas consiste en cmo se
utiliza el valor retornado.

Se puede dar dos usos a ese valor:


Almacenar el valor de retorno en una variable (deber ser del mismo tipo de
dato de retorno de la funcin)
Utilizar el valor de retorno en una expresin.

Otro Ejemplo
void holamundo()
{
printf(HOLA MUNDO);
return;
}
main()
{
holamundo();
}

Otro Ejemplo
#include<stdio.h>
int sumar(int numero1, int numero2)
{
return numero1+numero2;
}
main()
{
int suma = sumar(5, 3);
printf(La suma es %d, suma);
}

Otro Ejemplo
#include<stdio.h>
main()
{
int suma = sumar(5, 3);
printf(La suma es %d, suma);
}
int sumar(int numero1, int numero2)
{
return numero1+numero2;
}

Otro Ejemplo
#include<stdio.h>
int sumar(int numero1, int numero2);
main()
{
int suma = sumar(5, 3);
printf(La suma es %d, suma);
}
int sumar(int numero1, int numero2)
{
return numero1+numero2;
}

Otro Ejemplo
#include<stdio.h>
int sumar(int numero1, int numero2)
{
return numero1+numero2;
}
main()
{
int a=5, b=3;
int suma = sumar(a, b);
printf(La suma es %d, suma);
}

Paso de Parmetros
Las funciones pueden, o no, recibir datos.
Existen dos formas de enviar los datos hacia una funcin:
Por Valor
Por Referencia

Paso de Parmetros Por Valor

El paso por valor enva una


copia de los parmetros a la
funcin, por lo tanto los
cambios que se hagan en ella
no son tomados en cuenta
dentro de la funcin main().

Paso de Parmetros Por Valor


Ejemplo:
#include<stdio.h>
void sumar_valor(int numero);
main()
{
int numero = 9;
sumar_valor(numero);
printf(%d, numero);
}
void sumar_valor(int numero)
{
numero++;
printf(%d, numero);
return;
}

Paso de Parmetros Por Valor


Ejemplo:
#include<stdio.h>
void sumar_valor(int numero);
main()
{

numero = 9
int numero = 9;
sumar_valor(numero);
printf(%d, numero);

}
void sumar_valor(int numero)
{
numero++;
printf(%d, numero);
return;
}

numero = 10

Paso de Parmetros Por Referencia

Se realiza usando punteros. Se


enva la direccin de memoria
de la variable, por lo que los
cambios que se hagan en la
funcin s afectarn el valor de
la variable en el main().

Paso de Parmetros Por Referencia


Ejemplo:
#include<stdio.h>
void sumar_valor(int *numero);
main()
{
int numero = 9;
sumar_valor(&numero);
printf(%d, numero);
}
void sumar_valor(int *numero)
{
*numero=*numero+1;
printf(%d, *numero);
return;
}

Paso de Parmetros Por Referencia


Ejemplo:
#include<stdio.h>
void sumar_valor(int *numero);
main()
{

numero = 10
int numero = 9;
sumar_valor(&numero);
printf(%d, numero);

}
void sumar_valor(int *numero)
{
*numero=*numero+1;
printf(%d, *numero);
return;
}

numero = 10

Variables Locales y Globales


Adems de pasar valores a una funcin, tambin se pueden declarar tipos de
datos dentro de las funciones. Estos tipos de datos declarados dentro de una
funcin son slo accesibles dentro de la misma funcin y son conocidos como
variables locales. As, se puede definir los mismos nombres de variables en
diferentes funciones, ya no tiene nada que ver una con otra.

Variables Locales y Globales


Ejemplo:
void funcion1()
{
int dato = 2;
printf(%d, dato);
return;
}
void funcion2()
{
int dato = 5;
printf(%d, dato);
return;
}

main()
{

funcion1();
funcion2();
}

Variables Locales y Globales


Adems, existen variables que se definen fuera del main() y fuera de cualquier
funcin creada por el programador. Estas variables se conocen como variables
globales, ya que pueden ser usadas tanto en el main() como en otras funciones.

Variables Locales y Globales


Ejemplo:

#include<stdio.h>
int x = 20;
void funcion()
{
printf(%d, x);
return;
}

main()
{
printf(%d, x);
funcion();
}

Llamado entre funciones


La funcin principal main() no es la nica que puede llamar a otras funciones, de
hecho, se pueden crear funciones que llamen a otras funciones.
Ejemplo:
void funcion1()
{
int dato = 2;
printf(%d, dato);
funcion2();
return;
}
void funcion2()
{
int dato = 5;
printf(%d, dato);
return;
}

main()
{
funcion1();
funcion2();
}

Paso de Arreglos como Parmetro


Los arreglos son pasados por referencia hacia una funcin. Se hace necesario
entregar tambin el tamao del arreglo.
Ejemplo:

int suma_vector(int v[], int n)


{
int i, suma=0;
for(i=0; i<n; i++)
{
suma=suma+v[i];
}
return suma;
}

main()
{
int x[5] = {1, 2, 3, 4, 5};
printf(%d, suma_vector(x, 5));
}

Analizar Ejemplo
i es variable global

Funcin que duplica el contenido de un vector

Funcin que retorna la suma de los


elementos de un vector, adems llama a
doble

Funcin principal. Imprime la suma obtenida


de la funcin suma_vector y el vector
duplicado.

Recursividad

Para entender lo que es la recursividad, hay que entender primero lo que es la


recursividad

- Javier Checa

Recursividad
Se dice que una funcin es recursiva cuando se define en funcin de si misma
(se llama a s misma).
No todas la funciones pueden llamarse a si mismas, sino que deben estar
diseadas especialmente para que sean recursivas, de otro modo podran
conducir a bucles infinitos, o a que el programa termine inadecuadamente.

Lo anterior hace referencia a la existencia de un caso base que permita dar


trmino a la recursividad.

Ejemplo
Se desea calcular el factorial de un nmero.
El factorial de un nmero se define de forma recursiva como sigue:

1 !,
! =
1,

2
<2

Ejemplo

Ejemplo

Ejemplo

Ejemplo

Ejemplo

Ejemplo

Ejercicios
Escribir, para cada caso, una funcin recursiva que permita:
Sumar los N primeros nmeros enteros positivos.
Calcular la potencia (a y b enteros; b positivo).
La multiplicacin de dos nmeros enteros positivos.
Tarea:
Sumar los elementos de un vector de tamao n (de tipo entero).
Encontrar el elemento mayor dentro de un vector de tamao n (de tipo
entero).
Calcular el valor de la serie de Fibonacci para un nmero n dado (de tipo
entero).
Calcular la potencia (solo considerando b entero).

También podría gustarte