Objectifs
✔ Maîtriser les concepts avancés du langage C, tels que la gestion de la mémoire dynamique, les structures de données complexes et la programmation orientée objet.
✔ Développer des compétences en programmation réseau, multithread et conception de bibliothèques.
✔ Acquérir des connaissances dans des domaines spécifiques d'application du langage C, comme la programmation embarquée ou le traitement d'images.
Prérequis
✔ Maîtrise des bases du langage C (syntaxe, types de données, structures de contrôle, fonctions)
✔ Expérience pratique de la programmation en C
✔ Connaissance des concepts de base de la programmation orientée objet (POO)
Contenu du programme
Rappel de base de langage C
- Architecture d’un programme
- Types de données
- Structures de contrôle
- Fonctions et visibilité
Structures en langage C
- Présentation, intérêt des structures
- Syntaxe de définition, de déclaration et d'accès aux éléments des structures
- Structures avancées, unions, tableaux, champs binaires
La récursivité
- Définition de la récursivité
- Fonctions récursives
- Structure de données récursives : listes, arbres
- Algorithmes intrinsèques sur les structures de données récursives (insertion, retrait...)
Les outils de développement pour le langage C
- Recherche d'erreur dans les programmes : le debugger
- Outils de gestion de dépendances : make et touch
- Analyse dynamique de programmes : le profiler
Allocation dynamique de la mémoire
- Principe d’allocation mémoire
- Syntaxe de malloc et free
- Les pièges classiques
- Travaux pratiques de mise en oeuvre
- Fonctions avancées (calloc et realloc) : intérêt et applications
Bibliothèques
- Méthode, syntaxe
- Les bibliothèques standards : libc.a, libm.a, libcur.a
- Fonctions disponibles dans la bibliothèque mathématique