# Exercice sur les types articles, types énumérés et tableaux

- Créez un dossier pour effectuer les exercices complémentaires. Copiez-y l'acteur mouv.ads et le programme mission1.adb (l'acteur n'a pas de fichier .adb car il ne contient que des définitions de types)
- Examinez les types définis dans l'acteur `Mouv`
- Définissez une procédure `Affiche_Pos` qui reçoit en argument une position (de type `T_Pos`) et qui l'affiche de la manière suivante :
  X = 8, Y = 12
  Avant le begin du programme principal, définissez une variable `Pos_Depart` de type `T_Pos` dans laquelle X = 4 et Y = 2.
  Dans le corps du programme principal, afficher la valeur de `Pos_Depart` (en utilisant Affiche_Pos évidemment) et vérifiez l'affichage.
- Définissez une procédure `Affiche_Sequence` qui reçoit en argument une séquence de type `T_Sequence` et qui l'affiche de la manière suivante :
  Gauche Gauche Haut Bas Haut Droite Rien Rien Droite Haut
  Notez que les messages sont affichés en français (on ne peut donc pas utiliser `T_Direction'Image`).
- Pour tester : avant le begin du programme principal, définissez une séquence `Up, Up, Right, None` et affichez-la.
- Écrivez une fonction `Calcule_Position` respectant le prototype suivant :
  On imagine un point situé initialement sur la position `Origine`. Le point se déplace selon les directions contenues dans la séquence `Seq` et la fonction renvoie la position du point à la fin de la séquence.
  Ainsi la séquence Up Up Right appliquée au point (4,2) doit retourner (5, 4) soit deux fois vers le haut et une fois à droite.
- Pour tester, afficher la position finale avec la séquence que vous avez déjà définie ci-dessus et l'origine située en `Pos_Depart`. Effectuez plusieurs tests différents.
- Écrivez maintenant une fonction `Transforme` qui reçoit en argument une chaîne de caractères (String) et qui renvoie une séquence de type `T_Sequence`. La séquence renvoyée a la même taille que la chaîne de caractères. Les caractères U, D, L, R deviennent les directions Up, Down, Left, Right (respectivement). Les autres caractères deviennent None. Par exemple, si la fonction reçoit en argument la chaîne UDUDLZZUR, elle renvoie :
  Up Down Up Down Left None None Up Right
  Si vous utilisez un bloc case, le dernier cas de la liste devra être `others => B` où B est un bloc.
- Testez dans le corps du programme en demandant à l'utilisateur de taper une chaîne, en affichant la séquence correspondante, puis en affichant les coordonnées du point final. Voici un exemple d'exécution complète du programme :

      Origine :
      X =  4, Y =  2

      Haut Haut Droite
      X =  5, Y =  4

      Entrez maintenant votre propre séquence : UDzzzLLLULUDLzR
      Haut Bas Rien Rien Rien Gauche Gauche Gauche Haut Gauche Haut Bas Gauche Rien Droite
      X =  0, Y =  3

- Si vous avez bien travaillé, et que vous n'avez pas cédé à la tentation de regarder la solution tout de suite, vous pouvez examiner cette solution : mission1.adb