Funciones que regresan valor.pdf

15
L/O/G/O Funciones que regresan un valor

Transcript of Funciones que regresan valor.pdf

Page 1: Funciones que regresan valor.pdf

L/O/G/O

Funciones que regresan un

valor

Page 2: Funciones que regresan valor.pdf

Contenido

Introducción

Formato de la función

Ejemplos varios

1

2

3

Page 3: Funciones que regresan valor.pdf

Introducción

Este segundo tipo de funciones trabajan de manera distinta a las anteriores ofreciendo una ventaja adicional; la de poder tener el resultado que proporciona la función disponible a las demás funciones para operaciones posteriores.

Estas funciones que a continuación veremos son sin paso de parámetros, pero que regresan un valor a su entorno (recuérdese que su entorno es la función que la llama, y que puede ser main o cualquier otra función).

Page 4: Funciones que regresan valor.pdf

Formato de la función

Su formato es el siguiente:

Este tipo de funciones inician con tipo_dato y se agrega la palabra reservada return:

tipo_dato Si una función va a regresar un valor, entonces debe iniciar con el tipo de

dato que devolverá, pudiendo ser cualquier tipo primitivo int, float, char, etc.

return Es la palabra reservada que “envía” el valor que la función regresa a la función que la manda llamar, el valor es un dato, así que puede ser una variable, una expresión aritmética, etc., incluso lo que otra función regrese.

tipo_dato identificador ( ) { declaración de variables locales; cuerpo de la función; return (valor); }

Page 5: Funciones que regresan valor.pdf

Ejemplo 1

#include<stdio.h>

float suma1()

{

float a,b,c;

printf("teclea el primer número");

scanf("%f",&a);

printf("teclea el segundo número");

scanf("%f",&b);

c=a+b;

return c;

}

int main()

{

float res;

res=suma1();

printf("El resultado es %f", res);

}

Page 6: Funciones que regresan valor.pdf

Explicación

En este ejemplo la función suma1 inicia con el tipo de dato float, lo cual significa que regresará un valor real a la función que la invoca (en este caso main); las acciones en la ejecución de suma1 son:

solicitar los valores al usuario;

almacenarlos en a y b respectivamente;

guardar el resultado en c

regresar el valor de c a main

Es necesario aclarar que la función sólo regresa el valor de la variable c, pero ésta junto con las variables a y b desaparecen una vez concluida la función suma1. Por lo tanto main se encarga de recibir el resultado de la operación, en este caso solamente para imprimirlo.

Por otro lado también es importante observar que el main de esta nueva versión tiene una ligera diferencia al de la anterior en la llamada a suma1, ya que si una función regresa un valor, es obligación del programa que la invoca “cachar” o recibir de alguna manera el valor que retorna la función invocada, por este motivo se declara una variable llamada res, en la que mediante una asignación main recibe el valor que le regresa suma1 luego de su ejecución.

Page 7: Funciones que regresan valor.pdf

Ejemplo 2

#include<stdio.h>

float suma1()

{

float a,b;

printf("teclea el primer número");

scanf("%f",&a);

printf("teclea el segundo número");

scanf("%f",&b);

return a+b;

}

int main()

{

printf("El resultado es %f", suma1());

}

Page 8: Funciones que regresan valor.pdf

Explicación

En la función suma1 se prescindió de la variable c, ya que se regresa directamente el valor de la expresión aritmética a+b.

En el caso de main, también se omitió la variable res, puesto que en este ejemplo la función main recibe el valor que le regresa suma1 utilizándola como argumento de printf siendo el valor de a+b lo que aparecerá en la pantalla.

La sentencia printf(“%f”, suma1()); significa “Imprime lo que regresa la función suma1”

Page 9: Funciones que regresan valor.pdf

Ejemplo 3

Veamos otro ejemplo para mostrar la ventaja de haber modificado la función suma1 para que ahora regrese un valor:

Se diseñará un programa que sume 4 valores proporcionados por el usuario; pero si nuestra función sólo suma dos números ¿qué se puede hacer en este caso?,

¡fácil!

se llama dos veces a la función

Page 10: Funciones que regresan valor.pdf

Ejemplo 3

#include<stdio.h>

float suma1()

{

float a,b;

printf("teclea el primer número");

scanf("%f",&a);

printf("teclea el segundo número");

scanf("%f",&b);

return a+b;

}

int main( )

{

printf("El resultado es %f", suma1()+suma1());

}

Page 11: Funciones que regresan valor.pdf

Explicación

En este ejemplo la función suma1 es invocada dos veces, como argumento de la única instrucción de main que es printf, la primera llamada a suma1 pide 2 valores al usuario, hace la suma y la regresa a donde fue invocada, luego hay una segunda llamada, en la que se piden los otros dos valores regresando también el resultado a donde se invocó, finalmente main hace la suma de los dos valores y los imprime.

Page 12: Funciones que regresan valor.pdf

Ejemplo 4 #include<stdio.h>

float prom( )

{

int n, i;

float c, p=0;

printf("¿Cuantas materias se le van a promediar al alumno?");

scanf("%i",&n);

for(i=1;i<=n;i++)

{

printf("Teclea la calificación");

scanf("%f",&c);

p=p+c;

}

p=p/n;

return p;

}

int main( )

{

int resp, c=1;

float promg=0;

do{

promg = promg + prom( );

printf("Si deseas promediar otro alumno teclea 1");

scanf("%i",&resp);

if(resp!=1)

c++;

}

while(resp==1);

printf("El promedio general de los %d alumnos es %f", c, promg/c );

}

Page 13: Funciones que regresan valor.pdf

Ejemplo 5

#include<stdio.h>

float sumabases( )

{

float bm,BM;

printf("Dame la base menor ");

scanf("%f",&bm);

printf("Dame la base mayor");

scanf("%f",&BM);

return (bm+BM);

}

float area ( )

{

float h;

printf("Dame la altura ");

scanf("%f",&h);

return sumabases( ) * h/2;

}

int main()

{

printf("%f",area( ) );

}

Page 14: Funciones que regresan valor.pdf

Explicación

main invoca a la función area, en ésta se pide la altura y posteriormente invoca a la función sumabases, la cual solicita el valor de las bases y regresa el resultado de la suma a area, que es la que la llama en su definición; cuando area recibe el valor de sumabases lo utiliza para concluir el cálculo, y a su vez regresa el resultado a main y ahí se imprime.

Page 15: Funciones que regresan valor.pdf

L/O/G/O

Gracias