sin-retorno

Ejecuten la orden 66…

Hoy vamos a aprender todo lo relacionado con los bloques Funciones. ¿Qué son? ¿Para qué sirven? ¿Porqué tienen tantas palabras raras? Las respuestas a estas preguntas, a continuación:

Bloques funciones

Imaginaos que nuestro programa tiene que hacer una cosa muchas veces, por ejemplo, hacer parpadear dos leds en muchos casos, o hacer que suene una melodía de más de 25 bloques que hemos creado. Si cada vez que quisiéramos que sonase nuestra melodía tuviéramos que volver a escribirla, ¡acabaríamos con los ojos cuadrados de tanto bloque!

¿Y si pudiéramos de alguna forma crear la melodía una sola vez, darle un nombre a esa acción (como “Hacer sonar la melodía”) y luego, mediante un único bloque, hacer que suene?

¡En eso consisten las funciones precisamente! Sirven para ahorrarnos tiempo y bloques.
Cuando tenemos una tarea que se repite mucho, o cuando queramos organizar mejor nuestro proyecto, crearemos una función que realice algo cada vez que la llamemos.

Pero si queréis que las funciones os eviten dolores de cabeza en vez de dároslos, estad muy atentos, pues empezamos:

Para realizar los ejemplos de hoy, necesitarás:

  • 1 x ZumBloq LED
  • 1 x ZumBloq Zumbador
  • 1 x ZumBloq Pulsador
  • 1 x ZumBloq Servo rotación continua
  • Una placa controladora ZUM BT 328 o compatible con Arduino UNO
  • Un cable USB

Volveré…

Lo primero que hay que explicar es que las funciones en bitbloq pueden ser de dos tipos: Funciones sin retorno y funciones con retorno. Tranquilos, las funciones sin retorno no se van a escapar y no volver cuando las ejecutes por primera vez, “sin retorno” significa que no retornan ningún valor al final de su ejecución.

Cuando queramos hacer una función que realice muchas operaciones matemáticas (sumar, luego restar, volver a sumar, multiplicar, restar y multiplicar, por ejemplo) al final nos interesará que la función nos retorne que valor final ha resultado. Por ello en este caso usaremos una función con retorno, que nos retornará el valor final de las operaciones.

Pero cuando queramos que nuestra función realice una serie de acciones que nada tienen que ver con un valor final, como hacer sonar esa larga melodía, usaremos una función sin retorno.

El bloque “función sin retorno” y el bloque “llamar a función sin retorno”

Bloques funciones sin retorno

Como hemos explicado justo antes, el bloque función sin retorno (arriba a la izquierda) sirve para agrupar una serie de bloques y ejecutarlos cuando nosotros llamemos a la función.

Podría decirse entonces que cuando creamos una función estamos creando un mini programa y dándole un nombre, para que, cuando lo llamemos, el programa principal “entre” en la función, la recorra entera, y salga de la función para continuar con el programa principal(en este caso, sin retornar ningún valor).

Ejemplo funciones flujo programa flechas

-¡Pero esto qué es! ¿¡Dos columnas de bloques no unidos!? Pero si me dijisteis que tenían que estar todos unidos o no funcionaría correctamente…

Esto es cierto, tienen que estar todos los bloques unidos en nuestro programa principal. Cuando ponemos un bloque de crear una función estamos creando al lado otro pequeño programa que estará contenido dentro del programa principal.

Vamos a entender esto mucho mejor cuando analicemos el siguiente ejemplo.

Ejemplo con los bloques de funciones sin retorno.

Programa que hace moverse un servo si pulsamos el botón, avisando con un parpadeo y sonido.

Ejemplo funciones sin retorno

Como a estas alturas ya seréis unos expertos con el bloque de control “Si…ejecutar” y habréis realizado más de una vez el ejemplo de hacer una cosa si pulsamos el botón y otra si no lo pulsamos, estoy seguro de que entenderéis bastante bien el programa si quitamos los bloques rosas que pone “Parpadeo_con_sonido” y los bloques de la derecha.

Vamos a empezar viendo la parte derecha del programa. Lo primero que vemos es el bloque “función sin retorno”. Este bloque es el encargado de empezar a crear una función sin retorno. Cuando lo ponemos en nuestra zona de trabajo lo primero que debemos hacer es darle un nombre (como hacíamos con las variables). Así se llamará nuestra función y por ese nombre la llamaremos con el bloque “llamar a función sin retorno” (como vemos en la parte izquierda del programa).

Dentro del bloque “función sin retorno” podemos crear un programa que sepamos que vamos a repetir varias veces. El bloque se irá haciendo cada vez mas grande para introducir todas los bloques que desees en tu función.

Y cuando queramos que nuestro programa principal haga lo que hemos programado en la función, por larga que sea esta, solo necesitaremos colocar un bloque de “llamar a función sin retorno” y cambiarla de nombre como hacemos con las variables.

Como vemos en el ejemplo, cada ciclo del programa revisa si el botón esta pulsado para hacer mover el servo o pararlo, pero además, antes del bloque del servo estamos llamando a la función, de tal forma que cada vez que pasamos por el bloque rosa que pone “Parpadeo_con_sonido”, estamos ejecutando todos los bloques de la función, de arriba a abajo.

Dos mejor que uno

También podemos realizar programas con más de una función. ¿No os parece un programa principal mucho más bonito?

Ejemplo varias funciones

Al pulsar el botón, se ejecutará la función Parpadeo, luego la función Melodía y luego la función Parpadeo.

A continuación…

Nos queda por ver un tipo de función que al terminar de ejecutar los bloques, nos devolverá una variable que ya veremos para que usamos. Estas son las “funciones con retorno” Para acabar de dominar las funciones, continuemos el curso en la siguiente lección.

Un comentario

  1. Pingback: Construye tu propio semáforo | DIWO - Impresoras 3D, kits de robotica y accesorios

Los comentarios están cerrados.