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

Code fin séance 9

Code fin séance 8

A faire avant la séance 5 - 6 du 17/05

A faire avant les séance 3 et 4 :

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ées

Listes 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 C

Piles 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 tableau

Tables de hachage / dictionnaires en langage C

Table d'association ou table de Hashage

Structures arborescentes

[optionnelle] TAD tas (heap), Arbres Binaires Parfait et tri par tas [optionnelle] Structures arborescentes en C [optionnelle] Arbre Binaire de Recherche

TP 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 - 01

4. 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, stderr

Slides Phelma 1A

Slides cours Phelma 1A 1er semestre. Voir : Pointeurs, Allocation dynamique, Fichiers, Chaînes de caractères

Autres 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