Hoy hablamos de una duda habitual en los que están aprendiendo a programar: qué es una variable.

En robótica educativa se comienza generalmente enseñando las salidas digitales. Doy una orden de encendido y un LED (una pequeña «bombilla» electrónica) se enciende. Doy después una orden de apagado y el LED se apaga. Puedo también hacerlo parpadear cada cierto tiempo, etcétera. Pero estoy mandando órdenes directas, no hay nada que pueda alterar el comportamiento de los LED, que ya está prefijado, está programado.

Para hacer que ese comportamiento se pueda modificar de forma automática se hacen necesarias las entradas que proporcionan unos sensores.

Ahora bien, ¿qué hacemos con el dato que nos proporciona el sensor?. Necesitamos guardarlo en algún sitio. Dicho de otra forma: necesitamos crear una variable.

Una variable es un «cajón» dentro de la memoria de nuestra placa u ordenador al que ponemos un nombre. Dentro del cajón ponemos un número, un carácter, una cadena, varios números, etcétera. Además, ese cajón tendrá un tamaño.

De un modo un poco más técnico, una variable es una reserva de posiciones hecha en la memoria de nuestro ordenador o microcontrolador. El lenguaje de programación se encarga de hacer esto por nosotros, que sólo tenemos que dar una instrucción muy simple.

Qué tipo de variables existen

Las variables pueden ser de muy diversos tipos: números, letras, conjuntos de letras, etcétera.

Cuando empezamos a programar lo prioritario es distinguir dos tipos de números: los enteros y los decimales. Hay muchos más tipos pero para empezar son suficientes y todo el mundo tiene una idea de lo que son. Números enteros son 1, 3, -4, etcétera. Un número decimal es el 2,57.

Cada uno de estos números tiene un cierto tamaño. Recordemos que se graban en nuestros ordenadores y placas de arduino como ceros y unos. Por ejemplo, un número natural ocupa dos bytes (16 ceros y unos).

Cuando se crea una variable hay que indicar de qué tipo es. Es decir, hay que declararla. Así, una instrucción como int distancia crea una variable llamada distancia que es de tipo entero.

En resumen, una variable es solo el nombre de un lugar en la memoria de un ordenador (o microcontrolador) donde podemos almacenar un conjunto de unos y ceros. El tamaño del cajón dependerá del tipo de número que deseamos introducir. El tamaño queda fijado en la programación cuando decimos (declaramos) el tipo de variable, a partir de ahí, no hace falta que nos preocupemos de ello.

Para qué nos sirve una variable y cómo usarla

El uso de variables en nuestros programas está relacionado con la utilización de sensores que proporcionan las entradas, es decir, los datos con los que trabajamos para tomar decisiones.

Dos usos muy importantes de las variables:

  • Para ver el estado de algunos de nuestros actuadores como un botón. Por ejemplo, si queremos que al pulsar un botón se encienda un diodo LED y que al volver a pulsarlo se apague. Es necesario utilizar una variable que almacene el estado del botón.
  • Para guardar el valor proporcionado por un sensor. Por ejemplo, la entrada de un potenciómetro para controlar el giro de un servo. O, en el caso de un sensor de distancia, para guardar la distancia que nos proporciona.

El caso de las entradas digitales es bastante simple: si almacenamos una entrada digital en una variable ésta valdrá 0 o 1.

Ejemplo de cómo crear una variable y utilizarla

En la figura tenemos la codificación por bloques de un programa. A su derecha está «la traducción» a código escrito (no se ve completa):

qué es una variable

Ejemplo de declaración de una variable de tipo entero (int)

Las variables deben definirse en el programa para reservar un hueco en la memoria de la placa.

Una vez que tenemos el dato guardado en la variable, podemos utilizar el nombre de la variable para hacer cuentas, comparaciones, etc. Como en el caso que se muestra: si la distancia es mayor o igual que 20 ponemos a 5 voltios el pin número 5. Si tenemos conectado un diodo LED, se encenderá. Si la distancia es menor que 20, el LED se apagará.

Cuidado con los decimales

La selección del tipo de variable a veces resulta de gran importancia. Nada mejor que un ejemplo para verlo. Imaginemos que conectamos a una placa de arduino un potenciómetro, que proporcionará una entrada analógica. El pin central del potenciómetro tendrá una tensión entre 0 y 5 V según cómo movamos el eje. Arduino transforma esta tensión de entre 0 y 5 voltios en un número entero entre 0 y 1023. El número 0 equivale a 0 voltios y el número 1023 equivale a 5 voltios.

Nos planteamos presentar en el monitor del ordenador el valor numérico del potenciómetro y al lado, el valor de los voltios. Habrá que transformar un valor que está entre 0 y 1023 a otro que está entre 0 y 5V.

La relación entre los voltios y el valor obtenido en la entrada analógica será muy sencilla:

qué es una variable

Donde voltios es el valor en voltios y potenciómetro es el número entre 0 y 1023 que se obtiene en cada momento. Por ejemplo, si el valor que obtenemos del potenciómetro (al girar el eje) es 727, su equivalencia en voltios será:

qué es una variable

Si programamos lo siguiente:

En el programa se crean dos variables enteras, potenciómetro y voltios y luego se imprimen. Esta es la salida:

qué es una variable

Resultados obtenidos por el monitor (variable entera)

Observamos que para 727 tenemos un equivalente de 3 voltios y en general sólo veremos valores de 0 hasta 5. Es decir transformamos 1023 números en tan solo 6 números enteros (0, 1, 2, 3, 4, y 5). Necesitamos números decimales. Queremos obtener un valor más preciso, 3,55 V (como hemos visto antes).

Es preciso modificar el programa:

qué es una variable

En este caso, hemos declarado las variables como decimales (de tipo float, según la notación del sistema de programación). Así conseguimos obtener valores más precisos de los voltajes:

qué es una variable

Resultados obtenidos por el monitor (variable decimal)

En multitud de ocasiones será suficiente tratar a nuestras variables numéricas como enteras. El uso de unas u otras dependerá de la precisión que necesitemos en cada momento.

(fotografía de portada, clker, pixabay)