### Partie 1 : la fonction`Delta_Cap`

Nous travaillons sur le cap de l'avion, qui est un angle entre 0 et 360°. Attention, l'orientation du cap n'est pas celle utilisé habituellement en maths (voir le premier schéma).

Le rôle de la fonction `Delta_Cap` est de calculer la différence entre deux angles (ce qui servira plus tard à savoir de quel côté faire tourner l'avion). Voir le second schéma.

- Commencez par écrire sur papier l'algorithme de la fonction `Delta_Cap` (vous pouvez vous mettre en binôme pour écrire l'algorithme). Voici la spécification complète de la fonction Delta_Cap :
  - `Delta_Cap (Cap_Actuel, Cap_Voulu)` renvoie la différence entre les deux caps Cap_Actuel et Cap_Voulu, donnés en degrés.
  - La valeur renvoyée par `Delta_Cap` est un angle qui doit être compris dans l'intervalle [-180 ; +180].
  - Quelques exemples :
    - `Delta_Cap (Cap_Actuel => 0.0, Cap_Voulu => 45.0) = 45.0`
    - `Delta_Cap (Cap_Actuel => 45.0, Cap_Voulu => 0.0) = -45.0`
    - `Delta_Cap (Cap_Actuel => 350.0, Cap_Voulu => 10.0) = 20.0`
    - `Delta_Cap (Cap_Actuel => 10.0, Cap_Voulu => 350.0) = -20.0`
    - `Delta_Cap (Cap_Actuel => 30.0, Cap_Voulu => 285.0) = -105.0`
  - On peut supposer que Cap_Actuel et Cap_Voulu sont dans [0 ; 360[
  Pour commencer, examinez cette proposition (qui est incorrecte) : mission2b.adb. Voici l'algorigramme correspondant, à vous de le corriger :
- Vérifiez sur le papier que votre algorithme donne bien le bon résultat.
- À l'aide du poly, traduisez votre algorithme en une fonction Ada (cf page des fonctions)

### Test de la fonction`Delta_Cap`

#### Pour vérifier que la fonction est correcte

Écrivez un sous programme : une procédure de test de votre fonction `Delta_Cap`, que vous nommez `Tester_Delta_Cap`. Respectez les consignes suivantes :

- Cette procédure reçoit deux arguments, `CapA` et `CapV`, affiche leur valeur à l'écran et affiche le résultat de la fonction `Delta_Cap` pour ces arguments (pour vous permettre de vérifier que les résultats sont corrects). Voici un exemple d'affichage produit par `Tester_Delta_Cap (CapA => 350.0, CapV => 10.0) ;`
  - CapA = 3.5E+02 CapV = 1.0E+01 DeltaCap = 2.0E+01
  Aidez vous de l'exemple du poly sur les fonctions (p. 21 ?) pour écrire Tester_Delta_Cap
  - Examinez votre programme et trouver à quel(s) endroit(s) est invoquée la procédure `Tester_Delta_Cap`.
  - Compilez et exécutez votre programme.
  - En se servant du polycopié page 30, démontrer que l'appel à `Put_Line` dans `Tester_Delta_Cap` est bien typé.
  - Modifier le programme pour afficher la valeur de CapA et celle de CapV.
  - Enfin, afficher le résultat renvoyé par la fonction Delta_Cap. Vous pouvez lire cet exemple pour comprendre comment invoquer une fonction.
- Exécutez le programme final et vérifiez que la valeur renvoyée pour chaque test est correcte.

## Questions de compréhension

- De quel type est `Delta_Cap (Cap_Actuel => 30.0, Cap_Voulu => 285.0)` ?
- De quel type est `Tester_Delta_Cap (CapA => 30.0, CapV => 285.0)` ?
- Delta_Cap est une fonction et Tester_Delta_Cap est une procédure.
  Peut-on s'y prendre différemment, par exemple que Delta_Cap soit une procédure et Tester_Delta_Cap une fonction ?
- Regardez votre polycopié page 32. Avez-vous déjà complété cette page avec vos propres messages d'erreur ?
  Prenez l'habitude d'y inscrire les messages que vous rencontrez fréquemment, cela vous fera gagner du temps à l'avenir (notamment en contrôle).