Chapitre 3

advertisement
Informatique I
1ere Année- MI -2013/2014
Université de Khenchela
Département d’Informatique
CHAPITRE III : Les Traitements répétitifs
Il arrive souvent dans un algorithme qu'une même action soit répétée plusieurs fois, avec
éventuellement quelques variantes dans les paramètres qui précisent le déroulement de l’action.
Exemple :
Le maximum de deux ou de trois variables est simple à résoudre« le nombre de test est
minimum 6 »,
Mais pour 4,5 …100 variables si le nombre de variables est égal à 100, on ne va pas
s’amuser à déclarer 100 variables ni à répéter les instructions si sinon au minimum 100*100 fois.
Il est alors fastidieux d'écrire un algorithme qui contient de nombreuses fois la même
instruction. De plus, ce nombre peut dépendre du déroulement de l'algorithme.
Il est alors impossible de savoir à l'avance combien de fois la même instruction doit être
décrite.
Pour gérer ces cas, on fait appel à des instructions en boucle qui ont pour effet de répéter
plusieurs fois une même instruction.
1. La boucle TantQue
Syntaxe
tantque
condition faire
instruction 1
instruction 2
...
Fintantque
Fonctionnement :
1. la condition est tout d'abord calculée,
2. si le calcul de la condition donne vrai, les instructions comprises entre tant que et fin tant
que sont exécutées,
3. puis l'exécution recommence au point 1,
4. la suite, s'il y en a une après fin tant que, est exécutée dès que le calcul de la condition
effectué au point 1 donne faux.
Remarques
 les variables qui apparaissent dans l'expression doivent donc toutes avoir une valeur
avant.
 Les instructions contenues dans l’instruction tant que peuvent ne jamais être exécutées,
si dès la première fois, l'expression booléenne a la valeur fausse.
 Il est obligatoire que la condition puisse être changée par les instructions, sinon notre
algorithme ne terminerait jamais.
Page | 1
Informatique I
1ere Année- MI -2013/2014
Université de Khenchela
Département d’Informatique
Exemple 1 : afficher la somme des 10 premiers nombres entiers positifs.
Algorithme exemple1
Variables I, somme : entier
Début
Initialisation du compteur
I1
Somme0
Condition à vérifier
Tantque I<=10 faire
Somme somme+I
Incrémentation du compteur
Ii+1
Fintantque
Ecrire (somme)
Fin.
Trace de l’algorithme
I<=10(condition) vrai vrai
vrai vrai vrai
vrai vrai
vrai
vrai
vrai
faux
I
1
2
3
4
5
6
7
8
9
10
11
somme
1
3
6
10
15
21
28
36
45
55
Le résultat : affichage sur écran la valeur de la variable somme=55
Exemple2 : Un professeur veut calculer la moyenne des notes des étudiants à un module, le
nombre d’étudiants est inconnu à l’avance : si le professeur veut calculer la moyenne des
notes des étudiants présents à un module , il n’a pas compté le nombre de présents avant de lancer
le programme et le programme doit continuer tant qu’il reste des copies. Dans ce cas on ne
peut même pas estimer le nombre de variables qu’on va utiliser.
Algorithme moyenne du module
Variables
NOTE : Réel
{note d'un étudiant}
NB : Entier
{nombre d'étudiants présents}
RESTE : Chaîne de caractères
{critère de continuation}
CUMUL : Réel
{cumul des notes des étudiants}
MOY : Réel
{moyenne du module}
Début
RESTE  "OUI"
CUMUL  0
NB  0
Tantque RESTE = "OUI" faire
Écrire ("Note de l'étudiant ?")
Lire(NOTE)
CUMUL  CUMUL + NOTE
NB  NB + 1
Écrire ("Reste-t-il des copies ?")
Lire (RESTE)
FinTantQue
MOY  CUMUL / NB
Écrire ("Moyenne du module = " ; MOY)
Fin.
Page | 2
Informatique I
1ere Année- MI -2013/2014
Université de Khenchela
Département d’Informatique
Trace de l'algorithme
Le professeur a des copies qu'il n'a pas comptées (notes respectives 12, 14, 10, 8 et 11)
RESTE : "Oui"
CUMUL : 0
NB : 0
Trace de l’algorithme
vrai vrai
vrai
Condition
vrai vrai
vérifiée
note
12
14
10
8
11
cumul
12
26
36
44
55
NB
1
2
3
4
reste
OUI OUI OUI OUI
Le résultat : affichage sur écran : Moyenne du module = 11
5
NON
2. La boucle Pour
L’instruction pour permet de répéter n fois un traitement ; elle permet de plus de faire évoluer une
variable (appelée "compteur"), en lui affectant pour chacune des exécutions une nouvelle valeur
(augmentée de 1 à chaque fois).
Syntaxe
Pour compteur de valeurdebut à valeurfin faire
instruction 1
instruction 2
...
Fin pour
Dont le fonctionnement est le suivant :
1. les instructions comprises entre pour et finpour sont exécutées une première fois, avec la
variable compteur valant valeurdebut
2. ces instructions sont réexécutées, avec la variable compteur valant valeurdebut+1
3. ...
4. les instructions sont exécutées une dernière fois, avec la variable compteur valant valeurfin
5. les instructions suivant la construction pour sont exécutées ensuite.
Remarque :
 on voit que la boucle pour ne nécessite pas d’incrémentation ni d’initialisation au
préalable.
 Les instructions sont exécutées autant de fois qu'il y a d'entiers entre valeurdebut et
valeurfin : c'est-à-dire en particulier 1 fois si valeurdebut=valeurfin, 0 fois si
valeurdebut>valeurfin.
 la variable compteur ne doit pas être modifié par les instructions contenues dans
l’instruction pour, sa valeur s’incrémente automatiquement.
Page | 3
Informatique I
1ere Année- MI -2013/2014
Université de Khenchela
Département d’Informatique
Exemple 3 : afficher la somme des 10 premiers nombres entiers positifs.
Algorithme exemple3
Variables I, somme : entier
Début
Somme0
Pour I de 1 à 10 faire
Somme somme+I
Fin pour
Ecrire (somme)
Fin.
3. La boucle Répéter
Syntaxe
Répéter
Instruction 1
Instruction 2
...
Jusqu’à
condition
Dont le fonctionnement est le suivant :
1. les instructions comprises entre répéter et jusqu'à sont exécutées
2. la condition est alors calculée,
3. si le calcul de la condition donne faux, l'exécution recommence au point 1; si le calcul de la
condition donne vrai, l'exécution continue avec la suite, s'il y en a une après jusqu'à.
Remarques
 Les instructions contenues dans l’instruction répéter sont toujours exécutées au moins une
fois.
 Il est obligatoire que la condition puisse être changée par les instructions, sinon notre
algorithme ne terminerait jamais. la condition d’une instruction répéter est aussi appelée «
condition d’arrêt ».
 Il est nécessaire qu'au moins une variable intervenant lors de l'évaluation de fin de
boucle soit sujette à modification à l'intérieur de la structure exécutive interne à la boucle.
Page | 4
Informatique I
1ere Année- MI -2013/2014
Université de Khenchela
Département d’Informatique
Exemple 4 : afficher la somme des 10 premiers nombres entiers positifs.
Algorithme exemple4
Variables I, somme : entier
Début
Somme0 i1
Répéter
Somme somme+I
II+1
Jusqu’à i>10
Ecrire (somme)
Fin.
4. L'imbrication des boucles
Comme les structures conditionnelles, les boucles peuvent être imbriquées. Cette partie n'apporte
pas de notion nouvelle mais permet de souligner certains aspects délicats.
Le morceau d'algorithme suivant permet simplement d'afficher 5 étoiles. Il n'y a pas d'imbrication
pour l'instant.
Pour i de 1 jusqu'à 5 Faire
Ecrire («*")
Finpour
* * * * * *
Si on inclut cette séquence à l'intérieur d'une boucle qui se répète 3 fois, on va effectuer 3 fois
l'affichage de 5 étoiles donc on va obtenir l'affichage de 15 étoiles.
Pour j de 1 jusqu'à 3 Faire
Pour i de 1 jusqu'à 5 Faire
Afficher "*"
Finpour
* * * * * * * * * * * * * * *
Finpour
Remarque TRES importante: Lorsque l'on imbrique des boucles, IL FAUT UTILISER DES
COMPTEURS DIFFERENTS pour chaque boucle.
Pour pouvoir afficher 3 lignes de 5 étoiles, au lieu de 15 étoiles à la suite, il suffit d'ajouter un
saut de ligne après le Pour le plus imbriqué.
*****
*****
*****
Exemple Pascal : For j := 1 to 3 do
begin
For i := 1 to 5 do
Write( "*" ) ;
Writeln ;
Page | 5
Informatique I
1ere Année- MI -2013/2014
Université de Khenchela
Département d’Informatique
End ;
La boucle la plus imbriquée s'exécute 5 fois alors que la "grande" boucle s'exécute seulement 3
fois. Le compteur i varie 5 fois plus vite que le compteur j.
Tous les types de boucles peuvent s'imbriquer entre eux. La seule règle à respecter est que
les boucles ne doivent pas se chevaucher: elles doivent s'emboîter. Si vous respectez bien la
règle des décalages, vous ne pouvez pas vous tromper.
Ok
TantQue a>b faire
Pour i de 1 à n faire
…..
Fin pour
FinTantQue
TantQue a>b faire
Pour i de 1 à n faire
…..
FinTantQue
Finpour
1. 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'à.
Exercice d’application N°1
Ecrire l’algorithme qui permet de calcule X à la puissance n ( x ,n entiers )
Exercice d’application
Ecrire l’algorithme qui affiche les 100 premiers entiers positifs
Exercice d’application N°3
Ecrire un algorithme qui permet de trouver les diviseurs d’un nombre entier positif.
Exercice d’application N°4
Ecrire un algorithme qui permet de tester si un nombre N est premier ou non.
Exercice d’application N°5
Ecrire un algorithme qui permet d’afficher les nombres premiers inferieur à 1000.
Exercice d’application N°6
Écrire un algorithme qui détermine si un entier N est parfait ou non. Un entier est dit parfait s’il
est égal à la somme de ses diviseurs. Exemple : 6=3+2+1. 28= 1+2+4+7+14
Exercice d’application N°7
Ecrire un algorithme qui renverse un nombre quelconque.
Exemple : reverser 52423 = 32425.
Page | 6
Téléchargement