Funciones en C++ Ejemplos

Funciones en C++.
Una función está formada por un conjunto de sentencias que realizan una determinada tarea y que podemos invocar mediante un nombre.
Un programa C++ está formado por una o más funciones.
Utilizando funciones podemos construir programas modulares. Además consiguen que no se repita el mismo código en varias partes del programa: en lugar de escribir el mismo código cuando se necesite, por ejemplo para validar una fecha, se hace una llamada a la función que lo realiza.
Todo programa C++ tiene una función llamada main. La función main es el punto de entrada al programa y también el punto de salida.
La estructura general de una función es la siguiente:
[tipo_devuelto] nombre_funcion([tipo parametro1][, tipo parametro2][, ....])
{
    // instrucciones
   [return valor;]
}
Los elementos que aparecen entre corchetes son opcionales.
Después del nombre de la función y siempre entre paréntesis puede aparecer una lista de parámetros, también llamados argumentos, separados por comas. Estos parámetros se conocen como parámetros formales.
Los parámetros formales son los datos que recibe la función para operar con ellos. Una función puede recibir cero o más parámetros. Se debe especificar para cada parámetro su tipo.
Una función puede devolver un dato a quien la ha llamado. Esto se realiza mediante la instrucción return. El tipo del dato devuelto debe coincidir con el tipo_devuelto que se ha indicado antes del nombre de la función.
Ejemplo de función C++ : función que sume dos números enteros

//Función C++ para sumar dos números
int suma(int a, int b)
{
         int c;
         c = a + b;
         return c;
}
Esta función se llama suma y recibe dos números enteros a y b. La función suma los dos números y guarda el resultado en c. Finalmente devuelve mediante la instrucción return la suma calculada.
Una función tiene un único punto de inicio, representado por la llave de inicio. La ejecución de una función termina cuando se llega a la llave final o cuando se ejecuta la instrucción return. La instrucción return puede aparecer en cualquier lugar dentro de la función, no tiene que estar necesariamente al final.
Con una función se deben realizar tres operaciones: declaración, definición y llamada o invocación.
Declaración o prototipo de una función.
Declarar una función es el paso previo antes de definir el conjunto de sentencias que la componen.
En la declaración o prototipo de la función, indicamos el nombre de la misma, el tipo de valor que devuelve y una lista parámetros separados por comas. La declaración acaba con punto y coma.
[tipo_devuelto] nombre_funcion([tipo parametro1][, tipo parametro2][, ....]);
La declaración de una función sirve para comprobar que cuando se llame a la función, los parámetros que se utilizan son correctos en cuanto a número y tipo, además de comprobar el tipo para el valor de retorno. El compilador dará mensajes de error si se llama a una función con tipos de datos o con números de parámetros distintos a los declarados.
Por ejemplo, la función suma del punto anterior se declara así:
int suma(int a, int b);
En la declaración de una función, no es necesario indicar los identificadores de los parámetros. Solo es obligatorio poner el tipo. Además, los identificadores usados en la declaración y en la definición no es preciso que sean los mismos.
Según esto, la función suma la podemos declarar así:
int suma(int, int);
Estamos indicando que suma recibe 2 enteros y devuelve un entero. No es necesario poner el nombre de las variables.


Definición de una función.
Definir una función consiste en escribir la cabecera de la misma y a continuación, entre llaves, el cuerpo de la función, es decir, sus instrucciones.
La cabecera de la función debe coincidir con la declaración de la función y debe incluir el nombre de los parámetros. La cabecera no acaba en punto y coma.
[tipo_devuelto] nombre_funcion([tipo parametro1][, tipo parametro2][, ....])
{
    // instrucciones
   [return valor;]
}
Los parámetros definidos en la cabecera de la función se llaman parámetros formales. Son las variables que reciben los valores de los argumentos en la llamada a la función.
El resultado de la función se devuelve a la instrucción que la ha llamado por medio de la sentencia return. El tipo_devuelto indica de qué tipo es el dato devuelto por la función. Puede ser cualquier tipo básico, o definido por el usuario, pero no puede ser un array o una función. Si no se indica, se supone que es int. La sentencia return puede aparecer más de una vez en el cuerpo de la función aunque lo aconsejable es que aparezca sólo una sentencia return. Si la función no devuelve ningún valor, se puede omitir o poner simplemente return. La sentencia return provoca la finalización inmediata de la función en el momento en que se ejecuta.

Llamar o invocar a una función.
Para que una función se ejecute es necesario llamarla o invocarla desde alguna parte del programa.
La llamada a una función está formada por su nombre seguido de una lista de argumentos entre paréntesis y separados por comas (cero o más argumentos) que son los datos que se le envían a la función.
Los argumentos que aparecen en la llamada a una función se llaman parámetros actuales, porque son los valores que se pasan a ésta en el momento de la ejecución.
Los parámetros actuales y los formales deben coincidir en número, orden y tipo. Si el tipo de un parámetro actual no coincide con su correspondiente parámetro formal, el sistema lo convertirá al tipo de este último, siempre que se trate de tipos compatibles. Si no es posible la conversión, el compilador dará los mensajes de error correspondientes.
Si la función devuelve un valor, la llamada a la función puede estar incluida en una expresión que recoja el valor devuelto.
Cuando se llama a una función, se crean en memoria las variables que aparecen en la cabecera de la función. Las variables declaradas en la cabecera de una función así como las que se declaran en el interior de la misma son variables locales de la función. Esto significa que solo son accesibles dentro de la función. Aunque tengan el mismo nombre que otras variables que puedan aparecer en otras partes del programa se trata de variables distintas. La memoria que ocupan las variables locales de una función se libera cuando acaba la ejecución de la función y dejan de estar accesibles.
Cuando se llama a una función, la ejecución del programa pasa a la función y cuando ésta acaba, la ejecución continúa a partir del punto donde se produjo la llamada.
Ejemplos de funciones en C++
Ejemplo 1:
El siguiente programa lee por teclado un año y calcula y muestra si es bisiesto. Para realizar el cálculo utiliza una función llamada bisiesto.
La función bisiesto recibe el año leído por teclado, comprueba si es o no bisiesto y devuelve 1 si lo es ó 0 si no lo es.
// Programa que lee un año y muestra si es o no bisiesto
#include <iostream>
using namespace std;
int bisiesto(int);   //declaración o prototipo de la función
int main()
{
   int anio;
   cout<<"Introduce a"<<(char)164<<"o: "; //164 ascii de ñ
   cin >> anio;
   if(bisiesto(anio))  //llamada a la función
      cout << "Bisiesto" << endl;
   else
      cout << "No es bisiesto" << endl;
   system("pause"); 
}
int bisiesto(int a)   //definición de la función    
{
    if(a%4==0 and a%100!=0 or a%400==0)
        return 1;
    else
        return 0;
}
En la llamada a la función bisiesto, el valor de la variable anio (parámetro actual) se copia en la variable a (parámetro formal) y la función trabaja con esta variable. El valor 1 ó 0 devuelto por return en la función pasa a ser el valor de la condición:


Ejemplo 2
Programa que lee por teclado la fecha actual y la fecha de nacimiento de una persona y calcula su edad.
El programa utiliza tres funciones:
fecha_valida: comprueba si la fecha leída es correcta.
bisiesto: comprueba si un año es bisiesto. La llama la función fecha_valida
calcular_edad: recibe las dos fechas y devuelve la edad.

// Programa C++ que lee la fecha actual y la fecha de nacimiento
// de una persona y calcula su edad
#include <iostream>
using namespace std;
int bisiesto(int);                   
int fecha_valida(int , int, int);
int calcular_edad(int, int, int, int, int, int);
int main()
{
   int diaa, mesa, anioa, dian, mesn, anion, edad;
   do
   {
       cout << "Introduce fecha actual: " << endl;
       cout << "dia : "; cin >> diaa;
       cout << "mes : "; cin >> mesa;
       cout << "a" << (char)164 << "o: "; cin >> anioa;
   }while(!(fecha_valida(diaa, mesa, anioa)));
   do
   {
       cout << endl << "Introduce fecha de nacimiento: " << endl;
       cout << "dia : "; cin >> dian;
       cout << "mes : "; cin >> mesn;
       cout << "a" << (char)164 << "o: ";  ; cin >> anion;
   }while(!(fecha_valida(dian, mesn, anion)));
   edad = calcular_edad(diaa, mesa, anioa, dian, mesn, anion);
   cout << endl << "Edad : " << edad << endl << endl;
   system("pause"); 
}

int calcular_edad(int da, int ma, int aa, int dn, int mn, int an)
{
    int edad = aa - an;
    if(ma < mn)
       edad--;
    else if(ma == mn and da < dn)
            edad--;
    return edad;
   
}                    

int bisiesto(int a)  // definición de la función bisiesto
{
    if(a%4==0 and a%100 !=0 or a%400==0)
        return 1;
    else
        return 0;
}

int fecha_valida(int d, int m, int a) //definición de fecha_valida
{
    if(d < 1 or d > 31 or m < 1 or m > 12 or a < 1)
    {
        return 0;
    }
    switch(m)
    {
        case 4:
        case 6:
        case 9:
        case 11: if(d > 30)
                 {
                    return 0;
                 }
                 break;
        case 2: if(bisiesto(a))
                {
                    if(d > 29)
                    {
                       return 0;
                    }
                }
                else if(d > 28)
                     {
                        return 0;
                     }
                break;
    }
    return 1;
}
La función fecha_valida se llama dos veces en el programa, una para comprobar si la fecha actual es correcta y otra para comprobar si la fecha de nacimiento es correcta. Esta Función devuelve 1 si es correcta y 0 en caso contrario. La función fecha_valida llama a la función bisiesto para comprobar si el año es bisiesto.
La función calcular_edad recibe las dos fechas y calcula y devuelve la edad de la persona. El valor de la variable edad que aparece en la sentencia return se copia en la variable edad de la llamada.


41 comentarios:

  1. Excelentísima esta la información!, me sirvió de mucha ayuda.

    ResponderEliminar
  2. muy bueno me ayudo mucho mientras estaba en la escuela :)

    ResponderEliminar
    Respuestas
    1. Gracias, me alegro de que te haya servido de ayuda. Un saludo

      Eliminar
    2. falto ponerle la libreria stdlib.h para el system("PAUSE")

      Eliminar
    3. Y que tenga funciones

      Eliminar
  3. Leer los datos de doce personas como son: nombre, edad, estatura, peso, posteriormente indicar cuál es el nombre de la persona de menor edad, el promedio de las estaturas y el de los pesos.
    como lo aria con 4 funciones?

    ResponderEliminar
  4. Que tipo de Función se utilizo en cada ejercicio ?

    ResponderEliminar
  5. Que tipo de Función se utilizo en cada ejercicio ?

    ResponderEliminar
    Respuestas
    1. Buenas Cristina Vargas, los tipos estan declarados al inicio de cada código fuente. son todos de tipo 'int'( enteros ), saludos.

      Eliminar
  6. Muchas gracias por el trabajo que se tomó en realizar este aporte, muchas dudas se me han despejado, saludos !

    ResponderEliminar
  7. Gracias por el comentario Alessandro. Saludos

    ResponderEliminar
  8. copie el codigo y me sale 4 errores me puedes ayudar gracias. salu2

    ResponderEliminar
    Respuestas
    1. el codigo que copie fue el ultimo de la ( dia, mes, año
      )

      Eliminar
  9. me puedes ayduar hacer etso kn funciones
    Se requiere ingresar N estudiantes, con los siguientes datos: Nombre-Apellido, Semestre,
    Nota1, Nota2, Nota3. Se desea Obtener:
     El Promedio individual por estudiante
     El Mejor y Peor Promedio (que deberá también ser reflejado en la columna
    Observación)
     El promedio General
     Los Estudiantes que estén sobre y bajo el promedio general.

    ResponderEliminar
  10. Gracias, por su labor,seguire hay.

    ResponderEliminar
  11. Podrian apoyarme es un programa para calcular la funcion exponencial

    se los agradezco de antemano
    Me sale error en la llave al definir la funcion


    #include
    #include
    #include
    #include
    #include
    #include
    #include

    using namespace std;

    void exponente(float,float);

    int main ()
    {
    float a,b;
    cout <<"\n";
    cout <<"Ingrese un numero";
    cin >>a;
    cout <<"\n";

    void exponente(float,float);
    cout <<"El resultado es:"<< b<<endl;
    }
    void exponente (float,float);
    {
    b= exp(a);
    return b;

    return 0;
    }

    ResponderEliminar
    Respuestas
    1. po normah io zi no zabe ni desi tu nombre

      Eliminar
    2. Me pueden ayudar a hacer un programa para presupuesto de una obra

      Eliminar
  12. me pueden ayudar con el siguiente ejercicio:
    Escribir el programa para solicitar al usuario 10 calificaciones comprendidas en el rango de 1 a 100, calcular y presentar la sumatoria y promedio de estas 10 calificaciones. La entrada de valores es para las calificaciones, debe hacerlo mediante una funcion de usuario.

    ResponderEliminar
  13. sera que me pueden hacer el favor de ayudarme con este ejecicio
    elabore un programa,en el cualse digiten N votosque seran otorgadosa3 candidatos ala presidencia. diseñar una funcion que reciba por parametros el consolidado de votos de cada uno de los candidatos y permita calcular e imprimir el candidato ganador y el porcentaje de votos obtenidos...
    gracia

    ResponderEliminar
  14. hola sera que me pueden ayudar debo hacer un programa que calcule la edad de la persona.. con el cin cout y la sentencia if else

    ResponderEliminar
  15. Ejercicios prácticos con if, if-else if
    1. Prueba de divisibilidad
    a. Solicita al usuario introduzca dos números enteros.
    b. Si el residuo de n/d es igual a 0, desplegar “El número x es divisible entre el número y”. De lo contrario,
    desplegar: “No es posible hacer la división sugerida”.
    2. Meses del año
    a. Solicita al usuario introduzca un número.
    b. Imprimir en pantalla el mes correspondiente al número introducido.
    3. Calificaciones
    a. Solicita al usuario introduzca 5 calificaciones.
    b. Realiza la suma y obtén el promedio.
    c. Si el promedio es mayor o igual a 6, desplegar en pantalla APROBADO.
    d. De lo contrario, desplegar en pantalla NO APROBADO.
    4. Comparar número.
    a. Solicita al usuario introduzca un número.
    b. Indica si es positivo o negativo desplegando un aviso en pantalla.
    5. Indicar la tarifa de la luz según el gasto de corriente eléctrica. Para un gasto menor de 1.000Kwxh, la tarifa es
    1.2, entre 1.000 y 1.850Kwxh es 1.0 y mayor de 1.850Kwxh es 0.9.
    a. Solicita al usuario que ingrese su gasto de energía para indicarle la tarifa.
    b. Dependiendo de la tarifa, desplegar en pantalla el mensaje: “Su gasto es menor de 1.000Kwxh, la
    tarifa que le corresponde es de 1.2”.
    c. El mensaje debe corresponder a la tarifa que el usuario introduzca.
    6. Calcula el porcentaje de personas que han ingresado al hotel para saber si aún cuentan con habitaciones
    disponibles.
    a. Si al hotel han ingresado 1200 personas, el hotel está ocupando únicamente el 20% de su capacidad
    b. Solicita al usuario que ingrese el total de personas que han ingresado actualmente. De acuerdo a la
    cantidad, despliega el mensaje en pantalla indicando: “Se encuentra ocupado el 20% del hotel. Hay
    habitaciones disponibles”.
    7. Seleccionar un tipo de vehículo según un valor numérico. El usuario verá en pantalla únicamente los números de
    vehículos con los que cuenta la compañía. Al momento de ingresar el valor, el usuario verá en pantalla el tipo de
    vehículo asignado. Desplegar un menú con la siguiente información.
    a. Vehículo – 300
    b. Vehículo – 500
    c. Vehículo – 3000
    Si el usuario selecciona la letra a, el vehículo que le corresponde es una motocicleta. Si el usuario
    selecciona la letra b, el vehículo es de turismo. Si el usuario selecciona la letra c, el vehículo es autobús.
    Con cualquier otro tipo de vehículo que introduzca, indicar: “Vehículo no autorizado en c con funciones ...

    ResponderEliminar
  16. Excelente información me ayudo mucho

    ResponderEliminar
  17. Escribir un algoritmo que lea un numero entero N desde teclado y realice la suma de los 10 numeros siguientes partiendo de N, mostrando el resultados por pantalla, ejemplo si N se almacena un 5, debe sumar los números 5,6,7,8,9,10,11,12,13,14

    ResponderEliminar
  18. como puedo realisar esto (programa que calcule la raiz cuadrada de un numero, la hipotenusa de un triangulo rectangulo apartir de sus catetos y el cubo de un numero. debe presentar un menu que le prmita al usuario elegir cual de las tres operaciones desea realizar) pero en una app de telefono que se llama cpp n-IDE ME me ayudas porfavor..


    ResponderEliminar
  19. 1) De un arreglo global determinado (Integer edades []= {8, 10, 20, 6, 40, 2,5}; realice lo siguiente.
    a) Cree un método llamado posicionArreglo, que no retorne valor (void) cuya función es la de presentar la edad según el identificador enviado por parámetro.
    b) Cree un método llamado impares, que no retorne valor (void) cuya finalidad es determinar cuántos números impares existe en el arreglo edades.
    c) Cree un método llamado pares, que retorne valor (Integer) cuya finalidad es determinar cuántos números pares existe en el arreglo edades.
    d) Construya el método main y llame cada uno de los métodos para probar el resultado de cada uno de los métodos: “Recuerde utilizar static en el arreglo global así como en sus métodos.
    2) Construya una clase llamada “EquipoComputo” con los siguiente atributos
    String marca;
    String modelo;
    String serie;
    String procesador;
    String memoria;
    String discoDuro;
    String tarjetaGrafica;
    Double costo;
    String ciudadOrigen;
    Date fechaRegistro; y aplique lo siguiente:
    a) Realice el encapsulamiento de los atributos.
    b) Desde otra clase ProbarAccesorio, Cree un objeto de la clase Accesorio e ingrese a través del setter la información de las características de la clase Accesorio.
    c) Finalmente imprima el detalle de un accesorio cualquiera que hubiese ingresado en el método anterior.
    me puede ayudar con estos ejercicios

    ResponderEliminar
  20. escriba un programa en c++que devuelva la parte fraccionaria de cualquier numero introducido por el usuario. po ejemplo si se introduce el numero 256.879,debera desplegarse el numero 0.879

    ResponderEliminar
  21. ¿Cómo se podría hacer con un procedimiento (void) donde indique si es mayor o menor de edad.

    ResponderEliminar
  22. alguien que me ayude...con esto de funciones:
    A un partido de futbol ingresan varios tipos de personas categorizadas según el tipo de entrada, el cual tiene un precio asociado:
    • Norte - 40 soles
    • Sur - 45 soles
    • Oriente - 150 soles
    • Occidente - 200 soles
    Cada persona puede comprar varias entradas pero de un solo tipo.
    Según el importe de compra (precio * cantidad) se pueden conseguir un descuento de esta manera:
    • <=250 soles – 3.5% de descuento
    • >250 soles y <=600 soles - 9% de descuento
    • >600 soles – 11.5% de descuento
    Por cada venta mostraras el total.
    Haga un programa que permita la venta de entradas de manera repetitiva a una cantidad desconocida de personas.

    ResponderEliminar
  23. Instale c÷÷en mi pc pero no compila es que acaso tengo que ins
    talar un compilador tambien

    ResponderEliminar
  24. Necesito ayudaa
    Dado el tipo de dato tfraccion, que almacena la información de una fracción con numerador y denominador mayor estricto que cero,

    typedef struct

    {

    unsigned int num; /* Numerador */

    unsigned int den; /* Denominador */

    } tfraccion;



    y considerando ahora los prototipos de funciones siguientes:



    unsigned int mcd(unsigned int a, unsigned int b);

    unsigned int mcm(unsigned int a, unsigned int b);

    tfraccion leer_frac(int i);

    void mostrar_frac(tfraccion f);

    tfraccion sumar_frac(tfraccion f1, tfraccion f2);

    tfraccion restar_frac(tfraccion f1, tfraccion f2);

    tfraccion multiplicar_frac(tfraccion f1, tfraccion f2);

    tfraccion dividir_frac(tfraccion f1, tfraccion f2);



    Defina la función mcd para que retorne el máximo común divisor de los parámetros a y b.

    Defina la función mcm para que retorne el mínimo común múltiplo de los parámetros a y b.

    Nota: Recuerde que mcm(a,b) = a*b/mcd(a,b).

    Defina la función leer_frac para que pida al usuario que introduzca desde el teclado la información de la fracción i (siendo i=1 o i=2, para indicar respectivamente si se refiere a la información de la fracción 1 o la fracción.

    ResponderEliminar
  25. Hola podrían ayudarme con esto

    Inicializar las matrices A y B (Las cuales son arreglos bidimensionales de 3 x 3, poner sus datos en cero)
    Solicitar los datos de la matriz A
    Solicitar los datos de la matriz B
    Mostrar los datos de la matriz A
    Mostrar los datos de la matriz B
    Sumar los datos de las matrices y guardarlos en C (C también es una matriz de 3x3)
    Mostrar los datos de la matriz C
    Salir
    Cada una de las opciones se deberá de realizar en una función definida por el usuario.

    ResponderEliminar
  26. Hola me podrían ayudar haciendo un sistema con funciones y clases

    ResponderEliminar
  27. . Una clínica de la vista, requiere establecer un registro de caja de los servicios que presta, así como un control de los descuentos de acuerdo al tipo de cliente .

    Tipos de clientes
    Cliente C solo descuento en consultas 5%
    Cliente B descuento en consultas y compra de aros y lentes 10%
    Cliente A descuento en consultas y compra de aros y lentes 15%

    Alguien me ayuda?

    ResponderEliminar
  28. cuales son las aplicaciones de una función o módulos en c++

    ResponderEliminar
  29. 1. Una cadena de farmacias distribuida entre diferentes ciudades. Cada farmacia tiene sus empleados propios y un farmacéutico.
    Por cada ciudad existe un único farmacéutico; esto es, si en una ciudad hubiera más de una farmacia, el mismo farmacéutico estaría afectado a
    todas las farmacias de esa ciudad. Cada farmacia tiene a su vez su stock de medicamentos. El mismo se mantiene por medicamento y presentación.
    Los medicamentos se organizan según la o las mono drogas que lo componen, su presentación
    (por ejemplo ampollas de 5 unidades, jarabe de 100ml, inyecciones por 10 unidades, pomada 60gr, etc.),
    el laboratorio que lo comercializa, y su acción terapéutica (analgésico, antibiótico, etc.).
    Por cada medicamento se mantiene su precio y la cantidad en existencia del mismo.
    El sistema deberá permitir consultar la base de datos de diferentes alternativas para medicamentos compuestos por una mono droga,
    medicamentos de un laboratorio, presentaciones de un medicamento, entre otras.*/
    Nota1: mínimo 3 ciudades Bogotá-Medellín barranquilla
    Nota2: empleados deben de estar asociados a los empleados y el farmacéutico 2 empleados
    Nota 3: mínimo dos sedes (sucursal norte-sur) stock = 20 medicamentos = precio
    Nota 4: no puedo vender mas de la cantidad permitida en stock por medicamento
    Nota 5: revisar en las demás sucursales si existe el medicamento
    Nota 6. ingresar el nombre de la persona y cedula del usuario
    Nota 7. debemos de organizar los medicamentos por mono drogas (laboratorio-proveedor -alfa)
    Nota8. Imprimir el nombre del usuario(cedula), nombre del farmacéutico, los medicamentos que compro+ el valor y el descuento si lo tiene

    ResponderEliminar
  30. e^{-x}-x+lnx+2 como puedo hallar esa funcion

    ResponderEliminar