Re: Aide Ada
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.ada ]
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.

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|