Contenido del capítulo

En este capítulo te enseño lo que son las funciones y cómo funcionan con una serie de ejemplos prácticos.

Duración estimada de todo el contenido:
Duración del vídeo:
Contiene 3 ejercicios de programación para resolver. Contiene 1 vídeo.
Tabla de contenidos
Logo

    ¿Qué son las funciones?

    Funciones en programación
    Funciones en programación

    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:

    Botón para funciones de PSeInt

    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.

    Antes de las funciones, se ejecutaba el código de manera lineal y dando algunos saltos en el flujo de ejecución, lo que generaba muchas veces un mal código, que en forma de burla, se le denominaba “código espagueti”, debido al laberinto que hacen los espaguetis en el plato (código enmarañado).

    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.

    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 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
    Devolución de valores en funciones

    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.

    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.

    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
    Salida en la consola de una función de PSeInt

    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