# Programmation C

* Programmation C
* Un livre appartenant à la série Programmation et à l'étagère Informatique de Wikilivres.
Nous proposons, par ce livre, d'apprendre la programmation en langage C. Dans ce livre, nous supposerons que le lecteur a des notions de base en programmation, algorithmique et structures de données ; si vous n'en avez pas ou si vous voulez réviser des notions pendant l'apprentissage du C, vous pouvez consulter les Wikilivres associés : Programmation, Algorithmique et Structures de données.
Le langage C permet d'appréhender des principes informatiques de bas niveau, liés à l'architecture d'un ordinateur, comme la gestion de la mémoire. Si la connaissance de ces principes peut aider à comprendre certains côtés du langage C, ils ne sont cependant pas nécessaires pour lire ce Wikilivre, les concepts étant expliqués chaque fois que cela est nécessaire.
Ce livre, en constante évolution, est issu d'un projet collaboratif. Si vous trouvez des erreurs, vous pouvez le corriger directement à l'aide des liens « Modifier » sur chaque page. Vous pouvez poser des questions et apporter vos remarques en laissant un nouveau message sur la page de discussion de ce livre. Toute question ou participation est la bienvenue !
Bonne lecture !
* Exercices en langage C
* Structures de données en C
* Programmation GTK2 en C
* Conseils de codage en C
* Mathc gnuplot
* Mathc matrices
* Mathc complexes
* Une version imprimable du livre « Programmation C » est disponible. (voir/ modifier)
* Une version PDF de ce livre est disponible.
Consultez également ces pages dans d’autres projets Wikimedia :
* Article encyclopédique sur Wikipédia.
* Définition sur Wiktionnaire.
* Ressources éducatives sur Wikiversité.
* Ce livre est un wiki et peut par conséquent être amélioré par tout le monde. N'hésitez pas à  participer !
Voici une description rapide des différents chapitres qui constituent ce livre :

## Introduction

    Le C a une longue histoire... Créé au début des années 70, il a beaucoup évolué depuis. Nous expliquerons ici son histoire, décrirons ses principales caractéristiques et domaines d'utilisation, et fournirons des raisons de l'apprendre (ou de ne pas l'apprendre).

## Bases du langage

    Dans cette partie, nous étudierons les concepts de base du langage C, sa syntaxe ainsi que la manière dont un programme est structuré.

## Types de base

    Ensuite, nous présenterons les différents types de base que fournit le langage C. Ces types étant pour l'essentiel des nombres (entiers, réels et complexes), ce chapitre traitera aussi de l'arithmétique associée à ces types. Les types caractères, qui sont la base de nombreux traitements, et ont un rôle particulier dans ce langage, seront aussi définis.

## Classe de stockage

    Le C permet de construire des constantes, par le biais de classes de stockages. Celles-ci permettent de définir plus généralement des types dérivés des types de base et seront étudiés dans ce chapitre.

## Opérateurs

    Nous étudierons ensuite les opérateurs permettant de travailler sur les types de base, ainsi que les règles générales qui structurent les expressions en C.

## Structures de contrôle - tests

    La notion d'expression définie, nous aborderons les moyens de contrôler le flux d'exécution d'un programme. Tout d'abord, les tests de type Si...Alors...Fin Si seront étudiés.

## Structures de contrôle - itérations

    Dans la suite du chapitre précédent, nous étudierons les structure d'itérations, ou boucles, de type Pour, Tant que ou dérivés.

## Fonctions et procédures

    Comment le C prend en charge les fonctions et procédures.

## Tableaux

    Comment le C gère les tables de données.

## Pointeurs

    Les pointeurs sont une spécificité du C, souvent mal comprise. Ce chapitre définira et montrera comment bien utiliser les pointeurs, ainsi que les erreurs à éviter dans leur manipulation.

## Types avancés - structures, unions, énumérations

    Explications sur les types avancés du C.

## Préprocesseur

    Le préprocesseur est un « langage » au-dessus du C, que l'utilisateur rencontre pour la première fois dans l'utilisation des directives d'inclusion d'en-têtes de la bibliothèque standard. Cependant, il est capable de bien plus, et fournit des outils comme les macros ou l'inclusion conditionnelle, qui sont l'objet de ce chapitre.

## Bibliothèque standard

    Cette partie a pour but de familiariser le lecteur avec la « bibliothèque standard » du C. Celle-ci propose un ensemble de fonctions, mais aussi de types ou de variables permettant d'effectuer des opérations spécifiques, comme les traitements de fichiers, les calculs mathématiques, ou la gestion des chaînes des caractères.

## Chaînes de caractères

    Ce chapitre traite de toutes les fonctions permettant d'effectuer des traitements sur les chaînes de caractères : concaténation, copie, recherche de caractères, etc.

## Entrées/sorties

    Ce chapitre traite des interactions avec l'utilisateur.

## Erreurs

    La bibliothèque standard utilise un mécanisme unique pour la gestion d'erreur, qui permet à un programme de déterminer précisément la cause de l'échec d'une fonction de la bibliothèque standard.

## Mathématiques

    Ce chapitre détaille les fonctions mathématiques fournies par la bibliothèque standard.

## Gestion de la mémoire

    La bibliothèque standard fournit un moyen d'allouer et de libérer dynamiquement de la mémoire au cours de l'exécution du programme. Cette fonctionnalité est surtout utilisée pour résoudre des problèmes dont le volume des données à traiter varie d'une exécution à l'autre.

## Gestion des signaux

    Un signal est une interruption logicielle reçue par un processus. Ces interruptions fournissent un moyen de communication entre le système et un programme, pour informer le programme de situations d'erreur (utilisation d'une zone de mémoire invalide, par exemple), ou informer un processus d'événements asynchrones (fin d'une opération d'entrée/sortie). Le C permet d'envoyer et de traiter la réception de ces signaux.