Licence Sciences et Technologies (2009-2010) - Informatique L2, UE DDINF231 - Sujets de travaux dirigés Catherine Parent-Vigouroux, Pierre-Claude Scholl - Août 2009 Les numéros d exercices font référence au polycopié. On donne ci-dessous les exercices étudiés en séance ; les autres sont suggérés comme travail personnel à la maison (certains peuvent avoir été traités en cours). La production d algorithmes doit inclure l étude de leurs propriétés (correction, dénombrement d opérations) et l observation de leur comportement pour des exemples significatifs (savoir identifier les cas pertinents, corrects ou incorrects). Une attention particulière doit être portée à la production écrite des étudiants : chacun devrait rendre deux ou trois exercices rédigés dans la période. En règle générale, ces exercices sont rendus annotés d une semaine sur l autre. Les étudiants doivent respecter la notation algorithmique et toujours accompagner un compte-rendu d algorithme d un lexique et de commentaires pertinents. Le lexique doit être décrit avec précision (contraintes sur les types, rôle des variables). TD optionnel de rédaction d algorithmes En complément des cours, travaux dirigés et travaux pratiques réguliers, les étudiants peuvent participer à des travaux dirigés optionnels en petits groupes. Chaque étudiant y bénéficie d un soutien individualisé autour de la rédaction d algorithmes : selon ses besoins, l accent est mis sur le "démarrage" d une solution et l expression de son principe, sur le lien avec les exemples du cours et les exercices faits en TD, sur l utilisation des techniques données en cours, sur la bonne application des notations et la compréhension des concepts sous-jacents,... D une séance à la suivante, les rédactions rendues par les étudiants sont annotées par l enseignant puis commentées : les erreurs et imperfections sont mises en relation avec ce qui aurait du être déjà assimilé en cours et en TD. Séances 1 et 2 : Raisonner sur les états (2*1h30 = 3h) Spécifications, assertions : compréhension des notions et utilisation (pré et post-conditions, raisonnement sur les états). Itérations : rappels et introduction de la notion d invariant d itération. Tableaux : rappels. Installation d une ambiance de travail régulier entre les séances, fondé sur l étude du cours et sur la production écrite. C. Parent-Vigouroux, P.-C. Scholl - août 2009 page 1
Séance 1 : états, assertions, spécifications Distribution des chapitres 1 et 2 du polycopié. Prise de contact, présentations ; méthodes de travail ; contrôle continu ; question de cours en début de chaque séance de TD. Inciter les étudiants à travailler régulièrement hors séance : lire les éléments de cours, étudier les exemples d exercices rédigés et traiter quelques exercices. E1.8 "A propos d échanges" : travail sur les pré et post-conditions, la description d états intermédiaires, le statut des paramètres. Dans l écriture des assertions, bien distinguer la partie désignant les valeurs des variables, de la partie spécifiant une propriété. E1.15 "Somme des chiffres d un entier" : exemple type important. Travail sur itération, invariant. Ne pas traiter Q4 en séance. Cet exercice est programmé en TDE2. E1.9 "Classement de trois valeurs" : raisonnement sur les états. Exercice préparé en cours par l exemple E1.3. E1.13 "Algorithme mystère 3" : travail sur les preuves de terminaison, de correction partielle, sur le dénombrement d opérations. Préparation des TDE : "Machine tracés", E1.18 "Composition de dessins formés d un ensemble de carrés" : préparation de la séance de TDE1. Travail sur le respect des spécifications lors d une réalisation. Utilisation de diverses formes de composition itérative. E1.14 "Les trois plus grandes valeurs" : construction du corps d une itération à partir d un invariant ; analyse par cas. Cet exercice est programmé en TDE1 ou TDE2. E1.19 "Les rayons" et E1.20 "tracé de segments" : pour continuer la mise en train avec d autres tracés. Ces exercices doivent être programmés et rendus. Séance 2 : invariants, itérations sur les tableaux E2.6 "A propos de sommes d entiers" : travail de recherche d erreurs ; travail sur la notion d invariant. E2.10 "Matrices carrées symétriques" : composition de schémas, analyse quantitative. Si le temps manque, ne pas traiter la version 2 de Q3 (linéarisation de la matrice). complément du cours et des TD : inciter les étudiants à faire au moins l exercice E2.7. E2.7 "Recherche dans un tableau" : existence d un élément vérifiant une propriété donnée, sous forme d un parcours ou d une recherche avec arrêt dès que possible. E2.9 "Algorithme mystère" : observation d un algorithme, recherche d un invariant d itération permettant de déterminer l effet. E2.10 "Matrices carrées symétriques" : terminer. Préparation des TDE, E1.21 "Tricot" : cet exercice doit être programmé et rendu. C. Parent-Vigouroux, P.-C. Scholl - août 2009 page 2
Séances 3 et 4. Séquences et tableaux (2*1h30 = 3h) Savoir équilibrer l activité de programmation entre la rédaction d algorithmes et l examen de leurs propriétés. Apprendre à exprimer le principe de solutions à un niveau d abstraction adéquat. S approprier des schémas itératifs de base : savoir identifier une classe de problèmes et appliquer un schéma itératif associé. Savoir démontrer qu une propriété est un invariant d itération ; savoir exploiter un invariant pour démontrer une propriété à l issue d une itération. Savoir utiliser des spécifications (bibliothèque de primitives) Séance 3 : Représentation contiguë d une séquence Les étudiants doivent connaître le lexique définissant une séquence sous forme contiguë avec longueur explicite (question de cours), et comprendre la différence entre traitement d un tableau et traitement d une séquence représentée dans un tableau (beaucoup d erreurs dans les examens sur ces questions). E2.12 "Représentation contiguë avec longueur explicite" : pour aborder la représentation contiguë (lexique général) et travailler sur le schéma de recherche. E2.15 "Partition d une séquence d entiers" : gestion de deux séquences dans un même tableau ; algorithme d insertion d un élément dans une séquence triée et notamment décalage. Travail sur la notion d invariant. complément du cours et des TD : E2.13 "Suppression des espaces dans un texte" : exemple type important dont l étude est préparée en cours (exemple "Suppression des zéros"). E2.15 "Partition d une séquence d entiers" : terminer. Préparation des TDE 3 et 3bis : E2.4 "Tri par sélection du minimum" : lecture avant programmation. E2.22 "Gestion d une bibliothèque" : lecture des documents distribués en cours 5. Séance 4 : Indirection E2.14 "Afficher en ordre sans trier" : exercice de synthèse autour d un travail sur l indirection. complément du cours et des TD : E2.19 "Opérations ensemblistes" : représentation d un ensemble à l aide d un vecteur de booléens (traité en cours mais non repris en TD). Préparation des TDE : E2.22 "Gestion d une bibliothèque" C. Parent-Vigouroux, P.-C. Scholl - août 2009 page 3
Séances 5 à 9. Séquences et chaînage (5*1h30 = 7h30) Acquérir les techniques de chaînage, à base de pointeurs ou d indices dans des tableaux. Apprendre à raisonner sur les listes chaînées en faisant abstraction de la représentation des liens. Maîtriser l indirection. Renforcer la maîtrise des schémas de traitement séquentiel. Renforcer la démarche de résolution de problèmes par niveaux d abstraction successifs. Séance 5 : Principe de la représentation chaînée distribution du chapitre 3 du polycopié. E3.10 "Compréhension de la représentation chaînée" : concrétisation de la mémoire à l aide d un tableau et observation de l état de la mémoire lors de la construction d une liste chaînée (sans algorithme) ; travail sur les notations. E3.11 "Itérations simples sur les listes chaînées" : algorithmes de base fréquemment utilisés. Ils doivent être connus des étudiants. On y retrouve les schémas itératifs dans une nouvelle représentation (schémas présentés au cours suivant). Ces algorithmes sont programmés en TDE6. complément du cours et des TD : E2.21 "A propos de permutations" : travail sur l indirection. Les algorithmes demandés sont des applications des schémas de traitement séquentiel. Les difficultés sont liées à ce que l on atteint les informations par indirection. La modification de l algorithme de tri fourni au départ doit être faite en conservant son principe et sa structure (et non en reprenant l étude dès le début). Préparation des TDE : E2.22 "Gestion d une bibliothèque" : étudier les algorithmes avant les séances sur machine. Séances 6 à 9 : Listes chaînées séances 6 et 7 E3.11 "Itérations simples sur les listes chaînées" : à terminer. E3.12 "Construction d une liste chaînée", E3.13 "Partition d une séquence" : application des principes de construction vus en cours dans l exemple E3.2 (primitives d ajout, raisonnement à partir de dessins, allocation). Le cas échéant, ne pas faire la question Q3 de E3.13 (généralisation). L exercice E3.13 est programmé en TDE 7. séance 8 rendre le partiel et commenter ; rappeler le DS. E3.14 "Suppression du premier élément de valeur donnée" : Travail sur la suppression dans une liste chaînée et la notion d élément fictif. A faire absolument en séance. Exercice programmé en TDE8. E3.21 "Matrices creuses" : présentation du sujet programmé à partir du TDE8bis. Etude de la représentation proposée à l aide d exemples. séance 9 E3.15 "Concaténation" : construction de listes par ajouts en queue. C. Parent-Vigouroux, P.-C. Scholl - août 2009 page 4
E3.20 "Gestion d un répertoire téléphonique" : synthèse sur le traitement de listes chaînées (traitement séquentiel, opérations de mise à jour). Il n est pas nécessaire de traiter en séance l ensemble des primitives de la question Q3. E3.12 "Partition d une séquence" : à terminer le cas échéant avant le TDE 7. E3.20 "Gestion d un répertoire téléphonique" : à terminer. Préparation des TDE : E3.16 "Intersection d ensemble" : pour voir la différence des algorithmes selon que l on crée le résultat ou que l on modifie les données. Programmé en TDE 8. E3.21 "Matrices creuses" : préparation des TDE 8bis à 10. Séances 10 à 12. Composition récursive (3*1h30 = 4h30) Ecriture d algorithmes récursifs. Analyse récurrente Retour sur "spécification versus réalisation", "paramètres" Retour sur les représentations des séquences On s appuie sur trois thèmes : affichage de textes, traitement de séquences sous forme contiguë ou chaînée, tracé de dessins (le troisième thème est traité essentiellement en TDE). Séance 10 : affichages réalisés récursivement (analyse récurrente) distribution du chapitre 4 du polycopié. "Machine d affichage" : Présentation rapide des primitives. Renvoyer à une lecture plus précise des spécifications lors de la résolution des exercices. E4.11 "Un mot et son inverse" : rappeler les notations permettant de manipuler des valeurs de type séquence ([],., o, etc.). Séances 11 et 12 : traitement récursif de séquences rendre le DS et commenter. "E4.12 "Trace de l exécution d une action réalisée récursivement" : Présentation du thème "dessins récursifs" en vue du TDE 11. De plus, cet exercice est une bonne suite de l exercice E4.3 (séance précédente). "E4.18 "Opérations sur les séquences triées" : application directe du cours, mais aussi synthèse sur l ensemble des points traités dans l UE. Hors séance E4.18 "A propos de séquences triées" : terminer. E4.19 "Tri par interclassement". Préparation des TDE, E4.13 Arbres binaires, E4.15 "Etoiles", E4.17 "Répartition des éléments d une liste en deux listes" : programmés en TDE 11 et 12. C. Parent-Vigouroux, P.-C. Scholl - août 2009 page 5