Manual
logo



Programación C++ con AGU desde 0

Estructura Básica de un programa en C++

Funciones

Con frecuencia, un algoritmo se repite, variando acaso el valor de los datos: ordenar una lista, calcular la media, ...Para evitar reescribir el mismo código una y otra vez, se diseñan las funciones, un conjunto de instrucciones que cumplen una función determinada (valga la redundancia), son el alma de la programación y para poder utilizarse  deben: declararse y definirse.

Declaración de Funciones

Al igual que con los datos en C y C++ antes de usarse una función ésta debe declararse, lo cual se hace tal que así:

tipo_dato_devuelto nombre_función ([argumentos]);

Los argumentos son opcionales porque existen funciones que no tienen argumentos. Cuando una función tiene argumentos, en la declaración es suficiente con indicar el tipo de datos que recibe; si son varios estos se separan por coma [,]
A veces una función no precisa devolver dato alguno, lo que en otros lenguajes se denominan subrutinas, esto se específica en C declarando la función del tipo void.

En nuestro ejemplo tenemos:
int menor (int, int);
que le dice al compilador que va a utilizarse una función denominada menor, que recibe como argumentos dos números enteros y como resultado devuelve otro entero.

Todas las funciones deben declararse antes de utilizarse. Si eliminas [comentas] esa línea de código, al construir te aparece el mensaje: 'menor' no se declaró en este ámbito.


#include <iostream>

// int menor (int,int);

int main()
{
    int num1, num2;
    std::cout<<"Introduce dos números (separados por un espacio): ";
    std::cin>>num1>>num2;
    num1=menor(num1,num2);
    if (num1==0)
        std::cout<<"los números son iguales";
        else
        std::cout<<num1<<" es el menor de los dos números";
    return 0;
}
int menor (int n1, int n2)
{
 if (n1==n2) return 0;
    else
        if(n1>n2) return n2;
        else return n1;
}


Definición de funciones

La definición consiste en el desarrollo de la función, el código en sí. Las definiciones están en los archivos fuente (.cc,.cpp,.c). Tienen una estructura similar a la declaración, de hecho, si una función es definida con anterioridad a main, es a la vez declarada.

tipo_dato_devuelto nombre_función ([argumentos]){ codigo}

A diferencia de la declaración, la definición requiere que los argumentos vengan declarados, es decir no sólo indican el tipo, también el identificador o nombre de la variable utilizada en el código. En la declaración, también puede ponerse el identificador pero no es estrictamente necesario.
En nuestro caso:
int menor (int n1, int n2)
{
 if (n1==n2) return 0;
    else
        if(n1>n2) return n2;
        else return n1;
}

return es la palabra clave utilizada para devolver el valor. En nuestra función devuelve 0 cuando ambos números son iguales y devuelve el número menor en caso contrario. En nuestra función main devuelve 0 que es el valor utilizado para comunicar al sistema que el programa a terminado con éxito.

Si las funciones se definen antes que main, declaración y definición se realizarían en un solo paso. El siguiente programa compila perfectamente.

#include <iostream>

int menor (int n1, int n2)
{
 if (n1==n2) return 0;
    else
        if(n1>n2) return n2;
        else return n1;
}

int main()
{
    int num1, num2;
    std::cout<<"Introduce dos números (separados por un espacio): ";
    std::cin>>num1>>num2;
    num1=menor(num1,num2);
    if (num1==0)
        std::cout<<"los números son iguales";
        else
        std::cout<<num1<<" es el menor de los dos números";
    return 0;
}

main es la función donde se inicia la ejecución del programa.
Es una función esencial y única. Es obligatorio que todo programa tenga una, y solo una, definición (y declaración) de main

Como luego veremos, entre las cosas maravillosas de C++, está la sobrecarga de funciones, es decir, poder definir varias funciones con el mismo nombre, donde la diferencia que permita seleccionar la correcta al compilador descanse en los argumentos, así puedo definir  int suma (int, int); y int suma (int, char); que el ordenador sabrá seleccionar una u otra en función de los argumentos utilizados,... Por ejemplo, en nuestro programa existen una función, algo especial, que está sobrecargada, es la función std::cout<<, que nos ha permitido imprimir tanto números (int) como texto (char*). main es la excepción y no puede sobrecargarse.
Y si std::cout<< es una función, y toda función debe declararse antes de usarse, ¿donde?