Introduction to C/C++
Introduction to C++ (and C)
Responsables :
Cédric ZANNI, Maitre de Conférences, Cedric.Zanni@univ-lorraine.fr
Durée du module : 36 heures
Crédits ECTS : 4
Objectifs pédagogiques
“This course provides a fastpaced introduction to the C and C++ programming languages.
You will learn the required background knowledge, including memory management, pointers,
preprocessor macros, object oriented programming, and how to find bugs when you
inevitably use any of those incorrectly.” (MIT 6.S096)
Séances :
Introduction to the language C++ : computer architecture, elementary types, control flow. Slides, TD, tooling information.
Trivial structures and references. Slides, TD. (more on Compilation pipeline [S096, MIT]).
Classes and RAII. Slides, TD, exemple classe .
TBA. Slides. TD. TD Polymorphisme.
Exception safety. Slides, Project
Multi-threading. Slides, Project
Project / Evaluation
Sujet de projet : position-based dynamic
Mode d’évaluation :
Contrôle continu, projet et examen final.
Contenu - Programme
Mots clefs :
langage machine, langage de programmation, microprocesseur, compilation, structures de donnée, gestion de la mémoire, outils de build
Outils utilisés
QtCreator sur machine personnelle (anciennement GCC, Gvim, Emacs, VisualStudio)
Descriptif :
Comprendre de manière abstraite le mécanisme d’exécution des programmes
Être capable de comprendre le fonctionnement d’un programme
Être capable d’écrire ou de modifier un programme écrit en C ou C++
Fonctionnement d’un ordinateur
architecture
rappels sur l'exécution d'un programme
processeur, langage machine
langage d’assemblage, assembleur
langage haut niveau, compilation
notion de machine abstraite
mémoire, donnée, programme
introduction à Unix
Compilation pipeline
préprocesseur
compilation, règles de déclaration, règles de typage
compilation séparée, linkage
conception modulaire de programmes
outils de build (makefile)
Syntaxe et sémantique de core C
types de données élémentaires
codage de l’information (int, short, char)
structures de contrôle
notion de tableau
notion de chaine
Organisation de la mémoire
notion d’adresse
déréférencement
pile et tas
allocation dynamique
Structures de données avancées
type record
allocation dynamique et gestion de la mémoire
Introduction à C++
encapsulation des données, classes, espace de noms
gestion de la mémoire, constructeurs et destructeurs
Programmation objet
héritage, polymorphisme
liaison dynamique
entrées/sorties
Utilisation avancées
standard template library
pointeurs de fonctions
exceptions
standardisation
Applications
Supports de cours :
CHeaderFileGuidelines.pdf (David Kieras, University of Michigan)
Compléments de cours :
vous devez lire ces livres si vous voulez progresser
Le langage C, Norme ANSI, Brian W. Kernighan, Denis M. Ritchie, Dunnod (une référence)
C: A Reference Manual, Fifth Edition, Samuel P. Harbison, Guy L. Steele Jr., Pearson, 2002 (mon préféré)
Effective C++, Third Edition, Scott Meyers, Addison Wesley, 2005 (excellent mais il faut déjà connaitre un peu le langage)
C++ Primer, Fifth Edition, Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo, Addison Wesley, 2013 (un gros pavé pas facile à avaler)
Autres cours introductifs :
un article intéressant pour les "vieux" programmeurs : How to C in 2016