Arduino - Tableaux

Un tableau est un groupe consécutif d'emplacements de mémoire du même type. Pour faire référence à un emplacement ou un élément particulier dans le tableau, nous spécifions le nom du tableau et le numéro de position de l'élément particulier dans le tableau.

L'illustration ci-dessous montre un tableau d'entiers appelé C qui contient 11 éléments. Vous faites référence à l'un de ces éléments en donnant le nom du tableau suivi du numéro de position de l'élément particulier entre crochets ([]). Le numéro de position est plus formellement appelé un indice ou un index (ce nombre spécifie le nombre d'éléments à partir du début du tableau). Le premier élément a un indice 0 (zéro) et est parfois appelé l'élément zéros.

Ainsi, les éléments du tableau C sont C [0] (prononcé «C sous zéro»), C [1], C [2] et ainsi de suite. L'indice le plus élevé du tableau C est 10, soit 1 de moins que le nombre d'éléments du tableau (11). Les noms de tableaux suivent les mêmes conventions que les autres noms de variables.

Un indice doit être une expression entière ou entière (utilisant n'importe quel type intégral). Si un programme utilise une expression comme indice, le programme évalue l'expression pour déterminer l'indice. Par exemple, si nous supposons que la variable a est égale à 5 et que la variable b est égale à 6, alors l'instruction ajoute 2 à l'élément de tableau C [11].

Un nom de tableau en indice est une lvalue, il peut être utilisé sur le côté gauche d'une affectation, tout comme le peuvent les noms de variables non-tableau.

Examinons le tableau C dans la figure donnée, de plus près. Le nom de l'ensemble du tableau est C. Ses 11 éléments sont appelés C [0] à C [10]. La valeur de C [0] est -45, la valeur de C [1] est 6, la valeur de C [2] est 0, la valeur de C [7] est 62 et la valeur de C [10] est 78.

Pour imprimer la somme des valeurs contenues dans les trois premiers éléments du tableau C, nous écririons -

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

Pour diviser la valeur de C [6] par 2 et affecter le résultat à la variable x, nous écririons -

x = C[ 6 ] / 2;

Déclaration de tableaux

Les tableaux occupent de l'espace en mémoire. Pour spécifier le type des éléments et le nombre d'éléments requis par un tableau, utilisez une déclaration de la forme -

type arrayName [ arraySize ] ;

Le compilateur réserve la quantité appropriée de mémoire. (Rappelez-vous qu'une déclaration, qui réserve de la mémoire, est plus connue sous le nom de définition). La valeur arraySize doit être une constante entière supérieure à zéro. Par exemple, pour dire au compilateur de réserver 11 éléments pour le tableau d'entiers C, utilisez la déclaration -

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

Les tableaux peuvent être déclarés comme contenant des valeurs de tout type de données non référencé. Par exemple, un tableau de type string peut être utilisé pour stocker des chaînes de caractères.

Exemples utilisant des tableaux

Cette section donne de nombreux exemples qui montrent comment déclarer, initialiser et manipuler des tableaux.

Exemple 1: déclaration d'un tableau et utilisation d'une boucle pour initialiser les éléments du tableau

Le programme déclare un tableau d'entiers à 10 éléments n. Les lignes a – b utilisent aForinstruction pour initialiser les éléments du tableau à des zéros. Comme les autres variables automatiques, les tableaux automatiques ne sont pas initialisés implicitement à zéro. La première instruction de sortie (ligne c) affiche les en-têtes de colonne pour les colonnes imprimées dans l'instruction for suivante (lignes d à e), qui imprime le tableau au format tabulaire.

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 - Il produira le résultat suivant -

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

Exemple 2: Initialisation d'un tableau dans une déclaration avec une liste d'initialiseurs

Les éléments d'un tableau peuvent également être initialisés dans la déclaration du tableau en suivant le nom du tableau avec un signe égal à et une liste d'initialiseurs séparés par des virgules séparés par des accolades. Le programme utilise une liste d'initialiseurs pour initialiser un tableau d'entiers avec 10 valeurs (ligne a) et imprime le tableau au format tabulaire (lignes 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 - Il produira le résultat suivant -

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

Exemple 3: sommation des éléments d'un tableau

Souvent, les éléments d'un tableau représentent une série de valeurs à utiliser dans un calcul. Par exemple, si les éléments d'un tableau représentent des notes d'examen, un professeur peut souhaiter additionner les éléments du tableau et utiliser cette somme pour calculer la moyenne de la classe pour l'examen. Le programme additionne les valeurs contenues dans le tableau d'entiers à 10 élémentsa.

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 - Il produira le résultat suivant -

Total of array elements: 849

Les baies sont importantes pour Arduino et devraient nécessiter beaucoup plus d'attention. Les concepts importants suivants liés au tableau doivent être clairs pour un Arduino -

S.NO. Concept et description
1 Passage de tableaux aux fonctions

Pour passer un argument de tableau à une fonction, spécifiez le nom du tableau sans crochets.

2 Tableaux multidimensionnels

Les tableaux à deux dimensions (c'est-à-dire les indices) représentent souvent des tableaux de valeurs constitués d'informations disposées en lignes et en colonnes.