Constantes et variables
Le typage des variables et constantes
Cette notion est un peu rébarbative, mais c'est comme le dentiste, faut y passer.
Le typage est obligatoire lorsqu'on définit une variable ou une constante. Dans certains langages (comme le Python par exemple), il n'est pas nécessaire car le compilateur se chargera de le faire et l'exécution du programme s'occupera des modifications éventuelles. Mais pour l'Arduino (et le langage C) on n'a pas le choix.
Chaque type de variable ne prend pas le même espace en mémoire et ne sera pas traité de façon équivalente lors de l'exécution. Je ne vais pas vous faire un cours pesant sur la mémoire des processeurs (bien des cours sur ce site le font très bien) mais je vais vous en faire un survol.
La mémoire d'un processeur (gros ou petit) est un ensemble d'espaces de même taille qui se suivent (virtuellement sur une même ligne). Et comme ils se suivent on peut les retrouver grâce à leur position sur cette ligne virtuelle. Leur taille est d'un byte, c'est-à-dire 8 bits. Le bit c'est l'unité de base en informatique et ça vaut 0 ou 1. Donc on imagine des 0 et des 1 qui se suivent, formant une ligne qui s'étend sur des kilomètres, par groupes de 8 bits. Genre :
Et bien chaque type de variable (un peu comme les bateaux à la bataille navale) prend un nombre de tranches différent pour être stocké. La taille minimum est de 1 tranche (un byte).Quand on utilise une variable de taille 3 tranches, le processeur va cherche sur la ligne à quelle tranche commence le stockage (c'est l'adresse) et va récupérer le contenu des trois tranches qui se suivent à partir de cette adresse et les transformer en valeur. Donc si le typage n'existait pas pour préciser l'espace pris en mémoire par la variable, on récupérerait soit trop soit pas assez d'infos pour la valeur attendue.
Attention :
Ne pas confondre byte et bit ! Retenez-bien : 1 byte = 8 bits.
Je vous donne quelques types et leur taille pour commencer (il en existe beaucoup plus) ainsi que ce qu'ils peuvent stocker :
Type | Taille en byte | Valeurs stockées |
---|---|---|
boolean | 1 | true ou false |
char | 1 | un caractère ou un entier entre -128 et 127 |
unsigned char | 1 | un entier entre 0 et 255 |
byte | 1 | un entier entre 0 et 255 |
int | 2 | un entier entre -32768 et 32767 |
unsigned int | 2 | un entier entre 0 et 65535 |
float | 4 | un décimal, précis à 7 chiffres après la virgule |