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 :

La mémoire d'un processeur

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