Unidad 7 - Funciones en Lenguaje C
Unidad 7 - Funciones en Lenguaje C
Unidad 7 - Funciones en Lenguaje C
Informática I
Luis Eduardo Toledo
FUNCIONES: INTRODUCCIÓN
Todas las variables definidas en las definiciones de funciones son variables locales;
solo se puede acceder a ellas en la función en la que están definidas.
La mayoría de las funciones tienen una lista de parámetros que proporcionan los
medios para comunicar información entre funciones a través de argumentos en
llamadas a funciones.
Los parámetros de una función también son variables locales de esa función.
return-value-type function-name(parameter-list)
{
statements
}
El tipo de valor de retorno void indica que una función no devuelve un valor.
La lista de parámetros es una lista separada por comas que especifica los
parámetros recibidos por la función cuando se la llama.
Si una función no recibe ningún valor, la lista de parámetros es void.
Tenga en cuenta que main tiene un tipo de retorno int. El valor de retorno de
main se usa para indicar si el programa se ejecutó correctamente.
Cuando los argumentos se pasan por valor, se realiza una copia del valor del
argumento y se los pasa a la función invocada.
El paso por valor debe usarse siempre que la función invocada no necesite
modificar el valor original de la variable de la función invocante.
modifyArray(hourlyTemperatures, HOURS_IN_A_DAY)
El nombre del arreglo se evalúa como la dirección del primer elemento del
arreglo.
NOMBRE DE ARREGLO IGUAL A LA
DIRECCIÓN DEL PRIMER ELEMENTO
<stdlib.h> i = rand();
La función rand genera un número entero entre 0 y RAND_MAX (una constante
simbólica definida en el encabezado <stdlib.h>).
ALEATORIZACIÓN
La función srand toma un argumento int sin signo y siembra la función rand para
producir una secuencia diferente de números aleatorios para cada ejecución del
programa.
Para aleatorizar sin ingresar una semilla cada vez, use una sentencia como:
srand(time(NULL));
Las variables locales declaradas con la palabra clave static se conocen solo
en la función en la que se definen, pero a diferencia de las variables
automáticas, las variables locales estáticas conservan su valor cuando se sale
de la función.
Para que la recursión termine, cada vez que la función se llama a sí misma
con una versión un poco más simple del problema original, esta secuencia de
problemas más pequeños finalmente debe converger en el caso base. Cuando
la función reconoce el caso base, devuelve un resultado a la copia anterior de
la función, y se produce una secuencia de retornos en toda la línea hasta que
la llamada original de la función finalmente devuelve el resultado final a su
invocante.
RECURSIVIDAD: CÁLCULO DEL FACTORIAL
DE UN NÚMERO ENTERO POSITIVO
n! = n · (n – 1) · (n – 2) · … · 1 5! = 5 · 4 · 3 · 2 · 1
5! = 5 · (4 · 3 · 2 · 1)
n! = n · (n – 1)!
5! = 5 · (4!)
RECURSIVIDAD: CÁLCULO DEL FACTORIAL
DE UN NÚMERO ENTERO POSITIVO
RECURSIVIDAD: CÁLCULO DEL FACTORIAL
DE UN NÚMERO ENTERO POSITIVO
EJEMPLO 2: NÚMERO DE UNOS EN LA
REPRESENTACIÓN BINARIA DE N.
/
******************************************************************************E
scriba una función recursiva que devuelva el número de unos en la
representación binaria de N. Use el hecho de que es igual al número
de unos en la representación binaria de N/2, más 1 si N es impar.
*******************************************************************************/
#include <stdio.h>
int cantunos (int a);
int main()
{ int num;
printf("Ingrese un número entero positivo: ");
scanf("%d",&num);
printf("\nLa cantidad de unos en binario es: %d", cantunos (num));
return 0;
}
int cantunos (int a)
{ if (a==0)
return 0;
else
return (a%2 + cantunos (a/2));
}
EJEMPLO 3: FUNCIÓN
power (base, exponente)
/***********************************************************************************
Escriba una función recursiva power (base, exponente) que, al llamarla,
devuelva baseexponente .Por ejemplo, power ( 3,4 ) = 3 * 3 * 3 * 3. Suponga que
exponente es un entero mayor o igual que 1.
***********************************************************************************/
#include <stdio.h>
int power (int base, int exponente);
int main()
{ int base, exponente:
printf("Ingrese un número como base: ");
scanf("%d",&base);
printf("\nIngrese un número como exponente: ");
scanf("%d",&exponente);
printf("\nLa potencia es: %d", power (base, exponente));
return 0;
}
int power (int base, int exponente)
{ if (exponente==1)
return base;
else
return (base * power (base, exponente - 1));
}