Académique Documents
Professionnel Documents
Culture Documents
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
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
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
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
07/03/2011 Module I2, 1ère année GE 63 07/03/2011 Module I2, 1ère année GE 64
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
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
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
07/03/2011 Module I2, 1ère année GE 75 07/03/2011 Module I2, 1ère année GE 76
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
07/03/2011 Module I2, 1ère année GE 79 07/03/2011 Module I2, 1ère année GE 80
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
07/03/2011 Module I2, 1ère année GE 83 07/03/2011 Module I2, 1ère année GE 84
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
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
12