accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: Aide Ada

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.ada ] 

Retour : Accueil du site fr comp lang ada   charte stats de ce groupe


  Sujet:   Re: Aide Ada  
 De: ludo...@ludovic-brenta.org (Ludovic Brenta)
 Groupes: fr.comp.lang.ada
 Organisation: Tele2
 Date: 08. Feb 2008, 21:53:47
 References: 1
"animatrix30@gmail.com" <animatrix30@gmail.com> writes:
> Salut à tous !
> J'ai deux questions à vous poser :
> - Pour une condition (dans un if), je fais un appel d'une fonction.
> Celle ci peut-renvoit une valeur (integer).
> J'aimerais que ma condition prenne en compte deux cas (1 et 2)
> SI vous n'avez pas compris, je vous montre cela par le code ADA :
> if (condition = (1 or 2))

if Condition in 1 .. 2 then...

ce qui suppose que les valeurs qui t'intéressent sont contigües.

Mais je pense qu'il y a trois erreurs de conception.  D'une part, que
se passe-t-il si Condition retourne -3 ou 42, qui sont des Integers
parfaitement légitimes?  La bonne solution est d'utiliser un "case" et
non pas un "if", car le compilateur vérifie alors que tu as pensé à
toutes les possibilités:

case Condition is
   when Integer'First .. 0 =>
      Do_This;
   when 1 | 2 =>
      Do_That;
   when 3 .. Integer'Last =>
      null;
end case;

Seconde erreur: si Condition ne peut retourner que 1, 2 et quelques
autres valeurs, alors il ne faut pas la déclarer comme retournant
n'importe quel Integer.  Il fallait dire, par exemple:

type Condition_Type is range 1 .. 8;
function Condition return Condition_Type;

ce qui simplifie le "case" ci-dessus.

Troisième erreur: si 1 et 2 ne sont pas vraiment des nombres (que l'on
peut multiplier, diviser, etc.) mais représentent quelque chose
d'autre (au hasard: le choix d'un utilisateur) alors ils ne devraient
pas être représentés par des nombres dans le programme mais par un
type énuméré.  Par exemple:

type User_Choice_Type is (Red, Green, Blue);
type Condition return User_Choice_Type;

....

case Condition is
   when Red | Green => Do_Something;
   when Blue => null;
end case;

> - Ma seconde question concerne les packages.
> Dans un, j'utilise un Tableau (package Coureurs)
> Dans l'autre, j'ai besoin de ce Tableau (j'ai donc fait un use
> Coureurs; with Coureurs)
> Il ne me geule donc pas dessus comme quoi le tableau n'existe pas, mais
> me dit :
> Incorrect use of Tableau
> Pourtant si je copie mon code dans le package Coureurs, cela marche
> bien.
> D'où cela pourrait-il venir ?

Je ne vois pas.  Il se peut que tu aies un autre objet (type,
sous-programme, variable ou autre) appelé Tableau, déclaré dans
Coureurs.  Poste ton code.

-- 
Ludovic Brenta.


DateSujet  Auteur
08.02.
o   Re: Aide Ada
Ludovic Brenta
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)
Free counter and web stats