# Uso de funciones

A menudo es preciso **repetir muchas veces a** lo largo de un programa **un mismo fragmento de código**. Para no tener que escribir el mismo código una y otra vez en aquellas partes del programa donde deba ser ejecutado, MakeCode permite el uso de **funciones**.

Una **función** es por lo tanto un trozo de código al que asignamos **un nombre que podemos invocar** en cualquier momento y desde cualquier parte del programa para que se ejecute. En otros lenguajes de programación, las funciones como las de MakeCode son denominidas **rutinas**, **subrutinas**, **módulos**, **métodos** o <span style="color: rgb(224, 62, 45);">**procedimientos**</span>.

Consideremos del código siguiente, que convierte a micro:bit en una **alarma**: cada vez que la tarjeta es agitada presenta un icono intermitente y produce un sonido.

[![Funcion00.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/funcion00.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/funcion00.jpg)

Después de ajustar el volumen al máximo, un bucle <span style="color: rgb(45, 194, 107);">**repetir 4 veces**</span>, muestra un icono, después reproduce una melodía pregrabada por medio del bloque <span style="color: rgb(224, 62, 45);">**play...hasta que termine**</span>, borra la pantalla y espera medio segundo.

Podemos hacer más sensible la alarma añadiendo más eventos para dispararla, por ejemplo, el giro de la placa a la izquierda.

[![Funcion01.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/funcion01.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/funcion01.jpg)

Para cualquier otro evento que deba activar la alarma habrá que repetir **volver a repetir el código**, llenando el área de programación de bloques. Solucionemos este probllema creando una función a la que vamos a llamar **<span style="color: rgb(35, 111, 161);">activar</span>**.

Tan sólo hay que pulsar en el menú **Avanzado** <span style="color: rgb(35, 111, 161);">**Funciones**</span>, pulsar sobre <span style="color: rgb(35, 111, 161);">**crear una variable...**</span> y darle el nombre elegido. Inmediatamente aparecerá el nuevo bloque de código correspondiente a la función activar.

[![Funcion02.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/funcion02.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/funcion02.jpg)

Ahora debemos completar el código de la función:

[![Funcion03.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/funcion03.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/funcion03.jpg)

Finalmente, cada evento que deba disparar la alarma incorporará una llamada a la función, que aparecerá como un bloque denominado como <span style="color: rgb(35, 111, 161);">**llamada activar** </span>dentro del menú **<span style="color: rgb(35, 111, 161);">Funciones.</span>**

[![Funcion04.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/funcion04.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/funcion04.jpg)