Continuamos con nuestra serie de artículos sobre la placa de microbit que ahora abordan cómo se procesan los datos. Para más información, sugerimos consultar los artículos anteriores.
DATOS
La tarjeta micro:bit puede ser dividida en 4 partes principales:
Salidas.
Procesos.
Datos.
Entradas.
Observe el siguiente diagrama de bloques donde son mostradas estas partes:
En este texto estudiaremos los “Datos”, como es resaltado en la siguiente figura:
Datos e información, son dos conceptos muy similares. La tarjeta micro:bit guarda o almacena los datos en Memorias. De ahí la importancia de entender cómo funcionan las memorias. La siguiente imagen muestra un chip o circuito integrado de una memoria:
Las memorias digitales tienen una relación con lo que hace el cerebro del cuerpo humano, la cual también guarda información o datos. Por exemplo, si te preguntan cómo te llamas, accederás a tu memoria y recordarás tu nombre. Ese es el papel o trabajo de la memoria: almacenar información.
MEMORIAS.
Las memorias se pueden asemejar a un conjunto de cajones o gavetas donde se guarda o almacena algo. Observe la siguiente figura donde representamos un armario o conjunto de cajones:
En cada cajón se puede almacenar algún dato o información. La tarjeta micro:bit tiene una memoria similar a lo mostrado en la figura anterior, aunque la cantidad de cojones es muy grande (16 Kilobytes). Para comenzar a usar algún cajón de la memoria es necesario darle un nombre a ese cajón. Para hacer esto cree algún proyecto y de click en la función: “Variables”, como muestra la siguiente figura:
Observe que se despliega una ventana en la cual hay un botón llamado: “Crear una variable…”, como mostrado en la siguiente figura:
Dando click en ese boton, aparecera una ventana como la siguiente:
En la cual podemos digitar el nombre de la variable. Imaginemos que vamos a crear un proyecto para contar el “número de pasos” que una persona da cuando camina. Es necesario crear un cajón o variable que guarde ese dato o información. Por ejemplo, si creamos una variable llamada “Pasos”, entonces la memoria creará un cajón o gaveta con ese nombre como mostrado en la siguiente figura:
el editor MakeCode, crea la variable “Pasos”, la cual se observa en esta figura:
Para usar las variables, seleccione la variable que desea usar y arrastrarla hasta el editor, dejándola en una función que acepte variable. Tenga en cuenta que el editor reconoce la variables con la forma de una rectángulo redondeado como muestra la siguiente figura:
ASIGNACIÓN DE UNA VARIABLE.
Junto a la variable, también son creadas dos funciones más. La función “establecer Paso para”, la cual permite asignar un valor a la variable “Pasos”. Vea esta función en la siguiente figura:
La asignación de un valor a una variable, es una de las funciones más usadas en programación, y lo que hace esta función es: almacenar o guardar un dato en el cajón o gaveta (variable) que se indique. Por ejemplo, el siguiente código asigna o guardará el valor “7”, en la cajón o gaveta de memoria “Pasos”.
En la memoria de la tarjeta micro:bit, se establecerán los datos como mostrado en la siguiente figura:
Si queremos asignar otro valor a la variable “Pasos”, se le asigna ejecutando la función: “establecer Paso para” y darle otro valor. Por ejemplo, el siguiente código:
establece la variable “Pasos” para que sea igual a “89”. La memoria de la tarjeta micro:bit, guardará el valor “89” así:
INCREMENTAR UNA VARIABLE.
Cuando MakeCode crea una variable, también crea la función: “establecer para”, como muestra la siguiente figura:
Esta función lo que hace es incrementar la variable, de acuerdo al valor dado en la función: Por ejemplo, si la variable “Pasos”, tiene un valor almacenado de “89”, después de ejecutar esta función, la variable paso pasará a tener un valor de “90”.
TIPOS DE VARIABLES.
Para programar la tarjeta micro:bit, podemos utilizar varios tipos de variables, entre las más importantes y las más usadas podemos encontrar:
Números Enteros.
Números Decimales.
Texto o cadena de caracteres.
Los Números Enteros son números, sin ninguna parte fraccionaria que representan una cantidad positiva, negativa e incluye el cero. Se pueden representar así:
….-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, …
Con la tarjeta micro:bit podemos usar toda la matemática de números enteros aprendida en la escuela o colegio. En un próximo capítulo estudiaremos más a fondo las operaciones aritméticas con números enteros: sumas, resta, multiplicación, etc.
Para usarlos en MakeCode, veremos algunos ejemplos. El siguiente programa muestra el número entero -3 en el display de la tarjeta:
Primero se mostrará en signo negativo como muestra la siguiente imagen:
y luego en número entero, como muestra la siguiente figura:
El siguiente programa asignará el valor de 178 a la variable “Pasos” y luego lo mostrará en el display de LEDs de 5x5.
En el display se muestra los números en forma secuencial como mostrado en la siguiente figura:
Así, podemos mostrar cualquier número entero, resultado de la lectura de algún sensor, operaciones aritméticas o datos almacenados en la memoria.
También se puede utilizar números decimales con la tarjeta micro:bit. Para esto es necesario usar un punto para separar las unidades de la parte decimal. Los números decimales pueden representar cantidades como décimos, centésimos, milésimos, etc. Es decir que con números decimales podemos representar números inferiores a la unidad.
Observemos el siguiente número:
La parte entera del anterior valor está formado por los números “37” y la parte decimal por los números “892”, separados por el punto decimal como muestra la siguiente imagen:
Veamos algunos ejemplos prácticos. El siguiente programa mostrara el numero decimal 37.89 en el display:
El siguiente programa mostrara el numero decimal “1.3” en el display
El otro tipo de dato que la tarjeta micro:bit maneja son los “textos o cadenas de caracteres”, las cuales son formadas por letras y vocales. El siguiente programa mostrará la palabra “Hello!” en el display de LEDs.
Existen otros tipos de datos pero los veremos en otro apartado.
INICIALIZACIÓN DE DATOS.
Muchas aplicaciones necesitan inicializar las variables con algún valor específico, ha lo cual se le llama “inicializar variables”. Esto se hace en el bloque de código “al iniciar”, como se muestra en la siguiente figura:
En la cual hemos inicializado la variable “Distancia” para 58 y la variable “Pasos” para 0 (Cero). Esto también es conocido como setup o configuración, por que normalmente es en este bloque donde se configuran las entradas, salidas, variables, valores máximos y mínimos de la aplicación.
MOVIMIENTO DE DATOS.
Los datos se pueden mover de un cajón de la memoria a otro cajón según se necesite. Esto es muy común en programación. Por ejemplo, creamos una variable llamada “Distancia” y otra llamada “Pasos” como muestra la siguiente figura:
Ahora inicializamos la variable “Distancia” para 37 y la variable “Pasos” para 0 (Cero) como se muestra en la siguiente figura:
Al ejecutarse el bloque “al iniciar”, la memoria de la tarjeta micro:bit tendrá los siguientes valores:
Después, en el bloque “para siempre”, movamos el valor de la variable “Distancia” para la variable “Pasos” como se muestra en la siguiente figura:
y ahora mostrarlo en el display de LEDs como se muestra en el siguiente programa:
Después, de ejecutar el anterior programa la memoria de la tarjeta micro:bit quedará con los siguientes valores:
Se ha movido el contenido (dato) de un cajón de la memoria para el otro cajón. Como fue dicho anteriormente, esto es muy útil en programación y lo estaremos usando más adelante cuando veamos programas más prácticos.
CONTADOR INCREMENTAL.
Podemos observar la versatilidad de la función: “cambiar por”, creando contadores incrementales. Por ejemplo, el siguiente programa incrementará en una unidad la variable “Pasos”, cada vez que se ejecute el bloque de código “para siempre”
Si queremos que el incremento sea por ejemplo de 3, basta con cambiar el segundo parámetro de la función: “cambiar por” para 3, como mostrado en el siguiente programa:
También podemos hacer incrementos decimales, por ejemplo, el siguiente programa, se incrementa a cada 0.5, como muestra la siguiente imagen:
Así, se puede crear cualquier forma incremental para ser usada en aplicaciones prácticas.
CONTADOR DESCENDENTES.
De la misma manera se puede decrementar las variables como mostraremos en los siguientes ejemplos. El siguiente programa disminuirá en uno la variable “Pasos”. Vea la siguiente imagen:
Para decrementar una cierta cantidad, colocarla en el segundo parámetro de la función “cambiar por”. Por ejemplo, el siguiente programa, disminuirá o restará el valor -7 de la variable “Pasos”, cada vez que se ejecute el bloque “para siempre”:
También podemos decrementar un valor decimal de una variable. Por ejemplo, el siguiente programa disminuirá o restará el valor -0.4 en la variable “Pasos”:
De esta manera, podemos ejecutar contadores descendentes, en la cantidad o medida que necesiten las aplicaciones.
FORMATO DE DATOS.
Dar formato a los datos, se puede entender como: la forma o manera como los datos son presentados a los usuarios. Para entender mejor este concepto, podemos hacer un programa ejemplo que demuestre esto. Para comenzar creemos en la memoria de la tarjeta micro:bit, una variables más, llamada “Edad”. Después de crear la variable en MakeCode, veremos una ventana similar a la siguiente:
Inicializamos las variables, como es mostrado en la siguiente imagen:
Ahora la tarjeta micro:bit, presentará los siguientes datos en su memoria:
y para dar formato a la información, usaremos un programa similar al siguiente:
En el display de LEDs 5x5, se muestra un mensaje similar al siguiente:
“Juan tiene 35 años, ha caminado 89 pasos y recorrido una distancia de 37 metros”
Este es un ejemplo de cómo dar formato a la información para ser presentada a los usuarios. Aunque el display de LEDs de 5x5, no es tan ideal para mostrar estas informaciones, si es necesario tener el concepto claro, pues es muy utilizado cuando se necesita enviar información por ejemplo para una computadora vía una puerta serial, bluetooth, internet, etc.
ESCRITURA, LECTURA DE DATOS.
El concepto de escritura y lectura de datos tiene que ver con la forma como usamos los cajones o gavetas de la memoria, es decir cómo usamos las variables. Por ejemplo, si estamos alterando el dato que contiene algún cajón o variable, entonces decimos que estamos escribiendo en la memoria. Si estamos moviendo un dato para otra variable entonces decimos que se está leyendo la memoria. Muchas instrucciones o códigos ejecutan la lectura y escritura en la misma función. Para entender mejor este concepto, podemos hacer algunos ejemplos. En el siguiente programa se está escribiendo el valor “17” en la variable “Pasos”:
En este caso, el dato leído es el valor “17” y la variable escrita es “Pasos”.
En el siguiente ejemplo, vamos a inicializar la variable “Distancia” con un valor de “58” y la variable “Pasos” con 0 (Cero), como muestra la siguiente imagen:
Después, en el bloque de código “para siempre”, vamos a establecer o asignar la variable “Distancia” para la variable “Pasos”, como muestra la siguiente imagen:
Ahora, se puede decir que la variable “Distancia” ha sido leída, mientras la variable “Pasos” ha sido escrita. Es importante tener en cuenta que cuando leemos una variable, esta no altera su valor, mientras que cuando escribimos una variable, está si se altera.
Veamos que pasa en la memoria de la tarjeta micro:bit. Cuando iniciamos el programa, la memoria tendrá los siguientes valores:
Pero cuando se ejecuta el bloque “para siempre” y se ejecuta la función: “establecer Pasos para Distancia”, lo que se hace es leer la variable “Distancia” y este valor escribirla en la variable “Pasos”
La siguiente figura muestra el movimiento de valores o datos en las variables:
Entonces, desde el punto de vista de escritura y lectura de variables, la siguiente figura muestra esto:
o visto desde la memoria sería así:
Desde el punto de vista de “Datos”, sería así:
Es importante tener en cuenta este concepto de escritura o lectura pues cuando se programa, la información o los datos se deben usar de la forma correcta. Los dos conceptos anteriores entre dato y variable son los mismos, pero en algunos libros es usada una o la otra.
SOLO LECTURA DE DATOS.
Existen algunos datos que únicamente se pueden leer, mas no se pueden escribir. Este es el caso de las Entradas, las cuales por lo general representan a sensores, interruptores, lectores de datos, etc. El siguiente diagrama de bloques muestra esto:
Veamos un ejemplo. Click en la función: “Entrada”, como mostrado en la siguiente figura:
Y arrastre la variable “Temperatura C” mostrada en la siguiente figura:
para el bloque de código “para siempre”, como mostrado en el siguiente programa:
En este ejemplo la variable “Temperatura” está conectada a un sensor de temperatura que tiene la tarjeta micro:bit y por ese motivo podemos leer la temperatura del ambiente. Como es un sensor de entrada, esta variable solamente puede ser leída.
SOLO ESCRITURA DE DATOS.
Lo mismo sucede con la escritura de datos, pero esto se aplica a las salidas de la tarjeta micro:bit. Observe el siguiente diagrama de bloques:
Muchas de las “Salidas”, sólo se pueden escribir. En capítulos posteriores haremos ejemplos de esto.
RENOMBRAR VARIABLES O DATOS.
Es posible renombrar una variable a la cual ya se dio un nombre. Para esto selecciones la variable que desea cambiar en alguna función que la esté utilizando y despliegue el menú que aparece, como se muestra en la siguiente figura:
Y de click en “Renombrar la variable…”. Aparecerá una ventana como la mostrada en la siguiente figura:
Observe que ahora la variable “Distancia” fue renombrada para “Trayecto” como muestra la siguiente imagen:
También en el menú desplegable aparece cambiado el nombre para “Trayecto” como muestra la siguiente imagen:
BORRAR UNA VARIABLE O DATO.
También es posible borrar una variable que ya no esté más usando en un programa o proyecto. Para eso seleccione la variable que desea borrar en el menú desplegable como muestra la siguiente imagen:
y seleccione “Borrar la variable” . El editor MakeCode eliminará todas las referencias donde esté utilizando esta variable.
PROGRAMA PRÁCTICO DE MOVIMIENTO DE DATOS.
El siguiente programa incrementará en una cantidad (Módulo) la variable “Pasos” cuando el botón “A” de la tarjeta micro:bit es presionado. Para este programa crearemos dos variables: la variable “Pasos” y la variable “Módulo” como mostrado en la siguiente figura:
Ahora, de click en la función: “Entrada” y seleccione la función: “al presionar el botón A” como mostrado en la siguiente figura:
Arrastre este bloque hasta el editor MakeCode y cree el siguiente programa:
Ejecute el programa y observe los resultados en el simulador. Presione el botón “A” encontrado en el simulador como mostrado en la siguiente imagen:
Cambie el valor de la variable “Módulo” y observe los resultados. Puede utilizar números enteros positivos o negativos y también decimales positivos y negativos. Observe los resultados en el simulador y saque sus propias conclusiones.