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#
Definition 13 (Programmes)
Programme : séquence d’instructions qui spécifie étape par étape les opérations à effectuer pour obtenir à partir des entrées un résultat (la sortie).
Expressions#
Definition 14 (Expressions)
Expression : combinaison de valeurs par des opérations donnant une nouvelle valeur
Example 19
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 |
Astuce
Aparté : syntaxe, sémantique, algorithme
Syntaxe : comment on l’écrit
Sémantique : ce que cela fait
Algorithme : comment c’est fait
Example 20
Syntaxe : 17 / 5
Sémantique : calcule la division entière de 17 par 5
Algorithme : division euclidienne
Expressions booléennes#
Definition 15 (Expressions booléennes (conditions))
Une expression booléenne est une expression dont la valeur est «vrai» ou «faux» (type : bool).
Une expression booléenne est aussi appelée une condition.
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#
1./2 * 14.5 * 1 * 1
1./2 * 14.5 * 10 * 10
1./2 * 14.5 * 100 * 100
1./2 * 14.5 * 1000 * 1000
Qu’est-ce qui n’est pas satisfaisant?
double v;
double m;
v = 1000;
m = 14.5;
1./2 * m * v * v
Definition 16 (Variables)
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 …
À retenir
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, …
Definition 17 (Types)
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.
Definition 18 (Types de base)
Les types de base en C++ sont :
Les entiers (mots clés
int
,long int
)
Exemples : 1, 42, -32765
les réels (mots clés
float
,double
)
Exemples : 10.43, 1.0324432e22
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, ...;
Example 21
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;
Example 22
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++;
x
Quelques raccourcis pratiques
Syntaxe |
Sémantique |
Syntaxe équivalente |
---|---|---|
|
Incrémenter |
|
|
Décrémenter |
|
|
Incrémenter |
|
|
Décrémenter |
|
Avertissement
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 booléenne (valeur vrai ou faux) :
«
x
est égal à5
? »Autrement dit : est-ce que la valeur contenue dans la variable
x
est5
?
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.
Voilà comment nous avions procédé :
m = 14.5;
v = 100;
1./2 * m * v * v
Comment éviter de retaper chaque fois la formule?
Fonctions#
Definition 19 (Fonctions)
Informellement, une fonction est un petit programme :
Entrées
Traitement
Sortie
Exemple :
double energie_cinetique(double m, double v) {
return 1./2 * 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 :
1./2 * m * v * v
Autres exemples de fonctions#
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 :
Le problème#
On a souvent besoin de rompre l’exécution séquentielle :
Nous avons besoin des 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")
debut()
droite();
avance();
gauche();
if ( regarde() == Toile ) {
gauche();
avance();
avance();
droite();
avance();
avance();
droite();
avance();
gauche();
} else {
avance();
avance();
gauche();
avance();
droite();
}
ouvre();
Definition 20 (Blocs 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 aussi considérée comme un bloc d’instructions.
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
Example 23
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#
Example 24
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;
}
minimum
maximum
Résumé#
Un aperçu de premiers éléments de programmation :
Expressions, valeurs et types
Variables (affectation ≠ égalité!)
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)