You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Compléments cours n° 1 (Généralités III)<br />
Pour terminer ces six heures de cours nous allons commenter quelques codages <strong>Ada</strong> d’algorithmes connus<br />
(puisque découverts au cours des premiers TD de la semaine passée). Il s’agit évidemment d’un survol assez<br />
informel et bien sûr tous les concepts, vus rapidement, seront repris en détail dans les cours à venir.<br />
Exemple n° 1 (« tiré » du polycopié algorithmique TD n°0)<br />
with P_MOUCHERON.IMP;<br />
procedure TS_MOUCHERON0 is<br />
use P_MOUCHERON.IMP;<br />
begin<br />
ECRIRE (″Essai de MOUCHERON″);<br />
A_LA_LIGNE;<br />
A_LA_LIGNE;<br />
MONTRER_RUBAN;<br />
A_LA_LIGNE;<br />
RESET;<br />
MONTRER_RUBAN;<br />
A_LA_LIGNE;<br />
AUTRE_RUBAN;<br />
MONTRER_RUBAN;<br />
end TS_MOUCHERON0;<br />
On remarque un ensemble de mots : soit des mots réservés (ici en minuscule gras) et des identificateurs choisis<br />
parmi les spécifications de la ressource P_MOUCHERON.IMP. Les points virgules terminent chaque action. Les<br />
mots réservés begin et end encadrent l’ensemble des actions mises en œuvre. Cette procédure se suffit à elle -<br />
même elle peut devenir un programme exécutable. Le use évite le préfixage (à revoir).<br />
Exemple n° 2 (« tiré » du polycopié algorithmique TD n°1)<br />
procedure NB_CAR (...) is<br />
begin<br />
COMPTEUR := 0;<br />
loop<br />
exit when FIN_RUBAN;<br />
LIRE;<br />
Evoque la ressource (composant logiciel) nommée<br />
P_MOUCHERON.IMP qui propose des services<br />
ou outils tels que : ECRIRE, RESET, ..... etc. On<br />
parle avec with de clause de contexte<br />
structure<br />
itérative<br />
COMPTEUR := COMPTEUR + 1; -- incrémentation du compteur<br />
end loop; ….<br />
ECRIRE_COMPTEUR; -- pour voir à l’écran le contenu du compteur<br />
end NB_CAR;<br />
C’est toujours la traduction <strong>Ada</strong> de l’algorithme vu en TD. On remarque d’autres mots réservés loop, exit<br />
when. Ici, cette brique (elle aussi une procédure) n’est pas indépendante ; c’est un composant de<br />
P_MOUCHERON.EVE.MOUCHERON1 qui accède aux entités : Compteur, Fin_Ruban, Lire et<br />
Ecrire_Compteur.<br />
Exemple n° 3 (« tiré » du polycopié algorithmique TD n°1). Même remarques que l’exemple 2.<br />
procedure NB_DE_L(....) is<br />
structure<br />
begin<br />
alternative<br />
COMPTEUR := 0;<br />
loop<br />
exit when FIN_RUBAN;<br />
LIRE;<br />
if (CARCOU = 'L') or (CARCOU = 'l')<br />
then COMPTEUR := COMPTEUR + 1;<br />
end if;<br />
end loop;….<br />
ECRIRE_COMPTEUR;<br />
end NB_DE_L;<br />
Traduction de<br />
l’algorithme résolvant le<br />
problème<br />
Nom du programme<br />
TS_MOUCHERON0<br />
<strong>Cours</strong> <strong>Ada</strong> n°1 (Généralité III) fichier <strong>Cours</strong>1_C.doc 30/06/02