# plongee.ads

    --
    -- Cet acteur permet de connaitre les paliers a effectuer en fonction
    -- de la duree et de la profondeur de la plongee.
    --
    package Plongee is

       -- Ignorez cette ligne 'pragma' (qui, pour information, permet d'initialiser la table automatiquement)
       pragma Elaborate_Body ;

       -- Ce type represente une profondeur comptee par intervalles de 10 mètres.
       -- La profondeur max est donc de 60 mètres.
       subtype T_Profondeur is Integer range 0..6 ;

       -- Ce type represente une duree comptee par intervalles de 10 minutes.
       -- La duree max est donc de 360 minutes.
       subtype T_Duree is Integer range 0..36 ;

       -- Sequence des paliers a effectuer a la remontee.
       -- (Le plongeur commence bien sur par le palier le plus profond)
       -- Si un palier vaut 0, c'est qu'il est inutile.
       -- La durée d'un palier est en minutes.
       type T_Sequence is record
             Trois   : Natural ;
             Six     : Natural ;
             Neuf    : Natural ;
             Douze   : Natural ;
             Quinze  : Natural ;
       end record ;

       -- 'Definis' indique si la sequence de paliers est definie.
       -- Lorsque 'definis' est FAUX, c'est qu'il n'est pas autorise' de plonger
       -- a la profondeur indiquee pendant la duree indiquee.
       type T_Resultat is record
          Definis  : Boolean ;
          Sequence : T_Sequence ;
       end record ;

       -- La table des paliers contient les séquences de paliers à effectuer
       -- en fonction de la profondeur de plongée et de la durée de plongée.

       type T_Paliers is array (Integer range <>, Integer range <>) of T_Resultat ;

       Table : T_Paliers (T_Profondeur, T_Duree) ;

    end Plongee ;