Cours d’algorithmique by Ph. RIS est mis à disposition selon les termes de la licence Creative Commons Paternité – Pas d’Utilisation Commerciale – Pas de Modification 3.0 Unported.
III. Les instructions conditionnelles
Il arrive très souvent que suivant la valeur prise par une variable, on veuille effectuer tel ou tel type de traitement. Ce choix peut être fait par l’instruction conditionnelle :
SI … ALORS … SINON … ou en PASCAL IF … THEN … ELSE
Règle d’indentation numéro 2 : les actions dans un test SI ALORS SINON doivent pouvoir être clairement séparées. Aussi, on met le THEN et le ELSE au même niveau et les actions correspondantes décalées à droite :
IF (test)
THEN
action_test_positif ;
ELSE
action_test_négatif ;
S’il y a plus d’une instruction par action, alors il faut utiliser les BEGIN/END :
IF (test)
THEN
BEGIN
actions_test_positif ;
END
ELSE
BEGIN
actions_test_négatif ;
END
III. 1. Exemple
Program division ;
Uses crt ;
var
diviseur, dividende : real ;
begin
writeln (‘dividende : ‘) ; readln(dividende) ;
writeln (‘diviseur : ‘) ; readln(diviseur) ;
if (diviseur0.0)
then writeln (‘Résultat = ‘,dividende/diviseur)
else
begin
writeln (‘Attention’) ;
writeln (‘Le diviseur est nul’) ;
end ;
end.
III.1.a. Exercice 1
Dire si les expressions suivantes sont vraies ou fausses :
– VRAI AND VRAI AND FAUX
– VRAI AND VRAI OR FAUX
– VRAI AND FAUX OR VRAI
– (VRAI AND FAUX) OR VRAI
– (VRAI ORFAUX) AND (FAUX AND (VRAI OR VRAI))
III.1.b. Exercice 2
On considère l’expression suivante :
If (NOTE)
NOTE étant une variable contenant un entier, et ABSENCE une variable contenant VRAI ou FAUX (booléenne).Quel est le résultat de cette équation dans les cas suivants :
NOTE=5, ABSENCE=FAUX
NOTE=10, ABSENCE=FAUX
NOTE=10, ABSENCE=VRAI
NOTE=12, ABSENCE=FAUX
Écrire un petit programme vérifiant les résultats.
III.1.c. Exercice 3
On considère l’expression suivante :
(NOTE15) OR ABSENCE
NOTE1, NOTE2, NOTE3, étant des variables contenant un nombre, et ABSENCE contenant VRAI ou FAUX.
Quel est le résultat de cette équation dans les cas suivants :
NOTE1=5, NOTE2=8, NOTE3=15, ABSENCE=FAUX
NOTE1=10, NOTE2=17, NOTE3=0, ABSENCE=VRAI
NOTE1=12, NOTE2=7, NOTE3=10, ABSENCE=FAUX
NOTE1=5, NOTE2=17, NOTE3=0, ABSENCE=VRAI
NOTE1=12, NOTE2=2, NOTE3=10, ABSENCE=VRAI
III.1.d. Exercice 4
Écrire un programme qui demande le sexe de l’utilisateur et affiche Madame ou Monsieur après avoir demandé son nom.
III.1.e. Exercice 4
Reprendre ce programme et demander si l’utilisateur est marié pour afficher Madame, Mademoiselle ou Monsieur.
III.1.f. Exercice 6
Ecrire un programme qui demande deux nombres et qui les affiche dans un ordre croissant.
III.1.g. Exercice 7
Écrire un programme qui demande trois nombres et qui les affiche dans un ordre croissant.
III.1.1h. Exercice 8
Écrire un programme qui lit les variables suivantes : PRODUIT (nom d’un produit), QUANTITE (nombre d’article de ce produit), TVA, PRIX, PRIX_TTC.
a) Donner un test permettant d’afficher les produits ayant une TVA entre 10% et 20%.
b) Donner un test permettant d’afficher les produits ayant un prix supérieur à 1000 et dont la TVA est comprise entre 15% et 25%.
c) Donner un test permettant d’afficher les produits ayant un prix TTC inférieur à PRIX+10 et dont la TVA est comprise entre 15% et 25%.
Écrire le programme correspondant.
III.2. La structure case
La structure CASE est une généralisation du IF THEN ELSE dans le sens où elle permet d’avoir plus d’une alternative à un test du moment où ces alternatives sont données. Par exemple :
case variable of
1, 2, 5 : writeln (‘1 3 ou 5’) ;
6..10 : writeln (‘entre 6 et 10’) ;
11, 12 :
begin
writeln(’11 ou 12′) ;
end ;
writeln(‘erreur’) ;
else :
end ;
La variable et les valeurs proposées dans les différents cas doivent être du même type.
Règle d’indentation numéro 3 : à chaque case correspond son end. Ils doivent donc être indentés au même niveau. Pour plus de clarté, il faut décaler les différentes alternatives vers la droite.
III.3. Exercices
III.3.a. Exercice 1
Ecrire un programme qui lit un entier au clavier. En se servant des bornes de l’intervalle de définition des entiers, afficher avec des IF THEN ELSE si l’entier est positif, négatif ou nul.
III.3.b Exercice 2
Récrire ce même programme avec un case.
III.3.c. Exercice 3
Un informaticien veut écrire un programme de message électronique. Pour cela, il invente un programme qui demande au début du programme, un numéro d’identification à l’utilisateur. il écrit les messages suivants selon la valeur de la variable :
1 ‘Bonjour cher ami, je suis en voyage et je rentre jeudi’
2 ‘Salut M’man, les crêpes étaient très bonnes’
3 ‘Chou-chou, tu as encore laissé la lumière allumée’
4 ‘Un saucisson à l’ail et deux jambons’
5 ‘Fou B5-C4’
6 ‘Vendredi soir 20h30’
Autres ‘Vous n’êtes pas un utilisateur autorisé’
Écrire un programme pouvant réaliser ces affichages avec :
1) des SI ALORS SINON
2) une structure CASE
On souhaite pouvoir faire la différence entre les utilisateurs autorisés et les autres. Pour cela, on définit la variable AUTORISE. Quel est le type le plus approprié pour celle-ci ? Modifier le programme pour pouvoir mettre à jour cette variable et selon la valeur de celle-ci, afficher en sortie le message :
‘Au revoir et à la prochaine’ ou
‘Vous n’êtes pas un utilisateur autorisé, que je ne vous y reprenne plus !’