destacada_NO-return

¿Qué es una función?

Una función es un fragmento de programa diseñado para ser reutilizado en múltiples ocasiones. Normalmente una función realiza una o varias tareas pudiendo al terminar devolver un valor (funciones con retorno) o no devolver nada (funciones sin retorno).

Nuestra primera función. Reutilizando una melodía.

Imagina que queremos tocar una pequeña melodía varias veces en distintos momentos del programa y encender un LED presionando un pulsador. Normalmente deberíamos repetir todos los bloques de la melodía cada que vez que queramos usarla. Al final tendríamos un programa largo y difícil de entender y modificar. ¿Por qué no reutilizar siempre los mismos bloques? Vamos a crear una función que contenga la melodía para más tarde utilizarla siempre que la necesitemos. Para ello utilizaremos un zumbador, un botón y un LED.


esquema_conexion

Creando la función

Para poder utilizar una función, primero hay que crearla dentro de la zona Variables globales, funciones y clases. Para ello utiliza el bloque Declarar función dentro de la pestaña Funciones

.

declarar_funcion

Llamando a la función

Una vez creada la función, es necesario llamarla dentro del programa. A pesar de que tienen bloques dentro, las funciones no se ejecutan a no ser que las llames. Para llamar a una función utiliza el bloque Ejecutar función.

2_sin_funcion

ejecutar_funcion

A la izquierda tienes el programa sin funciones y a la derecha con ellas. Como puedes ver, el programa es mucho más corto usando funciones, siendo mucho más rápido y fácil el crearlo. Además, si por alguna razón quieres modificar la melodía, solo tendrás que cambiarla en la función y no en cada parte del programa.

Personalizando funciones. Los argumentos

Imagina ahora que queremos utilizar en el programa la misma melodía, pero en cada sitio con una duración diferente. Las notas en la función son siempre las mismas, ¿cómo podríamos realizarlo? Los argumentos son variables que solo existen dentro de una función y cuyo valor definimos cuando la llamamos. Si utilizamos el bloque avanzado Crear función con los siguientes argumentos podremos crear un argumento llamado tiempo que establezca cuánto ha de durar cada nota.

funcion_parametros

Una vez que tenemos creada nuestra función con argumentos solo tenemos que llamarla. Para ello utilizaremos el bloque avanzado Ejecutar función con los siguientes argumentos.

ejecutar_funcion_parametros

En el caso de que pulsemos el botón, la melodía se ejecutará con un tiempo de 2000 ms cada nota. En el caso contrario, cada nota durará 500 ms. De esta forma podemos reutilizar el mismo fragmento del programa todas las veces que queramos adaptándolo a cada situación.

Aún hay más

    A continuación te proponemos algunas ideas para seguir practicando:

  • Crea una melodía completa separando una función para cada compás.
  • Modifica el programa anterior y añade otro argumento para controlar el tiempo de pausa entre notas. Para ello necesitarás utilizar el bloque coma dentro de avanzados.
  • Crea una función a la que le pases como parámetros el número de veces que deseas hacer parpadear un LED y el tiempo de parpadeo. Necesitarás utilizar un bucle de control for.


Mira el siguiente vídeo para descubrir más cosas sobre las funciones sin retorno.


A la hora de programar, es más importante el programar bien que el tener una gran cantidad de bloques. Las funciones te permitiran reutilizar muchas parte de tu programa de una forma muy inteligente. Ahorrandote errores, tiempo y esfuerzo. ¿Quieres descubrir todo lo que son capaces de hacer? ¡Lo veremos en la siguiente entrada!

2 comentarios

  1. Hola, como curiosidad ¿se pueden crear funciones con varios argumentos? Lo pregunto por lo del plurar “Ejecutar…. con lo siguientes argumentos”
    Y por otro lado, y sin que tenga nada que ver, ¿Cómo se puede añadir a una variable de texto el valor “textual” de una variable númérica? Por ejemplo en un bucle “for..next” aprovechar la variable númérica “contador” para concatenarla a una variable de texto “variabledetexto = variabledetexto + contador” para imprimirla en un LCD por ejemplo.
    Muchas gracias.

    1. Pablo Lozano

      Hola Javier,

      Respondiendo a tu primera pregunta:

      Desde Funciones -> Avanzados hay un bloque sin nombre con dos espacios vacíos, el cual se puede introducir en el hueco de los argumentos del bloque Declarar función con los siguientes argumentos, y en cada hueco de este bloque que te comento, introducir una variable.

      Respondiendo a tu segunda pregunta, en la pestaña Texto, existe el bloque “Crear texto con”, mediante la cual, puedes convertir a texto el valor de una variable numérica, como pudiera ser un entero, a una cadena de caracteres lista para concatenarla a otra o imprimirla.

      Espero haberte sido de ayuda, y si tienes dudas, vuelve a preguntar.

      Un saludo.

Los comentarios están cerrados.