Una función en C++ es un
fragmento de código que se puede llamar desde cualquier punto de un programa
principal (main). En C++ podemos diferenciar entre dos tipos de funciones:
- Aquellas que no tienen
retorno void (Vacias).
- Aquellas que retornan un
tipo de dato (como int, double o cualquier otro),
IMPORTANTE: NO SOBREUTILICE LAS FUNCIONES, EL USO DE LAS MISMAS SE JUSTIFICA SI DENTRO DE LOS PROGRAMAS HAY PROCEDIMIENTOS QUE SE REPITEN MULTIPLES VECES.
ORGANIZAR UN PROGRAMA CON EL USO DE LAS FUNCIONES PUEDE SER UNA COSTUMBRE INAPROPIADA.
Ejemplo de función tipo void:
#include <iostream>
using namespace std;
void sumaDosEnteros (int entero1, int entero2)
{
int resultado = 0;
resultado = entero1 + entero2;
cout <<endl<<"Si sumamos "<<entero1<<" + "<<entero2<< " obtenemos el numero = "<<resultado<<endl<<endl;
system("pause");
return;
}
int main()
{
int numero[3]={0};
int i;
cout<<"Bienvenidos al programa que suma 2 numeros usando funciones con void"<<endl;
cout<<"Elaborado por Carlos Ferrer"<<endl;
for(i=1;i<=2;i=i+1)
{
cout <<endl<<"Ingrese numero "<<i<<" = ";
cin >>numero[i];
}
sumaDosEnteros(numero[1],numero[2]);
return 0;
}
Veamos el mismo programa usando función de retorno:
#include <iostream>
using namespace std;
int sumaDosEnteros (int entero1, int entero2)
{
int resultado = 0;
resultado = entero1 + entero2;
return resultado;
}
main()
{
int numero[3]={0};
int i;
cout<<"Bienvenidos al programa que suma 2 numeros usando funciones de retorno de dato"<<endl;
cout<<"Elaborado por Carlos Ferrer"<<endl;
for(i=1;i<=2;i=i+1)
{
cout <<endl<<"Ingrese numero "<<i<<" = ";
cin >>numero[i];
}
cout <<endl<<"Si sumamos "<<numero[1]<<" + "<<numero[2]<< " obtenemos el numero = "<<sumaDosEnteros(numero[1],numero[2])<<endl<<endl;
system("pause");
}
Como vemos, las funciones
las hemos situado antes de la función main. Alternativamente, podemos situar el
cuerpo de las funciones después de la función main. Veamos nuevamente los dos programas haciendo ese ajuste de
posición (Colocando la función al final).
Ejemplo de función tipo
void - colocando la función al final (Noten la doble declaración):
#include <iostream>
using namespace std;
int main()
{
int numero[3]={0};
int i;
void sumaDosEnteros (int entero1, int entero2); //PRIMERA DECLARACIÓN
cout<<"Bienvenidos al programa que suma 2 numeros usando funciones con void"<<endl;
cout<<"Elaborado por Carlos Ferrer"<<endl;
for(i=1;i<=2;i=i+1)
{
cout <<endl<<"Ingrese numero "<<i<<" = ";
cin >>numero[i];
}
sumaDosEnteros(numero[1],numero[2]);
return 0;
}
void sumaDosEnteros (int entero1, int entero2) //2da DECLARACION Y DESARROLLO
{
int resultado = 0;
resultado = entero1 + entero2;
cout <<endl<<"Si sumamos "<<entero1<<" + "<<entero2<< " obtenemos el numero = "<<resultado<<endl<<endl;
system("pause");
return;
}
Veamos el mismo programa
usando función de retorno - colocando la función al final (Noten nuevamente la doble declaración):
#include <iostream>
using namespace std;
int main()
{
int numero[3]={0};
int i;
int sumaDosEnteros (int entero1, int entero2); //1ra DECLARACIÓN
cout<<"Bienvenidos al programa que suma 2 numeros usando funciones de retorno de dato"<<endl;
cout<<"Elaborado por Carlos Ferrer"<<endl;
for(i=1;i<=2;i=i+1)
{
cout <<endl<<"Ingrese numero "<<i<<" = ";
cin >>numero[i];
}
cout <<endl<<"Si sumamos "<<numero[1]<<" + "<<numero[2]<< " obtenemos el numero = "<<sumaDosEnteros(numero[1],numero[2])<<endl<<endl;
system("pause");
return 0;
}
int sumaDosEnteros (int entero1, int entero2) //2da DECLARACIÓN Y DESARROLLO
{
int resultado = 0;
resultado = entero1 + entero2;
return resultado;
}
Por último, les dejo un
programa sencillo, con el cual un profesor de primaria calcula la nota promedio
de sus alumnos - máximo 20 alumnos, que pueden cursar hasta un máximo de 10
materias distintas. El ejemplo usa una función de retorno de datos. En este caso especifico se le envía un arreglo a la función, y la función recibe el arreglo sin importar la cantidad de elementos que son enviados.
#include <iostream>
using namespace std;
main()
{
float notas[11];
string nombre[21]={""};
string opcion="s";
int n, i, j=1;
float notas_finales[21]={0};
float promedio(float valores[], int cantidad);
cout<<"Elaborado por Carlos Ferrer"<<endl;
while ((opcion== "s" or opcion == "S") and j<20)
{
cout<<"Escriba el apellido del alumno nro "<<j<<" (Max 20)= ";
cin>> nombre[j];
n=0;
while(n<1 or n>10)
{
cout<<"Cuantas notas tiene "<<nombre[j]<<" (Max 10)= ";
cin>> n;
}
for (i = 0; i < n; i=i+1)
{
notas[i]=-1;
while(notas[i]<0 or notas[i]>20)
{
cout<<" Nota "<< i + 1<<" (Rango 0-20)= ";
cin>> notas[i];
}
}
notas_finales[j]=promedio(notas, n);
cout<<"El promedio de "<<nombre[j]<<" es: "<< notas_finales[j]<<endl;
cout<<"Desea calcular mas promedios (S=continuar)? ";
cin>> opcion;
j=j+1;
system ("cls");
}
i=1;
cout <<endl<<"RESUMEN"<<endl;
while (nombre[i] != "" and i<21)
{
cout<<"El alumno "<<nombre[i]<<" tiene un promedio de = "<<notas_finales[i]<<endl;
i=i+1;
}
}
float promedio (float valores[], int cantidad)
{
int i;
float suma = 0.0; /*El ciclo for cuenta el número de notas que desea promediar*/
for (i = 0; i < cantidad; i=i+1)
{
suma=suma+valores[i];
}
suma=suma/cantidad;
return suma;
}
IMPORTANTE: Para retornar mas de un datos desde una función se puede utilizar datos de memoria con la técnica de los apuntadores.
Éxitos !!!!
No hay comentarios.:
Publicar un comentario