Le langage C++ Les boucles
Les boucles en C++ Pseudo-code C++ Tant que … Faire while Pour for Répéter … Jusqu'à do...while
Les boucles Tant que Tant que expression Faire Instructions FinTantque while (expression) Instruction; { Instruction1; Instruction2; }
Exemple 1 : afficher les n premiers nombres # include <iostream.h> using namespace std; int main (void) { int n, i=0 ; cout << " Saisir n : « << endl; cin >> n; while (i < n) cout<<i<<endl; i=i+1; } return 0;
Les boucles Pour Pour variable de debut à fin Faire Instructions FinTantque For(i=debut; i<fin; i=i+1) Instruction; { Instruction1; Instruction2; }
Exemple 2 : afficher les n premiers nombres # include <iostream.h> using namespace std; int main (void) { int n, i=0 ; cout << " Saisir n : « << endl; cin >> n; while (i < n) cout<<i<<endl; i=i+1; } return 0; for (i=0; i<n; i=i+1) { cout<<i<<endl; }
Exemple 2 : afficher les n premiers nombres # include <iostream.h> using namespace std; int main (void) { int n, i=0 ; cout << " Saisir n : « << endl; cin >> n; while (i < n) cout<<i<<endl; i=i+1; } return 0; for (i=0; i<n; i=i+1) { cout<<i<<endl; }
Exemple 2 : afficher les n premiers nombres # include <iostream.h> using namespace std; int main (void) { int n, i=0 ; cout << " Saisir n : « << endl; cin >> n; while (i < n) cout<<i<<endl; i=i+1; } return 0; for (i=0; i<n; i=i+1) { cout<<i<<endl; }
Exemple 2 : afficher les n premiers nombres # include <iostream.h> using namespace std; int main (void) { int n, i; cout << " Saisir n : « << endl; cin >> n; while (i < n) cout<<i<<endl; i=i+1; } return 0; for (i=0; i<n; i=i+1) { cout<<i<<endl; }
Les boucles Jusqu’à Répéter <instructions> Jusqu'à <expression> do instruction; while (expression); { instruction1; instruction2; }
Les boucles Jusqu’à Avantage par rapport au Tant que : La boucle est exécutée au moins une fois Peut être intéressant lorsque l’on valide une saisie : Demander un chiffre, jusqu’à ce qu’il soit compris entre 0 et 100…
Principe d’itération Une itération est une boucle dans laquelle la valeur d’une (ou plusieurs) variable dépend des valeurs au tour précédent Démarche itérative = cheminement d'un état initial à un état final recherché Le cheminement vers l'état recherché se fait en passant par des états intermédiaires Une boucle permet de progresser d'un état à un autre état, en se rapprochant de l'état final. Lorsque l'état final est atteint, la boucle doit s'arrêter BTS IRIS 1ère année Le langage C++
Principe d’itération C’est ici qu’on doit avoir le résultat dans une variable C’est ici qu’on réfléchit aux valeurs de départ Etat initial Etat final On quitte la boucle car la condition est atteinte On entre dans la boucle Etats intermédiaires On fait un calcul qui permet de faire avancer l’état du calcul : on doit se rapprocher de l’état final
Exemples : Calcul de la somme des 100 premiers entiers État final ? Que veut on? Comment on y arrive ? État initial ? On débute comment? États intermédiaires ? Que fait on pour se rapprocher de l’état final ?
Exemples : Calcul de la somme des 100 premiers entiers : État final ? On veut avoir une variable qui contient la somme des 100 premiers entiers (somme) On y arrive quand on aura fait 100 additions (cpt<100) État initial ? On a fait aucune somme, donc on initialise à 0 somme On a fait aucune addition, donc on initialise à 0 cpt États intermédiaires ? On ajoute à somme le nombre auquel on est rendu : somme=somme+cpt On incrémente le compteur (on a fait un tour de plus)
Exemples : Demander un nombre à l’utilisateur, tant que le nombre saisi est différent de 321 : État final ? Que veut on? Comment on y arrive ? État initial ? On débute comment? États intermédiaires ? Que fait on pour se rapprocher de l’état final ?
Exemples : Compter les nombres pairs sur 20 entiers saisis : État final ? On veut avoir une variable qui contient le nombre de nombres pairs (nbPaire) On y arrive quand on aura fait 20 tests (cpt<20) État initial ? On a rencontré aucun nombre pair, on initialise nbPaire à 0 On a fait aucune comparaison, donc on initialise à 0 cpt États intermédiaires ? On teste si le nombre courant est pair, si oui, on incrémente : if(cpt%2==0) nbPaire=nbPaire+1 ;
Exemples : Demander un nombre à l’utilisateur, tant que le nombre saisi est différent de 321 : État final ? Que veut on? Comment on y arrive ? État initial ? On débute comment? États intermédiaires ? Que fait on pour se rapprocher de l’état final ?
Exemples : Demander un nombre à l’utilisateur, tant que le nombre saisi est différent de 321 : État final ? Une variable qui contient le nombre saisi par l’utilisateur Quand le nombre saisi est égal à 321 (nombre==321) État initial ? On fait saisir le nombre par l’utilisateur (cin>>nombre). États intermédiaires ? On redemande le nombre à l’utilisateur…