Aide-mémoire Ada UV Algorithmique 1 INSA première année NOM : . . . . . . . . .
Aide-mémoire Ada UV Algorithmique 1 INSA première année NOM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PRÉNOM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GROUPE : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Campagne de lancements 2009–2010 Didier LE BOTLAN contact.lebotlan@insa-toulouse.fr http://wwwdgeinew.insa-toulouse.fr/~lebotlan/ 1 Introduction Ce polycopié est le seul document autorisé pendant les contrôles notés. Il peut être annoté profusément, mais sans ajout de feuille. N’hésitez pas à me contacter ou à demander des explications à vos encadrants si un point vous semble obscur. POSEZ DES QUESTIONS ! Table des matières STRUCTURER Structure d’un programme Ada 4 Procédures sans argument 6 Bloc Séquence 8 CALCULER Les types de base 9 Les constantes 10 Les variables 12 Expression numérique 14 Conversion 14 Expression booléenne 16 FONCTIONS ET PROCÉDURES AVEC ARGUMENTS Procédures avec arguments en entrée 18 Fonctions 20 Types ARTICLE 22 TESTER UNE CONDITION Bloc IF 24 RÉPÉTER Bloc FOR 26 Bloc WHILE 28 AFFICHER Les acteurs GAda.Text_IO 30 2 Vocabulaire Identificateurs ◦Un identificateur est un nom qui sert à repérer une entité du programme (telle qu’un sous-programme, un type, une variable, etc.). En Ada, les identificateurs ne doivent pas comporter d’espace, et on évitera les accents. Exemples d’identificateurs : Nombre_Mots, Duree_Temporisation, Prenom_Client. ◦Foo, Bar, Moo, . . . ne signifient rien de spécial, ils sont utilisés dans ce document lorsqu’il y a besoin d’un identificateur. (On pourrait les remplacer par “Toto”, “Julien_Dore”, ou juste “Z”). Commentaires ◦Un commentaire dans un programme est un morceau qui n’est pas compilé (et qui est donc ignoré par l’ordinateur). En Ada, un commentaire commence par deux tirets, par exemple : VOLUME DU MOTEUR EN CM3 Cylindree : constant Integer := 2450 ; Blocs ◦Un bloc sert à décrire le comportement du programme complet ou d’un mor- ceau de programme (on peut aussi dire « bloc de code »). Un bloc peut être soit : ▷Un bloc composé, obtenu par la composition de blocs plus petits (voir les différents types de blocs composés, pages 24, 26, et 28) ; ▷Une instruction élémentaire : appel de procédure (voir pages 6 et 18) ou une affectation de variable (voir page 12). RÈGLE : Un bloc se termine toujours par un point-virgule. ◦Un sous-programme sert à dénommer un bloc de code avec un identificateur (p. ex. Foo). Le bloc pourra être réutilisé plusieurs fois en invoquant son nom (appel du sous-programme Foo). Il existe deux types de sous-programmes : les fonctions et les procédures. ◦Le corps d’un programme ou d’un sous-programme est le bloc de code définissant son comportement. Ce bloc est situé après le begin . 3 Symboles Un programme est décrit principalement par son comportement et par les données qu’il manipule. Les symboles ci-dessous (rond-point et livre) sont utilisés pour re- présenter visuellement ces deux concepts. Comportement Données Les symboles suivants représentent différentes sortes de sous-programmes : Procédure (sans argument) Procédure à 1 argument Arg : Type Fonction à 2 arguments Arg1 : Type Arg2 : Type Type de retour L’écriture d’un programme correct nécessite de connaître rigoureusement le type des données manipulées. Dans ce cours, on utilise des « jugements » qui peuvent être de plusieurs formes : ⊢x ∈type pour indiquer le type d’une expression x ⊢x ∈definition pour indiquer que x est une définition. ⊢x ∈bloc pour indiquer que x est un bloc de code. Voici quelques exemples : Jugement Interprétation ⊢120 + 99 ∈Integer 120 + 99 est de type « Integer » ⊢true ∈Boolean true est de type « Boolean » ⊢foo : Integer ∈definition foo : Integer est une définition (de la variable foo) ⊢foo ∈Integer La variable foo est de type « Integer » ⊢foo > 42 ∈Boolean foo > 42 est de type « Boolean » ⊢foo := 42 ; ∈bloc foo := 42 ; est un bloc de code Pour alléger la notation, on écrit ⊢foo := 42 ∈bloc (sans point-virgule). Une expression n’est pas un bloc (et inversement) : ⊢120 + 99 / ∈bloc 4 Il existe deux modèles de structures différents, selon que l’on veut produire un programme exécutable (à gauche) ou un acteur (à droite). EXÉCUTABLE “mission-exe” Un seul fichier : mission.adb Fichier mission.adb Déclaration du ou des acteurs utilisés with Foo ; procedure Mission is Renommage éventuel des acteurs package F renames Foo ; · · · Définitions Di ; · · · begin Corps du programme principal B ; end Mission ; Le corps du programme principal, B, doit être un bloc, c.-à-d. ⊢B ∈bloc La partie avant le begin est reservée aux définitions : ⊢Di ∈definition ACTEUR “Foo” Deux fichiers : foo.ads et foo.adb Fichier foo.ads (la spécification) Déclaration des acteurs utilisés with Acteur1 , Acteur2 ; with · · · ; package Foo is Renommage éventuel des acteurs package Bar renames Acteuri ; · · · Déclarations de sous-programmes · · · end Foo ; ⋆La déclaration d’un sous-programme ne comprend pas le corps du sous- programme. ⋆Pas de corps de programme (pas de begin), car un acteur n’est pas exécu- table Fichier foo.adb (l’implémentation) package body Foo is Définitions des sous-programmes · · · end Foo ; Structure d’un programme Ada 5 Exemple : le fichier mission1.adb 1 with GAda.Text_IO ; 3 procedure Mission1 is 5 package Txt renames GAda.Text_IO ; 7 begin 8 Txt.Put("Hello World !") ; 9 end Mission1 ; Se compile en l’exécutable “mission1-exe” ◦Le corps de mission1.adb, ligne 8, est un bloc simple (appel de procédure). ◦L’ indentation est le décalage à droite de certaines lignes du programme (p. ex., lignes 5 et 8 de mission1.adb). Elle rend le code plus lisible en mettant en évidence les différentes parties (avant le begin, après le begin, les blocs). Notes personnelles 6 Une PROCÉDURE (appelée aussi “action”) est un bloc auquel on donne un nom. Pour INVOQUER (c.-à-d. exécuter) la procédure Bar, on écrit ◦ Moo.Bar ; si la procédure Bar est définie dans l’acteur Moo. ◦Juste Bar ; si la procédure Bar est définie dans le programme mission.adb. Pour DÉFINIR une procédure dans le programme mission.adb : Définition de procédure sans argument procedure Bar is Définitions éventuelles begin Corps de la procédure B end Bar ; À placer avant le begin du programme. ∈definition On doit avoir ⊢B ∈bloc Procédures sans argument RÈGLE ⊢ « Invocation » Une invocation de procédure est un bloc : ⊢ Moo.Bar ∈bloc ⊢ Bar ∈bloc 7 Exemple : le fichier mission2.adb Définition de la procédure Afficher_Bienvenue ∈definition Afficher_Bienvenue Invocations de la procédure ∈bloc 1 with GAda.Text_IO ; 3 procedure Mission2 is 5 package Txt renames GAda.Text_IO ; 7 procedure Afficher_Bienvenue is 8 begin 9 Txt.Put_Line("Bonjour, ") ; 10 Txt.Put("et bienvenue a l’INSA de ") ; 11 end Afficher_Bienvenue ; 13 begin 14 Afficher_Bienvenue ; 15 Txt.Put_Line("Toulouse") ; 17 Afficher_Bienvenue ; 18 Txt.Put_Line("Rennes") ; 20 Afficher_Bienvenue ; 21 Txt.Put_Line("Lyon") ; 22 end Mission2 ; Ce programme affiche trois fois “Bonjour, et bienvenue ...” Il contient trois invocations de la procédure Afficher_Bienvenue (lignes 14, 17, et 20) et cinq invocations d’actions contenues dans l’acteur GAda.Text_IO (lignes 9, 10, 15, 18, et 21). La procédure Afficher_Bienvenue est définie entre les lignes 7 et 11. Les pro- cédures Put et Put_Line sont définies dans l’acteur GAda.Text_IO. Notes personnelles 8 Si B1, B2, .., Bn sont des blocs de code, leur juxtaposition constitue un nouveau bloc appelé BLOC SÉQUENCE. L’exécution du bloc séquence consiste à exécuter chaque bloc B1, B2, .., Bn, l’un après l’autre : Bloc séquence La séquence des blocs B1, .., Bn s’écrit B1 ; B2 ; . . . Bn ; Le bloc B1 est exécuté en premier. Le bloc B2 ne sera exé- cuté que lorsque le bloc B1 sera terminé. Le bloc séquence est ter- miné lorsque le dernier bloc, Bn, est terminé. Le corps du programme ci-dessous est un bloc séquence. Exemple : séquence d’actions ∈bloc with Moteur_Diesel ; procedure Mission1 is begin Moteur_Diesel.Prechauffer ; Moteur_Diesel.Demarrer ; Moteur_Diesel.Laisser_Tourner ; Moteur_Diesel. Arreter ; end Mission1 ; Bloc Séquence RÈGLE ⊢ « Séquence » Si pour tout 1 ⩽i ⩽n, ⊢Bi ∈bloc, alors leur juxtaposition est un bloc : ⊢ B1 ; . . . Bn ; ∈bloc 9 Un programme a vocation à manipuler des données (on peut aussi dire des « valeurs »), p. ex., pour effectuer des calculs numériques. Afin de manipuler correctement chaque valeur, l’ordinateur doit savoir à quelle catégorie ou type elle appartient. Par défaut, Ada propose les types de base suivants : Nom du type Signification Valeurs Place mémoire INTEGER entiers de −2_147_483_648 à +2_147_483_647 4 octets (32 bits)⋆ NATURAL entiers naturels de 0 à +2_147_483_647 idem POSITIVE entiers positifs de 1 à uploads/s1/ insa-toulouse-1a-algorithme-ada-fascicule-1.pdf
Documents similaires










-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 12, 2022
- Catégorie Administration
- Langue French
- Taille du fichier 1.9448MB