Premiers éléments de programmation impérative#
À faire
2024-2025 Réinsérer les boucles while simple. En 2023-2024 l’amphi n’a duré que 1h15 sur 1h30.
Prélude#
Avez vous bien avancé le TP chez vous?#
J’ai fini tous les exercices du TP (laby, …) |
|
J’ai retravaillé au moins deux heures de plus sur le TP |
|
Je n’ai pas pu utiliser myDocker |
|
Il fallait retravailler sur le TP? |
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#
Définition : Programmes
Programme (program) : séquence d’instructions qui spécifie étape par étape les opérations à effectuer pour obtenir à partir des entrées (input (informal)) un résultat (la sortie (output (informal))).
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)
Expressions#
Définition : Expressions
Expression (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 |
Astuce
Aparté : syntaxe, sémantique, algorithme
Syntaxe (syntax) : comment cela s’écrit
Sémantique (semantics) : ce que cela fait
Algorithme (algorithm) : 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 : Expressions booléennes (conditions)
Une expression booléenne (Boolean expression) est une expression dont la valeur est «vrai» ou «faux» (type : bool).
Une expression booléenne est aussi appelée une condition (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#
À faire
Transformer en un problème plutôt qu’un exemple
Préparer le terrain pour écrire le code en amphi. Par exemple via BEGIN/END SOLUTION
Est-ce que les notes imprimées devraient, ou pas, contenir la solution?
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 * 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
Définition : Variables
Une variable (variable) est un espace de stockage nommé où le programme peut mémoriser une donnée
Indication
Objectif
Stocker des informations pour usage ultérieur
Nommer des informations pour faciliter la lecture du programme
À 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, …
Définition : Types
Une variable C++ ne peut contenir qu’une seule sorte de données.
On appelle cette sorte le type (type (informal)) de la variable.
On dit que C++ est un langage typé statiquement.
Définition : Types de base
Les types de base en C++ sont :
Les entiers (integer) (mots clés
int
,long int
)
Exemples : 1, 42, -32765
les réels (float) (mots clés
float
,double
)
Exemples : 10.43, 1.0324432e22
les chaînes de caractères (string) (mot clé
string
)
Exemples : « bonjour », « Alice aime Bob »
les booléens (Boolean type) (mot clé
bool
)
Exemples :true
(vrai),false
(faux)
Les entiers, les caractères et les booléens forment les types ordinaux (ordinal type).
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 (variable declaration).
Syntaxe : déclaration des variables
type nomvariable;
type nomvariable1, nomvariable2, ...;
Exemple
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
Indication
Note
Affectation
x = y
: copie de la valeury
garde sa valeurL’ancienne valeur de
x
est écrasée!
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#
Définition : Fonctions
Informellement, une fonction (programming function (informal)) est un petit programme :
Entrées
Traitement
Sortie
À faire
Préparer le terrain pour écrire le code en amphi.
Coder l’appel à la fonction, puis la fonction elle même.
Donner l’exemple avant la définition de fonction
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#
Exemples
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 :
Le problème#
On a souvent besoin de rompre l’exécution séquentielle :
Nous avons besoin des structures de contrôle.
Instructions conditionnelles#
#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();
Définition : Blocs d’instructions
Un bloc d’instructions (code block) 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 …»#
Instruction conditionnelle : en fonction d’une condition, on va exécuter ou non un bloc d’instructions.
Syntaxe :
if ( condition ) {
bloc d instructions;
}
Sémantique
Évaluation de la condition
Si sa valeur est vraie, exécution du bloc d’instructions
Exemple
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;
}
minimum
maximum
Résumé#
Un aperçu de premiers éléments de programmation :
Expressions, valeurs et types
Variables (affectation ≠ égalité!)
On reviendra dessus!
Comment vous sentez-vous en ce début de cours?#
Curieux
Énervé
Inquiet
Fatigué