Vous êtes sur la page 1sur 899
Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence : Creative

Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence :

Creative Commons BY-NC-SA 2.0 La copie de cet ouvrage est autorisée sous réserve du respect des conditions de la licence. Texte complet de la licence disponible sur : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Mentions légales Conception couverture : Alexandra Persil Illustrations chapitres : Alexandra Persil OpenClassrooms 2014 - ISBN : 979-10-90085-58-9

Avant-propos

Q ui n’a jamais rêvé, enfant, de créer son propre jeu vidéo intégrant ses idées les plus folles ? Qui n’a jamais cherché en vain un programme réalisant une fonction- nalité anodine mais très spécifique ? Qui n’a jamais pesté face à un logiciel « mal

conçu » ou même « buggué » ? Comme tout un chacun, je suis passé par ces différentes étapes. Comme certains d’entre vous peut-être, je me suis parfois dit : « et si je le faisais moi-même ? Et si j’apprenais à programmer ? » J’entamais alors mes recherches avec enthousiasme. Mais les livres que je trouvais à l’époque ne correspondaient ni aux connaissances ni au budget du jeune garçon que j’étais. Internet entamait sa démocrati-

sation et les quelques sites traitant de programmation que je dénichais étaient eux aussi bien trop techniques et trop peu pédagogiques. Les symboles étranges et les termes an- glais souvent barbares finissaient toujours par avoir raison de mon entrain initial. C’est au cours de mes études que j’ai appris la programmation et découvert le langage Ada. A peine les rudiments étaient-ils acquis que mes recherches reprenaient de plus belle. Je souhaitais développer mes propres programmes et je fourmillais d’idées : il fallait donc en apprendre toujours plus, découvrir de nouvelles fonctionnalités, expérimenter

La programmation est ainsi devenue l’une de

mes passions. Mais là encore, il restait difficile de trouver des ressources francophones aisément compréhensibles, toute information devant se payer par de longues heures de recherche. Mes études terminées, je n’ai pas choisi la voie de l’informatique comme certains l’auraient pensé. Mais si la passion s’est atténuée, elle ne s’est pas éteinte pour autant et je n’ai jamais cessé de programmer, pour le plaisir. Je me suis tourné vers le langage Python pendant plusieurs années avant d’apprendre le C, le C++ ou le Java, entre autres. C’est au Site du Zéro, devenu OpenClassrooms, que je dois la découverte de certains de ces langages.

de nouvelles façons de

Retour vers Ada

Comme on revient toujours à ses premières amours, c’est aujourd’hui en Ada que je programme : ce langage m’a beaucoup apporté en termes de rigueur ou de structu- ration de mes programmes et de ma pensée. Lorsque j’ai commencé à enseigner la programmation, c’est donc en Ada que je l’ai fait. Lorsque j’ai voulu publier un cours de programmation, c’est encore le langage Ada que je choisis. Me souvenant des dif- ficultés que j’avais rencontrées, plus jeune, en cherchant des cours accessibles et en

i

CHAPITRE 0. AVANT-PROPOS

français, j’ai donc décidé d’écrire ce tutoriel sur le langage Ada. Les encouragements que j’ai pu recevoir de la part de débutants comme de professionnels m’ont poussé à étoffer ce qui n’était au départ qu’un modeste cours sans ambition. Les validateurs et modérateurs d’OpenClassrooms quant à eux m’ont incité à plus de précision et de rigueur. C’est ainsi que mon « petit tuto » a été mis en avant sur le site et qu’il est aujourd’hui publié en livre. J’espère que vous trouverez autant de plaisir à le lire et à découvrir cet univers que j’en ai eu à le rédiger.

Qu’allez-vous apprendre en lisant ce livre ?

Peut-être avez-vous déjà appris ou tenté d’apprendre à programmer en Ada ou dans un autre langage ? Quoi qu’il en soit, je suis parti du principe que vous ne connaissiez rien à la « prog » et que je devais vous guider pas à pas. Ce livre se décompose donc en cinq parties.

1. Premiers pas avec Ada : cette partie aura pour tâche de vous présenter ce que sont la programmation, l’algorithmique ou les langages de programmation. Nous poserons le vocabulaire de base puis installerons les logiciels nécessaires avant de réaliser notre tout premier programme en Ada.

2. Ada, notions essentielles : cette seconde partie sera consacrée aux rudiments de la programmation. Nous y aborderons les variables et leurs types, les opé- rations, les conditions, les boucles et les sous-programmes. Vous réaliserez enfin votre premier TP.

3. Ada, les types composites : la troisième partie sera consacrée à des types de données plus complexes comme les tableaux, les fichiers ou les pointeurs. Nous aborderons également des techniques de programmation comme la programma- tion modulaire ou la récursivité. Cette partie sera donc un peu plus difficile que les précédentes, mais vous permettra de réaliser des programmes plus importants et intéressants. Deux TP seront au menu.

4. Ada, notions avancées et programmation orientée objet : cette partie sera de loin la plus compliquée. Vous y découvrirez une nouvelle façon de structurer vos programmes et de les penser. Nous explorerons les fonctionnalités les plus poussées du langage Ada. Un TP vous permettra de mettre en pratique toute la théorie que vous aurez apprise.

5. Ada et GTK, la programmation événementielle : cette partie sera votre récompense après autant d’efforts. Vous y découvrirez comment réaliser des in- terfaces graphiques avec GTK. Vos programmes se pareront alors de boutons, d’images, de menus déroulants ou d’icônes et vous réaliserez un dernier projet au travers de deux TP.

COMMENT LIRE CE LIVRE ?

Comment lire ce livre ?

Suivez l’ordre des chapitres

Lisez ce livre comme on lit un roman. Il a été conçu pour cela.

Contrairement à beaucoup de livres techniques où il est courant de lire en diagonale et de sauter certains chapitres, il est ici très fortement recommandé de suivre l’ordre du cours, à moins que vous ne soyez déjà un peu expérimenté.

Pratiquez en même temps

Pratiquez régulièrement. N’attendez pas d’avoir fini de lire ce livre pour allumer votre ordinateur et faire vos propres essais.

Remerciements

Si l’écriture demeure une tâche solitaire, les travaux de recherche, d’accompagnement, de relecture ou de critique qui l’accompagnent sont généralement collectifs. Je ne peux donc commencer sans remercier tous ceux qui m’ont aidé ou soutenu dans ma rédaction :

– ma femme qui, malgré son désintérêt complet pour la programmation, n’a cessé de m’encourager et a dû supporter mes longues heures devant mon écran. Merci d’être là dans les bons moments comme dans les mauvais, merci de me trans- mettre ton inépuisable énergie et de me remettre dans le bon chemin quand cela

Pour toutes tes qualités mais aussi pour tes (petits) défauts, je t’aime ;

– mes amis, Fred et Amél, qui m’ont apporté le regard et le savoir-faire profession- nels qui parfois me manquaient ;

– AstroB et Holt avec qui j’ai entretenu des échanges nourris, qui m’ont apporté leur expertise et m’ont soumis leurs idées ;

– Arthurus, John-John, AnnaStretter, ThunderSeb, Fayden, Nazli et plus généra- lement toute l’équipe d’OpenClassrooms pour l’exigence de rigueur qu’ils m’ont imposée et la confiance qu’ils m’ont accordée ;

– Basquer, Ludolost, Ranhan19, Manildomin, Thor et tous ceux qui, par leurs ques- tions ou remarques, m’ont permis de corriger quelques erreurs ou oublis, parfois anodins pour moi mais essentiels pour les débutants ;

– Daniel Feneuille dont les notes de cours en ligne ont longtemps été ma seule source d’information francophone sur le langage Ada et sans qui je n’aurais jamais eu les capacités d’écrire ce livre ;

– Merci enfin à tous les lecteurs d’OpenClassrooms qui, par pure gentillesse, m’ont félicité, encouragé ou remercié. Leurs paroles m’ont surpris, touché et motivé. Ce livre est là pour vous et grâce à vous.

s’impose

Bonne lecture.

CHAPITRE 0. AVANT-PROPOS

Table des matières

Avant-propos

.

.

.

.

i

Retour vers Ada

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

i

Qu’allez-vous apprendre en lisant ce livre ?

 

ii

Comment lire ce livre ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

iii

Suivez l’ordre des chapitres

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

iii

Pratiquez en même temps

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

iii

Remerciements

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

iii

I Premiers pas avec Ada

 

1

1 Programmation, algorithmique et Ada ?

.

Qu’est-ce qu’un programme ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

4

. Qu’appelle-t-on programme ?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

Alors qu’allons-nous faire ? .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

Comment réaliser un programme ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

Pourquoi Ada et pas autre chose ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

Algorithmique

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

Pourquoi Ada ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

2 Les logiciels nécessaires

11

IDE et compilateur : kesako ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

Le compilateur

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

L’IDE ou EDI .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

v

TABLE DES MATIÈRES

 

Télécharger et installer Adagide.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

Téléchargement

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

Installation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

Télécharger et installer GNAT

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

Téléchargement

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

Installation

. Télécharger et installer GPS

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

15

3

Notre premier programme en Ada

 

17

Découvrir son IDE en quelques secondes

18

Soyons rapide avec Adagide

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

Pour les utilisateurs de GPS (plus long)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

Notre premier programme

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

Un petit copier-coller !

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

Compiler,

lancer !

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

Mon dieu, qu’ai-je fait ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

Le corps du programme : la procédure Hello

Les Packages avec With et Use

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

25

Une dernière remarque qui a son importance

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

Exercice 1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

Exercice 2

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

Exercice 3

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

II

Ada, notions essentielles

31

4

Variables I : Typage et affectation

 

33

Déclaration de variables

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

Différents types

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

Les types Integer et Natural .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

Le type Float

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

37

Le type Character

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

Affectation

. Affectation par le programmeur (ou le programme)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

41

TABLE DES MATIÈRES

 

Affectation par l’utilisateur

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

L’instruction Skip_line

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

Compléments

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

Constantes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

. Bloc de déclaration .

Attributs

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

45

5

Variables II : Opérations

49

Opérations sur les Integer et les Natural

.

Opérations sur les float

.

. Opérations élémentaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

51

51

. Ne faites pas d’erreur de casting

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

Opérations mathématiques

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

Opérations sur les character

.

.

.

.

.

.

.

.

.

.

.

53

Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

Exercice 1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

Exercice 2

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

Exercice 3

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

Exercice 4

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

6

Les conditions I

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

59

Conditions simples avec IF

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

Un début en douceur

Une première alternative .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

61

Conditions multiples avec IF

Conditions multiples avec CASE

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.