Array
Un array es una colección de variables que tienen todas el mismo y único nombre, pero que pueden distinguirse entre sí por un número de índice; es decir en vez de tener varias variables con el mismo nombre por ejemplo valor1, valor2, valorN, para almacenar números, podemos crear una sola variable de tipo int valor[], como veremos más adelante.[1]
Las matrices sirven para ganar claridad y simplicidad en el código, además de facilitar la programación.
Al utilizar matrices debemos tener presente que para consultar o asignar valores, debemos comenzar indexando el primer elemento por el número cero, que será el primer elemento del arreglo.
Índices
Todo vector se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas índice y siempre son correlativos.[2]
Indexación base cero
En este modo el primer elemento del vector será la componente cero (0) del mismo, es decir, tendrá el índice 0. En consecuencia, si el vector tiene 'n' componentes la última tendrá como índice el valor n-1. El lenguaje C es un ejemplo típico que utiliza este modo de indexación.
Creando y declarando un arreglo
Todos los métodos a continuación son formas válidas de crear o declarar una arreglo[3].
Podemos declarar un array sin inicializarla, pero hay que tener en cuenta que arduino exige que le asignemos un tamaño.
int myInts[6];
En myPins declaramos un arreglo sin elegir explícitamente un tamaño. El compilador cuenta los elementos y crea el array del tamaño apropiado.
int myPins[] = {2, 4, 8, 3, 6};
Finalmente, puede inicializar y dimensionar un arreglo, como en mySensVals. Tenga en cuenta que al declarar un arreglo de tipo char, se requiere un elemento más que su inicialización para mantener el carácter nulo requerido.
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";
Accediendo a un array
Los arrays están indexadas en cero, es decir, refiriéndose a la inicialización de mySensVals, el primer elemento del arreglo está en el índice 0, por lo tanto:
mySensVals[0] == 2
mySensVals[1] == 4
También significa que en un arreglo con diez elementos, el índice nueve es el último elemento. Por lo tanto:
int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11};
// myArray[9] contiene el valor 11
// myArray[10] el valor es inválido mostrará el error en consola (other memory address)
Por este motivo, debe tener cuidado al acceder a las matrices. Acceder más allá del final de un arreglo (usando un número de índice mayor que el tamaño del arreglo declarado -1) se lee de la memoria que se usa para otros fines. Es probable que la lectura de estas ubicaciones no haga mucho, excepto que se produzcan datos no válidos. Escribir en ubicaciones de memoria aleatorias es definitivamente una mala idea y, a menudo, puede llevar a resultados infelices, como bloqueos o mal funcionamiento del programa. Esto también puede ser un error difícil de localizar.
A diferencia de BASIC o JAVA, el compilador de C ++ no verifica si el acceso al arreglo está dentro de los límites legales del tamaño del arreglo que ha declarado.
Asignar un valor a un array
Para asignar valores lo podemos realizar de la siguiente forma, hay que tener en cuenta que la variable ya tiene que estar creada e inicializada con un tamaño determinado, hasta este punto no interesa como se ha realizado.
mySensVals[0] = 10; //en la posición 0 o en primer lugar del array asignamos el valor 10
Acceder a un valor de un array
Para recuperar un valor de un arreglo lo que hacemos es acceder a la posición donde se encuentre el valor y lo obtenemos, hay que tener en cuenta que si queremos acceder a la posición 3 del array, el índice que usamos es 2 ejemplo
int mySensVals[6] = {8,5,9,4,6,1};
x = mySensVals[4]; //en valor que retorna es el 6
Array y bucles FOR
La array’s a menudo se manipulan dentro de los bucles, donde el contador de bucles se utiliza como índice para cada elemento del índice en el array. Por ejemplo, para imprimir los elementos de myPins a través del puerto serie, podría hacer algo como esto:
for (byte i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}
Referencias
[1]arduinoparatodos https://www.arduinoparatodos.com/usar-la-matrices-arrays-arduino/, Consultado abril 2019
[2] wikipedia https://es.wikipedia.org/wiki/Vector_(inform%C3%A1tica), Consultado abril 2019
[3] arduino https://www.arduino.cc/reference/en/language/variables/data-types/array/, Consultado abril 2019