Está en la página 1de 34

UNIVERSIDAD DE LAS FUERZAS

ARMADAS ESPE

FUNDAMENTOS DE
PROGRAMACIÓN

FUNCIONES
¿Qué son?¿Para qué sirven?
 Son un grupo de sentencias bajo el
mismo nombre que realizan una tarea
específica.
 Resolución de problemas  “Dividir”

Beneficios
 Aislar mejor los problemas
 Escribir programas correctos más
rápido
 Producir programas más fáciles de
mantener
Conceptos
 Función
 Grupo de sentencias bajo el mismo
nombre que realizan una tarea
específica.
 Llamada a una función
 Ejecuta el grupo de sentencias de una
función.
 Retorno
 Una vez “llamada” la función, esta hace
su trabajo, y regresa al mismo punto
donde fue llamada.
Declaración de Funciones
 De forma similar a las variables, las
funciones deben ser declaradas:
 La forma de declarar una función es
siguiendo la forma predefinida:
tipoDatoRetorno nombreFuncion(lista parámetros);

 Por ejemplo:
int potencia(int base, int exponente);
float farenheitACelsius(double celsius);
Implementación de
Funciones
int potencia(int base, int exponente)
{
sentencias; La primera línea se
escribe igual que en la
} declaración, pero sin el
punto y coma.

float farenheitACelsius(double celsius)


{
Entre llaves se escriben
sentencias; las sentencias que
} ejecutan lo que debe
realizar la función
Retorno de la función
 Si la función debe generar un valor, lo retornará
usando la sentencia return dentro del cuerpo de la
función.
 La forma es:
return (variable o expresión que se debe retornar);
 Esto especifica que la función debe terminar,
retornando el valor calculado.
 Hay funciones que no retornan datos, en este caso,
se puede usar return, pero sin mencionar una
expresión.
return;
Estructura de una función
Uso de Funciones
 Como las funciones siempre retornan
un valor, el uso de una función
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 función.
 Utilizar el valor de retorno en una
expresión.
Uso de Funciones (continuación)
 Ejemplo:
int main( ) int main( )
{ {
int x; float c;
…. ….
x = potencia(a,b); c = farenheitACelsius(f);
… …
} }

int main( ) int main( )


{ {
…. ….
printf(“%d”, potencia(a,b)); printf(“%f”, farenheitACelsius(f));
… …
} }
Llamada a la función
Las funciones, para poder ser
ejecutadas, han de ser llamadas o
invocadas.
Cualquier expresión puede contener
una llamada a una función que redirigirá
el control del programa a la función
nombrada.
Normalmente la llamada a una función
se realizará desde la función principal
main(), aunque naturalmente también
podrá ser desde otra función.
Funciones
 Hay una mayor complejidad de la mostrada, en el
uso de funciones. Tomemos como ejemplo el
siguiente programa:

#include <stdio.h>

Si vemos el //Declaración de funciones


programa int Factorial(int n);
principal y la
función como un int main() Si vemos sólo el programa
todo, puede { principal, tiene sentido,
resultar un tanto int i; pues se imprime el factorial
confuso: for (i = 0; i < 10; i ++) de todos los números hasta
• Hay dos printf(“%d\n”, Factorial(i)); el 10
variables con }
nombre i
• En el programa int Factorial (int n)
se usa la variable i { Si vemos sólo la
como el número al int fact, i; función, tiene
que se le calcula fact = 1; sentido, pues se
el factorial. for(i = 1; i <=n; i++) encarga de calcular el
• En la función la fact = fact * i; factorial de la variable
variable a la que return (fact); n
se le calcula el }
factorial se llama n
Paso de Argumentos a
Funciones
En el programa principal, se calcula el #include <stdio.h>
factorial de i. #include <simpio.h>
En la función se calcula el factorial de n //Declaración de funciones
¿Cómo es que hay diferentes int Factorial (int n);
identificadores para el mismo valor? void main()
La respuesta esta muy relacionada con el {
concepto de argumento: int i;
for (i = 0; i < 10; i ++)
- En el programa principal, i printf(“%d\n”,Factorial(i));
representa el argumento enviado a }
la función Factorial. int Factorial (int n)
- En la función Factorial, alguna {
variable debe recibir el enviado, int fact, i;
fact = 1;
para representar dicho valor. Esta for(i = 1; i <=n; i++)
variable puede tener cualquier fact = fact * i;
return (fact);
nombre, en este caso se le dio el }
nombre n.
- Una variable definida en la
cabecera de una función, que sirve
para recibir el valor de un
argumento, se conoce como
parámetro.
Pasos para llamar a una Función
#include <stdio.h>
 Se evalúan las expresiones int Factorial(int n);
enviadas como argumentos.
void main()
{
1
2
6
 El valor de cada argumento int i;
es copiado en orden en cada for (i = 0; i < 10; i ++)
{
parámetro correspondiente printf(“%d\n”, Factorial(i));
de la función llamada. }
}
 Se ejecutan una a una las
sentencias del cuerpo de la
función hasta que aparece la
sentencia return. Factorial(0)
Factorial(2)
Factorial(1)
Factorial(3)
n
 Se evalúa la expresión de la
sentencia return. int Factorial(int n)
{
int fact, i;
0
1
2
3
 El programa que llamó a la
función continúa, expr
reemplazando en el lugar de
fact = 1;
expr
exp
la llamada, el valor retornado for(i = 1; i <=n; i++) r6
{
fact = fact * i;
1
} 2
return (fact);
}
Ejemplo
Definir una/s función/es que dado dos números enteros, realice las
operaciones aritméticas básicas y devuelva el resultado obtenido
int suma (int valor1 , int valor2)
{
int total;
total=valor1+valor2;
return (total);
}
int resta (int valor1 , int valor2)
{
int total;
total=valor1-valor2;
return (total);
}
int main()
{
int resulsuma,resulresta,num1,num2;
printf("Ingrese valor 1: ");
scanf("%d",&num1);
printf("Ingrese valor 2: ");
scanf("%d",&num2);
resulsuma=suma(num1,num2);
resulresta=resta(num1,num2);

printf("la suma es: %d",resulsuma);


printf("\nla resta es:%d",resulresta);
}
#include <stdio.h>
int factorial(int n) //llamada a la función
{
int resultado=1;
while (n>1)
{
resultado=resultado*n;
n=n-1;
}
return resultado;

}
int main()
{
int xnumero;
printf(“\ningrese un numero entero”);
scanf(“%d”,&xnumero);
printf(“%d! = %d”, xnumero,factorial(xnumero));
}
Lenguaje C: Funciones
La definición de una función tiene la estructura:

tipo identificador(argumentos ...)


{
...
cuerpo de la función
...
}
Lenguaje C: Funciones
int factorial(int n) // definición de función
{
int ret=1;
while (n>1)
{
ret=ret*n;
n--;
}
return ret;
}

int main()
{
printf(“%d!=%d\n”,5,factorial(5)); // llamada
}
Lenguaje C: Funciones
Para poder hacer uso de una función es necesario que ésta esté definida
o declarada con antelación.

 Definición de la función: Todo el código de la función.


 Declaración de la función: Únicamente la cabecera o prototipo de
la función:

int factorial(int n);


int factorial(int);
int factorial();
Lenguaje C: Funciones
int factorial(int n); // prototipo de función

int main()
{
printf(“%d!=%d\n”,5,factorial(5));
}

int factorial(int n) // definición de función
{
int ret=1;
while (n>1)
{
ret=ret*n;
n--;
}
return ret;
}
Lenguaje C: Funciones
Paso de Parámetros por Valor
Esto significa que la función recibe una copia de los valores de los
parámetros

En esta técnica la función receptora no puede modificar los valores de la


función principal (parámetro pasado).
Lenguaje C: Funciones
Paso de Parámetros por Referencia (Paso de Punteros)

float f(float* x, float* y)


{

return ret;
}
Operador de
int main()
{
dirección
float a,b;
… // se leen a y b

printf(“f(%f,%f)=%f\n”,a,b,f(&a,&b)); // llamada
}
Lenguaje C: Funciones

Paso de Parámetros por Referencia (Paso de Punteros)

void reiniciar(int *a, int b)


{
*a=0; b=0;
}

int x=2,y=2;
reiniciar(&x,y); /* x valdrá 0 e y 2 */
Lenguaje C: Funciones
Paso de Parámetros por Referencia (Paso de Punteros)

int x=2,y=2; x 2 y 2
reiniciar(&x,y); x 2 y 2
a b 2

int reiniciar(int *a, int b)


{
x 0 y 2
*a=0; b=0;
a b 0
}
Lenguaje C: Funciones
Paso de Parámetros por Referencia (Paso de Arrays)

Cuando un array se pasa como argumento a una función,


la última de las dimensiones no se define.

Ejemplo:

int vec[12],mat[4][4];
calcula(vec,mat);

void calcula(int v[], int m[4][])
{

}
Funciones de Caracter
 El archivo de cabecera <ctype.h> define un grupo de
funciones/macros de manipulación de caracteres.
 Todas las funciones devuelven un resultado de valor
verdadero (distinto de cero) o falso (cero).
isalpha(c)
 Devuelve verdadero (distinto de cero) si c es una letra
mayúscula o minúscula. Se devuelve un
 valor falso si se pasa un carácter distinto de letra a esta
función.
islower(c)
 Devuelve verdadero (distinto de cero) si c es una letra
minúscula. Se devuelve un valor falso (0),
 si se pasa un carácter distinto de una minúscula.
isupper(c)
 Devuelve verdadero (distinto de cero) si c es una letra
mayúscula, falso con cualquier otro carácter.
Funciones de Caracter
 Las siguientes funciones comprueban caracteres
numéricos:
isdigit(c)
 Comprueba si c es un dígito de 0 a 9, devolviendo
verdadero (distinto de cero) en ese caso, y falso en caso
contrario.
isxdigit(c)
 Devuelve verdadero si c es cualquier dígito hexadecimal
(0 a 9, A a F, o bien a a f) y falso en cualquier otro caso.
 La siguiente función comprueba argumentos numéricos
o alfabéticos:
isalnum(c)
 Devuelve un valor verdadero si c es un dígito de 0 a 9 o
un carácter alfabético (bien mayúscula o minúscula) y
falso en cualquier otro caso.
Funciones de Caracter
iscntrl(c)
 Devuelve verdadero si c es un carácter de control
(códigos ASCII 0 a 31) y falso en caso contrario.
isgraph(c)
 Devuelve verdadero si c es un carácter imprimible (no
de control) excepto espacio; en caso contrario, se
devuelve falso.
isprint(c)
 Devuelve verdadero si c es un carácter imprimible,
código ASCII 21 a 127, incluyendo un espacio; en caso
contrario, se devuelve falso.
ispunct(c)
 Devuelve verdadero si c es cualquier carácter de
puntuación (un carácter imprimible distinto de espacio,
letra o dígito); falso, en caso contrario.
isspace(c)
 Devuelve verdadero si c es carácter un espacio, nueva
línea (\n), retorno de carro (\r), tabulación (\t) o
tabulación vertical (\v).
Funciones de Caracter
tolower(c)
 Convierte el carácter c a minúscula, si ya no lo es.
toupper(c)
 Convierte el carácter c a mayúscula, si ya no lo es.
Funciones de Caracter
Leer un carácter del teclado y comprobar si es una letra.
#include <iostream>
#include <ctype.h>
Int main()
{
char inicial;
cout << "¿Cuál es su primer carácter inicial?";
cin >> inicial;
while (isalpha(inicial))
{
cout << "\Carácter válido\n";
cout << "¿Cuál es su siguiente inicial?";
cin >> inicial;
}
cout << "¡Terminado!";
return 0;
}
Funciones Numéricas
Virtualmente cualquier operación aritmética es posible en un programa
C++.
Las funciones matemáticas disponibles son las siguientes:

• matemáticas
• trigonométricas
• logarítmicas
• exponenciales
• aleatorias.
Funciones matemáticas
La mayoría de las funciones numéricas están en el archivo de cabecera math.h; las
funciones abs y labs están definidas en math.h y stdlib.h,

ceil(x)
 Redondea al entero más cercano.
fabs(x)
 Devuelve el valor absoluto de x (un valor positivo).
floor(x)
 Redondea por defecto al entero más próximo.
fmod(x, y)
 Calcula el resto en coma flotante para la división x/y, de modo que x = i*y+f, donde i
es un entero, f tiene el mismo signo que x y el valor absoluto de f es menor que el
valor absoluto de y.
pow(x, y)
 Calcula x elevado a la potencia y (xy). Si x es menor que o igual a cero, y debe ser
un entero. Si x es igual a cero, y no puede ser negativo.
sqrt(x)
 Devuelve la raíz cuadrada de x. x debe ser mayor o igual a cero.
Funciones trigonométricas
acos(x)
 Calcula el arco coseno del argumento x. El argumento x debe estar entre –1 y 1.
asin(x)
 Calcula el arco seno del argumento x. El argumento x debe estar entre –1 y 1.
atan(x)
 Calcula el arco tangente del argumento x.
atan2(x, y)
 Calcula el arco tangente de x dividido por y.
cos(x)
 Calcula el coseno del ángulo x (x se expresa en radianes).
sin(x)
 Calcula el seno del ángulo x (x se expresa en radianes).
tan(x)
 Devuelve la tangente del ángulo x (x se expresa en radianes).
Funciones Logarítmicas
exp(x), expl(x)
 Calcula el exponencial ex, donde e es la base de logaritmos naturales de valor
2.718282.
valor = exp(5.0);
 Una variante de esta función es expl, que calcula ex utilizando un valor double long
(largo doble).
log(x), logl(x)
 La función log calcula el logaritmo natural del argumento x y logl(x) calcula el citado
logaritmo natural del argumento x de valor long double (largo doble).
log10(x), log10l(x)
 Calcula el logaritmo decimal del argumento x, de valor real double en log10(x) y de
valor real long double en log10l(x). x ha de ser positivo.
Funciones Aleatorias
Las funciones usuales de la biblioteca estándar de C++ son: rand, random, randomize y
srand.
Estas funciones se encuentran en el archivo stdlib.h.
rand(void)
La función rand genera un número aleatorio. El número calculado por rand varía
en el rango de 0 a RAND_MAX.
La constante RAND_MAX se define en el archivo stdlib.h como 2E15-1. En
consecuencia, asegúrese de incluir dicho archivo en la parte superior de su
programa.
randomize(void)
La macro randomize inicializa el generador de números aleatorios con una
semilla aleatoria obtenida a partir de una llamada a la función time. Dado que
esta macro llama a la función time, el archivo de cabecera time.h se incluirá en el
programa. No se devuelve ningún valor.
srand(semilla)
La función srand inicializa el generador de números aleatorios. Se utiliza para
fijar el punto de comienzo para la generación de series de números aleatorios;
este valor se denomina semilla. Si el valor de semilla es 1, se reinicializa el
generador de números aleatorios. Cuando se llama a la función rand antes de
hacer una llamada a la función srand, se genera la misma secuencia que si se
hubiese llamado a la función srand con el argumento semilla tomando el valor 1.
random(num)
La macro random genera un número aleatorio dentro de un rango especificado (0
y el límite superior especificado por el argumento num). Se devuelve un número
entre 0 y num -1.

También podría gustarte