Funciones sin Valor de Retorno - Departamento de Ingeniería Química

Anuncio
Programación
Instituto Tecnológico de Celaya
FUNCIONES SIN VALOR DE REGRESO: TIPO VOID
En las funciones que se han discutido hasta ahora siempre se ha tenido un valor
de regreso, que es el resultado de ejecutar las sentencias de la función. Sin
embargo, es posible definir funciones que ejecutan cualquier tipo de sentencias,
pero que no proporcionan un valor de regreso.
Para hacer saber al compilador que una función no produce algún valor de
regreso se utiliza el identificador void. Así por ejemplo, la función llamada:
void mensajes_de_salida (double area_circulo, double volumen_esfera)
es una función que requiere de dos argumentos de tipo double pero que, dado
que se define como de tipo void, no proporcionará ningún valor de regreso.
Para llamar a una función sin valor de regreso no es necesario hacer una
asignación (como se hace para las funciones que si proporcionan valor de
regreso), sino que basta utilizar el nombre de la función, definir los argumentos
y terminar con un punto y coma. Por ejemplo, el siguiente es un llamado a la
función mensajes de salida:
mensajes_de_salida(area, volumen);
Para que esto quede claro, usemos el mismo ejemplo del cálculo del área de un
círculo y volumen de una esfera. En este caso, los resultados se mostrarán
utilizando la función mensajes_de_salida que es una función sin valor de
regreso:
//Programa para el calculo del area de un circulo y el volumen de una esfera
//usando dos funciones. Se usa el mismo valor de radio para los dos calculos.
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
const double PI = 3.14159; /* Tiene alcance global. Se coloca por debajo de
Ingeniería Química
Programación
Instituto Tecnológico de Celaya
los include y antes de los prototipos */
/* Prototipos */
double area_circulo(double radio);
double volumen_esfera(double radio);
void mensajes_de_salida(double area_circulo, double volumen_esfera);
int main( )
{
double radio_de_ambos, area, volumen; /*Alcance local*/
cout<<”Dame el radio del circulo y de la esfera \n”;
cin>>radio_de_ambos;
area = area_circulo(radio_de_ambos);
volumen = volumen_esfera(radio_de_ambos);
mensajes_de_salida(area, volumen); /*Uso de funcion sin valor de regreso*/
}
system(“PAUSE”);
return 0;
/*Observe que las dos funciones siguientes usan la constante global PI*/
/* Funcion para el calculo del area de un circulo */
double area_circulo(double radio)
{
double area; /* Alcance local, diferente de la variable definida en main */
area = PI * pow(radio, 2.0);
/* Uso de constante global */
return area;
}
/* Funcion para el calculo del volumen de una esfera */
double volumen_esfera(double radio)
{
double volumen; /*Alcance local, diferente de la variable definida en main*/
volumen = (4.0/3.0) * PI * pow(radio, 3.0);
return volumen;
/* Uso de constante global */
}
/* Funcion para mostrar los resultados del calculo*/
void mensajes_de_salida(double area_circulo, double volumen_esfera)
{
cout<<”\n”;
cout<<”El area del circulo es “<<area_circulo<<”\n”;
Ingeniería Química
Programación
Instituto Tecnológico de Celaya
cout<<”El volumen de la esfera es “<<volumen_esfera<<”\n”;
cout<<”\n”;
}
Observe que la función mensajes_de_salida no regresa ningún valor como
resultado (no hay sentencia return), simplemente ejecuta sentencias para
mostrar los resultados en pantalla. Sin embargo, es posible usar la palabra
reservada return dentro de funciones que no regresan ningún valor como en el
ejemplo siguiente:
/* Funcion para mostrar los resultados del calculo*/
void mensajes_de_salida(double area_circulo, double volumen_esfera)
{
cout<<”\n”;
cout<<”El area del circulo es “<<area_circulo<<”\n”;
cout<<”El volumen de la esfera es “<<volumen_esfera<<”\n”;
cout<<”\n”;
return;
}
En este caso, el identificador return no está asociado a ningún valor ni a
ninguna variable, y sólo se utiliza para indicar que la función ha terminado de
ejecutar sus sentencias.
Ingeniería Química
Descargar