Licence CC BY-NC-SA

Apprenez à programmer avec Ada

Apprenez à programmer avec Ada

Ce tutoriel a été initialement rédigé sur le Site du Zéro par Kaji9 sous licence CC BY-NC-SA.

Vous voudriez apprendre à programmer mais ne savez pas par où commencer ? Vous avez commencé à apprendre un autre langage mais vous vous embrouillez dans les accolades et autres symboles bizarroïdes ? Ou encore vous souhaitez apprendre un nouveau langage de 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 trois mots d'anglais, il vous sera facile de lire un code en Ada. Moins abstrait que beaucoup de langages, mais toutefois rigoureux, facilement compréhensible et lisible, même 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 présente ni plus ni moins de fonctionnalités que les langages les plus connus (C, C++, Java, Python…). Il est seulement différent et, je me répète, plus accessible aux débutants. Alors si vous êtes intéressé, nous allons pouvoir débuter de tutoriel. ;) Celui-ci est organisé en cinq parties :

  • La partie I constitue une introduction à la programmation et vous accompagne dans votre première prise en main d'Ada.
  • Les parties II, III et IV traitent du langage Ada en lui-même et présenteront une difficulté progressive : notions de base, types composites puis programmation orientée objet.
  • La partie V constitue une mise en pratique en vous proposant de créer des programmes fenêtrés avec GTK et Ada.

Le cours sera ponctué de travaux pratiques. Ce sont des chapitres vous proposant un projet (parfois ludique) allant du logiciel de gestion de vos DVD à des jeux de dés ou de démineur. Ils seront pour vous l'occasion de mettre en application vos connaissances acquises.

Premiers pas avec Ada

  1. Programmation, algorithmique et Ada ?

    1. Qu'est-ce qu'un programme ?

    2. Comment réaliser un programme ?

    3. Pourquoi Ada et pas autre chose ?

  2. Les logiciels nécessaires

    1. IDE et compilateur : kesako ?

    2. Télécharger et installer Adagide.

    3. Télécharger et installer GNAT

    4. Télécharger et installer GPS

  3. Notre premier programme en Ada

    1. Découvrir son IDE en quelques secondes

    2. Notre premier programme

    3. Mon dieu, qu'ai-je fait ?

    4. Exercices

Ada, notions essentielles

  1. Variables I : Typage et affectation

    1. Déclaration de variables

    2. Différents types

    3. Affectation

    4. Compléments

  2. Variables II : Opérations

    1. Opérations sur les Integer et les Natural

    2. Opérations sur les float

    3. Opérations sur les character

    4. Exercices

  3. Les conditions I

    1. Conditions simples avec IF

    2. Conditions multiples avec IF

    3. Conditions multiples avec CASE

    4. Les opérateurs de comparaison et d'appartenance

    5. Pour les utilisateurs de la norme Ada2012

  4. Les conditions II : les booléens

    1. Introduction aux booléens

    2. La négation avec Not

    3. Les opérations Or et And

    4. L'opération XOR (optionnel)

    5. Exercice

    6. Priorités booléennes et ordre de test (Supplément)

  5. Les boucles

    1. La boucle Loop simple

    2. La boucle While

    3. La boucle For

    4. Les antiquités : l'instruction goto

    5. Boucles imbriquées

    6. Exercices

  6. Procédures et fonctions I

    1. Les procédures

    2. Les fonctions

    3. Prédéfinir ses paramètres

    4. In, Out, In Out

  7. [TP] Le craps

    1. Les règles du craps

    2. Cahier des charges

    3. Simuler le hasard (ou presque)

    4. Un plan de bataille

    5. Une solution

Ada, les types composites

  1. Les tableaux

    1. Les types composites, c'est quoi ?

    2. Tableaux unidimensionels

    3. Tableaux multidimensionels

    4. Des tableaux un peu moins contraints

    5. Quelques exercices

    6. Pour les utilisateurs de la norme Ada2012

  2. Les chaînes de caractères

    1. Présentation des Chaînes de Caractères

    2. Déclaration et affectation d'un string

    3. Quelques opérations sur les strings

    4. Chaînes de caractères non contraintes

  3. La programmation modulaire I : les packages

    1. Les fichiers nécessaires

    2. Notre première procédure… empaquetée

    3. Variables et constantes globales

    4. Trouver et classer les fichiers

    5. Compléter notre package (exercices)

    6. Vecteurs et calcul vectoriel (optionnel)

  4. Les fichiers

    1. Ouvrir / Fermer un fichier texte

    2. Le paramètre Mode

    3. Opérations sur les fichiers textes

    4. Les fichiers binaires séquentiels

    5. Les fichiers binaires directs

    6. Les répertoires

    7. Quelques exercices

  5. Créer vos propres types

    1. Créer à partir de types prédéfinis

    2. Énumérer les valeurs d'un type

    3. Les types structurés

    4. Les types structurés : polymorphes et mutants !

  6. [TP] Logiciel de gestion de bibliothèque

    1. Cahier des charges

    2. Conception du programme (suivez le guide)

    3. Solutions possibles

  7. Les pointeurs I : allocation dynamique

    1. Mémoire, variable et pointeur

    2. Le type access

    3. Libération de la mémoire

    4. Exercices

  8. Les pointeurs II

    1. Cas général

    2. Pointeur comme paramètre

    3. Pointeur sur un programme (optionnel)

    4. Exercices

  9. Fonctions et procédures II : la récursivité

    1. Une première définition

    2. Exemple d'algorithme récursif

    3. Notre première fonction récursive

    4. Algorithme de recherche par dichotomie

    5. Quelques exercices

  10. Les Types Abstraits de Données : listes, files, piles…

    1. Qu'est-ce qu'un Type Abstrait de Données ?

    2. Les piles

    3. Les files

    4. Les listes chaînées

  11. [TP] Le jeu du serpent

    1. Cahier des charges

    2. Un package bien utile

    3. … et encore un autre !

    4. Quelques indications

    5. Une solution possible

Ada : Notions avancées et Programmation Orientée Objet

  1. Algorithmique : tri et complexité

    1. Algorithmes de tri lents

    2. Algorithmes de tri plus rapides

    3. Théorie : complexité d'un algorithme

    4. Mesures de complexité des algorithmes

  2. Variables III : Gestion bas niveau des données

    1. Représentation des nombres entiers

    2. Représentation du texte

    3. Représentation des nombres décimaux en virgule flottante

  3. La programmation modulaire II : Encapsulation

    1. Qu'est-ce qu'un objet ?

    2. Un package… privé

    3. Un package privé et limité

    4. Exercices

  4. La programmation modulaire III : Généricité

    1. Généricité : les grandes lignes

    2. Créer et utiliser une méthode générique

    3. Paramètres génériques de types simples et privés

    4. Paramètres génériques de types composites et programmes

    5. Packages génériques

  5. La programmation modulaire IV : Héritage et dérivation

    1. Pour bien commencer

    2. Héritage

    3. Dérivation et types étiquetés

  6. La programmation modulaire V : Polymorphisme, abstraction et héritage multiple

    1. Polymorphisme

    2. Abstraction

    3. Héritage multiple

  7. La programmation modulaire VI : Finalisation et types contrôlés

    1. Objectifs et prérequis

    2. Mise en œuvre

  8. [TP] Bataille navale

    1. Règles du jeu

    2. Cahier des charges

    3. Une solution possible

  9. Les exceptions

    1. Fonctionnement d'une exception

    2. Traitement d'une exception

    3. Exceptions prédéfinies

    4. Créer et lever ses propres exceptions

    5. Assertions et contrats

  10. Multitasking

    1. Parallélisme, tâches et types tâches

    2. Communication inter-tâche directe

    3. Communication inter-tâche indirecte

    4. Compléments : priorités et POO

    5. Exercices fondamentaux

  11. Interfaçage entre Ada et le C

    1. Quelques préparatifs

    2. Hello World : du C à l'Ada

    3. Quelques menus problèmes

Ada et GTK : la programmation évènementielle

  1. GTKAda : introduction et installation

    1. Vous avez dit GTK ?

    2. Télécharger et installer GTKAda

  2. Votre première fenêtre

    1. Analysons notre code

    2. Personnaliser la fenêtre

    3. Ajout d'un widget

    4. Retour sur la POO

  3. Les conteneurs I

    1. Des conteneurs pour… contenir !

    2. Les alignements

    3. Les boîtes

    4. Les tables

    5. Le widget pour position fixe

  4. Les signaux

    1. Le principe

    2. Connecter un signal à un callback

    3. Interagir avec les widgets

    4. GDK et les événements

  5. Les widgets I

    1. Les étiquettes

    2. Les images

    3. Les zones de saisie

    4. D'autres boutons

    5. Widgets divers

  6. Les Widgets II : les boîtes de dialogue

    1. Message

    2. À propos

    3. Sélection de fichier

    4. Sélection de police

    5. Sélection de couleur

    6. Cas général

  7. [TP] Le démineur

    1. Règles du jeu et cahier des charges

    2. Un petit coup de main

    3. Une solution possible

  8. Les conteneurs II

    1. Les onglets

    2. Les barres de défilement

    3. Les panneaux

    4. Les cadres

    5. Les extenseurs

    6. Les boîtes détachables

  9. Les widgets III : barres et menus

    1. La barre de menu

    2. Améliorer la barre de menu

    3. La barre d'icônes

    4. La barre de statut

    5. Le menu déroulant

  10. [TP] Démineur (le retour)

    1. Cahier des charges

    2. Une solution possible



Ce long cours touche à sa fin. Après toutes ces heures de lecture, vous avez pu découvrir les rudiments de l'algorithmique et du langage Ada (dans sa version 83), puis vous avez découvert les fonctionnalités offertes par les normes Ada 95 et 2005 en matière de programmation orientée objet. Enfin, vous avez pu découvrir une bibliothèque tierce et la programmation événementielle au travers de GTKAda. Que vous reste-t-il à apprendre ? Encore beaucoup à vrai dire. En programmation comme en toute chose, on n'a jamais fini d'apprendre. Mais voici quelques pistes :

  • Tout d'abord, d'autres bibliothèques graphiques existent et ont été traitées sur ce site. Par exemple la SDL, traitée dans le cours de M@teo21 sur le C, dispose d'une version Ada. De même, il existe des interfaçages de QT pour Ada appelés QT4Ada (QT est traité dans le cours sur le C++). Le web regorge de ressources, à vous de les découvrir.
  • Ensuite, d'autres bibliothèques existent et permettent d'effectuer divers travaux. Ainsi la société Adacore fournit gratuitement la bibliothèque XML/Ada pour traiter des fichiers XML et cela tombe bien car le Site du Zéro propose quant à lui un excellent tutoriel d'introduction au langage XML. Des bibliothèques permettent également de travailler sur les bases de données MySQL ou sur le web.
  • Enfin, il est important que vous découvriez d'autres langages de programmation. Cela vous permettra de découvrir de nouvelles façons de penser, de travailler … et le Site du Zéro regorge d'excellent tutoriels sur divers langages comme C, C++, Python, Java, C#, OCaml … Cela vous permettra aussi de vous rendre compte de tout ce que programmer en Ada vous aura appris en termes de rigueur ou de structuration de votre code.

J'espère que ce cours vous aura plu et qu'il vous aura donné les outils pour aborder ces nouveaux domaines de la programmation avec sérénité. Je remercie enfin le Site du Zéro pour les conseils et soutiens qu'il m'aura apporté tout au long de la rédaction de ce tutoriel.

4 commentaires

Tuto fort sympathique, mais j’ai dans l’idée relativement obsolète, non? :o

Tchaïkovski

Disons qu’après 2 ans de boulot, j’ai eu envie de passer à autre chose donc oui, cela fait un moment que j’aurais du apporter quelques modif (qques erreurs à droite à gauche + l’IDE qu’il faudrait revoir). Après, si tu parles du langage, non il est loin d’être obsolète, et ce que j’écrivais il y a quelques années est toujours d’actualité.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte