Telechargé par Yassmine Elghouchma

Algorithmique et Programmation : Tests et Boucles

publicité
Algorithmique & Programmation Partie 2
Hassan OUAHI
BCG S2 2023-2024
1
Sommaire
4
 Tests (condition)
 Boucles (répétition)
2
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Dans l’instruction si condition alors bloc, la condition est une expression
booléenne, et le bloc n’est exécuté que si la condition est vraie.
si <expression logique> alors
instructions
[sinon instructions]
fsi
3
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
y←x
si y < 0 alors
y ← −y
fsi
afficher y
fin
4
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons que x = −10.0
y←x
si y < 0 alors
y ← −y
fsi
afficher y
fin
5
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons que x = −10.0
y←x
y prend la valeur −10.0
si y < 0 alors
y ← −y
fsi
afficher y
fin
6
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons que x = −10.0
y←x
y prend la valeur −10.0
si y < 0 alors
y ← −y
y est négatif donc le bloc est exécuté
fsi
afficher y
fin
7
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons que x = −10.0
y←x
y prend la valeur −10.0
si y < 0 alors
y ← −y
y est négatif donc le bloc est exécuté
y prend donc la valeur 10.0
fsi
afficher y
fin
8
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons maintenant que x = 5.0
y←x
si y < 0 alors
y ← −y
fsi
afficher y
fin
9
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
y←x
Supposons maintenant que x = 5.0
y prend la valeur 5.0
si y < 0 alors
y ← −y
fsi
afficher y
fin
10
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons maintenant que x = 5.0
y←x
y prend la valeur 5.0
si y < 0 alors
y ← −y
y est positif donc le bloc n’est pas exécuté
fsi
afficher y
fin
11
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors
Exemple
Algorithme : valeurAbsolue
variable
réel x , y
début
saisir x
Supposons maintenant que x = 5.0
y←x
y prend la valeur 5.0
si y < 0 alors
y ← −y
y est positif donc le bloc n’est pas exécuté
fsi
afficher y
y garde donc la valeur 5.0
fin
12
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Dans l’instruction si condition alors bloc 1 sinon bloc 2, la condition est une expression
booléenne. Le bloc 1 est exécuté si la condition est vraie ; le bloc 2 est exécuté si la condition
est fausse.
13
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
y ← sqrt ( x )
afficher y
sinon
afficher "Valeur indéfinie"
fsi
fin
14
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
Supposons que x = 2.0
y ← sqrt ( x )
afficher y
sinon
afficher "Valeur indéfinie"
fsi
fin
15
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
Supposons que x = 2.0
x est positif donc le bloc alors est exécuté
y ← sqrt ( x )
afficher y
sinon
afficher "Valeur indéfinie"
fsi
fin
16
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
y ← sqrt ( x )
afficher y
Supposons que x = 2.0
x est positif donc le bloc alors est exécuté
y prend la valeur 1.414 . . .
sinon
afficher "Valeur indéfinie"
fsi
fin
17
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
Supposons maintenant que x = −1.0
y ← sqrt ( x )
afficher y
sinon
afficher "Valeur indéfinie"
fsi
fin
18
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
Supposons maintenant que x = −1.0
x est négatif donc le bloc sinon est exécuté
y ← sqrt ( x )
afficher y
sinon
afficher "Valeur indéfinie"
fsi
fin
19
Tests
Boucles
L’instruction conditionnelle
L’instruction si alors sinon
Exemple
Algorithme : racineCarrée
variable
réel x , y
début
saisir x
si x ≥ 0 alors
Supposons maintenant que x = −1.0
x est négatif donc le bloc sinon est exécuté
y ← sqrt ( x )
afficher y
sinon
afficher "Valeur indéfinie"
L’algorithme affiche Valeur indéfinie et aucune valeur n’est affectée à y
fsi
fin
20
Tests
Boucles
L’instruction conditionnelle
Test imbriqué
chaque sommet interne représente la condition d’un "si alors (sinon)".
chaque feuille représente un bloc d’instructions.
vrai
faux
Test 1
vrai
Inst. 1
Test 2
faux
Inst. 2
vrai
Inst. 3
Test 3
faux
Inst. 4
21
Tests
Boucles
L’instruction conditionnelle
Un algorithme Test Imbriqué
Algorithme : etateau
variable
réel T
début
saisir T
si T < 0 alors
afficher “solide”
sinon
si T < 100 alors
afficher “liquide”
sinon
afficher “gaz”
fsi
fsi
fin
22
Tests
Boucles
L’instruction conditionnelle
Un algorithme Test Imbriqué
Algorithme : etateau
variable
réel T
vrai
faux
T <0
début
saisir T
si T < 0 alors
afficher “solide”
sinon
si T < 100 alors
afficher “solide”
vrai
T < 100
faux
afficher “liquide”
sinon
afficher “gaz”
afficher “liquide”
afficher “gaz”
fsi
fsi
fin
23
Tests
Boucles
L’instruction conditionnelle
L’instruction selon (sélection sur choix multiples)
S’il y a plus de deux choix possibles, l’instruction selon permet une facilité d’écriture, le bloc
du cas correspondant est exécuté.
selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions
…
...
[autres : instructions]
24
Tests
Boucles
L’instruction conditionnelle
L’instruction selon (sélection sur choix multiples)
Exemple
Algorithme : Typepersonne
variable
chaine abreviation
debut
saisir abreviation
selon abreviation
"M"
: afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
Autres : afficher( " Monsieur, Madame " )
fin
25
Tests
Boucles
L’instruction conditionnelle
L’instruction selon (sélection sur choix multiples)
Exemple
Algorithme : Typepersonne
variable
chaine abreviation
debut
saisir abreviation
selon abreviation
"M"
Supposons que abreviation= M
: afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
Autres : afficher( " Monsieur, Madame " )
fin
26
Tests
Boucles
L’instruction conditionnelle
L’instruction selon (sélection sur choix multiples)
Exemple
Algorithme : Typepersonne
variable
chaine abreviation
debut
saisir abreviation
selon abreviation
"M"
Supposons que abreviation= M
: afficher( " Monsieur " )
le premier cas est traité
l’algorithme affiche "Monsieur"
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
Autres : afficher( " Monsieur, Madame " )
fin
27
Tests
Boucles
L’instruction conditionnelle
L’instruction selon (sélection sur choix multiples)
Exemple
Algorithme : Typepersonne
variable
chaine abreviation
debut
saisir abreviation
selon abreviation
"M"
Supposons maintenant que abreviation= Paren
: afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
Autres : afficher( " Monsieur, Madame " )
fin
28
Tests
Boucles
L’instruction conditionnelle
L’instruction selon (sélection sur choix multiples)
Exemple
Algorithme : Typepersonne
variable
chaine abreviation
debut
saisir abreviation
selon abreviation
"M"
Supposons maintenant que menu = 4
: afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
Autres : afficher( " Monsieur, Madame " )
le bloc par défaut est traité
fin
29
Tests
Boucles
L’instruction conditionnelle
Comparaison
Selon abréviation
"M"
: afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
Autres : afficher( " Monsieur, Madame " )
Comparer :
si abréviation = "M"
alors afficher( "Monsieur" )
sinon si abréviation = "Mme"
alors afficher("Madame")
sinon si abréviation = "Mlle"
alors afficher( "Mademoiselle" )
sinon afficher( "Monsieur,Madame " )
fsi
fsi
fsi
30
Tests
Boucles
L’instruction répétitive
L’instruction pour
L’instruction pour est utilisée pour répéter une suite d’instructions un certain nombre de fois
lorsque le nombre d’itérations est connu :
elle initialise un compteur
elle incrémente le compteur après chaque exécution du bloc d’instructions
elle vérifie que le compteur ne dépasse pas la borne supérieure
pour <var> ← valInit à valfin [par <pas>] faire
traitement
{suite d’instructions}
fpour
31
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
s←0
pour i ← 1 à n faire
s ← s +i
fpour
afficher s
fin
32
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
pour i ← 1 à n faire
s ← s +i
fpour
afficher s
fin
33
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
s←0
Supposons que n = 3
La somme s est initialisée à 0
pour i ← 1 à n faire
s ← s +i
fpour
afficher s
fin
34
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
Le compteur i est initialisé à 1
s ← s +i
fpour
afficher s
fin
35
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
Le compteur i est initialisé à 1
s ← s +i
La somme s prend la valeur 0 + 1 = 1
fpour
afficher s
fin
36
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
Le compteur i passe à la valeur 2
s ← s +i
fpour
afficher s
fin
37
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
Le compteur i passe à la valeur 2
s ← s +i
La somme s prend la valeur 1 + 2 = 3
fpour
afficher s
fin
38
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
Le compteur i passe à la valeur 3
s ← s +i
fpour
afficher s
fin
39
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons que n = 3
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
Le compteur i passe à la valeur 3
s ← s +i
La somme s prend la valeur 3 + 3 = 6
fpour
afficher s
fin
40
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
s←0
Supposons que n = 3
La somme s est initialisée à 0
pour i ← 1 à n faire
s ← s +i
fpour
afficher s
La somme finale est donc s = 6
fin
41
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons maintenant que n = 10
s←0
pour i ← 1 à n faire
s ← s +i
fpour
afficher s
fin
42
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
s←0
Supposons maintenant que n = 10
La somme s est initialisée à 0
pour i ← 1 à n faire
s ← s +i
fpour
afficher s
fin
43
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons maintenant que n = 10
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
La boucle est exécutée 10 fois
s ← s +i
fpour
afficher s
fin
44
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons maintenant que n = 10
s←0
La somme s est initialisée à 0
pour i ← 1 à n faire
La boucle est exécutée 10 fois
s ← s +i
La somme s prend la valeur 0 + 1 + ···+ 10
fpour
afficher s
fin
45
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:som1n
variable
entier n, s, i
début
saisir n
Supposons maintenant que n = 10
s← 0
La somme s est initialisée à 0
pour i ← 1 à n faire
La boucle est exécutée 10 fois
s ← s +i
fpour
afficher s
La somme s prend la valeur 0 + 1 + ···+ 10
La somme finale est donc s = 55
fin
46
Tests
Boucles
L’instruction répétitive
Autre Exemple de pour
Algorithme:FaitLeTotal
{Cet algorithme fait la somme des nbVal données qu'il saisit}
Variable
entier nbVal, cpt
réel valeur, totalValeurs
début
afficher("Combien de valeurs voulez-vous saisir ?")
saisir(nbVal)
totalValeurs ← 0
pour cpt ← 1 à nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs ← totalValeurs + valeur
fpour
afficher("Le total des :", nbVal, "valeurs est :" , totalValeurs)
fin
47
Tests
Boucles
L’instruction répétitive
L’instruction tant que
La boucle tant que est utilisée lorsque le nombre d’itérations n’est pas connu
à l’avance. Elle exécute le bloc d’instructions tant que la condition reste vraie.
amorçage
{initialisation de la (des) variable(s) de condition}
tant que <expression logique (vraie)> faire
traitement
{suite d’instructions}
Relance {ré-affectation de la (des) variable(s) de condition}
ftq
48
Tests
Boucles
L’instruction répétitive
Sémantique de la boucle tant que
49
Tests
Boucles
L’instruction répétitive
Exemple
Algorithme:cafeO_N
Variable
Caractère rep
Début
afficher " Voulez vous un café ? (O/N) "
Saisir rep
Tant que rep <> "O" et rep <> "N" faire
afficher "Vous devez répondre par O ou N. Recommencez "
saisir rep
Ftq
afficher " Saisie accepté "
Fin
50
Tests
Boucles
L’instruction répétitive
L’instruction répéter tant que
La boucle répéter tant que est utilisée lorsque le nombre d’itérations n’est pas
connu à l’avance, et qu’il faut lancer au moins une exécution du bloc
d’instructions. Elle exécute le bloc jusqu’à ce que la condition d’arrêt devienne
vraie.
répéter
(ré)affectation de la (des) variable(s) de condition
Traitement
{suite d’instructions}
tant que <expression logique (vraie)>
51
Tests
Boucles
L’instruction répétitive
Comparaison boucles répéter et tant que
répéter
afficher("Donnez une valeur positive :")
saisir(valeur)
tant que (valeur < 0 )
...équivaut à :
afficher("Donnez une valeur positive :")
saisir(valeur)
tant que (valeur < 0 ) faire
afficher("Donnez une valeur positive :")
saisir(valeur)
ftq
52
Tests
Boucles
L’instruction répétitive
Comparaisons
Boucle pour
La boucle
pour i ← x à y faire instruction fpour
exécute l’instruction exactement y − x + 1 fois.
Boucle tant que
La boucle
tant que condition faire instruction ftq
exécute l’instruction jusqu’à ce que la condition soit fausse. L’instruction peut donc être
exécutée zero fois si la condition est initialement fausse.
Instruction répéter tant que
La boucle
répéter instruction tant que condition
exécute l’instruction jusqu’à ce que la condition soit fausse. L’instruction est donc exécutée au
moins une fois.
53
Exemples
Exemples
Afficher le carré des valeurs saisies tant qu’on ne saisit pas 0
saisir(val)
tant que val ≠ 0 faire
afficher(val × val)
saisir(val)
ftq
54
Exemples
Exemples
Saisir des données et s'arrêter dès que leur somme dépasse 500
saisir(val)
somme ← val
tant que somme ≤ 500 faire
saisir(val)
somme ← somme + val
ftq
55
Conclusion: Quelques leçons à retenir
Le moule d'un algorithme
Algorithme AuNomEvocateur
{Cet algorithme fait..............en utilisant telle et telle donnée.........}
Constantes
Variables
Début
{préparation du traitement : saisies,....}
{traitements, si itération, la décrire }
{présentation des résultats: affichages,... }
Fin
• Il faut avoir une écriture rigoureuse
• Il faut avoir une écriture soignée : respecter l’indentation
• Il est nécessaire de commenter les algorithmes
• Il existe plusieurs solutions algorithmiques à un problème posé
• Il faut rechercher l’efficacité de ce que l’on écrit
56
FIN
57
Téléchargement