PR2 - Funciones - Parte 1
PR2 - Funciones - Parte 1
PR2 - Funciones - Parte 1
Funciones
Las funciones son una parte fundamental de la programación en C++. Son bloques de código
que realizan tareas específicas y se pueden llamar desde otros lugares en el programa. El uso
de funciones facilita la modularización del código y lo hace más legible y mantenible. Hasta
el momento hemos trabajado exclusivamente en una función llamada main y hemos resuelto
toda la lógica de nuestro algoritmo en dicha función.
Sin embargo, cambiar a un esquema de trabajo en el que haremos uso de funciones para
resolver nuestras soluciones de código nos trae una serie de beneficios pero también la
necesidad de realizar una análisis inicial más sofisticado.
Bajo este nuevo paradigma de resolución de problemas en el que no resolveremos
íntegramente nuestro programa en main sino que dividiremos parte de los problemas en
funciones, es necesario determinar qué acciones se realizarán dentro de la función main y
qué acciones realizarán las funciones.
De esta manera main se encargará de organizar el flujo principal del programa y delegará en
llamados a funciones parte de la resolución de la lógica del mismo.
Antes de analizar de manera técnica y ver en profundidad la sintaxis necesaria para trabajar
con funciones veamos teóricamente algunos conceptos:
1
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
- Reutilización de Código: Las funciones permiten escribir una vez una pieza de código
y reutilizarla en diferentes partes del programa, evitando la duplicación innecesaria de
código. Esto facilita el mantenimiento y la actualización del software.
2
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
Podemos observar que el valor devuelto de la función es un valor booleano. Es decir, true o
false. Todavía no sabemos bien qué hará la función pero sabemos que luego de utilizarla la
misma nos devolverá un valor bool para continuar con nuestro trabajo. Por ejemplo, si desde
main hacemos uso de la función esNumeroPar entonces al utilizarla debemos suministrarle
un valor entero como parámetro y sabremos que devolverá un valor bool como valor de
retorno.
Luego, vemos que la función se llama esNumeroPar. Los nombres de las funciones siguen las
mismas reglas que las de declaración de variables. Se recomienda establecer un nombre
descriptivo para que al leerlo podamos inferir qué hará la función. En este caso, el nombre de
la función nos da a entender que determinará si un número es par o no. Y teniendo en cuenta
el valor devuelto nos indicará que es par con un true y de lo contrario nos devolverá un false.
Esto empieza a tener sentido. Lo único que necesitaría la función es, de alguna manera, contar
con un número para poder analizar su paridad.
Por último, podemos observar que la función recibe un solo parámetro. Un número entero
llamado vagamente numero. Esto significa que quien use la función sólo podrá hacerlo si
proporciona un número entero como parámetro. Deducimos entonces, aún sin ver el
desarrollo de la función, que la función recibirá el número, determinará si es par y devolverá
true o false según sea la situación.
En este caso, vemos una función cuyo valor devuelto es void. Este tipo de dato nos indica que
la función no devolverá nada. Por lo que al llamarla, no debemos esperar un valor devuelto
porque no lo recibiremos.
También podemos observar que recibe dos parámetros. Un string llamado nombre y un int
llamado horaDelDia.
3
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
Por último, el nombre de la función mostrarSaludo nos da una idea de lo que la función podría
llegar a hacer. Mostrará por pantalla un saludo personalizado dependiendo del nombre de la
persona y la hora del día. Por ejemplo, dirá "Buenos días, Angel"; "Buenas tardes, Laura", etc.
Las funciones pueden tener parámetros, que son valores que se pasan a la función cuando
se la llama. Los parámetros permiten que las funciones trabajen con datos variables. No
todos los parámetros se pasan de la misma manera. Existirán situaciones en donde
queremos que la función reciba un valor, desde main por ejemplo, pero no tenga la capacidad
de cambiarlo en main. También existirán situaciones donde vamos a querer que la función
reciba una referencia, también por ejemplo desde main, y si cambiamos el contenido de este
parámetro dentro de la función también cambie en la función que la llamó (o sea, main).
- Parámetros por valor: En este caso, son los valores los que se pasan a la función, pero
la función trabaja con copias de esos valores. Los cambios en los parámetros no
afectan a las variables originales fuera de la función.
4
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
misma debe de alguna manera poder indicarnos que el número es par devolviendo el valor
true o que no lo es devolviendo el valor false.
La palabra clave return permite realizar esa tarea. En primer lugar, finaliza inmediatamente la
ejecución de la función y devuelve el flujo de ejecución a quien la haya llamado. Además, si
especificamos que la función debe devolver algún valor, entonces la instrucción return deberá
ir acompañada del valor que deberá devolver para esa ejecución de función.
Por otro lado, si la función no debe devolver nada (los casos de funciones que tenían void
como tipo devuelto), entonces, en ese caso, la instrucción return simplemente indica que la
función ha llegado a su fin. En estos casos, la incorporación o no de dicha instrucción return
es opcional.
Podemos observar aquí que la definición de la función incorpora un par de llaves. Dentro
podremos declarar las variables que sean necesarias para el desarrollo de nuestro algoritmo.
En este caso, utilizamos una variable booleana para guardarnos el valor true o false según
corresponda al análisis del parámetro numero. Luego, como hemos aprendido, la instrucción
5
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
return devuelve a quien haya llamado a esNumeroPar el valor concordante con la paridad del
número suministrado.
#include <iostream>
using namespace std;
6
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
int main(){
string nombreDelUsuario;
int horaDelDia;
int n;
bool valorDevuelto;
mostrarSaludo(nombreDelUsuario, horaDelDia);
valorDevuelto = esNumeroPar(n);
if (valorDevuelto == true){
cout << "El numero ingresado es par";
}
else{
cout << "El numero ingresado no es par";
}
return 0;
}
7
PUENTES UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL GENERAL PACHECO
PLAN DE INTEGRACIÓN TECNICATURA UNIVERSITARIA EN PROGRAMACIÓN
TERRITORIAL UNIVERSITARIA PROGRAMACIÓN Y LABORATORIO II
return esPar;
}