Un livre de Wikilivres. Une version à jour et éditable de ce livre est disponib

Un livre de Wikilivres. Une version à jour et éditable de ce livre est disponible sur Wikilivres, une bibliothèque de livres pédagogiques, à l'URL : http://fr.wikibooks.org/wiki/Programmation_C V ous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la Licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans Texte de dernière page de couverture. Une copie de cette licence est inclue dans l'annexe nommée « Licence de documentation libre GNU ». Nous vous 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. Bonne lecture ! Remarque : Note à l'attention des lecteurs de la version imprimable Pour des raisons techniques, les notes de bas de pages sont rassemblées en fin d'ouvrage dans la version imprimable. V oici une description rapide des différents chapitres qui constituent ce livre : Introduction Le C a une longue histoire... Créé il y a plus de 40 ans, 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 Programmation C/V ersion imprimable — Wikilivres https://fr.wikibooks.org/w/index.php?title=Programmation_C/V ersion_... 1 sur 120 06/11/2014 08:53 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. Programmation C/V ersion imprimable — Wikilivres https://fr.wikibooks.org/w/index.php?title=Programmation_C/V ersion_... 2 sur 120 06/11/2014 08:53 Conclusion Introduction Historique Naissance Le langage C a été inventé aux Bells Labs en 1972 par Dennis Ritchie pour permettre l'écriture du système d'exploitation UNIX, alors développé par Ken Thompson et Dennis Ritchie. Le système d'exploitation UNIX, né à la fin des années 1960 - début des années 1970, a été écrit directement en langage assembleur pour les machines auxquelles il était destiné. Si le langage assembleur permettait d'écrire un tel système, il n'en était pas moins peu aisé à utiliser. Un tel langage est en effet particulier à un type de processeur, ce qui fait que tout le système devait être réécrit pour le faire fonctionner sur une nouvelle architecture. Cela fait que son principal créateur, Ken Thompson, souhaita rapidement utiliser un langage plus évolué pour réécrire UNIX. Parmi les langages disponibles à l'époque, BCPL (pour Basic Combined Programming Language, qui est une simplification de CPL), créé par Martin Richards en 1966, était intéressant. Sans entrer dans des descriptions détaillées, BCPL est un langage simple, procédural, et non typé. Sa simplicité permettait de créer facilement des compilateurs BCPL sur les machines de l'époque, où les ressources étaient très limitées (le premier ordinateur utilisé par Ken Thompson pour lancer Unix était un PDP-7, qui disposait d'une mémoire de 4000 mots de 18 bits, soit moins de 9 Ko). Ken Thompson l'a fait évoluer pour concevoir le langage B, qu'il a implémenté sur les premières machines UNIX. Cependant, certaines limitations du langage B ont fait qu'UNIX n'a pu être réécrit dans ce langage. À partir de 1971, Dennis Ritchie fit évoluer B, pour répondre à ces problèmes. À l'image des programmeurs qui incrémentent les versions de leurs programmes, Ritchie « incrémenta » la lettre B pour appeler le nouveau langage C. Cette évolution se « stabilisa » vers 1973, année à partir de laquelle UNIX et les utilitaires systèmes d'UNIX ont été réécrits avec succès en C. Développement Par la suite en 1978, Brian W. Kernighan documenta très activement le langage, pour finalement publier avec Ritchie le livre de référence The C Programming Language. On appelle souvent C K&R le langage tel que spécifié dans la première édition de ce livre. Dans les années qui suivirent, le langage C fut porté sur de nombreuses autres machines. Ces portages ont souvent été faits, au début, à partir du compilateur pcc de Steve Johnson, mais par la suite des compilateurs originaux furent développés indépendamment. Durant ces années, chaque compilateur C fut écrit en suivant les spécifications du K&R, mais certains ajoutaient des extensions, comme des types de données ou des fonctions supplémentaires, ou interprétaient différemment certaines parties du livre (qui n'était pas forcément très précis). À cause de cela, il fut de moins en moins facile d'écrire des programmes en C qui puissent fonctionner tels quels sur un grand nombre d'architectures. Normalisation Pour résoudre ce problème, et ajouter au C des possibilités dont le besoin se faisait sentir (et déjà existantes dans certains compilateurs), en 1989, l'organisme national de normalisation des USA (ANSI) normalisa le C. Le nom exact de cette norme est ANSI X3.159-1989 Programming Language C, mais elle fut (et est toujours) connue sous les dénominations ANSI C ou C89. Puis l'ANSI soumit cette norme à l'Organisation internationale de normalisation (ou ISO), qui l'accepta telle quelle et la publia l'année suivante sous le numéro ISO/IEC 9899:1990 (le document étant connu sous le nom ISO C90, ou C90). Le besoin de normalisation de l'époque étant extrêmement pressant, pratiquement tous les éditeurs de compilateurs C de l'époque se sont mis à modifier leurs compilateurs pour supporter la norme (et même n'ont pas attendu la publication officielle pour lancer ces modifications), et de uploads/Litterature/ programmation-c-fr.pdf

  • 44
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager