# Variables y arreglos

<p class="callout info">Una variable es un dato almacenado en la memoria del ordenador, al que nos referimos por un nombre y cuyo valor puede ser cambiado durante la ejecución de un programa.</p>

Las variables pueden almacenar tres tipos básicos de datos:

- **Booleanos**. Un dato de este tipo sólo puede tomar los valores verdadero o falso, a veces nombrados como true y false, high y low, alto y bajo ó 0 y 1.
- **Numéricos**. Los números almacenados pueden ser enteros, reales, complejos, etc.
- **Alfanuméricos**, como caracteres o cadenas de texto

Para ilustrar el uso y la utilidad de las variables, vamos a modificar nuestro **termómetro digital** para que, además de la temperatura actual, muestre también las **temperaturas máxima y mínima** registradas a lo largo del tiempo.

Comenzaremos por la parte más básica: al pulsar el botón A, micro:bit mostrará en pantalla la temperatura actual. Para ello usamos el bucle de eventos <span style="color: rgb(185, 106, 217);">**al presionarse el botón A**</span>, el bloque <span style="color: rgb(53, 152, 219);">**mostrar número**</span> y la función <span style="color: rgb(132, 63, 161);">**-**</span> para restar **3** grados a la lectura del sensor de **<span style="color: rgb(185, 106, 217);">temperatura (ºC)</span>** y obtener así una lectura más precisa, tal y como se indicó en el capítulo de **Bucles y eventos de tiempo: un termómetro**.

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

Las temperaturas **máxima** y **mínima** van a ser almacenadas en **dos** **variables** que debemos crear previamente. Puesto que cada variable debe tener asignado un nombre, vamos a llamarlas <span style="color: rgb(224, 62, 45);">**tmax**</span> y **<span style="color: rgb(224, 62, 45);">tmin</span>**.

Para crear una variable hay que deplegar el menú <span style="color: rgb(224, 62, 45);">**Variables**</span>, pulsar sobre <span style="color: rgb(224, 62, 45);">**Crear un variable...**</span> y darle el nombre deseado. Tras crear las variables <span style="color: rgb(224, 62, 45);">**tmax**</span> y **<span style="color: rgb(224, 62, 45);">tmin</span>**, el aspecto del menú debería ser el siguiente:

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

Nada más encender o reinicializar la placa conviene **guardar el valor de la temperatura actual en las variables creadas**. Para ello usaremos la estructura **<span style="color: rgb(53, 152, 219);">al iniciar</span>**, el valor proporcionado por la entrada **<span style="color: rgb(185, 106, 217);">temperatura (ºC)</span>** y las funciones de asignación de valores **<span style="color: rgb(224, 62, 45);">fijar tmax a</span>** y **<span style="color: rgb(224, 62, 45);">fijar tmin a</span>**.

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

<p class="callout info">El bloque <span style="color: rgb(224, 62, 45);">**fijar...a**</span> asigna a la variable el valor numérico indicado, mientras que el bloque **<span style="color: rgb(224, 62, 45);">cambiar... por</span>** suma a la variable el valor indicado.</p>

Las temperaturas máximas y mínimas guardadas en <span style="color: rgb(224, 62, 45);">**tmax**</span> y en <span style="color: rgb(224, 62, 45);">**tmin**</span> van a ser actualizadas cada minuto. Es necesario por lo tanto usar un evento de tiempo del tipo <span style="color: rgb(45, 194, 107);">**cada 60000 ms** <span style="color: rgb(0, 0, 0);">de la siguiente forma:</span></span>

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

Hemos vuelto a usar dos bloques <span style="color: rgb(224, 62, 45);">**fijar a**</span> para cambiar los valores de las temperaturas máxima y mínima. Por otro lado, las funciones **<span style="color: rgb(132, 63, 161);">min de...y...</span>** y <span style="color: rgb(132, 63, 161);">**max de...y...**</span> se encuentran en el menú <span style="color: rgb(132, 63, 161);">**Matemática**</span>.

El primer bloque de asignación da a la variable <span style="color: rgb(224, 62, 45);">**tmin**</span> el valor mínimo entre la temperatura actualmente medida con la entrada <span style="color: rgb(185, 106, 217);">**temperatura (º)**</span> y la temperatura mínima anteriormente guardada en <span style="color: rgb(224, 62, 45);">**tmin**</span>.

El segundo bloque de asignación da a la variable <span style="color: rgb(224, 62, 45);">**tmax**</span> el valor máximo entre la temperatura actualmente medida con la entrada <span style="color: rgb(185, 106, 217);">**temperatura (º)**</span> y la temperatura máxima anteriormente guardada en <span style="color: rgb(224, 62, 45);">**tmax**</span>.

Ya sólo queda mostrar las temperaturas registradas cada vez que se pulse del botón B. No nos olvidarnos de restar 3 grados a las temperaturas guardadas con el fin de proporcionar unas lecturas más precisas.

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

Un <span style="color: rgb(230, 126, 35);">**arreglo**</span> es una variable que contiene varios valores numéricos o textuales organizados en filas. El menú **<span style="color: rgb(230, 126, 35);">Arreglos</span>** contiene bloques para crear arreglos, asignarles valores y acceder a los valores guardados. En la imagen se muestra un arpegio guardado como una lista de cuatro notas musicales.

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

Por último, Para manejar <span style="color: rgb(230, 126, 35);">**variables de texto**</span>, existen muchos bloques específicos disponible en el menú **<span style="color: rgb(230, 126, 35);">Texto</span>**.