Introduction à C++ (et C)


Crédits : 4 ECTS

Durée : 36 heures

Semestre : S7 + S9

Responsable(s) :

Cédric ZANNI, Maitre de conférence,  cedric.zanni@univ-lorraine.fr

Mots clés : langage de programmation, compilation, structures de donnée, gestion de la mémoire, outils de build


Pré requis : une bonne maîtrise des notions des cours d’informatique de première année

Ce cours n’est pas ouvert aux élèves du département INFO.

Objectif général :

“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) 

Ce cours

Programmes et contenus :

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
    • langage haut niveau, compilation
    • 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

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, constructeurs et destructeurs
    • 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

Evaluation :

  • projet en bînomes (sujet au choix devant être validé par les enseignants)
  • évaluation sur machine lors de la dernière séance

Compétences : 

Niveaux

Description et verbes opérationnels

Connaître 

la syntaxe et la sémantique des constructions du langage C et C++
les règles de typage du langage
le rôle des différents outils de développement

Comprendre 

le fonctionnement de base d’un ordinateur et les différents niveaux de langages
le rôle d’un préprocesseur et d’un compilateur
les mécanismes de compilation modulaire
la notion de pointeur et les mécanismes de gestion de la mémoire
les principes de base de la programmation objet

Appliquer 

savoir mettre en place une architecture de base pour développer un logiciel
savoir compiler et exécuter un logiciel sur une plate­forme spécifique

Analyser 

savoir choisir une structure de donnée adaptée pour résoudre un problème
savoir détecter les erreurs de programmation

Synthétiser

savoir définir une structure de donnée et les différentes fonctions associées
savoir exprimer un algorithme en langage C et C++

Évaluer

savoir évaluer la qualité d’un code écrit pour y déceler des améliorations possibles

Évaluations :

  • Test écrit
  • Contrôle continu
  • Oral, soutenance
  • Projet
  • Rapport