Loading lang_cpp_tr_04...

enib_small.png LANG-CPP Tr_04 — Entraînement sur le chapitre 04_Struct

Créez sur votre poste de travail un répertoire de votre choix dans lequel vous placerez le fichier GNUmakefile qui servira à la fabrication de votre réalisation.
N'hésitez pas à consulter la documentation de référence de C++.
{1} Réalisation d'un type élaboré
Nous cherchons à réaliser une type élaboré qui assure un invariant simple sur les données dont il est constitué.
À titre de prétexte, nous réaliserons un type qui permette de calculer et fournir une moyenne glissante (rolling-mean) sur une série de valeurs réelles.
Il s'agit de calculer cette moyenne sur les n dernières valeurs d'une série (n étant choisi librement) ; cela peut s'avérer utile lorsqu'il s'agit de filtrer le bruit de mesures instantanées.
Il nous faut donc en permanence mémoriser ces n dernières valeurs ; à chaque fois qu'une nouvelle valeur est prise en compte elle remplace simplement la plus ancienne parmi celles qui étaient mémorisées jusqu'alors.
{1.1} Encapsulation et initialisation
{1.2} Fonctionnalités d'interaction
{2} Contrôle du déplacement et de la recopie
Nous cherchons maintenant à appliquer le procédé mis au point précédemment pour qu'un capteur fournisse une valeur lissée des données brutes auxquelles il accède.

Dans le cas présent, ces données seront simplement des valeurs réelles extraites d'un fichier.
Un tel fichier (nommé device_A sur cet exemple) pourra être généré de cette façon : $ python -c "import random; print('\n'.join(['%g'%(0.2*r+random.random()) for r in range(20)]))" >device_A
{2.1} Recopie non supportée
{2.2} Réalisation explicite de la recopie

Code source résultant