Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
à la place de :<br />
for CAR in CHARACTER range ‘A’..‘Z’<br />
loop<br />
ECRIRE (CAR);<br />
end loop;<br />
3<br />
le compilateur ne peut déterminer le type de CAR ! En effet n’oublions pas que s’il existe bien un type<br />
CHARACTER il existe aussi le type Wide_Character sur-ensemble de Character. L’intervalle ‘A’..‘Z’<br />
appartient aux deux ensembles !<br />
Dans le même ordre d’idée voyons un exemple (cf. Barnes pages 108-109) avec surcharge d’identificateurs :<br />
type T_Planètes is (Mercure, Vénus, Terre, Mars, Jupiter, Saturne,<br />
Uranus, Neptune, Pluton) ;<br />
type T_Dieux is (Janus, Mars, Junon, Vestales, Vulcain, Saturne,<br />
Mercure, Minerve) ;<br />
Remarquez que <strong>Ada</strong> permet les accents même dans les identificateurs ! (Vénus, T_Planètes)<br />
Si l’on écrit :<br />
for IND in Mars..Saturne<br />
loop<br />
..<br />
end loop ;<br />
Problème !<br />
l’intervalle Mars..Saturne est ambigu le compilateur ne sait pas décider dans quel type il faut réaliser IND<br />
(en <strong>Ada</strong> rien n’est implicite) il faut aider le compilateur. Par exemple en qualifiant une des bornes :<br />
for IND in T_Planètes’(Mars)..Saturne<br />
loop<br />
..<br />
end loop ;<br />
Qualification !<br />
il n’y a plus ambiguï té.<br />
Mais le plus lisible est encore de typer l’intervalle ainsi :<br />
for IND in T_Planètes range Mars..Saturne<br />
loop<br />
..<br />
end loop ;<br />
Mieux !<br />
Si un sous type existe déjà par exemple :<br />
subtype T_Explorer is T_Planètes range Mars..Saturne ;<br />
alors l’écriture peut se restreindre à :<br />
for IND in T_Explorer<br />
loop<br />
..<br />
end loop ;<br />
Variante !<br />
Cette structure for est très pratique (elle existe aussi dans de nombreux langages). Elle trouve sa pleine<br />
utilisation dans les parcours de tableaux notamment (nous reverrons cela dès le cours suivant et plus tard).<br />
D. Feneuille I.U.T. Aix 2001 (cours n°3 fichier COURS3.DOC) 30/06/02