Arreglos (Arrays) son muy utilizados en projectos electrónicos, donde se necesitan bases de datos, analisis y estadistica de información, adquisición y recolección de datos. etc. en lenguaje de programacion para microcontroladores, los arreglos también son conocidos como: matrices, listas o arrays. en el siguiente capitulo hacemos una introducción a los arreglos y como crearlos y programarlos.
En capítulos anteriores estudiamos las variables (datos) y observamos que en memoria de datos (RAM), podemos almacenar información. Recordemos que era necesario crear las variables, primero, dándoles un “nombre” y luego podíamos asignarle algún “valor”. Por ejemplo: en la siguiente figura, tenemos una variable llamada: “numeroEquipo”, la cual tiene asignado el valor: “372”. O la variable: “usuario”, la cual tiene asignado el valor: “jhon”. Observe la siguiente figura:
Pero estas variables, solo pueden almacenar “un” solo dato. Que pasa si necesitamos una variable que contenga mas de un dato. Ahí es donde podemos usar arreglos (arrays), pues estas son variables que permiten almacenar más de un dato de alguna información. Observe la siguiente figura donde hemos creado un arreglo llamado: “KilometrosRecorridosLista” y otro llamado: “TransportesLista”:
Estos arreglos son almacenados en la memoria de datos y tienen algunas características que es importante conocer. La primera es: un arreglo es formado por “elementos”. En la siguiente figura, tenemos un arreglo con 8 elementos:
Otra característica de los arreglos, es: que, para acceder a algún elemento, usamos un “índice” basado en cero (0). Esto quiere decir que el primer elemento tiene el índice: “cero”, el segundo elemento el índice: “1”, el tercer elemento tiene el índice: “2” y así sucesivamente. Por ejemplo, en el siguiente arreglo, el índice “4”, tiene un valor de: “72”. El elemento en el índice: “6” tiene un valor de: “102”
El arreglo anterior es de tipo numérico y estos datos, pueden representar la cantidad de kilómetros recorridos por algún automóvil, con adquisición de lectura a cada 10 minutos, como muestra la siguiente figura:
También podemos crear arreglos de texto. Por ejemplo, supongamos que estoy creando un proyecto donde necesito una lista de los tipos de transportes, como la siguiente:
Carro
Avión
Motocicleta
Bicicleta
Patines
Barco
Patineta
Tren
Helicóptero
El arreglo en la memoria de datos seria similar al mostrado en la siguiente figura:
Entonces resumiendo, para leer o escribir en los elementos de un arreglo, es necesario usar un índice. Así, los elementos del siguiente arreglo usan un índice del 0 hasta el 8:
El siguiente arreglo de texto usa un índice de 0 hasta el 9, como muestra la siguiente figura:
Otro concepto usado en arreglos, es la: “Longitud”, el cual significa, la cantidad de elementos de un arreglo. Por ejemplo, el siguiente arreglo tiene una longitud de 8 elementos:
El siguiente arreglo tiene una longitud de 9 elementos, como muestra la siguiente figura:
Con estas bases, ya podemos comenzar a programar bloques con arreglos. Los bloques que nos permiten crear y manipular arreglos, los podemos encontrar en el menú: “Avanzado->Arreglos” como muestra la siguiente figura:
Crear arreglos.
Como dicho anteriormente, existen básicamente 2 tipos de arreglos, los de tipo “numérico” y “texto”. Para crear un arreglo de tipo numérico, vaya al menú: “Arreglos” y seleccione el bloque: “establecer lista para matriz de” como muestra la siguiente figura:
Después arrastre el bloque hasta que encaje el bloque: “al iniciar”, como muestra la siguiente figura:
El bloque: “al iniciar” aparecerá como mostrado en la siguiente figura:
Por defecto el compilador “MakeCode”, nombra los arreglos numéricos con el nombre de: “lista”. Es necesario cambiar este nombre, para un otro nombre indicando la clase de datos que va almacenar el arreglo. Por ejemplo: si los datos que se van almacenar son de un sensor de temperatura, podemos llamar este arreglo: “temperaturaLista”. Otro ejemplo, puede ser, cuando el arreglo almacena nombres de usuarios, entonces podemos llamar al arreglo: “usuariosLista”. Así, es más fácil para entender el programa que se está haciendo, aunque es posible colocar cualquier nombre que se desee. Algunos programadores acostumbran a usar la palabra: “Lista”, al final del nombre de los arreglos, para un mejor entendimiento y claridad del programa o proyecto. Para cambiar el nombre del arreglo, que por defecto es creado (lista), vaya hasta el menú desplegable del bloque: “establecer para matriz de” y seleccione el ítem: “Renombrar la variable…”. Aparecerá una ventana donde es posible cambiar el nombre del arreglo, como muestra la siguiente figura:
Hemos cambiado el nombre por defecto: “lista”, por el nombre: “KilometrosRecorridosLista”, como muestra la siguiente figura:
Ahora vamos a llenar el arreglo: “KilometrosRecorridosLista”, como mostrado en la siguiente figura:
Para esto puede agregar más elementos al arreglo, clicando en el botón adición (+), como mostrado en la siguiente figura:
El arreglo quedara como mostrado en la siguiente figura:
Mas adelante en este capítulo, vamos a leer y modificar este arreglo y así entender cómo funciona.
Ahora vamos a crear un arreglo de tipo texto. Si lo desea, cree un nuevo proyecto para trabajar con los arreglos de tipo texto. Para esto vamos al menú: “Arreglos” y seleccionamos el bloque: “establecer lista de texto para matriz de”, como mostrado en la siguiente figura:
Arrastre este bloque hasta que encaje en el bloque: “al iniciar”, como mostrado en la siguiente figura:
El compilador “MakeCode” por defecto, nombra los arreglos de texto con el nombre: “lista de texto”. Cambiemos este nombre por uno más intuitivo de acuerdo a el proyecto que se esté creando. Para el ejemplo de este capítulo, vamos a llamar el arreglo de texto con el nombre: “TransportesLista” como mostrado en la siguiente figura:
Para cambiar el nombre, puede seguir los mismos pasos mostrados con el arreglo numérico, creado anteriormente en este capítulo. Ahora, vamos a llenar el siguiente arreglo de texto como mostrado en la siguiente figura.
Para esto, llene los elementos con los respectivos nombres y para agregar más elementos en el arreglo, seleccione el botón adicionar (+), como mostrado en la siguiente figura:
El arreglo: “TransportesLista”, cuando este llenado, se mostrará como en la siguiente figura:
Ahora que ya están creados los arreglos, podemos leerlos, modificarlos y mostrar en la pantalla de LEDs de 5x5. Es importante, para el buen funcionamiento del proyecto, verificar con cada bloque donde usemos arreglos: que se haya seleccionado el correcto arreglo, pues es muy común, olvidarse y dejar el que “MakeCode”, usa por defecto (lista), como muestra la siguiente figura:
Por ejemplo, si el bloque va ha ser ejecutado sobre el arreglo: “TransportesLista”, entonces, vaya al menú desplegable del bloque y selecciónelo, como es mostrado en la siguiente figura:
Todos los bloques que usan arreglos, tienen la opción para seleccionar el nombre del arreglo sobre el cual se va a ejecutar ese bloque.
Dimensión de un arreglo.
Para conocer la dimensión de un arreglo podemos utilizar bloque: “longitud del arreglo”, como muestra la siguiente figura:
Para usar este bloque, selecciónelo y arrástrelo hasta encajar en un bloque: “mostrar número”, como en la siguiente figura:
Ahora, en el menú desplegable del bloque: “longitud del arreglo”, seleccione el arreglo: “KilometrosRecorridosLista”, como muestra la siguiente figura:
Por ejemplo, el siguiente bloque, mostrara en la pantalla de LEDs, el numero: “8” pues esa es la longitud del arreglo: “KilometrosRecorridosLista”:
Leer los elementos de un arreglo.
Para leer un elemento de un arreglo, podemos usar el bloque de código: “obtener el valor en”. Este bloque recibe un parámetro que es el índice, es decir: la posición donde queremos leer y retorna el dato encontrado en ese índice. La siguiente figura muestra el bloque: “obtener el valor en” el cual se encuentra en el menú: “Arreglos”, como muestra la siguiente figura:
Ahora, para utilizar el bloque: “obtener el valor en”, puede seleccionarlo y arrastrarlo para el bloque: “mostrar número”, el cual se encuentra en el menú: “Básico”, como muestra la siguiente figura:
Ahora en el menú desplegable del bloque: “obtener el valor en”, seleccione el arreglo: “KilometrosRecorridosLista”, como es mostrado en la siguiente figura:
Listo, ya podemos verificar los valores que contiene el arreglo numérico. El bloque de código debe ser similar al mostrado en la siguiente figura:
Al ejecutarse este programa aparecerá en la pantalla de LEDs, el valor numérico: “17”, porque recordemos la primera posición del arreglo, está en el índice 0.
Los siguientes bloques, mostraran en la pantalla de LEDs, el valor: “55”.
Los siguientes bloques, mostraran en la pantalla de LEDs, el valor: “102”.
Y así es como podemos leer el arreglo numérico. Lo mismo podemos hacer con el arreglo de texto.
Eliminar elementos de un arreglo.
Para eliminar elementos de un arreglo podemos usar el bloque: “eliminar valor en”. Este bloque también retorna el valor que ha sido eliminado.
Los siguientes bloques de código, eliminan el elemento de la posición: “3” el cual contiene el valor: “55”.
Antes de ejecutar la instrucción, el arreglo tiene todos los elementos, es decir su longitud es de 8 elementos. Después de ejecutada la instrucción, es eliminada la posición: “3” y el arreglo queda con una longitud de 7 elementos, como muestra la siguiente figura:
El bloque: “mientras”, se encuentra en el menú: “Bucles”. En el menú desplegable cambie la condición para: “verdadero”, como mostrado en la siguiente figura:
En el bloque de código: “obtener el valor en”, seleccione el arreglo: “KilometrosRecorridosLista”, como muestra la siguiente figura:
El bloque de código: “remover value at” hace lo mismo que el bloque: “eliminar valor en”, con la diferencia que: no retorna el valor del elemento eliminado. La siguiente figura muestra el bloque: “remover value at”.
En el menú: “Arreglos” hay un bloque que nos permite eliminar el primer elemento de un arreglo, devolviendo el valor encontrado y otro bloque para eliminar el último elemento del arreglo, también devolviendo el valor del elemento eliminado. La siguiente figura muestra estos bloques:
El bloque para eliminar el primer elemento en un arreglo, se llama: “obtener y eliminar el primer valor de”. Los siguientes bloques eliminan el primer elemento en el arreglo numérico:
La siguiente figura muestra lo que sucede cuando usamos este bloque:
El bloque para eliminar el ultimo elemento de un arreglo se llama: “obtener y eliminar el ultimo valor de”. Los siguientes bloques eliminan el último elemento del arreglo:
La siguiente figura muestra lo que sucede cuando se ejecuta este programa:
Note que en el bloque: “obtener el valor en”, usamos el índice: “6” para leer la ultima posición del arreglo. Esto es porque la dimensión del arreglo ha cambiado y el último elemento está en el índice “6”.
Los siguientes bloques hacen lo mismo que los 2 últimos bloques, vistos en este capítulo, con la diferencia que no retorna el valor del elemento eliminado:
Estos bloques funcionan igual en los arreglos de texto, puede experimentar con el arreglo: “TransportesLista” y ver los resultados en la pantalla de LEDs de 5x5.
Modificar los elementos de un arreglo.
Se pueden modificar los valores de los elementos de un arreglo con el bloque: “establecer el valor en a”. Este bloque recibe 2 parámetros: El índice donde se desea modificar y el nuevo valor que será almacenado. La siguiente figura muestra este bloque:
El siguiente programa, modifica el elemento de la posición: “2”, el cual tiene un valor de: “41”, con el valor de “39”.
Para hacer esto es necesario crear una nueva variable y asignarle un valor. Así, hemos creado una variable con el nombre: “nuevoValor” y le hemos asignado el valor de: “39”, como se muestra en la siguiente figura:
Y este es el bloque que se encarga de modificar el elemento, como muestra la siguiente figura:
Así queda el arreglo después de ejecutarse este bloque:
Insertar elementos en un arreglo.
Podemos insertar elementos nuevos en un arreglo. El bloque que se encarga de insertar un nuevo elemento se llama: “insertar en valor” y lo podemos observar en la siguiente figura:
El bloque: “insertar en valor”, recibe 2 parámetros, el primero es el índice donde se desea insertar el nuevo elemento y el segundo es el valor que se desea guardar. El siguiente programa inserta un nuevo elemento en el índice: “4” con un valor de: “61”
El arreglo se modificar como muestra la siguiente figura:
Note que ahora el arreglo numérico tiene una longitud es de “8”. De esta manera es posible insertar elementos en cualquier índice del un arreglo. Hay un bloque de código que permite insertar un nuevo elemento en el principio del arreglo, sin tener que pasar el índice. La siguiente figura muestra este bloque:
El primer bloque: “insertar al principio”, retorna la nueva longitud del arreglo. El segundo bloque: “insertar al principio”, no retorna la longitud. Hay un bloque que permite insertar un nuevo elemento al final del arreglo, llamado: “añadir valor al final”. La siguiente figura muestra este bloque:
Operaciones en arreglos.
Una operación que se puede hacer en un arreglo, es buscar el índice o posición de la primera aparición de un valor. Este bloque se llama: “encontrar índice de”. Observe la siguiente figura:
Otra operación que podemos hacer es invertir los elementos de un arreglo. El bloque llamado: “invertir” es el encargado de hacer esto y lo podemos ver en la siguiente figura:
Existe un bucle llamado: “para el elemento de”, el cual recorre secuencialmente todo el arreglo, uno a uno. La siguiente figura muestra este bloque que se encuentra ubicado en el menú: “Bucles”, como muestra la siguiente figura:
Así, la variable: “value”, toma el valor de cada elemento del arreglo, uno a uno y ejecuta los bloques especificados.
El siguiente programa, hace un recorrido por el arreglo: “KilometrosRecorridosLista”, después invierte el array y hace otro recorrido por el arreglo, demostrando como funciona el bloque: “invertir”
En la siguiente figura, podemos observar lo que sucede al arreglo después de ejecutarse el bloque: “invertir”:
El siguiente programa invierte el arreglo: “TransportesLista”.
En la siguiente figura, podemos observar lo que sucede al ejecutarse el bloque: “invertir” en el arreglo: “TransportesLista”:
Así, dependiendo del proyecto podemos usar arreglos y manipularlos para agregar o quitar elementos, como también modificar los valores de los elementos. En adquisición de datos, es muy común usar un temporizador y leer algún sensor o variable que represente información, almacenándola en un arreglo. Cuando se necesita seleccionar algún ítem de una lista, es muy común usar arreglos para hacer la selección. Así, con la práctica se comprenderá y entenderán mejor los arreglos.