En el capítulo anterior iniciamos el contenido de Funciones, estableciendo la forma que éstas de declaran y define. A su vez, se ofreció 2 ejemplos sencillos, quedando por tratar el tema de paso de parámetros hacia una función.
¿Qué significa pasar parámetros? Pues revisemos; en los ejercicios anteriores se declaraba y definía una función para luego ser llamada dentro de la función principal main (Sí, main() es un función conocida como función principal debido que es la que se ejecutará al correr el programa). Esta función que era llamada no recibía algún valor, sino que manejaba sus variables locales y ejecutaba las instrucciones que les fueron definida. Lo que se propone con el paso de parámetros es que se le pueda pasar valores a la función para que trabaje con ellas.
Para definir una función que recibirá parámetros se debe agregar ésta característica a la sintaxis, quedando de la siguiente forma:
[tipo de dato] nombre_función ( [tipo de dato] variable1,... [tipo de datos] variable n);
Tal vez lo veas un poco confuso, pero hagamos un ejercicio para detallarlo mejor. El ejercicio que haremos es el del capítulo anterior donde determinábamos los números pares de un rango de valores, donde crearemos una función que evalúe esos valores.
#include <stdlib.h> #include <iostream> using namespace std; int mensaje(); int evaluacion(int num_min, int num_max); int main(){ int num_min, num_max; cout << "Indique el numero minimo del rango "; cin >> num_min; cout << "Indique el numero maximo del rango "; cin >> num_max; evaluacion(num_min, num_max); return 0; } int mensaje (){ cout << "Este numero es par"; return 0; } int evaluacion(int num_min, int num_max){ for (int i = num_min; i <= num_max; i++){ if ( i % 2 == 0){ cout << i << " - "; mensaje(); cout << endl; } } }
Fíjense como quedó. Analicemos el ejercicio para comprenderlo mejor:
- Se declaran dos funciones mensaje() para mostrar por pantalla el texto "Este número es par" y evaluación() para hacer la evaluación de los números. Estas mismas funciones se definen después del main() estableciendo qué hará cada una de ellas.
- La función evaluacion() se declara para que reciba dos parámetros los cuales colocamos dentro de los paréntesis. Dentro de los paréntesis seguimos la sintáxis descrita anteriormente: Se dice que tipo de datos se pasarán a la función (en este caso ambos son enteros int) y se indica el nombre de la variable el cual se asociará con las variables locales de la función. Nota: No es necesario que las variables a pasar tenga el mismo nombre de las variables que se manejan en el main(), en esta oportunidad les coloqué el mismo nombre para no confundirnos.
- En el main(), después de capturar por teclado los valores de num_min y num_max, se llama a la función evaluacion(num_min, num_max) pasándole los datos requeridos.
- La función evaluacion() de ejecuta y dentro, a su vez, llama a la función mensaje().
Ahora veamos algo, para aquellos estudiantes que entregan el mismo programa argumentando que se reunieron para hacerlo. Entiendo que se reunan para discutir el ejercicio, pero la lógica de cada persona permite obtener el mismo resultado aplicando diferente caminos. Voy hacer el mismo ejercicio de otra manera y verán que se logrará el mismo resultado:
#include <stdlib.h> #include <iostream> using namespace std; int mensaje(); int evaluacion( int numero); int main(){ int num_min, num_max; cout << "Indique el numero minimo del rango "; cin >> num_min; cout << "Indique el numero maximo del rango "; cin >> num_max; for (int i = num_min; i <= num_max; i++){ evaluacion(i); } return 0; } int mensaje (){ cout << "Este numero es par"; return 0; } int evaluacion( int numero){ if ( numero % 2 == 0){ cout << numero << " - "; mensaje(); cout << endl; } }
Como pueden notar se obtiene el mismo resultado con un programa cuya función evaluación ha sido modificada. ¿Cómo fue modificada? De la siguiente manera:
- La función evaluacion(int numero) ha sido declarada para recibir un solo valor como parámetro. Y en este caso será el número a evaluar.
- El for queda dentro de la función main() y en cada iteración se llama a la función evaluacion() pasándole la variable i como parámetro. Nótese que el nombre de la variable de la función evaluacion(numero) y la que se pasa al llamar la función (i) no coinciden en nombre. Esto se hizo intencional, ya que como les comente no es necesario que estas tengan el mismo nombre. Pero si es necesario que dentro de la función nombre coincida.
- Lo anterior se evidencia al ver en la función evaluacion() cuando en la estructura de control if se revisa la condición, allí se realiza la división con residuo con la variable numero.
Como pueden ver se ha presentado dos lógicas para atender el mismo problema. Decir cual es mejor depende de cuánto tiempo y recursos utilizan para ejecutarse. Pero se evidencia que si se puede hacer.
Quiero
acotar que las variables que se definen dentro de la función pueden ser
de cualquiera de los tipos de datos vistos en el curso. Para nuestro
ejercicio se declararon int porque los datos que se pasarán serán enteros.
Con esto se concluye el capítulo de funciones. Espero lo hayan disfruta. Ya estamos llegando al final de este curso. Quedán tratar los temas de punteros y estructuras.
¡Nos vemos!
0 comentarios:
Publicar un comentario