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 nADA permet déjà le
paramétrage des types via les discriminants nADA 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érique2Langage 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_declaration3Langage 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) nExemple
: 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 is6Langage 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 typestableaux : 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 | <> | null8Langage 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); private9Langage 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. nExemples
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). nL"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 nADA 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 l12Langage 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 main13Langage 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 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