Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
780 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  [ADA]Définir un sous-type avec des bornes spéciales

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ADA]Définir un sous-type avec des bornes spéciales

n°614735
Katkiller
Posté le 18-01-2004 à 11:09:27  profilanswer
 

Salut les gens,
 
j'ai cette procédure en ada (jusque la tout va bien...).
Ma question est la suivante: Peut-on définir les bornes d'un sous-type (ici "Tirage" ) avec les paramètres d'appels de la fonction. Si oui, avec quelle ruse de guerre ? ( ou un indice...)
 
      procedure Test_Random (
            Borne_Inf : Integer := 0;  
            Borne_Sup : Integer := 1  ) is  
         type Tirage is range Borne_Inf .. Borne_Sup;  
         package Aleatoire is new Ada.Numerics.Discrete_Random (Tirage);
         use Aleatoire;    -- Rend Generator, Reset et Random visibles
         T : Tirage;  
         G : Generator;  
      begin
         Reset (G);
-- Initialise le générateur (à faire une seule fois)
         for I in 1..30 loop
            T:= Random (G);
-- Tire un nombre au hasard entre borne_inf et borne_sup
            Put(Integer(T));
         end loop;
      end Test_Random;
 
Merci d'avance

mood
Publicité
Posté le 18-01-2004 à 11:09:27  profilanswer
 

n°615078
nraynaud
lol
Posté le 18-01-2004 à 22:15:48  profilanswer
 

non, on ne peut pas, les bornes des types doivent être entièrement connus à la compilation.
 
Dans ton cas c'est mort.
 
par contre, tu peux faire un truc générique, mais il faudra l'instancier avant de l'utiliser.

Code :
  1. generic
  2.   Borne_Inf is Integer ;
  3.   Borne_sup is Integer;
  4. procedure Test_Random () is 
  5.          type Tirage is range Borne_Inf .. Borne_Sup; 
  6.          package Aleatoire is new Ada.Numerics.Discrete_Random (Tirage);
  7.          use Aleatoire;    -- Rend Generator, Reset et Random visibles
  8.          T : Tirage; 
  9.          G : Generator; 
  10.       begin
  11.          Reset (G);
  12. -- Initialise le générateur (à faire une seule fois)
  13.          for I in 1..30 loop
  14.             T:= Random (G);
  15. -- Tire un nombre au hasard entre borne_inf et borne_sup
  16.             Put(Integer(T));
  17.          end loop;
  18.       end Test_Random;


utilisation :  
 

Code :
  1. procedure Random_10_20 is new Test_Random(Borne_Inf=>10, Borne_Sup=>20);


Mais ce n'est pas exactement ce que tu voudrais faire.


---------------
trainoo.com, c'est fini
n°617940
BifaceMcLe​OD
The HighGlandeur
Posté le 21-01-2004 à 15:17:30  profilanswer
 

Si je comprends bien, Katkiller voudrait pouvoir définir un invariant, c'est ça ?

n°618313
nraynaud
lol
Posté le 21-01-2004 à 19:22:10  profilanswer
 

BifaceMcLeOD a écrit :

Si je comprends bien, Katkiller voudrait pouvoir définir un invariant, c'est ça ?

J'ai l'impression qu'il voulait un type parceque son package générique Ada.Numerics.Discrete_Random lui en demandait un. Sans se poser beaucoup plus de questions, il débute.


---------------
trainoo.com, c'est fini

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  [ADA]Définir un sous-type avec des bornes spéciales

 

Sujets relatifs
[VBA][Excel]definir la selection dans une macro [resolu]Comment tester l appartenance d une variable a un type ??
[VB] petit defi : récuperer le nom d'une variable dans un TYPETrouver toutes les instances d'un type de class connu
[VBA] Définir la couleur d'une cellule à aucun remplissage RESOLUVBA; parcourir dynamiqument un type..end type
client serveur en ADAtype_info : comment est-elle instanciée ?
[ADA] Où trouver un bon tutorial[DIVERS] Mozilla&Co : Impossible de definir une hauteur de 100% ???
Plus de sujets relatifs à : [ADA]Définir un sous-type avec des bornes spéciales


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR