Vous êtes sur la page 1sur 47

CHAPITRE 2

PLAN
 Structures de contrôle de base
 Structure de choix multiple

EST LAAYOUNE 2019/2020 1


PARTIE II : Structures de contrôle de
base
 I - Structure alternative :
 1.1- Définition
 Une structure alternative est une situation dans laquelle on peut choisir qu’entre
deux solutions.
 1.2. Structure alternative simple (réduite)
 Syntaxe :
SI Condition ALORS
instruction ;
FINSI
 Si la condition est vérifiée, alors l’instruction sera exécuter.

EST LAAYOUNE 2019/2020 2


Exemple (Si…Alors)
 Écrire un algorithme qui permet d’afficher la valeur absolue d’un
entier x;
 Solution :
Algorithme AffichageValeurAbsolue
Variable x : réel ;
Début
Ecrire (" Entrez un réel : ”) ;
Lire (x);
Si (x < 0) alors
x ← -x
Ecrire ("la valeur absolue de x est:",x);
Finsi
Fin
EST LAAYOUNE 2019/2020 3
Strutrure Alternative Complète:
SYNTAXE:

Si condition alors
instruction1 ou suite d'instructions1
Sinon
instruction2 ou suite d'instructions2
Finsi
 La condition ne peut être que vraie ou fausse
 Si la condition est vérifiée (vraie), se sont les instructions1 qui seront
exécutées
 Si la condition n’est pas vérifié (fausse), se sont les instructions2 qui seront
exécutées
 La condition peut être une condition simple ou une condition composée de
plusieurs conditions

EST LAAYOUNE 2019/2020 4


Exemple (Si…Alors…Sinon)
Algorithme AffichageValeurAbsolue
Variable x : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
Si (x < 0) alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin

EST LAAYOUNE 2019/2020 5


Exercice (tests)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur,
puis qui teste et affiche s'il est divisible par 3
Algorithme Divsible_par3
Variable n : entier
Début
Ecrire " Entrez un entier : "
Lire (n)
Si (n%3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin
EST LAAYOUNE 2019/2020 6
Exercice (tests)
Écrire un algorithme qui permet d’afficher la plus grande valeur de
deux nombres entiers A et B.
 Solution :

Algorithme Plus_grande_valeur ;
Variable A, B : Entier ;
DEBUT
LIRE (A, B) ;
SI A>B ALORS
Ecrire (A) ;
SINON
Ecrire (B) ;
FINSI
FIN.
EST LAAYOUNE 2019/2020 7
Conditions composées
 Une condition composée est une condition formée de plusieurs
conditions simples reliées par des opérateurs logiques:
ET, OU, OU exclusif (XOR) et NON
 Exemples :
• x compris entre 2 et 6 : (x > 2) ET (x < 6)
• n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
• deux valeurs et deux seulement sont identiques parmi a, b et c :
(a=b) XOR (a=c) XOR (b=c)

 L'évaluation d'une condition composée se fait selon des règles


présentées généralement dans ce qu'on appelle tables de vérité

EST LAAYOUNE 2019/2020 8


Tables de vérité
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX

C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX

EST LAAYOUNE 2019/2020 9


Structure alternative imbriquée
 Syntaxe:

Si condition1 alors
Si condition2 alors
instructions2;
Sinon
instructions21;
Finsi
Sinon
Action1 ;
Finsi

EST LAAYOUNE 2019/2020 10


Structure alternative imbriquée
 Les tests peuvent avoir un degré quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructions2;
Sinon
instructions21;
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi

EST LAAYOUNE 2019/2020 11


Tests imbriqués: exemple (version 1)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors
Ecrire ("Ce nombre est négatif")
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
EST LAAYOUNE 2019/2020 12
Tests imbriqués: exemple (version 2)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors Ecrire ("Ce nombre est négatif")
Finsi
Si (n = 0) alors Ecrire ("Ce nombre est nul")
Finsi
Si (n > 0) alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Remarque : dans la version 2 on fait trois tests systématiquement alors que
dans la version 1, si le nombre est négatif on ne fait qu'un seul test
Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
d'abord les conditions les plus probables

EST LAAYOUNE 2019/2020 13


Tests imbriqués: exercice
Le prix de photocopies dans une reprographie varie selon le nombre demandé: 0,5
DH la copie pour un nombre de copies inférieur à 10, 0,4DH pour un nombre compris
entre 10 et 20 et 0,3DH au-delà.

Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies


effectuées, qui calcule et affiche le prix à payer

EST LAAYOUNE 2019/2020 14


Tests imbriqués: corrigé de l'exercice
Variables copies : entier
prix : réel
Début
Ecrire ("Nombre de photocopies : ")
Lire (copies)
Si (copies < 10) Alors
prix ← copies*0.5
Sinon Si (copies) < 20 alors
prix ← copies*0.4
Sinon
prix ← copies*0.3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin

EST LAAYOUNE 2019/2020 15


Tests imbriqués: corrigé de l'exercice
Variables a,b: Réel
Début
Ecrire (« Entrer a et b : ")
Lire (a,b)
Si (a=0) Alors
Si b=0 Alors
Ecrire("la solution est: R" );
Sinon
Ecrire(" Pas de solution " );
Finsi
SINON
Ecrire (-b\a) ;
FinSI
FIN

EST LAAYOUNE 2019/2020 16


Tests imbriqués: corrigé de l'exercice

Ecrire l’algorithme qui donne l’état de


l’eau selon sa température.

EST LAAYOUNE 2019/2020 17


opérateurs conditionnels

<exp1> ? <exp2> : <exp3>

 SI <exp1> (la condition) est vrai alors la


valeur de <exp2> est fournie comme résultat.

 Si <exp1> est fausse alors la valeur de


<exp3> est fournit comme résultat.

EST LAAYOUNE 2019/2020 18


opérateurs conditionnels
SI (A>B)
Max=A
Sinon
Max=B
Max(A>B) ? A : B;

EST LAAYOUNE 2019/2020 19


Structure de choix multiple :

 Syntaxe :
CAS Expression VAUT
Val1 : Action1 ;
Val2 : Action2 ;
…………………
Valn : ActionN ;
SINON Action ;
FINCAS
 Exemple :
 Écrire un algorithme qui permet de décrire l’action( passer ,ralentir ou arrêter qu’il doit exécuter selon la
couleur du feu).

EST LAAYOUNE 2019/2020 20


Solution
Algorithme Gestion_feu ;
Variable Couleur : Alphanumérique ;
DEBUT
LIRE (couleur) ;
CAS couleur VAUT
"Vert" : Ecrire ("Je passe") ;
"Jaune" : Ecrire ("Je ralentis") ;
"Rouge": Ecrire ("Je m’arrête") ;
SINON : Ecrire ("Cette couleur n’est pas un couleur de feu") ;
FINCAS
FIN.

EST LAAYOUNE 2019/2020 21


Incrémentation
 Variable : A : entier
 Début
 i ←5
 i ←i+1
 Ecrire i
 Fin

EST LAAYOUNE 2019/2020 22


Décrémentation
 Variable : A : entier
 Début
 i ←5

 i ←i-1
 Ecrire i
 Fin

EST LAAYOUNE 2019/2020 23


Exercices :(Affiche du Menu)

Variables a,b: Réel 2:Ecrire ("La soustraction est ", A-B) ;


choix: entier Break;
Début 3:Ecrire ("La produit est ", A*B) ;
Ecrire ("Entrer le premier Break;
nombre ") ; 4:Si(b=0)
Lire(a); Ecrire("La division sur 0 est impossible ");
Ecrire ("Entrer le deuxième nombre ") ; Sinon
Lire(b); Ecrire ("La division ", A/B) ;
Ecrire ("Veuillez choisir l’option") ; Fin SI
Ecrire ("Pour la somme Taper:1") ; Break;
Ecrire ("Pour la soustraction Taper:2") ; Sinon
Ecrire ("Pour la multiplication Taper:3") ; Ecrire ("Vous avez choisis un choix incorrecte") ;
Ecrire ("Pour la division Taper:4") ; FinSelon
Lire(choix); Fin
Selon(choix)
1:Ecrire ("La somme est ", A+B) ;
Break;

EST LAAYOUNE 2019/2020 24


Instructions itératives: les boucles
 Les boucles servent à répéter l'exécution d'un groupe d'instructions
un certain nombre de fois
 On distingue trois sortes de boucles en langages de programmation :
• Les boucles tant que : on y répète des instructions tant qu'une certaine
condition est réalisée
• Les boucles jusqu'à : on y répète des instructions jusqu'à ce qu'une
certaine condition soit réalisée
• Les boucles pour ou avec compteur : on y répète des instructions en
faisant évoluer un compteur (variable particulière) entre une valeur initiale
et une valeur finale

EST LAAYOUNE 2019/2020 25


Les boucles Tant que
TantQue (condition)
instructions condition Vrai instructions
FinTantQue
Faux

 la condition (dite condition de contrôle de la boucle) est évaluée avant chaque


itération
 si la condition est vraie, on exécute instructions (corps de la boucle), puis, on
retourne tester la condition. Si elle est encore vraie, on répète l'exécution, …
 si la condition est fausse, on sort de la boucle et on exécute l'instruction qui
est après FinTantQue

EST LAAYOUNE 2019/2020 26


Les boucles Tant que
 Syntaxe :
 Tant que (condition) faire instruction;
 Fin Tant que;
 Instruction de répétition (Tant que/faire)
 • La condition de poursuite est de type booléen (vrai ou
faux) ;
 • Le bloc d’instruction est répété autant de fois que la
condition de poursuite à la valeur est vraie.

EST LAAYOUNE 2019/2020 27


Les boucles Tant que : remarques
 Le nombre d'itérations dans une boucle TantQue n'est pas connu
au moment d'entrée dans la boucle. Il dépend de l'évolution de la
valeur de condition
 Une des instructions du corps de la boucle doit absolument
changer la valeur de condition de vrai à faux (après un certain
nombre d'itérations), sinon le programme tourne indéfiniment

 Attention aux boucles infinies


 Exemple de boucle infinie :
i←2
TantQue (i > 0)
i ← i+1 (attention aux erreurs de frappe : + au lieu de -)
FinTantQue

EST LAAYOUNE 2019/2020 28


Boucle Tant que : exemple1
Contrôle de saisie d'une lettre majuscule jusqu’à ce que le caractère
entré soit valable

Variable C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin

EST LAAYOUNE 2019/2020 29


Boucle Tant que : exemple1
 Exemple1 : Écrire un algorithme qui permet de
 calculer la somme des 5 premiers entiers.
 Algorithme Somme_5_premiers_entier ;
 Variables I, N, S : entier ;
 DEBUT
 I 0;
 N 5;
 S 0;
 Tant que (I<N) faire début
 I I+1;
 S S+I ;
 Fin Tant que
 ECRIRE(S);
 FIN.
EST LAAYOUNE 2019/2020 30
Boucle Tant que : exemple1
 Exemple1 : Écrire un algorithme qui permet de calculer la somme
des N entiers.
 Algorithme Somme_entier ;
 Variables I, N, S : entier ;
 DEBUT
 Ecrire(“entrer la valeur de N”);
 Lire(N);
 I 1;
 S 0;
 Tant que (I<=N) faire
 I I+1;
 S S+I ;
 Fin Tant que
 ECRIRE(“la somme est”,S);

EST LAAYOUNE 2019/2020 FIN. 31
Exemple2 :
 Ecrire un algorithme qui demande un nombre compris entre
10 et 20, jusqu’à ce que la réponse convienne. En cas de
réponse supérieure à 20, on fera apparaître un message : «
Plus grand! », et inversement, « Plus petit ! » si le nombre
est inférieur à 10.

EST LAAYOUNE 2019/2020 32


Exemple2 :
Algorithme entier_entre_10_et_20
Variable a : Réel
Début
Lire a
Tant Que a < 10 OU a > 20 faire

Si a < 10 Alors
Ecrire « Plus petit ! »
Sinon
Ecrire « Plus grand! »
Fin Si

Fin Tant que


Fin

EST LAAYOUNE 2019/2020 33


Exemple3 :.
 On veut calculer le PGCD de deux entiers m et n .
 • L'algorithme d'Euclide permet de résoudre ce problème en prenant d'abord le reste de la
division de m par n, puis le reste de la division de n par ce premier reste, etc jusqu'à ce qu'on
trouve un reste nul.
 • Le dernier reste non nul utilisé est le PGCD de m et n.
 Pour m=1386 et n=140, on a successivement:
 1386 = 140 * 9 + 126
 140 = 126 * 1 + 14
 126 = 14 * 9 + 0
 le PGCD de 1386 et 126 est bien 14.

EST LAAYOUNE 2019/2020 34


Exemple3 :
Algorithme PGCD
Variable a,b,r :entiers
Début
Lire (a,b);
Tant Que ( b!=0) faire
Début
r  a mod b;
a b;
b  r;
Fin Tant quee
Ecrire ("Le PGCD de",a,"et",b,"est",a);
Fin

EST LAAYOUNE 2019/2020 35


Les boucles Pour
Pour compteur allant de initiale à finale par pas valeur du pas
instructions
FinPour

i ←initiale

Vrai
i n'a pas atteint finale instructions i ← i + pas

Faux

EST LAAYOUNE 2019/2020 36


Les boucles Pour
 Remarque : le nombre d'itérations dans une boucle Pour est connu
avant le début de la boucle

 Compteur est une variable de type entier (ou caractère). Elle doit
être déclarée

 Pas est un entier qui peut être positif ou négatif. Pas peut ne pas
être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas,
le nombre d'itérations est égal à finale - initiale+ 1

 Initiale et finale peuvent être des valeurs, des variables définies


avant le début de la boucle ou des expressions de même type que
compteur

EST LAAYOUNE 2019/2020 37


Déroulement des boucles Pour
1) La valeur initiale est affectée à la variable compteur
2) On compare la valeur du compteur et la valeur de finale :
a) Si la valeur du compteur est > à la valeur finale dans le cas d'un pas
positif (ou si compteur est < à finale pour un pas négatif), on sort de la
boucle et on continue avec l'instruction qui suit FinPour

b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur
est >= à finale pour un pas négatif), instructions seront exécutées

i. Ensuite, la valeur de compteur est incrémentée de la valeur du pas


si pas est positif (ou décrémenté si pas est négatif)

ii. On recommence l'étape 2 : La comparaison entre compteur et


finale est de nouveau effectuée, et ainsi de suite …

EST LAAYOUNE 2019/2020 38


Boucle Pour : exemple1
Calcul de x à la puissance n où x est un réel non nul et n un
entier positif ou nul
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)

puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin

EST LAAYOUNE 2019/2020 39


Boucle Pour : exemple1 (version 2)
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul (version 2 avec un pas négatif)
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i allant de n à 1 par pas -1
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
EST LAAYOUNE 2019/2020 40
Lien entre Pour et TantQue
La boucle Pour est un cas particulier de Tant Que (cas où le nombre d'itérations
est connu et fixé) . Tout ce qu'on peut écrire avec Pour peut être remplacé
avec TantQue (la réciproque est fausse)

Pour compteur allant de initiale à finale par pas valeur du pas


instructions
FinPour
peut être remplacé par : compteur ← initiale
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur ←
compteur+pas
FinTantQue
EST LAAYOUNE 2019/2020 41
Lien entre Pour et TantQue: exemple
Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou
nul (version avec TantQue)
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)

puiss ← 1
i←1
TantQue (i<=n)
puiss← puiss*x
i ← i+1
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin

EST LAAYOUNE 2019/2020 42


Boucles imbriquées
 Les instructions d'une boucle peuvent être des instructions
itératives. Dans ce cas, on aboutit à des boucles imbriquées

 Exemple: Exécution
Pour i allant de 1 à 5 OX
Pour j allant de 1 à i OOX
écrire("O") OOOX
FinPour OOOOX
écrire("X") OOOOOX
FinPour

EST LAAYOUNE 2019/2020 43


Les boucles Répéter … jusqu’à …
Répéter
instructions instructions

Jusqu'à condition
Faux
condition

Vrai
 Condition est évaluée après chaque itération

 les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et
leur exécution est répétée jusqu’à ce que condition soit vrai (tant qu'elle est
fausse)

EST LAAYOUNE 2019/2020 44


Boucle Répéter jusqu’à : exemple

EST LAAYOUNE 2019/2020 45


Boucle Répéter jusqu’à : exemple
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1
à N dépasse strictement 100 (version avec répéter jusqu'à)

Variables som, i : entier


Debut
som ← 0
i←0
Répéter
i ← i+1
som ← som+i
Jusqu'à ( som > 100)
Ecrire (" La valeur cherchée est N= ", i)
Fin

EST LAAYOUNE 2019/2020 46


Choix d'un type de boucle
 Si on peut déterminer le nombre d'itérations avant l'exécution de la
boucle, il est plus naturel d'utiliser la boucle Pour

 S'il n'est pas possible de connaître le nombre d'itérations avant


l'exécution de la boucle, on fera appel à l'une des boucles TantQue
ou répéter jusqu'à

 Pour le choix entre TantQue et jusqu'à :

• Si on doit tester la condition de contrôle avant de commencer les


instructions de la boucle, on utilisera TantQue

• Si la valeur de la condition de contrôle dépend d'une première


exécution des instructions de la boucle, on utilisera répéter jusqu'à

EST LAAYOUNE 2019/2020 47

Vous aimerez peut-être aussi