Programmation en C

John Samuel

CPE Lyon

Année: 2026-2027
Courriel: john.samuel@cpe.fr

Creative Commons License

John SAMUEL

  • Enseignant-Chercheur, Conception Logicielle et Big Data, CPE Lyon,
  • Intérêts et thèmes de recherche : Représentation de connaissances, le web sémantique, les services web, l'intégration de données, l'entrepôt de données, les systèmes distribués, système d'information géographique
  • Cours : Programmation en C, Algorithmes en C, Data Mining et Machine Learning, Intelligence Artificielle et Deep Learning, Systèmes d'exploitation et Programmation Concurrente, Langages Web
  • Thèse : Intégration des données issues de services web
  • HDR : Des regards sémantiques pour des villes intelligentes, durables et inclusives

Objectifs (1/2)

Objectifs (2/2)

1.1. Programmation en C: Introduction

Bonjour le Monde!!

/* Fichier: bonjour1.c
* affiche 'Bonjour le Monde!!!' à l'écran.
* auteur: John Samuel
* Ceci est un commentaire sur plusieurs lignes
*/


#include <stdio.h> // headers

// Ceci est un commentaire sur une ligne
int main() {
  printf("Bonjour le Monde !!!");
  return 0;
}

1.1. Programmation en C: Introduction

Structures de contrôle

Les structures de contrôle en C dirigent l'exécution du code en fonction de conditions ou de boucles.

1.1. Programmation en C: Introduction

Gestion de mémoire

Adresses physiques
la conversion des adresses virtuelles en adresses physiques
La conversion des adresses virtuelles en adresses physiques

1.1. Programmation en C: Introduction

La chaine de compilation

Compilation: gcc

La chaîne de compilation en C est le processus séquentiel de transformation du code source en un exécutable.

1.1. Programmation en C: Introduction

File

File

Une file est une structure de données qui gère les éléments de manière FIFO (First-In-First-Out), ce qui signifie que l'élément ajouté en premier est le premier à être retiré.

1.1. Programmation en C: Introduction

Pile

Pile

Une pile est une structure de données qui gère les éléments de manière LIFO (Last-In-First-Out), où le dernier élément ajouté est le premier à être retiré.

1.1. Programmation en C: Introduction

Environnement de programmation:

1.1. Programmation en C: Introduction

Cours:

1.1. Programmation en C: Introduction

Évaluation: vue d'ensemble

Deux épreuves écrites et individuelles, de modalités différentes :

Épreuve Modalité Documents Poids
DS — la théorie sur machine autorisés 60 %
Examen de TP — la pratique sur papier non autorisés 40 %

Dans les deux cas, internet n'est pas autorisé. Les TP ne font plus l'objet d'une soumission : le travail fait en séance est évalué par l'examen écrit de TP.

1.1. Programmation en C: Introduction

Devoir surveillé (DS): la partie théorique — 60 %

Vous recevrez un courrier détaillé avant l'examen

1.1. Programmation en C: Introduction

Examen écrit de TP: la partie pratique — 40 %

Conséquence : cette épreuve se prépare en séance de TP, pas la veille. Ce qui compte est ce que vous savez faire de tête, sans machine et sans documents.

1.1. Programmation en C: Introduction

Comment se préparer aux évaluations ?

Quand ? Que faire ?
Après chaque cours Reformuler les notions essentielles et préparer ses questions.
Pendant les TP Écrire, tester et déboguer le code ; expliquer ses choix.
Après chaque TP Refaire un exercice court sans aide et justifier sa solution.
Pour le DS Réviser les concepts et organiser les documents autorisés.
Pour l'examen de TP S'entraîner sur papier à résoudre de nouveaux exercices, en écrivant, corrigeant et expliquant du code C, sans documents.

Un programme qui fonctionne ne suffit pas : il faut pouvoir expliquer pourquoi.

1.1. Programmation en C: Introduction

Déroulement du cours

Le cours de 2 heures est structuré avec une première session de 55 à 60 minutes, suivie d'une pause de 5 à 10 minutes pour des questions, et conclut ensuite avec une deuxième session de 55 à 60 minutes.

1.1. Programmation en C: Introduction

Travaux pratiques, projet et évaluation

1.1. Programmation en C: Introduction

Examen écrit de TP : compétences attendues

Compétence Exemples de tâches
Écrire du code Concevoir une fonction ou un court programme pour résoudre un nouveau problème à l'aide des notions travaillées en TP.
Compléter ou adapter Compléter une fonction ou modifier un programme pour répondre à un nouveau besoin.
Comprendre et expliquer Déterminer le résultat d'un programme et expliquer son fonctionnement.
Corriger et vérifier Repérer une erreur, proposer une correction et identifier des cas de test.
Justifier ses choix Expliquer le choix des types, des structures de données ou de la gestion mémoire.

1.1. Programmation en C: Introduction

Travaux pratiques

Chaque TP comporte plusieurs exercices. Chaque exercice est accompagné d'une indication de niveau de difficulté. Ces exercices permettent de travailler les notions et les méthodes à mobiliser pour résoudre de nouveaux exercices lors de l'examen écrit de TP :

1.1. Programmation en C: Introduction

Travaux pratiques et Projet

La complexité des TP augmente progressivement après chaque séance, ce qui peut nécessiter plus de temps pour compléter tous les exercices.

1.1. Programmation en C: Introduction

Travaux pratiques: traces de travail

  1. Les TP ne sont pas tous à soumettre, mais il est recommandé de conserver une trace personnelle du travail réalisé.
  2. Votre dossier de travail peut comporter les éléments suivants :
    • Un fichier README.md contenant vos notes, erreurs rencontrées et corrections.
    • Un fichier CONTRIBUTORS.md listant les noms et prénoms des contributeurs.
    • Un répertoire src/ contenant les fichiers sources, identifiables par les extensions .c et .h.

1.1. Programmation en C: Introduction

Modèle de code

Vous pouvez consulter https://github.com/johnsamuelwrites/ProgC en ligne
ou le cloner sur votre machine à l'aide du terminal en utilisant les commandes suivantes.

$ git clone https://github.com/johnsamuelwrites/ProgC
$ cd ProgC
$ ls

Pour obtenir les dernières mises à jour du répertoire, vous pouvez exécuter la commande suivante:

$ git pull

1.1. Programmation en C: Introduction

Travaux pratiques et Projet

  • Le projet est basé sur une architecture client-serveur.
  • Les clients sont chargés de réaliser des analyses d'images.
  • Contrairement à la méthode classique, les clients ne transmettent pas les images complètes au serveur.
  • Au lieu de cela, ils envoient uniquement les résultats d'analyse générés localement.

1.1. Programmation en C: Introduction

Travaux pratiques et Projet

  • Ce modèle est similaire au concept d'"edge computing".
  • L'objectif est d'optimiser l'utilisation de la bande passante et de réduire la charge du serveur.
  • Il garantit également la confidentialité des données d'image.
  • Le serveur agrège les résultats d'analyse de plusieurs clients pour obtenir une vue globale ou des informations agrégées.
  • Cette approche est particulièrement efficace pour des applications impliquant la surveillance de nombreux capteurs, la collecte de données distribuées et la gestion de ressources informatiques décentralisées.

1.1. Programmation en C: Introduction

Objectifs des travaux pratiques

  1. Comprendre la chaine de compilation en utilisant GCC (GNU compilation chain) : prétraitement jusqu’à l’exécution
  2. Travailler avec les bibliothèques standards et les appels de système d’exploitation (fichiers, les sockets réseau etc.)
  3. Comprendre les pointeurs et manipuler les buffers en utilisant les pointeurs
  4. Créer, compiler et exécuter un projet C
  5. Travailler avec les différents formats de données comme BMP
  6. Créer un simple programme client-serveur pour le transfert de fichiers et messages
  7. Exécuter les applications existantes sur la machine (e.g. GNU plot)
  8. Documenter une application en utilisant le format markdown (*.md)
  9. Tester une application

1.1. Programmation en C: Introduction

⚠️ Attention

1. Programmation en C: Références

Références

Crédits d'images