User Tools

Site Tools


in204:tds:sujets:td1:part1

This is an old revision of the document!


Partie I – Création du compteur en C++

TD1

Question n° 0

Lancer votre environnement de développement préféré.

Question n°1

Créer un ensemble de fichier counter.cpp et conter.hpp pour définir votre classe de base « MyCounter ». Au départ, seul le fichier counter.hpp contient le code suivant :

struct MyCounter
{
    unsigned counter;
    unsigned max;
 
    unsigned getCounter() const {
      return counter;
    }
    unsigned getMax() const {
      return max;
    }
 
    void increment() {
      counter ++;
      if(counter > max)
        counter = 0;
    }
 
    void reset() {
      counter = 0;
    }
 
    void set(unsigned value) {
      counter = (value <= max) ? value : counter;
    }
 
    void setMax(unsigned value) {
       if(counter >= value)
         counter = 0;
         max = value;;
    }
};

Question n°2

Créer une fonction useObjectA() dans le fichier main.cpp reprenant le code présenté sur les transparents :

void useObjectA() {
    MyCounter Counter1;
    MyCounter Counter2;
    Counter1.setMax(2);
    Counter2.setMax(4);
    Counter1.reset();
    Counter2.reset();
    for(unsigned i = 0; i <= 5; i++) {
      std::cout 
	<< "Valeur des compteurs (" 	<< Counter1.counter 
	<< ", " << Counter2.counter 	<< ")" << std::endl;
        Counter1.increment();
        Counter2.increment();
    }
}

Question n°3

Vérifier que le code de useObjectA() fonctionne correctement.

Correction

Correction

Le fichier main.cpp doit corresponder au fichier suivant :

 

Question n°4

Le code des fonctions membres a été écrit directement dans la struct MyCounter.

Modifier le code pour séparer la déclaration des fonctions membres de leurs implantations.

Correction

Correction

Nous modifions les deux fichiers, le fichier counter.hpp et un fichier counter.cpp.

Le fichier counter.hpp contient le code suivant :

#ifndef CounterHPP
#define CounterHPP
 
struct MyCounter
{
    unsigned counter;
    unsigned max;
 
    unsigned getCounter();
    unsigned getMax();
    void increment();
 
    void reset();
    void set(unsigned value);
    void setMax(unsigned value);
};
 
#endif

Le fichier counter.cpp contient le code suivant.

#include"counter.hpp"
 
unsigned MyCounter::getCounter() const 
{
  return counter;
}
 
unsigned MyCounter::getMax() const 
{
  return max;
}
 
void MyCounter::increment()
{
  counter ++;
  if(counter > max)
    counter = 0;
}
 
void MyCounter::reset() 
{
  counter = 0;
}
 
void MyCounter::set(unsigned value) 
{
  counter = (value <= max) ? value : counter;
}
 
void MyCounter::setMax(unsigned value) 
{
   if(counter >= value)
     counter = 0;
     max = value;;
}
in204/tds/sujets/td1/part1.1569253962.txt.gz · Last modified: 2019/09/23 15:52 by bmonsuez