CPP-L - C/C++ (Cours + labo)

Appartient à l'UE Développement III

Personnes enseignantes

Description générale du cours

Apprentissage des langages C et C++

Ces deux langages sont enseignés à des étudiants censés posséder de bonnes bases en Java et en langage d’assemblage. La norme C étudiée est C11. La norme C++ est C++17.

Matières de base utilisées

Néant.

Corequis

Néant.

Matières de base utilisées

Langage Java (cours et laboratoire du bloc 1) et laboratoire de technique des microprocesseurs et assembleur micro (laboratoire du bloc 1).

Objectifs

Apprentissage de la manipulation des pointeurs et des spécificités du C / C++ par rapport à Java.

Acquis d’apprentissage

Acquis (mesurables) d’apprentissage.

C

  • Lire un code source C11 et

  • prévoir le fonctionnement du programme résultant.
  • détecter les erreurs de compilation.
  • détecter les erreurs d’édition des liens.
  • détecter les erreurs à l’exécution.

  • Écrire du code C11 en utilisant judicieusement :

  • les tableaux statiques et les chaînes de caractères.
  • les pointeurs.
  • l’allocation dynamique de mémoire.

C++

  • Lire un code source C++17 et

  • prévoir le fonctionnement du programme résultant.
  • détecter les erreurs de compilation.
  • détecter les erreurs d’édition des liens.
  • détecter les erreurs à l’exécution.

  • Écrire du code C++17 en utilisant ou implémentant judicieusement :

  • les opérateurs de bonne gestion des ressources (constructeurs, destructeur, opérateur d’assignation et de déplacement, pointeurs intelligents).
  • les conteneurs standards (string, vector, set, etc.).
  • les classes d’exception.
  • le modèle de conception Observateur / Sujet d’observation.
  • les techniques liées à l’héritage (surcharge, surdéfinition, polymorphisme).
  • les classes d’exception.
  • modèles de fonctions et de classes.
  • expressions lambda.

Ce qui est réellement acquis de ces apprentissages idéaux étant bien entendu mesurable à l’examen.

Plan du cours

Langage C (+-17 heures)

  • Structure et contenu d’un programme C ;
  • Fonction, prototype, fichier en-tête, directive au pré-processeur ;
  • Similitude avec Java des opérateurs et structures de contrôle ;
  • Types primitifs, énumération, structure et union ;
  • Pointeurs, tableaux, chaînes de caractères ;
  • Gestion dynamique de la mémoire ;
  • Fonctions de la bibliothèque standard.

Le langage C++ (+-33 heures)

  • Historique ;
  • C++, un meilleur C : commentaire, emplacement des déclarations de variables, prototype de fonction, nullptr, void et const, référence, fonction inline, new et delete, cin et cout ;
  • C++ : un langage orienté objet : classe, attribut, méthode, static, constructeur et destructeur, copie et déplacement, héritage, polymorphisme, surdéfinition et surcharge de méthode, classe abstraite, amitié ;
  • C++ : une multitude d’apports autres que les objets : argument par défaut, surcharge de fonction et d’opérateur, gestion des exceptions, espace de nom, transtypage, programmation générique, expressions lambda, inférence de type ;
  • La bibliothèque standard : STL (vector, deque, list, set, map, stack, unordered_set, unordered_map ; iterateur ; algorithmes), flux et string.

Remarque :## tous les chapitres sont illustrés par des exemples de programme.

Bibliographie

  • Peter Prinz et Tony Crawford, C in a Nutshell, 2nd Edition, O’Reilly Media (2015)
  • Marc Gregoire, Professional C++, 3rd Edition, Wiley (2014)

Description générale du cours

Réalisation de travaux dirigés en langage C puis en C++

Matières de base utilisées

Néant.

Corequis

Néant.

Matières de base utilisées

Cours théorique de C / C++ (bloc 2)

Cours de Techniques et logique de programmation (blocs 1 et 2)

Objectifs

Assimilation des notions théoriques vues aux cours de langage C / C++ et au cours de techniques et logique de programmation.

Apprentissage de bonnes pratiques de programmation en C et en C++.

Acquis d’apprentissage

Acquis (mesurables) d’apprentissage.

C / C++

  • Utiliser avantageusement l’environnement de développement intégré choisi pour les laboratoires (Qt Creator).
  • Documenter son code à l’aide de Doxygen.
  • Lire et tirer profit du contenu en français ou en anglais de sites de références tels cppreference.com ou cplusplus.com.

C

  • Écrire du code C11 mettant en oeuvre les notions étudiées au cours théorique.
  • Utiliser la bibliothèque standard C11.
  • Utiliser des bibliothèques non standard de fonctions, fournies par les enseignants.

C++

  • Écrire du code C++17 mettant en oeuvre les notions étudiées au cours théorique.
  • Utiliser la bibliothèque standard C++17.
  • Utiliser des bibliothèques non standard de fonctions, fournies par les enseignants.

Ce qui est réellement acquis de ces apprentissages idéaux étant bien entendu mesurable à l’examen.

Plan du cours

Travaux dirigés

C console : septembre, octobre ; C++ console : octobre, novembre, décembre.

Bibliographie

  • Brian W. Kernighan et Dennis M. Ritchie, Le langage C : Norme ANSI, 2e édition, Dunod (2004)
  • Tony Crawford et Peter Prinz, C In a Nutshell, O’Reilly (2006)
  • Bjarn Stroustrup, Le Langage C++, Pearson (2003)
  • Ray Lischner, C++ In a Nutshell, O’Reilly (2003)