Ciclo foreach.

Nelle versioni recenti del compilatore, è apparso il supporto per l'analogo del ciclo foreach, che si trova in alcuni altri linguaggi di programmazione. L'implementazione consente di abbreviare il codice per il passaggio di qualsiasi array di dati. Un tipico esempio di output di un array di numeri sulla porta seriale.
Serial.begin(9600); 
int vals[] = {1, 2, 3, 4, 5}; 
for (int i = 0; i < 5; i++) 
      Serial.println(vals[i]); 
}
Ma nel ciclo foreach per lavorare con un array, puoi scriverlo in modo diverso:
for (tipo di dati array_variabile : array){}
L'esempio sarà simile a questo:
Serial.begin(9600); 
int vals[] = {1, 2, 3, 4, 5}; 
for (int val : vals) 
     Serial.println(val); 
}
Come funziona: creiamo una variabile val dello stesso tipo di un array e specifichiamo anche il nome dell'array separato da due punti (:). Ad ogni iterazione del ciclo, la variabile val prenderà il valore della cella dell'array nell'ordine da 0 alla dimensione dell'array con un passo di 1. Quindi, abbiamo risolto lo stesso problema, ma abbiamo scritto meno codice. Un punto importante: ad ogni iterazione del ciclo, il valore della cella viene assegnato alla variabile val, cioè possiamo solo leggere il valore (tramite la variabile buffer). Per accedere direttamente agli elementi di un array, è necessario creare un collegamento, ovvero aggiungere semplicemente l'operatore &.
Serial.begin(9600); 
int vals[] = {1, 2, 3, 4, 5}; 
for (int &val : vals) 
 
     val = 0;
     Serial.println(val);  
}
val in questo caso fornisce l'accesso completo all'elemento dell'array, ovvero puoi leggerlo / scriverlo. L'esempio sopra emetterà il valore di ciascun elemento e quindi lo imposterà a zero. Dopo l'esecuzione del ciclo, l'intero array verrà riempito di zeri. La mancanza di indicizzazione nel ciclo può essere scomoda per alcuni algoritmi, ma puoi sempre aggiungere il tuo contatore. Ad esempio, riempiamo l'array con numeri da 0 a 90 con incrementi di 10:
Serial.begin(9600); 
int vals[10];
int count = 0;
for (int &val : vals) 
     val = count * 10; 
     count++;
     Serial.println(val);
}
E sarà comunque più compatto del classico for. 
Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia