Arduino - Array

Un array è un gruppo consecutivo di posizioni di memoria dello stesso tipo. Per fare riferimento a una posizione o un elemento particolare nell'array, specifichiamo il nome dell'array e il numero di posizione dell'elemento particolare nell'array.

L'illustrazione riportata di seguito mostra un array di numeri interi chiamato C che contiene 11 elementi. Si fa riferimento a uno qualsiasi di questi elementi fornendo il nome dell'array seguito dal numero di posizione dell'elemento particolare tra parentesi quadre ([]). Il numero di posizione è più formalmente chiamato pedice o indice (questo numero specifica il numero di elementi dall'inizio della matrice). Il primo elemento ha pedice 0 (zero) ed è talvolta chiamato elemento zeri.

Pertanto, gli elementi dell'array C sono C [0] (pronunciato "C sotto zero"), C [1], C [2] e così via. Il pedice più alto nell'array C è 10, che è 1 in meno del numero di elementi nell'array (11). I nomi degli array seguono le stesse convenzioni degli altri nomi di variabili.

Un pedice deve essere un'espressione intera o intera (utilizzando qualsiasi tipo integrale). Se un programma utilizza un'espressione come pedice, il programma valuta l'espressione per determinare il pedice. Ad esempio, se assumiamo che la variabile a sia uguale a 5 e che la variabile b sia uguale a 6, l'istruzione aggiunge 2 all'elemento dell'array C [11].

Un nome di array con indice è un lvalue, può essere usato sul lato sinistro di un assegnamento, proprio come possono fare i nomi di variabili non array.

Esaminiamo l'array C nella figura data, più da vicino. Il nome dell'intero array è C. I suoi 11 elementi sono indicati come da C [0] a C [10]. Il valore di C [0] è -45, il valore di C [1] è 6, il valore di C [2] è 0, il valore di C [7] è 62 e il valore di C [10] è 78.

Per stampare la somma dei valori contenuti nei primi tre elementi dell'array C, scriveremmo -

Serial.print (C[ 0 ] + C[ 1 ] + C[ 2 ] );

Per dividere il valore di C [6] per 2 e assegnare il risultato alla variabile x, scriveremmo -

x = C[ 6 ] / 2;

Dichiarazione di array

Gli array occupano spazio in memoria. Per specificare il tipo di elementi e il numero di elementi richiesti da un array, utilizzare una dichiarazione del modulo -

type arrayName [ arraySize ] ;

Il compilatore riserva la quantità di memoria appropriata. (Ricorda che una dichiarazione, che riserva la memoria, è più propriamente conosciuta come definizione). ArraySize deve essere una costante intera maggiore di zero. Ad esempio, per dire al compilatore di riservare 11 elementi per l'array intero C, utilizzare la dichiarazione -

int C[ 12 ]; // C is an array of 12 integers

Gli array possono essere dichiarati per contenere valori di qualsiasi tipo di dati non di riferimento. Ad esempio, una matrice di tipo stringa può essere utilizzata per memorizzare stringhe di caratteri.

Esempi di utilizzo di array

Questa sezione fornisce molti esempi che dimostrano come dichiarare, inizializzare e manipolare gli array.

Esempio 1: dichiarazione di un array e utilizzo di un ciclo per inizializzare gli elementi dell'array

Il programma dichiara un array intero di 10 elementi n. Le righe a – b usano aForistruzione per inizializzare gli elementi dell'array su zeri. Come altre variabili automatiche, gli array automatici non vengono inizializzati implicitamente a zero. La prima istruzione di output (riga c) mostra le intestazioni di colonna per le colonne stampate nella successiva istruzione for (righe d – e), che stampa l'array in formato tabulare.

Example

int n[ 10 ] ; // n is an array of 10 integers

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) // initialize elements of array n to 0 {
      n[ i ] = 0; // set element at location i to 0
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // output each array element's value {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

Result - Produrrà il seguente risultato -

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

Esempio 2: inizializzazione di un array in una dichiarazione con un elenco di inizializzatori

Gli elementi di un array possono anche essere inizializzati nella dichiarazione dell'array seguendo il nome dell'array con un segno di uguale a e un elenco di inizializzatori delimitato da virgole. Il programma utilizza un elenco di inizializzatori per inizializzare un array intero con 10 valori (riga a) e stampa l'array in formato tabulare (righe b – c).

Example

// n is an array of 10 integers
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ;

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) {
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // output each array element's value {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

Result - Produrrà il seguente risultato -

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

Esempio 3: somma degli elementi di un array

Spesso, gli elementi di un array rappresentano una serie di valori da utilizzare in un calcolo. Ad esempio, se gli elementi di una matrice rappresentano i voti di un esame, un professore potrebbe voler calcolare il totale degli elementi della matrice e utilizzare tale somma per calcolare la media della classe per l'esame. Il programma somma i valori contenuti nell'array di numeri interi a 10 elementia.

Example

const int arraySize = 10; // constant variable indicating size of array
int a[ arraySize ] = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
int total = 0;

void setup () {

}
void loop () {
   // sum contents of array a
   for ( int i = 0; i < arraySize; ++i )
      total += a[ i ];
   Serial.print (“Total of array elements : ”) ;
   Serial.print(total) ;
}

Result - Produrrà il seguente risultato -

Total of array elements: 849

Gli array sono importanti per Arduino e dovrebbero richiedere molta più attenzione. I seguenti importanti concetti relativi all'array dovrebbero essere chiari a un Arduino:

S.NO. Concetto e descrizione
1 Passaggio di array a funzioni

Per passare un argomento di matrice a una funzione, specificare il nome della matrice senza parentesi.

2 Array multidimensionali

Le matrici con due dimensioni (ossia, pedici) spesso rappresentano tabelle di valori costituite da informazioni disposte in righe e colonne.