Home
Cours Ada 1
Contents
1. bd PREMO 11 13 PREMOT 14 amp MOTCOU 18 19 bd PREMOT 8 PREMOT 2 if PREMOT 2 4 MOTCOU 4 6 then gt exit when MOTCOU 1 8 gt MOTCOU 3 6 Tableaux de tableaux Exemples type T_LIGNE is array POSITIVE range lt gt of CHARACTER subtype T_INDICE COLONNE is POSITIVE range 1 80 type T_ECRAN is array POSITIVE range lt gt Of T_LIGNE T_INDICE_COLONNE subtype T_INDICE_ LIGNE is POSITIVE range 1 24 ECRAN _ECRAN T_INDICE_LIGNE Notez bien 3 2 LIGNE _LIGNE T_INDICE COLONNE diff rent du multi indi age suivre On peut crire ECRAN 2 ECRAN 3 LIGNI A BJ x Zi m 3i m lign lign 2i 2 t me caract re Remarque le composant dans un tableau de tableaux est donc lui m me un tableau A la d claration du tableau de tableaux le composant doit tre un tableau contraint Multi indice Une d claration de type tableau peut faire intervenir plusieurs indices ne pas confondre avec le tableau de tableaux vu pr c demment Notez la virgule entre les indices dans la parenth se C est traditionnellement en math matiques ou analyse num rique l impl mentation id ale pour trailler avec des matrices Exemple type T_ MAT is array INT lt gt INTEGER range
2. ENTIER 7 123 E2 3234 ENTIER 2 01 _O0010 18 ENTIER 16 2A3C 10812 ENTIER 16E 2 rreur syntaxe ENTIER 13 ABCD erreur D ENTIER E 7 erreur ENTIER 16 E El1 224 ENTIER 2 l1 el1 6144 REEI 6 02E 24 0 0 REEL 2 101 01 El 10 5 REEL 7 erreur syntaxe REEL 16E 2 rreur REEL 23 7E 7 erreur REEL 2 1 1111 1111 111 E11 4095 0 REEL 16 F FF E 2 4095 0 ECRIRE I J K 105 A_LA LIGNE ECRIRE I K K 6 A LA LIGNE ECRIRE I J K 0 A_LA LIGNE ECRIRE J 2 mod I 3 A_LA LIGNE ECRIRE J mod 3 I A_LA LIGNE ECRIRE J rem 3 2 A_LA LIGNE ECRIRE J 2 rem I 3 A_LA LIGNE end LITTERAU 12 Le cours n 1 g n ralit s Il se termine encore avec quelques pages d exemples de programmes Ada en relation avec les TD TP sur l algorithmique D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 Compl ments cours n 1 G n ralit s ID Pour terminer ces six heures de cours nous allons commenter quelques codages Ada d algorithmes connus puisque d couverts au cours des premiers TD de la semaine pass e Il s agit videmment d un survol assez informel et bien s r tous les concepts vus rapidement seront repris en d tail dans les cours
3. Lecture et criture de variables de type STRING On rappelle qu une variable de type STRING est un tableau de caract res contraint par un nombre maximum de caract res et ceci l instanciation de la variable Quand on observe le contenu du paquetage ADA TEXT_1O on d couvre apr s le commentaire String Input Output les quatre proc dures procedure GE ITEM out STRING procedure PU ITEM in STRING procedure GET_LINE ITEM out STRING LAST out NATURAL procedure PUT_LINE ITEM in STRING La proc dure PUT est exactement la proc dure ECRIRE de P_E_ SORTIE D ailleurs pour s en convaincre on peut voir dans les sp cifications du paquetage le renommage renames Donc PUT dite sur l cran la position courante du curseur la cha ne de caract res en question Le curseur progresse d autant de positions colonnes que le STRING contient de caract res instanci s Exemples PUT MESSAGE 5 8 crit les 4 caract res de la tranche depuis la position du curseur puis se place au bout en attente d autres ditions Tandis que PUT MESSAGE dite tout le STRING avec le nombre de caract res dont il a t contraint Si les caract res l extr mit n ont pas re u de valeur il y aura dition de caract res parasites tels que la m moire est cens e les
4. L id e pour factoriser reste la m me crire une seule fois la proc dure LIRE et l utiliser souvent Le probl me c est de ne plus nommer la variable lire de son vrai nom impossible puisqu il change mais d utiliser un nom formel c est dire abstrait sans signification particuli re et de lui substituer au moment de l utilisation le nom effectif qui doit remplacer le nom formel C est la notion de proc dure param tr e On parle alors de param tre formel et de param tre effectif on verra comment s effectue l association Sch matiquement mais on reviendra l dessus procedure EXEMPLE is DA procedure LIRE V Formel is begin SNA CHAI UNBOUNDED STRING begin LIRE LA VALEUR loop sl begin VARCORMERSEN Tr LIRE L AUTRE VALEUR NUE end sr nes end loop end EXEMPLE end LIRE T La proc dure LIRE est d finie droite avec un param tre formel nomm ici V_FORMEL et elle est utilis e gauche avec des param tres effectifs respectivement LA_VALEUR et L_AUTRE_VALEUR On dit que l on a rendu param trable l objet sur lequel portait l algorithme il n est pas fig mais dynamique Attention cette fa on de proc der convient pour des objets de m me type ici discret La question la bonne question est ne pourrait on pas faire la m me chose avec des objets diff rents et de
5. Lecture et criture de variables de type CHARACTER La ressource vraie Ada voquer avec with pour r aliser ces fonctionnalit s sur le type Character est le paquetage ADA TEXT_IO Pour lire on utilise GET et pour crire on utilise PUT Pour aller la ligne on utilise NEW_LINE et pour vider le tampon du clavier on utilise SKIP_LINI Quand on observe le contenu du paquetage ADA TEXT_IO voyez le ane paquetages en annexe A 10 1 on d couvre apr s le commentaire Character Input Output les deux procedures procedure GE ITEM out CHARACTER procedure PU ITEM in CHARACTER La proc dure PUT est exactement la proc dure ECRIRE de P_E_SORTIE D ailleurs pour s en convaincre on peut voir dans les sp cifications le renommage renames Donc PUT dite sur l cran la position courante du curseur le caract re en question Puis le curseur progresse d une position colonne dans la ligne courante La proc dure GET n est pas identique la proc dure LIRE de P_E_SORTIE La r alisation de LIRE est ti procedure LIRE CARAC out CHARACTER is begin Le SKIP_LINE est en plus EXT_IO GET CARAC EXT_IO SKIP_LINE end LIRE e Avec LIRE CARCOU si on tape au clavier successivement A puis B puis C et que l on appuie ensuite sur la touche ENTRE
6. Remarques rappels Si un param tre est d fini uniquement par son type sans le mode c est le mode in qui est retenu par d faut viter L utilisation de param tres dans le mode in interdit au sous programme de modifier leurs valeurs Cela est v rifi la compilation L utilisation en mode out n interdit pas la lecture de ce param tre attention Le mode in out est interdit pour les param tres de fonctions out aussi d ailleurs L instruction return L instruction return peut tre mise partout et jusqu plusieurs fois dans une fonction et m me dans une proc dure On utilise l instruction return seule dans une proc dure et return valeur du r sultat dans une fonction L oubli de l instruction return dans une fonction est signal la compilation Warning Remarque l instruction return est videmment optionnelle dans une proc dure quand elle est utilis e elle permet de quitter la proc dure avant son ach vement en fin de bloc peu conseill e goto Exemple de fonction function OUI TEXTE in STRING return BOOLEAN et commentaires function OUI TEXTE in STRING return BOOLEAN is REPONSE CHARACTER a mais pas de O ou de N begin while REPONSE O and REPONSE N loop ECRIRE TEXTE LIRE REPONSE ga REP
7. when 0 di 2e 3 4 gt LA MENTION MAUVAIS when 5 6 7 8 gt LA MENTION PASSABLE when 9 12 gt LA MENTION ASSEZ BIEN when 13 14 15 gt LA MENTION BIEN when 16 20 gt LA MENTION TRES BIEN when others gt null obligatoire car NOTE est d clar e INTEGER end case Autre exemple plus intelligent subtype T_UNE NOTE is INTEGER range 0 20 c est mieux LA_NOTE T_UNE NOTE LA_ MENTION T_MENTION case LA NOTE is when 0 4 gt LA_ MENTION MAUVAIS when Syg gt LA_MENTION PASSABLE when 9 12 gt LA_MENTION ASSEZ BIEN when 13 15 gt LA_ MENTION BIEN when 16 20 gt LA_ MENTION TRES _ BIEN end case La branche others n est maintenant pas utilis e car toutes les valeurs du type num ratif T_UNE_ NOTE sont envisag es Ce ne serait pas une faute de laisser le others mais il ne sert rien L instruction bloc Voyons un bon exemple connu lecture valid e d un type discret cf Paquetage P_E_ SORTIE loop end loop L instruction bloc est ici encapsul e dans une structure r p titive Loop D Feneuille I U T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 Le DS instruction bloc nom simple de bloc traite exception nom simple de bloc Le chemin minimum obligatoire est en trait plus gras On remarque que l on peut nommer un bloc c
8. D Feneuille I U T 2002 cours n 1 fichier COURS1 DOC 30 06 02 cod es le programme Avant d tre ex cutable le programme doit tre correct compr hensible c est l objectif de la phase de compilation Cette tape est en fait structur e en tapes plus fines souvent inaper ues analyse lexicographique analyse syntaxique et analyse s mantique L ordinateur n utilise en g n ral pas le m me codage que celui du programmeur pour s ex cuter cela d pend du processeur il est donc n cessaire de passer par une ultime phase de construction l dition de liens notez que ceci n est pas toujours vrai conne par exemple avec le langage Java Pour plus de d tails voir la page 6 Langage informatique compl ments lire Ada est un des nombreux langages modernes de programmation et c est le premier que nous tudierons Un peu d histoire la petite Ada vous connaissez ce nom Cherchez bien la pub un peu partout mais oui le loueur de voitures H las vous n y tes pas Si je vous dis pour vous mettre sur la voie que c est l histoire d une femme Alors l des cin philes vont penser la belle h ro ne de La le on de piano mais c est encore rat Non il s agit de Ad la de Augusta Byron fille du coquin po te Lord Byron seule enfant d ailleurs qu il reconnut Elle tait passionn e de math matiques elle travailla avec le g nial inventeur Charles Babbag
9. type T_FEUX is VERT ORANGE ROUGE type T_JOUR is LUNDI MARDI MERCREDI JEUDI VENDREDI SAMEDI DIMANCHE type T_MOIS is JANVIER FEVRIER MARS AVRIL MAI JUIN JUILLET AOUT SEPTEMBRE OCTOBRE NOVEMBRE DECEMBRE D Feneuille L U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 Les types num ratifs sont construits en indiquant en num rant simplement les valeurs symboliques s par es par des virgules que peuvent prendre leurs instances ne pas confondre avec les litt raux cha nes de caract res le symbole ou identificateur BLEU est diff rent du litt ral cha ne BLEU On remarque dans les exemples la pr sence du symbole num ratif ou litt ral num ratif ROUGE trois endroits On parle de surcharge M me remarque pour ORANGE BLEU et VERT il y a encore surcharge Comme pour les types construits ou pr d finis vus pr c demment le type num ratif poss de des attributs T_COCORICO PRED ROUGE vaut BLANC T_COULEUR PRED ROUGE vaut ORANGE sans ambigu t L attribut PRED qui op re bien sur la valeur ROUGE doit tre qualifi par le type ceci est vrai quelle que soit l utilisation et pas seulement comme ici en cas de surcharge Attention T_COCORICO PRED BLEU entra ne une erreur d ex cution dite CONSTRAINT_ERROR A revoir en TD mais on comprend pourquoi T_JOUR FIRST vaut LUNDI T_FEU
10. Comme on l a pressenti ce langage avait une vocation d unicit et donc de langage g n raliste il fallait pouvoir remplacer tous les langages et dialectes des ann es 70 Mais il fallait en faire un langage durable et professionnel qui int grait les besoins des ann es venir en clair qui permette de mettre en onvre les concepts de g nie logiciel concevoir et r aliser des composants logiciels Bien s r ce moment de la lecture peu d entre vous peuvent imaginer ce que signifie ces concepts C est ce que nous d couvrirons ensemble pendant tout ce cours associ des TD et TP Les ma tres mots retenir sont ceux de modules de r utilisabilit de sp cifications d clar es et contr l es de portabilit de g n ricit de s curit de fonctionnement etc Le concept de norme pourquoi normaliser Un langage de programmation comme tout langage au sens g n ral du terme sert dialoguer se faire comprendre non seulement par le biais d un ordinateur particulier mais aussi de tous les ordinateurs et de tous les programmeurs qui utilisent les ordinateurs Evident Pas s r Un langage est soumis des r gles de syntaxe ah la grammaire fran aise pour ne citer qu elle Ces r gles sont d finies et regroup es dans un manuel de r f rence L R M en anglais d crivant la norme Eh bien il existe tr s peu de langages informatiques normalis s Et quand la norme existe il
11. LAST rend la valeur de l indice du dernier composant Exemple VECT_N LAST vaut 10 RANGE rend l intervalle des indices du tableau Utile pour une boucle for A voir plus bas LENGTH rend le nombre d l ments du tableau nombre effectif de composants Exemple VECT_B LENGTH vaut 20 nombre d indices dans l intervalle A T Remarque importante Les attributs portent sur les ou font r f rence aux instances de type tableau c est nouveau mais ils agissent en fait sur le type des indices du tableau en question mais quand l indice sera contraint On note toujours l op ration avec l apostrophe mais le pr fixe n est plus un type comme au cours n 2 c est le plus souvent l identificateur du tableau Dur dur Voyons cela Exemples PREMOT RANGE est l intervalle entier 1 20 type T_MOTS page pr c dente mais n est pas identique T_INDICE car ce n est ni un type ni un sous type De m me PREMOT FIRST vaut 1 et PREMOT LAST vaut 20 Avec ces notations il n est pas n cessaire de conna tre ou de se rappeler l identificateur ici T_INDICE du sous type intervalle d indice contraint Si l on change la ligne suivante telle que subtype T_INDICE is POSITIVE range 4 19 sans modifier les autres d clarations on a alors respectivement les nouvelles valeurs 4 19 4 19 pour les trois attributs pr c dents et 16 pour l expr
12. Une variable est locale un module lorsqu elle n existe pas avant la mise en vre du module donc avant son utilisation et qu elle est utile au module La variable locale est solidaire de son module On dit que sa port e est circonscrite au module d ailleurs la variable locale est d clar e dans le module elle prend naissance laboration voir ce terme dans le glossaire fichier glossaire doc avec l utilisation du module et elle dispara t avec le module quand celui ci est achev et pour d autres c est beaucoup voire passionn ment Alors qu il faudrait pas du tout c est beau Ada D Feneuille I U T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 7 Une variable est dite globale un module quand elle n est ni locale ni param tre du module Elle existe avant la mise en vr e du module elle est utilis e et ou modifi e dans le corps du module et elle existera encore apr s l utilisation du module Ce sont en fait des donn es r sultats non signal es Ce sont des variables extr mement dangereuses pour la qualit du logiciel On contr le tr s mal leur effet puisqu elles sont modifiables tout moment On parle d effet de bord devant une modification intempestive et mal contr l e d une variable globale La qualit d un logiciel pourrait se mesurer entre autres choses son nombre minimum de variables globales En algorithmique CARCOU tait h las un objet
13. PUT_LINE T_ENUM IMAGE ENUM Cette partie de cours se poursuivra avec le temps en fonction des questions qui nous seront pos es Remarque Toutes les possibilit s de TEXT_IO n ont pas t voqu es On verra en TD TP quelques fonctionnalit s suppl mentaires telle par exemple la proc dure Get_Immediate lecture non tamponn e d un caract re Quelques interrogations Dans un litt ral cha ne comment repr sente t on les guillemets puis qu ils sont d limiteurs de cha ne Deux solutions e On double le guillemet pour le repr senter e On utilise la compatibilit du type caract re et de la cha ne avec l op rateur amp Exemples respectifs Cr er la cha ne de 3 caract res A B Il est clair que A B est incorrect car avec A le compilateur consid re une cha ne de un seul caract re le A Puis trouvant B il p te les plombs avec message d injure en anglais D o la bonne criture A B Le doublon vaut un seul De m me pour fabriquer la cha ne d un caract re contenant l unique caract re il faut crire Cqfd Avec l autre approche on a A amp amp B Tordu non Mais de toute fa on il est incontournable qu il n est pas facile de repr senter un symbole quand il est lui m me d limiteur nn Remarque Une solution plus l gante d j voqu e pa
14. de Pascal puis de proche en proche on parvint la d finition d une norme internationale en 1983 Norme que les vendeurs de compilateurs doivent respecter De ce fait les premiers compilateurs sortirent en 1985 et h las cette inertie de 10 ans entre les premi res descriptions du langage et la possibilit de l utiliser joua des tours la promotion du langage Aujourd hui dans les milieux informatiques le langage Ada est incomparablement reconnu pour la production de logiciels tr s haut niveau de fiabilit mais peu go t des informaticiens qui programment d abord et r fl chissent ensuite En effet c est bien contraignant Ada car il faut r fl chir et s imposer des contraintes en contradiction avec le narcissisme des tres humains Mais quand on y souscrit on ne peut que s en f liciter par exemple il n est pas rare de d couvrir avec ce langage d s la phase de compilation des erreurs conceptuelles que d habitude avec un langage permissif on d couvre tr s tard dans la phase de tests Ce plaidoyer certainement inaccessible aux d butants informaticiens sera reformul et d montr tout au long de ce premier trimestre Pour conclure un dernier regard sur le petit dernier il s agit de Ada95 longtemps appel Ada9X et qui est la r vision pr vue du langage ce processus prit plus de 5 ann es 90 95 par exemple la page 18 du livre de Rosen le DOD est d
15. exercice crire le D S correspondant f un entier la m me d finition qu un entier bas o l on remplace chiffre g n ralis par chiffre tout simplement g un litt ral d cimal est un entier suivi ventuellement d un et d un entier ventuellement suivi s d un exposant voir le BNF d un entier pages 4 et 5 Exercice crire le D S correspondant Fin semaine 1 4 heures de cours D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 Exercice n 1 d but semaine 2 Dans la liste ci dessous d terminez tous les litt raux ill gaux et dites pourquoi Pour tous les litt raux l gaux distinguez les entiers et les r els Voir corrig page 10 a 25 7 b 7 c 16E2 d 16e 2 e 2 1101 f 3 14167_345678g 13 ABCD h e 7 i 16 FFf j 1_0 1_O el_0 k 23 7e 7 1 2 111 e 1l Exercice n 2 tir de Barnes voir pages 79 83 Quelle est la valeur d cimale des litt raux num riques suivants corrig page 10 a 16 E E1 b 2 11 e11 c 2 1 1111_1111_111 e11 d 16 F FF E 2 Les op rateurs Ada sur les num riques litt raux ou variables entiers ou r els Pr liminaires Les op rations pr d finies applicables aux types entiers et ou r els sont et op rateurs binaires deux op randes entiers ou deux op randes r els deux op randes entiers ou deux op randes r els division idem et op rateurs unaires un seul op rande entier
16. for IND in T_ Explorer loop end loop Cette structure for est tr s pratique elle existe aussi dans de nombreux langages Elle trouve sa pleine utilisation dans les parcours de tableaux notamment nous reverrons cela d s le cours suivant et plus tard D Feneuille LU T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 4 Le while et le for sont r gis syntaxiquement par la d finition sch ma d it ration retard e dans le D S g n ral plus haut D o sch ma d it ration en sp cification du param tre boucle intervalle discret identificateur intervalle discret indication de sous type discret era Exemple notez ici le reverse for CAR in reverse CHARACTER range a r loop ECRIRE CAR end loop dite la ligne suivante rqponmlkjihgfedchba c est dire l envers et cause du reverse ou autrement codage plus traditionnel sans le for qui tait pourtant bien pratique CAR r ici CAR doit tre d clar en plus et au dessus loop ECRIRE CAR exit when CAR a CAR CHARACTER PRED CAR end loop Attention pi ge ne pas crire la place du reverse for CAR in CHARACTER range r a cette criture n est pas fausse syntaxiquement elle n a que l inconv nient de pr senter un intervalle vide Cr a et alors la
17. videmment la valeur absolue bien connue Construction d un type entier modulaire La r gle de construction d un type entier modulaire est d finie par le D S suivant Eyrs idenieater Cs od enier posit O Exemples remarquez l utilisation des trois mots r serv s Ada type is et mod type T_Heure is mod 24 valeurs entre 0 et 23 type T_Octet is mod 256 valeurs entre 0 et 255 La diff rence essentielle par rapport au type entier sign est l arithm tique modulo ainsi si on a L_Heure T_Heure 23 Puis L Heure L Heure 1 L Heure vaut alors 0 Quelques probl mes dominer L_Heure 25 L_Heure 24 sont des critures incorrectes not in range dit le compilateur car les valeurs litt rales admises vont de 0 23 d apr s la d finition ci dessus mod 24 Donc 24 et 25 ne sont pas dans l intervalle Mais L_Heure 2 est une criture correcte car le ne fait pas partie de la d finition c est un op rateur unaire C est quivalent L_Heure 0 2 L criture est aussi quivalente L_ Heure 22 il faut revoir les exercices du cours pr c dent Les types num ratifs construits La r gle de construction d un type num ratif est r git par le D S identificateur num ration Exemples type T_COCORICO is BLEU BLANC ROUGE type T COULEUR is VIOLET INDIGO BLEU VERT JAUNE ORANGE ROUGE
18. R sum Les attributs Ada associ s aux types scalaires et discrets sont vus en TD semaines 3 et 4 WIDTH POS VAL SUCC MAX PRED IMAGE VALUE BASE MIN FIRST LAST ADDRESS SIZE discrets seulement rappel D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 Les sous types Certaines instances d un type donn pourraient ne prendre qu une partie des valeurs appartenant l ensemble du type donn limit par un intervalle de contrainte Mais par contre elles utiliseraient l ensemble des op rations d finies pour ce type Pour r alis er cela Ada offre la notion de sous type Un sous type caract rise un sous ensemble de valeurs d un type donn lui m me appel type de base du sous type Le type de base d un type est le type lui m me Exemples notez bien la diff rence avec les types entiers construits plus haut pr sence du mot subtype subtype T_PETIT_ENTIERS is INTEGER range 128 127 subtype T_ANNEE is POSITIVE range 1_582 9 999 gr gorien subtype T_ NUM MOIS is INTE _N G GER range 1 12 subtype T_NUM_JOUR is INTEGER range 1 31 subtype T_MAJUSCULES is CHARACTER range A Z subtype T_MINUSCULES is CHARACTER range a z Ada pr d finit deux sous types d entiers sign s Les sous types NATURAL et POSITIVE Ils sont d finis ainsi dans le paquetage STAN
19. venir Exemple n 1 tir du polycopi algorithmique TD n 0 Evoque la ressource composant logiciel nomm e with P_MOUCHERON IMP P_MOUCHERON IMP qui propose des services procedure TS_MOUCHERONO is ou outils tels que ECRIRE RESET etc On use P_MOUCHERON IMP begin ECRIRE Essai de MOUCH parle avec with de clause de contexte A_LA_LIGNE a Traduction de A_LA_LIGNE l algorithme r solvant le MONTRER_RUBAN probl me A_LA LIGNE RESET MONTRER_RUBAN A_LA_LIGNE Nom du programme AUTRE_RUBAN TS_MOUCHERONO MONTRER_ RUBAN end TS _MOUCHERONO On remarque un ensemble de mots soit des mots r serv s ici en minuscule gras et des identificateurs choisis parmi les sp cifications de la ressource P_MOUCHERON IMP Les points virgules terminent chaque action Les mots r serv s begin et end encadrent l ensemble des actions mises en vre Cette proc dure se suffit elle m me elle peut devenir un programme ex cutable Le use vite le pr fixage revoir Exemple n 2 tir du polycopi algorithmique TD n 1 procedure NB_CAR is begin structure COMPTEUR 0 it rative loop E i LIRE COMPT end loop EUR 1 incr mentation du compteur ECRIRE_COMPTEUR pour voir l cran le contenu du compteur end NB_CAR C est tou
20. 0 then f Voir le fichier P_E_SORTIE ECRIRE ce mois a 29 jours 5 cahier1 doc else P_E_SORTIE ECRIRE ce mois a 28 jours end if else tous les autres mois P_E_SORTIE ECRIRE ce mois a 31 jours end if P_E_SORTIE A_ LA LIGNE end EXO2_SUP tester s rieusement pr parer un jeu de test dans un fichier Exercice sur cet exercice remplacer le if par un case facile Remarques e Notez les port es du use limit e au bloc dans lequel il est d clar il s agit d un effet de style pour d monstration e Une ann e bissextile est multiple de 4 sans tre multiple de 100 moins d tre multiple de 400 Ainsi 1900 n est pas bissextile tandis que 2000 l est 2004 est bissextile voir cahier n 1 doc e Cet exercice est int ressant car il propose et pr sente un grand nombre de concepts et d criture d instructions et de d clarations Ada A comprendre et consulter sans mod ration D Feneuille LU T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 Cours 5 Ada sous programmes 3 heures semaine 4 La programmation est la branche la plus difficile des math matiques appliqu es DIJKSTRA Th me les sous programmes Avec le concept de sous programmes nous allons largir nos connaissances en outils de g nie logiciel Nous avons d j voqu le fort typage Ada comme composante de l art de produire du logiciel fiable La structuration en sous programmes renforcera cette techni
21. Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 11 Corrig des D S Litt ral num rique Ada litt ral d cimal Litt ral bas entier bas entier bas exposant entier bas chiffre g n ralis chiffre g n ralis ue j exposant D litt ral d cimal entier C entier Exercice r crire ces D S en BNF D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 Exemple de programme simple Ada permettent de tester les trois exercices de la page 8 fichier LITTERAU ADB pour tester le cours su D Feneuille septembr with P_E SORTIE procedure LITTERAU is use P_E SORTIE I constant 7 constant 5 K constant 3 ENTIER INTEGER REEL FLOAT begin la s quence de deux ECRIRE ENTIER ou LA LIGNE est ajouter apr s en tant les deux r litt raux exercice pages 8 et 9 98 Source disponible dans le r pertoire fendan corrige lignes suivante ECRIRE REEL chaque instruction valide marque de commentaire on retrouvera les v aleurs ajout es
22. Corps de sous programme Remarques e On retrouve au d but du corps la partie sp cification reprise int grale de la d claration e la partie apr s le is est presque une instruction bloc mais pas de declare e La partie d clarative locale peut ne pas exister lorsque aucune d claration n est n cessaire e La partie bloc qui suit le begin contient la description d une s quence d instruction s au moins une Cette description est r alis e l aide des entit s connues en utilisant les structures de contr le du langage e La partie traite exception sera vue au cours n 8 Elle est notez le toujours situ e en fin de bloc D Feneuille I U T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 10 La partie d clarative d finit les entit s n cessaires la mise en vre Les entit s sont les types les constantes les variables les exceptions les sous programmes les paquetages les t ches et les objets prot g s les clauses Exemples de corps de sous programme on les a choisis courts et connus mais savoir procedure TRIER A B in FLOAT MIN MAX out FLOAT is pas de d clarations locales begin if lt B then MIN A MAX B else MIN B MAX A end if end TRIER function LE PLUS GRAND A B in FLOAT return FLOAT is begin if B lt A then return A else return B end if ou tout simplement en une
23. Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 Cours n 3 Ada les instructions 2 heures semaine 3 Th me les instructions de base r p titive alternative bloc d clarations Certains des concepts list s ci dessus ont d j t vus ou voqu s pr c demment mais succinctement C est le moment de concr tiser avec rigueur ces instructions fondamentales qui composent statistiquement la moiti d un codage Ada Malheureusement ce n est pas pour autant que nous sommes la moiti de notre effort Les instructions r p titives Le sch ma algorithmique r p ter est en Ada cod l aide de la structure Loop Le D S a d j t propos dans la partie correspondante du cours n 1 Etudions le en d tail apr s l avoir rappel instruction loop sch ma d it ration nom simple de boucle CD gt Coop suite d instructions Gna 100p gt nom simple de boucle Pour tre complet il faut finir les 3 parties en attente dont la d finition est retard e savoir nom simple de boucle sch ma d it ration et suite d instructions Nom simple de boucle est tout simplement un identificateur Ada qui permet de nommer ou caract riser la boucle Cette technique permettra de sortir de boucles imbriqu es revoir dans Barnes page 110 La notion de suite d instructions est l mentaire Soit le D S suite d instructions TT L
24. PLACER 10 5 PLACER 12 COLONNE gt 11 PLACE COLONNE gt 11 LIGNE gt 12 Les param tres formels de mode in qui n ont pas de valeur par d faut doivent avoir l appel un param tre effectif correspondant litt ral ou variable Les autres param tres ut ou in out doivent rappelons le avoir comme param tre effectif correspondant un identificateur de variable pas de litt ral Types non contraints comme param tres de sous programme La r f rence des tableaux non contraints comme param tres formels de sous programmes permet la transmission de param tres effectifs de m me type tableau mais ayant au choix des domaines d indices diff rents Le tableau effectif est lui contraint obligatoirement l utilisation D Feneuille LU T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 15 Exemple type T_TABLE is array T_ ENTIER range lt gt of FLOAT non contraint subtype T_TABLE10 is T_TABLE 15 24 contraint 1 T_TABLE10 10 valeurs 2 _TABLE 100 200 s 101 valeurs Bus _TABLE 50 50 es 101 valeurs Param tre formel de gt type non contraint procedure TRI T in out T_TABLE is AUX i FLOAT begin for IND in T FIRST T_ENTIER PRED I LAST Utilisation d attribut for J in T_ENTIER SUCC IND T LAST D pour acc der aux loop if T J lt T IND valeurs i
25. j le cr ateur dans les ann es 1960 du langage COBOL encore h las utilis en gestion 5 L encore voir les introductions des bons ouvrages sur Ada pages 17 19 Rosen et 1 3 Barnes appel d offres qui sera remport par une quipe dirig e par un fran ais cocorico 7 On verra tous ensembles en TP ce qu est un compilateur Ada qui est d ailleurs beaucoup plus qu un traditionnel compilateur car c est tout un environnement de d veloppement de logiciels Avionique fus e Ariane conduite ferroviaire train m tro etc par exemple le tunnel sous la Manche plus pr cis ment il faut beaucoup sp cifier c est dire expliciter ce que l on veut faire O c est dire tr s loin dans le d veloppement du logiciel donc avec un co t prohibitif H Celles et ceux qui le souhaitent pourront d ores et d j parcourir le cahier p dagogique n 2 propos de g nie logiciel jy explique le choix p dagogique du langage Ada Aix dans les premi res heures de l apprentissage en I U T en option g nie informatique car telle est notre d nomination Voir fichier cahier2 doc D Feneuille I U T 2002 cours n 1 fichier COURS1 DOC 30 06 02 Cette derni re version int gre et permet les objets concept que l on verra en d tail plus tard mais concept important et incontournable en informatique d aujourd hui Je ferais au cours n 10 semaine 7 une pr sentation des co
26. lt gt of FLOAT subtype T_ COL is POSI range 1 20 Notation MATRICE 3 2 subtype LIG TS ur ne pour utiliser la troisi me ligne et deuxi me colonne MATRICE MAT1 MAT2 T_MAT T_LIG T_COL D Feneuille LU T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 Attributs portant sur les tableaux Les attributs sont int ressants pour travailler a priori avec des variables tableaux dont le type d indice est retard plus pr cis ment pour travailler avec des param tres tableaux non contraints On verra cela d s le cours n 5 avec les sous programmes Pour le moment on admettra que l on peut faire r f rence des travaux portant sur des objets tableaux non contraints c est dire des tableaux dont la plage d indices n est pas encore fix e compl tement Cette plage sera fix e plus tard et on va avec les attributs faire r f rence cette situation par anticipation Les attributs sont cependant aussi utilisables syst matiquement avec des objets ou instances de tableaux contraints Mais ils perdent de leur puissance puisque la contrainte est connue Liste des attributs permettant les op rations sur les tableaux mais en fait ils portent sur les indices FIRST LAST RANGE LENGTH VECT_B et VECT_N sont d finis FIRST N LAST N RANGE N LENG H N et d clar s page 2 FIRST rend la valeur de l indice du premier composant E Exemple VECT_B FIRST vaut A E
27. nom simple de composant intervalle discret Cette structure permet de choisir entre plusieurs s quences d instructions pour plusieurs valeurs d une expression discr te C est la valeur de l expression discr te qui fixe la s quence choisie Une instruction choix multiple a la forme g n rale suivante toutes les possibilit s sont pr sent es case expression is when valeur 1 gt e when valeur _2 meses valeurs _n gt ees when valeur _d but valeur_fin gt nesese when others gt ees end case L expression et les choix ou cas conditions du when doivent tre d un m me type discret Toutes les valeurs possibles de l expression doivent figurer une fois et une seule Le choix others doit tre utilis dans la derni re branche pour couvrir toutes les valeurs qui n ont pas t donn es dans les alternatives pr c dentes Si toutes les valeurs ont t examin s le choix others n est pas obligatoire Si certains choix ne n cessitent aucune instruction l instruction null doit tre utilis e Rappelons que le type discret exclut les r els ne pas confondre le type discret avec le type scalaire qui regroupe type r els et type discret D Feneuille I U T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 Exemple type T_MENTION is MAUVAIS PASSABLE ASSEZ BIEN BIEN TRES_BIEN NOTE INTEGER d claration pas terrible LA_MENTION T_MENTION case NOTE is
28. types acc s Cours 12 types priv s Cours 7 types d riv s Cours 10 et num rique 1 types entiers Cours 2 ce cours ci voir pages plus loin types r els Cours num rique 1 et 2 types t ches Cours t ches d but trimestre 2 voir planning et aussi le type prot g Construction d un type entier sign La r gle de construction d un type entier sign est d finie par le D S suivant t ype gt l identificateur Kis Cange htervalle H O Exemples remarquez l utilisation des trois mots r serv s Ada type is et range type T_TEMPERATURE is range 78 123 type T_ETAGE is range 5 12 type T_MONTANT is range 0 2_000_000 type T_COMPTEUR is range 0 3000 utilis en TD TP Algo D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 On rappelle que ces 4 types d entiers construits sont incompatibles entre eux Et c est heureux Les op rateurs ont t vus dans le cours pr c dent D S et litt raux num riques mod rem abs Les attributs des types entiers sont les m mes que ceux du type Character et plus g n ralement sont ceux des types discrets voir plus loin mot g n rique qui regroupe des types ayant des propri t s identiques Nous ne nous tendrons pas sur les op rateurs connus Seuls mod et rem m ritaient un bon d veloppement et ceci a d j t fait dans le cours pr c dent Enfin abs d signe
29. 3 fichier COURS3 DOC 30 06 02 10 Je retiens n 1 Quelques termes informations ou conseils retenir apr s deux bonnes semaines de cours Ada Le terme statique s applique aux informations d terminables la compilation Le terme dynamique s applique aux informations d terminables l ex cution La typographie d une lettre majuscule ou minuscule est sans importance sauf dans les litt raux cha nes STRING et dans les litt raux caract res CHARACTER Les litt raux cha nes sont d limit s par des guillemets et les litt raux caract res par des apostrophes Un litt ral cha ne peut tre vide un litt ral caract re ne peut l tre LATIN_1 NUL n est pas vide Les espaces ne sont pas permis dans les identificateurs les mots r serv s les litt raux num riques etc Les espaces sont permis dans les cha nes et les commentaires La pr sence d un point permet de distinguer les litt raux num riques r els des litt raux num riques entiers Le trait bas _ est significatif dans les identificateurs mais pas dans les litt rauxnum riques Un litt ral num rique entier ne peut pas avoir d exposant n gatif Le signe et ventuellement ne fait pas partie de la d finition syntaxique d un litt ral num rique c est un op rateur unaire Compiler c est l action ou la commande qui pr sente au compilateur un fichier source contenant du codage Ada dont on souhai
30. Strings Fixed une trentaine de sous programmes conna tre et voir dans le polycopi paquetages Il existe aussi un paquetage tr s simple mais tout aussi utile pour le traitement des caract res Ada Characters Handling voir aussi Recommandation On essaiera rapidement surtout quand on utilisera des variables de type cha nes de caract res de se servir du type Unbounded_ String qui transporte la longueur utile avec la variable et qui est extensible sans limite voir la ressource paquetage Ada Strings Unbounded analogue au paquetage Ada Strings Fixed cit ci dessus Le type Unbounded_ String est identique dans son comportement au STRING du langage PASCAL o la longueur utile est transport e dans le STRING lui m me et non limit 255 caract res Si par exemple on a d clar une variable CHAINE Unbounded_ String en lieu et place d un STRING comme CHAINE_ 80 il suffit d crire en une instruction seulement CHAINE To _Unbounded_ String T_JOUR IMAGE JOUR La longueur est g r e implicitement Plus souple non De m me la saisie d un Unbounded_String est extr mement facile utiliser CHAINE Get_Line c est tout Avec cette instruction le syst me attend la frappe d autant de caract res que vous voulez jusqu la frappe de la touche Entr e synonyme de fin de saisie Le nombre de caract res transport s par CHAINE peut tre connu tout moment gr
31. avec l interface AdaGide gnat 5 Voir l encore la page 6 sur la notion de langage informatique D Feneuille LU T 2002 cours n 1 fichier COURS1 DOC 30 06 02 La notion de composants logiciels De plus en plus on peut acqu rir gratuitement ou contre argent comptant des logiciels ou des briques de logiciels qu il suffit de savoir assembler entre eux ou composer serait plus juste de la m me fa on que l on peut acheter des composants lectroniques assembler Cette notion est assez nouvelle et promise un avenir vident m me si des informaticiens trop conservateurs accroch s leurs connaissances ant rieures et pas actualis es ne veulent rien savoir La diffusion et l information de ces composants ont subi un norme coup d acc l rateur gr ce aux services d Internet ftp Web et Email Voir le fichier Ada_et_le_Web html Savoir construire et proposer des composants s rieux et fiables est donc une des missions les plus importantes pour l informaticien de demain C est ce que nous emploierons montrer dans ce cours et r aliser en TD TP Disons le tout net Ada nous sera d une grande commodit pour cet objectif p dagogique Voir aussi les pages 5 9 de Barnes 5 dition Remarque Ce support de cours g n ralit s I valable pour la premi re semaine 2 heures se prolonge en premi re semaine 2 heures galement et en deuxi me semaine 2 heures encore
32. caract re vocal Le concept de langage est lui par contre li la notion de signe Un langage est commun ment d fini comme un syst me de signes propre favoriser la communication entre les tres quels qu ils soient m mes les tres inanim s qui ont peut tre une me Mais on s gare du sujet Trois l ments fondamentaux interviennent dans la d termination du signe le signifiant le signifi et le r f rent D o les trois aspects d un langage l aspect syntaxique champ des signifiants l aspect s mantique relations signifiants signifi s et l aspect pragmatique qui a pour mission de rendre compte du contexte de la communication champ des r f rents Les langages artificiels et en particulier les langages informatiques qui interviennent dans la communication homme machine n chappent pas ces distinctions Ainsi en programmation des consid rations syntaxiques permettent de d finir en quoi un programme est correct c est dire conforme aux r gles d criture impos es par la norme du langage mais ceci ne signifie pas qu il marche La syntaxe est ici l ensemble des r gles permettant la formation d expressions valides partir d un alphabet vocabulaire qui varie selon le langage Ces r gles sont elles m mes pr sent es dans un autre langage On parle alors de m talangage Il doit tre le plus clair et le moins ambigu possible voir ci dessous On distingue trois
33. dans la proc dure SECONDE ainsi PREMIERE COMPTEUR en utilisant la notation point e et pr fix e par PREMIERE D Feneuille I U T Aix 2002 cours n 5 fichier COURS5 DOC 30 06 02 12 Surcharge Le langage Ada permet en g n ral plusieurs d clarations de poss der le m me identificateur C est le ph nom ne de surcharge Quand un identificateur surcharg est utilis deux sous programmes par exemple le compilateur les distingue par leurs profils condition qu ils soient diff rents sinon il signale l ambigu t Cette diff rence peut se mat rialiser par le nombre de param tres effectifs le type et l ordre des param tres effectifs le type du r sultat pour les fonctions le nom des param tres formels dans le cas d une notation nominale voir plus loin Exemples connus Les proc dures ECRIRE ou LIRE dans le paquetage P_E_ SORTIE Lorsque le compilateur rencontre ECRIRE RESULTAT il d cide en fonction du type de RESULTAT param tre effectif lequel des sous programmes ECRIRE doit tre activ On peut surcharger AUSSI tous les op rateurs suivants c est tr s pratique mod rem abs not and or xor attention on ne peut surcharger in Fonctions Une fonction est un sous programme qui retourne une valeur et une seule Tous les param tres d une fonction sont obligatoirement d
34. els de m me type except Par exemple avec les d clarations suivantes IND INTEGER IND est de type entier pr d fini REL FLOAT REL est de type r el pr d fini On ne peut en aucune mani re effectuer directement l op ration REL IND ou crire REL IND Si on le souhaite vraiment il faut l exprimer haut et clair et faire une conversion explicite du type INTEGER REL IND ou IND INTEGER REL attention arrondi ou REL FLOAT IND ou REL FLOAT IND De m me avec la variable COMPTEUR d clar e dans la ressource P_MOUCHERON cf Algo ainsi COMPTEUR T_COMPTEUR valeur entre 0 et 3000 On ne peut pas m ler COMPTEUR et IND pourtant tout deux de type entier mais ce n est pas le m me La conversion d un r el en entier avec l criture INTEGER REL proc de par arrondi et non par troncature L arrondi se fait vers l entier le plus proche Pour les valeurs exactement au milieu c est dire ayant une d cimale 5 exacte l arrondi se fait vers l entier en s loignant de z ro Ainsi 1 5 est converti en 2 et 1 5 est converti en 2 En r sum on retiendra qu un type est caract ris par e Un ensemble de valeurs que peut prendre toute instance du type c est dire tout objet d clar de ce type e Un ensemble d op rations d crites l aide d op
35. en ivre des lectures et des critures de type pr d fini ne demandant pas d instanciation g n riques puisque cette notion est vue plus tard cours 8 Le terme de lecture est il d ailleurs bien compris des tudiants Pas toujours En effet il y a ambigu t si l on oublie que ces fonctionnalit s s adressent au programme et non l utilisateur Une lecture pour le programme consiste demander l utilisateur d crire avec le clavier Une criture du programme demandera une lecture sur l cran l utilisateur Attention au quiproquo SAISIR la place de LIRE et AFFICHER la place de ECRIRE seraient plus mn moniques Introduction On rappelle que pour faire jusqu aujourd hui des lectures et des critures de type pr d finis caract re CHARACTER cha nes de caract res STRING variables de type INTEGER ou type FLOAT on utilisait les ressources du paquetage P_E SORTIE Toutes ces ressources poss daient les identificateurs surcharg s bien commodes de LIRE et de ECRIRE Voir les pages du cours n 1 g n ralit s II o l on avait montr les sp cifications de ce paquetage Aujourd hui on va s int resser un peu leur r alisation et peut tre songer remplacer ces LIRE ou ECRIRE par des outils vrais de Ada On pourra poss der et voir aussi les r alisations body du paquetage P_E_ SORTIE diter un listing
36. en fait sur le type de base Mais FIRST et LAST par contre font bien r f rence au sous type La quAlification utilise un Apostrophe Sign e J Barnes L ordre d valuation des op rateurs logiques binaires n est pas d fini dans la norme sauf pour or else et and then Les terminaisons d instructions structur es Loop if case etc doivent se correspondre L abus de elsif n est pas interdit Les alternatives de choix dans un case sont statiques Toutes les possibilit s du case doivent tre couvertes d apr s le type de l expression s lect e Dans le case si others est utilis il doit tre l unique choix de la derni re alternative On peut qualifier l expression s lect e d un case pour diminuer le nombre des alternatives Un param tre de boucle for se comporte comme une variable locale du Loop Un loop nomm ou un bloc nomm doit comporter un nom ses deux extr mit s Pour avoir des listing propres utilisez un reformateur sous Linux c est un script identifi par gnatform sur notre syst me sous NT il est inclus dans l environnement AdaGide Utilisez la commande d impression I Voir aussi le questionnaire fin du cours n 1 Editer encore un fichier int ressant sur le CDRom cahier1 doc Visitez les sites de Ada_et_le_Web html D Feneuille LU T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 Cours n 4 Ada les tableaux 2 heures Th me Le type tableau Le type
37. global On a l allure g n rale suivante d claration et d finition d une proc dure panorama et explication procedure S_P liste des param tres formels is des param tres a IIM d claration des variables pagin locales la proc dure port e des variables locales les end S_P variables qui ne sont ni locales ni param tres et utilis es ici Exemple simple sont globales DANGER On d sire crire un module COMPTER qui dans un objet cha ne de caract res STRING va compter le nombre d occurrences d un caract re particulier En Ada on crirait les sp cifications de la proc dure ainsi on est toujours du c t formel procedure COMPTER CAR in CHARACTER VEC in STRING NB out NATURAL Il est clair que e seule est int ressante la valeur du caract re CAR chercher donc c est une donn e in e de m me le vecteur VEC n est pas modifi et seul son contenu nous int resse in e enfin le nombre de caract res NB trouv est typiquement un r sultat out Pour l utilisation on pourrait mettre en vre la proc dure avec des objets vrais ou effectifs qui remplaceront les objets fictifs ou formels ainsi COMPTER L PREMOT 1 12 NB_D COMPTER A MOTCOU 4 10 NB DE A effectifs Notez e les points virgules s parent les param tres formels les virgules s parent les param tres effectifs e le point virgule apr s
38. grandes techniques d criture de r gles avec des phrases tr s verbeuses expliquant en langage naturel utilis es avec le langage COBOL par exemple des dessins ou diagrammes syntaxiques souvent utilis s dans les manuels de PASCAL et parfois en Ada et enfin la notation BNF tr s pris e dans les descriptions des langages tels Algol C Ada etc En Ada la grammaire du manuel de r f rence utilise la notation BNF voir par exemple dans l aide de l IDE AdaGide Language RM annexe P Dans les langages de programmation l aspect s mantique est mis en vidence par les performances du programme c est dire par les relations qui existent entre un ensemble d instructions syntaxiquement correctes et un ensemble de r sultats L aspect pragmatique des langages utilis s en informatique moins net trouve quant lui son illustration dans des situations sp cifiques relations programmes machines programmes compilateurs machines virtuelles etc La communication entre l homme et la machine ne se fait pas directement mais par tapes qui impliquent les interventions successives du programmeur et de programmes sp cifiques assembleur macro assembleur compilateur diteur de liens chargeur interpr teur elle fait donc intervenir plusieurs niveaux de langages L intervention du programmeur lors de la r daction du programme a pour objet de traduire le langage naturel criture de sp cifications en un langage
39. la d claration de COMPTER ici ce n est pas une d finition Il annonce seulement le profil de la proc dure La d finition qui reste faire est caract ris e par le remplacement du point virgule par un is suivi du bloc comme on va le voir plus loin sur les diagrammes syntaxiques corps e Lataille des tranches de PREMOT et de MOTCOU sont diff rentes Voir la r alisation page 15 de COMPT jga R Autre exemple de proc dure param tr e bien connue TD n 2 page 4 algorithmique procedure NB_DE_CARAC CAR in CHARACTER is begin COMPTEUR 0 loop exit when FIN_RUBAN LIRE if CARCOU CAR then COMPTEUR COMPTEUR 1 end if end loop ECRIRE_COMPTEUR end NB_DE_CARAC CARCOU et COMPTEUR sont h las globales il n y a pas de variables locales CAR est param tre donn e D Feneuille I U T Aix 2002 cours n 5 fichier COURS5 DOC 30 06 02 Les sous programmes Ada d tails On vient de voir qu un sous programme est crit afin de r soudre un sous probl me apparu lors de l analyse d un probl me plus g n ral Il peut donc tre mis au point s par ment et au besoin se diviser lui m me en sous programmes Un sous programme est appel une unit de programme donc peut tre r utilis dans d autres programmes Les sous programmes peuvent tre regroup s de mani re logique avec d autres sous programmes ou d autres e
40. la visibilit e Une entit n est pas accessible donc pas r f ren able tant qu elle n a pas t d clar e Elle n a pas besoin d tre r alis e pour qu on y fasse r f rence cas d un sous programme pr sent en deux temps e Dans un sous programme les entit s accessibles sont les entit s d clar es dans ce sous programme en fonction de la r gle d ordonnancement et les entit s d clar es dans le corps des sous programmes qui l englobent e La port e d une entit d clar e dans un sous programme s tend ce sous programme et tous les sous programmes qu il d clare Masquage de visibilit Une entit peut ne pas tre directement visible si une autre entit d sign e par un m me identificateur a t d clar e dans un sous programme plus interne Cette nouvelle entit masque la premi re Exemple masquage de visibilit ici d un identificateur de variable procedure PREMIERE is COMPTEUR FLOAT variable r elle procedure SECONDE is COMPTEUR T_COMPTEUR variable enti re begin expression enti re gt Se correct Faux sinon COMPTEUR end SECONDE begin expression r elle gt correct Faux sinon COMPTEUR end PREMIERE A cet endroit la variable COMPTEUR r elle est masqu e par la variable COMPTEUR enti re Toutefois il est possible d acc der la premi re entit
41. lign return FLOAT MAX A B end LE_PLUS_GRAND A retenir la pr sentation compl te d un sous programme se fait traditionnellement en deux temps d abord d claration avec sp cification puis plus tard d finition ou corps avec sp cification et bloc Cependant Ada tol re l absence de d claration distincte de la d finition du sous programme car cette derni re reprend les sp cifications La pr sentation en deux temps n est donc pas obligatoire on peut l omettre quand les algorithmes sont simples et compacts On verra que cette pr sentation en deux parties est automatiquement demand e quand le sous programme est issu d un paquetage cours n 7 Elaboration port e visibilit et surcharge L laboration d une d finition cf le glossaire fichier dans le CDRom est le processus par lequel la d claration produit ses effets Ainsi une variable locale un sous programme n est v ritablement cr e qu au moment o le sous programme est mis en uvre donc au moment o le sous programme s ex cute On gardera l esprit cette notion qui permet d imaginer un certain dynamisme dans la d finition d une variable locale d un sous programme Se souvenir que l on labore une d claration et que l on ex cute une instruction La port e d un objet local un sous programme c est dire un objet d clar dans la partie d clarative s tend depuis la d claration de l objet jus
42. matique du terme i e pas de m lange Ainsi les objets de ce type auront les m mes propri t s les m mes op rateurs la m me plage de valeur etc Ce faisant c est dire en typant le plus possible on vitera des erreurs dites conceptuelles que v rifiera d ailleurs la phase de compilation et ces erreurs seront d couvertes tr s t t dans le processus de mise au point Ada comme tout langage propose des types pr d finis mais Ada offre aussi des possibilit s pour construire soit m me ses propres types types construits op ration privil gier le plus possible Cette technique sans tre imp rative est une composante d un travail bien fait et rigoureux et participe aux techniques du g nie logiciel On privil giera donc cette approche du typage syst matique le plus souvent possible mais Ada en fait comme on le verra nous y contraint souvent Ada est un langage dit fortement typ Ce qui veut dire que e Une variable une constante ou un litt ral appartiennent un type et un seul c est le principe m me de l instanciation e Toute op ration sur une instance d un type c est dire une variable une constante ou un litt ral de ce type doit appartenir l ensemble des op rations connues pour les instances de ce type e Aucune conversion implicite de type n est effectu e sur une valeur M me les op rations arithm tiques ne sont d finies qu entre entiers de m me type ou qu entre r
43. op rande de gauche est gal l op rande de droite si pour chaque composant de l op rande de gauche il existe un composant homologue de l op rande de droite qui est identique Op rateur de relation r gles Un tableau vide sera toujours inf rieur un tableau contenant au moins un composant Pour des tableaux non vides l op rande de gauche est inf rieur celui de droite d s que le premier composant de l op rande de gauche est inf rieur son homologue de l op rande de droite On peut donc comparer des tableaux unidimensionnels de tailles diff rentes mais de composants discrets rappel D Feneuille LU T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 Par exemple les litt raux cha nes caract res tant aussi des tableaux Anticonstitutionnellement est inf rieur Zoulou cf le dictionnaire de m me et c est a priori plus surprenant 7320 est sup rieur 2999 Attention ne pas confondre avec les valeurs num riques 320 et 2999 Exemples d clarations et utilisations type T_VECT_CAR is array POSITIVE range lt gt of CHARACTER subtype T_INDICE is POSITIVE range 1 20 subtype T_MOTS is _VECT_CAR T_INDICE PREMOT MOTCOU T_MOTS PRI EMOT et MOTCOU sont alors des objets tableaux de 20 caract res indic s de 1 20 Quelques exemples ici 4 exemples d op rations possibles
44. pas le temps de s effectuer l utilisateur ne peut prendre la main et la saisie est vide C est bien regrettable Il faut absolument quand on utilise un GET_LINE contr ler si le nombre de caract res saisis est gal la taille maximum instanci e NB_CAR_SAISIS SSAGE LENGTH et dans ce cas l il faut purger la marque de fin de saisie restante Dur On peut pr voir un STRING plus grand mais ce n est pas toujours r aliste On verra la r alisation du LIRE d un STRING dans P_E_ SORTIE On peut refaire la proc dure GET_LINE ainsi surcharge E D Feneuille IUT Cours Ada 5 bis E S simples 2002 fichier cours5_B DOC 30 06 02 procedure GET_LINE S out STRING L out NATURAL is S_BIS STRING S RANGE L_BIS NATURAL EN hf sms S_BIS est S_BiSestun clone des clone de S begin TEXT_IO GET_ LINE S_BIS L BIS if L_BIS S LENGTH on travaille sur S_BIS avec le then EXT_IO SKIP_LINE GET LINE de TEXT IO end if end GET_LINE Xe surcharge nickel S S_BIS H on recopie S_BIS sur S L L BIS En conclusion les saisies de caract res et de cha ne de caract res ne sont pas triviales Le point crucial reste le tampon qui n est pas toujours purg et un skip_line syst matique ne r gle rien Une solution or
45. premier programmeur de l histoire La comtesse mourut 36 ans d un cancer apr s s tre beaucoup adonn l alcoo l l opium et aux courses de chevaux Babbage lui mourut bien plus tard 80 ans en 1871 Pour la petite histoire soixante quinze ans plus tard en 1946 en Pennsylvanie naissait le premier vrai calculateur lectronique baptis ENIAC Electronic Numerical Integrator And Calculator Pour en savoir plus consulter http dept info labri u bordeaux fr dicky HistInfo html Un an avant la naissance de Ada Byron n e en 1815 Date laquelle il perd son p re et sa femme 7 On dit aussi g rie ou inspiratrice En aucune fa on elle ne fut sa ma tresse ni sa femme comme l crivent parfois certains textes sensation sur le langage Ada pour calculer les nombres de Bernouilli notamment Cod s en langage PL 1 produit IBM destin remplacer FORTRAN et COBOL et qui n eut pas de succ s D Feneuille LU T 2002 cours n 1 fichier COURS1 DOC 30 06 02 DIAGRAMMES SYNTAXIQUES D S ou diagramme de CONWAY Ada est un langage de programmation on vient de le voir dans les g n ralit s Comme tous les langages celui ci ob it des r gles grammaticales pr cises syntaxe qui peuvent tre d crites e soit par des phrases elles sont souvent lourdes et difficiles comprendre c est le cas des pr sentations d un vieux langage le COBOL d finitions verbeuses
46. rations d galit et d in galit et Ce sont les propri t s communes de tout type dit affectation e Une relation d ordre est d finie entre les diverses valeurs possibles On dispose donc en plus e des 4 op rateurs de relation lt gt lt gt e des tests d appartenance un intervalle ou un soustype in et not in e Les types scalaires poss dent une borne inf rieure et une borne sup rieure que l on peut conna tre par les attributs FIRST et LAST Exemples INTEGER FIRST et INTEGER LAST ou FLOAT FIRST et FLOAT LAST dans ce cas ces valeurs d pendent de l impl mentation num rique e Des contraintes d intervalle avec range peuvent tre appliqu es sur les types scalaires Diff rence les attributs vus avec les types discrets ci dessous s appliquent aussi aux types scalaires sauf deux VAL et POS En effet avec les types discrets chaque valeur poss de un rang avec les types r els la notion de rang n existe pas Donc ni VAL ni POS avec les r els seule diff rence retenir Les types scalaires donc aussi les types discrets ont entre autres les propri t s suivantes e toute valeur d un type scalaire ou discret sauf la derni re poss de un successeur SUCC e toute valeur d un type scalaire ou discret sauf la premi re poss de un pr d cesseur PRED e toute valeur VAL d un type discret poss de un rang POS Sp cifique aux types discrets rappel
47. repr senter cet instant l N imaginez pas que des caract res espaces sont plac s a priori au bout du STRING ce que faisait la proc dure LIRE La proc dure GET n est pas identique la proc dure LIRE de P_E_ SORTIE En effet la proc dure GET demandera autant de caract res saisir qu il y en a eu de d clar s dans la contrainte d instanciation Il n y a pas de dynamisme Si on appuie quand m me sur ENTREE avant d avoir tap les quelques caract res attendus l algorithme ne progresse pas et attend le reste Instruction proscrire sauf sur fichier ventuellement nous y reviendrons Si vous tapez plus de caract res et appuyez sur ENTREE le surplus restera dans le tampon et sera utilis par le GET suivant ventuel moins qu un SKIP__LINE ne vide tout cela T T PUT_LINE est simple comprendre c est un PUT termin par un NEW_LINE Attention cette instruction est r serv e aux STRING Pas de PUT_LINE avec une variable de type CHARACTER INTEGER FLOAT etc Donc PUT_LINE MESSAGE affiche sur cran la position initiale du curseur la totalit du STRING ici MESSAGE qui sera pass en param tre puis place le curseur au d but de la ligne suivante GET_LINE est la solution au manque de dynamisme critiqu e plus haut propos du GET qui est prosc
48. type diff rent La r ponse la bonne r ponse Ada est oui mais c est la g n ricit patience a viendra Caract ristiques d un objet par rapport un module En algorithmique on a observ que des assertions bien plac es aux endroits strat giques permettaient de mieux comprendre l effet la fonction du module Les bons endroits se situent au d but ant c dent du module et la fin cons quent En effet si l on ram ne la description du module au moment de l utilisation son identificateur on peut lire la s quence suivante D Feneuille I U T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 assertions avant gt la lecture compar e des NOM_DU_MODULE assertions autour de assertions apr s gt l utilisation du module aide comprendre son effet traduit en Ada commentaires sur l ant c dent NOM_DU_MODULE commentaires sur le cons quent Les assertions ou leur traduction en commentaires programme doivent porter sur les objets int ressants e au d but sur les objets utiles n cessaires au module pour sa mise en vre on parle d objet donn e c est l ant c dent e la fin sur les objets que le module a modifi s ou initialis s on parle d objet r sultat c est le cons quent e Quand un objet se trouve tre la fois un objet donn e et un objet r sultat on parle d objet donn e r sultat tout
49. utiliser en plus la proc dure A_LA LIGNE Le r el est crit sous la forme signe partie enti re point d cimal et partie d cimale le point d cimal est toujours pr sent le signe est remplac par un espace Quant aux deux champs num riques ils suppriment les Z ros non significatifs procedure Lire Le_ Reel out Float permet d acqu rir un FLOAT dans une base quelconque 2 16 avec validation on recommence jusqu ce que la valeur soit valable Le point d cimal est obligatoire la saisie Proc dures d entr es sorties sur les caract res procedure Ecrire Carac Character permet de visualiser un caract re partir de la position initiale du curseur Si l on souhaite aller la ligne ensuite utiliser en plus la proc dure A_ LA LIGNE procedure Lire Carac out Character j permet d acqu rir un caract re unique Lecture tamponn e c est dire que l on peut effacer le caract re saisi d o n cessit de terminer la saisie par un RC appui sur la touch ntr e L tampon est purg apr s la prise en compte de ce caract re D Feneuille LU T 2001 cours n 1 G n ralit s III fichier COURS1_C DOC 30 06 02 Proc dures d entr es sorties sur les cha nes de caract res On pourra lui pr f rer plus tard les paquetages pr d finis pro
50. y a peu de compilateurs normes logiciels hyper programmes charg s de v rifier si un programme crit dans le langage en question respecte la norme qui respectent eux m mes la norme Ceci signifie par exemple qu un programme valable sur une machine A contr l avec un compilateur B peut ne plus l tre sur une machine C avec le compilateur D Tr s f cheux quand on veut faire du g nie logiciel c est dire de la production industrielle de logiciels Ada est l un des rares langages qui oblige les vendeurs de compilateurs faire agr er chaque ann e leur compilateur par une s rie de tests de validit A titre d anecdote s il est vrai que le langage C le plus connu et utilis actuellement est normalis il est aussi vrai que rien n oblige les compilateurs respecter cette norme ce qui h las arrive tr s souvent Et l actualisation moderne du C nomm e C langage moderne dit objet que l on tudiera apr s Ada au deuxi me trimestre et tr s en vogue n est normalis que depuis peu 7 pour Ada95 l erreur de compilateurs tardifs n a pas t reconduite Il existe m me un compilateur totalement gratis free in english le GNAT copiable via internet service ftp Voir fichier Ada_Web html sur le CDRom le premier vrai livre sur Ada remonte 1982 et c est le manuel de r f rence en anglais of course 14 disponible gratuitement en ftp attention beaucoup de pages En ligne
51. 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 LES LITTERAUX NUMERIQUES Ada Avertissement Ce module de cours fait suite celui des Diagrammes Syntaxiques D S qu il enrichit en l illustrant C est l occasion aussi de faire de l Ada sans en avoir l air Il s inscrit donc bien dans le d but du cours sur le langage Ada g n ralit s ID Le concept de litt ral num rique Ada Pour d finir ce concept on pourrait dire qu il s agit de la fa on de d noter ou repr senter en Ada une valeur num rique Cette d notation est bien s r assujettie des r gles strictes que l on peut noncer sous forme explicite ou sous forme de D S ou en BNF et nous voil revenus au module de cours pr c dent Exemples d criture a les litt raux entiers criture o il n y a pas de point d cimal 13 est un litt ral num rique entier c est vident Mais 1_993 est aussi un entier plus tonnant non mais ceci est vu en BNF pages 4 et 5 Et que dire galement des quatre suivants 7 123 E2 2 01_0010 16 2A3C 12E 8 Les trois premiers sont dits entiers bas s et le quatri me d note un grand entier revoir b les litt raux r els on note la pr sence d un point d cimal 3 14159_2653 est un litt ral num rique r el facile mais aussi les deux suivants 6 02E 24 et 2 101 01 E1 tout ceci m rite des explications et donc des r gles Remar
52. DARD retrouvez les dans le polycopi paquetages subtype NATURAL is INTEGER range 0 INTEGER LAS subtype POSITIVE is INTEGER range 1 INTEGER LAS A noter que e la d claration d un sous type ne d finit pas un nouveau type e si l indication de sous type ne comprend pas de contrainte rare mais possible alors le sous type est identique au type Cette particularit est parfois int ressante on en verra des exemples plus tard Classification des types de donn es passer en premi re lecture mais re voir souvent bien s r Les types de donn es sont class s de la fa on suivante une pr sentation arborescente serait plus lisible e Type affectation e type de donn es acc s e sur sous programmes e sur objets statiques ou dynamiques e type de donn es scalaire s e types discrets e types num ratifs e types entiers e sign s e modulaires e types r els e types flottants e types fixes e binaires e d cimaux e types de donn es composites e type tableaux e types articles e types tiquet s e Types sans affectation e types t ches types prot g s e types priv s limit s e types fichiers D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 Op rations attributs sur les types discrets CHARACTER entiers et num ratifs et parfois sur les r els T est un type ou un sous type mais attention dans le cas d un sous type i
53. E alors CARCOU re oit le caract re A et les autres frappes sont annul es elles sont purg es cause du SKIP__LINE qui revient au d but du tampon e Avec GET CARCOU si on effectue les m mes saisies A puis B puis C puis Entr e alors CARCOU re oit bien A mais les autres frappes restent dans le tampon de lecture elles rempliront automatiquement le prochain GET venir sans frappe au clavier m me si le GET est situ de nombreuses instructions plus loin Notez que l utilisateur n a plus taper de caract res ni appuyer sur ENTREE Int ressant mais videmment conna tre Notez encore que apr s un troisi me GET le caract re C serait lu mais pas la marque correspondant Entr e le tampon n est pas purg ce qui peut poser un probl me si la prochaine instruction d entr e est la saisie d un String qui sera alors vide 0 caract re Comment en cours Difficile T En r sum l instruction SKIP_LINE permet de vider le tampon s il n est pas vide y compris la marque mod lisant la touche ENTREE Mais un SKIP_LINE quand le tampon est d j purg attend des frappes quelconques termin es par la touche ENTREE et nettoie tout Voyez pour comprendre dans P_E_ SORTIE les r alisations des proc dures VIDER_ TAMPON et PAUSE D Feneuille IUT Cours Ada 5 bis E S simples 2002 fichier cours5_B DOC 30 06 02
54. Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 M Notations B N F Une repr sentation tr s utilis e en th orie des langages voir cours correspondant niveau BAC 3 est la notation dite B N F Backus Naur Form Outre son aspect purement descriptif d une grammaire elle est sous tendue par une th orie math matique qui la rend indispensable De plus elle peut tre directement utilis e par un traitement de texte sans graphisme ou un analyseur syntaxique Malgr cela nous ne l utiliserons pas dans ce cours car elle est moins lisible que les diagrammes syntaxiques Cependant elle est utilis e dans le manuel de r f rence Ada voir par exemple Barnes pages 595 609 et de ce fait doit tre connue Sept symboles particuliers m ta symboles sont utilis s quisignifie est d fini comme qui signifie ou bien ce symbole marque donc l alternative quisignifie que les l ments entre les crochets peuvent tre pr sents 0 ou 1 fois quisignifie que les l ments entre les accolades peuvent tre pr sents 0 1 ou plusieurs fois qui encadrent des l ments terminaux correspondant aux cartouches arrondis des diagrammes syntaxiques e lt gt qui encadrent des l ments non terminaux correspondant aux cartouches rectangulaires des diagrammes syntaxiques e qui permettent de regrouper des parties de d finition ces parenth ses sont utilis es chaque fois qu il y a a
55. G3 SPROG procedure SPROG4 is SPROG4 mas i end SPROG4 end PRINCIPALE end SPROG2 L ex cution de ces utilisations ou appels est dans l ordre PRINCIPALE SPROGL SPROG3 SPROG4 SPROG2 SPROG4 SPROGL SPROG3 SPROG4 SPROGA4 Je vous laisse imaginer la complexit qu il y a suivre donc comprendre l organisation d utilisations plus professionnelles ce qui est le cas de tous les algorithmes vrais dignes de ce nom Le param trage Introduction Revenons notre probl me simple du d but savoir lecture d un objet LA VALEUR de type T_DISCRET Compliquons il ne s agit plus de lire 2 fois le m me objet LA_ VALEUR mais de lire une fois cet objet et une autre fois un autre objet L_AUTRE_ VALEUR mais tout deux de m me type T_DISCRET En reprenant notre programme EXEMPLE on aurait deux fois la presque m me s quence c est dire la s quence dite de lecture o changerait seulement la ligne d affectation de la cha ne lue CHAT la variable en question respectivement LA _ VALEUR et L_AUTRE_ VALEUR Sch matiquement T C est la m me id e que pour le param tre d une boucle for qui n existait plus la sortie end loop D Feneuille I U T Aix 2002 cours n 5 fichier COURS5 DOC 30 06 02 procedure EXEMPLE is declare begin code presque identique declare begin end EXEMPLE
56. LU T Aix D partement g nie informatique G nie logiciel 1 trimestre 2002 2003 semaines 1 4 Polycopi tudiants pour le cours premi re partie cours 1 5B Daniel Feneuille Nom tudiant Panorama complet des 14 premi res semaines num rot es et en gris les modules o intervient le langage Ada Voir page suivante le d tail du cours semaines 1 11 4h semaine Cette grille sera comment e en cours TD TP 4 heures TD TP 4 heures Ada Bases 4h Ada Cours Ada 2 heures EX 10 TD et TP Shell 9 TD et TP Shell 2 TD et TP Shell 1 diteur V I diteur V I Cours n 1 Ada semaines 1 et 2 g n ralit s Objectifs des supports de cours du langage Ada Les cours Ada sont faits en demi promotion suivant la planification d taill e ci dessous Ils sont accompagn s de polycopi s dont celui ci est le premier exemplaire Il n est pas question pour les tudiants de se satisfaire des documents accompagnant le cours car s ils reprennent bien l essentiel de ce qui y sera dit ils sont insuffisants pour bien conna tre le langage Les supports de cours n ont pas non plus la pr tention de se substituer aux bons livres dont vous trouverez la liste plus loin notez que pour chacun des titres propos s au moins un exemplaire est en biblioth que endroit que je vous invite conna tre et fr quenter Enfin le cours est troitement en synergie ave c les TD et les TP qui s
57. MERCREDI JEUDI VENDREDI SAMEDI DIMANCHI type T_FRUIT is ORANGE POMME POIRE Ra T subtype T_JOUR_OUVRABLE is T_JOUR range LUNDI VENDREDI subtype T_FIN_SEMAINE is T_JOUR range SAMEDI DIMANCHE type T_ENTIER is range 8 23000 1E_JOUR T_FIN_SEMAINE DIMANCHE ENTIER INTEGER 6 ntier pr d fini NATUREL NATURAL 6 ENTIER T_ENTIER 10 On remarque deux types num ratifs d clar s avec deux sous types et la d claration d un type entier contraint entre 8 et 23000 Quatre variables sont d clar es ensuite et initialis es Exercice n 1 Evaluer les expressions consultez attributs pr d finis fichier attribut1 doc Question_1 T_JOUR SUCC T_JOUR_ OUVRABLE LAST Question_2 T_JOUR_OUVRABLE SUCC T_JOUR_OUVRABLI ET LAST Question_3 T_FRUIT POS POIRI jra Question_4 INTEGER POS ENTIER Question_5 NATURAL POS NATUREL Question_6 T_FIN_SEMAINE POS LE _JOUR Question_7 T_ENTIER POS L_ ENTIER Aide On trouvera en partie commune sur machine le programme dont est extrait cet exercice On copiera le fichier associ EXO1_ SUP ADB dans sa partition et on lui fera subir le cycle classique compilation ditio
58. NBOUNDED_ STRING begin IRE CHAI VALEUR exit exception when others gt null ou message end end loop T_DISCRET VALUE TO_STRING CHAI Les concepteurs de Ada la mort dans l me mais pour des raisons de conversion de programmes ont eux aussi conserv l horrible goto Respectivement s rement le meilleur Eiffel et videmment le plus utilis C C est toujours l Ada tollah qui parle D Feneuille I U T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 2 On a une structure r p titive cause des erreurs ventuelles qui permet de recommencer la saisie et un bloc interne qui d clare chaque fois une variable UNBOUNDED_ STRING qui est transform e apr s lecture en la valeur discr te quivalente cette notion a t expliqu e dans un cours pr c dent On d sire deux ou plusieurs endroits d un algorithme mettre en vre cette s quence Voyons le programme utilisateur EXEMPLE procedure EXEMPLE is D clarations des objets locaux la proc dure EXEMPLE Code ou instructions dupliqu s end EXEMPLE On remarque bien les deux s quences identiques qui gonflent anormalement l algorithme On va crire une fois pour toute la s quence mais ailleurs l identifier puis l utiliser en la nommant autant de fois que n cessaire sans la r crire Les marquent un peu partout d autres instruc
59. ONSE To_Upper REPONSE mise en majuscules end loop return REPONSE O end OUI Autre forme bien plus l gante notez le function OUI TEXTE in STRING return BOOLEAN is REPONSE CHARACTER begin loop ECRIRE TEXTE LIRE REPONSE REPONSE To_Upper REPONSE en majuscules exit when REPONSE O or REPONSE N end loop return REPONSE O end OUI La sortie d une fonction autrement qu avec return provoque l exception PROGRAM_ERROR D Feneuille I U T Aix 2002 cours n 5 fichier COURS5 DOC 30 06 02 14 Appel de sous programmes L appel c est dire l utilisation effective d un sous programme est possible dans la port e de sa d claration L appel entra ne d abord le passage ou transmission des param tres c est l association formel amp effectif ensuite vient l laboration de la partie d clarative du sous programme puis enfin l ex cution de la s quence d instructions de la partie instructions du bloc L criture d une utilisation de sous programme est compos e du nom du sous programme appel suivi ventuellement d une liste de param tres effectifs La correspondance entre param tres effectifs et param tres formels peut tre faite de trois mani res diff rentes e La notation positionnelle Le rappel du nom du par
60. RE nombre de L NB_DE_ A_LA AUTRE AN end loop end TS_ MOUCHERON1 Cette proc dure ind pendante identifi e TS_MOUCHERON1 utilise le composant logiciel MOUCHERON1 lui m me compos entres autres des nouvelles briques NB_CAR et NB_DE_L qu utilise TS_MOUCHERON1 Exemple n 5 tir du polycopi algorithmique TD n 2 procedure Nb_De_ Carac Car in Character is begin Compteur 0 loop Param tre formel exit when Fin_ Ruban Lire oo if Carcou Car then Compteur Compteur 1 end if end loop Ecrire Compteur end Nb_De_Carac Il s agit d une brique r utilisable d un composant logiciel Mais comme on l a vu en algorithmique la proc dure est formelle on dira param tr e Le param tre entre parenth ses n est pas concret il ne correspond aucun identificateur vrai A revoir en semaine 4 cours n 5 sous programme Exemple n 6 Notion de paquetage composant Ada privil gi Il s agit de survoler la partie sp cifications d un composant logiciel que nous utiliserons pendant quelques semaines En Ada on peut agr ablement mod liser un composant avec ce que l on appelle un paquetage cette notion sera bien approfondie plus tard semaine 5 Pour aujourd hui nous allons uniquement nous int resser la partie contrat ou sp cifications En effet un utilisateur potentiel d une ressource n a besoin de conna tre que le
61. X LAST vaut ROUGE S il existe une proc dure ECRIRE elle m me surcharg e pour les trois types il y a ambigu t crire ECRIRE ROUGE Il faut qualifier par exemple ainsi ECRIRE T_COULEUR ROUGE LA Les d clarations des variables ou instanciation des types sont semblables celles d j tudi es DEBUT_SEMAINE DEBUT_WEEK_END i T_JOUR PEINTURE T_COULEUR Une variable pourra prendre une quelconque des valeurs du type Par exemple DEBUT_SEMAINE LUNDI Les symboles qui d notent les litt raux des types num ratifs sont des identificateurs comme les autres On peut aussi dans un type num ratif m ler les caract res et seulement cela et les symboles type T_REPONSE is OUI NON 1 A AUTRE pas facile revoir Un type num ratif est ordonn par exemple pour le type T_COULEUR on aura les relations VERT lt JAUNE lt ORANGE lt ROUGI 5a L ordre est induit par celui de num ration Parmi les attributs d finis sur ces types IMAGE permet de convertir un symbole de type num ratif en la cha ne de caract res associ e et VALUE est l op ration r ciproque _COULEUR VALUE ROUGE sera l identificateur ROUGE __COULEUR IMAGE ROUGE sera la cha ne de caract res ROUGE Au
62. a on sauvage avec des outils tels que l organigramme qui obligeait le langage d impl mentation utiliser le goto perfide instruction permettant de faire presque n importe quoi Vers les ann es 1980 la programmation structur e a montr ses limites cause surtout de la dimension impressionnante de certains logiciels centaines de milliers d instructions voire des millions La r utilisation grande chelle s imposait et la modularit n tait plus suffisante on allait vers la g n ricit la d rivation de classes donc vers les objets En 1983 Ada proposera avec les paquetages et la g n ricit une premi re tape l approche objet par composition nous nous y entra nerons bient t Puis autour de 1990 arrivent les langages objets tels Eiffel et C Depuis 1995 et pour rester au top Ada renomm Ada95 permet les objets ainsi que de bien belles autres choses notamment pour la gestion et le temps r el nous y reviendrons Pour le moment restons modestes et voyons les l ments de programmation modulaire D une s quence d actions au sous programme non param tr En nous appuyant sur une s quence d j vue nous allons introduire simplement le concept de proc dure qui sera approfondi ensuite Soit le module de lecture d un objet LA _VALEUR d un type discret sch ma bien connu pr sent dans P_E_ SORTIE form d un Loop engobant un bloc loop declare CHAI U
63. a sp cification est l l ment essentiel de la d claration du sous programme c est un contrat Exemples de sp cifications T procedure PLACER LIGNE COLONNE in T_COORDONN positionne le curseur sur un cran E procedure TRIER A B in FLOAT MIN MAX out FLOAT trie deux nombres A et B MIN le plus petit MAX le plus grand function X Y in MATRICE return MATRICE ffectue le produit de deux matrices hard function LE PLUS GRAND A B in FLOAT return FLOAT MAX action identique l attribut MAX sp cification de sous programme procedure d signateur arque de type partie formelle D Feneuille I U T Aix 2002 cours n 5 fichier COURS5 DOC 30 06 02 d claration de sous programme sp cification de sous programme de partie formelle expression mode Remarques e les sp cifications de param tre formel sont s par es par un point virgule e les identificateurs de param tres peuvent tre regroup s liste d identificateurs et s par s par une virgule e on peutinitialiser un param tre formel de mode in seulement revoir e le mode peut tre absent implicitement c est alors de mode in La r alisation du sous programme Le corps constitue la partie r alisation du sous programme Il va indiquer comment sont r alis es les op rations que la sp cification laisse esp rer
64. a seule remarque importante est qu il faut au moins une instruction mais exit en est une la rigueur l instruction vide null qui ne fait rien Exemple simple mais formel BOUCLE _ 1 c est le nom de la boucle loop exit when condition end loop BOUCLE _ 1 za Il n y a rien de bien nouveau si ce n est l tiquetage de la boucle avec BOUCLI Sch ma d it ration En plus du codage de la condition de sortie avec exit when on peut utiliser le tr s traditionnel tant que outil que poss de tous les langages Cette technique n apporte rien de plus puisqu elle n est que la contrapos e de la condition de sortie le tant que exprimant la condition pour rester dans la boucle Mais le tant que while ne peut s inscrire qu en t te du loop et une seule fois perdant ainsi la belle propri t du exit qui pouvait tre partout dans la boucle et m me de multiples endroits Voyons un exemple bien connu cf Algorithmique loop Jusqu fin de ruban exit when FIN_RUBAN p LIRE end loop se code autrement avec le tant que ainsi while not FIN _ RUBAN loop end loop Les concepteurs du langage Ada ont propos le tant que le while pour s duire les programmeurs qui auraient t f ch s de ne pas retrouver leur bon vieil outil Ceci permet ainsi de traduire facilement en Ada des algorit
65. abriquer un vrai type T_COMPLEXE c est dire une structure de donn es mais avec ses op rateurs voir plus tard la notion de type abstrait de donn es On r alisera le type T__ COMPLEXE au cours n 7 En TP on verra le type T_Rationnel D Feneuille LU T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 13 Les proc dures rappel Une proc dure est un sous programme qui utilise et ou modifie un certain nombre de param tres ventuellement ne fait aucune modification comme la proc dure ECRIRE de P_E_ SORTIE Comme pour les fonctions les param tres donn es sont d clar s en faisant pr c der leur type du mode in De plus les param tres r sultats sont d clar s en faisant pr c der leur type par le mode out dans la sp cification du sous programme Les param tres donn es r sultats seront d clar s en faisant pr c der leur type par le mode in out dans la sp cification du sous programme Lors de l utilisation d une proc dure on parle parfois d appel de la proc dure les param tres effectifs correspondant des param tres formels r sultats out ou donn es r sultats in out doivent tre des variables obligatoirement pas de litt raux Mais les param tres effectifs correspondant des param tres formels donn es in peuvent tre soit des variables soit des litt raux plus largement ce sont des expressions mais ce concept n est pas si simple et sera vu plus tard
66. ale affich e ou sur le CDRom Remarque Nous avons t oblig s de faire un d coupage de la mati re enseigner comme cela est propos partout avec des th mes comme les paquetages la g n ricit les tableaux les exceptions les pointeurs les objets etc Mais c est bien l une des difficult s du langage Ada o en fait tout se tient et o il faudrait pouvoir enseigner tout en m me temps impossible C est dans cet esprit que nous serons souvent amener voquer un th me de fa on un peu superficielle pour mieux y revenir plus tard par exemple nous parlerons vite des paquetages et les sous programmes cours g n ralit s III semaine 2 pour les tudier plus en d tail plus tard semaines 4 et 5 Langage Quid Contrairement la notion de langue o on s int resse au caract re vocal la notion de langage fait r f rence la notion de signes Pour le pilotage d un ordinateur par l homme la communication passe aussi par un langage dit artificiel le langage de programmation Pour tre compris de l ordinateur le pilotage utilise des instructions Nous sous ce pronom se cachent aussi les noms de quelques coll gues alias les TWO_BE_THREE de l info qui formeront l ossature au premier trimestre de l encadrement et du d marrage Ada TD et TP ainsi qu en Algorithmique avertissement que certains ne prennent pas au s rieux Voyez les redoublants sinc res pour en savoir plus
67. am tre formel est absent de la liste des param tres effectifs C est l ordre des param tres qui permet d effectuer la correspondance Voir exemple 1 e La notation nominative Le nom du param tre formel est rappel avec son homologue effectif Les param tres formels peuvent tre donn s dans n importe quel ordre Voir exemple 2 e La notation mixte Il est permis d utiliser la fois la notation positionnelle et la notation nominative la premi re doit toutefois pr c der la seconde Voir exemple 3 Exemple procedure BORNES A B C in FLOAT X1 X2 out FLOAT L appel s crira T BORNES 1 0 3 4 2 8 21 22 pas d apparition de nom formel 2 BORNES B gt 3 4 A gt 1 0 C gt 2 8 X1 gt Z1 X2 gt 272 3 BORNES 1 0 3 4 X1 gt Z1 C gt 2 8 X2 gt Z2 m lange Valeurs par d faut Il est possible d associer aux param tres formels de mode in seulement des valeurs par d faut Ces valeurs sont attribu es aux param tres formels lorsque leurs homologues effectifs ne sont pas pr sents dans la liste lors de l utilisation du sous programme Exemple procedure PLACER LIGNE in T COORDONNEE COLONNE in T_COORDONNEE 1 en cas d absence de param tre effectif n 2 alors la valeur de la colonne est forc e 1 Les appels suivants sont autoris s PLACER 20 quivaut PLACER 20 1
68. ans le paquetage STANDARD voir dans le polycopi paquetages officiels Ada Ces valeurs sont ordonn es donc poss dent un rang de 0 255 Les valeurs ditables ou graphiques du n 32 au n 126 et du n 160 255 sont d not es entre apostrophes ex a P E etc Les valeurs non ditables ou de contr le du n O au n 31 et du n 127 au n 159 sont d not es avec leur identificateur sp cifique en g n ral deux trois lettres sans les apostrophes videmment par exemple bel le caract re de rang 7 qui met un bip sonore quand on l dite l cran Les identificateurs des caract res notamment ceux dits de contr le sont h las peu mn moniques aussi le paquetage Ada Characters Latin_1 consulter dans le polycopi d clare un ensemble de constantes permettant de nommer autrement tous les caract res seuls les chiffres et les lettres majuscules n ont pas de nom Par exemple dans Ada Characters Latin_1 le caract re guillemet est nomm Quotation sinon il se d note ainsi dans STANDARD En corollaire de la relation d ordre il existe des op rations clairement comprises gr ce aux 6 op rateurs gt lt gt lt auxquels on ajoutera les op rateurs d appartenance un intervalle ou un sous type inetnot in Exemples if Carcou in Anes R J then if Carcou L then if Carcou in T Majuscules then if Carcou then L
69. anvier 1815 Cette union fut malencontreuse la m sentente conjugale fut aggrav e par des difficult s financi res Le 10 d cembre 1815 lady Byron donnait naissance une fille Ada le 15 janvier 1816 lord Byron chassait sa femme de chez lui Puis regrettant cette d cision il tenta vainement d obtenir une r conciliation Il dut se r signer en avril signer un acte de s paration qui le d pouillait de sa femme de sa fille et de la moiti de sa fortune L affaire fit scandale et la soci t qui l avait adul se d cha na contre lui On arr te l le r cit de cette saga On pourra en savoir plus dans les bonnes encyclop dies notamment Universalis dont sont extraites apr s puration ou arrangements ces quelques lignes On verra avec le papier sur Babbage page suivante que la vie de notre Ada n est pas mal non plus Tel p re telle fille Pour en savoir plus voir http www moS com MHI HISTOIRE lovelace htmet aussi en http www mos com MHI HISTOIRE babbage htm On se contentera du grand p re et du p re et c est d j pas si mal Elle ce n est pas notre Ada mais sa demi tante comme on va le voir 7 P re de notre Ada Le plus connu de cette illustre famille dandy et po te romantique Coquin ses heures 3 L oui cette Ada c est la n tre Augusta Adela de Byron future comtesse de Lovelace La seule enfant donc qu il reconnut D Feneuill
70. appel langage source qui peut tre un langage symbolique langage assembleur le plus loign du langage naturel caract ris par une syntaxe rigide un macro langage utilisant des macro instructions aux fonctions plus complexes que celles des instructions proprement dites un langage volu Fortran Algol APL Cobol Basic PL 1 Pascal Ada Eiffel C C Prolog Java etc orient vers les probl mes et dont la structure est la plus proche de celle du langage naturel avec une syntaxe et un alphabet qui est une extension de l alphabet naturel lettres signes chiffres expressions Tous ces langages forment ce qu on appelle la classe des langages de programmation On note aussi les langages dits de requ te qui servent la consultation de bases de donn es SQL par exemple pour Structure Query Language et en micro informatique des langages sp cifiques comme Dbase en baisse pour utiliser des gestionnaires de donn es et Microsoft Access plus r cent membre de la trilogie Bilou Enfin les langages dits de commande SHELL permettent un op rateur d changer des informations et des r ponses avec la machine permettant entre autres de piloter les diff rentes tapes de cr ation d un programme ex cutable voqu es plus haut Ces commandes sont aujourd hui plus agr ables utiliser gr ce aux interfaces graphiques WINDOWS utilisant en harmonie ic nes textes clavier cran et souris E
71. at return String permet une am lioration de l attribut FLOAT IMAG imag st celle d finie dans la proc dure ECRIRE avec FLOAT permet des critures d images d objets de type diff rent ainsi ECRIRE IMAGE 8 amp amp IMAGE amp etc Ra D Feneuille LU T 2001 cours n 1 G n ralit s III fichier COURS1_C DOC 30 06 02 Sp cial type discrets Pour viter d avoir instancier ADA TEXT_IO ENUM l exercice n es on copiera la s quence suivante en adaptant les identificateurs ET au type discret et la variable de ce type T_DISCRET et DISCR ERATION_IO ou ADA TEXT_IO INT t pas difficile mais mythique ED_STRING pour les types num ra trop t t tifs et entiers les sous paquetages ET VALU E TO_STRING EGER_IO CHAIN ou m loop Du declare CHAI UNBOUNDI begin LIRE CHAI S DISCRET T_DISCR a exit e exception when others gt Ti null e end end loop end P_E Sortie ssage ECRIR E xxxxx D Feneuille LU T 2001 cours n 1 G n ralit s III fichier COURS1_C DOC 30 06 02 Mots r serv s Ada declare generic of select abort delay goto or separate abs delta others subtype abstract digits if out accept do in package ta
72. atif est un des 4 symboles suivants mod rem type pr d fini les 6 types suivants sont pr d finis c est dire connus sans qu il soit besoin d en donner la d finition INTEGER FLOAT CHARACTER STRING BOOLEAN DURATION D c sch ma r p titif exemple d finition d un litt ral cha ne C est une suite ventuellement vide de caract res encadr s de guillemets Le diagramme syntaxique est le suivant Litt ral cha ne caract re Observez bien le sens des fl ches La notion de caract re sera vue plus loin Le probl me du caract re guillemet dans un litt ral cha ne est r solu part et n est pas d crit dans ce D S Exercice 2 apr s la pause d intercours Donner le D S correspondant la d finition suivante suite de lettres de chiffres ou de _ soulign le premier caract re tant une lettre le _ ne finissant pas la suite de symboles et n appara t pas deux fois cons cutivement c est la d finition d un identificateur da il faudra s en souvenir Voir corrig page 4 Exercice 3 Ecrire le D S correspondant la d finition suivante Un commentaire Ada est une s quence ventuellement vide de n importe quel caract re pr c d par les deux caract res Exemples ceci est un commentaire ceci est un comment re le deuxi me commentaire est galement correct les accents sont accept s et l orthographe n est pas contr l e D
73. avec les documents suivants g n ralit s I et II suivre dans cet ordre et ci apr s e Diagrammes syntaxiques D S e Les litt raux num riques Ada pour illustrer les D S e Des exemples de programmes et de composants comment s ils sont tir s au d but des codages des algorithmes con us dans le cours d algorithmique qui est enseign en parall le R sum Planning des cours Ada Langage de programmation notion Historique de Ada Bibliographie Norme et g nie logiciel Composants logiciels Pages suppl mentaires lire pour le CDRom commencez par la page Intro_cdrom html e Texte Langage page 6 Byron et babbage pages 7 et 8 e Fichier Ada_et le Web html 2 pages sur le CDRom e Fichier Cahier2 doc 8 pages sur le CDRom e Fichier AdaFranceTAILL doc sur le CDRom D apr s CABU 16 et pas forc ment vieux comme on le croit g n ralement 1 ah mon cher Le COBOL il n y a que cela de vrai Ils y reviendront vous verrez au COBOL le r seau des r seaux On verra cela plus tard de fa on th orique et pratique Osez surfer P c est l Ada tollah qui parle oppos aux C r tiques D Feneuille LU T 2002 cours n 1 fichier COURS1 DOC 30 06 02 LANGAGE informatique compl ments de cours La notion de langage ne doit pas tre confondue avec celle de langue Avec la notion de langue on doit tenir compte de la double articulation mon me phon me ainsi que du
74. boucle ne se fait pas puisque le test d arr t est vrai tout de suite Remarques e Le param tre de boucle nomm par l identificateur CAR dans notre exemple est une variable locale l instruction de boucle for Son type en l absence de typage explicite est celui de l intervalle discret Ce param tre ne sera pas d clar dans le module dans lequel il estutilis Ce param tre ne peut tre modifi mais il peut tre utilis Sa valeur n est plus accessible apr s la sortie de boucle car l objet n existe plus Sa dur e de vie se r duit la port e de la boucle 1oop end loop e Entre chaque it ration le param tre prend pour valeur le successeur dans l ensemble auquel il appartient ou le pr d cesseur si on utilise l option reverse Il vaut mieux parler du successeur que du pas de variation qui fait trop r f rence aux entiers e On peut toujours sortir au milieu d une boucle for avec des exit sortie imp rative ou des exit when sortie conditionnelle D Feneuille I U T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 Les instructions alternatives L instruction de choix if Nous avons vu en Algorithmique et en codage Ada associ l instruction de choix if dans sa forme simple if then end if et dans sa forme double if then else end if En Ada l instruction if peut g rer bien plus que ces deux cas La syntaxe est la suivante D S d j propos dans le cours n 1 instru
75. ce la fonction LENGTH sorte d attribut avec l expression LENGTH CHAINE D Feneuille LU T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 Exercice n 2 du cours 2 corrig with Ada Strings Unbounded_String P_E_ Sortie procedure EXO2_TD2 is type T_MOIS is JANVIER FEVRIER MARS AVRIL MAI JUIN JUILLET AO T SEPTEMBRE OCTOBRE NOVEMBRE DECEMBRE subtype T_ANNEE is POSITIVE range 1582 9999 MOIS 5 T_MOIS ANNEE T_ANNEE begin P_E_SORTIE ECRIRE entrez le mois s v p mod le de saisie d un num ratif cf paquetage P_E_SORTIE loop declare use Ada Strings Unbounded_String REPONSE Unbounded_STRING begin LIRE REPONSE MOIS T_MOIS VALUE ToO_String REPONSE ici exception possible exit ici tout va bien exception when others gt ECRIRE pas valable recommencez A_LA_ LIGNE end end loop fin du mod le de saisie d un num ratif test de la r ponse if MOIS AVRIL or MOIS JUIN or MOIS SEPTEMBRE or MOIS NOVEMBRE then P_E_SORTIE ECRIRE ce mois a 30 jours elsif MOIS FEVRIER then loop declare use P_E_SORTIE begin pour l exception ECRIRE entrez l ann e LIRE ANNEE ici tout va bien exit sortie de boucle exception when others gt ECRIRE non conforme entre 1582 et 9999 A_LA_LIGNE end ici reprise de boucle end loop if ANNEE rem 4 0 and then ANNEE rem 100 0 or else ANNEE rem 400
76. ce soit la suite d une paralysie infantile et cette infirmit l affligea profond ment Ils v curent dans la g ne A la mort de son grand oncle George devint le sixi me baron Byron et h rita d un pauvre domaine Le ch teau ancien prieur normand tait en ruine et les terres lourdement hypoth qu es Envoy en pension George Byron y acquit une solide connaissance du latin et du grec une grande admiration pour les lettres classiques et la litt rature anglaise du XVIIIE si cle un go t tr s vif pour la po sie et l histoire Il y fr quenta des jeunes gens de son rang et malgr son infirmit pratiqua avec brio la natation le cricket et l quitation Son d veloppement affectif fut pr coce l en croire il n avait que dix ans lorsqu il tomba amoureux d une cousine Plus tard il s prit plus s rieusement d une autre cousine un peu plus g e que lui Plus tard apr s avoir pris possession de son si ge la Chambre des lords 13 mars 1809 Byron s embarque pour son grand tour le 2 juillet 1809 Au plus fort des guerres napol oniennes il traverse le Portugal et 1 Espagne gagne Malte puis l Albanie En d cembre 1809 il arrive Ath nes d o il repart pour l Asie Mineure Le 3mai 1810 il traverse tel L andre l Hellespont la nage exploit sportif dont il est tr s fier Il s journe deux mois Constantinople et regagne Ath nes en juillet 1810 Il demeure en Gr ce j
77. cedure Ecrire La_Cha ine String permet de visualiser une cha ne de caract res partir de la position initiale du curseur procedure Lire La_Cha ne out String permet de saisir une frappe de caract res termin e par entr si le nombre de caract res est inf rieur la dimension du STRING pass en param tre le compl ment est initialis espace Le tampon est purg procedure Lire La_ Chaine out Unbounded_ String permet de saisir une frappe de caract res termin e par entr il n y a pas de limite ni probl me de remplissage Proc dures vider clavier et saut la ligne sur l cran procedure Vider Tampon peu utile dans le contexte propos ici puisque toutes les saisies sont purg es Permet cependant d attendre la frappe de la touche ntr e C est une paus voir ci dessous sans message procedure _ La Ligne Nombre Positive Count 1 renames New_Line sans commentaire procedure Pause affiche le message appuyez sur Entr e pour continuer et attend la frappe sur la touche entr e Transformation de FLOAT ou d INTEGER en Cha ne de caract res function Image L_Entier in Integer return String c est une red finition de l attribut c est dire INTEGER IMAG Ra function Image Le_ Reel in Flo
78. celui de OBJET e T PRED OBJET OBJET est consid r comme instance du type de base de T scalaire Rend la valeur dans le type de base de T imm diatement inf rieure celui de OBJET Exemple CHARACTER POS CHARACTER PRED CHARACTER LAST vaut 254 e T IMAGE OBJET OBJET est consid r comme instance du type de base de T scalaire Rend la cha ne de caract res identique la valeur de OBJET e _ T VALUE CHAIN CHAIN est de type STRING le r sultat est du type de base de T scalaire c est la valeur associ e correspondante e T MAX OBJETI OBJET2 est une fonction qui rend la valeur maximale des valeurs de OBJET1 et de OBJET2 e __T MIN OBJET1 OBJET2 est une fonction qui rend la valeur minimale des valeurs de OBJETI1 et de OBJET2 Remarques On doit se souvenir que VAL et POS d une part et d autre part que IMAGE et VALUE sont des fonctions r ciproques MAX et MIN op rent sur tout type scalaire donc aussi sur les r els IMAGE VALUE SUCC PRED et WIDTH aussi d ailleurs Seuls VAL et POS sont r serv s aux types discrets Rappel On consultera souvent le document attributs pr d finis I dans le fichier attribut1 doc sur le CDROM Des questions sur la connaissance des attributs tombent souvent aux partiels Qu on se le dise D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 D claration de type DS identi
79. cours n 3 fichier COURS3 DOC 30 06 02 la place de for CAR in CHARACTER range A Z loop ECRIRE CAR end loop le compilateur ne peut d terminer le type de CAR En effet n oublions pas que s il existe bien un type CHARACTER il existe aussi le type Wide Character sur ensemble de Character L intervalle A Z appartient aux deux ensembles Dans le m me ordre d id e voyons un exemple cf Barnes pages 108 109 avec surcharge d identificateurs type T_Plan tes is Mercure V nus Terre Mars Jupiter Saturne Uranus Neptune Pluton type T_ Dieux is Janus Mars Junon Vestales Vulcain Saturne Mercure Minerve Remarquez que Ada permet les accents m me dans les identificateurs V nus T_Plan tes Si l on crit for IND in Mars Saturne Probl me loop end loop l intervalle Mars Saturne est ambigu le compilateur ne sait pas d cider dans quel type il faut r aliser IND en Ada rien n est implicite il faut aider le compilateur Par exemple en qualifiant une des bornes for IND in T Plan tes Mars Saturne loop a end loop il n y a plus ambigu t Mais le plus lisible est encore de typer l intervalle ainsi for IND in T Plan tes range Mars Saturne loop Mieux end loop Si un sous type existe d j par exemple subtype T_Explorer is T _Plan tes range Mars Saturne alors l criture peut se restreindre
80. cours n 4 fichier COURS4 DOC 30 06 02 A cette fa on de proc der on pr f rera la s quence suivante 1 Donner la d finition d indice mais contrainte par un intervalle subtype T_INDICE N is POSITIVE range 1 10 subtype T_INDICE B is CHARACTER range A T 2 Instancier les objets de la fa on suivante VECT_N VECTEUR1 T_INDICE_N LA VECT_B VECTEUR_DE_B T_INDICE_B C est plus long mais c est une bonne m thode ou mieux encore apr s l tape 1 2 d clarer un sous type tableau subtype T_VECTI 10 is T_VECTEURI T_INDICE_N Le sous type tableau T_VECT1_10 devient alors contraint 3 et instancier des objets de la fa on suivante VECT_N T_VECTI_ 10 La plupart des op rations sur les objets tableaux c est dire sur les instances de type tableaux portent presque toujours sur les composants du tableau On nomme ou on distingue le ou les composants e soit individuellement on cite valeur de l indice associ l identificateur de l instance Par exemple VECT_N 2 1 5 on travaille avec le composant d indice rep r par le num ro 2 Ou encore VECT_B G TRUE l indice est de type caract re et le composant est de type bool en e soit par paquet on cite l intervalle ou tranche d i
81. ction if gt Gir expression suite d instructions suite d instructions suite d instructions Ce qui nous int resse ici c est au milieu la cascade de elsif que l on peut intercaler entre le then et le else Le elsif signifie else if mais n implique pas de end if Cette forme permet de g rer efficacement la succession de plusieurs if avec un seul end if L expression est bool enne videmment Exemple voir dans l exercice nombre de jours d un mois exercice n 2 du cours n 2 type T_MOIS is JANVIER FEVRIER MARS AVRIL MAI JUIN JUILLET AOUT SEPTEMBRE NOVEMBRE DECEMBRE MOIS T MOIS if MOIS FEVRIER then le mois fait 28 ou 29 jours elsif MOIS AVRIL or MOIS JUIN or MOIS SEPTEMBRE or MOIS NOVEMBRE then le mois fait 30 jours else ce sont les autres mois restants MARS MAI ue le mois fait 31 jours Rappel plusieurs branches elsif peuvent tre pr sentes ce n est pas le cas ici Nous verrons de nombreuses applications dans les TD et TP Ada D Feneuille I U T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 L instruction de choix multiple sur valeur discr te case Voyons le D S instruction case expression discr te alternative de case alternative de case suite d instructions choix
82. ctions gt end loop lt nom simple de boucle gt Exemples de constante universelle Ada revoir MAX constant 30 la valeur est un litt ral num rique PI_3 constant abs PI 3 la valeur est un xpression statique JOUR constant LUNDI la valeur est un litt ral num ratif corrig s exercice 2 de la page 2 en DS puis en BNF retenir exercice mettre ce diagramme en B N F corrig page suivante D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 corrig s exercice 5 voir cours n 3 des exemples de codage Ada utilisant if et loop instruction if Gr expression inen suite d instructions GD expression hen suite d instructions else suite d instructions Con instruction loop nom simple de boucle G gt sch ma d it ration loop X suite d instructions nom simple de boucle remarques e on verra des applications des D S dans le fascicule de cours les litt raux num riques Ada page suivante e Nous utiliserons souvent les D S pour illustrer des concepts Ada e Barnes utilise par contre la notation BNF dans son livre d j cit pages 595 609 e Le manuel de r f rence utilise lui aussi la notation BNF d j dit Corrig de l exercice bas de page 4 lt identificateur Ada gt lt lettre gt _ lt lettre gt lt chiffre gt D Feneuille I U T Aix
83. e LU T 2002 cours n 1 fichier COURS1 DOC 30 06 02 La petite histoire de l informatique II Babbage le g nial inventeur et Ada la premi re programmeuse Babbage Charles 1791 1871 math maticien et th oricien de l organisation industrielle britannique dont les travaux sur la m canisation du calcul sont l origine de l ordinateur Dans les ann es 1820 Babbage con ut une machine diff rences un appareil m canique pouvant effectuer des calculs math matiques simples avec une pr cision pouvant atteindre 31 chiffres Cependant il dut abandonner sa construction pour des raisons financi res Dans les ann es 1830 il con ut une machine analytique cartes perfor es afin d effectuer des calculs plus compliqu s mais nouveau cet instrument ne vit jamais le jour Cette r flexion sur la m canisation du calcul annonce l informatique l origine des th ories de l organisation industrielle Babbage est l auteur d un Trait de l conomie des machines et des manufactures 1832 analysant la production Extraits de l encyclop die Encarta automatique des manufactures et la division du travail ce qui lui vaut d tre souvent cit par Karl Marx dans le Capital Ses Reflections on the Decline of Science 1830 reprennent la tradition leibnizienne du calcul infinit simal Fils de banquier Charles Babbage ne suivra pas la carri re de son p re Il tait trop pris de math matique d a
84. e dont elle fut l g rie Elle est consid r e comme le premier programmeur de l histoire Elle mourut ruin e et alcoolique C est pour lui rendre hommage que son diminutif Ada fut donn comme nom au langage dont vous allez d couvrir le contenu en quelques semaines Si vous tes int ress s pour en savoir plus dans les bons ouvrages liste un peu plus loin voyez les introductions Elles voquent souvent un peu de l histoire de cette femme exceptionnelle Voir aussi les deux pages 7 et 8 compl ments lire La vraie histoire du langage Ada r sum succinct Le concept de langage de programmation pr sent rapidement ci dessus et aussi page 6 d j signal sera compl t oralement en cours L histoire du langage Ada remonte au milieu des ann es 1970 Le puissant lobby am ricain qu est le DOD d cida de ne plus utiliser qu un unique langage de programmation en lieu et place des centaines qu utilisaient alors tous ses services Les milieux bien inform s s accordent en g n ral sur le nombre de 400 500 langages ou dialectes informatiques utilis s cette poque par le DOD lui m me ou par ses fournisseurs De 1975 1983 se succ d rent des r unions de comit d experts qui produisirent un cahier des charges le g nie logiciel tait le principal objectif suivi d un appel d offres en 1977 Les laur ats propos rent en 1979 une premi re bauche avec une ossature
85. e soit par des sch mas comme des Diagrammes Syntaxiques en abr g D S Cette description est tr s utilis e dans la pr sentation du langage PASCAL voir un livre correspondant e soit par une troisi me description dite B N F Utilis e en Ada dans le manuel de r f rence document accessible sur le Web ou dans AdaGide B N F est vu apr s les D S en page 3 I D finition des symboles utilis s pour crire un D S Diagrammes S yntaxiques e cartouche arrondie ou ronde le symbole est prendre la lettre Symbole dit terminal e cartouche rectangulaire renvoie une syntaxe d finie ailleurs avant ou apr s e fl che d finit le parcours du diagramme aide sa lecture II Diagramme de base a sch ma s quentiel exemple D claration d une constante universelle en Ada voir exemples page 4 en bas liste d identificateurs B Constant 7 Co expression statique universelle b sch ma alternatif exemple D finition de type tableau en Ada vue au cours Ada n 3 d finition de tableau contraint d finition de tableau non contraint exemple op rateur de relation Ada Cours n 1 G n ralit s IT fichier Cours1_B DOC 30 06 02 Exercice 1 Etablir les trois D S correspondant aux d finitions seul le 2 est corrig e lettre toutes les lettres de A Z puis les lettres de a z idem pour les chiffres op rateur multiplicatif un op rateur multiplic
86. el annonc in donc donn e ne se trouve gauche du signe cette v rification est notez le d une grande s curit En effet dans la conception de l algorithme vous postulez qu un objet est donn e et vous le signalez en mettant in puis vous transgressez cette hypoth se dans la programmation en mettant cet objet gauche d un signe d affectation par exemple Donc de deux choses l une ou vous avez mal programm ou bien votre hypoth se est fausse Ada vous le signale dans la phase de contr le syntaxique c est dire d s la premi re tentative d impl mentation On a l une erreur de type conceptuel signal e la compilation De m me aucun param tre formel out donc r sultat ne devrait se trouver droite du signe cette propri t tait contr l e avec la version 83 de Ada elle ne l est plus h las avec la nouvelle norme une variable r sultat peut donc tre consult e Si elle n est pas initialis e c est la catastrophe Il n y a aucun contr le syntaxique sur les objets de caract ristique in out ce qui est normal Variables globales variables locales d un module Notez avant tout que la propri t nomm e globale ou locale pour une variable est une notion relative et s applique par rapport un module particulier par exemple un objet peut tre local un module et peut tre global par rapport un autre module comme on va le voir dans des exemples Variable locale
87. en Ada Qu est ce qu un litt ral num rique Qu est ce qui diff rencie un litt ral entier d un litt ral r el Qu est ce qu un litt ral num rique bas Quelle est la base implicite d un litt ral non bas Qu est ce qu un op rateur binaire et un op rateur unaire Citez les op rateurs unaires agissant sur les num riques Et les op rateurs binaires Dans les deux questions pr c dentes pr cisez sur quels sortes de num riques ils agissent et quel est le type du r sultat Priorit s des op rateurs num riques rem et mod donnent des r sultats diff rents sauf A quoi servent les paquetages P_E_Sortie adsetP_E Sortie adb Fichiers diter e Ceux des paquetages qui servent r aliser les exercices d algorithmique e Les paquetages P_E_Sortie adsetP_E_ Sortie adb pour voir la r alisation e Les fichiers annonc s page 5 cours n 1 g n ralit s I Visitez les sites sugg r s dans le fichier Ada_et_le Web html D Feneuille LU T 2001 cours n 1 G n ralit s III fichier COURS1_C DOC 30 06 02 Cours n 2 Ada type scalaire 2 bonnes heures Th me le typage Ada et quelques types pr d finis ou construits Le typage et pourquoi typer Typer les objets que va utiliser un algorithme c est regrouper dans une m me enveloppe ou dans un m me ensemble bien identifi les objets ayant un lien conceptuel entre eux Il s agit d une partition au sens math
88. es attributs les plus courants sont PRED SUCC VAL et POS Auxquels on peut ajouter FIRST LAST IMAGE VALUE MAX MIN WIDTH Les attributs font d abord r f rence au type concern ici Character gr ce une apostrophe puis ventuellement ils utilisent un ou des param tres Exemples Carcou Character Suce 0n Carcou vaut p Carcou Character Pred Carcou d pend de la valeur de Carcou Carcou Character Val 32 Carcou vaut le caract re espace Carcou Character First Carcou vaut le caract re de rang z ro On verra d autres exemples d application en TD tude du paquetage Ada Characters Handling A noter qu il existe aussi le type Wide_ Character sur ensemble du type Character mais il est ordonn de 0000 FFFF 16 AU lieu de 0 255 ou 00 FF 16 D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 Le type BOOLEAN L ensemble des valeurs associ es ce type contient seulement deux valeurs d not es FALSE et TRUE dans cet ordre On verra que c est finalement un exemple le plus l mentaire d un type num ratif Les 6 op rateurs et les attributs sont les m mes que pour le type CHARACTER avec en plus les op rateurs logiques not and or et xor Attention les trois derniers ont m me priorit Le premier not a une priorit sup rieure aux autres On verra aussi and then etor else am li
89. es param tres donn e Il est recommand d indiquer ce mode par le mot cl in m me si c est implicite et non obligatoire Exemple surcharge et masquage avec le quotient r el de deux entiers function I J in T_ ENTIER return FLOAT On pourra crire par exemple Y FLOAT K1 K2 T_ENTIER Y K1 K2 e O mieux Y K1 K2 La notation curieuse K1 K2 est parfaitement correcte C est m me la seule forme autoris e si la fonction appel e est pr sente dans un paquetage voqu e avec la clause with seule sans use A revoir Normalement l op rateur qui est pr d fini sur les entiers donne un quotient entier voir cours sur les litt raux num riques il est ici surcharg Le compilateur choisit soit l op rateur entier pr d fini quand l affectation est enti re K1 K1 K2 il choisit l op rateur red fini ci dessus si le type de la variable affect e est FLOAT comme dans Y K1 K2 Il est possible en Ada de d clarer des fonctions qui renvoient des variables de type composite tableau ou article A revoir page 15 plus loin et cours n 6 Exemple function C1 C2 in T_ COMPLEXE return T_ COMPLEXE Le type T_COMPLEXE est un type form de deux composants connu On d finit ainsi l addition de deux complexes il suffit de d finir tous les autres op rateurs pour f
90. ession PREMOT LENGTH Attention RANGE ne donne pas un type mais un intervalle d j dit C est une erreur courante des tudiants On ne peut pas par exemple crire PREMOT RANGE SUCC IND ni IND PREMOT RANGE Si un tableau poss de plusieurs indices par exemple les objets pr c demment d clar s MAT1 ou MAT2 il faut indiquer le num ro de la dimension pour les 3 attributs FIRST LAST et RANGE Exemples MATIL FIRST 1 vaut 1 MATI RANGE 2 vaut 1 20 ou encore MATI LAST 1 vaut 10 MAT2 LAST 2 vaut 20 Jusqu maintenant les attributs tait d not s sur des types exemple CHARACTER RANGE Lez D Feneuille LU T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 L agr gation et les agr gats C est une op ration sp cifique aux types composites ici donc sur les types tableaux Elle est souvent utilis e pour donner des valeurs initiales aux objets compos s On peut aussi l utiliser dans l algorithme pour modifier des valeurs d un objet tableau Il s agit en fait avec l agr gat de litt raux comme on a pu le voir avec les autres types scalaires mais cette fois ce sont des litt raux tableaux voir exemples plus bas On travaille avec l agr gation sur le tableau en entier ou sur la tranche Il est inutile de recourir aux agr gats pour initialiser un ou quelques composants isol s car l agr gation oblige t
91. ffectation n cessite une tranche l criture correcte est MOT2 1 7 Il faut alors proc der en 2 temps 1 LONG REMPLACER MOT1 CECI CELUI CI LENGTH pour conna tre la longueur de la cha ne rendue par REMP LACER et l affecter LONG puis enfin 2 MOT2 1 LONG REMPLACER MOTI CECI CELUI CI soit 2 appels ou utilisation de REMPLACER affreux affreux comme disait la marionnette J P P On comprend qu il serait commode d avoir un type cha ne de caract res qui porte avec lui sa longueur et que celle ci soit variable avec le temps ce sont les fameux Unbounded_String On les tudiera en TD TP Si on a d clar C est une fonction qui transforme CHAINE Unbounded String un String en Unbounded_String Alors on r alise le m me exercice en unei uction CHAINE To_ Unbounded_Strinqg REMPLACER MOTI CECI CELUI CI D Feneuille LU T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 Cours 5 bis Ada Entr es Sorties simples 1 heure fin semaine 4 Avertissement On entend ici par les termes Entr e et Sortie les notions de lecture clavier et d criture cran d o le qualificatif de simples pour ces entr es sorties Le contexte d Entr e et Sortie sur fichiers sera voqu dans un autre document cours n 11 De plus nous nous contenterons de mettre
92. ficateur Gs d finition de type d claration de type priv Conversion de type DS nom du type nom du sous type expression Notez cet apostrophe Expression qualifi e DS D claration de sous type DS identificateur Gs D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 10 Exercices sur le cours n 2 ada Th me Pr parer sur papier des algorithmes Ada puis les saisir en temps diff r les faire tourner en cas de probl me venez aux ateliers du jeudi apr s midi La notion de date sous la forme labor e exercice 3 jour n du jour mois et ann e est le centre de l tude r aliser difficile Lecture conseill e cahier p dagogique n 1 fichier cahierl doc Travaillez prenez de la peine Ces exercices sont des d fis qui vous sont lanc s relevez les Il serait dommage que vous ne vous y atteliez pas car seul le travail sur machine paiera N attendez pas les corrig s ils seront mis votre disposition les lire sera bien mais condition de les comparer votre solution Concepts Les attributs l mentaires l utilisation de la ressource P_E_ SORTIE les types num ratifs et les sous types mod le de saisie d un type num ratif Travail r aliser il y a deux exercices faciles mais le troisi me est ardu On consid re les d clarations suivantes extraites d un programme simple type T_JOUR is LUNDI MARDI
93. ge 3 la surcharge du Get_Line page 3 en haut sera vue dans le cours 11 cours fichier cependant d ores et d j il est bien plus s r et performant de passer par les Unbounded_String D Feneuille IUT Cours Ada 5 bis E S simples 2002 fichier cours5_B DOC 30 06 02 Je retiens n 2 Quelques termes informations ou conseils retenir apr s le cours n 5 bis Ada semaines 3 et 4 Cette fiche fait suite la fiche je retiens n 1 apr s les semaines 1 et 2 e Rendez ou conserver des listings format s rappel de la fiche je retiens n 1 e Le type tableau non contraint est d clar avec range lt gt e Une variable de type tableau doit tre contrainte Un param tre formel de type tableau peut tre non contraint c est le param tre effectif associ qui sera contraint e Evitez de d clarer des variables tableaux de type anonyme ou muet e Un agr gat avec others doit poss der un contexte permettant d valuer ses bornes e Les attributs FIRST LAST RANGE et LENGTH s appliquent des types ou sous types contraints Ils s appliquent aussi des variables de type tableaux mais toujours contraints Enfin ils peuvent s appliquer des param tres formels tableaux non contraints mais en fait r f rencent le param tre effectif associ e Dans une affectation de tableaux le nombre de composants doit tre le m me mais les bornes peuvent tre diff rentes Dans une compara
94. gged access is pragma task aliased private terminate all else procedure then and elsif limited protected type array end loop raise at entry range use exception record until begin exit mod rem when body renames while new requeue with case for not return constant function null reverse xor Nous allons essayer dans tous nos exemples Ada de repr senter ces mots r serv s en minuscules et en gras suivant en cela le manuel de r f rence Les autres identificateurs seront propos s soit en MAJUSCULES soit en notation mixte premi re lettre ou lettre suivant un _ en majuscule le reformateur fait cela Remarque Il se trouve que les 3 mots delta digits et range sont aussi des attributs concepts revoir et devraient quand ils sont attributs et leur place tre crits Delta Digits et Range c est dire en notation mixte subtilit dominer plus tard En fait ceci a lieu quand ils sont pr c d s d une apostrophe Exemples pour Range et range T_IND Range Integer range 1 10 Remarques La nouvelle norme Ada Ada 95 ajoute les 6 mots r serv s marqu s d une abstract aliased protected requeue tagged until et au moins un attribut important conna tre Class nous y reviendrons semaine 7 A lire et relire Rosen dans son livre pages 22 39 livre signal au cours n 1 r ussit le tour de force en tr s peu de pages faire un joli survol du langage Ada pr sentatio
95. go D Feneuille LU T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 4 D roulement et encha nement des modules utilisateurs et utilis s Sch matiquement on a 6 points remarquables procedure UTILISATRICE is Se 1 procedure UTILISEE is Degin Te ste 3 UTLETSR E 2y Re 4 TRE end UTILISEE T T end UTILISATRICE 6 Les points importants ont t num rot s soit en 1 les variables d clar es dans le module utilisateur dites locales sont cr es laboration l ex cution de la proc dure UTILISATRICE Les instructions s ex cutent jusqu Pinstruction nomm e UTILISEE 2 cet endroit logiquement on quitte la proc dure UTILISATRICE momentan ment pour ex cuter la proc dure UTILISEE avec de nouveau laboration de variables locales 3 puis ex cution des actions jusqu en 4 au retour vers la proc dure UTILISATRICE ilya disparition des variables locales cr es en 3 enfin on retourne ex cuter les instructions qui suivent l identificateur UTILISEE de 5 jusqu 6 fin de la proc dure et fin des variables locales d clar es en 1 T G n ralisation et complexit comme un bon dessin vaut mieux qu un long discours voyons un exemple simple procedure PRINCIPALE is procedure SPROG1 is a procedure SPROG3 is SPROGI SPROG3 SPROG 2 end SPRO
96. gt of INTEGER ici un double indice MATRI T_MATRICE 1 3 1 4 matrice de 3 lignes et 4 colonnes MATRI others gt others gt 0 tout est mis z ro ou autre initialisation diff rente de la mise z ro totale MATRI N O OO W G GT amp H R it anaana D Feneuille I U T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 ou initialisation quivalente MATRI 1 2 3 4 others gt 0 5 others gt 0 LA 6 others gt 0 ou toujours identique MATRI 1 3 1 gt 4 2 3 gt 0 1 gt 5 2 3 gt 0 1 gt 6 2 3 gt 0 Les STRING cha nes de caract res type pr d fini L utilisation des types non contraints est une activit assez fr quente en particulier lorsque l on manipule des cha nes de caract res Jusqu maintenant nous avons vit de manipuler le type pr d fini STRING et m me apr s l avoir d couvert nous lui pr f rerons le plus souvent le type Unbounded_ String Nous en reparlerons Il est temps d examiner ce fameux type cha ne de caract res pr d fini Ada c est dire le type STRING pour une critique s rieuse on peut consulter le cahier p dagogique n 4 fichier cahier4 doc dans le CDRom mais la lecture pour un d butant n est pas vidente Le type STRING est pr d fini par les d clarations suivantes qu il ne faut pas c
97. hmes crits dans un autre langage acceptant le while Le while et le exit when qui permettent de traduire respectivement le tant que et le jusqu sont compatibles dans un loop on peut pr fixer la boucle avec un while et en plus ajouter des exit when partout Ces deux outils permettent de coder des structures r p titives conditionnelles Il s agit dans ce cas d une it ration ind termin e d un nonc Il en va autrement si l on conna t a priori le nombre de r p titions effectuer par exemple diter les lettres majuscules On peut bien s r toujours crire CAR A CAR est d clarer ainsi CAR CHARACTER loop ECRIRE CAR exit when CAR Z CAR CHARACTER SUCC CAR end loop Mais Ada permet comme les autres bons langages une commodit la boucle for Par exemple traduisons le m me algorithme for CAR in CHARACTER range A Z loop ECRIRE CAR end loop et c est fini Ada s occupe de tout la d claration de CAR n est plus faire alors qu elle devait l tre avec le exit l initialisation avec A est faite implicitement l volution de la valeur et l arr t sont g r s automatiquement On met en garde contre la tentation de ne pas typer l intervalle Par exemple si on crit for CAR in A Z loop ECRIRE CAR end loop D Feneuille I U T Aix 2001
98. iginale existe elle utilise l instruction Set_Col voir prochainement cours fichier Lecture et criture de variables de type ENTIER sign ou modulaire Il existe une solution ces objectifs dans la paquetage TEXT_IO plus pr cis ment dans son paquetage interne INTEGER_ 10 Mais elle n cessite les concepts de g n ricit cours n 9 De plus pour la lecture elle demandera un contr le de validation suppl mentaire Pour ces raisons il est recommand de plagier ce qui est fait dans le paquetage P_E_ SORTIE propos du type INTEGER en l adaptant au type ENTIER souhait Par exemple _ Type ENTIER construit type T_ENTIER is range 6 40009 procedure GET L_ ENTIER out T_ENTIER is REPONSE UNBOUNDED_ STRING LONG NATURAL begin loop Contr le validit begin REPONSE Get_Line L_ENTIER T_ENTIER VALUE To String REPONSE exit exception when others gt TEXT_IO PUT_LINE saisie non valable recommencez end end loop end GET Cette lecture est valid e elle utilise les notions vues pr c demment Elle lit une cha ne puis la convertie dans le num rique souhait Elle s adapte tout type ENTIER Elle pourra tre reprise quand nous ferons la g n ricit Le concept de g n ricit consistera tout simplement
99. ison de tableaux mono dimension les tailles peuvent tre diff rentes Un agr gat un seul composant doit utiliser la notation nominative e Une fonction ne peut atteindre son end final il faut quitter avec un return L ordre des valuations des param tres d un sous programme n est pas d fini par la norme L expression par d faut d un param tre formel donn e in n est valu e que lors de l utilisation du sous programme son appel et aussi si le param tre effectif est omis Si un param tre formel tableau est contraint son param tre effectif doit avoir les m mes bornes Le m canisme du passage des param tres pour les tableaux n est pas d fini par la norme e Les d clarations des param tres formels sont s par s par des points virgules La liste des param tres effectifs utilise naturellement la virgule e La notation nominative pour le passage des param tres est tr s pris e pour une bonne lisibilit e Nepas confondre d claration et d finition notamment pour les sous programmes e Un sous programme d clar dans la partie d clarative d un autre sous programme appartient uniquement ce dernier On retrouve l esprit des objets locaux e Les qualificatifs de local et de global sont des notions relatives elle font r f rences un sous programme particulier e Un pragma est une information fournie accessoirement au compilateur Par exemples p
100. jours la traduction Ada de l algorithme vu en TD On remarque d autres mots r serv s Loop exit when Ici cette brique elle aussi une proc dure n est pas ind pendante c est un composant de P_MOUCHERON EVE MOUCHERON1 qui acc de aux entit s Compteur Fin_Ruban Lire et Ecrire_Compteur Exemple n 3 tir du polycopi algorithmique TD n 1 M me remarques que l exemple 2 procedure NB_DE L is begin COMPTI loop structure alternative if or CARCOU then COMPR COMPTEUR 1 end if end loop ECRIRE_COMPTEUR end NB_DE_L ti Cours Ada n 1 G n ralit IIT fichier Cours1_C doc 30 06 02 Exemple n 4 tir du polycopi algorithmique TD n 1 with P_MOUCHERON IMP MOUCHERONI D on s appuie sur la ressource procedure TS_MOUCHERON1L is MOUCHERON1 use P_MOUCHERON IMP P_MOUCHERON IMP MOUCHERONI petite fille de P_ MOUCHERON begin ECRIRE test de NB_CAR NB_DE_L A_LA_ LIGNE ti loop p pour tester en boucle ECRIRE dition du ruban le programme L arr t se A_LA LIGNE fait sur l absence de nom MONTRER_RUBAN de ruban dans le fichier A_LA LIGNE testtp1 txt RESET ECRIRE nombre de caract res NB_CAR A_LA_LIGNE RESET ECRI
101. l 13 ABCD non pas de chiffre D en base 13 e 7 non ily alexposant mais pas la mantisse 16 FFf oui et c est un entier 10 1 0 el1 O0 oui c est unentier peu lisible Qui vaut 10 10 E10 10 23 7 E 7 non il ne faut pas de _ au d but d un entier d cimal 2 111 e l non comme pour 16 e 2 Exercice n 2 16 E E1 14 16 14 16 224 2 11 e11 3 2 3 2048 6144 2 1 1111_1111_111 e11 111111111111 base 2 1000000000000 4 1 2 1 4096 1 4095 0 16 F FF E 2 FFF base 16 1000 16 1 16 1 4095 0 Exercice n 3 I J K 7 5 3 105 IK K 7 3 3 2 3 6 I VJ K 7 5 3 1 3 0 J 2 mod I 5 2 mod 7 5 2 3 J mod 3 J mod 3 5 mod 3 1 1 J rem 3 J rem 3 5 rem 3 2 2 comparer avec J mod 3 J 2remI S 2 rem 7 3 comparer avec J 2 mod I K K K est ill gal l explication sera donn e au cours n 13 K K K est correct Remarques On trouvera en page 12 le source d un programme qui peut permettre de tester les r sultats des 3 exercices ci dessus Ce programme peut tre lu afin de se mettre dans le bain d un programme simple Ada A revoir Importante Le caract re _ est non significatif dans un litt ral nombre 1998 et 1_998 sont quivalents mais il n en est pas de m me dans un identificateur Ada ainsi NB_DE_L et NBDE _L sont diff rents D Feneuille I U T
102. l y aura des surprises et OBJET est une instance ou un litt ral du type T fonctions sans param tre e T WIDTH rend la longueur maximale des images des valeurs du type T scalaire ou du sous type T Exemple T_JOUR WIDTH vaut 8 cause de MERCREDI VENDREDI ou DIMANCHE e T FIRST rend la borne inf rieure du type T scalaire ou du sous type T Exemples INTEGER FIRST vaut 2 sur nos PC avec le compilateur GNAT NATURAL FIRST vaut 0 e T LAST rend la borne sup rieure du type T scalaire ou du sous type T Exemple T_MAJUSCULES LAST vaut Z INTEGER LAST vaut 2 1 2_147_ 483 647 avec le GNAT e OBJET Size renvoie le nombre de bits d impl mentation de OBJET Ne s applique pas sur un type mais sur une instance de type fonctions avec param tre s e T POS OBJET OBJET est consid r comme instance du type de base de T discret Rend la valeur num ro de position de OBJET dans le type T ou le type de base du sous type T Exemple T_MAJUSCULES POS A vaut 65 et pas O On ne relativise pas par rapport au sous type e TVAL X X est valeur enti re Rend la valeur dans le type T discret ou le type de base du sous type T dont le num ro est la valeur enti re X e T SUCC OBJET OBJET est consid r comme instance du type de base de T scalaire Rend la valeur dans le type de base de T imm diatement sup rieure
103. la manipulation d une tranche mais c est une utilisation rare car peu pratique D Feneuille LU T Aix 2002 cours n 4 fichier COURS4 DOC 30 06 02 Remarque Les op rateurs associ s au type STRING sont ceux permis pour les types tableaux composants discrets ce qui est bien le cas du type CHARACTER donc on a les 7 op rateurs lt gt lt gt et amp concat nation de caract res Premiers probl mes on verra plus tard cours n 5 ceux des param tres STRING 1 La saisie d un STRING n est pas vidente Il existe dans le paquetage Ada Text_Io deux proc dures GET rejeter et GET_LINE plus pratique On en reparlera dans le cours 5 bis sur les entr es sorties Utilisez pour le moment le LIRE de P_E_ SORTIE mais sachez qu il y a un ajout d espaces si la saisie ne sature pas la variable c est dire si l on n a pas tap autant de caract res que l instanciation en a d clar s Il reste un probl me si on a tap exactement le nombre de caract res d clar s mais ceci est une autre histoire 2 Les op rations traditionnelles sur les cha nes de caract res reviennent souvent manipuler des tranches de tableaux de caract res Il est possible d affecter une tranche de tableau une autre tranche de tableau mais il faut affectation oblige des tranches de m me taille pas forc ment de m me plage d indices Il faut donc conna tre les interva
104. lles de ces tranches Ce n est pas toujours le cas de fa on simple Voyons un exemple Comment affecter une cha ne une autre cha ne si on ne conna t pas a priori sa longueur es Soit l expression tr s utilis e T_JOUR IMAGE JOUR vue au cours 2 Cette criture donne un STRING puisque c est le r sultat de l attribut IMAGE voir aussi le document attributs pr d finis I fichier attributl doc Ce r sultat ne porte pas en lui sa longueur Et c est bien le probl me Comment affecter cette cha ne une variable CHAINE_ 80 de type T_STR sans savoir le nombre de caract res En deux instructions LONG_CHAINE T_JOUR IMAGE JOUR LENGTH r cup re la taille du STRING CHAINE _ 80 1 LONG CHAINE T_JOUR IMAGE JOUR vraie affectation La premi re calcule la longueur de la cha ne image la deuxi me fait l affectation dans une tranche On utilise h las deux fois l op ration T_JOUR IMAGE JOUR C est peut tre lourd mais fort puissant et dynamique c est dire non fig et s adaptant toute variable Cependant CHAINE_ 80 n est pas satur e d espaces la fin et il faut retenir m moriser la valeur LONG_CHAINE pour travailler plus tard avec la longueur utile Dur Pour aider les programmeurs susceptibles d utiliser les cha nes de caract res STRING Ada met leur disposition des paquetages ressources tr s utiles Ada Strings et Ada
105. mbigu t e ee en m e Par exemple les 4 diagrammes syntaxiques ci dessous diag1 Diagrammes voqu s au tableau diag2 diag3 diag4 D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 s crivent respectivement en notation B N F observez bien le r le des parenth ses Et la compacit de la pr sentation lt diag1 gt lt ident1 gt lt ident2 gt lt ident3 gt lt diag2 gt lt ident1 gt lt ident2 gt lt ident3 gt lt diag3 gt lt identl gt lt ident2 gt lt ident3 gt lt diag4 gt lt ident1 gt lt ident2 gt lt ident3 gt Exemples retrouvez ou donnez les D S quivalents lt constante universelle gt lt liste d identificateurs gt constant lt expression statique universelle gt lt entier gt lt chiffre gt _ lt chiffre gt Exercice 4 Donner la repr sentation BNF d un op rateur multiplicatif d fini dans l exercice 1 Cf le D S Exercice 5 Construire les diagrammes syntaxiques correspondant aux d finitions BNF suivantes lt instruction if gt if lt expression gt then lt suite d instructions gt elsif lt expression gt then lt suite d instructions gt l else lt suite d instructions gt end if lt instruction loop gt lt nom simple de boucle gt lt sch ma d it ration gt loop lt suite d instru
106. mode d emploi et en aucune fa on sa r alisation le comment c est fait n a pas d int r t Ici on va d couvrir des outils d entr es sorties Lire et Ecrire surcharg s des types pr d finis Ada Character Integer Float String Il s agit d un extrait d un document plus cons quent lequel sera disponible dans son int gralit en TD Ada copier On en fait une lecture comment e seulement D Feneuille LU T 2001 cours n 1 G n ralit s III fichier COURS1_C DOC 30 06 02 with Ada Text_io Ada Strings Unbounded package P_E Sortie is use Ada Text_Io Ada Strings Unbounded Proc dures d entr es sorties sur les entiers pr d finis procedure Ecrire L_Entier in Integer permet de visualiser un INTEGER partir de la position initiale du curseur Si l on souhaite aller la ligne ensuite il faut utiliser en plus la proc dure A_ LA LIGNE procedure Lire L_Entier out Integer permet d acqu rir un INTEGER en base quelconque 2 16 avec validation fait recommencer jusqu ce la valeur soit valable Proc dures d entr es sorties sur les flottants pr d finis procedure Ecrire Le_Reel in Float permet de visualiser un FLOAT sur la ligne partir de la position initiale du curseur Si l on souhaite aller la ligne ensuite il faut
107. n voir absolument Voir aussi son site http perso wanadoo fr adalog visiter de haut en bas La notion d attributs Ada est vue au cours n 2 2 heures qui suit imm diatement cette s ance de 2 heures aussi D Feneuille I U T 2001 cours n 1 G n ralit s INI fichier COURS1_C DOC 30 06 02 Cours Ada n 1 6 heures testez vos connaissances Utile pour bien r aliser les QCM Machine et les QCM papier partiels Qu est ce qu un langage de programmation Citez en quelques uns Qu est ce qu un programme Qu est ce que la compilation Qu est ce que l dition de liens Qui tait Ada comtesse de Lovelace A quel organisme doit on la cr ation du langage Ada Quelles sont les appellations des deux versions du langage Ada Dans quelles types d applications Ada est il beaucoup employ Pourquoi doit on normaliser un langage Quel nom donne t on au document qui pr sente le langage normalis Ada vecteur du g nie logiciel a veut dire quoi Qu est ce qu un composant logiciel Un litt ral cha ne de caract res peut il tre vide Un litt ral caract re peut il tre vide Comment d note t on un guillemet dans un litt ral cha ne de caract res Sachez crire en BNF et en DS la d finition d un identificateur Ada Citez les 6 op rateurs de relation Ada Citez les 4 op rateurs multiplicatifs Ada Citez les 6 types pr d finis Ada Comment crit on un commentaire
108. n STRING is DEBUT constant NATURAL OU FIRST FIN constant NATURAL OU LAST begin if OU LENGTH lt QUOI LENGTH then return OU trop court elsif OU DEBUT DEBUT QUOI LENGTH 1 QUOI then le d but de OU contient QUOI return PARQUOI amp REMPLACER OU U DEBUT QUOI LENGTH FIN QUOI PARQUOI else on n a pas trouv on avance d un caract re dans OU return OU DEBUT amp REMPLACER OU DEBUT 1 FIN QUOI PARQUOI end if end REMPLACER Acceptons cette fonction sans en comprendre le corps mais bien sa sp cification pourtant c est beau la r cursivit Supposons d clar es les variables MOT1 et MOT2 de type STRING On veut mettre dans MOT2 le r sultat du remplacement de CECI par CELUI CI dans MOT1 Si on crit MOT2 REMPLACER MOTI CECI CELUI CI la notation MOT2 stipule l affectation globale tout l objet MOT2 Si MOT2 a t d clar contraint par exemple MOT2 STRING 1 MAXI avec une taille maximale suffisamment grande pour tout accepter alors MOT2 quivaut MOT2 1 MAXI En g n ral MOT2 est utilis avec des l ments en nombre plus r duit que cette taille maximum C est le cas ici il est rare que REMPLACER renvoie exactement un objet de taille MAXI Il manque pour l affectation MOT2 la connaissance de la taille L a
109. n de liens puis ex cution pour v rifier les questions pos es ceci constituera le corrig D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 11 Exercice n 2 faire apr s le cours n 3 Il s agit de donner le nombre de jours d un mois donn On rappelle que les mois de AVRIL JUIN SEPTEMBRE et NOVEMBRE font 30 jours le mois de FEVRIER fait 28 ou 29 jours et tous les autres 31 Vous partirez des d clarations suivantes with P_E SORTIE procedure EXO2_ SUP is type T_MOIS is JANVIER FEVRIER MARS AVRIL MAI JUIN JUILLET AOUT SEPTEMBRE OCTOBRE NOVEMBRE DECEMBRE subtype T_ANNEE is POSITIVE range 1582 9999 MOIS T_MOIS ANNEE T_ANNEE Aide l algorithme est simple r aliser en trois parties dans l ordre suivant e saisie du mois MOIS on utilisera le mod le de sais ie d un num ratif cf paquetage P_E_ SORTIE avec un bloc e test de la r ponse si c est avril juin septembre ou novembre alors 30 sinon si c est f vrier alors demande de l ann e utiliser LIRE de P_E_ SORTIE c est valid et on d cide si c est 28 ou 29 voir cahier p dagogique n 1 et enfin si ce n est pas f vrier le mois fait 31 jours e On ditera l cran ce mois fait x jours Ce petit programme fait une bonne page de listing et fait bien le tour des if imb
110. n parall le aussi les langages de script qui fleurissent de fa on continue Javascript PHP Python etc Texte crit partir d une page modifi e et compl t e de l encyclop die Universalis Pour en savoir plus il faut lire les deux pages suivantes sur Ada Byron et Babbage Pour conna tre l histoire de l informatique voir le texte Une tr s br ve histoire de l informatique l adresse Internet http dept info labri u bordeaux fr dicky HistInfo html D Feneuille LU T 2002 cours n 1 fichier COURS1 DOC 30 06 02 La petite histoire de l informatique I La famille de Ada Byron Et quelle famille mes a eux Les Byron descendaient d une tr s ancienne famille de Vikings Le premier baron Byron g n ral fid le aux Stuart fut anobli en 1643 Le grand p re de Ada tait un inconscient prodigue et s duisant Il avait enlev fait divorcer et pous en premi res noces la marquise de Carmarthen qui mourut en 1784 laissant une fille Augusta Byron 1783 1851 Il se remarie avec Catherine Gordon de Gight descendante de l ancienne famille royale d cosse Ce mariage fut malheureux les deux poux se s par rent bient t laissant un fils George Gordon Byron George n avait pas trois ans quand son p re mourut laissant sa femme dans la mis re L enfant fut lev par cette m re instable passionn e irascible la tendresse tyrannique Il tait pied bot soit de naissan
111. ncepts modernes de programmation avec Ada9S et la classification les objets De bons livres r cents sur Ada La liste est videmment non exhaustive mais elle nomme les plus complets pour un bon d but et que l on trouve en biblioth que pr t possible Si vous avez quelques kopecks ce n est pas une d pense stupide e 1997 programmer en Ada 95 de BARNES C est l un des premiers livres au propre comme au figur Ce livre de l actuel pr sident de Ada Europe a souvent t r dit L ouvrage est traduit en fran ais et pr sente tout en plus de 700 pages Enorme mais tr s tr s bon bouquin Je ferai souvent r f rence mais la cinqui me dition attention c est la Bible ou le Coran de tout Ada tollah e 1995 M thodes de g nie logiciel avec Ada 95 de Jean Pierre Rosen Excellente pr sentation des concepts de composition avec Ada 83 et de classification avec Ada 95 par un excellent p dagogue 1996 Vers Ada95 par l exemple de FAY ARD et ROUSSEAU Des exemples sources sur Internet 1999 Programmation s quentielle avec Ada 95 de Br guet et Zaffalon aux Presses Polytechniques et Universitaires Romandes Suisse Rappelons que ce cours polycopi est disponible sur le Net soit en ftp paprika iut univ aix fr pub cours_ada DF soit chez http libre act europe fe french_courses ACT est l organisme permettant d avoir le compilateur gnat Objectifs du langage Ada
112. nconnues then AUX T IND T IND T J T J AUX end if end loop end loop end TRI Seule l utilisation des attributs ici FIRST LAST permet de s affranchir de la taille mais aussi du type discret de l indice de l objet tableau pass en param tre effectif qui lui est forc ment contraint Cependant on est oblig avec l utilisation de PRED et SUCC de revenir au type d indice ici T_ENTIER car ces deux attributs op rent sur un type et non sur un intervalle Simulez cet algorithme trace On peut maintenant crire dans le corps de la proc dure englobante les utilisations TRI T1 ou TRI T2 ou TRI T3 On a des appels ou utilisations du m me sous programme avec des tableaux de tailles diff rentes Cette utilisation de tableau non contraint va tre constamment pris e dans les TD TP Le type STRING approfondissement et probl mes Nous avons vu au cours n 4 que le type STRING est un type tableau non contraint Il peut donc servir de type pour les param tres formels d un sous programme comme on vient de le voir ci dessus Un exemple simple est celui de la r alisation de la proc dure COMPTER vue page 7 On a remarqu cette occasion que l on pouvait utiliser un vecteur de caract res sous forme d une tranche Ce vecteur a une taille variable et ne commence pas ni ne finit par les bornes extr mes du vecteur initial Pour prendre en compte cet aspect dynamique il suffit de tra
113. ndice Par exemple avec la notation VECT_N 4 8 on travaille avec 5 composants la fois joli mais revoir e ou encore globalement il suffit de citer seulement l identificateur de l instance sans indice Par exemple avec VECT_N qui signifie VECT_N 1 10 on travaille alors avec tous les composants ensembles Mais on verra que l on peut mettre en vre des op rations sur les indices d un tableau gr ce aux attributs G n ralit s sur les types tableaux tranche ou global Quelques pr cisions pour les objets tableaux manipul s en tranche ou globalement Les tableaux appartiennent aux types affectation si le type des composants permet l affectation Les op rations d affectation et de test d galit et d in galit sont donc autoris es sur tous les tableaux de m me type de composants et d indices et de m mes dimensions Ces op rations portent sur les composants videmment Pour les tableaux unidimensionnels les op rations suppl mentaires comprennent les op rateurs relationnels amp gt lt et gt si le type des composants des tableaux est un type discret ce qui exclut les r els et on a aussi l op rateur de concat nation amp voir exemple plus loin De plus si le type des composants est un type bool en alors les op rations comprennent aussi l op rateur logique unaire not et les op rateurs logiques and or et xor Op rateur d galit r gle Pour deux valeurs tableaux l
114. nombre mais tout simplement d tudes faites par les cogniticiens sur les capacit s de la m moire g rer efficacement des t ches tant sur le plan mn sique que cognitif En terme de volume d instructions par module on s accorde aussi ne pas d passer si possible une page de listing une cinquantaine de lignes ou parfois une page d cran un peu juste Un autre probl me plus ardu encore est le crit re de faible couplage Quid On a vu que deux modules qui se suivent dans un algorithme taient en g n ral d pendants l un de l autre principe m me de la s quentialit Le faible couplage consiste minimiser le plus possible la d pendance entre les modules L id al serait qu ils soient totalement ind pendants et alors ils pourraient m me s ex cuter en parall le Voici en gros et en bref la technique de conception modulaire appliquer Tenter d isoler de reconna tre les grandes id es Pr ciser leur nature leur r le Les identifier pour les rep rer et les retenir faire un choix mn monique Soigner l interface entre les modules D crire avec clart leur fonction ce qui permettra une meilleure compr hension Enfin et seulement apr s analyser de fa on plus fine le module en r it rant la m thode ou en recourant une d composition en s quences de contr les l mentaires Ces choses l sont rudes il faut pour les comprendre avoir fait des tudes Victor Hu
115. ntit s dans un paquetage exemple P_E_ SORTIE voir d tails au cours n 7 Il existe deux sortes de sous programmes e les proc dures e les fonctions Un sous programme comme toute entit du langage constantes type variables etc on verra d autres entit s est introduit par une d claration Cette d claration de sous programme appara t en g n ral dans une partie d clarative soit d un autre sous programme soit d un paquetage soit d une autre unit L criture d un sous programme se fait devrait se faire en deux tapes s par es e d claration du sous programme c est amp dire son en t te profil ou sp cification e d finition du sous programme avec pr sentation de son corps ou r alisation Sp cification de sous programme Une sp cification de sous programme constitue l interface entre le sous programme et les unit s utilisatrices de ce sous programme La sp cification pr cise ce qu il est n cessaire de savoir pour utiliser le sous programme Son nom la liste de ses param tres param tres formels plus pr cis ment leur identificateur leur mode d utilisation caract ristique et leur type enfin le type de l objet retourn dans le cas d une fonction Cet ensemble d informations est unique et s appelle le profil du sous programme Mais la sp cification ne dit rien sur ce que fait le sous programme Un commentaire s rieux permettra de compl ter la sp cification L
116. omme pour une boucle Loop que l on peut d clarer des objets momentan ment c est dire dans la port e du bloc entre les begin et end Le traitement d exception compliqu sera tudi en d tail dans le cours n 8 D clarations des objets pour aujourd hui types variables et constantes Un des endroits privil gi s pour d clarer ces objets est la partie dite d clarative d un bloc voir ci dessus mais aussi dans la partie d clarative d une proc dure ou d une fonction entre le profil et le begin d but du corps On verra le D S de ces deux concepts au cours n 5 voyons sch matiquement l endroit procedure NOM_DE_LA PROCEDURE is partie d clarative begin A dress corps de la end NOM_DE_LA_PROCEDURE proc dure Les d clarations de types ou de sous types sont pr c d s du mot cl type ou subtype Les d clarations de variables commencent par l criture de l identificateur suivi de quant la d claration d une constante elle a t vue en D S constante universelle Voyons d autres exemples d clarations de constantes typ es DIX _ MILLE constant INTEGER 10 000 RACINE 2 constant FLOAT 1 414 DEPART constant CHARACTER A VRAIE 3 constant BOOLEAN TRUE les constantes universelles absence de type ont t vues en illustration des DS au cou
117. ont faits pendant tout le premier trimestre 14 semaines L encore des documents seront distribu s Nous vous aiderons en faire la synth se mais rien ne sera assimil sans un travail r gulier et une pratique sur ordinateur elle aussi r guli re et soutenue De nombreux ajouts seront propos s sur le CDRom sous forme de r f rence des fichiers qu ils vous restera lire Voici le contenu du cours Ada au premier trimestre un aper u de 11 semaines en 22 pav s de 2 heures repris du planning g n ral de l enseignement de l informatique en premi re ann e page pr c dente Cours n 1 Cours n 1 Cours n 3 Cours n 5 Cours n 6 Cours n 8 Cours n 10 G n ralit s I G n ralit s III Les instructions Sous programmes Types Articles Les exceptions C O 0 et T A D Compl ments Cours n 1 Cours n 2 Cours n 4 Cours n 5 bis Cours n 7 Cours n 9 ours n 10 suite G n ralit s II Types scalaires Types tableaux E S simples Paquetages Ada La g n ricit objets et classes et attributs hi rarchiques Cours n 11 Testabilit Cours n 12 Cours n 13 E S Ada Text_Io Bo te Noire et Type Access Les expressions Bo te Claire d r cursivit Cours num rique Cours n 11 Cours num rique Cours 14 1 F S suite 2 Interfa age Types digits fichiers Convergence delta S quent et direct troncature et d cimaux La partie en gris n est videmment plus le cours Ada Voir la grille g n r
118. orations de and et or L utilisation de ce type tant tr s voqu en TD d algorithmique donc nous n y reviendrons pas Les types INTEGER et FLOAT A retenir pour le moment les valeurs possibles de ces deux types num riques d pendent de l ordinateur et du compilateur sur lequel vous travaillez donc ils ne sont pas portables donc dangereux utiliser Heureusement Ada permet de construire ses propres types num riques les entiers vus plus loin et les r els vus plus tard On retiendra pour l imm diat de ne pas utiliser le type INTEGER et en attendant mieux d utiliser quand m me FLOAT Les types STRING et DURATION Vus plus tard Ainsi que Wide_String Remarque Ada propose dans des paquetages compl mentaires deux types de cha nes de caract res donc autre que String tr s int ressants les Unbounded_ String et les Bounded_ String retenez ces identificateurs Ils n appartiennent pas aux types pr d finis mais font partie du langage Ada95 De conception et surtout d utilisation sures nous les utiliserons souvent Les types construits et les constructeurs de types Il existe en Ada des constructeurs syntaxiques permettant de fabriquer ses propres types On parle alors de types construits en opposition avec les 6 types pr d finis Il existe des constructeurs de types num ratifs Cours 2 ce cours ci voir pages plus loin types tableaux Cours 4 types articles Cours 6
119. ou r el rem reste de la division enti re op randes entiers uniquement mod le modulo op randes entiers abs valeur absolue op rateur unaire et op rande entier ou r el exponentiation le premier op rande est entier ou r el et le deuxi me est entier Ces op rateurs sont donn s ci dessous par ordre de priorit croissante Les quotients entiers exemples expliqu s page suivante A B Q R soit 7 3 donne 2 7 3 donne 2 7 3 donne 2 7 3 donne 2 A B AB Q Car si on note Q le quotient entier de A B on peut crire A B Q Reste Reste se note remen Ada avec A et B Q sont de m me signe et abs A gt abs B Q D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 Les restes not s rem cons quence de la d finition du quotient ci dessus 7 rem 3 1 c est vident mais les autres T rem3 1 car 7 3 3 R 7 2 3 R 7 rem 3 1 car 7 3 3 R 7 2 3 R 7 rem 3 1 car 7 3 3 R 7 2 3 R Remarques e Le signe du reste est toujours le m me que celui du premier op rande A le dividende e Mettez les parenth ses car rem est prioritaire sur l op rateur unaire page pr c dente Modulo not mod d finition voir math matique notion de classes d quivalence n mod p n i p modp o i est un nombre relatif exemple 7 mod3 10 mod3 13 mod3 etc 4 mod 3 1 mod 3 2 mod3 e
120. ous les citer L criture d un agr gat ressemble celle d un num ratif C est normal car il faut num rer toutes les valeurs attendues L association c est dire la correspondance entre une valeur et un composant ne doit tre faite qu une seule fois dans l num ration L association se fait il y a deux cas s excluant 1 par position dans l ordre ABLE 1 6 0 2 7 4 5 9 lfordr st respect ABLE 3 5 5 8 12 2 par nomination on cite l indice puis la valeur associ e apr s le symbole gt ABLE 4 6 1 5 ABLE 1 6 1 6 gt 1 il n y a plus d ordre 53 ou en ajoutant others avec position ou avec nomination mais une seule fois et la fin voire seul ABLE 2 4 9 others gt 0 ABLE others gt 1 quivaut ABLE T_TABLE FIRST T_TABLE LAST gt 1 ABLE e gt 0 2 gt 1 others gt 0 ABLE 1 gt 1 others gt 0 On utilise le caract re pour indiquer des positions non contigu s Attention dans les agr gats de tableaux on ne peut pas m langer position et nomination Les r gles de comportement ne sont pas simples On va voir des exemples mais pour en savoir plus voyez une bonne r f rence Barnes pages 123 128 Exemples quand le type tableau a plusieurs indices type T_MATRICE POSITIVE range lt gt POSITIVE range lt
121. plicitement 6 02E 24 6 02 10 2 101 01 E1 2 1 204 1 27 2 5 0 25 2 10 5 autre remarque la valeur de la base devant le premier di se est toujours en criture enti re d cimale mais pas forc ment la valeur bas e et l exposant rep r par le E ou un e est toujours associ la base mais la valeur de l exposant s exprime comme pour la valeur de la base en d cimal Comment formaliser ces r gles les corrig s sont la fin du document page 11 a on distingue d abord les 2 classes bas es ou non d o la premi re r gle un litt ral num rique est soit un litt ral bas ou soit un litt ral d cimal exercice crire le D S correspondant Voir corrig page 11 b un litt ral bas est form d une base suivie d un di se suivi d un entier bas ventuellement suivi d un point et d un autre entier bas suivi d un deuxi me di se ventuellement suivi d un exposant exercice crire le D S correspondant c un entier bas est une suite de chiffres g n ralis s et de soulign s le soulign _ ne pouvant ni commencer ni finir l entier bas ni tre 2 fois cons cutivement exercice crire le D S correspondant d un chiffre g n ralis est soit un chiffre soit une lettre exercice crire le D S correspondant e un exposant est form d un E minuscule ou majuscule suivi d un entier d cimal l entier tant ventuellement pr c d d un ou d un
122. qu la fin du corps du sous programme Hors de cette zone l objet donc son identificateur est inaccessible la port e ne s tend pas l ext rieur du sous programme Remarquons que si le sous programme d clare aussi dans sa partie d clarative des sous programmes alors ces sous programmes appartiennent la port e de l objet local du sous programme initial cet objet local au sous programme initial peut tre utilis par les sous programmes secondaires dont il est alors objet global Hard D Feneuille LU T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 11 Unit de compilation englobante paquetage ou autre sous programme objets globaux sous programme aux objets locaux au sous programme A sous programmes sous programme B mais locaux objets locaux au sous programme B l unit de compilation Visibilit Dans la figure ci dessus le sous programme B conna t ses objets locaux ainsi que les objets locaux du sous programme l un de ces objets tant le sous programme B il conna t aussi les objets locaux de l unit englobante Le sous programme A ne conna t pas les objets locaux du sous programme B L unit de compilation englobante ignore tout des objets locaux des sous programmes A et B Les objets locaux une unit sup rieure et donc accessibles un sous programme interne sont dits globaux pour ce sous programme R gles sur la port e et
123. que en l largissant consid rablement Les notions que nous allons voir sont en interaction forte avec le cours d algorithmique puisque nous allons facilement impl menter les modules si chers la structuration modulaire d un algorithme Ce faisant nous allons aussi commencer comprendre le concept de r utilisation mais partiellement cependant car il sera largement compl t avec les paquetages et surtout avec la g n ricit Vus plus tard cours n 9 un peu de patience donc L approche modulaire rappel Nous en sommes dans le module d enseignement d algorithmique vers la fin des exercices avec la machine Moucheron Nous avons donc d j de fa on implicite mais aussi explicite montr combien il tait commode de d composer un probl me en sous probl mes allant du g n ral au particulier La lecture des fiches notamment celle de WIRTH le p re du langage Pascal nous y invite Le principe est de concevoir son algorithme l aide de structures de contr le r p titives alternatives de sch mas s quentiels d actions et de bloc de programmes appel s proc dures modules ou actions complexes S il est possible de glisser des assertions bien sp cifiques aux endroits strat giques on tend vers une conception de programmes optimum qui dans les ann es 70 80 a t d nomm e la programmation structur e Au d but en 1970 cette approche a t d une grande port e car auparavant on programmait de f
124. ques avant de se lancer dans les diagrammes de CONWAY ou D S e 1 993 vaut 1993 et 3 14159 2653 vaut 3 141592653 Ceci signifie que le trait bas dit aussi le soulign est uniquement un instrument de lisibilit de la valeur num rique enti re ou r elle A utiliser donc sans restriction si cela doit rendre le nombre plus lisible e On distingue deux classes de litt raux et ceci n a rien voir avec la classification en entier ou en r el les litt raux dits bas s et les autres Les litt raux bas s se caract risent par une valeur dite bas e encadr e par deux di ses la valeur de la base pr c de le premier di se le deuxi me di se tant ventuellement suivi d une valeur exposant Nous allons y revenir Ainsi Voici une bonne r vision sur la num ration Au 7 123 E2 ee les di ses annoncent une valeur bas e valeur de l exposant ici 2 valeur du litt ral en criture bas e 123 mais en base 7 attention valeur de la base ici 7 d o 7 123 E2 1 7 2 7 3 70 7 3234 mais cette fois en base 10 D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 D autres exemples e 2 01_0010 entier bas de base 2 valeur 010010 dans la base pas d exposant soit 1 2 1 2 16 2 18 en d cimal 16 2A3C 2 16 10 16 3 16 12 16 10812 12 E8 12 10 En l absence de base donc de di se la base est 10 im
125. ragma OPTIMIZE SPACE et pragma OPTIMIZE TIME demandent un code ex cutable optimis en place m moire ou en temps d ex cution Voir quelques pragmas dans le fichier pragma doc e On n voque pas le paquetage STANDARD avec with On ne le red finit pas non plus e Le paquetage ADA TEXT_ 10 est le paquetage officiel pour les entr es sorties textes e Letype STRING est un type tableau de caract res non contraint Il est pr d fini car d clar est d fini dans le paquetage STANDARD e Ne pas confondre SKIP_LINE et NEW_ LINE SKIP_LINE est une instruction d entr e tandis que NEW_LINE est une instruction de sortie Les lectures clavier doivent tre toujours valid es Voyez bien tous les fichiers et les paquetages sugg r s Standard attributl doc Ada Strings Ada Strings Fixed Ada Characters Handling Ada Strings Unbounded glossaire doc Ada Text_Io bodydeP_E SORTIE Ada Characters Latin_1 Et tudiezles e On ne peut comparer des objets tableau de taille diff rente que si leurs composants sont de type discret i e pas de r els D Feneuille IUT Cours Ada 5 bis E S simples 2002 fichier cours5_B DOC 30 06 02
126. rateurs applicables aux instances du type e Eventuellement un ensemble de caract ristiques appel es attributs Ces attributs sont en g n ral des op rations qui portent sur les propri t s du type lui m me et non pas comme les op rateurs sur les instances du type Cette notion d attribut n est pas vidente nous y reviendrons Les lecteurs avertis de la programmation moderne auront garde de ne pas confondre ce terme attribut Ada avec celui d attribut homonyme utilis en programmation objet avec C ou Eiffel par exemple Les types pr d finis puis les types construits Les types pr d finis Nous avons vu au cours n 1 g n ralit s II avec les D S les identificateurs de 6 types pr d finis Integer Float Boolean Character String et Duration Ces 6 types pr d finis existent respectivement pour instancier des entiers des r els nombre virgule des bool ens deux valeurs des caract res des cha nes de caract res et enfin des dur es Ces types sont d finis dans la ressource ou paquetage STANDARD qu il est inutile d voquer avec with Pour des raisons largement discut es et d montr es plus tard il est tr s prudent de refuser d utiliser le plus souvent possible les 3 types suivants Integer Float et String Nous essaierons de nous y tenir Le type CHARACTER nomm aussi LATIN_1 n L ensemble des valeurs associ es ce type est d fini d
127. rendre param trable le type T_ENTIER C est tout En ce qui concerne l criture d un type ENTIER on peut l encore en attendant la g n ricit plagier ce qui est fait dans le paquetage P_E SORTIE procedure PUT ENTIER in T_ ENTIER is begin TEXT_IO PUT T_ENTIER IMAGE L_ ENTIER end PUT D Feneuille IUT Cours Ada 5 bis E S simples 2002 fichier cours5_B DOC 30 06 02 Lecture et criture de variables de type FLOAT On utilisera encore P_E SORTIE jusqu la connaissance de la g n ricit et celle du paquetage interne FLOAT_IO de TEXT_IO Lecture et criture de variables de type num ratif L encore jusqu la ma trise de la g n ricit et du paquetage interne NUMERATION_ IO de TEXT_IO on plagiera pour lire un num ratif le bloc de lecture propos dans P_E_ SORTIE en fin de sp cifications Soit loop declare Lecture d une cha ne CHAI UNBOUNDED_ STRING LONG NATURAL begin CHAI Get_Line Con ENUM T_ENUM VALUE To_String CHA I ras 3 avec validation exit exception when others gt null ou message ECRIRE xxxxx end end loop Cette lecture est valid e et nickel En ce qui concerne l criture merci l attribut IMAGE Soit PUT ou PUT_LINI EI PU T_ENUM IMAGE ENUM
128. riqu s et d autres simples l ments algorithmiques Cet algorithme sera ensuite propos en corrig partie commune mais il est recommand de s y frotter avant Ne vous contentez pas de prendre et lire les corrig s Ceci dit c est d j bien car certains ne le feront pas attention Exercice n 3 Attention cet exercice n est pas du g teau car c est plut t long On commencera l analyse de ce travail qui sera mettre au point progressivement Bel investissement Connaissant une date sous la forme jour num ro du jour mois et ann e il faut diter la date compl te du lendemain voyez l ex cutable EXO3_SUP sur machine Exemple DIMANCHE 28 FEVRIER 1900 LUNDI 1 MARS 1900 Conseils Partagez votre travail en deux parties 1 prise en compte de la date initiale Au d but vitez cette partie en faisant une initialisation la d claration version statique Plus tard quand la partie 2 sera crite faites une saisie des 4 composants d une date dans l ordre suivant ann e mois n puis jour pour faire des tests dynamiques 2 d cision sur le lendemain c est la partie finalement la plus courte Pour viter des saisies fastidieuses on peut cr er un fichier textes une fois pour toute contenant raison d une par ligne la saisie d une date Puis l ex cution on redirige les entr es dans le fichier textes A voir en TP Bon courage L enfer commence Fin semaine 2 D
129. rire Attention comme pour le PUT_LINE cette instruction est r serv e aux STRING Notez aussi c est important le deuxi me param tre formel LAST r sultat out Quand on utilise GET_LINE pour saisir lire un STRING par exemple avec l instruction GET_LIN MESSAGE NB_CAR_SAISIS on n est plus oblig de taper autant de caract res que l instanciation en a d clar s Ouf Le dynamisme est revenu Le deuxi me param tre est le nombre de caract res saisis ici NB_CAR_SAISIS A charge ensuite pour l algorithme de ne mettre en vre que la tranche valide c est dire MESSAGE 1 NB_CAR_SAISIS c est important noter On doit instancier une variable STRING d une capacit suffisante pour g rer des saisies de taille diff rentes On peut imaginer par exemple des demandes de C V o les utilisateurs doivent donner leur nom En prenant un STRING grand on peut esp rer des saisies de noms plus modestes Sinon si l on saisit plus de caract res que l instanciation n en a pr vus le surplus ne reste pas dans le tampon comme pr c demment et le nombre de caract res en r sultat est satur la taille du STRING Mais il y a un probl me quand on saisit exactement pile poil le nombre de caract res maximum instanci s En effet dans ce cas la marque de fin de saisie c est dire la touche ENTREE reste dans le tampon et le prochain GET ou GET_LINE d un autre STRING n a
130. rire Puisque pr d fini Cette d claration pr d finie est faite comme toujours dans le paquetage STANDARD on est pri de consulter le polycopi paquetages l subtype POSITIVE is INTEGER range 1 INTEGER LAST type STRING is array POSITIVE range lt gt of CHARACTER On remarque ainsi que STRING est un type tableau de caract res non contraint cause du range lt gt Pour manipuler des variables du type STRING il faut tout d abord contraindre les indices Par exemple subtype T_STR is STRING 1 80 puis instancier les objets A B T_STR ou directement instancier avec un type muet A B STRING 1 80 sous type anonyme ou ventuellement avec initialisation rappel des agr gats A B STRING 1 80 others gt M1 mis blanc On peut galement crire des constantes STRING donc typ es E constant STRING vide F constant STRING 1 0 gt a vide aussi HELLO constant STRING Bonjour L intervalle d indice pour les constantes STRING est d duit de l affectation pour HELLO c est 1 7 Pour les deux autres c est 1 O intervalle vide Les valeurs extr mes des indices sont rarement utiles retenir pour les utiliser car les attributs FIRST et LAST suffisent les nommer Il est possible de ne pas commencer le premier indice d un STRING par 1 il suffit d imaginer
131. rs n 1 D Feneuille I U T Aix 2001 cours n 3 fichier COURS3 DOC 30 06 02 d clarations de variables CLASSE BOOLEAN TAUX_TVA FLOAT 20 5 CARCOU CHARACTER NB_DE_ LE T_COMPTI Hi EH G J Do Il o lt On peut initialiser a priori la variable avec une valeur particuli re bonne habitude Quelques exercices faciles travaillez prenez de la peine Exercice n 1 Montrez que la s quence suivante for IND in 1 5 loop HS traitement utilisant IND end loop ne peut pas toujours se traduire par IND 1 loop es traitement utilisant IND IND IND 1 end loop Aide imaginez ce qui se passe avec IND dans le deuxi me sch ma typ et d clar par subtype T_INDICE is INTEGER range 1 5 IND T_INDICE Exercice n 2 EXO2_C3 ADB Ecrire un petit programme qui e dite l cran les 10 premiers nombres entiers dite l cran les lettres minuscules dans l ordre normal dite l cran les lettres majuscules dans l ordre inverse Exercice n 3 EXO3_C3 ADB Ecrire un programme qui lit un un une suite de nombres entiers non nuls La fin de la saisie est marqu e par la saisie du nombre nul Calculez et ditez la moyenne arithm tique des nombres Rappel Il y avait des exercices plus difficiles en annexe du cours n 2 A faire pour progresser BON courage D Feneuille LU T Aix 2001 cours n
132. sceptible d tre analys e isol ment que l on peut utiliser dans un programme et m me plusieurs fois voire r utilisable dans un autre programme Par exemple dans les exercices d algorithmique l incontournable SAUTER_LES BLANCS M thodes et principes comment faire et que faire Pour tre efficace la d composition en modules doit simplifier la conception et la r alisation de l algorithme vident mais aussi sa lisibilit donc sa validation m me partielle et enfin sa maintenance c est dire son volution et son adaptabilit au cours du temps vaste projet Pour parvenir toutes ces qualit s il faut que chaque module soit sous tendu par une id e claire on parle d abstraction id e elle m me sous jacente au probl me initial Il convient aussi que la pr sentation du module l utilisateur potentiel c est dire sa d nomination soit explicite et associ e des commentaires d crivant la fonction interne sp cifications La r alisation du module peut aussi parfaitement rester cach e l utilisateur qui s int resse au pourquoi et pas au comment notion de masquage et d encapsulation Enfin le nombre de modules structurant un module plus g n ral voire l algorithme lui m me doit tre raisonnable Le nombre de 7 modules maximum est le plus souvent cit par les bons manuels cette valeur 7 ne vient pas d une quelconque croyance en la magie de ce
133. simplement L objet appara t dans l ant c dent et le cons quent La grande s curit le meilleur contr le pour une programmation optimale est de transmettre syst matiquement les objets donn es et les objets r sultats en param tre du module sous programme Donc en Ada les objets int ressants seront mis entre parenth ses soit de fa on formelle dans la d finition de la proc dure soit de fa on effective dans l utilisation de la proc dure A nsi la lisibilit et le contr le se trouvent facilit s Mais comme c est une activit tr s contraignante alors beaucoup de programmeurs la transgressent un peu D ailleurs on pourra remarquer que dans les exercices d algorithmique nous avons trop n glig cette syst matisation faute de pratique et faute de connaissance sur le sujet il est vrai On peut remarquer que les objets donn es exclusivement donn es ne sont pas modifi s par le module ou plut t ne devraient pas l tre De m me les objets r sultats exclusivement r sultats ne sont que modifi s on ne s int resse pas leur valeur l entr e du module En Ada le programmeur est oblig de marquer la caract ristique appel mode d utilisation du param tre donn e avec in r sultat avec out ou donn e r sultat avec in out et ceci dans la d finition du module c est amp dire dans la liste des param tres formels Cette contrainte permet au compilateur de v rifier qu aucun param tre form
134. sont incompl tement sp cifi s on parle de tableaux non contraints car la plage d indices est impr cise Mais de fa on effective on travaillera finalement l ex cution sur des tableaux contraints c est dire dont l intervalle est connu et born Cette notion l n est pas facile De fa on g n rale on a le D S d finition d un type tableau et pour faire court Contrainte indice Sous type indice Sous type composant Exemples attention ici type tableaux non contraints ou mod le de tableaux type T_VECTEURI is array POSITIVE range lt gt of FLOAT type VECTEUR2 is array NATURAL range lt gt of INTEGER type T_VECTEUR DE B is array CHARACTER range lt gt of BOOLEAN type T_MAT is array T_ ENTIER range lt gt T_ ENTIER range lt gt of FLOAT type T_NOM is array INTEGER range lt gt of STRING 1 30 La notation lt gt s appelle bo te box en anglais elle indique que l intervalle des indices est retard e avec range A partir de ces types de base il est possible de d clarer des objets l aide de contraintes d indice Exemples d instanciation i e de d claration d objets de type tableau VECT_N VECTEUR1 1 10 10 composants r els VECT_B VECTEUR_DE_B A T 20 composants bool ens D Feneuille I U T Aix 2002
135. stronomie et de m canique En 1814 il pouse une jeune brunette qui lui fera une grande famille A l origine c est pour palier les erreurs de calcul qui encombrent les tables astronomiques et nautiques qu il envisage une machine calculer plus proche d une machine d horlogerie que des calculateurs actuels Apr s de nombreux checs et beaucoup d argent perdu il fait une pause en 1827 Un an plus tard il reprend ses travaux Malgr des aides minist rielles la machine diff rence sera condamn e Loin de se r signer il pr pare sur papier cette fois une autre machine plus simple la machine analytique Elle ne fut jamais construite de son vivant mais sera fabriqu vers 1990 et expos au Science Museum de Londres Les 300 plans et 7000 pages de notes laiss s par Babbage permettent de classer cette machine parmi les anc tres de l ordinateur actuel En 1833 il rencontre une brune aux yeux de jais Ada Byron comtesse de Lovelace Passionn e de math matiques elle aussi elle devint sa collaboratrice en 1842 Elle crivit pour la machine analytique fictive de Babbage des programmes destin s tourner d s que l engin serait op rationnel Il ne vit jamais le jour de son vivant comme on l a signal Des informaticiens s amus rent plus tard coder les algorithmes de la comtesse Ils tourn rent parait il du premier coup On voit ainsi en Ada Lovelace le
136. tableau est un type composite revoir la classification des types cours n 2 page 7 Un type composite permet de regrouper plusieurs l ments dans une m me structure On verra dans une semaine l autre type composite c est dire le type article record cours n 6 L int r t de regrouper sous une m me entit des l ments que l on appelle des composants est fort utile en informatique L int r t des tableaux on parle aussi de vecteurs quand ils sont mono indic s est reconnu depuis l av nement des premiers langages le FORTRAN par exemple On va voir cette semaine n 3 en Algorithmique la manipulation des entit s MOTS que l on pourra en Ada r aliser on dit aussi impl menter avec des tableaux Un objet tableau est un objet compos d l ments qui sont tous du m me type Les l ments sont accessibles et rep r s au moyen d indices on parle aussi d index Il y a donc deux concepts dans un type tableau Ada le ou les indices du tableau d une part et les composants du tableau d autre part La d finition d un tableau comportera e d une part la d finition du type des indices type discret seulement donc type num ratif ou type entier e etd autre part la d finition du type des l ments ou composants du tableau tout type sans limite En Ada gros apport nous pourrons d finir voir le D S dans le cours n 1 des mod les de type tableau dans lesquels les domaines des indices
137. tc Pour choisir LE repr sentant de la classe on arr te quand n ip est inclus dans 0 p si p gt 0 ou p 0 si p lt 0 donc dans l exemple 7 mod 3 1 mod 3 7 mod3 1 car 1 est compris entre 0 et 3 0 3 7 mod 3 2 car 7 mod 3 4 mod 3 1 mod 3 2 mod 3 0 lt 2 lt 3 7 mod 3 2 car 7 mod 3 4 mod 3 1 mod 3 2 mod 3 3 lt 2 lt 0 7 mod 3 1 car 7 mod 3 4 mod 3 1 mod 3 3 lt 1 lt 0 Remarques mettez bien les parenth ses n cessaires modest prioritaire sur l op rateur unaire le signe du mod est celui du 2 op rande mod est diff rent de rem sauf quand les op randes ont le m me signe Habitu s du Pascal attention mod en Ada n est pas l op rateur du reste Exercice n 3 Compte tenu des d clarations suivantes valuer les expressions ci dessous il y a des pi ges I constant 7 J constant 5 K constant 3 a I J K b I K K c IJ K d J 2 modI e J mod3 f J rem3 g J 2 remI h K K K D Feneuille I U T Aix 2001 cours n 1 G n ralit s II fichier Cours1_B DOC 30 06 02 10 Corrig s des exercices Exercice n 1 25 7 oui et c est un r el T non il manque l entier avant le point 16 E2 oui et c est un entier 16 e 2 non pas d exposant n gatif pour un entier Ce n est pas non plus un r el 2 1101 non il manque le de la fin 3 14157 _345678 oui et c est un r e
138. te contr ler la syntaxe En cas de succ s le gestionnaire de biblioth que library le r pertorie l aide de son identificateur de proc dure ou de paquetage Faire l dition de liens c est l action qui demande l diteur de liens link de construire un programme ex cutable Seuls les proc dures peuvent tre link es et non les paquetages qui sont des ressources L identificateur fournir est celui figurant dans la biblioth que il est r pertori apr s la compilation et non celui du fichier compil Avec gnat il est recommand de prendre le m me Les d clarations et les instructions sont termin es par un point virgule L affectation est symbolis e par Une valeur peut tre affect e un objet d s sa d claration initialisation Chaque d finition de type introduit un type distinct Attention aux types muets dits aussi anonymes Un sous type n est pas un nouveau type C est le type de base mais avec un contrainte ventuelle Un type est statique Un sous type peut ne pas l tre Les types num riques entiers et r els ne se m langent pas Pas d arithm tique mixte sauf mod et rem sont seulement quivalents pour des op randes de m me signe positives ou n gatives Les op rateurs arithm tiques ont des priorit s diff rentes conna tre Un type scalaire n est jamais vide son sous type peut l tre POS VAL SUCC PRED agissant sur un sous type agissent
139. tions possibles ou manquantes Sch matiquement il vient procedure EXEMPLE is LIRE est d finie quelque part o A voir ane procedure LIRE is begin ss begin loop declare Ne Etes m end end loop Dates end LIR jga procedure LIRE is begin Am lioration de la proc dure ou module LIRE qui s crit de fa on plus d taill e a priori end loop end LIRE D Feneuille LU T Aix 2002 cours n 5 fichier COURSS DOC 30 06 02 Apr s am lioration expliqu e plus loin la proc dure devient On remarque la procedure LIRE is d claration qui a CHAI UNBOUNDI chang de place begin loop begin JIRE CHAI surcharge de A_VALEUR T_DISCRET VALUE TO_STRING CHAI l identificateur exit LIRE revoir exception when others gt null ou message ce n est pas le end m me end loop end LIRE La d claration de la variable cha ne de caract res CHAT qui avait lieu chaque reprise de boucle peut tre faite une seule fois partie d clarative de la proc dure nous y reviendrons On verra aussi la notion tr s importante en Ada de surcharge qui permet d identifier sans ambigu t plusieurs objets avec le m me nom Qv est ce qu un module premi re approche simple C est une entit de programme en g n ral simple au sens o elle est su
140. tres exemples d attributs T_COULEURFIRST sera le symbole VIOLET T_COULEUR SUCC ORANGE sera le symbole ROUGE T_COULEURPRED ORANGE sera le symbole JAUNE T_FEUX PRED ORANGE sera le symbole VERT T_COULEUR POS BLEU sera la valeur enti re 2 T_ COULEUR VAL 0 sera le symbole VIOLET D Feneuille I U T 2001 cours n 2 fichier COURS2 DOC 30 06 02 Attention le rang POS du premier l ment d un num ratif est gal 0 Par contre l attribut POS sur un type ou un sous type entier est l op rateur identit INTEGER POS L_ ENTIER est gale la valeur de la variable L_ENTIER Exemple INTEGER POS 5 vaut 5 A retenir Rappel les types pr d finis CHARACTER et BOOLEAN sont en fait des types num ratifs Ainsi CHARACTER POS A 65 et CHARACTER VAL 65 A Les types discrets il s agit de la r union des types entiers et num ratifs les types entiers type pr d fini INTEGER par exemple et les types entiers construits les types num ratifs type pr d fini comme BOOLEAN ou CHARACTER et construits Les types scalaires Il s agit de la r union des types discrets et des types r els Ce type scalaire est caract ris par les 4 propri t s suivantes notez donc que ces 4 propri t s s appliquent tous les types discrets vus pr c demment e Pour ce type sont d finies l affectation et les op
141. usqu en avril 1811 voyageant tudiant crivant son retour Londres en juin 1811 il rapportait plusieurs po mes et une sorte de journal de voyage qu il publia La r ussite jointe la jeunesse du po te la beaut l l gance et l excentricit du dandy fit de lui l idole du jour et lui valut de faciles succ s f minins Certaines admiratrices passionn es s impos rent litt ralement lui ma tresses indiscr tes elles entra n rent le jeune auteur la mode gris de sa popularit dans des intrigues compliqu es Ces aventures colport es embellies avilies par des confidences indiscr tes contribu rent cr er le personnage l gendaire de bourreau des cours Au cours de l t 1813 il revit apr s plusieurs ann es de s paration sa demi sor Augusta Qu ils aient eu l un pour l autre une affection passionn e et trangement fraternelle ne fait pas de doute comme en t moignent ses po mes Augusta Y eut il inceste Medora Leigh fille d Augusta n e le 15 avril 1814 en fut elle le fruit Il n y eut l poque que de tr s vagues soup ons La destruction de ses M moires aussit t apr s sa mort donna penser qu il y avait un scandale cacher En d pit du succ s de ses ouvrages et en raison d un train de vie ruineux le noble lord tait pauvre et cribl de dettes Il chercha redorer son blason en pousant une riche h riti re Le mariage eut lieu le 2j
142. vailler avec un vecteur non contraint en param tre formel ici le type STRING procedure COMPTER CAR in CHARACTER VEC in STRING NB out NATURAL is COMPT NATURAL 0 begin for IND in VEC FIRST VEC LAST ou encore for IND in VEC RANGE loop if CAR VEC IND then COMPT COMPT 1 end if end loop NB COMPT end COMPTER Voyez comment l algorithme reste valable m me avec un vecteur VEC vide ou tout au moins le param tre effectif associ Voyez comment avec VEC FIRST VEC LAST ou VEC RANGE ce qui est pareil on s affranchit de l intervalle effectif que l on ne conna t pas encore Ada c est le pied D Feneuille I U T Aix 2002 cours n 5 fichier COURS5 DOC 30 06 02 16 Le type STRING permet de r aliser beaucoup d op rations On peut crire des sous programmes permettant par exemple d extraire une sous cha ne de rechercher une sous cha ne de passer en majuscules ou minuscules une cha ne etc bref tout ce qu il faut pour r gler le traitement des cha nes A voir dans l tude des paquetages Ada Strings Maps etAda Strings Fixed Ceciest vu en TD Exemple de fonction capable de remplacer partout dans une cha ne OU une sous cha ne QUOI par la sous cha ne PARQUOT avec des STRING Essayez de comprendre Pas facile on reverra cela avec la r cursivit function REMPLACER OU QUOI PARQUOI in STRING retur
Download Pdf Manuals
Related Search
Related Contents
EWF14822 EWF14922 WASHING MACHINE USER MANUAL Manual do Utilizador do Nokia 5530 XpressMusic PV Inverter SUNNY TRIPOWER 5000TL / 6000TL Sunbeam SH3700 User's Manual EE Podcast #79 Add-on Development with Mark Croxton 無垢フローリング取扱説明書(PDF) Philips 42PF1000 42" plasma widescreen flat TV Heritage Flat Top And Lock Kit Instruction Sheet - Harley Copyright © All rights reserved.