Les variables
Une variable est une zone réservée de la mémoire vive (également appelée mémoire volatile), de taille fixe ou variable, dédiée à stocker une information utile dans notre programme. Elle peut être de différents formats; soit de type numérique, chaîne de caractères, pointeur, etc. en fonction du besoin.
Imaginons maintenant que nous souhaitons ranger plusieurs objets dans un caisson. Dans ce cas de figure, le caisson représente la case mémoire physique, soit l'équivalent d'une variable, et les objets que nous mettons dedans représentent la valeur de notre variable qui représente l'information utile que nous souhaitons stocker (ci-dessus un exemple produit par Freepik sur Freepik). Si nous stockons plusieurs caissons, de mêmes formats ou de différents formats dans une armoire, cette dernière représente notre mémoire vive de notre système numérique.

Pour mieux comprendre ce principe, nous avons modélisé un bloc mémoire avec une variable qui stocke la chaîne de caractères "ELECTRO-ROBOT" (la mémoire de notre ordinateur par exemple est divisée en plusieurs blocs de mémoire, appelés élgalement segments). Comme vous pouvez le remarquer, la mémoire d'un système numérique est un ensemble de cases ordonnées successivement que nous pouvons les modéliser sous forme de n lignes et de m colonnes. Chaque case peut acquérir un caractère et une variable peut occuper un ou plusieurs cases de notre bloc mémoire.

Ainsi, une variable est un ensemble du tout petit élément de la mémoire de notre système pour nous stocker une information numérique. Ce principe de base est générique pour tout langage de programmation il reste valable même si la manière de la déclaration de la variable diffère d'un langage de programmation à un autre. Alors commençons par un premier exemple écrit en langage C:
int x = 100;
double montant;
string Message = "Ceci est un exemple";
Comme vous pouvez le remarquer, le langage C nous permet de déclarer la variable et d'affecter une valeur sur la même ligne de code. Cette double fonction est spécifique à ce langage de programmation et nous la retrouvons dans pas mal d'autres (nous revenons ultérieurement à cela). Par contre, en Visual Basic, pour déclarer une variable et l'affecter, nous sommes dans l'obligation de réaliser cela sur deux lignes différentes, ci-dessous un exemple :
Dim x as integer
X = 100
Déclaration d'un variable
Pour adapter notre code en fonction du besoin final, il est recommandé de déclarer la variable dans le bon type de format adéquat. Autrement dit, si nous stockons un litre d'eau dans un réservoir de 1 m3, nous perdons beaucoup d'espace alors que nous pouvons le stocker dans une petite bouteille de capacité 1L. Ainsi, pour déclarer une variable, nous devons définir le bon format du contenant et sa taille à l'avance. Dans cet exemple cité ci-dessus, notre variable est le récipient de capacité 1L et de format une bouteille.
Mais à quoi sert la déclaration de la variable? Déclarer une variable c'est réserver l'emplacement requis dans la mémoire de notre système et donner un nom à notre variable pour être utilisée au cours de notre progragramme. Comme dans l'exemple précédent, nous devons chercher la bouteille de 1L pour la préparer à recevoir la quantité d'eau demandée.
Pour déclarer une variable, en général en algorithmique ou langage de programmation, nous devons spécifier le type de la variable suivi par son nom ou inversement telle que:
|
type de la variable nom de la variable |
Exemple de déclaration d'une variable sous Arduino IDE en C++
Comme exemple, nous allons faire clignoter une diode LED sous une carte Arduino avec une vitesse au hasard. Pour cela, nous allons déclarer une variable de type entier que nous allons appeler WaitingTime que nous allons la définir comme suit:
int waitingTime = 250 + (rand() % 100) * 2.5;
Comme vous le remarquez, nous avons déclarer une variable composée de deux parties:
- 250 : nous déclarons une première partie égale à 250 millisecondes
- (rand() %100) * 2.5 : dans cette partie de code, le résultat peut varier entre 0 à 247.5 millisecondes
Ainsi, notre code source sera comme suit :

Comme vous le constatez, nous avons également déclaré une variable appelée NumPort pour vous démontrer que nous pouvons déclarer le numéro de port concerné sur notre carte Arduino en utilisant une variable au lieu de la déclarer directement telle que :
pinMode(12, OUTPOUT);
Les différents types de variable
En fonction de notre variable à manipuler, nous devons demander à notre programme le type correspondant. C'est comme l'exemple présenté précédemment, nous aurons besoin d'un petit volume pour stocker un litre d'eau et non pas 1 m3. C'est dans ce principe que nous retrouvons plusieurs types de variables possibles, pour coder notre programme, que nous pouvons les classifier en fonction du format de l'information à traiter tels que:
- un premier qui nous permet de stocker uniquement des valeurs numériques de type entier tels que: signed char, int, long.
- un deuxième plus générique et qui nous permet d'enregistrer des nombres de format décimal, appelé aussi de type réel ou aussi appelés nombres flottants, tels que: float, double, etc.
- les variables de type booléenne pour stocker des résultats de type conditionnel.
- un format pour stocker les chaînes de caractères tel que: Char, String, ...
Ainsi, il est nécessaire de bien choisir le type de notre variable afin d'éviter tout résultat erroné. Par exemple, si nous déclarons la variable qui récupère le résultat d'une division par un entier, le résultat sera incorrect puisqu'il s'agira du résultat d'une division euclidienne et non pas du résultat d'une division avec la virgule. Ci-dessous un exemple en CSharp:
int x = 9;
integer y = x / 4;
Console.WriteLine("Le résultat est : " + y);
En déclarant la variable y en entier et non pas en décimal, le résultat sera 2 et non pas 2.25. D'où le mauvais choix du type de la variable pour notre résultat y nous fausse indirectement notre résultat.
Dans la suite de notre cours, nous allons nous intéresser spécialement aux langages de programmation C, C++ et Python. Pour une simple raison, le C et C++ sont utilisés dans la plupart des cartes programmables, ainsi que pour programmer les cartes Arduino et le Python, principalement pour les cartes Raspberry.
Le langage C/C++
Pour chaque langage de programmation, nous retrouvons un certain nombre de types pour déclarer nos variables. Pour le langage C ou C++, il existe plusieurs types de variables dont les principaux types de bases sont :
| Type | Description |
| bool | Variable de type Booléen : la valeur peut prendre deux états: True ou False (soit Vrai ou Faux) |
| int | Entier : la valeur peut varier entre −32767 et +32767 |
| float | Nombre à virgule flottante simple, il est représenté sur 4 octets et nous permet de stocker les nombres fractionnaires contenant une ou plusieurs décimales. Suffisant pour stocker 6 à 7 chiffres décimaux. |
| double | Nombre à virgule flottante double, il est représenté sur 8 octets et nous permet de stocker les nombres fractionnaires contenant une ou plusieurs décimales. Suffisant pour stocker 6 à 7 chiffres décimaux. |
| char | Caractère : représente une seule case de mémoire d'un octet pour stocker un caractère. |
En ajoutant une instruction modificatrice, nous pouvons modifier ces types pour obtenir un nouveau type adapté en fonction de notre besoin. Les mots modificateurs dans le langage C ou C++ sont principalement les suivants :
- signed / unsigned : permet de définir si un nombre peut être négatif ou non. Le tableau ci-dessous nous résume l'exemple de type entier modifié avec l'instruction signed et unsigned :
| Type modifié (nouveau type) | Explication |
| signed int | Permet de sotocker un entier, négatif comme positif, qui doit être dans l'intervalle -2 147 483 648 à 2 147 483 647 |
| unsigned int | Permet de sotocker un entier positif uniquement qui ne peut être que dans l'intervalle de 0 à 4 294 967 295 |
- short / long : modifie la taille d’un entier. Le tableau ci-dessous nous résume l'exemple de type entier modifié avec l'instruction short et long :
| Type modifié (nouveau type) | Explication |
| short int | Valeur de type entier, de taille 2 octets (soit 16 bits ou digits binaires), peut nous stocker une valeur comprise entre -32 767 et 32 767 |
| unsigned short int | Valeur de type entier, de taille 2 octets (soit 16 bits ou digits binaires), peut nous stocker uniquement une valeur positivie comprise entre 0 et 65 535 |
| long int | Valeur de type entier, de taille 4 octets (soit 32 bits ou digits binaires), peut nous stocker toute valeur comprise entre -2 147 483 647 et 2 147 483 647 |
| unsigned long int | Valeur de type entier, de taille 4 octets (soit 32 bits ou digits binaires) ou 8 octets pour les systèmes 64-bits (soit 64 bits ou digits binaires), et peut nous stocker uniquement une valeur positivie comprise entre 0 et 4 294 967 295 (cette valeur diffère d'un système d'exploitation à un autre. Pour Windows, en général, ce type modifié est restreint à 32 bits alors que sous Linux 64-bits passe à 8 octets soit une limite de 18 446 744 073 709 551 615). |
Il est à noter que nous pouvons trouver plusieurs autres types de variables que nous pouvons utiliser dans les deux langages C et C++, sauf que nous allons nous limiter à ces types présentés ci-dessous pour que notre cours ne soit pas compliqué pour vous initier.
Le language Python
En Python, les choses sont un peu différentes par rapport au langage C et C++. En effet, nous retrouvons dans le même principe quasiment les mêmes types de variables, sauf avec certaines appellations un peu différentes. Le tableau ci-dessous nous détaille les principaux types de variables dans ce langage de programmation:
| Type | Description |
| int | Représente un nombre entier et il est illimité en taille dans la pratique. |
| float |
Représente un nombre décimal et les limites de ce type correspondent à ±sys.float_info.max et ±sys.float_info.min. Pour vous donner une idée, ces limites correspondent à :
|
| str | Représente une chaine de caractère. Chaque caractère est représenté par un octet (soit 8 bits ou digits binaires). |
| bool | Variable de type Booléen : la valeur peut prendre deux états: True ou False (soit Vrai ou Faux) |
Nous notons également que dans le langage Python, nous pouvons retrouver plusieurs autres types de variables tels que :
- Types de séquences : ce type nous permet de définir une liste composée de plusieurs variables de même type. Pour définir ce type de variable, nous pouvons utiliser les mots suivants : list, tuple et range
- Types de collections : ce type de variable nous permet de définir une variable dite de type collection: dict pour un dictionnaire de mots clefs, set pour un ensemble de valeur unique et frozenset pour un ensemble immuable.
- Types binaires : ce type de variable nous permet de définir une variable de type binaire : bytes pour un flux binaire en lecture, bytearrays pour un flux binaire modifiable et memoryview pour un bloc de mémoire binaire utilisable avec les deux premiers types en général.
| < Le code | La programmation | Les instructions > |