FrançaisEnglish

Informations, Annales & Bibliographie

Printer icon

Organisation des TMEs en Distanciels

Pour effectuer les tme en distanciels nous allons utiliser deux outils:

  1. Une connexion vnc vers une machine de la salle 305, pour faire vos exercices. La procédure de création et de connexion à un serveur vnc est détaillée ici: Réseau du Master SESI/VNC
  2. Une connexion à un cours Moodle / bbb, que l'on utilisera comme un forum.

Nous essayerons la procédure suivante:

  1. Un étudiant pose une question dans la fenêtre de chat de bbb, en me donnant les informations sur son serveur vnc, à savoir:
    • La machine sur laquelle il tourne.
    • Le numéro de display qu'il utilise.
    • Le mot de passe (faible) qu'il a choisi pour son serveur.
  2. Je me connecte à son serveur vnc et je renvoie la capture d'écran sur bbb. De cette façon, vous pouvez tous suivre (ou pas) mes explications, et j'essayerais d'enregistrer toute la session pour autoriser une consultation ultérieure.

Vous aurez donc deux flux distants actif en même temps, une connexion vnc et une autre vers Moodle / bbb. J'espère qu'un lien ADSL ou 4G supporte cela de façon suffisamment fluide...

Examen, Partiels & TMEs

  • Le barème de la note finale de l'ue est le suivant:

    Note Poids
    Examen Final 60%.
    Contrôle Continu 40%
  • L'examen final dure deux heures, tous documents autorisés. Il s'agit d'un examen écrit classique.

  • La note de rattrapage remplace uniquement la note d'examen, la note de contrôle continu est conservée.

  • L'ensemble des tme sont notés et constituent la note de contrôle continu. En conséquence, il n'y a pas de partiel.

Soumission des Comptes Rendus de TME

Le compte rendu d'un tme doit être rendu avant le début du tme suivant (i.e. vous disposez d'une semaine pour le finir).

La lisibilité du code est notée.

Le compte rendu devra uniquement contenir:

  • Le répertoire des sources <top>/src/ (cf. Organisation du Code et Compilation).
  • Une explication concise sous forme d'un fichier texte CR.txt ou pdf CR.pdf.

Tous ces fichiers devront être fournis sous forme d'une archive compressée de type .tar.gz:

etudiant@pc:dir> cd <top>
etudiant@pc:top> tar zcvf TME1.tar.gz src
src/
src/cBox.h
src/cBox.c
src/cMain.c
src/CMakeLists.txt
src/CR.txt
etudiant@pc:top>

Cette archive doit être jointe en attachement d'un e-mail envoyé à l'encadrant de votre groupe de tme, <Jean-Paul.Chaput@lip6.fr> ou <Marie-Minerve.Louerat@lip6.fr>. Le message de l'e-mail doit faire apparaître clairement les noms et prénoms de toutes les personnes ayant participé au dit tme.

Note

Nous n'accepterons pas de liens vers des sites tiers (stockage de type cloud du style de Dropbox ou Google Drive).

Bibliographie

Livres

  • H. Garetta, Le langage et la bibliothèque C++, Ellipse 2000.
  • C. Delannoy, Programmer en langage C++ (5ième édition), Eyrolles 2000.
  • M. Nebra, M. Schaller, Programmer avec le langage C++, Le Site du Zéro & Simple IT 2011.
  • B. Stroustrup, Programmation - Principes et pratique avec C++, Pearson Education 2010.
  • B. Stroustrup, Le langage C++ (3ième édition), Compupress 1999.
  • S. Meyers, Effective C++ (3ième édition), Addison-Wesley 2005.
  • S. Meyers, Effective STL, Addison-Wesley 2001.
  • E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns Addison-Wesley 1995.

Ressources en Ligne

Organisation du Code & Compilation

Pour tous les TMEs, il vous est demandé de travailler en respectant l'arborescence suivante:

Répertoire Contient
<top>/src/ Les fichiers sources (.h, .cpp, cmake)
<top>/build/ La compilation générée par cmake.
<top>/install/include/ Les fichiers .h installés
<top>/install/lib/ Les éventuelles librairies
<top>/install/bin/ Les binaires.
<top>/work/ Le répertoire de travail dans lequel vous lancerez votre programme

Ce choix d'arborescence des répertoires utilise la stratégie de compilation out of source. C'est à dire que les modules compilés (.o et exécutable) sont créés dans des répertoires séparés de ceux du code source. Le code source reste ainsi parfaitement propre. Après compilation le binaire, les fichiers d'en tête (.h) et les éventuelles bibliothèques (libraries, en anglais) sont aussi installés dans une arborescence séparées (<>/install/). Enfin, pour éxécuter le programme on se placera dans le répertoire de travail <>/work.

Compilation avec cmake & make

Sous les systèmes d'exploitation UNIX en général et GNU/Linux en particulier, le programme de référence pour gérer la compilation d'un projet C/C++ est make. Toutefois, l'écriture de son fichier de configuration est fastidieuse. On utilisera donc cmake, qui générera les fichiers de make à partir d'un fichier de configuration plus simple: CMakeLists.txt. Il détermine comment compiler les différents fichiers sources et construire le binaire. Accessoirement, il détecte les caractéristiques du système, vérifie la présence des composants nécessaires et effectue l'installation. Son fichier de configuration se trouve dans le répertoire source et vous sera fourni pour chaque TME.

La compilation s'effectue en deux temps:

  1. Exécution de cmake, dans le répertoire <>/build/. Cette étape n'est à effectuer qu'une seule fois. Elle va générer les fichiers nécessaires à make.
  2. Compilation proprement dite, et installation en lançant la commande make, toujours dans <>/build/.

Ce qui donnera la séquence de commandes suivantes:

etudiant@pc:dir> mkdir build                  # Une seule fois.
etudiant@pc:build> cd build                   # Une seule fois.
etudiant@pc:build> cmake ../src               # Une seule fois.
etudiant@pc:build> make install
etudiant@pc:build> # Modification du code...
etudiant@pc:build> make install
etudiant@pc:build> # Modification du code...
etudiant@pc:build> make install
etudiant@pc:build> # Modification du code...
etudiant@pc:build> make install

Note

Recompiler en restant dans <>/work: il est fastidieux de sans arrêt changer de répertoire entre <>/build ou l'on compile et <>/work ou l'on éxécute le programme. On peut éviter cela et rester en permanence dans <>/work en utilisant la commande suivante:

etudiant@pc:dir> cd work
etudiant@pc:work> (cd ../build; make install)
etudiant@pc:work> # Modification du code...
etudiant@pc:work> (cd ../build; make install)
etudiant@pc:work> # Modification du code...
etudiant@pc:work> (cd ../build; make install)