cours d'algorithmique
Si chalala Alors
pouète
Finsi
Crédit: Université Paris 7, Christophe Darmangeat
Structure d’un test
Si booléen Alors
Instructions 1
Sinon
Instructions 2
Finsi
Un booléen est une expression dont la valeur est VRAI ou FAUX.
Cela peut donc être (il n’y a que deux possibilités) :
1. une variable (ou une expression) de type booléen
2. une condition
Exemple
Allez tout droit jusqu’au prochain carrefour
Si la rue à droite est autorisée à la circulation Alors
Tournez à droite
Avancez
Prenez la deuxième à gauche
Sinon
Continuez jusqu’à la prochaine rue à droite
Prenez cette rue
Prenez la première à droite
Finsi
Une condition est une comparaison
une condition est composée de trois éléments :
1. une valeur
2. un opérateur de comparaison
3. une autre valeur
Les opérateurs de comparaison sont :
•égal à…
•différent de…
•strictement plus petit que…
•strictement plus grand que…
•plus petit ou égal à…
•plus grand ou égal à…
Exercice 1
Ecrire un algorithme qui demande un nombre à
l’utilisateur, et l’informe ensuite si ce nombre est positif
ou négatif (on laisse de côté le cas où le nombre vaut
zéro).
Exercice 1 Solution
Variable n en Entier
Début
Ecrire "Entrez un nombre : "
Lire n
Si n > 0 Alors
Ecrire "Ce nombre est positif”
Sinon
Ecrire "Ce nombre est négatif"
Finsi
Fin
Conditions composées
Certains tests ont plusieurs conditions reliées
par ce qu’on appelle un opérateur logique:
• Le ET Pour que "Condition1 ET Condition2" soit VRAI, il
faut impérativement que Condition1 soit VRAI et que
Condition2 soit VRAI. Dans tous les autres cas,
"Condition 1 et Condition2" sera faux.
• Le OU. Pour que "Condition1 OU Condition2" soit VRAI,
il suffit que Condition1 soit VRAIE ou que Condition2 soit
VRAIE. Si Condition1 est VRAIE et que Condition2 est
VRAIE aussi, Condition1 OU Condition2 reste VRAIE.
Exercice 2
Ecrire un algorithme qui demande deux
nombres à l’utilisateur et l’informe ensuite si
leur produit est négatif ou positif (on laisse de
côté le cas où le produit est nul).
Solution Exo2
Variables m, n en Entier
Début
Ecrire "Entrez deux nombres : "
Lire m, n
Si (m > 0 ET n > 0) OU (m < 0 ET n < 0)
Alors
Ecrire "Leur produit est positif"
Sinon
Ecrire "Leur produit est négatif"
Finsi
Fin
Exo 3
Ecrire un algorithme qui demande trois noms à
l’utilisateur et l’informe ensuite s’ils sont rangés ou
non dans l’ordre alphabétique.
Exo 3 Solution
Variables a, b, c en Caractère
Début
Ecrire "Entrez successivement trois noms : "
Lire a, b, c
Si a < b ET b < c Alors
Ecrire "Ces noms sont classés alphabétiquement"
Sinon
Ecrire "Ces noms ne sont pas classés"
Finsi
Fin
Tests imbriqués
Par exemple, un programme devant donner l’état de l’eau selon sa
température doit pouvoir choisir entre trois réponses possibles (solide,
liquide ou gazeuse).
Variable Temp en Entier
Début
Ecrire "Entrez la température de l’eau :"
Lire Temp
Si Temp =< 0 Alors
Ecrire "C’est de la glace"
FinSi
Si Temp > 0 Et Temp < 100 Alors
Ecrire "C’est du liquide"
Finsi
Si Temp > 100 Alors
Ecrire "C’est de la vapeur"
Finsi
Fin
Test imbriqués 2
Les conditions se ressemblent et on effectue 3 tests successifs alors que tous portent
sur une même chose, la température de l'eau (la valeur de la variable Temp). Il serait
ainsi bien plus simple d’imbriquer les tests de cette manière :
Variable Temp en Entier
Début
Ecrire "Entrez la température de l’eau :"
Lire Temp
Si Temp =< 0 Alors
Ecrire "C’est de la glace"
Sinon
Si Temp < 100 Alors
Ecrire "C’est du liquide"
Sinon
Ecrire "C’est de la vapeur"
Finsi
Finsi
Fin
Exo 4
Ecrire un algorithme qui
demande un nombre à
l’utilisateur, et l’informe ensuite
si ce nombre est positif ou
négatif (on inclut cette fois le
traitement du cas où le
nombre vaut zéro).
Exo 4 solution
Variable n en Entier
Début
Ecrire "Entrez un nombre : "
Lire n
Si n < 0 Alors
Ecrire "Ce nombre est négatif"
SinonSi n = 0 Alors
Ecrire "Ce nombre est nul"
Sinon
Ecrire "Ce nombre est positif"
Finsi
Fin
Exo 5
Ecrire un algorithme qui
demande deux nombres à
l’utilisateur et l’informe ensuite
si le produit est négatif ou positif
(on inclut cette fois le traitement
du cas où le produit peut être
nul). Attention toutefois, on ne
doit pas calculer le produit !
Exo 5 - Solution
Variables m, n en Entier
Début
Ecrire "Entrez deux nombres : "
Lire m, n
Si m = 0 OU n = 0 Alors
Ecrire "Le produit est nul"
SinonSi (m < 0 ET n < 0) OU (m > 0 ET n > 0)
Alors
Ecrire "Le produit est positif"
Sinon
Ecrire "Le produit est négatif"
Finsi
Fin
Aiguillage « SI »
Dans le cas de tests imbriqués, le Sinon et le Si peuvent être fusionnés en un SinonSi.
On considère alors qu’il s’agit d’un seul bloc de test, conclu par un seul FinSi
Variable Temp en Entier Variable Temp en Entier
Début Début
Ecrire "Entrez la température de l’eau :" Ecrire "Entrez la température de l’eau :"
Lire Temp Lire Temp
Si Temp =< 0 Alors Si Temp =< 0 Alors
Ecrire "C'est de la glace" Ecrire "C’est de la glace"
Sinon SinonSi Temp < 100 Alors
Si Temp < 100 Alors Ecrire "C’est du liquide"
Ecrire "C’est du liquide" Sinon
Sinon Ecrire "C’est de la vapeur"
Ecrire "C’est de la vapeur" Finsi
Finsi Fin
Finsi
Fin
Variables Booléennes
Type de variables susceptibles de stocker les valeurs VRAI ou FAUX.
Variable Temp en Entier
Variables A, B en Booléen
Début
Ecrire "Entrez la température de l’eau :"
Lire Temp
A ← Temp =< 0
B ← Temp < 100
Si A Alors
Ecrire "C’est de la glace"
SinonSi B Alors
Ecrire "C’est du liquide"
Sinon
Ecrire "C’est de la vapeur"
Finsi
Fin
Exo 6
Ecrire un algorithme qui demande
l’âge d’un enfant à l’utilisateur.
Ensuite, il l’informe de sa
catégorie :
•"Poussin" de 6 à 7 ans
•"Pupille" de 8 à 9 ans
•"Minime" de 10 à 11 ans
•"Cadet" après 12 ans
Peut-on concevoir plusieurs
algorithmes équivalents menant à
ce résultat ?
Exo 6 - Solution
Variable age en Entier
Début
Ecrire "Entrez l’âge de l’enfant : "
Lire age
Si age >= 12 Alors
Ecrire "Catégorie Cadet"
SinonSi age >= 10 Alors
Ecrire "Catégorie Minime"
SinonSi age >= 8 Alors
Ecrire "Catégorie Pupille"
SinonSi age >= 6 Alors
Ecrire "Catégorie Poussin"
Finsi
Fin
Et - ou
Toute structure de test requérant une condition composée faisant
intervenir l’opérateur ET peut être exprimée de manière équivalente avec
un opérateur OU, et réciproquement.
Si il fait trop chaud ET il ne pleut pas Alors Si il ne fait pas trop chaud OU il pleut Alors
Ouvrir la fenêtre Fermer la fenêtre
Sinon Sinon
Fermer la fenêtre Ouvrir la fenêtre
Finsi Finsi