¿Qué son las funciones?
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.
Espacio publicitario
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, ya que se pueden volver muy complejas.
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 es posible poner incluso, 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 y modula la complejidad en partes más simples.
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 partes 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
Las funciones en programación, surgieron de la necesidad de reutilizar grandes partes de programas, que se repetían en otros programas con funcionalidades similares.
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:
// 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
suma(numero1, numero2) // Llamamos a la función
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. Sin embargo, que sepas que lo puedes hacer en ambos sitios. No hay una zona específica donde no se puedan declarar variables.
Espacio publicitario
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 17) 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 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.
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 con las funciones
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
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 dicha función.
Espacio publicitario
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:
// 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 15 (inst 1): ERROR 278: El subproceso (SUMA) no devuelve ningún valor.
Lin 15 (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:
// 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.
// 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".
Espacio publicitario
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.
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.
El código lo tienes en la siguiente página. Presta atención, ya que puede venirte bien para poder afrontar el reto final del proyecto, en el cuál, tendrás que usar las funciones para resolverlo.
// 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.
Se que son complicadas al principio, pero sigue practicando en otros lenguajes de programación, y verás que tarde o temprano, no supondrán un reto.
Espacio publicitario
Espacio publicitario
Espacio publicitario