- Pour les fonctions et procédures suivantes, commencez par écrire l'algorithme sur papier.
- Écrivez une procédure de test à chaque fois.
▸Objectifs pédagogiques
- Utilisation des variables.
- Utilisation des types article.
- Conception d'algorithmes classiques (min, max, moyenne).
Prérequis
- Vous avez terminé la mission 2.
▸Mission
▸Préparation
- Terminer entièrement la mission 2 (même si cela vous prend toute la séance).
- Faites une copie de votre programme mission2c.adb que vous nommez mission3.adb
▸Cahier des charges
L'avion rend visite à divers aéroports européens et repère en permanence l'aéroport le plus proche.
Démarche
- Nous allons écrire une procédure qui permet de naviguer vers un aéroport choisi.
Pour cela, nous avons besoin d'une fonction qui calcule le cap à suivre et d'une fonction qui calcule la distance à parcourir. - Ensuite, nous sécuriserons le trajet en repérant en permanence l'aéroport de secours le plus proche.

▸Partie 1 : navigation vers les aéroports.
- Regardez l'acteur Cartographie.
- Écrivez une procédure
Info_Aeroport
qui reçoit en argument le code d'un aéroport (String) et qui affiche son nom complet. - Complétez
Info_Aeroport
pour que la procédure affiche aussi les coordonnées de l'aéroport. (Vous faites connaissance avec les types article.) - Écrivez ensuite une procédure sans argument
Tester_Carto
qui affiche les coordonnées et le nom des aéroports suivants : LFBO, EGLL, LFPG. Vous devez obtenir des noms connus et des coordonnées raisonnables pour l'Europe (longitude entre -5° et 5°, latitude entre 40° et 60°).
Pour information, voici la liste des aéroports connus). - Écrire une fonction
Distance
qui prend deux arguments de type T_Coords et qui renvoie un réel représentant la distance en km entre les deux points. Pythagore est votre ami.Pour le calcul de distance, nous supposerons (un peu abusivement) que 1 degré de longitude ou de latitude représente 111km600.- La fonction racine carrée est dans l'acteur Cartographie.
- Pour tester votre fonction, affichez la distance entre Blagnac (LFBO) et Heathrow (EGLL). Le résultat doit être proche de 900km.
- Écrire une fonction
Cap_Cible
qui prend en argument le code d'un aéroport et qui calcule, pour l'avion, le cap vers cet aéroport.- Par chance, la partie difficile du calcul est faite par la fonction
Cap_Vecteur
de l'acteur Cartographie. - Testez en affichant le cap vers Heathrow (depuis le point de départ, Toulouse). Vous devez trouver environ 347°.
- Par chance, la partie difficile du calcul est faite par la fonction
- Écrire une procédure
Naviguer_Vers
qui prend en argument le code d'un aéroport, et fait voler l'avion en sa direction.- L'avion est supposé déjà en vol.
- N'oubliez pas d'ajuster le cap fréquemment pendant le trajet.
- Votre procédure doit se terminer lorsque l'avion est à proximité de l'aéroport (moins de 100km).
- En vous inspirant du vol de démo, écrivez maintenant votre parcours complet en visitant quelques aéroports de votre choix, mais sans atterrir (revoici la liste).

▸Partie 2 : repérer l'aéroport le plus proche.

- Complétez la procédure
Naviguer_Vers
afin de repérer à tout moment l'aéroport le plus proche de l'avion, en plaçant un marqueur dessus (voir dans l'acteur Cartographie).- N'hésitez pas à créer une nouvelle procédure ou fonction si besoin.
- En binôme, concevez l'algorithme sur papier puis expliquez-le à votre encadrant.
- Modifiez votre programme pour que le marqueur soit sur l'aéroport hors de France le plus proche (le code du pays est sur deux lettres, voir l'acteur Cartographie et la liste des aéroports).
- Enfin, faites que la procédure
Naviguer_Vers
affiche avant de se terminer quelle a été la moyenne de la distance à l'aéroport le plus proche (hors de France) (bien sûr, l'aéroport le plus proche hors de France n'est pas toujours le même pendant le trajet).
Vous devriez trouver des valeurs entre 250km et 370km pour un voyage ne s'aventurant pas trop à l'est.Ici encore, en binôme, écrivez l'algorithme sur papier puis expliquez-le à votre encadrant.

▸Acteurs utilisés
- GAda.Text_IO
▸INSA-Air
- assert.ads
- avion_sol.ads — Contrôle de l'avion au sol
- carburant.ads
- cartographie.ads — Accès aux informations de la carte
- insa_air.ads — Contrôle de l'avion en vol
- pilote_automatique.ads — Commande le décollage ou l'atterrissage
- simulation.ads — Contrôle de l'avion au sol en mode SIMULATION
- tour.ads — Communication avec la tour de contrôle
- train.ads — Contrôle du train d'atterrissage
▸Bilan
À l'issue de cette mission, vous devez être capables de :
- Utiliser correctement un type article, en particulier dans une fonction.
- Écrire l'algorithme de calcul du min, max, ou de la moyenne d'un ensemble de valeurs, et le traduire en Ada.