Objectifs pédagogiques

  • Être capable d'écrire un programme simple (séquence d'actions)
  • Savoir lire un fichier de spécifications .ads

Mission

Préparation

Cahier des charges

  • Votre première mission consiste à programmer le roulage de l'avion au sol.
  • Plus précisément, votre avion est stationné à l'aérogare INSA-Air de l'aéroport Toulouse-Blagnac (LFBO), repéré par la lettre 'K' sur le schéma ci-dessous.
    Il doit rejoindre le début de la piste de décollage (Piste 14R), repère A, puis parcourir la piste (sans décoller), jusqu'au repère D, et enfin revenir à l'aérogare INSA-Air.
  • Pour cette première mission, afin d'éviter de détériorer l'avion, vous devrez tester votre programme avec l'acteur Simulation. Si tout se passe bien, et si vous terminez correctement cette mission, nous pourrons embarquer votre programme à bord de l'avion.
Schéma de l'aéroport Toulouse-Blagnac
Schéma de l'aéroport Toulouse-Blagnac.
Les deux pistes sont en rouge, le taxiway est en bleu.
(remarquez l'orientation du Nord)

L'avion se déplace d'un point à un autre en ligne droite. Pour aller de K à M, il faut impérativement passer par L.

Partie 1 : votre premier programme, pas à pas.

Préparer l'environnement

  • Dans votre dossier personnel (home directory), ou sur votre bureau, créer un dossier 1A-Algo-S1 (sans espace).

    Ne mettez pas d'espaces, ni d'accents, ni d'apostrophes, ni d'autres symboles dans le nom du dossier, car cela pose ensuite des problèmes au compilateur.

  • Copier dans ce dossier le fichier mission1.adb que vous trouverez dans le dossier Ada sur Commetud.
  • Cliquer sur votre copie du fichier mission1.adb. Il doit s'ouvrir avec emacs. Vérifiez que l'éditeur qui s'ouvre est bien emacs et non pas gedit ni mate.
  • Ouvrez la spécification de l'acteur Simulation.
    Toutes les spécifications dont vous avez besoin se trouvent dans le dossier Acteurs que vous trouverez sur Commetud, 1ere Annee, Ada, Acteurs, INSA_Air.
    Le fichier simulation.ads s'ouvre aussi avec emacs.
Vérification

Vous avez maintenant deux fenêtres emacs ouvertes : l'une avec mission1.adb, l'autre avec simulation.ads.
Gardez-les disponibles. Vous n'aurez pas besoin d'un autre acteur que Simulation.


Compilation et messages d'erreur

  • Dans la fenêtre emacs avec mission1.adb, aller dans le menu Ada et lancer Build.
  • Des messages apparaissent, dont un message d'erreur (c'est normal, le programme n'est pas complet) :
    mission1.adb:4:05: identifier expected
    gnatmake: "mission1.adb" compilation error
  • Cliquez directement sur la localisation de l'erreur mission1.adb:4:05 : emacs placera le curseur exactement à l'endroit de l'erreur dans votre programme.
  • Ici, l'erreur indiquée correspond à with ... ; et en effet, il manque bien quelque chose. Vous pouvez corriger l'erreur maintenant. La deuxième erreur sera corrigée à l'étape suivante.
  • Pour information, mission1.adb:4:05 signifie : fichier mission1.adb ligne 4, colonne 5.

Vous savez maintenant comment compiler un programme(AdaBuild), et localiser les erreurs (en cliquant dessus).


Première ligne de code : invocation de procédure.

La première étape du programme consiste à obtenir l'autorisation de roulage de la tour de contrôle.
  • Avec vos petits doigts, complétez le programme mission1.adb pour qu'il demande cette autorisation (et rien d'autre).
    • Prenez comme modèle le programme d'exemple page 5 du livret.
    • Vous avez besoin de l'acteur Simulation.
    • Le corps du programme comprend une seule ligne.
  • Compilez, et corrigez les erreurs jusqu'à ce que la compilation soit correcte.
    Compilation finished at Thu Sep 13 14:24:15

Vous avez réussi à invoquer une procédure sans argument.
(Tâchez de vous en souvenir, cela pourrait resservir.)


Exécution de votre programme.

Votre programme doit se compiler sans erreur (Ada, Build) pour pouvoir être exécuté. Il y a deux manières d'exécuter votre programme. Testez les deux.
  1. Allez dans votre dossier de travail 1A-Algo-S1. Cliquez sur le fichier fabriqué par le compilateur : mission1-exe (s'il n'est pas visible, cliquez sur 'Rafraîchir' pour le faire apparaître).
  2. Ou alors, dans emacs, utilisez le menu AdaRun.
Notez que l'exécutable n'est fabriqué que si la compilation se déroule sans erreur.
  • Si votre programme demande l'autorisation de roulage et l'obtient, vous pouvez passer à l'étape suivante.

Deuxième ligne de code : invocation de procédure avec argument.

La deuxième étape consiste à rouler seulement jusqu'au point L.
  • Vous avez besoin de la procédure Rouler_Versde l'acteur Simulation.
  • C'est une procédure avec argument que l'on représente comme ceci : Procedure Rouler_Vers
  • Pour invoquer cette procédure, il faut utiliser Simulation.Rouler_Vers ( Dest => ) ;
    Le trou doit être complété par une valeur de type Character (un caractère pour nommer le point de destination).
    Trouvez dans votre poly (chapitre Les types de base) comment représenter un caractère en Ada.
  • Compilez (sans erreur) et exécutez votre programme. L'avion doit se diriger vers le point L.

Vous savez maintenant invoquer une procédure avec argument, et comment se notent les caractères en Ada.


Roulage complet.

  • Vous êtes maintenant en mesure de programmer le parcours complet.
  • Testez votre programme : l'avion doit effectuer l'ensemble du trajet prévu avec succès.
Schéma de l'aéroport Toulouse-Blagnac

Partie 2 : découpage en sous-programmes.

Dans la partie 1, vous avez invoqué des actions existantes de l'acteur Simulation. Dans la partie 2, vous allez maintenant définir vos propres actions, à l'intérieur de votre programme Mission1.
  • Écrivez un sous-programme : une procédure Rouler_KA qui fait rouler l'avion de K vers A.
    Consultez votre poly pour trouver comment définir une procédure sans argument.Procedure Rouler_KA
  • De même, écrivez la procédure Rouler_DK qui fait rouler l'avion de D vers K.Procedure Rouler_DK
  • Écrivez une procédure Tester_Roulage qui effectue le parcours complet en utilisant vos nouvelles procédures.Procedure Tester_Roulage
  • Invoquez Tester_Roulage dans le corps du programme principal.
Auto-correction
  • Votre programme compile sans erreur, et s'exécute de la même manière qu'à la partie 1.
  • L'ensemble du programme s'appelle Mission1 et contient trois sous-programmes : Rouler_Ka, Rouler_DK et Tester_Roulage.
    (Le mot-clef procedure apparaît quatre fois : une fois pour Mission1 et trois fois pour les sous-programmes.)

Acteur utilisé

Bilan

À l'issue de cette mission, vous devez être capables de :
  • Lire et comprendre un fichier de spécification d'acteur (.ads)
  • Compiler un programme, lire un message d'erreur et localiser l'endroit où l'erreur est signalée.
  • Exécuter un programme que vous avez compilé.
  • Invoquer une procédure avec ou sans argument.
  • Définir une procédure sans argument.