programación en C++ desde cero.
y entérate de las novedades o deja un comentario.
Ültima modificación: 13-07-2018.
Visitas este mes: 1
Visitas el mes pasado:
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de los manuales.:
En los distintos manuales incluimosm más webgrafía especifica de cada sección.
Si este sitio te parece interesante puedes contribuir con una pequeña aportación.
La llamada a una funcion es lo que permite ejecutar el contenido de la misma en el programa. Ya hemos visto en la página anterior cómo hacer la llamada a una función. Sin embargo el programa actúa de manera secuencial, por lo que cuando llamamos a una función, el programa debe haberla encontrado previamente. Es decir la definición de la función debe ser leída por el programa antes de su llamada.
Si el programa llama a una función antes de leer su definición, sencillamente no la encuentra, y se produce un error de compilacion.
Es por esto por lo que la función que hemos hecho de ejemplo en la página anterior la tenemos que poner siempre antes del cuerpo del programa (bloque int main() ..).
Pero no siempre nos viene bien tener las funciones delante del cuerpo del programa, ya sea por tener el código más claro, o por aprovechar otras funciones que tenemos en otras partes del programa, o incluso en otros archivos. Para ello se puede definir la función en otra parte del programa, por ejemplo, después del cuerpo principal, y poner una referencia a la misma antes del mismo.
Tal como estamos estructurando el archivo en el que guardamos el programa, éste constará de tres partes:
Para declarar una función pondremos en la cabecera, después de la o las líneas de espacio de nombres, la declaración de la funcion. Ésta consiste en escribir el principio de la función igual que en la definición, es decir, escribimos todo excepto el cuerpo de la misma (excepto el contenido entre llaves), y la acabamos con un punto y coma. Por ejemplo, la función de ejemplo de la página anterior tendrá la siguiente línea de declaración:
float suma (float a, float b);
A la declaración de la función también se le llama prototipo.
Ahora vamos a reescribir el código del ejemplo indicado cambiando la función. Ponemos la declaración al principio y la definición al final, y éste quedará así:
#include<iostream> using namespace std; float suma (float a, float b); int main (){ float n1, n2, n3; cout << "Escribe un numero : "; cin >> n1; cout << "Escribe otro numero : "; cin >> n2; n3=suma (n1, n2); cout << "La suma es " << n3 << endl; } float suma (float a, float b) { float c = a + b; return c; }
El resultado del programa no varía, pero la definición de la función no tiene porqué estar ocupando un lugar en el programa antes del cuerpo principal. Ésta la ponemos al final, y al principio sólo dejamos una línea para la declaración de la función.
Como hemos dicho antes el cuerpo principal del programa esta definido por el bloque int main() { }. Este bloque es también una función, la funcion "main" o "principal".
La función main es la única que es imprescindible para el funcionamiento del programa, ya que es la única que va a leer el compilador. Todas las demás funciones tienen que ser llamadas desde ésta para poder ser ejecutadas en el programa.
Esta función principal es de tipo int, esto quiere decir que deberíamos ponerle un valor de retorno, de hecho, muchos programadores acaban la función con la línea return 0;. Sin embargo no es necesario escribir la línea de retorno, ya que el programa automáticamente, al encontrar el corchete final, presupone que hay un return 0.
La función main es especial, ya que debe aparecer siempre en cualquier programa, además no se le puede llamar o invocar desde ninguna parte del programa ni necesita ser declarada. El compilador la entiende directamente, en principio no necesita argumentos y es la única en el que el valor de retorno se le presupone.
Al incluir una librería en la cabecera del programa (por ejemplo la línea #include<iostream>), ´ la librería suele incluir algunas funciones que realizan tareas comunes, a ests funciones sólo hay que llamarlas o invocarlas desde el programa para que realicen su tarea, ya que su definición está ya implícita en la librería.
Ya hemos visto alguna de estas funciones, como la función getline(cin,nombre) que permite escribir cadenas con varias palabras. Otras funciones predefinidas que hemos visto son las que nos permiten hacer la conversión de tipos (por ejemplo char c = char(90);.
Tanto para declarar como para definir una función escribimos primero el tipo el especificador del tipo de valor que debe devolver (int, float, char ... ), y después el nombre de la función. Sin embargo puede haber funciones que no devuelvan nada, como por ejemplo una función que se limite a escribir un texto o resultado en pantalla. Para este caso tenemos el especificador de tipo void.
Veamos la siguiente definición de una función que se limita a imprimir un texto en pantalla.
void escribeTexto() { cout << "Esto es una funcion" << endl; }
Esta función no tiene retorno y por lo tanto es una función de tipo void; void significa "vacío" o "nada". La función no tiene ningún tipo de retorno, aunque podríamos poner una última línea con un return; sin ningún valor, y el programa sigue estando bien escrito.
En el ejemplo que hemos puesto la función no tiene argumentos, es por eso por lo que escribimos los paréntesis vacíos, sin nada dentro, esto también lo podemos expresar escribiendo un void dentro del paréntesis. Después de lo visto aquí, vemos que la función anterior también la podríamos haber definido así:
void escribeTexto(void) { cout << "Esto es una funcion" << endl; return; }
Aunque el ejemplo que hemos puesto aquí es una función sin argumentos, las funciones sin retorno pueden tener argumentos perfectamente, por ejemplo, puede haber una función que recibe dos números y saca el resultado de la suma en pantalla.
Veamos ahora un ejemplo de programa con una función sin retorno, la cual toma el control del programa, dentro de la función, se piden dos números al usuario y los multiplica.
#include<iostream> using namespace std; void multiplica(); int main (){ multiplica(); } void multiplica(){ int a, b; cout << "Escribe dos numeros :"; cin >> a >> b; cout << a << " x " << b << " = " << a*b << endl; }
Como en cualquier función, hemos puesto la declaración en la cabecera del programa, y la definición al final del mismo.
Observa cómo aquí la función es la que realiza todas las tareas del programa, limitándose la función principal o main a llamarla.
En la siguiente página nos centraremos en los argumentos o parámetros de las funciones.
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com