SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Programmation Orientée Objet en C++
 3ème Partie: Instructions de Contrôle d’Exécution



                  Fabio Hernandez
                Fabio.Hernandez@in2p3.fr
Vue d'Ensemble
   Notions de base
   Types, variables, opérateurs
   Contrôle d'exécution
   Fonctions
   Mémoire dynamique
   Qualité du logiciel
   Evolution du modèle objet
   Objets et classes
   Fonctions membres
   Classes génériques
   Héritage
   Polymorphisme
   Héritage multiple
   Entrée/sortie


POO en C++: Contrôle d’Exécution         78         © 1997-2003 Fabio HERNANDEZ
Table des Matières

   Instructions de Sélection (if, switch)
   Instructions d’Itération (while, for, do)
   Instruction de Rupture (break, continue)




POO en C++: Contrôle d’Exécution           79           © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: if

   Forme générale
           if (condition)
              instruction
           if (condition)          {
              instruction          1
              instruction          2
              ....
              instruction          n
           }




POO en C++: Contrôle d’Exécution       80     © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: if (suite)

   Forme générale (suite)
           if (condition)
              instruction 1
           else
              instruction 2

           if (condition)          {
              instruction          1
              ....
              instruction          n
           }
           else {
              instruction          1
              ....
              instruction          n
           }



POO en C++: Contrôle d’Exécution       81   © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: if (suite)

   Exemples
         une seule instruction
          if (temperature > 50.0)
            cout << "this is getting HOT..." << endl;
         plusieurs instructions
          if (temperature > 90.0) {
              threshold = temperature;
              cout << "WARNING: evacuation is inminent" << endl;
          }




POO en C++: Contrôle d’Exécution   82             © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: if (suite)
   La condition est une expression qui produit une valeur de faux (zéro) ou
   vraie(non zéro)
         Un entier ou un pointeur peuvent être utilisés comme conditions
         Exemple
          int count;
          if (count){
              // do something
          }
         est équivalent à
          if (count != 0) {
              // do something
          }
         De façon similaire pour les pointeurs
          int* aPointer;
          if (aPointer) // equivalent to if (aPointer != 0)
              // do something


POO en C++: Contrôle d’Exécution          83                    © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: if (suite)

   Rappel 1: les expressions comprenant des opérateurs logiques
   && (ET) et || (OU) sont évaluées de gauche à droite et
   uniquement le nombre de composants nécessaires pour
   déterminer la valeur de vérité de la condition sont évalués
   Rappel 2: on ne peut pas déréférencer un pointer nul
         On peut donc écrire
          int* aPointer;
          if (aPointer && (*aPointer > 100)) {
              // do something
          }
         Si aPointer == 0 la deuxième partie de la condition n’est pas
         évaluée



POO en C++: Contrôle d’Exécution      84                  © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: if (suite)

   Parfois
         un if simple comme
          if (a <= b)
               min = a;
          else
               min = b;
         peut être mieux exprimé par
          min = (a <= b) ? a : b;
         à utiliser uniquement pour des expressions simples
         autrement, le code peut devenir illisible




POO en C++: Contrôle d’Exécution        85                    © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: switch

   Une suite de if...else peut être écrite plus simplement à
   l’aide de l’instruction switch
         Exemple: déterminer le nombre d’occurrences des lettres ‘a’ et ‘e’
         dans un texte
         Avec if
          char letter;
          int aCounter=0;
          int eCounter=0;
          int other=0;
          ...
          if (letter == ‘a’)
             ++aCounter;
          else if (letter == ‘e’)
             ++eCounter;
          else
             ++other;

POO en C++: Contrôle d’Exécution        86                   © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: switch (suite)
         Avec switch
          switch (letter) {
             case ‘a’:
                ++aCounter;
                break;

                 case ‘e’:
                    ++eCounter;
                    break;

                 default:
                    ++other;
                    break;
           }



POO en C++: Contrôle d’Exécution   87   © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: switch (suite)
         Exemple: déterminer le nombre de voyelles dans un texte
          int vowelCounter = 0;
          int other = 0;
          switch (letter) {
             case ‘a’:
             case ‘e’:
             case ‘i’:
             case ‘o’:
             case ‘u’:
                ++vowelCounter;
                break;

                 default:
                    ++other;
                    break;
           }

POO en C++: Contrôle d’Exécution       88                 © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: switch (suite)

   Attention: chaque entrée case dans un switch doit être
   delimitée, autrement l’execution continue sequentiellement
         Exemple
          int value;
          ....
          switch (value) { // WARNING: no break
             case 1:
                 cout << "entering case 1" << endl;
             case 2:
                 cout << "entering case 2" << endl;
             default:
                 cout << "unknown value" << endl;
          }




POO en C++: Contrôle d’Exécution   89             © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: switch (suite)
         Si au moment d’executer le switch, la valeur de value est 1, le
         résultat est
               entering case 1
               entering case 2
               unknown value




POO en C++: Contrôle d’Exécution        90                  © 1997-2003 Fabio HERNANDEZ
Instructions de Sélection: switch (suite)
         Comparez contre
          int value;
          ....
          switch (value) {
             case 1:
                cout << "entering case 1" << endl;
                break;

                 case 2:
                    cout << "entering case 2" << endl;
                    break;

                 default:
                    cout << "unknown value" << endl;
                    break;
           }

POO en C++: Contrôle d’Exécution     91                © 1997-2003 Fabio HERNANDEZ
Contrôle d'Avancement

   Instructions de Sélection (if, switch)
   Instructions d’Itération (while, for, do)
   Instruction de Rupture (break, continue)




POO en C++: Contrôle d’Exécution      92             © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: while

   Forme générale
           while (condition)
              instruction
           while (condition) {
              instruction 1
              ...
              instruction n
           }
   Séquence d'exécution:
         evaluation de la condition
         exécution des instructions du corps si la condition est vraie
   Si la première évaluation de la condition donne faux, les
   instructions du corps ne sont jamais exécutées

POO en C++: Contrôle d’Exécution         93                   © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: while (suite)

   Etant donné:
           typedef float Temperature;
           const int NumRooms = 100;
           Temperature room[NumRooms];
   Exemple 1: donner une valeur initiale à toutes les positions du
   tableau room
         Solution 1:
          int roomNumber=0;
          const Temperature InitialTemp = 15.0;
          while (roomNumber < NumRooms) {
              room[roomNumber] = InitialTemp;
              roomNumber += 1;
          }



POO en C++: Contrôle d’Exécution   94              © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: while (suite)
         Solution 2
          while (roomNumber < NumRooms) {
              room[roomNumber] = InitialTemp;
              roomNumber++;
          }
         Solution 3
          while (roomNumber < NumRooms)
              room[roomNumber++] = InitialTemp;




POO en C++: Contrôle d’Exécution   95             © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: while (suite)

   Exemple 2: chercher les valeurs maximum et minimum dans le
   tableau room
           #include <float.h>
           int roomNumber=0;
           Temperature max = FLT_MIN;
           Temperature min = FLT_MAX;
           while (roomNumber < NumRooms) {
              if (room[roomNumber] > max)
                 max = room[roomNumber];
              else if (room[roomNumber] < min)
                 min = room[roomNumber];
              roomNumber++;
           }

POO en C++: Contrôle d’Exécution   96            © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: for

   Forme générale
           for (init-expresssion; condition; expression)
              instruction
           for (init-expresssion; condition; expression) {
              instruction 1
              ...
              instruction n
           }
   init-expression est executé une fois avant de commencer
   la boucle
   si l’évaluation de condition est vraie le corps du for est
   exécuté
   expression est executé à chaque itération, après le corps

POO en C++: Contrôle d’Exécution    97            © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: for (suite)

   La condition doit être évaluée vrai après l’exécution de init-
   expression pour que la boucle soit exécutée au moins une fois
   Exemples: etant donné:
           typedef float Temperature;
           const int NumRooms = 100;
           Temperature room[NumRooms];
   Exemple 1: donner une valeur initiale à toutes les positions du
   tableau room
         Solution 1:
          int roomNumber;
          const Temperature InitialTemp = 15.0;
          for (roomNumber=0; roomNumber < NumRooms; ++roomNumber)
              room[roomNumber] = InitialTemp;


POO en C++: Contrôle d’Exécution   98              © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: for (suite)

   Exemple 2: chercher les valeurs maximum et minimum dans le
   tableau room
         Solution 1
          #include <float.h>
          int roomNumber;
          Temperature max = FLT_MIN;
          Temperature min = FLT_MAX;
          for(roomNumber=0; roomNumber < NumRooms; ++roomNumber){
              if (room[roomNumber] > max)
                  max = room[roomNumber];
              else if (room[roomNumber] < min)
                  min = room[roomNumber];
          }

POO en C++: Contrôle d’Exécution   99            © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: for (suite)

   Une boucle sans fin peut être écrite
           for (;;) {
              // do something forever
           }
   init-expression et expression peuvent être composées de
   plusieurs instructions, comme dans...
           for (i=0, j=100; array[i] < max; i++, j--)
   ...ou peuvent ne pas exister
           int i=0;
           int j=100;
           for (; array[i] < max; i++, j--) // null init-expression




POO en C++: Contrôle d’Exécution   100            © 1997-2003 Fabio HERNANDEZ
Instructions d’Itération: do

   Forme générale
           do {
              instruction 1
              ...
              instruction n
           } while (condition);
   La condition est évaluée après l’exécution du corps
   La boucle est donc exécutée au moins une fois




POO en C++: Contrôle d’Exécution    101           © 1997-2003 Fabio HERNANDEZ
Contrôle d'Avancement

   Instructions de Sélection (if, switch)
   Instructions d’Itération (while, for, do)
   Instruction de Rupture (break, continue)




POO en C++: Contrôle d’Exécution      102            © 1997-2003 Fabio HERNANDEZ
Instructions de Rupture: break

   Termine l’exécution du for, while, do ou switch le plus interne
         L’exécution reprend immediatement après le bloc terminé
   Exemple: déterminer l’occurrence d’une valeur particulière dans
   un tableau; si trouvé écrire sa position
           const int ArraySize = 200;
           int array[ArraySize];
           const int Target = 3456;
           int i;
           .....
           for (i=0; i < ArraySize; i++)
              if (array[i] == Target)             Rupture
                 break;                       d'exécution de la
           if (i == ArraySize)                     boucle
              cout << "Not found" << endl;
           else
              cout << "Target found at position " << i << endl;

POO en C++: Contrôle d’Exécution      103                 © 1997-2003 Fabio HERNANDEZ
Instructions de Rupture: continue

   Termine l’exécution de l’itération courante du for, while ou
   do le plus interne
   Dans le cas du while et do, l’exécution reprend avec
   l’évaluation de la condition
   Dans le cas du for, l’exécution reprend avec l’exécution de
   expression




POO en C++: Contrôle d’Exécution   104           © 1997-2003 Fabio HERNANDEZ
Instructions de Rupture: continue (suite)

   Exemple: modifier toutes les positions d’un tableau si sa valeur
   se trouve dans un intervalle donné
           const int ArraySize = 200;
           int array[ArraySize];
           const int Start = 5000;
           const int End = 10000;
           .....
           for (int i=0; i < ArraySize; i++) {
              // Do we need to modify this value?
              if ((array[i] < Start) || (array[i] > End))
                 continue; // nothing to do with this position

                 // modify this position
                 array[i] /= 2;
           }

POO en C++: Contrôle d’Exécution     105          © 1997-2003 Fabio HERNANDEZ
Contrôle d'Avancement

   Instructions de Sélection (if, switch)
   Instructions d’Itération (while, for, do)
   Instruction de Rupture (break, continue)




POO en C++: Contrôle d’Exécution      106            © 1997-2003 Fabio HERNANDEZ

Mais conteúdo relacionado

Mais procurados

Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++Fabio Hernandez
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Fabio Hernandez
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Fabio Hernandez
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++Fabio Hernandez
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieLoic Yon
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelThierry Gayet
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementborhen boukthir
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage CAbdoulaye Dieng
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryneuros
 

Mais procurados (20)

Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
C4 fonctions
C4 fonctionsC4 fonctions
C4 fonctions
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Formation python
Formation pythonFormation python
Formation python
 
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Ch07
Ch07Ch07
Ch07
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appel
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrement
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage C
 
Generalites
GeneralitesGeneralites
Generalites
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 

Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++

  • 1. Programmation Orientée Objet en C++ 3ème Partie: Instructions de Contrôle d’Exécution Fabio Hernandez Fabio.Hernandez@in2p3.fr
  • 2. Vue d'Ensemble Notions de base Types, variables, opérateurs Contrôle d'exécution Fonctions Mémoire dynamique Qualité du logiciel Evolution du modèle objet Objets et classes Fonctions membres Classes génériques Héritage Polymorphisme Héritage multiple Entrée/sortie POO en C++: Contrôle d’Exécution 78 © 1997-2003 Fabio HERNANDEZ
  • 3. Table des Matières Instructions de Sélection (if, switch) Instructions d’Itération (while, for, do) Instruction de Rupture (break, continue) POO en C++: Contrôle d’Exécution 79 © 1997-2003 Fabio HERNANDEZ
  • 4. Instructions de Sélection: if Forme générale if (condition) instruction if (condition) { instruction 1 instruction 2 .... instruction n } POO en C++: Contrôle d’Exécution 80 © 1997-2003 Fabio HERNANDEZ
  • 5. Instructions de Sélection: if (suite) Forme générale (suite) if (condition) instruction 1 else instruction 2 if (condition) { instruction 1 .... instruction n } else { instruction 1 .... instruction n } POO en C++: Contrôle d’Exécution 81 © 1997-2003 Fabio HERNANDEZ
  • 6. Instructions de Sélection: if (suite) Exemples une seule instruction if (temperature > 50.0) cout << "this is getting HOT..." << endl; plusieurs instructions if (temperature > 90.0) { threshold = temperature; cout << "WARNING: evacuation is inminent" << endl; } POO en C++: Contrôle d’Exécution 82 © 1997-2003 Fabio HERNANDEZ
  • 7. Instructions de Sélection: if (suite) La condition est une expression qui produit une valeur de faux (zéro) ou vraie(non zéro) Un entier ou un pointeur peuvent être utilisés comme conditions Exemple int count; if (count){ // do something } est équivalent à if (count != 0) { // do something } De façon similaire pour les pointeurs int* aPointer; if (aPointer) // equivalent to if (aPointer != 0) // do something POO en C++: Contrôle d’Exécution 83 © 1997-2003 Fabio HERNANDEZ
  • 8. Instructions de Sélection: if (suite) Rappel 1: les expressions comprenant des opérateurs logiques && (ET) et || (OU) sont évaluées de gauche à droite et uniquement le nombre de composants nécessaires pour déterminer la valeur de vérité de la condition sont évalués Rappel 2: on ne peut pas déréférencer un pointer nul On peut donc écrire int* aPointer; if (aPointer && (*aPointer > 100)) { // do something } Si aPointer == 0 la deuxième partie de la condition n’est pas évaluée POO en C++: Contrôle d’Exécution 84 © 1997-2003 Fabio HERNANDEZ
  • 9. Instructions de Sélection: if (suite) Parfois un if simple comme if (a <= b) min = a; else min = b; peut être mieux exprimé par min = (a <= b) ? a : b; à utiliser uniquement pour des expressions simples autrement, le code peut devenir illisible POO en C++: Contrôle d’Exécution 85 © 1997-2003 Fabio HERNANDEZ
  • 10. Instructions de Sélection: switch Une suite de if...else peut être écrite plus simplement à l’aide de l’instruction switch Exemple: déterminer le nombre d’occurrences des lettres ‘a’ et ‘e’ dans un texte Avec if char letter; int aCounter=0; int eCounter=0; int other=0; ... if (letter == ‘a’) ++aCounter; else if (letter == ‘e’) ++eCounter; else ++other; POO en C++: Contrôle d’Exécution 86 © 1997-2003 Fabio HERNANDEZ
  • 11. Instructions de Sélection: switch (suite) Avec switch switch (letter) { case ‘a’: ++aCounter; break; case ‘e’: ++eCounter; break; default: ++other; break; } POO en C++: Contrôle d’Exécution 87 © 1997-2003 Fabio HERNANDEZ
  • 12. Instructions de Sélection: switch (suite) Exemple: déterminer le nombre de voyelles dans un texte int vowelCounter = 0; int other = 0; switch (letter) { case ‘a’: case ‘e’: case ‘i’: case ‘o’: case ‘u’: ++vowelCounter; break; default: ++other; break; } POO en C++: Contrôle d’Exécution 88 © 1997-2003 Fabio HERNANDEZ
  • 13. Instructions de Sélection: switch (suite) Attention: chaque entrée case dans un switch doit être delimitée, autrement l’execution continue sequentiellement Exemple int value; .... switch (value) { // WARNING: no break case 1: cout << "entering case 1" << endl; case 2: cout << "entering case 2" << endl; default: cout << "unknown value" << endl; } POO en C++: Contrôle d’Exécution 89 © 1997-2003 Fabio HERNANDEZ
  • 14. Instructions de Sélection: switch (suite) Si au moment d’executer le switch, la valeur de value est 1, le résultat est entering case 1 entering case 2 unknown value POO en C++: Contrôle d’Exécution 90 © 1997-2003 Fabio HERNANDEZ
  • 15. Instructions de Sélection: switch (suite) Comparez contre int value; .... switch (value) { case 1: cout << "entering case 1" << endl; break; case 2: cout << "entering case 2" << endl; break; default: cout << "unknown value" << endl; break; } POO en C++: Contrôle d’Exécution 91 © 1997-2003 Fabio HERNANDEZ
  • 16. Contrôle d'Avancement Instructions de Sélection (if, switch) Instructions d’Itération (while, for, do) Instruction de Rupture (break, continue) POO en C++: Contrôle d’Exécution 92 © 1997-2003 Fabio HERNANDEZ
  • 17. Instructions d’Itération: while Forme générale while (condition) instruction while (condition) { instruction 1 ... instruction n } Séquence d'exécution: evaluation de la condition exécution des instructions du corps si la condition est vraie Si la première évaluation de la condition donne faux, les instructions du corps ne sont jamais exécutées POO en C++: Contrôle d’Exécution 93 © 1997-2003 Fabio HERNANDEZ
  • 18. Instructions d’Itération: while (suite) Etant donné: typedef float Temperature; const int NumRooms = 100; Temperature room[NumRooms]; Exemple 1: donner une valeur initiale à toutes les positions du tableau room Solution 1: int roomNumber=0; const Temperature InitialTemp = 15.0; while (roomNumber < NumRooms) { room[roomNumber] = InitialTemp; roomNumber += 1; } POO en C++: Contrôle d’Exécution 94 © 1997-2003 Fabio HERNANDEZ
  • 19. Instructions d’Itération: while (suite) Solution 2 while (roomNumber < NumRooms) { room[roomNumber] = InitialTemp; roomNumber++; } Solution 3 while (roomNumber < NumRooms) room[roomNumber++] = InitialTemp; POO en C++: Contrôle d’Exécution 95 © 1997-2003 Fabio HERNANDEZ
  • 20. Instructions d’Itération: while (suite) Exemple 2: chercher les valeurs maximum et minimum dans le tableau room #include <float.h> int roomNumber=0; Temperature max = FLT_MIN; Temperature min = FLT_MAX; while (roomNumber < NumRooms) { if (room[roomNumber] > max) max = room[roomNumber]; else if (room[roomNumber] < min) min = room[roomNumber]; roomNumber++; } POO en C++: Contrôle d’Exécution 96 © 1997-2003 Fabio HERNANDEZ
  • 21. Instructions d’Itération: for Forme générale for (init-expresssion; condition; expression) instruction for (init-expresssion; condition; expression) { instruction 1 ... instruction n } init-expression est executé une fois avant de commencer la boucle si l’évaluation de condition est vraie le corps du for est exécuté expression est executé à chaque itération, après le corps POO en C++: Contrôle d’Exécution 97 © 1997-2003 Fabio HERNANDEZ
  • 22. Instructions d’Itération: for (suite) La condition doit être évaluée vrai après l’exécution de init- expression pour que la boucle soit exécutée au moins une fois Exemples: etant donné: typedef float Temperature; const int NumRooms = 100; Temperature room[NumRooms]; Exemple 1: donner une valeur initiale à toutes les positions du tableau room Solution 1: int roomNumber; const Temperature InitialTemp = 15.0; for (roomNumber=0; roomNumber < NumRooms; ++roomNumber) room[roomNumber] = InitialTemp; POO en C++: Contrôle d’Exécution 98 © 1997-2003 Fabio HERNANDEZ
  • 23. Instructions d’Itération: for (suite) Exemple 2: chercher les valeurs maximum et minimum dans le tableau room Solution 1 #include <float.h> int roomNumber; Temperature max = FLT_MIN; Temperature min = FLT_MAX; for(roomNumber=0; roomNumber < NumRooms; ++roomNumber){ if (room[roomNumber] > max) max = room[roomNumber]; else if (room[roomNumber] < min) min = room[roomNumber]; } POO en C++: Contrôle d’Exécution 99 © 1997-2003 Fabio HERNANDEZ
  • 24. Instructions d’Itération: for (suite) Une boucle sans fin peut être écrite for (;;) { // do something forever } init-expression et expression peuvent être composées de plusieurs instructions, comme dans... for (i=0, j=100; array[i] < max; i++, j--) ...ou peuvent ne pas exister int i=0; int j=100; for (; array[i] < max; i++, j--) // null init-expression POO en C++: Contrôle d’Exécution 100 © 1997-2003 Fabio HERNANDEZ
  • 25. Instructions d’Itération: do Forme générale do { instruction 1 ... instruction n } while (condition); La condition est évaluée après l’exécution du corps La boucle est donc exécutée au moins une fois POO en C++: Contrôle d’Exécution 101 © 1997-2003 Fabio HERNANDEZ
  • 26. Contrôle d'Avancement Instructions de Sélection (if, switch) Instructions d’Itération (while, for, do) Instruction de Rupture (break, continue) POO en C++: Contrôle d’Exécution 102 © 1997-2003 Fabio HERNANDEZ
  • 27. Instructions de Rupture: break Termine l’exécution du for, while, do ou switch le plus interne L’exécution reprend immediatement après le bloc terminé Exemple: déterminer l’occurrence d’une valeur particulière dans un tableau; si trouvé écrire sa position const int ArraySize = 200; int array[ArraySize]; const int Target = 3456; int i; ..... for (i=0; i < ArraySize; i++) if (array[i] == Target) Rupture break; d'exécution de la if (i == ArraySize) boucle cout << "Not found" << endl; else cout << "Target found at position " << i << endl; POO en C++: Contrôle d’Exécution 103 © 1997-2003 Fabio HERNANDEZ
  • 28. Instructions de Rupture: continue Termine l’exécution de l’itération courante du for, while ou do le plus interne Dans le cas du while et do, l’exécution reprend avec l’évaluation de la condition Dans le cas du for, l’exécution reprend avec l’exécution de expression POO en C++: Contrôle d’Exécution 104 © 1997-2003 Fabio HERNANDEZ
  • 29. Instructions de Rupture: continue (suite) Exemple: modifier toutes les positions d’un tableau si sa valeur se trouve dans un intervalle donné const int ArraySize = 200; int array[ArraySize]; const int Start = 5000; const int End = 10000; ..... for (int i=0; i < ArraySize; i++) { // Do we need to modify this value? if ((array[i] < Start) || (array[i] > End)) continue; // nothing to do with this position // modify this position array[i] /= 2; } POO en C++: Contrôle d’Exécution 105 © 1997-2003 Fabio HERNANDEZ
  • 30. Contrôle d'Avancement Instructions de Sélection (if, switch) Instructions d’Itération (while, for, do) Instruction de Rupture (break, continue) POO en C++: Contrôle d’Exécution 106 © 1997-2003 Fabio HERNANDEZ