
¿Qué son las funciones?
Apartado 32: Las funciones en programación
Dificultad del apartado:
Las funciones son parte importante de casi todos los lenguajes de programación. Algunos de ellos no las utilizan, pero la mayoría que podrás ver hoy en día, sí.
"Función" en inglés se dice "function".
Las funciones son bloques de código que podemos colocar en los programas, para hacer una tarea específica. Por ejemplo, ¿te acuerdas del algoritmo de suma que hicimos anteriormente? El código se podría poner dentro de una función para poder utilizar su código en programas más complejos. Por ejemplo, en una calculadora. En ella, haríamos una función que haga la suma, otra la resta, etc.
En este capítulo te voy a mostrar las funciones de una forma muy básica. Cuando pasemos al módulo de Python básico, ya profundizaremos más.
A partir de este capítulo, normalmente, vamos a estar hablando de programa y no de algoritmo, ya que con las funciones, vamos a añadir cosas fuera del propio algoritmo, y otros algoritmos en la misma hoja de código.
Ventajas de usar funciones
Las funciones sirven para organizar el código. Ya que podemos dividir un programa o un algoritmo en secciones más pequeñas. Esto facilita la lectura del mismo.
También, nos ayuda a reutilizar código. Supongamos que creas una tarea en un programa. Esta tarea la necesitas en diferentes partes del mismo. Si utilizas la programación de la forma en que la hemos utilizado hasta ahora, tendrías que repetir el mismo código de esa tarea en diferentes algoritmos del programa. Sin embargo, gracias a las funciones, podrás guardar y reutilizar trozos enteros de código.
Además, si tenemos fallos en un programa, es más fácil probar cada parte con las funciones, que todo el código suelto en un solo programa.
Sintaxis de una función con PSeInt
Para añadir el bloque de código de función a tu programa, puedes utilizar el último de los botones que nos quedan por probar de la sección de comandos:

Esto te añadirá el bloque fuera del algoritmo:
Funcion variable_de_retorno <- Nombre ( Argumentos )
Fin Funcion
Algoritmo funciones
FinAlgoritmo
Ejemplo práctico de función en PSeInt
Veamos un ejemplo practico con PSeInt. Vamos a hacer una sencilla función de suma con PSeInt:
// Esta función calcula y muestra el resultado de la suma de dos números
Funcion suma(numero1, numero2)
Definir resultado Como Real
Escribir "Introduzca el primer número para sumar"
Leer numero1
Escribir "Introduzca el segundo número para sumar"
Leer numero2
resultado <- numero1 + numero2
Escribir "El resultado de la suma es: " resultado
Fin Funcion
Algoritmo funciones
Definir numero1, numero2 Como Real // Definimos las variables a utilizar en la función
suma(numero1, numero2) // Llamamos a la función suma y le pasamos los datos
FinAlgoritmo
La función se llama suma. Esta función tiene unos paréntesis con los valores que necesita para hacer su cometido. Esto se conoce en programación como parámetros, que son esos dos números. Sin embargo, no tiene la declaración de estas variables, esto lo hacemos en el algoritmo. No obstante, lo puedes hacer en ambos sitios. No hay una zona específica donde no se puedan declarar variables.
La función, sirve para almacenar en resultado
, el resultado de la suma de numero1
y numero2
. Finalmente se lo muestra al usuario.
Las funciones, no ejecutan su código si no se las llama en alguna parte del programa. Entonces, quiere decir que este programa empieza por el algoritmo. Donde la estamos llamando.
La llamada (línea 14) se hace con dos valores, que son exactamente los que necesita la función. No debes darle ni 1, ni 3, ni 4, exactamente 2.
Llamar a una función, es lo mismo que con las variables, las llamamos por su nombre, solo que en este caso, si necesitan valores como los dos números, hay que dárselos, a parte del nombre.
No siempre requerirán valores en dichos paréntesis, depende de las necesidades en cada caso.
Probando el programa
Ejecutamos el programa y vemos que nos pide los dos números. Después, internamente, le da a suma()
los dos números. Esta hace el cálculo y lo imprime en la consola.

Reutilizar código
Algo muy bueno de las funciones y uno de sus principales cometidos, es al reutilización del código. Para que te quede claro de una forma sencilla, te voy a poner un sencillo algoritmo sin funciones, con cinco sumas:
Algoritmo suma
// Variables para operar
Definir resultado1, resultado2, resultado3, resultado4, resultado5 Como Real
resultado1 <- 10 + 10
resultado2 <- 1034 + 1013
resultado3 <- 6557 + 3242
resultado4 <- 76785 + 65346
resultado5 <- 6346345 + 34.556
Escribir "El resultado es: " resultado1
Escribir "El resultado es: " resultado2
Escribir "El resultado es: " resultado3
Escribir "El resultado es: " resultado4
Escribir "El resultado es: " resultado5
FinAlgoritmo
En este código hay dos cosas repetitivas. La primera, es la declaración de varias variables de resultado, para un mismo propósito (imagina si necesitas 1000). La segunda, es la repetición de la misma frase con cinco Escribir
idénticos en cuanto a frase.
Gracias a una función, puedes evitar repetir tanto:
Funcion suma(numero1, numero2)
Escribir "El resultado es: " numero1 + numero2
FinFuncion
Algoritmo sumas
suma(10,10)
suma(1034,1013)
suma(6557,3242)
suma(76785,65346)
suma(6346345,34.556)
FinAlgoritmo
Con el tiempo aprenderás a valorar donde y como usar funciones. Hay cosas simples, que quizás no necesiten una función, y otras, que quizás si.
Siempre piensa, que están pensadas para que las utilices normalmente, más de una vez. Si solo necesitas llamar a una función una única vez, plantéate si no es mejor utilizar código sin una función.
Devolver valores con una función
Devolver valores es una de las cosas más comunes en una función. De hecho, esta tarea es más común que "Escribir" los valores en la consola.
Se trata de una cosa sencilla, pero que puede que no llegues a comprender del todo hasta que veamos algunas cosas más. Sin embargo, intentaré ponerte algún ejemplo fácil de entender.
Cuando imprimimos el resultado en la consola, con un Escribir
, hacemos que esa función, no sea útil para nada más que para ese propósito ¿No sería ideal poder reutilizar el resultado para interactuar en otras partes del programa?
Llamando a la función, no podemos guardar el resultado, solo mostrar ese Escribir
. Por lo tanto, no se puede hacer algo tan simple, como crear una variable que almacene la suma de los resultados de varias llamadas, como en este ejemplo:
// Esta función calcula y muestra el resultado de la suma de dos números
Funcion suma(numero1, numero2)
Definir resultado Como Real
Escribir "Introduzca el primer número para sumar"
Leer numero1
Escribir "Introduzca el segundo número para sumar"
Leer numero2
resultado <- numero1 + numero2
Escribir "El resultado de la suma es: " resultado
Fin Funcion
Algoritmo funciones
Definir sumaTotal Como Real
sumaTotal <- suma(70,80) + suma(10,50)
Escribir "Sumando la primera suma y la segunda, nos da este resultado: " sumaTotal
FinAlgoritmo
Lin 14 (inst 1): ERROR 278: El subproceso (SUMA) no devuelve ningún valor.
Lin 14 (inst 1): ERROR 278: El subproceso (SUMA) no devuelve ningún valor.
Con estos errores, tenemos ya una pista. Dice que el subproceso (función) no "devuelve" ningún resultado.
Pues eso mismo es lo que tenemos que conseguir, que la función sirva para devolver valores fuera de ella.
Puedes imaginar, que si creas dos variables y almacenas en ellas la llamada, te puede funcionar:
// Esta función calcula y muestra el resultado de la suma de dos números
Funcion suma(numero1, numero2)
Definir resultado Como Real
Escribir "Introduzca el primer número para sumar"
Leer numero1
Escribir "Introduzca el segundo número para sumar"
Leer numero2
resultado <- numero1 + numero2
Escribir "El resultado de la suma es: " resultado
Fin Funcion
Algoritmo funciones
Definir sumaTotal Como Real
Definir resultado1 Como Real
Definir resultado2 Como Real
resultado1 <- suma(70,80)
resultado1 <- suma(10,50)
sumaTotal <- resultado1 + resultado2
Escribir "Sumando la primera suma y la segunda, nos da este resultado: " sumaTotal
FinAlgoritmo
Esto tampoco funciona.
Voy a simplificar más el programa, de forma que se vea lo que quiero explicar, de forma más sencilla.
// Esta función calcula y devuelve el resultado de la suma de dos números
Funcion resultado<-suma(numero1, numero2)
resultado <- numero1 + numero2
Fin Funcion
Algoritmo funciones
Definir sumaTotal Como Real
sumaTotal = suma(70,80) + suma(10,50)
Escribir "Sumando la primera suma y la segunda, nos da este resultado: " sumaTotal
FinAlgoritmo

Esta vez, si que funciona. Estoy pudiendo obtener el resultado y almacenarlo para hacer operaciones, como la suma de los dos valores devueltos en la variable sumaTotal
.
Esto lo he conseguido gracias a la variable extra que he puesto en la declaración de la función. Fíjate, que la función se llama suma()
, pero con una flecha, (<-
), le creo la posibilidad de tener lo que se conoce como "valor de retorno" o "valor de devolución".
En la declaración de la función, declaro ese valor de retorno, pero dentro del código de la función (línea 3), estoy especificando la operación que quiero que devuelva la función. Eso lo hago utilizando la variable de retorno.
Al ser esto algo nuevo, quizás te sea confuso o no le veas bien el uso. No te preocupes, hay que seguir practicando con más ejemplos.
En Python, hacer esto con las funciones es mucho más fácil. Solo tienes que especificar una palabra clave concreta, llamada return, y luego poner lo que quieres devolver. El paso extra de crear una variable de retorno, no existe ahí.
Hagamos una última prueba más. Vamos a poner la entrada del usuario en el algoritmo. Ahí, le solicitaremos los números de la operación.
Tenemos la función suma, que recibe dos argumentos, a
y b
.
Además, la variable de retorno, se llama r
. Esto con el fin de poner el ejemplo lo más simplificado posible.
En su bloque de código, lo único que hace la función, es devolver con la variable de retorno el resultado de la suma de los argumentos pasados a los parámetros en la la llamada a la función.
// Esta función calcula y muestra el resultado de la suma de dos números
Funcion r<-suma(a, b)
r <- a + b
Fin Funcion
Algoritmo funciones
// Variables
Definir numero1 Como Real
Definir numero2 Como Real
Definir resultado Como Real
// Solicitud de datos al usuario
Escribir "Introduzca el primer número: "
Leer numero1
Escribir "Introduzca el segundo número: "
Leer numero2
// Llamada a la función
resultado <- suma(numero1,numero2)
// Mostrar resultado
Escribir "El resultado de la suma de " numero1 " + " numero2 " es: " resultado
FinAlgoritmo

Las funciones, ya son un tema algo más avanzado. No obstante, con un poco más de práctica, las dominarás a la perfección. No dejo ejercicios para este apartado, ya que vas a practicarlo bastante en el proyecto de fin de módulo.
Anterior SiguienteComentarios
Si te quedan dudas sobre el temario, sobre Programación, PseInt, Python o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.