09.11.2014 Views

Cours Ada 1 - Libre

Cours Ada 1 - Libre

Cours Ada 1 - Libre

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!