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