programmer avec ada apprendre à - …christine.lang7.free.fr/tutos/le site du...

352
Apprendre à programmer avec Ada Par Kaji9 www.siteduzero.com Licence Creative Commons 4 2.0 Dernière mise à jour le 21/11/2012

Upload: dodang

Post on 12-Sep-2018

242 views

Category:

Documents


3 download

TRANSCRIPT

  • Apprendre programmer avec Ada

    Par Kaji9

    www.siteduzero.com

    Licence Creative Commons 4 2.0Dernire mise jour le 21/11/2012

    http://www.siteduzero.com

  • Sommaire

    2Sommaire ........................................................................................................................................... 5Lire aussi ............................................................................................................................................ 7 Apprendre programmer avec Ada ................................................................................................... 8Partie 1 : Premiers pas avec Ada ........................................................................................................ 8Programmation, algorithmique et Ada ? ............................................................................................................................ 8Qu'est-ce qu'un programme ? ..................................................................................................................................................................................... 8Qu'appelle-t-on programme ? .....................................................................................................................................................................................

    11Alors qu'allons-nous faire ? ....................................................................................................................................................................................... 12Comment raliser un programme ? .......................................................................................................................................................................... 13Pourquoi Ada et pas autre chose ? ........................................................................................................................................................................... 13Algorithmique ............................................................................................................................................................................................................ 15Pourquoi Ada ? ..........................................................................................................................................................................................................

    16Les logiciels ncessaires ................................................................................................................................................ 16IDE et compilateur : kesako ? ................................................................................................................................................................................... 16Le compilateur ........................................................................................................................................................................................................... 16L'IDE ou EDI .............................................................................................................................................................................................................. 16Tlcharger et installer Adagide. ............................................................................................................................................................................... 16Tlchargement ........................................................................................................................................................................................................ 16Installation ................................................................................................................................................................................................................. 17Tlcharger et installer GNAT. .................................................................................................................................................................................. 17Tlchargement ........................................................................................................................................................................................................ 17Installation ................................................................................................................................................................................................................. 17Tlcharger et installer GPS .....................................................................................................................................................................................

    18Notre premier programme en Ada ................................................................................................................................... 19Dcouvrir son IDE en quelques secondes ................................................................................................................................................................ 19Soyons rapide avec Adagide ..................................................................................................................................................................................... 20Pour les utilisateurs de GPS (plus long) ................................................................................................................................................................... 22Notre premier programme ......................................................................................................................................................................................... 22Un petit copier-coller ! ............................................................................................................................................................................................... 23Compiler, crer ... lancer ! ......................................................................................................................................................................................... 23Mon dieu, qu'ai-je fait ? ............................................................................................................................................................................................. 24Le corps du programme : la procdure Hello ............................................................................................................................................................ 25Les Packages avec With et Use ............................................................................................................................................................................... 26Une dernire remarque qui a son importance ........................................................................................................................................................... 26Vous en voulez encore ? ........................................................................................................................................................................................... 26Exercice 1 .................................................................................................................................................................................................................. 27Exercice 2 .................................................................................................................................................................................................................. 28Exercice 3 ..................................................................................................................................................................................................................

    29Partie 2 : Ada, notions essentielles ................................................................................................... 29Variables I : Typage et affectation ................................................................................................................................... 29Dclaration de variables ............................................................................................................................................................................................ 30Diffrents types ......................................................................................................................................................................................................... 30Les types Integer et Natural ...................................................................................................................................................................................... 31Le type Float .............................................................................................................................................................................................................. 32Le type Character ...................................................................................................................................................................................................... 33Affectation ................................................................................................................................................................................................................. 33Affectation par le programmeur (ou le programme) .................................................................................................................................................. 33Affectation par l'utilisateur ......................................................................................................................................................................................... 34L'instruction Skip_line ................................................................................................................................................................................................ 35Constantes et attributs .............................................................................................................................................................................................. 35Constantes ................................................................................................................................................................................................................ 36Attributs .....................................................................................................................................................................................................................

    38Variables II : Oprations .................................................................................................................................................. 38Oprations sur les Integer et les Natural ................................................................................................................................................................... 39Oprations sur les float ............................................................................................................................................................................................. 39Oprations sur les character ..................................................................................................................................................................................... 40Exercices ................................................................................................................................................................................................................... 40Exercice 1 .................................................................................................................................................................................................................. 41Exercice 2 .................................................................................................................................................................................................................. 41Exercice 3 .................................................................................................................................................................................................................. 42Exercice 4 ..................................................................................................................................................................................................................

    43Les conditions I ............................................................................................................................................................... 44Conditions simples avec IF ....................................................................................................................................................................................... 44Un dbut en douceur ................................................................................................................................................................................................. 45Une premire alternative ........................................................................................................................................................................................... 45Conditions multiples avec IF ..................................................................................................................................................................................... 47Conditions multiples avec CASE ............................................................................................................................................................................... 47Les oprateurs de comparaison ................................................................................................................................................................................

    49Les conditions II : les boolens ....................................................................................................................................... 50Introduction aux boolens ......................................................................................................................................................................................... 50Un bref historique ...................................................................................................................................................................................................... 50Qu'est-ce qu'un boolen ? ......................................................................................................................................................................................... 51Les oprateurs boolen ............................................................................................................................................................................................. 51La ngation avec Not ................................................................................................................................................................................................

    2/353

    www.siteduzero.com

    http://www.siteduzero.com

  • 52Les oprations Or et And ........................................................................................................................................................................................... 52L'instruction or ........................................................................................................................................................................................................... 52L'instruction and ........................................................................................................................................................................................................ 53L'opration xor (optionnel) ......................................................................................................................................................................................... 53Bilan de notre programme ......................................................................................................................................................................................... 54Priorits boolennes et ordre de test (Supplment) .................................................................................................................................................. 54Priorits avec les boolens ....................................................................................................................................................................................... 55Ordre de test .............................................................................................................................................................................................................

    57Les boucles ..................................................................................................................................................................... 57La boucle Loop simple .............................................................................................................................................................................................. 59La boucle While ......................................................................................................................................................................................................... 59La boucle For ............................................................................................................................................................................................................ 60Les antiquits : l'instruction goto ............................................................................................................................................................................... 61Boucles imbriques ................................................................................................................................................................................................... 61Mthode avec une seule boucle (plutt mathmatique) ........................................................................................................................................... 62Mthode avec deux boucles (plus naturelle) ............................................................................................................................................................. 63Exercices ................................................................................................................................................................................................................... 63Exercice 1 .................................................................................................................................................................................................................. 63Exercice 2 .................................................................................................................................................................................................................. 64Exercice 3 .................................................................................................................................................................................................................. 64Exercice 4 .................................................................................................................................................................................................................. 64Exercice 5 .................................................................................................................................................................................................................. 64Exercice 6 ..................................................................................................................................................................................................................

    65Procdures et fonctions I ................................................................................................................................................ 65Les procdures .......................................................................................................................................................................................................... 65Procdure sans paramtre ........................................................................................................................................................................................ 67Procdure avec un paramtre (ou argument) ........................................................................................................................................................... 69Procdure avec plusieurs paramtres (ou arguments) ............................................................................................................................................. 70Les fonctions ............................................................................................................................................................................................................. 70Une bte fonction ...................................................................................................................................................................................................... 71Une fonction un peu moins bte (optionnel) ............................................................................................................................................................. 73Bilan .......................................................................................................................................................................................................................... 75Prdfinir ses paramtres ......................................................................................................................................................................................... 77In, Out, In Out ............................................................................................................................................................................................................ 77Mode in ...................................................................................................................................................................................................................... 77Mode out ................................................................................................................................................................................................................... 77Mode in out ................................................................................................................................................................................................................

    79[TP1] le craps .................................................................................................................................................................. 79Les rgles du craps ................................................................................................................................................................................................... 79Cahier des charges ................................................................................................................................................................................................... 80Simuler le hasard (ou presque) ................................................................................................................................................................................. 81Un plan de bataille .................................................................................................................................................................................................... 82Une solution ..............................................................................................................................................................................................................

    84Partie 3 : Ada, les types composites ................................................................................................. 85Les tableaux .................................................................................................................................................................... 85Les types composites, c'est quoi ? ............................................................................................................................................................................ 86Tableaux unidimensionels ......................................................................................................................................................................................... 86Problme ................................................................................................................................................................................................................... 87Cration d'un tableau en Ada .................................................................................................................................................................................... 90Attributs pour les tableaux ......................................................................................................................................................................................... 91Tableaux multidimensionels ...................................................................................................................................................................................... 91Tableaux bidimensionnels ......................................................................................................................................................................................... 92Tableaux tridimensionnels et plus ............................................................................................................................................................................. 94Et mes attributs ? ...................................................................................................................................................................................................... 94Et mes agrgats ? ..................................................................................................................................................................................................... 95Des tableaux un peu moins contraints ...................................................................................................................................................................... 95Un type non-contraint ou presque ............................................................................................................................................................................. 95Affectation par tranche .............................................................................................................................................................................................. 96Dclarer un tableau en cours de programme ............................................................................................................................................................ 97Quelques exercices ................................................................................................................................................................................................... 97Exercice 1 .................................................................................................................................................................................................................. 98Exercice 2 ..................................................................................................................................................................................................................

    100Exercice 3 ................................................................................................................................................................................................................ 103Les chanes de caractres ............................................................................................................................................ 103Prsentation des Chanes de Caractres ............................................................................................................................................................... 103Dclaration et affectation d'un string ....................................................................................................................................................................... 104Quelques oprations sur les strings ........................................................................................................................................................................ 104Accs une valeur .................................................................................................................................................................................................. 104Accs plusieurs valeurs ....................................................................................................................................................................................... 105Modifier la casse ..................................................................................................................................................................................................... 105Concatnation ......................................................................................................................................................................................................... 106Transformer une variable en string et inversement ................................................................................................................................................. 107Comparaison ........................................................................................................................................................................................................... 107Saisie au clavier ...................................................................................................................................................................................................... 108Chanes de caractres non contraintes ................................................................................................................................................................... 108Dclarer des strings illimits ! ................................................................................................................................................................................. 108Oprations sur les unbounded_string ..................................................................................................................................................................... 111La programmation modulaire I : les packages .............................................................................................................. 111Les fichiers ncessaires .......................................................................................................................................................................................... 112Notre premire procdure... empaquete ............................................................................................................................................................... 115Complter notre package (exercices) ...................................................................................................................................................................... 115Procdures d'affichage ............................................................................................................................................................................................

    Sommaire 3/353

    www.siteduzero.com

    http://www.siteduzero.com

  • 116Procdures de cration ........................................................................................................................................................................................... 116Fonctions de tri ........................................................................................................................................................................................................ 116Oprations lmentaires ......................................................................................................................................................................................... 117Complter notre package (solutions) ....................................................................................................................................................................... 121Vecteurs et calcul vectoriel (optionnel) .................................................................................................................................................................... 121Qu'est-ce exactement qu'un T_Vecteur ? ............................................................................................................................................................... 121Calcul vectoriel ........................................................................................................................................................................................................

    122Les fichiers .................................................................................................................................................................... 123Ouvrir / Fermer un fichier texte ................................................................................................................................................................................ 123Package ncessaire ................................................................................................................................................................................................ 123Le type de l'objet ..................................................................................................................................................................................................... 123Fermer un fichier ..................................................................................................................................................................................................... 124Ouvrir un fichier ....................................................................................................................................................................................................... 126Le paramtre Mode ................................................................................................................................................................................................. 126Lecture seule ........................................................................................................................................................................................................... 126Ecriture seule .......................................................................................................................................................................................................... 126Ajout ........................................................................................................................................................................................................................ 127Oprations sur les fichiers textes ............................................................................................................................................................................ 127Mode lecture seule : In_File .................................................................................................................................................................................... 130Mode criture : Out_File / Append_File ................................................................................................................................................................... 130Autres oprations .................................................................................................................................................................................................... 131Les fichiers binaires squentiels ............................................................................................................................................................................. 133Les fichiers binaires directs ..................................................................................................................................................................................... 134Quelques exercices ................................................................................................................................................................................................. 134Exercice 1 ................................................................................................................................................................................................................ 135Exercice 2 ................................................................................................................................................................................................................ 136Exercice 3 ................................................................................................................................................................................................................

    138Crer vos propres objets ............................................................................................................................................... 139Crer partir de types prdfinis ............................................................................................................................................................................ 139Sous-type comme intervalle .................................................................................................................................................................................... 139Types modulaires .................................................................................................................................................................................................... 140Enumrer les valeurs d'un type ............................................................................................................................................................................... 141Les types structurs ................................................................................................................................................................................................ 141Dclarer un type "construit" ..................................................................................................................................................................................... 143Ordre des dclarations ............................................................................................................................................................................................ 144Dclarer et modifier un objet de type structur ....................................................................................................................................................... 14522 ! Rev'l les tableaux ! ......................................................................................................................................................................................... 147Les types structurs : polymorphes et mutants ! ..................................................................................................................................................... 147Les types structurs polymorphes ........................................................................................................................................................................... 149Les types structurs mutants ..................................................................................................................................................................................

    152[TP2] logiciel de gestion de bibliothque ...................................................................................................................... 153Cahier des charges ................................................................................................................................................................................................. 153Quelles donnes pour quels types de donnes ? ................................................................................................................................................... 154Quelle architecture pour les fichiers ........................................................................................................................................................................ 154Quelles fonctionnalits pour quelles fonctions et procdures ? .............................................................................................................................. 155Architecture du code source ................................................................................................................................................................................... 155Conception du programme (suivez le guide) .......................................................................................................................................................... 155Cration des types .................................................................................................................................................................................................. 156Affichage d'une uvre ............................................................................................................................................................................................ 156Saisie d'une oeuvre ................................................................................................................................................................................................. 157Gestion des fichiers ................................................................................................................................................................................................. 158Les commandes ...................................................................................................................................................................................................... 158Solutions possibles .................................................................................................................................................................................................

    167Les pointeurs I : allocation dynamique .......................................................................................................................... 168Mmoire, variable et pointeur .................................................................................................................................................................................. 171Le type access ........................................................................................................................................................................................................ 171Dclarer un pointeur ................................................................................................................................................................................................ 172Que contient mon pointeur ? ................................................................................................................................................................................... 173Comment accder aux donnes ? .......................................................................................................................................................................... 173Oprations sur les pointeurs ................................................................................................................................................................................... 175Une erreur viter .................................................................................................................................................................................................. 175Libration de la mmoire ......................................................................................................................................................................................... 175Un programme (un peu) gourmand ......................................................................................................................................................................... 176Un problme de mmoire ........................................................................................................................................................................................ 178Rsolution du problme .......................................................................................................................................................................................... 179Exercices ................................................................................................................................................................................................................. 179Exercice 1 ................................................................................................................................................................................................................ 180Exercice 2 ................................................................................................................................................................................................................

    182Les pointeurs II .............................................................................................................................................................. 182Cas gnral ............................................................................................................................................................................................................. 182Pointeurs gnraliss : pointer sur une variable ..................................................................................................................................................... 183Pointeur sur une constante et pointeur constant ..................................................................................................................................................... 184Pointeur sur pointeur ............................................................................................................................................................................................... 185Pointeur comme paramtre ..................................................................................................................................................................................... 186Pointeur sur un programme (optionnel) .................................................................................................................................................................. 186Un exemple simple .................................................................................................................................................................................................. 188Un exemple de la vie courante ................................................................................................................................................................................ 188Un exemple trs ... mathmatique .......................................................................................................................................................................... 191Exercices ................................................................................................................................................................................................................. 191Exercice 1 ................................................................................................................................................................................................................ 192Exercice 2 ................................................................................................................................................................................................................ 193Exercice 3 ................................................................................................................................................................................................................

    Sommaire 4/353

    www.siteduzero.com

    http://www.siteduzero.com

  • 194Exercice 4 ................................................................................................................................................................................................................ 194Exercice 5 (Niveau Scientifique) .............................................................................................................................................................................

    196Fonctions et procdures II : la rcursivit ..................................................................................................................... 197Une premire dfinition ........................................................................................................................................................................................... 198Exemple d'algorithme rcursif ................................................................................................................................................................................. 199Un premier exemple de fonction rcursive .............................................................................................................................................................. 199nonc .................................................................................................................................................................................................................... 199Indications ............................................................................................................................................................................................................... 201Une solution possible .............................................................................................................................................................................................. 201Algorithme de recherche par dichotomie ................................................................................................................................................................ 201Principe ................................................................................................................................................................................................................... 203Mise en uvre ........................................................................................................................................................................................................ 203Solution ................................................................................................................................................................................................................... 204Quelques exercices ................................................................................................................................................................................................. 204Exercice 1 ................................................................................................................................................................................................................ 205Exercice 2 ................................................................................................................................................................................................................ 206Exercice 3 ................................................................................................................................................................................................................ 207Exercice 4 ................................................................................................................................................................................................................

    207Les Types Abstraits de Donnes : listes, files, piles ... ................................................................................................. 208Qu'est-ce qu'un Type Abstrait de Donnes ? .......................................................................................................................................................... 208Un premier cas ........................................................................................................................................................................................................ 209Autres cas ............................................................................................................................................................................................................... 212Primitives ................................................................................................................................................................................................................. 213Les piles .................................................................................................................................................................................................................. 213Cration du type T_Pile ........................................................................................................................................................................................... 214Cration des primitives ............................................................................................................................................................................................ 217Jouons avec le package P_Pile .............................................................................................................................................................................. 218Les files ................................................................................................................................................................................................................... 218Implmentation ........................................................................................................................................................................................................ 220Amusons-nous encore ............................................................................................................................................................................................ 221Les listes chanes .................................................................................................................................................................................................. 221Quelques rappels .................................................................................................................................................................................................... 222Le package Ada.Containers.Doubly_Linked_Lists .................................................................................................................................................. 226Le package Ada.Containers.Vectors .......................................................................................................................................................................

    228[TP3] le jeu du serpent .................................................................................................................................................. 229Cahier des charges ................................................................................................................................................................................................. 229Fonctionnalits ........................................................................................................................................................................................................ 229Organisation des types et variables ........................................................................................................................................................................ 230Un package bien utile .............................................................................................................................................................................................. 230Le package NT_Console ......................................................................................................................................................................................... 241Le contenu en dtail ................................................................................................................................................................................................ 243... et encore un autre ! ............................................................................................................................................................................................. 244Quelques indications ............................................................................................................................................................................................... 244Jouer en temps rel ................................................................................................................................................................................................ 245Comment afficher un serpent et une zone de jeu en couleur ? .............................................................................................................................. 246Par o commencer ? ............................................................................................................................................................................................... 246Une solution possible ..............................................................................................................................................................................................

    254Partie 4 : Ada : Notions avances en Programmation Oriente Objet ............................................ 255Algorithmique : tri et complexit .................................................................................................................................... 255Algorithmes de tri lents ............................................................................................................................................................................................ 256Tri par slection (ou par extraction) ......................................................................................................................................................................... 257Tri par insertion ....................................................................................................................................................................................................... 258Tri bulles (ou par propagation) ............................................................................................................................................................................. 259Algorithmes de tri plus rapides ................................................................................................................................................................................ 259Tri rapide (ou Quick Sort) ........................................................................................................................................................................................ 261Tri fusion (ou Merge Sort) ........................................................................................................................................................................................ 263Tri par tas ................................................................................................................................................................................................................ 269Thorie : complexit d'un algorithme ...................................................................................................................................................................... 269Complexit .............................................................................................................................................................................................................. 269L'criture O .............................................................................................................................................................................................................. 270Quelques fonctions mathmatiques ........................................................................................................................................................................ 272Mesures de complexit des algorithmes ................................................................................................................................................................. 272Un algorithme pour mesurer la complexit ... des algorithmes ............................................................................................................................... 274Traiter nos rsultats .................................................................................................................................................................................................

    277Variables III : Gestion bas niveau des donnes ............................................................................................................ 277Reprsentation des nombres entiers ...................................................................................................................................................................... 277Le code binaire ........................................................................................................................................................................................................ 278Conversions entre dcimal et binaire ...................................................................................................................................................................... 279Retour sur le langage Ada ....................................................................................................................................................................................... 282Reprsentation du texte .......................................................................................................................................................................................... 284Reprsentation des nombres dcimaux en virgule flottante ................................................................................................................................... 284Reprsentation des float ......................................................................................................................................................................................... 286Implications sur le langage Ada ..............................................................................................................................................................................

    290La programmation modulaire II : Encapsulation ........................................................................................................... 290Qu'est-ce qu'un objet ? ............................................................................................................................................................................................ 290Une premire approche ........................................................................................................................................................................................... 292Posons le vocabulaire ............................................................................................................................................................................................. 293De nouvelles contraintes ......................................................................................................................................................................................... 294Un package... priv ................................................................................................................................................................................................. 294Partie publique / partie prive ................................................................................................................................................................................. 296Visibilit ................................................................................................................................................................................................................... 297Un package priv et limit .......................................................................................................................................................................................

    Sommaire 5/353

    www.siteduzero.com

    http://www.siteduzero.com

  • 297Que faire avec un type private ? ............................................................................................................................................................................. 298Restreindre encore notre type ................................................................................................................................................................................. 299Exercices ................................................................................................................................................................................................................. 300Exercice 1 ................................................................................................................................................................................................................ 300Exercice 2 ................................................................................................................................................................................................................

    301La programmation modulaire III : Gnricit ................................................................................................................. 302Gnricit : les grandes lignes. ............................................................................................................................................................................... 302Que veut-on faire ? .................................................................................................................................................................................................. 302Plan de bataille ........................................................................................................................................................................................................ 303Un dernier point de vocabulaire .............................................................................................................................................................................. 304Crer et utiliser une mthode gnrique ................................................................................................................................................................. 304Crer une mthode gnrique ................................................................................................................................................................................ 305Utiliser une mthode gnrique .............................................................................................................................................................................. 307Paramtres gnriques de types simples et privs ................................................................................................................................................ 307Types gnriques simples ....................................................................................................................................................................................... 308Types gnriques privs ......................................................................................................................................................................................... 308Paramtres gnriques de types composites et programmes ................................................................................................................................ 308Tableaux gnriques ............................................................................................................................................................................................... 310Pointeurs gnriques .............................................................................................................................................................................................. 310Paramtre de type programme : le cas d'un paramtre limited private ................................................................................................................... 312Packages gnriques .............................................................................................................................................................................................. 312Exercice ................................................................................................................................................................................................................... 313Solution ................................................................................................................................................................................................................... 315Application ...............................................................................................................................................................................................................

    315La programmation modulaire IV : Hritage et drivation .............................................................................................. 316Pour bien commencer ............................................................................................................................................................................................. 316Hritage : une premire approche thorique ........................................................................................................................................................... 317Hritage : une approche par l'exemple ................................................................................................................................................................... 318Hritage ................................................................................................................................................................................................................... 318Hritage de package simple .................................................................................................................................................................................... 322Hritage avec des packages privs ........................................................................................................................................................................ 324Hritage avec des packages gnriques ................................................................................................................................................................ 325Drivation et types tiquets ................................................................................................................................................................................... 325Crer un type tiquet ............................................................................................................................................................................................. 326Et nos mthodes ? .................................................................................................................................................................................................. 329Un autre avantage des classes ............................................................................................................................................................................... 330Bilan : ......................................................................................................................................................................................................................

    330La programmation modulaire V : Polymorphisme, abstraction et hritage multiple ..................................................... 331Polymorphisme ....................................................................................................................................................................................................... 331Mthodes polymorphes ........................................................................................................................................................................................... 332Objets polymorphes ................................................................................................................................................................................................ 336Abstraction .............................................................................................................................................................................................................. 336Types abstraits ........................................................................................................................................................................................................ 337Mthodes abstraites ................................................................................................................................................................................................ 339Hritage multiple ..................................................................................................................................................................................................... 339Comment Ada gre-t-il l'hritage multiple ? ............................................................................................................................................................ 341Raliser des interfaces Ada ....................................................................................................................................................................................

    345La programmation modulaire VI : Finalisation et types contrls ................................................................................. 346Objectifs et prrequis .............................................................................................................................................................................................. 346De quoi parle-t-on exactement ? ............................................................................................................................................................................. 347Comment s'y prendre ? ........................................................................................................................................................................................... 348Mise en uvre ........................................................................................................................................................................................................ 348Mise en place de nos types ..................................................................................................................................................................................... 348Mise en place de nos mthodes .............................................................................................................................................................................

    Lire aussi 6/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Apprendre programmer avec Ada

    Par Kaji9

    Mise jour : 21/11/2012Difficult : Intermdiaire Dure d'tude : 1 mois, 15 jours

    3 818 visites depuis 7 jours, class 43/797Vous voudriez apprendre programmer mais ne savez pas par o commencer ? Vous avez commenc apprendre le C mais vousvous embrouillez dans les accolades et autres symboles bizarrodes ? Ou encore vous souhaitez apprendre un nouveau langagede programmation ? Alors ce tutoriel est fait pour vous.

    Le langage Ada est certainement le meilleur langage pour apprendre programmer : pour peu que vous connaissiez deux ou troismots d'anglais, il vous sera facile de lire un code en Ada. Moins abstrait que beaucoup de langages, mais toutefois rigoureux,facilement comprhensible et lisible, mme par un novice ... le langage Ada vous permettra de comprendre les logiques propres la programmation et vous donnera tout de suite de bonnes habitudes.

    Qui plus est, le langage Ada ne prsente ni plus ni moins de fonctionnalits que les langages les plus connus (C, C++, Java,Python...). Il est seulement diffrent et, je me rpte, plus comprhensible pour un novice.

    Alors si vous tes intress, nous allons pouvoir dbuter de tutoriel.

    Organisation du tutoriel :

    Ce tutoriel est prvu pour tre organis en six parties :

    La partie I constitue une introduction la programmation et vous accompagne dans votre premire prise en main d'Ada.Les parties II, III et IV traitent (ou traiteront) du langage Ada en lui-mme et prsenteront une difficult progressive.La partie V constituera une mise en pratique en vous proposant de crer des programmes fentrs avec GTK et Ada.La partie VI fournira les annexes ce tutoriel : FAQ, Glossaire, prsentation de librairies tierces ...

    Le cours sera ponctu de travaux pratiques. Ce sont des chapitres vous proposant un projet (parfois ludique) allant du logicielde gestion de vos DVD des jeux de ds. Ils seront pour vous l'occasion de mettre en application vos connaissances acquises.Ces travaux pratiques sont signals dans leur titre par la notation [TP#] (le symbole # tant remplac par le numro du TP). De

    plus, ils portent tous l'icne :

    Lire aussi 7/353

    www.siteduzero.com

    http://www.siteduzero.com/membres-294-329430.htmlhttp://www.siteduzero.com/tutoriel-21-624389-apprendre-a-programmer-avec-ada.htmlhttp://creativecommons.org/licenses/by-nc-nd/2.0/fr/http://www.siteduzero.com/tutoriels-les-plus-visiteshttp://www4.smartadserver.com/call/pubjumpi/24617/166249/13290/M/1353931611342/?http://www4.smartadserver.com/call/pubjumpi/24617/166249/13290/M/1353931611342/?http://www.siteduzero.com

  • Partie 1 : Premiers pas avec Ada

    Qu'est-ce que la programmation ? Qu'est-ce que Ada ? Comment faire pour "programmer en Ada" ? Autant de questionsexistentielles auxquelles nous allons rpondre dans cette premire (et courte) partie.

    Programmation, algorithmique et Ada ?Nous allons dans ce chapitre rpondre quelques questions prliminaires. Qu'est-ce qu'un programme ? A quoi cela ressemble-t-il ? Comment cre-t-on un programme ? Qu'est-ce que l'algorithmique ? Pourquoi Ada et pas un autre langage ? Ce que j'apprendsici sera-t-il utilisable avec un autre langage ?

    Bref, beaucoup de rponses existentielles trouveront (je l'espre) leur rponse ici. Ce chapitre, relativement court et sansdifficults, permettra de poser un certain nombre d'ides et de termes. Pour bien commencer, mieux vaut en effet que nous ayonsle mme vocabulaire.

    A ceux qui auraient dj des notions de programmation, vous pouvez bien entendu viter ce chapitre quoique je ne saurais tropvous conseiller d'y jeter un il, histoire de remettre quelques ides au clair.

    Qu'est-ce qu'un programme ?Avant de commencer, il est important que nous nous entendions sur les termes que nous allons utiliser.

    Qu'appelle-t-on programme ?

    Les programmes sont des fichiers informatiques particuliers. Sous Windows, ce sont gnralement des fichiers se terminant parl'extension .exe ; sous MacOS ce sont globalement des fichiers .app ; sous Linux ce sont schmatiquement des fichiers .bin.Cette explication est trs (TRS) schmatique, car d'autres types de fichiers peuvent correspondre des programmes.

    Ces fichiers ont comme particularit de ne pas seulement contenir des donnes, mais galement des instructions. Lorsque vousouvrez un fichier .exe sous windows, celui-ci transmet votre ordinateur une liste de choses faire comme :

    ouvrir une fentreafficher du texteeffectuer des oprations...

    Cette liste d'instructions envoyes au processeur, forme alors ce que l'on appelle un processus.

    On fait gnralement un amalgame entre programme et processus. Le programme est, rappelons-le un fichier. Leprocessus correspond aux instructions effectues par le processeur et qui viennent du programme. Mais, en gnral,on appelle tout cela programme.

    Voici quelques images de programmes :

    Apprendre programmer avec Ada 8/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Partie 1 : Premiers pas avec Ada 9/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Attention, tous les programmes ne sont pas ncessairement visibles. Beaucoup n'ouvrent mme pas de fentre ! Pour s'en rendrecompte, sous Windows, appuyez simultanment sur les touches Alt + Ctrl + Suppr puis cliquez sur le second onglet, celaaffichera la liste de tous les processus en cours.

    Partie 1 : Premiers pas avec Ada 10/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Bon nombre d'entre eux effectuent des tches tranquillement sans que vous ne vous en rendiez compte.

    Alors qu'allons-nous faire ?

    Eh bien, programmer (en Ada ou autre) c'est tout simplement crer des programmes. Mais je vous arrte tout de suite, malgr toutle talent de votre humble guide, vous ne confectionnerez pas un jeu vido en 3D d'ici la fin de ce tutoriel. La plupart deslogiciels, comme le navigateur internet que vous utilisez actuellement, exigent la participation de nombreuses personnes et denombreuses autres comptences ne relevant pas de ce cours (modlisation 3D par exemple).

    Les premiers programmes que nous allons concevoir seront des programmes en console. C'est dire qu'ils ressembleront ce quisuit :

    Partie 1 : Premiers pas avec Ada 11/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Nous ne pourrons utiliser que le clavier ! Pas de souris ou de joystick ! Pas d'images ou de vidos ! Pas de 3D puisqu'il n'y auramme pas de 2D ! Que tu texte blanc sur fond noir.

    Aaargh ! Mais, c'est possible ?

    Bon, c'est vrai qu'aujourd'hui on a tendance oublier la console, mais il est ncessaire de passer par ce stade pour apprendre lesbases de la programmation. Nous pourrons ensuite nous atteler des programmes plus consquents (avec des boutons, desimages, la possibilit d'utiliser la souris ... ). Il faudra tre patient

    Comment raliser un programme ?Alors comment faire pour crer votre propre programme ? Il faut avant tout savoir comment est constitu un programme (ou toutautre type de fichier). Vous le savez peut-tre dj, mais un ordinateur a un langage trs trs basique. Il ne connat que deuxchiffres : 1 et 0 ! Donc tout fichier (et donc tout programme) ne peut ressembler qu' ceci :

    10001001111010110110111011011 ...

    Ca rappelle Matrix ! Mais comment je fais moi ? J'y comprends rien moi tous ces chiffres ? Il faut faire Math suppour afficher une fentre ?

    Non, rassurez-vous. Personne n'est capable de crer un programme informatique ainsi. C'est pourquoi ont t invents diffrentslangages pour la programmation : le Pascal, le Basic, le C, le C++, le Python, le Java ... et bien sr l'Ada. Ce sont ce que l'onappelle des langages de haut niveau. A quoi cela ressemble-t-il ? voyez vous-mme :

    Code : Ada

    with Ada.Text_IO, Ada.Integer_Text_IO ; use Ada.Text_IO, Ada.Integer_Text_IO ;

    procedure exemple is n : integer ; begin loop Put("Saisir un nombre : ") ; Get(n) ; Skip_line ; if n mod 2 = 0 then Put("Ce nombre est pair ! Tres bien !") ; exit ;

    Partie 1 : Premiers pas avec Ada 12/353

    www.siteduzero.com

    http://www.siteduzero.com

  • else Put("Ce nombre est impair ! Recommencez. ") ; end if ; end loop ; end exemple ;

    Vous serez capables d'ici quelques chapitres de comprendre ce texte aisment. C'est comme apprendre une langue trangre ;d'ailleurs si vous connaissez l'Anglais vous avez peut-tre reconnu quelques mots (end, if, else, then, begin, is). C'est ainsi quenous crerons nos programmes.

    Et comment on traduit a en 1 et en 0 ?

    Une fois notre texte rdig en Ada (mais c'est aussi valable pour les autres langages), il faudra utiliser un programme-traducteurpour le convertir en un programme lisible par l'ordinateur. Les programmes-traducteurs sont appels compilateurs .

    Pourquoi Ada et pas autre chose ?Algorithmique

    Il ne vous reste donc plus qu' apprendre un langage de programmation, et avec ce langage, vous apprendrez galement ce quel'on appelle l'algorithmique.

    Qu'est-ce que c'est encore que a ?

    L'algorithmique est une branche des mathmatiques qui traite de la rsolution de problmes l'aide d'instructions simples. J'envois dj certains qui paniquent la vue du mot "Mathmatiques", mais n'ayez crainte vous avez dj vu plusieurs fois dansvotre vie des algorithmes. Par exemple, comment faire pour diviser 742 par 5 ? Vous vous souvenez, c'tait en primaire ? Vousaviez appris poser l'opration comme ci-dessous et rpter les instructions suivantes :

    Dans 7, combien de fois 5 ?

    Partie 1 : Premiers pas avec Ada 13/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Il y va 1 fois et il reste 2 !

    On abaisse le 4 derrires le reste. Dans 24, combien de fois 5 ? Il y va 4 fois et il reste 4.

    On abaisse le 2 derrires le reste. Dans 42, combien de fois 5 ?

    Partie 1 : Premiers pas avec Ada 14/353

    www.siteduzero.com

    http://www.siteduzero.com

  • Il y va 8 fois et il reste 2.

    Il n'y a plus de chiffre abaisser. On arrte : le rsultat est 148 et il reste 2 !.

    Eh bien a, c'tait un algorithme : vous rptiez des instructions simples dans un certain ordre (abaisser les chiffres de 742, sedemander "dans machin, combien de fois truc ?"...) afin de rsoudre un problme plus compliqu (combien vaut ?). Ettout programme informatique n'est en fait qu'un algorithme crit dans un langage comprhensible par votre ordinateur. Doncapprendre programmer, c'est en fait apprendre la science de l'algorithmique dans un langage informatique donn.

    Pourquoi Ada ?

    Mais alors, pourquoi apprendre l'Ada et pas simplement l'algorithmique ? Et pourquoi l'Ada et pas un autre langage ?

    Tout d'abord, l'algorithmique n'est pas comprhensible par les ordinateurs, je vous rappelle que c'est une sc