Note : Les solutions des exercices sont disponible au plus tard la semaine suivant le lab.
Les énoncés des exercices sont disponibles sur le site du cours.

Séance du 20 janvier

Exercice 1 Deux petits tests supplémentaires que vous pouvez faire subir à votre programme si le coeur vous en dit : Deux solutions possibles (comme le dit si bien Larry Wall, "There's more than one way to do it") : Sol 1, Sol 2.
Exercice 2 Des petits bugs...
  • Le programme fourni par le professeur plante au début de l'exécution lorsque le fichier de produits n'existe pas. Pouvez-vous trouver où l'erreur se produit et pourquoi?
  • Aux endroits où le programme attend la saisie d'un nombre (entier ou réel), ça plante lorsqu'on entre uniquement des lettres. Êtes-vous en mesure de corriger ça?
Solution : ici

Séance du 27 janvier

Exercice 3 L'exercice de cette semaine devrait vous prendre un gros 15 minutes à faire!

Solution : Mettre ces 3 fichiers dans un projet : USMetrique.ads, USMetrique.adb, Exercice03.ada, compilez et amusez-vous!

Séance du 3 février

Exercice 4 !serètcarac ed senîahc sed resrevni ruop eliP ADT el esilitu no ,eniames etteC (Quétaine!)

Solution : Mettre ces 3 fichiers dans un projet : Pile_G.ads, Pile_G.adb, Exercice04.ada, compilez, et amusez-vous!

Séance du 10 février

Exercice 4A Cette semaine, on pratique l'utilisation du TDA File.

Solution : Mettre ces 3 fichiers dans un projet : File_G.ads, File_G.adb, Exercice04A.ada, compilez, et amusez-vous!

Séance du 17 février

Exercice 5 Aujourd'hui : Nos amis les pointeurs.

Solution : ici

Séance du 24 février

Exercice 6 Pas de démo cette semaine (relâche)!
Vous devez tout de même faire la mise en oeuvre dynamique du TDA File à la maison.

Solution : Mettre ces 3 fichiers dans un projet : File_D.ads, File_D.adb, Exercice06.ada, compilez, et amusez-vous!

Séance du 2 mars

Exercice 7 Exercice d'insertion dans une liste simplement chaînée ordonnée.

Conseil gratuit : Le programme fourni ne libère pas la mémoire. Bien qu'en principe, le système d'exploitation récupérera automatiquement toute la mémoire allouée pour un programme lorsque celui-ci se terminera, c'est toujours mieux de le faire soi-même ne serait-ce que pour que ça devienne une habitude. Comme ça, lorsque vous écrirez un programme "serveur" qui roulera 24/7, vous n'aurez pas de mauvaises surprises à cause d'un (ou de plusieurs) leak(s) de mémoire!

Solution : ici

Séance du 9 mars

Révision Révision pour l'examen intra.

Séance du 16 mars

Retour Retour sur l'examen intra.

Séance du 23 mars

Exercice 8 Exercice d'insertion dans une liste doublement chaînée ordonnée.

Encore une fois, le programme fourni ne libère pas la mémoire. Faites-donc une petite procédure qui libère la mémoire... Ça prend 30 secondes, et c'est une bonne habitude à prendre!

Solution : ici

Séance du 30 mars

Exercice 9 Exercice d'insertion récursive dans une liste simplement chaînée ordonnée.

  • Je sais, je sais, je suis achalant avec ça, MAIS LIBÉREZ VOTRE MÉMOIRE À LA FIN DE VOTRE PROGRAMME!
  • Tant qu'à être parti sur la récursivité, faites une version récursive de la procédure qui libère la mémoire!
  • Pour un brin de fantaisie, ajoutez un paramètre à la procédure Afficher qui détermine si on affiche à l'endroit ou à l'envers!
Solution : ici (j'ai également mis une solution alternative en commentaire)

Séance du 6 avril

Exercice 10 Fouille binaire vs fouille séquentielle dans un tableau ordonné.

Solution : j'ai pondu (c'est Pâques qui approche!) la solution ici

Séance du 13 avril

Exercice 11 Cette semaine, on insère des machins dans un arbre binaire de recherche (et on libère aussi notre mémoire à la fin du programme )

Solution : ici

Séance du 20 avril

Exercice 12 Tris simples

Solution : ici

Séance du 27 avril

Révision Révision en vue de l'examen final