[PDF] Sous-programmes Procédures Langage ADA. Procédures s





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

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. n

Spécification des procédures :

n

Une 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 | out

3Langage 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 n

Spécifier une

valeur par défaut n"est possible que pour les paramètres en mode in n

Exemples

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 n

Spé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 | out

5Langage 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 n

Exemples

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 \=. n

Exemple

: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 n

Exemples

n Les opérateurs peuvent être utilisés en notation fonctionnelle. n

Exemples

: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. n

Exemples

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) return

Integer 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 n

Exemples

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 n

Les 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 n

Exemples

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 : l

Exemple

: 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 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