Formation Programmation en C

4.9 sur 5 étoiles

5 étoiles
90%
4 étoiles
9%
3 étoiles
0%
2 étoiles
0%
1 étoile
0%
Voir les 11 avis
(11 avis)
Durée 5 jours
Niveau Intermédiaire
Classe à distance
Possible

Vous pouvez suivre cette formation en direct depuis votre domicile ou votre lieu de travail. Plus d'informations sur notre solution de classe à distance...

Référence DPRC
Éligible CPF Non

Inventé au début des années 1970 pour réécrire UNIX, le langage C est un langage de programmation toujours beaucoup utilisé aujourd'hui. On peut le considérer comme un langage de haut niveau "classique" car il en propose tous les mécanismes standards (boucle, test, fonctions, types de base, etc.) et à ce titre il est plutôt facile à apprendre.

Le langage possède également des caractéristiques bas-niveau car il permet une gestion fine de la mémoire et des variables (au bit près), issue de ses origines, et qui lui confère une place de choix dans le domaine de l'embarqué (système dédié, IoT, drivers, etc.).

Par bien des aspects il est également extrêmement pédagogique sur les bases de fonctionnement d'une application en mémoire (cycle de vie et localisation des variables en pile mémoire, code retour des fonctions, etc.) et donne donc implicitement de très bonnes bases en sécurité du développement (débordement de pile, injection de caractères, etc.). De plus, comme son nom l’indique, il est incontournable pour apprendre le C++ dont il constitue la base syntaxique en dehors de la dimension objet.

Objectif opérationnel :

Savoir utiliser le langage C afin d’écrire des programmes robustes, portables et conformes à la norme ANSI.

Objectifs pédagogiques :

Cette formation Langage C vous apporte les connaissances et compétences nécessaires pour :

  • Comprendre le fonctionnement de la programmation structurée à travers l’exemple du langage C
  • Maîtriser la syntaxe du Langage C et les principales fonctions du langage C
  • Savoir écrire un programme C modulaire, portable (ANSI) et facile à maintenir
  • Maîtriser les mécanismes de gestion de la mémoire lors de la compilation et de l’exécution (classes d’allocation, pile, pointeurs, sécurité)

Public :

Ce cours Langage C s'adresse aux développeurs, ingénieurs, chefs projet de projet qui souhaitent acquérir une formation complète et opérationnelle sur le langage C ou les managers qui souhaitent acquérir une première expérience pratique du langage afin d’être plus pertinent sur les facilités et difficultés du langage pour un management au quotidien plus pertinent de leurs équipes.

Cette formation s’adresse aussi aux développeurs, ingénieurs et informaticiens cherchant à acquérir une expérience pratique du langage C en vue de programmer des applications robustes, portables (ANSI) et performantes.

Prérequis :

Pour suivre cette formation Langage C, il est nécessaire de disposer d’une culture minimum en programmation (variables, boucle, tests, fonction avec passage d’arguments) même si cette formation revient sur ces éléments à travers l’exemple du Langage C.
En effet, sans expérience de base en programmation il est difficile d’intégrer à la fois ces concepts et la syntaxe très riche et parfois complexe du langage C qui mélange les aspects hauts-niveau (structures, boucles, tests, …) mais aussi bas-niveau (opérateurs unaires, pointeurs, adressage mémoire, etc.).
Cette culture minimum dans un autre langage, quel qu’il soit (VBA, PHP, Javascript, C++, C#, Java…), vous permettra également d’aborder les travaux pratiques avec plus de facilité si vous recherchez l’aspect opérationnel dans cette formation.

J1

Première approche pratique

Organisation d'un programme structuré en CVue générale d’un programme C basique (main)
Composants de base du langage
Types et constantes de base
Stockage et passage de paramètres
Variables globales et locales
Arguments de fonction : passage par valeur
Code de retour des fonctions 
Entrées/sorties formatées (scanf, printf)
Utilisation élémentaire de la chaîne de production (compilation, build)
Travaux pratiques (à titre indicatif)Objectifs : Prendre en main son environnement et écrire un premier programme simple qui permet d’introduire la syntaxe de base mais aussi un premier contact avec les aspects mémoires nécessaire pour bien comprendre les pointeurs par la suite.
Description : On affiche la taille des différents types de données standards en mémoire (int, char, float, …) en utilisant les éléments fondamentaux du langage (compilation, main, printf, …) autour de problématique mémoire (sizeof, types de données).

Variables, adresses, pointeurs

Schéma générale de la mémoire (différentes zones)
Le rôle du compilateur par rapport à la mémoire
Vie de la mémoire durant l’exécution d’un programme C (pile, tas, zone d’allocation statique, appel fonction, etc.)
Opérateurs d'adressage (&)
Passage d'arguments par adresse
L’exemple de scanf … et ses pièges
Ne pas confondre pointeur, adresse et entier
Travaux pratiques (à titre indicatif)Objectifs : Comprendre le fonctionnement de l’allocation mémoire des variables dans la pile (locales, arguments) et le mécanisme d’adressage pour introduire les pointeurs et la problématique du passage par valeur (variable non modifiée) 
Description : Écriture d’une fonction permutant deux variables
J2

Mécanismes et syntaxe du langage

Opérateurs, expressions numériques et opérations sur les nombresOpérateurs arithmétiques
Mécanismes d'évaluation des expressions
Post et pré-incrémentation de décrémentation
Précédence et associativité des opérateurs
Opérateurs de base et expressions logiquesAffectations
Boucles (for, while)
Mécanismes de fonctionnement des expressions logiques
Opérateurs de comparaison
Gestion du flux d'entrée/sortie standard
Prototype de filtre
Instruction if
Opérateurs logiques
Compléments sur les types de donnéesMaîtrise des types complexes
Implémentation des types en mémoire selon les normes 
Conversion explicite de types : casting
Les types numériques composés.
Règle de conversion dans les expressions mixtes
Initialisation des variables
Formats d'entrée/sortie associés aux types numériques
Travaux pratiques (à titre indicatif)Objectifs : Compléter sa maîtrise de la syntaxe. Maîtriser les règles d’analyse syntaxique en C, les opérateurs et les conversions de types implicites et explicites (cast). 
Description : Écriture de fonctions de contrôles et de comparaisons de variables. 
Opérations numériques sur des variables de différents types (moyenne, somme, etc.).
Compléments sur les opérateursOpérateurs binaires (ET, OU, OU exclusif, complément à 1)
Décalages binaires
Opérateur ternaire d'alternative
L'instruction switch
L'instruction do while
Instructions associées aux boucles
Travaux pratiques (à titre indicatif)Objectifs : Savoir manipuler les opérateurs bas niveau. Traduire les normes de façon concrète pour le développeur en insistant sur les différences d’implémentation entre les différents types (int, float, etc.) et les problèmes de bug ou de portabilité qui peuvent en découler
Description : Visualisation détaillée du format d’un float 32 bits en mémoire selon la norme IEEE754 en affichant sa structure binaire (010100010….) grâce aux opérateurs unaires combinés dans des fonctions. Écriture d’une fonction de test de la valeur du bit x d’une variable y. Écriture de fonctions de calcul puissantes s’appuyant sur les propriétés de décalage binaire.
J3

Tableaux, pointeurs et chaîne de caractères

Compléments sur les pointeursDifférences entre pointeur et adresse d’une variable
Manipulations de différents types de pointeur (int*, char*, float*, …)
A quoi correspond void* ?
Les pièges (oubli du &, écriture dans une zone non allouée, etc.)
L’allocation dynamique de mémoire (malloc)
Les pointeurs vers des structures de données 
Arithmétiques sur les pointeurs
Tableaux et chaînes de caractèresDéfinition et utilisation classique des tableaux
Équivalences pointeurs/tableaux
Chaînes de caractères
Bien comprendre le sens et les différences des symboles comme ‘a’, ʺaʺ’, ’\0’, 0, 1, ‘1’, 
Initialisation des tableaux
Exemples de manipulation de chaînes de caractères
Travaux pratiques (à titre indicatif)Objectifs : Comprendre l’implémentation des tableaux en mémoire et leur interprétation par le compilateur.
Savoir manipuler les tableaux et maîtriser la gestion des chaînes de caractère (char*)
Description : (RE)écriture des fonctions standards de manipulations des chaînes de caractères (strcpy, strlen, strcmp, strncmp). Fonction permettant de rendre « propre » une chaîne de caractères en terme de contenu (liste de caractères interdits) et de longueur maximale. Fonction générant des mots de passe aléatoire à partir de notre propre dictionnaire de symboles (tableau de caractères), un niveau de complexité et une taille passée en argument.

Les structures

Philosophie
Accès aux éléments d’une structure
Passage d’une structure en argument de fonction
Adresse, mémoire, pointeurs et structures
Les structures emboîtées
Les structures anonymes (depuis C11)
Les champs de bits
Quand utiliser des unions ?
Liste de valeurs « fermées » et « numérisable » (enum)
La libération de la mémoire
Introduction aux structures chaînées (listes, arbres, …)
Comparaison des différentes structures de données (tableau de structures, tableau de pointeurs, liste chaînée) en terme d’occupation mémoire, de performances et de complexité
Travaux pratiques (à titre indicatif)Objectifs : Maîtriser l’utilisation des structures de données (initialisation, accès aux éléments, passage en argument à une fonction, etc.)
Description : Création d’une structure PERSONNE, écriture de fonctions de saisie et d’affichage mono personne. Création d’un tableau de PERSONNE et écriture de nouvelles fonctions pour manipuler ce type de tableau en réutilisant les fonctions précédentes. Mise en œuvre d’une liste chaînée de PERSONNE.
Fonction de cryptage (et décryptage) utilisant des clefs stockées dans des structures.
J4

Industrialiser ses développements

Compilation séparée, classe d'allocationMécanisme de fonctionnement de la chaîne de production
Utilisation de bibliothèque de sources
Différents cas de figure de la compilation séparée
Notion d'objet externe
Cas des données globales et statiques
Cas des données locales
Règle de visibilité
Cas des fonctions
Compléments sur les fonctions et les initialisations
Travaux pratiques (à titre indicatif)Objectifs : Architecturer son code en modules et comprendre le rôle des fichiers d’en tête (.h)
Description : Création d’un module regroupant les fonctions de manipulations des chaînes de caractères du TP déjà effectué (chaînes.h, chaînes.c) et compilations séparées des différents modules
Le macro processeur, la portabilitéVue générale des directives de compilation 
Les constantes symboliques (#define)
Intérêts et limites des fonctions macros
Les inclusions de fichiers (#include)
La compilation conditionnelle (#ifdef, #ifndef, etc.)
Construction de surtypes : typedef
Travaux pratiques (à titre indicatif)Objectifs : Utiliser les possibilités du précompilateur pour faciliter la maintenance de son code et sa portabilité
Description : Parcours commenté des en-têtes standard de la bibliothèque (stdio.h, stdlib.h, etc.). Ecriture de ses propres fichiers d’en-têtes pour se protéger de l’inclusion multiple, définir ses pseudos constantes et ses prototypes de fonctions.
Outils associés à la chaîne de productionPrincipes de la gestion de version avec Git
Options de compilation
Gérer les briques logicielles et les dépendances (makefile)
Construire une application avec Gradle (build)
Travaux pratiques (à titre indicatif)Objectifs : Comprendre en détail les mécanismes de compilation, build et automatisation dans la création d’une application ou d’une bibliothèque C.
Description : Mise en œuvre de l’automatisation avec Gradle et/ou makefile en fonction de l’environnement souhaité par les participants.
J5

Les entrées /sorties 

Principes généraux des I/O
Ouverture et fermeture d’un fichier ou d’un périphérique
Écriture et lecture formatée (exemple avec fscanf et fprintf)
Écriture et lecture d’un caractère (getc)
Écriture et lecture d’une chaîne de caractères
Écriture et lecture d’un format binaire (fread, fwrite)
Accès direct à un endroit du fichier
Conseils sur la bufferisation des I/O (performances)
Travaux pratiques (à titre indicatif)Objectifs : Maîtriser les différents modes d’accès aux données en lecture et en écriture (caractère, paragraphe, binaire) ainsi que les possibilités de formatage (%s, %c, etc.).
Description : Chargement d’un fichier texte en mémoire, traitement, sauvegarde, rechargement (pour tester).
Chargement d’un fichier texte pour remplir un tableau de pointeurs (char*) pour disposer d’une structure souple de manipulation de texte (tableau de paragraphes). Passage d’arguments sur la ligne de commande (nom du fichier à charger). Manipulation de flux binaire sous la forme d’enregistrement d’un tableau de mesures (structures de l’un des TP précédents) dans un fichier, chargement de ce fichier dans un autre tableau, tri, puis sauvegarde pour proposer un cycle complet d’un flux : mémoire / traitement / disque. Manipulations de flux de données formatées.

Aspect avancés du langage C

Quels traitements utilisent les tableaux multidimensionnels (matrices) ?
Tableau de pointeurs et structures dérivées
Passage d’arguments en ligne de commandes (argc, argv)
Intérêt des pointeurs de fonctions
Fonctions à nombre variable d’arguments
Synthèse des différences avec le C++ (au-delà de la dimension objet)
Travaux pratiques (à titre indicatif)Objectifs : Comprendre l’intérêt de passer une fonction en argument à une autre fonction en mettant en œuvre les pointeurs de fonction
Description : fonction de tri d’un tableau de structures de PERSONNE avec passage en argument de la fonction de tri

Les travaux pratiques sont conçus dans une approche pédagogique qui permet de valider les acquis et pas seulement de disposer d’exemples concrets de mise en oeuvre. Les concepts importants sont donc toujours au coeur du TP et la trame de ces derniers fait office à la fois de synthèse réutilisable pour vos propres développements futurs mais aussi de révision lorsque vous vous replongerez dedans.

Les principales bibliothèques standards du langage C seront utilisées dans les TP même si leur nom n’apparaît pas explicitement dans le programme (fscanf/fprintf et leurs variantes, strcpy, strlen, strcat, strcmp, malloc, free, fread, fwrite, rand, sqrt, etc.)

Des machines sous Linux ou Windows seront mises à la disposition des participants de manière à réaliser les nombreux travaux pratiques prévus dans cette formation. Si vous avez des préférences sur l’environnement de développement (Windows/Linux, IDE, outils de build, etc.) n’hésitez pas à nous le préciser avant la formation.

Date de mise à jour du programme : 21/03/2023

Dates et lieux

1
2
Du 27 au 31 mai 2024
Lieu
Distanciel
Durée
5 jrs
2720 € HT
Du 27 au 31 mai 2024
Lieu
Paris
Durée
5 jrs
2720 € HT
Du 17 au 21 juin 2024
Lieu
Distanciel
Durée
5 jrs
2720 € HT
Du 17 au 21 juin 2024
Lieu
Paris
Durée
5 jrs
2720 € HT
Du 29 juillet au 02 août 2024
Lieu
Distanciel
Durée
5 jrs
2720 € HT
Du 29 juillet au 02 août 2024
Lieu
Paris
Durée
5 jrs
2720 € HT
Du 23 au 27 septembre 2024
Lieu
Distanciel
Durée
5 jrs
2720 € HT
Du 23 au 27 septembre 2024
Lieu
Paris
Durée
5 jrs
2720 € HT
Du 30 septembre au 04 octobre 2024
Lieu
Distanciel
Durée
5 jrs
2720 € HT
Du 30 septembre au 04 octobre 2024
Lieu
Paris
Durée
5 jrs
2720 € HT
1
2

Logo partenaire action collective de l'OPCO Atlas Votre formation Langage C prise en charge jusqu'à 100% des coûts pédagogiques ! *

Depuis 2011, Atlas (ex-Fafiec) a sélectionné PLB Consultant pour vous proposer les meilleures formations autour du développement objet avec .NET, Java et C++.
-  Sessions inter-entreprise sur Paris et Lille.
-  Sessions intra-entreprise sur toute la France.

* jusqu'à 100% des coûts pédagogiques selon votre branche d'activité dans la limite des fonds mutualisés dédiés aux actions collectives et en application des critères de prise en charge en vigueur (cf conditions détaillées sur le site d'Atlas)

Avis des participants à la formation Programmation en C

Note moyenne de 4.9/5(11)

Les avis figurant ci-dessous sont issus des fiches d’évaluation que remplissent les participants à la fin de la formation. Ils sont ensuite publiés automatiquement si les personnes ont explicitement accepté que nous les diffusions.

PC
5/5

Mon avis sur le formateur :

"Denis a un dévouement inébranlable pour enseigner le sujet du cours avec passion, il est tres inspirant car il montre un special intérêt pour transmettre les bonnes pratiques et éviter faire de code inefficace. Ça montre la qualité de son expertise. J'ai apprécié beaucoup la façon comme lui a structuré les exercises et sa disponibilité pour trouver les erreurs."

Ce que j'ai le plus apprécié :

"La structuration de la formation est 100% practique, l'enchainement des exercises est tres coherente et force l'apprentissage."

Ce que j'ai le moins apprécié :

"Quand l'utilisateur a un Mac est imposible d'utiliser la machine PLB, car l'utilisateur est obligé de faire copier/coller et les commandes du clavier c'est different. Donc après la 1ere journée j'ai configurée mon Mac pour éviter utiliser la machine PLB. "

LD
5/5

Mon avis sur le contenu du stage :

"Un bon aperçu des bases, voir plus"

Mon avis sur le formateur :

"Excellent formateur, très bonnes explications, mais un peu plus de temps devrait être alloué à la réalisation des exercices avant correction"

Ce que j'ai le plus apprécié :

"ST très rapide et efficace"

Ce que j'ai le moins apprécié :

"Le fait de travailler directement sur un invite de commande présent sur un pc virtuel rendait l'expérience de code un peu compliqué."

AUGRAS Gwénael
5/5

Mon avis sur le contenu du stage :

"Un cours adaptés pour les néophytes. "

Mon avis sur le formateur :

"Le formateur est très compétent et ça se ressent dans sa pédagogie. Il prend le temps de répondre à chaque question et chaque remarque de la manière la plus claire qui lui est permis."

Ce que j'ai le plus apprécié :

"Un très petit effectif m'a permis de me sentir investi dans la formation. Au top."

Julien
5/5

Mon avis sur le contenu du stage :

"Il manque quelques notions sur le support de cours tel que l'explication de la notation pt->var au lieu de *pt.var"

Mon avis sur le formateur :

"Excellent formateur qui s'adapte au niveau de ses élèves et qui est très disponible."

Ce que j'ai le plus apprécié :

"Ordinateur largement suffisant pour l'application(Démarre très vite, ne rame pas), espace détente très bien fourni."

MG
4/5

Mon avis sur le contenu du stage :

"La machine virtuelle à distance est très problématique notamment pour la rédaction de code utilisant les caractères spéciaux (impossible à distance) "

Ce que j'ai le plus apprécié :

"Professeur toujours disponible et ouvert, connaissance et professionnalisme au rdv "

Ce que j'ai le moins apprécié :

"La machine virtuelle / Classe virtuelle"

BD
5/5

Mon avis sur le contenu du stage :

"Accompagnement dynamique, dans le sens où l'animateur a mis à jour les supports (y compris exercices) pour les adapter à notre progrès."

Mon avis sur le formateur :

"RAS"

Ce que j'ai le plus apprécié :

"Petit groupe -> meilleur accompagnement. Une classe plus grande aurait rencontré des difficultés je crois."

KP
5/5

Mon avis sur le formateur :

"Excellentissime ! Le formateur possède une culture scientifique et technique très vaste."

Ce que j'ai le plus apprécié :

"La proximité des locaux, la disposition de la salle, l'aménagement de la salle de pause, la mise à disposition du café et des confiseries."

DOYEN Florian
5/5

Mon avis sur le formateur :

"très pédagogue"

Mon avis sur la salle de formation :

"Formation en visio-conférence sans acroc"

Ce que j'ai le plus apprécié :

"formation complète"

SM
5/5

Mon avis sur le formateur :

"Excellent animateur avec une maîtrise totale du thème, et une très bonne pédagogie. L'animateur a eu la gentillesse de répondre à certaines questions (sur notre demande) assez/très avancées. "

GP
5/5
Mon avis sur le contenu du stage: Il reste à digérer ces informations. C'est normal Mon avis sur le formateur: Très bon animateur, qui fait partager son expérience
BA
5/5

Ce que j'ai le plus apprécié :

"Session de travail individuelle "


Formations Informatique
et Management
en ligne à ce jour

+
Stagiaires dans nos salles
de cours sur
l'année

%
De participants satisfaits
ou très satisfaits de nos
formations


Formateurs experts
validés par
PLB