Download Cours Ada 1

Transcript
7
Exemple :
type
T_MENTION is
NOTE
LA_MENTION
case
(MAUVAIS, PASSABLE, ASSEZ_BIEN, BIEN, TRES_BIEN);
: INTEGER; -- déclaration pas terrible.
: T_MENTION;
NOTE is
when 0 | 1 | 2 | 3 | 4
when 5 | 6 | 7 | 8
when 9..12
when 13 | 14 | 15
when 16..20
when others
=>
=>
=>
=>
=>
=>
LA_MENTION := MAUVAIS;
LA_MENTION := PASSABLE;
LA_MENTION := ASSEZ_BIEN;
LA_MENTION := BIEN;
LA_MENTION := TRES_BIEN;
null; -- obligatoire car NOTE est
-- déclarée INTEGER!
end case;
Autre exemple (plus intelligent !) :
subtype T_UNE NOTE is INTEGER range 0..20; -- c'est mieux
LA_NOTE
LA_MENTION
: T_UNE NOTE;
: T_MENTION;
case LA_NOTE is
when 0..4
when
5..8
when 9..12
when 13..15
when 16..20
=>
=>
=>
=>
=>
LA_MENTION
LA_MENTION
LA_MENTION
LA_MENTION
LA_MENTION
:=
:=
:=
:=
:=
MAUVAIS;
PASSABLE;
ASSEZ_BIEN;
BIEN;
TRES_BIEN;
end case;
La branche others n'est maintenant pas utilisée, car toutes les valeurs du type énumératif T_UNE_NOTE sont
envisagées. Ce ne serait pas une faute de laisser le others (mais il ne sert à rien !).
L’instruction « bloc » :
Voyons un bon exemple connu (lecture validée d’un type discret cf. Paquetage P_E_SORTIE) :
loop
declare
CHAI : UNBOUNDED_STRING;
begin
LIRE (CHAI);
VAR_DISCRET := T_DISCRET'VALUE(TO_STRING(CHAI));
exit;
exception when others =>
null; -- ou message ECRIRE("xxxxx");
end;
end loop;
L’instruction bloc est, ici, « encapsulée » dans une structure répétitive loop.
 D. Feneuille I.U.T. Aix 2001 (cours n°3 fichier COURS3.DOC) 30/06/02