CPP-L - C/C++ (Cours + labo)
Appartient à l'UE Développement III
Personnes enseignantes
- Romain Absil (ABS)
- Jonas Beleho (BEJ)
- Marcelo Burda (MBR)
- Nicolas Vansteenkiste (NVS)
- Pierre Bettens (PBT)
- Pierre Hauweele (PHA)
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)