Premiers éléments de programmation impérative
Contents
Premiers éléments de programmation impérative#
Prélude#
Résumé des épisodes précédents …#
Info 111: modalités et infrastructure
Informatique: usage, technologie, science
Objectif d’Info 111: initier à la science via la technologie
Concrètement: bases de la programmation impérative + …
Rappel#
Programme : suite d’instructions exécutées de manière séquentielle (les unes après les autres)
Exemple :
debut();
droite();
avance();
prend();
gauche();
avance();
pose();
droite();
avance();
gauche();
avance();
avance();
droite();
ouvre();
Expressions#
Expression : Combinaison de valeurs par des opérations donnant une nouvelle valeur.
Exemple: L’expression 3 * (1 + 3) + (1 + 4) * (2 + 4)
vaut 42
Opérations sur les entiers:
opération |
exemple |
résultat |
---|---|---|
opposé |
|
5 |
addition |
|
22 |
soustraction |
|
12 |
multiplication |
|
85 |
division entière |
|
3 |
reste de la division entière |
|
2 |
Aparté : syntaxe, sémantique, algorithme#
Syntaxe : comment on l’écrit
Sémantique : ce que cela fait
Algorithme : comment c’est fait
Exemple :
Syntaxe : 17 / 5
Sémantique : calcule la division entière de 17 par 5
Algorithme : division euclidienne
Expressions booléennes#
Définition :
Une expression dont la valeur est «vrai» ou «faux» (type : bool
)
Exemples:
true
false
regarde() == Vide
x > 3.14
2 <= n and n <= 5
Opérations booléennes usuelles :
opération |
exemple |
résultat |
---|---|---|
comparaison |
|
|
comparaison stricte |
|
|
comparaison stricte |
|
|
égalité |
|
|
inégalité |
|
|
négation |
|
|
et |
|
|
ou |
|
|
Variables#
Exemple#
Calculer l’énergie cinétique \(\frac12 m v^2\) d’un objet de masse \(14,5\) kg selon qu’il aille à \(1\), \(10\), \(100\), ou \(1000\) m/s.
1./2 * 14.5 * 1 * 1
1./2 * 14.5 * 10 * 10
1./2 * 14.5 * 10 * 10
1./2 * 14.5 * 100 * 100
double v;
double m;
v = 1000;
m = 14.5;
1.0/2.0 * m * v * v
Définition#
Une variable est un espace de stockage nommé où le programme peut mémoriser une donnée
Le nom de la variable est choisi par le programmeur
Objectif : stocker des informations durant l’exécution d’un programme
Analogie : utiliser un récipient pour stocker des ingrédients en cuisine :
Verser le sucre dans un saladier
Ajouter la farine dans le saladier
Laisser reposer
Verser le contenu du saladier dans …
Notes#
En C++, une variable possède quatre propriétés :
un nom (ou identificateur)
une adresse
à préciser la semaine prochaineun type
une valeur
La valeur peut changer en cours d’exécution du programme (d’où le nom de variable)
Notion de type#
Les variables peuvent contenir toutes sortes de données différentes :
nombres entiers, réels, booléens, …
textes
relevés de notes, images, musiques, …
Définition :
Une variable C++ ne peut contenir qu’une seule sorte de données
On appelle cette sorte le type de la variable
On dit que C++ est un langage typé statiquement
Les types de base#
Les différents types de base en C++ sont :
Les entiers (mots clés
int
,long int
)
Exemples : 1, 42, -32765les réels (mots clés
float
,double
)
Exemples : 10.43, 1.0324432e22les caractères (mot clé
char
)
Exemples : “a”, “b”, “ “, “]”les chaînes de caractères (mot clé
string
)
Exemples : « bonjour », « Alice aime Bob »les booléens (mot clé
bool
)
Exemples :true
(vrai),false
(faux)
Les entiers, les caractères et les booléens forment les types ordinaux.
La déclaration des variables#
Pour chaque variable, il faut donner au programme son nom et son type. On dit que l’on déclare la variable.
Syntaxe : Déclaration des variables
type nomvariable;
type nomvariable1, nomvariable2, ...;
Exemples :
int x, y, monEntier;
double f, g;
bool b;
Note : en C++ (compilé) on ne peut pas redéclarer une variable avec le même nom!
L’affectation#
Syntaxe :
identificateur = expression;
Exemple :
x = 3 + 5;
Sémantique :
Calcul (ou évaluation) de la valeur de l’expression
Stockage de cette valeur dans la case mémoire associée à cette variable.
La variable et l’expression doivent être de même type!
Exemples d’affectations#
int x, y;
On affecte la valeur 1 à la variable x
:
x = 1;
On affecte la valeur 3 à la variable y
:
y = 3;
Valeurs des variables après l’affectation :
x
y
Exemple : affecter la valeur d’une variable à une autre variable
x = y;
x
y
Note
Affectation
x = y
: copie de la valeur
y
garde sa valeurL’ancienne valeur de
x
est perdue!
Différent de transférer un ingrédient d’un récipient à l’autre
Exemple : incrémentation
int x;
x = 1;
x = x + 1;
x
Variantes :
x -= 2
x--;
x
⚠️ Affectation et égalité : deux concepts différents ⚠️#
L’affectation x = 5
:
Une instruction modifiant l’état de la mémoire.
Le test d’égalité x == 5
:
Une expression qui a une valeur booléenne (vrai ou faux) :
«vrai ou faux: x
est égal à 5
?»
Autrement dit : est-ce que la valeur contenue dans la variable x
est
5
?
Fonctions#
Retour sur notre
Exemple :
Calculer l’énergie cinétique \(\frac12 m v^2\) d’un objet de masse \(14,5\) kg selon qu’il aille à \(1\), \(10\), \(100\), ou \(1000\) km/h.
Comment éviter de retaper chaque fois la formule?
Fonctions#
Définition informelle :
Une fonction est un petit programme :
Entrées
Traitement
Sortie
Exemple :
double energie_cinetique(double m, double v) {
return 0.5 * m * v * v;
}
energie_cinetique(14.5, 10)
Entrées : la masse et la vitesse (des nombres réels)
Sortie : l’énergie cinétique (un nombre réel)
Traitement :
0.5 * m * v * v
Autres exemples de fonctions#
Chou-Chèvre-Loup :
void transporter(... T) {
charger(T);
traverser();
decharger(T);
}
Laby :
void avance_tant_que_tu_peux() {
while ( regarde() == Vide ) {
avance();
}
}
Structures de contrôle#
Rôle des structures de contrôle#
Rappel#
Les instructions sont exécutées de manière séquentielle (les unes après les autres), dans l’ordre du programme.
Exemple :

droite();
avance();
prend();
gauche();
avance();
pose();
droite();
avance();
gauche();
avance();
avance();
droite();
ouvre();
Le problème#
On a souvent besoin de rompre l’exécution séquentielle :
Ce sont les structures de contrôle
Instructions conditionnelles#
En fonction d’une condition, on va exécuter ou non un bloc d’instructions.
#include <laby/global_fr.hpp>
LABY("3a")
debut();
droite();
avance();
gauche();
Solution complète :
LABY("3a")
droite();
avance();
gauche();
if ( regarde() == Toile ) {
gauche();
avance();
avance();
droite();
avance();
avance();
droite();
avance();
gauche();
} else {
avance();
avance();
gauche();
avance();
droite();
}
ouvre();
Définition : bloc d’instructions#
Un bloc d’instructions est une suite d’instructions à exécuter successivement. Il est décrit par la syntaxe suivante :
{
instruction 1;
instruction 2;
...
instruction n;
}
Une instruction toute seule est considérée comme un bloc
Instruction conditionnelle simple : «si … alors …»#
Syntaxe :
if ( condition ) {
bloc d instructions;
}
Sémantique :
Évaluation de la condition
Si sa valeur est vraie, exécution du bloc d’instructions
Exemples :
if ( regarde() == Toile ) { // Au secours, fuyons!
gauche();
gauche();
}
if ( x >= 0 ) gauche();
Instruction conditionnelle : «si … alors … sinon …»#
Syntaxe :
if ( condition ) {
bloc d instructions 1;
} else {
bloc d instructions 2;
}
Sémantique :
Évaluation de la condition
Si sa valeur est «Vrai», exécution du bloc d’instructions 1
Si sa valeur est «Faux», exécution du bloc d’instructions 2
Exemples d’instruction alternative#
Exemple :
if ( regarde() == Toile ) { // Au secours, fuyons!
gauche();
gauche();
} else { // Tout va bien
avance();
}
Exemples d’instruction alternative (2)#
Exemple : Calcul du maximum et du minimum de x
et y
int x = 3, y = 5; // Les entrées
int maximum, minimum; // Les sorties
if ( x > y ) {
maximum = x;
minimum = y;
} else {
maximum = y;
minimum = x;
}
Résumé#
Un aperçu de premiers éléments de programmation :
Expressions, valeurs et types
Variables (affectation ≠ égalité!)
Fonctions
Conditionnelles (
if
)
On reviendra dessus!
Comment rompre la monotonie?#
Faire des calculs : expressions et variables
Découper en petits programmes : les fonctions
S’adapter au contexte : les instructions conditionnelles
Répéter : les instructions itératives (boucles)