Contrôle Machine

Les seuls documents papier autorisés sont vos notes de cours, de travaux dirigés et de travaux pratiques. Les documents électroniques autorisés sont les documents présents sur les machines de l'IUT et dont vous êtes l'unique auteur (ainsi que les éventuels documents de cours). En dehors de la machine qui vous est attribuée et de votre matériel de composition (crayons, stylos, feuilles de brouillon…), aucun matériel n'est autorisé.

La documentation de l'API Java doit être consultée uniquement en version locale.

Toutes les réponses devront prendre la forme de fichiers source en langage Java. Suivez scrupuleusement les instructions de ce sujet. Vos réponses doivent correspondre aux exemples d'exécution : soyez rigoureux !

Sauf indication contraire, vous pouvez supposer que les données fournies sur la ligne de commande ou l'entrée standard respectent les restrictions de l'énoncé et ne nécessitent donc pas de contrôle.

Créez un répertoire nommé DEV32. Faites-en votre répertoire courant et placez-y tous les fichiers que vous écrirez durant l'épreuve. Votre nom complet devra être mentionné au début de chaque fichier (en commentaire).

Effacez tous les fichiers temporaires et ne gardez que les fichiers d'extension .java (attention à ne pas effacer vos fichiers source !). Placez-vous ensuite dans le répertoire immédiatement au dessus de DEV32 et archivez votre travail, par exemple par la commande :

bob@box:~$ tar czvvf bob_dev32.tar.gz DEV32
Téléversez l'archive ainsi obtenue à cet endroit.

  1. Ordonné. (10 points) Un dictionnaire réalisé avec un arbre binaire de recherche peut être considéré comme un dictionnaire ordonné (SortedMap<K,V>). Cela nous donne des idées de fonctionnalités supplémentaires.

    Reprenez le dictionnaire que vous avez codé dans le deuxième exercice du second sujet sur les arbres. Ce n'est pas grave si vous n'avez pas réussi à coder les méthodes get et remove, car nous n'en aurons pas besoin. Ajoutez à votre réalisation des méthodes lastKey et size telles qu'elles sont décrites dans SortedMap<K,V>.

    Attention Pour que la question soit intéressante, ces méthodes doivent recalculer les valeurs renvoyées à chaque appel. Il est interdit de stocker des résultats intermédiaires dans des attributs supplémentaires.

  2. Tendance. (10 points) On reçoit périodiquement des données d'un capteur mais les mesures sont sujettes à fluctuation, ce qui les rend peu fiables. Pour compenser ce fait, on préfère consulter une moyenne prise sur dix mesures successives, ce qui réduit l'influence des fluctuations.

    Cette transformation est décrite sous la forme d'une interface définie dans le fichier Average.java :

    /**
     * Service qui surveille un flux de mesures pour produire une moyenne glissante.
     *
     * @version 1.0 02 February 2024
     * @author Luc Hernandez
     */
    public interface Average {
     
      /**
       * Renvoie la moyenne sur les dix dernières mesures.
       * 
       * @return la moyenne
       */
      double getAverage();
     
      /**
       * Ajoute une nouvelle mesure.
       * 
       * @param newData la nouvelle mesure
       */
      void addData(double newData);
     
    }

    Le travail demandé consiste à écrire une classe qui réalise cette interface. De plus, vous devrez prévoir un constructeur qui prend en argument un tableau de dix valeurs pour « amorcer la pompe ».

    Attention Les performances de cette classe sont importantes. Pour les garantir, on impose deux règles :

    • la méthode getAverage ne doit pas contenir de calcul pour éviter de refaire sans cesse la même chose,
    • la méthode addData, qui est donc chargée de recalculer la moyenne, ne doit pas parcourir les dix mesures précédentes pour y parvenir. Il est plus rapide de baser le calcul sur l'ancienne valeur de la moyenne.

    Justifiez en commentaire dans votre code le choix de la structure abstraite de données employée pour stocker les mesures (et le choix de la réalisation correspondante).

    Il est recommandé d'écrire un programme pour tester votre classe, mais ce programme ne rapporte pas de points dans cette question.

retour à la page d'accueil

retour au sommet