Vous êtes sur la page 1sur 12

Besoin a des concepts de Les structures conditionnelles et les

ruptures de séquence boucles

Algorithme  Les tests simples : permet de réaliser un choix parmi deux


 Rare les algorithme qui peuvent se possibilités (Ex :Booléenne : vrais ou faux)
décrire uniquement par un
Calcul_Aire
Constantes enchaînement séquentiel  Les instructions conditionnelles : c’est un concept
d’opération élémentaire de tests multiples, permet de comparer un objet à une série de
Pi = 3,14159 valeurs, et exécuter si la condition est vérifier (Ex : recherche des
Variables nombres premier dans une ensemble)
 On a besoin a des concept de rupture
Rayon, Surface : réels; de séquence comme les test et les
Début boucles  Les itérations : consiste à exécuter un bloc d’instructions un
lire (Rayon); Ex : certain nombre de fois (Ex : calcul d’une suite numérique)
 un algorithme qui résout une
Surface := Pi * (Rayon)2;
équation de deuxième degré
écrire (Surface);  un algorithme qui calcule une série
 Les boucles conditionnelles : consiste à exécuter un
Fin numérique bloc d’instructions un certain nombre de fois si la condition est
vérifier (Ex : On veut afficher le 100 premiers nombres :. Tant que i est plus
petit que 100, afficher la valeur de i).
07/03/2011 Module I2, 1ère année GE 47 07/03/2011 Module I2, 1ère année GE 48

Tests: instructions conditionnelles (1) Tests: instructions conditionnelles (2)


 Les instructions conditionnelles servent à n'exécuter une instruction  La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que
ou une séquence d'instructions que si une condition est vérifiée la condition est fausse, aucun traitement n'est réalisé
On utilisera la forme suivante: Si condition alors


On utilisera dans ce cas la forme simplifiée suivante:
instruction ou suite d'instructions1;
Sinon Si condition alors
instruction ou suite d'instructions2; instruction ou suite d'instructions1;
Finsi Finsi
• la condition ne peut être que vraie ou fausse
• si la condition est vraie, se sont les instructions1 qui seront exécutées

• si la condition est 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
07/03/2011 Module I2, 1ère année GE 49 07/03/2011 Module I2, 1ère année GE 50

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

07/03/2011 Module I2, 1ère année GE 51 07/03/2011 Module I2, 1ère année GE 52

Exercice (tests) Conditions composées


Ecrire un algorithme qui demande un nombre entier à l'utilisateur,  Une condition composée est une condition formée de plusieurs
puis qui teste et affiche s'il est divisible par 3 conditions simples reliées par des opérateurs logiques:
Algorithme Divsible_par3 ET, OU, OU exclusif (XOR) et NON
Variable n : entier  Exemples :
Début • x compris entre 2 et 6 : (x > 2) ET (x < 6)
Ecrire (" Entrez un entier : “);
Lire (n); • n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
Si (n%3=0) alors • deux valeurs et deux seulement sont identiques parmi a, b et c :
Ecrire (n," est divisible par 3");
(a=b) XOR (a=c) XOR (b=c)
Sinon
Ecrire (n," n'est pas divisible par 3");
 L'évaluation d'une condition composée se fait selon des règles
Finsi présentées généralement dans ce qu'on appelle tables de vérité
Fin
07/03/2011 Module I2, 1ère année GE 53 07/03/2011 Module I2, 1ère année GE 54

2
Tables de vérité Tests imbriqués
 Les tests peuvent avoir un degré quelconque d'imbrications
C1 C2 C1 ET C2 C1 C2 C1 OU C2
Si condition1 alors
VRAI VRAI VRAI VRAI VRAI VRAI
Si condition2 alors
VRAI FAUX FAUX VRAI FAUX VRAI
instructionsA;
FAUX VRAI FAUX FAUX VRAI VRAI
Sinon
FAUX FAUX FAUX FAUX FAUX FAUX instructionsB;
Finsi
C1 C2 C1 XOR C2 C1 NON C1 Sinon
VRAI VRAI FAUX VRAI FAUX Si condition3 alors
VRAI FAUX VRAI FAUX VRAI instructionsC;
FAUX VRAI VRAI Finsi
FAUX FAUX FAUX Finsi

07/03/2011 Module I2, 1ère année GE 55 07/03/2011 Module I2, 1ère année GE 56

Tests imbriqués: exemple (version 1) Tests imbriqués: exemple (version 2)


Variable n : entier; Variable n : entier
Début Début
Ecrire ("entrez un nombre : "); Ecrire ("entrez un nombre : ");
Lire (n); Lire (n) ;
Si n < 0 alors Si (n < 0) alors Ecrire ("Ce nombre est négatif");
Ecrire ("Ce nombre est négatif"); Finsi
Si (n = 0) alors Ecrire ("Ce nombre est nul");
Sinon
Finsi
Si n = 0 alors Si (n > 0) alors Ecrire ("Ce nombre est positif")
Ecrire ("Ce nombre est nul");
Finsi
Sinon Fin
Ecrire ("Ce nombre est positif"); Remarque : dans la version 2 on fait trois tests systématiquement alors que
Finsi dans la version 1, si le nombre est négatif on ne fait qu'un seul test
Finsi Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
d'abord les conditions les plus probables (minimiser la complexité)
Fin
07/03/2011 Module I2, 1ère année GE 57 07/03/2011 Module I2, 1ère année GE 58

3
Tests imbriqués: exercice Tests imbriqués: corrigé de l'exercice
Variables copies : entier;
Le prix de photocopies dans une reprographie varie selon le prix : réel;
nombre demandé: 0,5 DH la copie pour un nombre de copies Début
inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20 et Ecrire ("Nombre de photocopies : ");
0,3DH au-delà. Lire (copies);
Si copies < 10 Alors
Ecrivez un algorithme qui demande à l’utilisateur le nombre de prix ← copies*0.5 ;
photocopies effectuées, qui calcule et affiche le prix à payer Sinon Si copies < 20
prix ← copies*0.4;
Sinon
prix ← copies*0.3;
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix);
Fin

07/03/2011 Module I2, 1ère année GE 59 07/03/2011 Module I2, 1ère année GE 60

Tests imbriqués: Exercice 2 Tests imbriqués: corrigé de l'exercice 2


Variables
A, B, C, Delta, X1, X2 : réels;
Début
Écrire l’algorithme du traitement qui calcule le discriminant Lire (A, B, C);
DELTA d’trinome du second degré AX2 + BX + C et qui, en Delta ← B2 – 4 AC;
fonction de son signe, calcule la ou les racines réelles du Si (Delta < 0) Alors
trinome ou afiche, si besoin est qu’il n’ya pas de racine réelle. Ecrire ("le trinome n’a pas de racine réelle");
Sinon
Si (Delta > 0 ) Alors
X1 ← (-B + racine(delta)) / 2A;
Les trois coefficients A, B et C seront saisis au clavier avant X2 ← (-B - racine(delta)) / 2A;
traitement.
Ecrire ("le trinome possède deux racines réelles : ", X1, X2);

Sinon

X1 ← (-B ) / 2A;
Ecrire ("le trinome possède une racine réelle :", X1);
Finsi
Finsi
Fin

07/03/2011 Module I2, 1ère année GE 61 07/03/2011 Module I2, 1ère année GE 62

4
Les types de boucle

Algorithmique  On distingue 2 types de boucles:

• Les boucles à compteur ou définie


• On sait à l’avance combien de fois la boucle devra tourner et
une variable (le compteur ) compte les répétitions
• Choisir 10 nombres au hasard. On fera dix fois l’opération choisir
un nombre au hasard.
• Ex : la boucle Pour

Les boucles • Les boucles à événement ou indéfinie


• On ne sait pas à l’avance le nombre de fois que la boucle sera
exécutée.
• Ça peut dépendre du nombre de données à traiter.
• Ça peut dépendre du nombre d’essais que l’usager a effectués.
• Ex : la boucle Tanque et la boucle jusqu’a

07/03/2011 Module I2, 1ère année GE 63 07/03/2011 Module I2, 1ère année GE 64

Les boucles Tant que Boucle Tant que : exemple simple


Un algorithme qui détermine le premier nombre entier N tel que la
TantQue (condition) somme de 1 à N dépasse strictement 100

Variables som, i : entier


instructions Debut
i←0
som← 0
FinTantQue Vrai TantQue (som <=100)
condition instructions
i ← i+1
som ← som+i
Faux FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin

07/03/2011 Module I2, 1ère année GE 65 07/03/2011 Module I2, 1ère année GE 66

5
Boucle Tant que : exemple Algorithme d’Euclide
Algorithme Plus-Grand-Element: Retourne la plus
grande valeur d’une liste
Trace de l’algorithme:  Trouver le plus grand diviseur commun (pgcd) de deux entiers
Entrée: n entiers S1,…, Sn
Sortie: grand contenant le plus grand élément n=4; S1= -2; S2=6; S3=5; S4=6
Définition: q est un diviseur commun de m et n si q divise à la
fois m et n (le reste de la division entière est 0)
Algo plus-grand (S,n) grand =-2 i=2
grand := S1;
Le pgdc de m et n est le plus grand entier q divisant à la fois m
i:=2; grand = 6 i=3 et n.
Tant que i ≤ n Faire
Début
i=4 Exemple: pgcd(4, 6) = 2; pgcd(3,8) = 1;
Si Si > grand alors // une plus grande valeur a été trouvée i=5 pgcd(9, 12) = 3;
grand := Si;
i := i+1; Utile pour la simplification de fractions:
Fin
9/12 = 3.3/4.3 = 3/4
ecrire (grand)
Fin plus-grand;
07/03/2011 Module I2, 1ère année GE 67 07/03/2011 Module I2, 1ère année GE 68

Trouver le PGCD de a et b Méthode d’Euclide : Algorithme


Exemple: pgcd(30, 105)
 1ère méthode: Trouver tous les diviseurs de a et b, et trouver le
diviseur commun le plus grand
Soient r0, r1 deux entiers strictement positifs,
• Diviseurs de 30: 1, 2, 3, 5, 6, 10, 15, 30 tels que r0=r1.q+r2 avec 0≤r2<r1
• Diviseurs de 105: 1, 3, 5, 7, 15, 21, 35, 105
⇒ pgcd(30, 105) = 15
• 2ème méthode: la méthode d’Euclide
 Si r2 = 0, pgcd (r0, r1) = r1
• 105 = 30.3 + 15. Donc pgcd(105, 30) = pgcd(30,15)  Sinon, rediviser ri par ri+1 tant que ri+1 est
• 30 = 15.2 + 0. Donc pgcd(30, 15) = pgcd(15,0)
• pgcd(15,0)=15 différent de 0
⇒pgcd(105,30)=pgcd(30,15)=pgcd(15,0)=15  Si rn est le premier reste nul, alors
pgcd(r0,r1) = pgcd(r1,r2) = … =pgcd(rn-1,rn)= pgcd(rn-1,0) = rn-1

07/03/2011 Module I2, 1ère année GE 69 07/03/2011 Module I2, 1ère année GE 70

6
Algorithme d’Euclide
Entrée: a, b deux entiers positifs Trace de l’algorithme pour
Les boucles Pour
a=504 et b=396
Sortie: pgcd(a,b) Pour compteur allant de initiale à finale par pas valeur du pas
504 396 a
108 1 instructions
Procédure pgcd(a,b)
Tant que b <> 0 Faire
FinPour
b 396 108 a
Début 72 i ←initiale
3
diviser a par b: a = b.q+r, 0 ≤ r < b;
a:=b; b 108 72 a
b:=r; 36 1 Vrai
i n'a pas atteint finale instructions i ← i + pas
Fin
72 36 a
Retourner (a) b 0 2 Faux
Fin pgcd
07/03/2011 Module I2, 1ère année GE
b 71 07/03/2011 Module I2, 1ère année GE 72

Les boucles Pour Déroulement des boucles Pour


Remarques : 1) La valeur initiale est affectée à la variable compteur

2) On compare la valeur du compteur et la valeur de finale :


 Compteur est une variable de type entier (ou caractère). Elle doit
être déclarée 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
 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 b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur
nombre d'itérations est égal à finale - initiale+ 1 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


 Initiale et finale peuvent être des valeurs, des variables définies si pas est positif (ou décrémenté si pas est négatif)
avant le début de la boucle ou des expressions de même type que ii. On recommence l'étape 2 : La comparaison entre compteur et
compteur finale est de nouveau effectuée, et ainsi de suite …

07/03/2011 Module I2, 1ère année GE 73 07/03/2011 Module I2, 1ère année GE 74

7
Boucle Pour : exemple Boucle Pour : remarque
 Il faut éviter de modifier la valeur du compteur (et de finale) à
Algorithme Plus-Grand-Element: Réécriture de l’algorithme précédent
mais avec une boucle ``Pour’’
l'intérieur de la boucle. En effet, une telle action :
Entrée: n entiers S1,…, Sn • perturbe le nombre d'itérations prévu par la boucle Pour
Sortie: grand contenant le plus grand élément • rend difficile la lecture de l'algorithme

Algo plus-grand (S,n)


• présente le risque d'aboutir à une boucle infinie

grand := S1; Exepmle : Pour i allant de 1 à 5


Pour i =1 à n Faire i  i -1
Si Si > grand alors // une plus grande valeur a été trouvée écrire(" i = ", i)
grand := Si; Finpour
ecrire (grand)
Fin plus-grand;

07/03/2011 Module I2, 1ère année GE 75 07/03/2011 Module I2, 1ère année GE 76

Lien entre Pour et TantQue: exemple


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) Calcul de x à la puissance n
Pour compteur allant de initiale à finale par pas valeur du pas avec la boucle Pour et la
boucle TantQue
instructions

FinPour
x : un réel non nul
peut être remplacé par : compteur ← initiale n : entier positif ou nul
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur ← compteur+pas
FinTantQue

07/03/2011 Module I2, 1ère année GE 77 07/03/2011 Module I2, 1ère année GE 78

8
Solution avec la boucle Tant Que
Solution avec la boucle Pour

Variables x, puiss : réel Variables x, puiss : réel


n, i : entier n, i : entier
Debut Debut
Ecrire (" Entrez respectivement les valeurs de x et n ") Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n) Lire (x, n)
puiss ← 1 puiss ← 1, i ← 1
Pour i allant de 1 à n TantQue (i<=n)
puiss← puiss*x
puiss← puiss*x
i ← i+1
FinPour
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin Fin

07/03/2011 Module I2, 1ère année GE 79 07/03/2011 Module I2, 1ère année GE 80

Algorithme de la fonction factorielle :


Exemple Algorithme de la fonction
factorielle

 Écrire deux algorithmes qui calculent Algorithme / tantque Algorithme / Pour


pour un entier positif donné n la valeur Calcul factorielle 1
Variables
Calcul factorielle 2
Variables
n!, un de ces algorithmes doit utilisé la i, f, n : Naturel i, f, n : Naturel
Début
boucle Pour et l’autre la boucle Tanque i←1
Début
f←1
f←1 pour i variant de 2 à n
tant que (i < n) f←f*i
i ← i+1
Entrée : n de type naturel f←f*i
Fin pour
écrire (f)

Sortie : factoriel (n) = 1*2*3*…..*(n-1)*n Fin de tant que


écrire (f)
Fin

Fin

07/03/2011 Module I2, 1ère année GE 81 07/03/2011 Module I2, 1ère année GE 82

9
Algorithme de la recherche des
La boucle tantque en langage de
nombres premiers : Exemple
programmation
 Problème: Écrire l’algorithme estPremier, Langage Pascal
qui a partir d’un entier strictement positif While condition Do
donné, retourne le résultat booléen VRAI ou Begin test

FAUX selon le nombre est premier ou non. Bloc d’instructions;


corps_boucle
End;
 Procédure : pour déterminer si un entier m
est un nombre premier. Il suffit de tester si Langage C et Java
m est divisible par un entier entre 2 et m/2 while (condition) {
• Ex : 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, Bloc d’instructions;
41, 43, 47. (listes des nombres premier <=50) }

07/03/2011 Module I2, 1ère année GE 83 07/03/2011 Module I2, 1ère année GE 84

La boucle Pour en langage de Détecter l’erreur dans les deux


programmation essaie tant que et pour
Langage Pascal Algorithme Algorithme
For variable := valeur initiale To valeur finale Do Essai de tant que Essai pour
Begin init
Variables Variables
Bloc d’instructions n : entier K, N : entier
End; test Début Début
n ← 15 n ← 200
tant que (n<>0) pour K variant de 1 à n
corps_boucle
Langage C et Java écrire (n) écrire (K)
for (i=valeur initiale; i<= valeur finale; i++) { n←n-2 K ← n – 100
incr Fin de tant que Fin pour
Bloc d’instructions; Fin Fin
}

07/03/2011 Module I2, 1ère année GE 85 07/03/2011 Module I2, 1ère année GE 86

10
La boucle Faire…Tant Que
Boucles imbriquées
 Les instructions d'une boucle peuvent être des instructions • Faire
itératives. Dans ce cas, on aboutit à des boucles imbriquées Instruction(s)
Tant que (condition) Instruction(s) de la

 Exemple: Exécution • do boucle

Pour i allant de 1 à 5 OX Instruction;


Pour j allant de 1 à i OOX while (condition)
condition
écrire("O") OOOX Vraie
do
FinPour OOOOX
{ La boucle s’exécute tant que la Fausse
écrire("X") OOOOOX
f :=n; condition est vraie. La boucle
FinPour n--; cesse lorque la condition est
fausse. À utiliser si l’on veut que la
} while (n>1);
boucle soit exécutée au moins une
fois
07/03/2011 Module I2, 1ère année GE 87 07/03/2011 Module I2, 1ère année GE 88

Les boucles Répéter … jusqu’à … Boucle Répéter jusqu’à : exemple


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

instructions instructions
Variables som, i : entier
Jusqu'à condition Debut
Faux som ← 0
condition
i←0
Répéter
Vrai
i ← i+1
 Condition est évaluée après chaque itération som ← som+i
 les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et
Jusqu'à ( som > 100)
leur exécution est répétée jusqu’à ce que condition soit vrai (tant qu'elle est Ecrire (" La valeur cherchée est N= ", i)
fausse) Fin

07/03/2011 Module I2, 1ère année GE 89 07/03/2011 Module I2, 1ère année GE 90

11
Algorithme de la racine carrée :
Exercice
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  Problème: Écrire l’algorithme qui calcul la racine carrée
d’un nombre sans avoir recours a la fonction mathématique
 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 Racine Carrée prédéfinie.
ou répéter jusqu'à  Procédure : si n est le nombre dont on souhaite extraire
 Pour le choix entre TantQue et jusqu'à : la racine carrée. On construit une suite de nombres Xi dont
le premier vaut 1 et dont le terme générale a pour
• Si on doit tester la condition de contrôle avant de commencer les expression :
instructions de la boucle, on utilisera TantQue
Xi = (n/xi-1 + xi-1) / 2
• Si la valeur de la condition de contrôle dépend d'une première Rq : Cette suite converge systématiquement vers racarrée (n)
exécution des instructions de la boucle, on utilisera répéter jusqu'à ou
faire tanque
07/03/2011 Module I2, 1ère année GE 91 07/03/2011 Module I2, 1ère année GE 92

Algorithme de la racine carrée

Algorithme Racine Carrée (RC)


Variables
n, x : réels
i, max : entier
Début
Lire (n)
Lire (max)
x←1
pour i variant de 1 à max
écrire (n)
x ← ((n/x) + x) / 2
Fin de pour
Fin

07/03/2011 Module I2, 1ère année GE 93

12

Vous aimerez peut-être aussi