Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM guillerm@laas.fr
BILAN du TD1 Une démarche : Tableau contraint : Structures de données Prog. principal + spéc. des sous-prog. Sous-programmes Tableau contraint : définition déclaration attributs
BILAN du TD1 Différents sous-programmes : in out procédure Différents sous-programmes : Procédure Fonction Quelques algorithmes simples avec l’utilisation de boucles pour parcourir un tableau in out
TD2 Suivi de la même démarche que dans le TD1 : Structures de données définir les constantes, types et sous-types. Programme principal, avec spécification des sous-programmes Sous-programmes
TD2 Structure de données : Un élève : type article ! Une classe : tableau non contraint Inconvénients : - on doit connaître le nombre d’élèves à l’avance - ajout/suppression d’élèves impossible (sans déclarer un autre tableau)
Saisie_des_élèves(tab) Afficher les choix possible TD2 Programme principal : DEBUT nb_eleve? Déclarer le tableau Saisie_des_élèves(tab) Afficher les choix possible Choix? 1 2 3 Trier_par_note(tab) Trier_par_nom(tab) Afficher(tab) FIN
TD2 Programme principal :
TD2 Spécification des sous-programmes : …… saisir_classe(…) …… afficher_classe(…) …… trier_par_note(…) …… trier_par_nom(…)
TD2 Sous-programme de tri par note : I = 1 : I = 2 : I = 3 : 1 2 3 4 1 2 3 4 1 2 3 4 I = 1 : 5 3 7 6 7 3 5 6 1 2 3 4 1 2 3 4 I = 2 : 7 3 5 6 7 6 5 3 1 2 3 4 1 2 3 4 I = 3 : 7 6 5 3 7 6 5 3
TD2 Sous-programme de tri par note d’un tableau d’élèves : Pour chaque indice i1 du tableau (sauf pour l’indice de la dernière case) On cherche l’indice i2 de l’élève qui a la plus forte note dans le reste du tableau à partir i1 On échange les positions des élèves contenus aux indices i1 et i2 Fin de la boucle pour Sous-sous-programme de recherche de l’indice de l’élève avec la plus forte note dans un tableau d’élèves : On initialise i_max à l’indice de la première case Pour chaque indice i du tableau (sauf pour l’indice de la première case) Si la note de l’élève à la position i est plus forte que la note de l’élève à la position i_max alors : On actualise i_max avec la valeur de i Fin du si On retourne i_max comme résultat
TD2 Sous-programme de tri par note :
TD2 Sous-programme de tri par nom :