Académique Documents
Professionnel Documents
Culture Documents
Une carte Arduino étant programmer en C++ il est important de connaître les principes de bases de ce
langage de programmation.
Maintenant imaginons que nous ayons besoin de ranger 6 chaussettes, 3 pulls et 2 pantalons. Cependant
nous ne sommes autorisées à mettre qu’un seul type de vêtement par tiroirs. Nous rangeons donc les
chaussettes dans le tiroir A, les pulls dans le B et les pantalons dans le C.
La mémoire d’un ordinateur fonctionne de la même manière, elle est composée d’une multitude de
« tiroirs » ne pouvant accueillir qu’un seul type de variables. Plus concrètement en informatique il existe
une variété de types de variables permettant de sauvegarder une multitude de types données. Voici les plus
communes même si cette liste n’est pas exhaustive elle est largement suffisante.
Si nous revenons à notre métaphore les types de variables sont les vêtements et les tiroirs sont les variables.
Cela explique pourquoi il n’est pas possible de mettre des vêtements différents dans le même tiroir, cela
reviendrait à mélanger les types de données différentes entre elles.
Une fois cette notion claire il nous faut désormais définir nos variables dans un code. Pour cela notre
métaphore nous donne tous les éléments. Un tiroir étant une variable, celui-ci dispose d’un nom, d’un type
(type de vêtements ranger dedans) et d’une valeur par défaut (dans notre cas il est vide).
Le type, il définit donc quel type de données sont attendu dans la variable.
Le nom, permet d’appeler (ou de désigner) la variable.
La valeur, est donc le contenu de la variable.
- « = » qui est l’opérateur d’assignement qui permet d’indiquer que nous assignons une valeur à une
variable.
- « ; » qui indique une fin de ligne. Cet élément est d’ailleurs obligatoire à chaque fin de ligne sauf si
celle-ci finit par une accolade.
Les variables étant maintenant correctement définies nous pouvons introduire les différents opérateurs
utilisés pour manipuler les variables seuls ou entres elles.
OPERATEURS DE COMPARAISON
Les opérateurs de comparaison aux nombres de six permettent de comparer deux variables entre elles et
renvoie une valeur booléenne.
<= Opérateur d'infériorité Vérifie qu'une variable est inférieure ou égale à une valeur
>= Opérateur de supériorité Vérifie qu'une variable est supérieure ou égale à une valeur
OPERATEURS DE CALCUL
Par exemple si nous voulons ajouter une valeur dans une variable et stocker le résultat dans cette même
variable. Nous utilisons habituellement la façon suivante : variable = variable + valeur ;
Avec les opérateurs d'assignation il est possible d'écrire cette opération sous la forme variable += valeur ;
Tableau 4 : Les opérateurs d'assignation
Opérateur Signification
Ce type d'opérateur permet de facilement augmenter ou diminuer d'une unité une variable. Ces opérateurs
sont très utiles pour des structures telles que des boucles, qui ont besoin d'un compteur (variable qui
augmente d’un en un).
Un opérateur de type x++ permet de remplacer des notations lourdes telles que x=x+1 ou bien x+=1.
LES PRIORITES
Lorsque l'on associe plusieurs opérateurs, il faut que le compilateur sache dans quel ordre les traiter (ou plus
exactement dans quel ordre il doit disposer les instructions), voici donc dans l'ordre décroissant les priorités
de tous les opérateurs.
2 -- ++ !
3 * / %
4 + -
6 == !=
7 ^
8 && ||
9 = += -=
On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou
non.
Une expression suivie d'un point-virgule est appelée instruction. Par exemple « a++ ; » est une instruction.
Lorsque l'on veut regrouper plusieurs instructions, on peut créer ce que l'on appelle un bloc, c'est-à-dire un
ensemble d'instructions comprises entre accolades « { instructions } ».
LA STRUCTURE « IF »
L’instruction « if » est la structure de test la plus basique, on la retrouve dans tous les langages (avec une
syntaxe différente...). Elle permet d'exécuter une série d'instructions si jamais une condition est réalisée.
Cette condition est construite grâce aux opérateurs décrit précédemment. La syntaxe de cette expression
est la suivante.
if (condition) {
...
Instructions exécuter si la condition est vraie(true)
...
Dans le cas où il n’y a qu’une seule instruction les accolades ne sont pas obligatoire, la structure peut alors
s’écrire de la façon suivante.
if (condition) Instruction ;
L'instruction « if » dans sa forme basique ne permet de tester qu'une condition, or la plupart du temps on
aimerait pouvoir choisir les instructions à exécuter en cas de non-réalisation de la condition. Pour cela il
existe l'expression « if ... else » qui permet d'exécuter une autre série d'instructions en cas de non-réalisation
de la condition. La syntaxe de cette expression est la suivante.
if (condition) {
...
Instructions exécuter si la condition est vraie(true)
...
} else {
...
Instructions exécuter si la condition est fausse(false)
...
Dans le cas où il n’y a qu’une seule instruction une syntaxe moins lourde existe, elle est construite de la
façon suivante.
Il est possible d’enchaîner plusieurs « if…else » afin de pouvoir vérifier plusieurs conditions dépendamment
de conditions précédentes. La syntaxe de cette expression est la suivante.
if (condition 1) {
...
Instructions exécuter si la condition 1 est vraie(true)
...
} else {
...
Instructions exécuter si la condition 1 est fausse(false) et que la condition 2 est
fausse(false)
...
LA STRUCTURE « SWITCH »
L'instruction « switch » permet de faire plusieurs tests de valeurs sur le contenu d'une même variable. Cette
structure conditionnelle simplifie le test de plusieurs valeurs d'une variable, car cette opération aurait été
compliquée (mais possible) avec des if imbriqués. Sa syntaxe est la suivante.
switch (Variable) {
case Valeur1 :
Liste d'instructions
break;
case Valeur2 :
Liste d'instructions
break;
case Valeurs... :
Liste d'instructions
break;
default:
Liste d'instructions
break;
Les parenthèses qui suivent le mot clé « switch » indiquent une expression dont la valeur est testée
successivement par chacun des « case ». Lorsque l'expression testée est égale à une des valeurs suivant
un « case », la liste d'instructions qui suit celui-ci est exécuté.
Le mot clé « break » permet de sortir de la structure conditionnelle.
Le mot clé « default » précède la liste d'instructions qui sera exécutée si l'expression n'est jamais égale à une
des valeurs.
CHAPITRE 4 : STRUCTURE DE BOUCLE
Les structures conditionnelles peuvent être associées à des structures qui se répètent suivant la réalisation
de la condition, on les appelle alors des structures de boucle.
A noter que le mot clé « break » vu précédemment permet également de sortir de n’importe qu’elle
structure de boucle.
Une fois qu’un programme sort d’une structure de boucle, le programme ne s’interrompt pas pour autant et
continue le reste des instructions.
LA BOUCLE « WHILE »
La boucle « while » exécute une liste d’instructions tant que la condition qui lui est imposée est vraie(true),
celle-ci est définit par la syntaxe suivante.
while (condition) {
...
Instructions exécuter tant que la condition est vraie(true)
...
Il est important de notée qu’avec ce type de structure les risques qu’une boucle ne s’arrête jamais car la
condition est toujours vraie sont important, ce phénomène est appelé boucle infinie.
LA BOUCLE « DO…WHILE »
Proche de la boucle « while » celle-ci dispose d’une propriété supplémentaire simple, que sa condition soit
fausse ou non elle exécutera une liste d’instructions au minimum une fois. Sa syntaxe est la suivante.
do {
...
Instructions exécuter une fois puis tant que la condition est vraie(true)
...
} while (condition);
LA BOUCLE « FOR »
La boucle « for » permet d’exécuter plusieurs fois la même série d’instruction suivant une condition
dépendante d’une forme de conteur. Sa syntaxe est la suivante.
}
« compteur » correspond à une variable qui permettra de définir la « condition ». La modification du
compteur, souvent une incrémentation de celui-ci, permet d’éviter de finir dans une boucle infinie (même si
ce cas reste possibilité elle en est fortement réduite).
Le C++ permet notamment de déclarer la variable du compteur directement dans la boucle elle-même de la
façon suivante.
Les boucle « for » peuvent toute s’écrire sous la forme d’une boucle « while » de la façon suivante. Attention
la réciproque est fausse.
La notion de fonction en informatique est fondamentale, il s’agit d’un sous-programme qui permet
d'effectuer un ensemble d'instructions par simple appel de celle-ci dans le corps du programme principal.
Les fonctions permettent d'exécuter dans plusieurs parties du programme une série d'instructions, cela
permet une simplicité du code et donc une taille de programme minimale.
...
Instructions
...
return valeur_du_type_de_la_fonction
Le type indiquer ici correspond au type de la valeur que renvoie la fonction, il faut savoir qu’en plus des
types de variables classique il existe le type « void » permettant de ne rien renvoyer. Tenant compte de cette
particularité le mot clé « return » suivis d’une valeur correspondant au type de la fonction est nécessaire
pour terminer une fonction, sauf dans le cas d’une fonction de type « void ».
Il est possible de définir une valeur par défaut pour les arguments d’une fonction de la manière suivante.
...
Instructions
...
return valeur_du_type_de_la_fonction
Il est cependant obligatoire que les arguments ayant une valeur par défaut soit définit en dernier.
Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom suivi d'une parenthèse ouverte
(éventuellement des arguments) puis d'une parenthèse fermée.
D'autre part, une fonction peut faire appel à elle-même, on parle alors de fonction récursive (il ne faut pas
oublier de mettre une condition de sortie au risque sinon de ne pas pouvoir arrêter le programme...).