title | categories | subCategories | ||
---|---|---|---|---|
array |
|
|
Un array è un insieme di variabili a cui si accede con un indice. Gli array, nel linguaggio di programmazione C su cui si basa Arduino, possono essere complessi, ma l’utilizzo di semplici array è relativamente facile.
Tutti i metodi che seguono sono modi validi per creare (dichiarare) un array.
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[5] = "ciao";
Puoi dichiarare un array senza inizializzarlo, come in myInts.
In myPins dichiariamo un array senza sceglierne esplicitamente la dimensione. Il compilatore conta gli elementi e crea un array della dimensione appropriata.
Infine, puoi sia inizializzare e dimensionare l’array, come in mySensVals. Nota che quando dichiari un array di tipo char, è richiesto un elemento in più rispetto all’inizializzazione, per contenere il carattere null (richiesto).
Gli array hanno indice che parte da zero, cioè, in riferimento alle inizializzazioni degli array precedenti, il primo elemento dell’array è all’indice 0, perciò
mySensVals[0] == 2, mySensVals[1] == 4,
e così via.
Significa anche che in un array con dieci elementi, l’indice nove è l’ultimo elemento. Quindi:
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] contiene 11
// myArray[10] non è valido e contiene un'informazione casuale (un altro indirizzo in memoria)
Per questo motivo dovresti fare attenzione quando accedi agli array. Accedere oltre la fine di un array (utilizzando un indice maggiore della dimensione dell’array dichiarato - 1) significa leggere dalla memoria che viene usata per altri scopi. La lettura da queste posizioni probabilmente non servirà a molto se non per fornire dati non validi. Scrivere in posizioni di memoria casuali è sicuramente una pessima idea e spesso può portare a risultati infelici come arresti anomali o malfunzionamenti del programma. Questo può generare anche bug difficili da rintracciare.
A differenza di BASIC o JAVA, il compilatore C non controlla se l’accesso all’array rientra nei limiti della dimensione dell’array che hai dichiarato.
mySensVals[0] = 10;
x = mySensVals[4];
Gli array sono spesso manipolati all’interno di cicli for, dove il contatore è usato come indice per ciascun elemento dell’array. Per esempio, per visualizzare gli elementi di un array nella porta seriale, puoi scrivere qualcosa come:
int i;
for (i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}
Per un programma completo che mostri l’uso degli array, guarda (Knight Rider example) nel (Tutorial).
-
LANGUAGE PROGMEM