Langage C – Fondamentaux de la programmation Mixte : présentiel / à distance
Dernière mise à jour : 27/08/2026
Description
Module 1 – Environnement de développement et chaîne de compilation C
- Panorama des normes du langage : C89, C99, C11, C17, C23 ; norme de référence utilisée en formation (C17) et principales évolutions apportées par C23
- Compilateurs GCC et Clang, phases de la compilation (préprocesseur, compilation, assemblage, édition de liens)
- Structure d'un programme C : fichier source, fonction main, en-têtes
Démonstration : compilation en ligne de commande avec les options -std=c17 -Wall -Wextra -Wpedantic -O0 -g, lecture des messages du compilateur, premier pas à pas dans un débogueur (gdb)
Exemples de travaux pratiques :
- Écriture et compilation d'un premier programme C
- Correction d'un programme à partir des avertissements du compilateur
Module 2 – Types de données et structuration de l'information
- Variables de types prédéfinis et types à largeur fixe (stdint.h)
- Tableaux, constantes et énumérations
- Structures (struct), unions et typedef
Exemples de travaux pratiques :
- Exercice de déclaration de variables de différents types (simples, tableaux)
- Lancement du projet fil rouge : modélisation d'un contact (structure regroupant nom, prénom, téléphone, e-mail) et création d'un tableau statique de contacts
Module 3 – Opérateurs et structures de contrôle
- Opérateurs arithmétiques, relationnels, logiques et bit à bit ; affectations composées
- Conversions et promotions de types
- Structures conditionnelles (if/else, switch) et boucles (for, while, do...while)
- Directives de préprocesseur utiles en pratique : #define, compilation conditionnelle, include guards
Atelier pratique : lecture et refactoring d'un programme fourni comportant des structures de contrôle imbriquées
Exemples de travaux pratiques :
- Ajout au projet fil rouge d'un menu interactif (saisir, afficher, quitter) permettant de peupler et consulter le tableau de contacts
- Validation du format d'un numéro de téléphone ou d'une adresse e-mail saisis par l'utilisateur
Module 4 – Fonctions et organisation d'un projet C
- Déclaration, définition et appel de fonctions ; prototypes
- Portée des variables (locale, globale, statique) et passage de paramètres par valeur
- Découpage d'un programme en plusieurs fichiers sources et fichiers d'en-tête
- Compilation séparée et introduction au Makefile
Cas concret : refactorisation du projet fil rouge en fonctions dédiées (ajout, recherche, affichage d'un contact)
Exemples de travaux pratiques :
- Répartition du projet fil rouge en plusieurs fichiers sources et compilation à l'aide d'un Makefile
Module 5 – Chaînes de caractères et pointeurs
- Manipulation des chaînes de caractères : strlen, strcmp, strncpy, strncat, snprintf ; fonctions de conversion (strtol, strtod) ; fonctions à proscrire (gets, strcpy, strcat, sprintf) et raisons de leur mise à l'écart
- Notion de pointeur : adresse et valeur, arithmétique de pointeurs, lien entre pointeurs et tableaux, pointeurs de fonctions
Démonstration : observation en débogueur des adresses mémoire et du contenu des pointeurs
Exemples de travaux pratiques :
- Sécurisation de la saisie et de la comparaison des champs texte (nom, e-mail) du projet fil rouge à l'aide des fonctions de la bibliothèque standard
- Parcours du tableau de contacts à l'aide de pointeurs
Module 6 – Gestion dynamique de la mémoire et manipulation de fichiers
- Allocation dynamique : malloc, calloc, realloc, free ; bonnes pratiques (vérification des retours, mise à NULL après libération, prévention des fuites et des doubles libérations)
- Ouverture, lecture, écriture et fermeture de fichiers ; gestion des erreurs d'entrée/sortie
Démonstration : détection, à l'aide de Valgrind ou d'AddressSanitizer, d'une fuite mémoire introduite volontairement dans une variante du projet fil rouge
Exemples de travaux pratiques :
- Migration du tableau statique de contacts vers une allocation dynamique (realloc) permettant un annuaire de taille variable
- Sauvegarde et rechargement de l'annuaire de contacts dans un fichier texte
Module 7 – Structure de données chaînée : projet de synthèse
- Principe de la liste chaînée simple : ajout, parcours, suppression, libération complète de la structure
Mise en situation professionnelle : migration de l'annuaire de contacts vers une liste chaînée pour une gestion dynamique de l'ajout et de la suppression ; revue de code collective à partir d'une grille de bonnes pratiques (gestion mémoire, robustesse, lisibilité)
Exemple de travaux pratiques :
- Projet final : finalisation de l'annuaire de contacts sous forme de liste chaînée (ajout, affichage, recherche, suppression, libération complète de la mémoire)
Objectifs de la formation
À l'issue de la formation, le stagiaire sera capable de :
- Mettre en œuvre une chaîne de compilation C (préprocesseur, compilation, édition de liens) avec GCC ou Clang
- Écrire des programmes C structurés en respectant la syntaxe et les conventions du langage
- Utiliser les opérateurs, les structures conditionnelles et les boucles pour construire des algorithmes
- Déclarer, appeler et organiser des fonctions au sein d'un projet réparti sur plusieurs fichiers sources
- Manipuler les chaînes de caractères et les structures de données du C de façon sécurisée
- Utiliser les pointeurs et gérer dynamiquement la mémoire en appliquant les bonnes pratiques de prévention des erreurs mémoire
- Lire et écrire des données dans des fichiers, et mettre en œuvre une structure de données chaînée simple
Public visé
Cette formation s'adresse aux développeurs et informaticiens qui souhaitent acquérir les bases du langage C, qu'ils découvrent ce langage ou qu'ils aient besoin de consolider des connaissances acquises de façon empirique. Elle convient notamment :
- aux développeurs venant d'un autre langage (Java, Python, C#, PHP, etc.) amenés à évoluer vers le C dans le cadre d'un projet système, embarqué ou industriel
- aux informaticiens devant lire, maintenir ou faire évoluer une base de code C existante
- aux étudiants, alternants ou jeunes diplômés en informatique souhaitant consolider leurs bases avant une prise de poste technique
- aux profils techniques d'administrations, de collectivités ou d'entreprises privées confrontés à des environnements logiciels reposant sur le C (systèmes, automatismes, outillage interne)
Prérequis
- Avoir déjà programmé dans au moins un langage (notion de variable, de boucle, de fonction, de test conditionnel), quel qu'il soit
- Être à l'aise avec l'usage d'un terminal / d'une ligne de commande
- Aucune connaissance préalable du langage C n'est requise