# Exercices sur une collection de données

Objectifs : Recherche d'extremum parmi une collection de données.

## Exercice simple

- Copiez chez vous le programme suivant : mission5.adb et les deux fichiers de l'acteur : rois.ads et rois.adb
- Pour toute la suite, vous n'avez pas le droit de modifier l'acteur : ne touchez pas à rois.adb
- Écrivez une procédure `Tout_Afficher` qui affiche la liste de tous les rois avec leur date de règne.
- Testez en exécutant votre programme : il doit afficher
  - Clodion le Chevelu 429 - 447
  - Mérovée 447 - 456
  - Childéric Ier 457 - 481
  - ...
- Écrivez maintenant une fonction sans argument qui renvoie le numéro du roi ayant régné le plus longtemps. Votre fonction doit continuer à fonctionner si, à l'avenir, la liste des rois de France est remplacée par la liste des rois d'Angleterre.
- Pour tester, affichez le nom et les dates du roi ayant régné le plus longtemps. Comme vous connaissez bien votre Histoire, vous devriez savoir à l'avance ce qui va être affiché.
- Écrire une fonction qui trouve le roi ayant régné le moins longtemps. Votre fonction doit continuer à fonctionner si, à l'avenir, la liste est modifiée.

## Autocorrection

- Vérifiez que vos fonctions (qui renvoient le numéro du roi ayant régné le plus longtemps ou le moins longtemps) n'affichent rien et renvoient bien un entier représentant un numéro de roi
- Si vous avez suffisamment travaillé, comparez votre travail avec un début de solution : soluce5.adb

## Exercice complet, avec type article

- Copiez chez vous le programme suivant : mission5b.adb et les deux fichiers de l'acteur : villes.ads et villes.adb (clic-droit, enregistrer...)
- Pour toute la suite, vous n'avez pas le droit de modifier l'acteur : ne touchez pas à villes.adb
- Écrivez une procédure `Afficher_Ville` qui respecte le schéma suivant :
  Cette procédure affiche les infos reçues en argument : nom de la ville, code postal, et population 2010.
- Écrivez une procédure `Afficher_Departement` qui reçoit en argument un numéro de département et affiche les infos de toutes les communes du département.
- Écrivez une fonction `Desert` qui renvoie le numéro de la commune ayant le moins d'habitants en 2010. Pour tester, afficher les infos de cette commune (vous trouverez une commune de haute-garonne avec 5 habitants).
- Exercice suprême : écrivez une fonction `Fiche_Departement` qui respecte le schéma suivant :
  Cette fonction reçoit en argument un numéro de département et renvoie un article de type T_Fiche comprenant :
  - Le numéro du département
  - Le code postal de la ville la plus peuplée du département, 0 si le département est inconnu.
  - La population 2010 du département (la somme des populations des communes du département).
  - La population 1999 du département.
  - La surface du département.
  - Les coordonnées moyennes du département, calculées en pondérant chaque coordonnée de commune par sa surface.
  - Les altitudes les plus basses et les plus hautes de chaque département.
  Pour tester, voyez la procédure suivante.
- Écrivez une procédure `Tester_Departements` qui, pour tous les départements, affiche les informations recueillies par Fiche_Departement. Vous pourrez vérifier la vraisemblance des résultats sur wikipedia.

## Autocorrection

- Vérifiez que la fonction Desert n'affiche rien et renvoit bien un entier représentant un numéro de ville.
- Voici un corrigé : soluce5b.adb