[PDF] Généricité en ADA Paquetage générique (1/2)





Previous PDF Next PDF



Ada langage de programmation pour le temps réel

Ada langage de programmation pour le temps réel. Laurent Pautet. Jérôme Hugues. Laurent. Pour être qualifié de compilateur Ada



Le langage Ada Introduction Ada en quelques mots Ada en

Instruction autoris ee seulement dans la d efinition d'une fonction. Le langage Ada. ISIM-DIG1 95/96. 46. <. Les instructions sp eciales.



Typage Contrôle de type

Langage ADA. Types en ADA (2/2) s ADA définit peu de types de base : q Character q String q Boolean q Integer q Float q Access (pointeur).



ADA Ressources en ligne sur ADA

nouveau langage pour remplacer les centaines de langages utilisés jusque là dans les logiciels militaires. Ce langage devra être le plus sur possible dans 



Généricité en ADA Paquetage générique (1/2)

Langage ADA. Généricité en ADA s La notion de sous-programme permet la réutilisation de code s Les paquetages et la POO permettent de réutiliser du code de.



Premiers pas

Ada. -- imports procedure nom_proc is. -- spécification des données est une suite de caractères (texte écrit dans le langage Ada).



Paquetages (1/3) Paquetages (2/3)

Langage ADA. Paquetages (3/3) s Un paquetage est constitué obligatoirement d'une partie spécification où sont déclarés les types variables



Développement de systèmes embarqués temps réel avec Ada

Architecture en couches : Bibliothèque langage (ou runtime) constituant l'environnement d'exécution d'un programme (C Ada). Portabilité de l 



Sous-programmes Procédures

Langage ADA. Procédures s Les procédures peuvent agir sur leurs paramètres et n'ont pas de valeur de retour. s Spécification des procédures :.



QUELQUES N0TI0NS SUR A D A

LE BULLETIN DE L'EPI. Un langage algorithmique modulaire

1Langage ADA

Généricité en ADA

nLa notion de sous-programme permet la réutilisation de code n Les paquetages et la POO permettent de réutiliser du code de façon robuste en masquant une partie de celui-ci par excapsulation n Il peut également être intéressant de factoriser un morceau de code qui peut être appliqué à différents types (non parents) l par exemple une procédure de calcul du maximum de deux nombres est la même pour les entiers et les réels, on voudrait ne l"écrire qu"une fois n

ADA permet déjà le

paramétrage des types via les discriminants n

ADA introduit également le

paramétrage des sous-programmes et paquetages lune unité de programme générique est définie à partir de types génériques l l"utilisation d"une unité générique nécessite son instanciation par un type non générique

2Langage ADA

Paquetage générique (1/2)

nUn paquetage générique est déclaré avec le mot-clé generic lun paquetage peut être déclaré générique sans pour autant avoir de paramètre générique (utile dans le cas d"un paquetage qui hérite d"un paquetage générique) l si le paquetage possède des paramètres génériques, ceux-ci sont déclarés avant le début du paquetage et peuvent être des variables, des types ou des sous-programmes non génériques n Le corps d"un paquetage générique est identique à celui d"un non générique. generic_package_declaration ::= generic_formal_part package_specification; generic_formal_part ::= generic {generic_formal_parameter_declaration | use_clause} generic_formal_parameter_declaration ::= formal_object_declaration | formal_type_declaration | formal_subprogram_declaration | formal_package_declaration

3Langage ADA

Paquetage générique (2/2)

generic type Element_Data is (<>); package Paquetage_Liste is type Liste is limited private; liste_vide : constant Liste; procedure init(l : out Liste); procedure affiche(l : in Liste); procedure addElement(l : in out Liste; i : in Element_Data); procedure removeElement(l : in out Liste; i : in Element_Data); private type Element; type Liste is access all Element; type Element is record suivant:Liste; valeur:Element_Data; end record; liste_vide : constant Liste := null; procedure coucou; end Paquetage_Liste;

4Langage ADA

Instanciation d'un paquetage générique

nUn paquetage générique est instancié en précisant des valeurs pour les paramètres génériques with Paquetage_Liste; procedure Test is package Paquetage_Liste_Integer is new Paquetage_Liste(Integer); use Paquetage_Liste_Integer; l : Liste; begin init(l); addElement(l,4);addElement(l,5); affiche(l); addElement(l,6); affiche(l); end;

5Langage ADA

Param ètres de paquetage générique (1/4)

nLes paramètres génériques peuvent être des valeurs : l des constantes (déclarées en mode in) l des variables partagées entre le paquetage générique et l"unité de programme qui l"utilise (en mode in out) n

Exemple

: le paquetage Paquetage_Liste peut être paramétré par une constante qui représente la longueur maximum d"une liste generic type Element_Data is (<>);

LONGUEUR_MAX : in Natural := 100;

package Paquetage_Liste is

6Langage ADA

Param ètres de paquetage générique (2/4)

nLes paramètres génériques peuvent être des types : l types discrets : définit T comme désignant tout quel type discret l types entiers : définit T comme désignant tout type entier l types réels flottants : définit T comme désignant tout type réel flottant l types réels fixes : définit T comme désignant tout type réel fixe l types

tableaux : définit T

comme désignant tout type de tableau respectant le type d"indice et d"élément données l types pointeurs : définit T comme désignant tout type de pointeur sur le type donné (qui peut être générique!) l types indéterminé : définit T comme désignant tout type type T is (<>); type T is range <>; type T is digits <>; type T is delta <>; type T is private; type T is array(Type_indice) of Type_Element; type T is access Type;

7Langage ADA

Param ètres de paquetage générique (3/4)

nLes paramètres génériques peuvent être des sous-programmes : n Il est possible de préciser le sous-programme par défaut : l <> indique que le sous-programme par défaut est celui de même signature présent obligatoirement là où le paquetage est instancié l le nom du sous-programme par défaut peut être indiqué formal_subprogram_declaration ::= formal_concrete_subprogram_declaration | formal_abstract_subprogram_declaration formal_concrete_subprogram_declaration ::= with subprogram_specification [ is subprogram_default ] ; formal_abstract_subprogram_declaration ::= with subprogram_specification is abstract [ subprogram_default ] ; subprogram_default ::= name | <> | null

8Langage ADA

Param ètres de paquetage générique (4/4)

nExemple : une liste peut être implémentée avec : l différentes procédures d"ajout (en tête ou en queue) l différentes procédures de tri generic type Element_Data is (<>); with procedure addElement(l : in out Liste; i : in Element_Data); with procedure tri(l : in out Liste) is <>; package Paquetage_Liste is type Liste is limited private; liste_vide : constant Liste; procedure init(l : out Liste); procedure affiche(l : in Liste); procedure removeElement(l : in out Liste; i : in Element_Data); private

9Langage ADA

Pointeur sur sous-program m e

nIl est possible de définir des types pointeurs sur des sous- programmes dont on donne la signature n L"appel du sous-programme pointé se fait en spécifiant les paramètres passés au sous-programme (ou pt.all s"il n"y a pas de paramètre). n De tels pointeurs peuvent être utilisés pour rendre "génériques" d"autres sous-programmes. -- type pointeur sur toute procedure sans paramètre type Pointe_Procedure is access procedure; -- type pointeur sur toute fonction ayant la signature indiquée type Pointe_Fonction is access function(j : Float) return Integer; -- la fonction round(f : Float) return Integer doit être définie pt_fonc : Pointe_Fonction := round"ACCESS; pt_fonct(5.4);

10Langage ADA

Directives de com pilation

nADA définit des directives de compilation introduites par le mot- clé pragma. n

Exemples

l CONTROLLED : sur un pointeur, indique que le ramasse-miette ne doit pas s"occuper de ce pointeur, la désallocation doit être effectuée par appel à la méthode UNCHEKED_DEALLOCATION qui est une méthode générique devant au préalable être instanciée lELABORATE : sur un paquetage, oblige l"éditeur de lien à construire le corps du paquetage avant les spécifications des paquetages qui utilise le premier lINLINE : sur un sous-programme, oblige le compilateur à remplacer les appels au sous-programme par le code du sous-programme. type pt_Int is access Integer; pragma CONTROLLED(pt_Int); procedure free_pt_Int is new UNCHECKED_DEALLOCATION(Integer,pt_Int); pi : pt_Int; free_pt_Int(pi);

11Langage ADA

Program m ation non séquentielle en ADA

nADA permet de gérer des programmes séquentiels qui s"exécutent en pseudo-parallèlisme : les

tâches nCes tâches sont des instances d"un type particulier, le type task qui est à la fois un processus (une suite d"instructions) et un controleur de processus (thread of control). n

L"ordonnancement des processus en ADA est

pseudo-parallèle lune file de tâches permet de donner successivement la main aux différentes tâches n

ADA propose des mécanismes de

synchronisation entre tâches l delay : permet d"interrompre une tâche pendant une certaine durée et lance donc l"exécution de la tâche suivante l mécanisme de rendez-vous : une tâche peut en attendre une autre avant de poursuivre son exécution l

12Langage ADA

Type Tâche

nUn type tâche comporte : l une spécification qui précise son nom et éventuellement des entrées permettant la synchronisation lun corps qui précise le processus géré par la tâche task type Ecrivain is end Ecrivain; task body Ecrivain is s : String(1..6); i : Integer := 0; begin put("Donner un texte à écrire : "); get(s); new_line; while i < 100 loop put("ecriture : ");put(s);new_line; i := i + 1; end loop; put("l"écrivain est mort, paix à son âme!"); end Ecrivain; t : Ecrivain; -- la tâche est créée et démarre dès qu"elle a la main

13Langage ADA

Instance de tâche

nUne tâche est une instance d"un type tâche. Une tâche peut être déclarée directement par sa spécification et son corps, ce qui correspond à la déclaration d"un type tâche anonyme task Ecrivain; task body Ecrivain is s : String(1..6); i : Integer := 0; begin put("Donner un texte à écrire : ");quotesdbs_dbs46.pdfusesText_46
[PDF] langage c exercices corrigés

[PDF] langage c somme de 2 entiers

[PDF] langage c++

[PDF] langage calculatrice ti-83 plus

[PDF] langage de programmation pdf

[PDF] langage de texto

[PDF] Langage des fonctions, algébrique et lié au graphique

[PDF] langage et mathématiques

[PDF] langage javascript cours

[PDF] langage javascript debutant

[PDF] langage mathématique de base

[PDF] langage naturel maths

[PDF] langage pascal exercices corrigés pdf

[PDF] langage pascal informatique

[PDF] langage pascal pour debutant