# I. Guide pratique du langage C

- [I.1 Préambule](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/i.1-preambule.md)
- [I.1.1 Genèse et évolution](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/i.1-preambule/i.1.1-genese-et-evolution.md): Cette section retrace la genèse et l’évolution du langage C, de sa création aux laboratoires Bell jusqu’à sa standardisation et son influence sur les langages modernes.
- [II.1 Introduction](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction.md)
- [II.1.1 Caractéristiques générales du C](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c.md)
- [Paradigmes de programmation adoptés](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes.md): Cette section présente les paradigmes de programmation adoptés par le langage C et leur influence sur son utilisation.
- [Paradigme de programmation impérative](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative.md): Présentation du paradigme de programmation impérative, fondement du langage C, qui repose sur l’exécution séquentielle d’instructions contrôlant directement le déroulement du programme.
- [Rappels sur l'architecture système](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme.md): Rappel des notions essentielles d’architecture système nécessaires pour comprendre la programmation bas niveau, notamment les opcodes et registres du processeur.
- [Principe d'Opcode](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme/principe-dopcode.md): Présentation du concept d'opcode, instruction élémentaire comprise par le processeur, et illustration de son usage à travers un exemple concret en assembleur x86-64.
- [Principe des registres](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme/principe-des-registres.md): Présentation des registres, unités de stockage rapides intégrées au processeur, et aperçu de leurs rôles essentiels dans l’exécution des programmes.
- [Registres de données](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme/principe-des-registres/registres-de-donnees.md): Focus sur les registres de données, utilisés pour stocker les informations nécessaires aux calculs et aux opérations du processeur.
- [Registres d'adresse](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme/principe-des-registres/registres-dadresse.md): Présentation des registres d'adresse, essentiels pour gérer les adresses mémoire, la pile, et le séquencement des instructions lors de l'exécution d'un programme.
- [Registres d'instruction](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme/principe-des-registres/registres-dinstruction.md): Présentation du registre d'instruction, qui contrôle le séquencement des instructions exécutées par le processeur, essentiel au déroulement logique des programmes.
- [Registres de contrôle et d'état](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/rappels-sur-larchitecture-systeme/principe-des-registres/registres-de-controle-et-detat.md): Présentation des registres de contrôle et d'état, notamment RFLAGS, indispensables pour gérer les conditions, les erreurs et le flux d'exécution au sein du processeur.
- [Distinction entre programmation impérative et programmation déclarative](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/paradigme-de-programmation-imperative/distinction-entre-programmation-imperative-et-programmation-declarative.md): Cette section présente les différences fondamentales entre programmation impérative et déclarative, illustrées par des exemples concrets et des analogies accessibles.
- [Le paradigme procédural](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/le-paradigme-procedural.md): Introduction au paradigme procédural, fondé sur le paradigme impératif, qui structure le code en fonctions pour améliorer la lisibilité, la modularité et la maintenance du programme.
- [Le paradigme structuré](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.1-caracteristiques-generales-du-c/paradigmes-de-programmation-adoptes/le-paradigme-structure.md): Présentation du paradigme structuré, centré sur l’organisation hiérarchique du code et l’utilisation de structures de contrôle claires pour garantir lisibilité et maintenabilité.
- [II.1.2 Caractéristiques techniques du langage C](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.2-caracteristiques-techniques-du-langage-c.md): Cette section présente les principales caractéristiques techniques du langage C, soulignant sa polyvalence, son efficacité, et son équilibre entre haut et bas niveau.
- [II.1.3 Applications du langage C](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/ii.1-introduction/ii.1.3-applications-du-langage-c.md): Cette section explore les principales applications du langage C, notamment dans le développement de systèmes d’exploitation, de logiciels embarqués, d’infographie...
- [III.1 Coder en C](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/iii.1-coder-en-c.md)
- [III.1.1 Organisation d’un programme en C](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/iii.1-coder-en-c/iii.1.1-organisation-dun-programme-en-c.md): Cette section explore l'organisation d'un programme en C, en présentant les notions fondamentales telles que les instructions, les fonctions, les commentaires, la fonction main...
- [III.1.2 Phases de compilation](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/iii.1-coder-en-c/iii.1.2-phases-de-compilation.md): Cette section détaille les différentes phases du processus de compilation en langage C, depuis le prétraitement du code source jusqu'à la création du fichier exécutable final.
- [III.1.3 Mise en oeuvre du compilateur](https://c.franckferman.fr/i.-guide-pratique-du-langage-c/iii.1-coder-en-c/iii.1.3-mise-en-oeuvre-du-compilateur.md): Cette section explique comment compiler et exécuter un programme en C, notamment à l’aide du compilateur GCC, et présente les principales options permettant de contrôler le processus de compilation.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://c.franckferman.fr/i.-guide-pratique-du-langage-c.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
