UNIVERSIDAD FERMIN TORO VICERRECTORADO ACADEMICO FACULTAD DE INGENIERIA
Lenguaje
Autor: Francisco Pérez 19.955.913
Cabudare, Febrero del 2013
Implementación de módulos: Los módulos son un conjunto de programaciones que nos permite facilitar la programación, ya que generan una función específica que es requerida por cada caso, estos son prácticamente iguales que los demás lenguajes, aquí no tenemos funciones public o private pero si podemos tener un manejo de eso al nivel de los .h Entonces, la estructura de un .h es del tipo //Estas líneas nos indican que si en el momento de la compilación no fué definido (incluído) este módulo, entonces que lo incluya. #ifndef NOMBRE_MODULO #define NOMBRE_MODULO // Declaro la función, lo que devuelve y lo que recibe void escribir(Estructura* miEstructura, char const* ruta); Estructura* leer(char const* ruta); //Finaliza la definición #endif En el código fuente de mi modulo puedo tener más funciones que las que hay en el .h, pero nunca pueden faltar las que están declaradas en el .h de lo contrario no compilará. Se puede tomar al .h como un módulo de definición donde solo aparecen las cabeceras públicas. El código fuente de ese modulo deberá tener la siguiente estructura: //Incluimos el módulo de definición #include "nombre_modulo.h" //Escribimos las implementaciones de las funciones void escribir(Estructura* mi Estructura, char const* ruta){ /*Implementación ... */ } Estructura* leer(char const* ruta){ /*Implementación ... */ }
//Esta función es de uso privado por lo cual no podrá ser accedida desde fuera del módulo void función Auxiliar(Estructura* mi Estructura){ /*Implementación ... */ } Con estos pasos sencillos, tenemos lo necesario para crear cualquier tipo de modulo, que nos permita facilitar las labores deseadas.
Funciones Una función es un modulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor a la parte principal del programa u otra función o procedimiento que la invoque. Los tipos de funciones en c++ son 4, aunque en realidad son las combinaciones de las 2 cosas que una función puede hacer. Puede hacer (o no) dos cosas: 1 – Recibir datos y 2 – Retornar datos. De esto surgen los cuatro tipos de funciones:
- No reciben ni retornan Las más sencillas. Para usarlas sólo tenemos que saber cómo crearlas y cómo llamarlas. Una función se crea de esta forma general: Tipo nombre(){} El ‘tipo’ se refiere al tipo de dato (int, float, void, char) y en las funciones que no retornan siempre es void. El ‘nombre’ es el nombre de la función: cualquiera que empiece con una letra, que sea significativo y que no sea una palabra reservada. Para llamarlas sólo hay que escribir el nombre de la función seguido de sus paréntesis y un punto y coma (;). nombre(); Así nuestro programa sería: #include<iostream> using namespace std;
void sumar() { int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = num1 + num2; cout << "La suma es " << r; } int main() { sumar(); } Como ven, todo lo que habríamos puesto en nuestro main mejor los pusimos en una función y desde el main la llamamos. Una función siempre, siempre, siempre tiene que ir antes del main. Una función de este tipo que hemos usado muchas veces es getch();
- Reciben y No Retornan ¿Cómo haríamos para pedir los dos números en el main y que la función haga la suma? Para eso tenemos que hacer una función capaz de recibir datos, entonces la sintaxis cambia un poco: tipo nombre(tipo_var1 nombre_var1, tipo_var2 nombre_var2){} ‘tipo’ y ‘nombre’ se refieren a lo mismo y como no retorna el tipo siempre es void. Dentro del paréntesis tenemos otros aspectos: ‘tipo_var1' se refiere al tipo de la variable que nuestra función va a recibir. ‘nombre_var1' se refiere al nombre de esa variable. Si queremos recibir una variable hasta ahí es suficiente, si queremos otra variable ponemos una coma (,) y declaramos la siguiente variable. Para llamar la función hay que poner las variables que vamos a enviar dentro del paréntesis en el mismo orden en que las declaramos en la función: nombre(var1, var2); Nuestro programa quedaría así: #include<iostream> using namespace std;
void sumar(int num1, int num2) { int r; r = num1 + num2; cout << "La suma es " << r; } int main() { int num1, num2; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; sumar(num1, num2); } Pedimos los dos números en el main, los enviamos a la función, ésta los suma y los muestra. Una función de este tipo que hemos usado muchas veces es el odiado por muchos, amados por otros, gotoxy(x,y);
- Retornan y No Reciben
¿Y si ahora queremos lo contrario? Pedir los números en la función, pero mostrar el resultado en el main. Para eso necesitamos una función que retorne. Recibir es enviar datos del main a la función. Retornar es enviar datos de la función al main. Para retornar datos hay que hacer dos cosas: no usar void como tipo y usar return. De forma general: tipo nombre() { return var; } El ‘tipo’ tiene que ser del tipo de variable que queremos retornar, si nuestra variable retorna una variable int, pues el tipo de la función es int. Para indicar qué variable estamos retornando usaremos la palabra return seguido de la variable. Usualmente esto va al final de la función. Para llamar a la función hay que preparar un colchón en donde caiga la variable que está retornando. var = nombre();
La variable que está retornando nuestra función se va a almacenar en la variable ‘var’. Este es un buen momento para recordarles que las variables declaradas entre dos llaves {} únicamente existen entre esas dos llaves. O sea que la variable ‘var’ de la función no es la misma que la variable ‘var’ de la función; sin embargo la var del main está adquiriendo el valor de la var del main. Un poco confuso lo se, no se preocupen. Nuestro programa quedaría así: #include<iostream> using namespace std; int sumar() { int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = num1 + num2; return r; } int main() { int r; r = sumar(); cout << "La suma es " << r; } - Reciben y Retornan Ahora queremos que nuestra función únicamente sume, el main se va a encargar de pedir los números y sumar los resultados. Para eso necesitamos que nuestra función reciba las variables y además retorne el resultado. Es sólo cuestión de combinar las funciones que reciben y no retornan con las que retornan y no reciben. Nuestro programa quedaría así: #include<iostream> using namespace std;
int sumar(int num1, int num2) { int r; r = num1 + num2; return r; } int main() { int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = sumar(num1, num2); cout << "La suma es " << r; } Las funciones de la librería math.h son en su mayoría de este tipo. sqrt(); pow(); sin(); En principio puede parecer que las funciones sirven únicamente para organizar el código, lo cual es cierto, pero no sólo eso, nos permite ahorra una considerable cantidad de espacio en la programación.
Procedimientos: Un camino para dividir un gran programa en partes más pequeñas es el uso de los llamados procedimientos. Estos no son más que un grupo de instrucciones, variables, constantes, etc, que están diseñados con un propósito particular y tiene su nombre propio. Es decir un procedimiento es un modulo de un programa que realiza tareas especificas y que no puede regresar valores a la parte principal del programa u otro procedimiento que lo este invocando. Después de escribir un procedimiento se usa su propio nombre como una sola instrucción o llamada al procedimiento. Los procedimientos se podrán escribir después del cuerpo principal del programa utilizando el formato: void NomProc(){instrucciones;}; Pero también los procedimientos deberán declararse antes del main, Sin embargo el procedimiento se construye antes del main() entonces no hay necesidad de declararlo antes. Un programa puede tener tantos procedimientos como se deseen para hacer una llamada o invocación al procedimiento durante la ejecución de un programa solo se deberá escribir el nombre del procedimiento y los paréntesis en blanco. Es importante recordar que se pueden crear el procedimiento o los procedimientos (aunque realmente es una función) arriba o abajo de la parte principal del programa. Además también debemos tener presente que un programa puede tener muchos procedimientos, y estos pueden llamarse o invocarse entre sí, es por eso que debemos tener mucho cuidado con estos llamados, porque podemos vernos envueltos en un interminable circulo.