ENSE3 1A
UE Approfondissements filière SICOM
Informatique
1. Actualités A
Quelques idées pour réviser
-
Bien travailler le corrigé du TP Chanson fin de séance 10 : module "chanson", module listes chaînées dynamiques génériques, module lecture de fichier chanson, tests...
1a_ense3_pre_sicom_livecoding_2024_seance10.zip -
Re-parcourir le sujet de TP "chansons" :
Sujet
Nous avons à peu prêt été jusqu'à la question 10.
Comment réagiriez vous face aux dernières questions ?
Demandez-vous aussi, par exemple, comment on pourrait faire pour inverser une liste ? Pour rajouter un élément à la FIN d’une liste (et pas au début comme on l'a fait) ? Au milieu d'une liste ("à l'indice i") ? etc. - Reprendre exemples de commande dans le Terminal, les fiches pédagogiques sur les listes, sur la compilation, sur les makefile, sur valgrind, etc.
Code produit à la fin du module
- Accès au code enseignant fin du module : 1a_ense3_pre_sicom_livecoding_2024_seance10.zip
Code fin séance 9
- Accès au code enseignant fin de séance 9 : 1a_ense3_pre_sicom_livecoding_2024_seance9.zip
Code fin séance 8
- Accès au code enseignant fin de séance 8 : 1a_ense3_pre_sicom_livecoding_2024_seance8.zip
A faire avant la séance 5 - 6 du 17/05
- Réviser des commandes du Terminal : comprenez-vous chacune des commandes listées dans -> ce fichier ?
- Revoir les fondamentaux de git : Fiche Git (attention, VPN nécessaire)
- Relire attentivement le code écrit en séance pour la question 1 du TP chanson. 1a_ense3_pre_sicom_livecoding_2024_seance4.zip et Préparez vos questions sur ce code !
- Lire les question 3 et 4 du TP Chanson :
Sujet tp chansons
Réfléchir à la la fonction song_parse (question 3), qui sera corrigée en début de séance.
- Optionnel : fiche optionnelle d'introduction aux listes chaînées : [optionnelle] Du besoin du type abstrait Liste en programmation
- Première lecture des fiches sur les listes chaînées. Compter une petite heure : Le type abstrait "Liste" Introduction aux liste chaînées dynamiques en C, partie 1 Introduction aux liste chaînées dynamiques en C, partie 2
A faire avant les séance 3 et 4 :
- Réviser les codes produits durant la première séance
- Lire les fiches et slides "compilation" : Notion de module en C et fichier header .h Compilation séparée et options de gcc
- Travailler la fiche pédagogique Introduction à la notion de type abstrait de données"
2. Présentation du module
Objectifs
Affermir vos connaissances en programmation, en préparaton de la 2A SICOM :
- Sur l'outillage du programmeur :
- Shell Linux, Compilation, Git, Makefile, Valgrind, Debugger
- En programmation :
- Gestion de projet logiciel, analyse, définition de contrat et prototypes de fonctions, test...
- En langage C :
- Pointeurs, Allocation dynamique, Types structurés, Entrées/sorties (fichiers), chaînes de caractères.
- Types abstraits de données ; listes, listes génériques en C...
Organisation
10 séances de 2 heures.
Cours | TD | TP à chaque séance.
TP : pour l'essentiel, un sujet progressif en mode "projet".
Évaluation
Contrôle continu + DS 1h, sur papier. Modalités précisées ultérieurement.
Contacter les enseignants
Par mail, avec SVP [App ENSE3] dans l'objet : nicolas.castagne@grenoble-inp.fr, francois.cayre@grenoble-inp.fr .
3. Ressources documentaires du Cours
Ces ressources ne regroupent pas l'ensemble des éléments de cours pour ce module. Elles seront complétés par divers documents (live coding, slides, ...) qui seront précisés durant les séances.
Environnement de travail et outillage
Outillage pour développer en C A connaître notamment (liens sur le site précédent) :- Gestionnaire de version Git
- Valgrind et débugger
- Compilation et Makefile
Compléments Makefile [© ENSIMAG] Notion de module en C et fichier header .h Memento des commandes Shell (© Michel Blanc)
Types abstraits et structures de données en C
Notion de type abstrait
[indispensable] Introduction à la notion de type abstrait de donnéesListes en langage C
[optionnelle] Du besoin du type abstrait Liste en programmation [indispensable] Le type abstrait "Liste" Introduction aux liste chaînées dynamiques en C, partie 1 Introduction aux liste chaînées dynamiques en C, partie 2 [indispensable] Implémentation de référence des listes chaînées dynamiques en C [optionnelle] Listes en langage C : quelques variantes Introduction aux listes génériques en CPiles et Files en langage C
Le type abstrait "Pile" et son implémentation par liste chaînée Le type abstrait "File" et son implémentation par liste chaînée circulaire [optionnelle] Pile et File : implémentation au moyen d'un tableauTables de hachage / dictionnaires en langage C
Table d'association ou table de HashageStructures arborescentes
[optionnelle] TAD tas (heap), Arbres Binaires Parfait et tri par tas [optionnelle] Structures arborescentes en C [optionnelle] Arbre Binaire de RechercheTP et mini projet
Séance 1 : découverte du Shell Linux et de l'outil de gestion de version Git
TP Shell Linux - jusqu'au 3.1 point 5 seulement
Séance 1 et suivantes : mini-projet "bibliothèque de chansons"
Sujet fichier texte de chansons sans erreur (utliser clic droit, enregistrer sous) fichier texte de chansons avec des erreurs (utliser clic droit, enregistrer sous)
Quelques exercices qu'on pourra utiliser au fil des séances...
Exercices - 014. Liens et autres ressources complémentaires
Compléments sur le langage C
Contrat de fonction, préconditions et fonction assert() Prototype de la fonction main() Types énumérés Les flux standard en C : stdin, stdout, stderrSlides Phelma 1A
Slides cours Phelma 1A 1er semestre. Voir : Pointeurs, Allocation dynamique, Fichiers, Chaînes de caractèresAutres fiches langage C [en cours de rédaction]
Introduction aux pointeurs Arithmetique de pointeurs Pointeurs et tableaux Pointeurs et fonctions [*** en cours de rédaction ***]Bibliographie :
- Robert Sedgewick : Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms, Addison-Wesley, 2002, 0201756080
- C.Froidevaux, M.C.Gaudel, M.Soria : Types de données et algorithmes , McGraw-Hill, 1990
- A. Aho, J. Hopcroft, J. Ullman. Data structures and algorithms .Addison-Wesley, 1983.
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest : Introduction to Algorithms. MIT Press and McGraw-Hill., Third Edition. MIT Press, 2009. ISBN 978-0-262-53305-8.
5. Travailler sur son poste personnel
-
Sur Windows ou MacOSX, installer l'outil de virtualisation et la machine virtuelle phelma.
- Suivre ces instructions
- Si vous rencontrez des problèmes pour l'installation, cherchez d'abord dans la : FAQ
- Et si la réponse à votre problème ne s'y trouve pas, envoyez-nous sa description précise par mail
-
Votre machine est déjà sous Linux ?
- Installer les paquetages suivants avec votre gestionnaire de paquetage préféré :
autotools-dev autoconf make gcc clang valgrind atom
- Installer les paquetages suivants avec votre gestionnaire de paquetage préféré :