hilpers


  hilpers > comp.lang.* > comp.lang.ada

 #1  
04/12/2017, 03h21
Mehdi Saada
J'ai "ts_pile_2.adb:14:49: v
pour ceci:
while (not PILE_PLEINE) and ENCORE = 'y'|'Y' loop
begin
GET (N1);
EMPILER (N1);
PUT_LINE("encore ? y ou n'importe quoi pour d'autres");
GET (ENCORE);
exception
when others => exit;
end;
end loop;

J'utilise pas fréquemment des expressions comme-celle-là, mais ildevrait pas y avoir de problèmes ?

 #2  
04/12/2017, 10h28
Niklas Holsti
On 17-12-04 03:21 , Mehdi Saada wrote:
> J'ai "ts_pile_2.adb:14:49: v
> pour ceci:
> while (not PILE_PLEINE) and ENCORE = 'y'|'Y' loop


ENCORE in 'y' |'Y'
^^
[..]
 #3  
04/12/2017, 15h49
Mehdi Saada
ENCORE est un littéral character, lu avec GET dans la boucle.... et l'expression étant évalué dès la première itération, le character n'est pas encore affecté, d'où l'erreur... C'est cela ?
 #4  
04/12/2017, 15h55
Mehdi Saada
Je ne vois toujours pas: ENCORE est un littéral character affectédès le départ avec 'y'... la condition de boucle est mal écrite ? Quand je rajoute des parenhèses autour de "(not" et " Y' " il me dit qu'il y a une parenthèse de trop, ignorée. J'ai l'impression désagréable de louper une chose évidente...

CHARACTER := 'y';
begin
while (not PILE_PLEINE) and ENCORE = 'y'|'Y'
 #5  
05/12/2017, 17h17
Mehdi Saada
Désolé, mais je ne vois vraiment pas en quoi le schéma WHILEexpression LOOP sequence_of_statements END LOOP; n'est pas respecté ici.
 #6  
05/12/2017, 18h24
gautier_niouzes
Essaie: ... (ENCORE = 'y' or ENCORE = 'Y')
Le 'y'|'Y' est dénifi pour les aggrégats:
type Char_Set is array (Character) of Boolean;
yes : Char_Set := ('y'|'Y' => True, others => False);
ou les instructions case.
Le Pascal a des ensembles définis "à la volée": ENCORE in ['y'|'Y'].
En Ada il faut (sûrement pour une bonne raison...) définir un type comme Char_Set plus haut. Les intersections (and), unions (or) sont définis automatiquement.

Gautier
__________________________________________________ ___________
A free online game in Ada: [..]
 #7  
06/12/2017, 17h17
Mehdi Saada
D'accord, mais pourquoi l'opérateur "test d'inclusion" ne fonctionne pas ?
Manuel 4.5.2 39/3
type Suit is (Clubs, Diamonds, Hearts, Spades);
list membership test-> Card in Clubs | Spades
 #8  
07/12/2017, 09h46
gautier_niouzes
Le mercredi 6 décembre 2017 16:17:30 UTC+1, Mehdi Saada a écrit :
> D'accord, mais pourquoi l'opérateur "test d'inclusion" ne fonctionnepas ?
> Manuel 4.5.2 39/3
> type Suit is (Clubs, Diamonds, Hearts, Spades);
> list membership test-> Card in Clubs | Spades


P-ê que tu utilise une version d'avant Ada 2012 (ou un semi-vieux GNATqui nécessiterait l'option -gnat2012).
En passant merci, j'ai pu découvrir l'existence de ce test!

Ada 2005:
N not in 1 .. 10 -- range membership test
Today in Mon .. Fri -- range membership test
Today in Weekday -- subtype membership test (see 3.5.1)
Archive in Disk_Unit -- subtype membership test (see 3.8.1)
Tree.all in Addition'Class -- class membership test (see 3.9.1)

Ada 2012:
N not in 1 .. 10 -- range membership test
Today in Mon .. Fri -- range membership test
Today in Weekday -- subtype membership test (see 3.5.1)
Card in Clubs | Spades -- list membership test (see 3.5.1)
Archive in Disk_Unit -- subtype membership test (see 3.8.1)
Tree.all in Addition'Class -- class membership test (see 3.9.1)

Discussions similaires
loop dans loop Tableau dynamique

Appareil électrique qui semble manquer de puissance

Ne pas manquer le 25/05...

A ne pas manquer !!!


Fuseau horaire GMT +2. Il est actuellement 19h58. | Privacy Policy