Le traitement ittératif : Les boucles
L’intérêt qu'offre un ordinateur réside dans la possibilité de lui faire répéter autant de fois qu'on veut une même suite d'instructions , à l'aide d'un petit nombre d'ordres , qu'on appelle les boucles .
Exemple
Si nous voulons élever au carré 4 nombres entiers , on pensera au départ à l'algoithme suivant :
Algorithme Carré
Var a1, a2, a3, a4, c1, c2, c3, c4 : entier
Début
Lire(a1); c1←a1xa1 ;
Ecrire(c1);
Lire(a2); c2←a2xa2 ;
Ecrire(c2);
Lire(a3); c3←a3xa3 ;
Ecrire(c3);
Lire(a4); c4←a4xa4 ;
Ecrire(c4);
Fin
Il est clair que si nous avions à déterminer le carré de 100 nombres , cette méthode serait laborieuse . Il sera nécéssaire de déclarer 100 variables et de répéter 100 fois le calcul du carré , ce qui est trop long !
Heureusement il éxiste les boucles !
On dispose de 3 structures différentes pour contrôer un traitrement répétitif (ittératif) :
1. La boucle Tanque :
1.1 Syntaxe :
<initialisation>
Tantque <condition> faire
<Séquence>
.......
<Agir_sur_condition>
Fait
1.2 Eléments de la boucle Tanque :
<initialisation> : est une instruction qui permet de donner la première valeur à <condition>
<Agir_sur_condition> : est aussi une instruction qui permet de changer la valeur de la condition à un moment donné pour pouvoir arrêter le traitement , celà afin d'éviter de boucler indéfiniment ( boucle infini ) .
1.3 Principe :
Tant que la condition est vérifié , <Séquence_d'instruction> s’exécute , elle ne s’arrêtera que lorsque la condition n'est pas vérifié .
N.B. si condition n'est pas vérifié dès le début , on passe directement après Fait à la suite des instructions de l'algorithme .
1.4 Exemples :
Exemple 1 : Afficher les 100 premiers nombres entiers
i←1; "initialisation du compteur"
Tanque (i<=100) Faire
Ecrire ( i ) ; "Affichage"
i←i+1 ; "incrémentation du compteur"
Fait ;
Exemple 2 : Algorithme qui permet d'afficher les nombres négatifs
Var Boul : Bouléen ; " Une variable de type bouléen peut prendre deux valeurs sois Vrai sois Faux "
N : entier ;
Boul←Vrai ;
Tantque ( Boul=Vrai) Faire
Lire N ;
Si (N<0) Alors
Ecrire N ;
Sinon Boul← Faux ; "condition d'arrêt"
FSi ;
Fait ;
"Ici on a pas déterminé le nombre d'itérations (On a pas mis de compteur) , on sortira de la boucle dès que l'utilisateur entrera une valeur négative "
2. La boucle POUR :
2.1 Syntaxe :
POUR <compteur> := <valeur_initiale> à <valeur_finale> faire
<Séquence_d'instructions>
.......
Fait ;
2.2 Principe :
POUR <compteur> allant de <valeur_initiale> à <valeur_finale> faire éxécuter <Séquence_d'instructions> .
2.3 Exemples :
Exemple 1 :
POUR i:=1 à 100 Faire
Ecrire ( i );
Fait;
" Pas besoin d'incrémenter le compteur de la boucle POUR , ce dernier est incrémenté automatiquement , c'est l'avantage qu'offre la boucle POUR , mais la boucle POUR exécute toutes les itérations et n'a pas de condition d'arrêt , contrairement à la boucle Tantque qui peut s'arrêter dès qu'on a obtenu le résultat voulu , n'empêche qu'on peut régler ce problème en d'affectant la dernière valeur du compteur de la boucle POUR dès qu'on a obtenu le résultat voulu , ne vous inquiétez pas vous allez comprendre dans les exercices "
3. La boucle Répéter :
3.1 Syntaxe :
Répéter
<Séquence_d'instructions>
jusqu'à <condition_vérifié>
Fait
3.2 Principe :
Répéter l’exécution de la séquence jusqu'à ce que la condition ne soit plus vérifiée
N.B Contrairement à la boucle "Tantque" la boucle Répéter s'exécute au moins une fois , même si la condition n'est pas vérifié dès le début .
3.3 Exemples :
Exemple 1 : Répéter à l'utilisateur d'entrer une valeur jusqu'à ce qu'il rentre une valeur positive
Répéter
Lire X ;
jusqu'à (X>0)
Exemple 2 : Afficher les 100 premiers nombres positifs
i←1
Répéter
Ecrire ( i );
i←i+1 ; "Incrémentation"
Jusqu'à (i>100); "La condition d'arrêt"9+
Exemple
Si nous voulons élever au carré 4 nombres entiers , on pensera au départ à l'algoithme suivant :
Algorithme Carré
Var a1, a2, a3, a4, c1, c2, c3, c4 : entier
Début
Lire(a1); c1←a1xa1 ;
Ecrire(c1);
Lire(a2); c2←a2xa2 ;
Ecrire(c2);
Lire(a3); c3←a3xa3 ;
Ecrire(c3);
Lire(a4); c4←a4xa4 ;
Ecrire(c4);
Fin
Il est clair que si nous avions à déterminer le carré de 100 nombres , cette méthode serait laborieuse . Il sera nécéssaire de déclarer 100 variables et de répéter 100 fois le calcul du carré , ce qui est trop long !
Heureusement il éxiste les boucles !
On dispose de 3 structures différentes pour contrôer un traitrement répétitif (ittératif) :
- La boucle "Tantque"
- La boucle "POUR"
- La boucle "Répéter"
1. La boucle Tanque :
1.1 Syntaxe :
<initialisation>
Tantque <condition> faire
<Séquence>
.......
<Agir_sur_condition>
Fait
1.2 Eléments de la boucle Tanque :
<initialisation> : est une instruction qui permet de donner la première valeur à <condition>
<Agir_sur_condition> : est aussi une instruction qui permet de changer la valeur de la condition à un moment donné pour pouvoir arrêter le traitement , celà afin d'éviter de boucler indéfiniment ( boucle infini ) .
1.3 Principe :
Tant que la condition est vérifié , <Séquence_d'instruction> s’exécute , elle ne s’arrêtera que lorsque la condition n'est pas vérifié .
N.B. si condition n'est pas vérifié dès le début , on passe directement après Fait à la suite des instructions de l'algorithme .
1.4 Exemples :
Exemple 1 : Afficher les 100 premiers nombres entiers
i←1; "initialisation du compteur"
Tanque (i<=100) Faire
Ecrire ( i ) ; "Affichage"
i←i+1 ; "incrémentation du compteur"
Fait ;
Exemple 2 : Algorithme qui permet d'afficher les nombres négatifs
Var Boul : Bouléen ; " Une variable de type bouléen peut prendre deux valeurs sois Vrai sois Faux "
N : entier ;
Boul←Vrai ;
Tantque ( Boul=Vrai) Faire
Lire N ;
Si (N<0) Alors
Ecrire N ;
Sinon Boul← Faux ; "condition d'arrêt"
FSi ;
Fait ;
"Ici on a pas déterminé le nombre d'itérations (On a pas mis de compteur) , on sortira de la boucle dès que l'utilisateur entrera une valeur négative "
2. La boucle POUR :
2.1 Syntaxe :
POUR <compteur> := <valeur_initiale> à <valeur_finale> faire
<Séquence_d'instructions>
.......
Fait ;
2.2 Principe :
POUR <compteur> allant de <valeur_initiale> à <valeur_finale> faire éxécuter <Séquence_d'instructions> .
2.3 Exemples :
Exemple 1 :
POUR i:=1 à 100 Faire
Ecrire ( i );
Fait;
" Pas besoin d'incrémenter le compteur de la boucle POUR , ce dernier est incrémenté automatiquement , c'est l'avantage qu'offre la boucle POUR , mais la boucle POUR exécute toutes les itérations et n'a pas de condition d'arrêt , contrairement à la boucle Tantque qui peut s'arrêter dès qu'on a obtenu le résultat voulu , n'empêche qu'on peut régler ce problème en d'affectant la dernière valeur du compteur de la boucle POUR dès qu'on a obtenu le résultat voulu , ne vous inquiétez pas vous allez comprendre dans les exercices "
3. La boucle Répéter :
3.1 Syntaxe :
Répéter
<Séquence_d'instructions>
jusqu'à <condition_vérifié>
Fait
3.2 Principe :
Répéter l’exécution de la séquence jusqu'à ce que la condition ne soit plus vérifiée
N.B Contrairement à la boucle "Tantque" la boucle Répéter s'exécute au moins une fois , même si la condition n'est pas vérifié dès le début .
3.3 Exemples :
Exemple 1 : Répéter à l'utilisateur d'entrer une valeur jusqu'à ce qu'il rentre une valeur positive
Répéter
Lire X ;
jusqu'à (X>0)
Exemple 2 : Afficher les 100 premiers nombres positifs
i←1
Répéter
Ecrire ( i );
i←i+1 ; "Incrémentation"
Jusqu'à (i>100); "La condition d'arrêt"9+