Algorithmique et programmation avancée (LIFAP3)


Présentation

Prérequis

  • Savoir écrire un algorithme simple en langage algorithmique
    • manipuler des variables de type booléen, entier, réel, caractère
    • manipuler des tableaux et chaînes de caractères
    • connaître les structures de contrôle (tests, boucles, ...)
    • savoir découper un programme en fonctions et procédures
    • connaître les modes de passage des paramètres
    • être familier avec l’organisation de la mémoire
  • Savoir implémenter tout ça en langage C++

Contenu de l'UE

  • Manipulation des principales structures de données utilisées en informatique
    • types primitifs: entier, réels, caractères, booléens, pointeurs
    • types agrégés: tableaux et structures
    • gestion des entrées-sorties: standard et fichier
    • structures dynamiques: tableaux, piles, files, listes, arbres, fichiers
  • Les classes et objets
    • membre, spécificateur d’accès, surcharge d’opérateur
    • type de données abstrait et programmation modulaire
  • Algorithmique
    • algorithmes de tri (sélection, insertion, fusion)
    • introduction à la notion de complexité algorithmique

MCC

La note finale LIFAP3 est calculée comme suit, où CC1TD et CC2TD sont les deux contrôles continus de TD, CC1TP et CC2TP sont les deux contrôles continus de TP et ECA est l'épreuve commune anonyme:

LIFAP3 = (10 * CC1TD + 10 * CC2TD + 20 * CC1TP + 20 * CC2TP + 40 * ECA) / 100

Les modalités de contrôle des connaissances pour les UE en CCI sont disponibles sur le site de l'Université. Notez les points importants suivants. La note de session 2 (en juin) remplace la note ECA (contrôle final de janvier) même si la note de session 2 est inférieure. Également, une absence, quelle soit justifiée ou injustifiée, à l'ECA entraîne un DEF à l'UE en session 1 (mais l'étudiant peut venir en session 2). Une absence injustifiée attribue la note de zéro au contrôle. Au dessus de 40% d'absences justifiées aux contrôles continus, toutes les absences justifiées sont converties en zéro. Les justificatifs sont à déposer (dans les 7 jours pour les séances normales, dans les 48h pour les CC et l'ECA) à la scolarité de la licence bâtiment Quai 43.

Les contrôles continus auront lieu le lundi 30 septembre (CC1TD), le lundi 4 novembre (CC2TD), le lundi 14 octobre (CC1TP groupes ABCD) et mardi 15 octobre (CC1TP groupes EFGHI), et le lundi 2 décembre (CC2TP groupes ABCD) et mardi 3 décembre (CC2TP groupes EFGHI).

Emploi du temps et groupes

Automne 2019 :

Emploi du temps LIFAP3 groupes A1 et A2
Emploi du temps LIFAP3 groupes B1 et B2
Emploi du temps LIFAP3 groupes C1 et C2
Emploi du temps LIFAP3 groupes D1 et D2
Emploi du temps LIFAP3 groupes E1 et E2
Emploi du temps LIFAP3 groupes F1 et F2
Emploi du temps LIFAP3 groupes G1 et G2
Emploi du temps LIFAP3 groupes H1 et H2
Emploi du temps LIFAP3 groupes I1 et I2

Emploi du temps LIFAP3 tous les groupes

Ressources

Transparents de cours


Exercices de TD et TP

Polycopié entier des énoncés de TD et TP

TD1 - Vie et mort des variables en mémoire (1/2) corrigé exercices supplémentaires sans corrigé
TD2 - Vie et mort des variables en mémoire (2/2) corrigé exercices supplémentaires sans corrigé
TD3 - Classe et objet corrigé exercices supplémentaires sans corrigé
TD4 - Algorithme, invariant de boucle et complexité corrigé exercices supplémentaires sans corrigé
TD5 - Algorithmes sur les fichiers corrigé exercices supplémentaires sans corrigé
TD6 - Tableau dynamique corrigé exercices supplémentaires sans corrigé
TD7 - Liste chaînée corrigé exercices supplémentaires sans corrigé
TD8 - Pile et file corrigé exercices supplémentaires sans corrigé
TD9 - Arbre binaire corrigé exercices supplémentaires sans corrigé

TP1 - De LIFAP1 à LIFAP3 corrigé
TP2 - Vie et mort des variables en mémoire corrigé
TP3 - Classe et objet corrigé
TP4 - Fichier, complexité et tri fusion random.txt, reverse.txt, sorted.txt corrigé
TP5 - Tableau dynamique ElementTD.h, ElementTD.cpp, TableauDynamique.h TableauDynamique.cpp
TP6 - Liste doublement chaînée ElementL.h, ElementL.cpp, Liste.h Liste.cpp
TP7 - Pile et file ElementL.h, ElementL.cpp, ElementTD.h, ElementTD.cpp, File.h, Pile.h File.cpp et Pile.cpp
TP8 - Arbre binaire de recherche ElementA.h, ElementA.cpp, Arbre.h Arbre.cpp

Annales d'examens et corrigés


Littérature

Il existe des tonnes de ressources sur Internet et dans les librairies pour apprendre l'algorithmique et la programmation C++. Voici quelques livres disponibles à la BU de science, ainsi que quelques liens utiles.
  • Algorithmique : cours avec 957 exercices et 158 problèmes, T. Cormen et al., 2010
  • Programmez avec le langage C++, M. Nebra et M. Schaller, 2015
  • Conception d'algorithmes: principes et 150 exercices corrigés, P. Bosc et al., 2016
  • Apprendre le C++, C. Delannoy, 2008
  • Algorithmique : applications en C, C++ et Java, J.-M. Léry et F. Jacquenod, 2013
  • LIFAP1 (CM/TD/TP/exam) : pour ceux qui n'ont pas suivi l'UE l'année dernière
  • Tutoriels C++ et cours d'algo (developpez.com)
  • Documentation et tutoriel C++ (cplusplus.com en anglais)