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
Sous-program m es
nLes sous-programmes permettent de déclarer et d"implémenter des traitements réutilisables. n Les sous-programmes travaillent sur des objets (instances de types) mais pas sur des types ou des sous-programmes (pas de méta-programmation). n Les sous-programmes peuvent être paramétrés par des types ou des sous-programmes par le mécanisme de généricité. n Possibilité de séparer déclaration et implémentation des sous- programmes (utile pour des sous-programmes qui s"appellent mutuellement). Cela augmente la lisibilité des programmes.2Langage ADA
Procédures
nLes procédures peuvent agir sur leurs paramètres et n"ont pas de valeur de retour. nSpécification des procédures :
nUne procédure peut n"avoir aucun paramètre
procedure_specification ::= procedure defining_program_unit_name [ parameter_profile ] defining_program_unit_name ::= [ parent_unit_name . ] defining_identifier parameter_profile ::= ( parameter_specification { ; parameter_specification } ) parameter_specification ::= defining_identifier_list : mode [ null_exclusion ] subtype_mark := default_expression ] | defining_identifier_list : access_definition [ := default_expression ] mode ::= [ in ] | in out | out3Langage ADA
Passage des param ètres
nADA propose 3 modes de passage des paramètre : l in : passage par valeur, le paramètre effectif n"est pas modifié (c"est le mode par défaut) l out : la procédure affecte une valeur au paramètre effectif mais n"a pas accès à la valeur du paramètre effectif (qui n"a pas besoin d"être initialisée avant l"appel) l in out : passage par variable, le paramètre effectif doit être initialisé avant l"appel et la procédure peut en modifier la valeur nSpécifier une
valeur par défaut n"est possible que pour les paramètres en mode in nExemples
procedure ecrire_bonjour; procedure dessiner_ligne(x1,y1,x2,y2 : Integer); procedure lire_nombre(x : out Integer); procedure multiplie_par_2(x : in out Integer); procedure decremente(x : in out Integer; pas : in Integer := 1);4Langage ADA
Fonctions (1/2)
nLes fonctions ont une valeur de retour et des paramètres nSpécification des fonctions :
function_specification ::= function defining_designator parameter_and_result_profile defining_designator ::= defining_program_unit_name | defining_operator_symbol defining_program_unit_name ::= [ parent_unit_name . ]defining_identifier defining_operator_symbol ::= operator_symbol parameter_and_result_profile ::= [ formal_part ] return [ null_exclusion ] subtype_mark | [ formal_part ] return access_definition formal_part ::= ( parameter_specification { ; parameter_specification } ) parameter_specification ::= defining_identifier_list : mode [ null_exclusion ] subtype_mark [ := default_expression ] | defining_identifier_list : access_definition [ := default_expression ] mode ::= [in] | in out | out5Langage ADA
Fonctions (2/2)
nLes paramètres d"une fonction sont en mode in par défaut et il n"est pas possible de spécifier un autre mode n Les fonctions permettent de redéfinir les opérateurs nExemples
function aleatoire return Integer; function pgcd(a,b : Integer) return Integer; function "+" (a,b : Integer) return Integer; function aleatoire(domaine : in Integer := 1) return Integer;6Langage ADA
Corps des sous-program m es
nLe corps d"un sous-programme est de même forme qu"un programme et comporte une partie déclarative et un ensemble d"instructions : n La plupart du temps, on écrit la déclaration et le corps du sous- programme à la suite mais on peut séparer les deux. n Le nom du sous-programme après le end est en général optionnel. Il est possible d"imbriquer des sous-programmes et alors il faut préciser le nom du sous-programme qui se termine. subprogram_body ::= [ overriding_indicator ] subprogram_specification is declarative_part begin handled_sequence_of_statements end [ designator ] ;7Langage ADA
Exem ples de sous-program m es
function pgcd(a,b:Integer) return Integer is c : Integer; begin c := a rem b; if c=0 then return b; else return pgcd(b,c); end if; end; procedure ecrire_bonjour is begin put("bonjour"); end; procedure decremente(x : in out Integer; pas : in Integer := 1); procedure decremente(x : in out Integer; pas : in Integer := 1) is begin x := x - pas; end decremente;8Langage ADA
Intérêt de la déclaration séparée
function pair(i : Integer) return Boolean; function impair(i : Integer) return Boolean; function pair(i : Integer) return Boolean is begin if i=0 then return True; else return impair(i - 1); end if; end; function impair(i : Integer) return Boolean is begin if i=0 then return False; else return pair(i - 1); end if; end;9Langage ADA
Redéfinition d'opérateurs
nIl est possible de redéfinir les opérateurs prévus sur les types par des fonctions. Il est possible de définir les opérateur sur de nouveaux types. n Il est impossible de définir de nouveaux symboles d"opérateurs ni de modifier leur arité ni de changer les priorités des opérateurs! n L"opérateur \= ne peut être redéfini. L"opérateur = ne peut être redéfini que sur les types limités et sa redéfinition entraine la redéfinition automatique de \=. nExemple
:function "+"(a,b : Integer) return Integer isbegin return a+b;end; => la compilation génère un warning (récursivité infinie)10Langage ADA
Appels de sous-program m es
nLes paramètres dans les appels de sous-programmes peuvent être indiqués par position ou par association nExemples
n Les opérateurs peuvent être utilisés en notation fonctionnelle. nExemples
:c := "+"(2,3);d := 2 + 3; pgcd(2,3); pgcd(a => 2, b => 3); pgcd(2, b => 3);11Langage ADA
Renom m age des sous-program m es
nLe renommage d"un sous-programme doit utiliser le même profil que le sous-programme renommé. Seuls les noms des paramètres et les valeurs par défaut peuvent être modifiés. n Le nom d"origine est toujours utilisable avec les anciens noms de paramètre et les anciennes valeurs par défaut. nExemples
function pgcd(a,b:Integer) return Integer is c : Integer; begin c := a rem b; if c=0 then return b; else return pgcd(b,c); end if; end; function greatest_common_divisor(x : Integer; y : Integer := 2) returnInteger renames pgcd;
12Langage ADA
Polym orphism e en ADA
nLe sous-programme appelé par une instruction est déterminé à la compilation par : l le nom du sous-programme lle type de sa valeur de retour (fonction) ou l"absence de valeur de retour (procédure) lles types de ses paramètres nSi le nombre de sous-programmes correspondant à ces critères est différent de 1 (0 ou plus de 1) la compilation échoue n Le nom d"un sous-programme peut donc être surchargé si on modifie les types de ses paramètres ou de sa valeur de retour function pgcd(a,b : Integer) return Integer; function pgcd(a : Integer; b : Float) return Integer; procedure pgcd(a,b : Integer); function pgcd(a,b : Integer) return Positive; -- duplication de fonction détecté à la compilation (même sans appel)13Langage ADA
Polym orphism e total
nOn pourrait en ADA faire du polymorphisme sur les variables et pas seulement sur les sous-programmes en autorisant l"utilisation du même identifiant pour 2 variables de types différent l c"est possible en pratique grâce au typage fort qui permet de déterminer à tout moment le type d"une variable n Ca n"a aucune utilité en pratique et cela diminuerait la lisibilité du code => ce n"est pas implémenté14Langage ADA
Renom m age des sous-program m es
nLe renommage d"un sous-programme doit respecter les règles suivantes : l le nouveau sous-programme doit avoir le même nombre de paramètres lces paramètres doivent être compatibles avec les anciens (identiques ou dérivés ou sous-types) lune procédure ne peut être renommée que par une procédure lune fonction ou un opérateur peuvent être renommés indifféremment par une fonction ou opérateur nExemples
function gcd(i,j : Integer) return Positive renames pgcd; procedure gcd(i : Positive; j : Positive :=1) renames pgcd;15Langage ADA
Conversion de types
nLa conversion de type est toujours explicite et fait appel à des fonctions dédiées nLes conversions sont permises entre :
l les types numériques lun type dérivé et son type de base lles tableaux de même type d"indices, même dimension et même type d"éléments nExemples
i : Float := Float(pgcd(3,11)); type Vecteur is array(Integer range <>) of Float; subtype Vecteur_10 is Vecteur(1..10); v : Vecteur(0..100); w : Vecteur(-10..10);Vecteur(v); -- v ne change pas
Vecteur_10(w); -- lève une CONSTRAINT_ERROR
16Langage ADA
Erreurs d'exécutions
nDans tout programme, il y a des erreurs d"exécution possibles , des cas particuliers qui n"ont pas forcément été traités. On ne vise pas à les supprimer, mais à les controler ( robustesse du code, tolérance aux erreurs) l il s"agit d"erreurs d"exécution, pas d"erreur de programmation que le compilateur peut détecter. lExemple : un fichier que le programme essaie de lire est déjà utilisé par une autre application n Quand il y a une erreur, on voudrait se retrouver dans un endroit du programme d"où l"on peut récupérer de l"erreur : lExemple
: une méthode utilise un nombre passé en paramètre, nombre par lequel on divise un autre nombre. Ce nombre est donné par l"utilisateur. Si ce nombre vaut 0,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