Introduction to C/C++

Introduction to C/C++

Responsables :

Pierre-Etienne MOREAU, Professeur, Pierre-Etienne.Moreau@univ-lorraine.fr

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 fast­paced 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)

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

    • Exemples issus de problématiques liées aux départements autres que I&S

    • Analyse d'image avec OpenCV

    • Programmation parallèle avec MPI

Supports de cours :

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 :

    • CS197U, UMassAmherst, A Hands-on Introduction to UNIX

    • EECS381, University of Michigan (matériel de très bonne qualité)

    • S087, MIT (très détaillé mais peu pédagogique)

    • S088, MIT (assez classique)

    • S096, MIT (premier cours intéressant, ensuite cela devient classique)

    • 6.S096, 2013, MIT

    • 6.S096, 2014, MIT

  • un article intéressant pour les "vieux" programmeurs : How to C in 2016

Séances :

  1. (15/09/2020) - Fonctionnement d'un ordinateur, introduction au langage C. Types de données élémentaires. TD.

  2. (29/09/2020) - Compilation pipeline [S096, MIT]. TD. Tableaux, notion de chaines. TD.

  3. (06/10/2020) - Notion d'adresse : allocation dynamique des tableaux et de chaines. TD.

  4. (13/10/2020) - Types de données structurées. TD

  5. (20/10/2020) - Projet

  6. (10/11/2020) - Classe C++. TD. exemple classe

  7. (17/11/2020) - Introduction à C++ [S088, MIT]. TD Introduction C++.

  8. (01/12/2020) - Conception objets, héritage, polymorphism [S088, MIT]. TD Polymorphisme.

  9. (08/12/2020) - Standard Template Library. Cours. TD. exemple.

  10. (15/12/2020) - Interface graphique. TD(Qt).

  11. (05/01/2021) - Projet

  12. (12/01/2021) - Projet

Mode d’évaluation :

Contrôle continu, projet et examen final.