Programmation en c

Disponible uniquement sur Etudier
  • Pages : 125 (31039 mots )
  • Téléchargement(s) : 0
  • Publié le : 17 avril 2011
Lire le document complet
Aperçu du document
Programmer en langage C
Avec exercices corrigés

C. Delannoy

V I

Av -propos ant

A v -propos ant

Le langage C a été créé en 1972 par Denis Ritchie avec un objectif relativement limité : écrire un système d'exploitation (UNIX). Mais ses qualités "opérationnelles" l'ont très vite fait adopter par une large communauté de programmeurs. Une première "définition" du langage est apparueen 1978 avec l'ouvrage de Kernighan et Ritchie The C programming language. Mais le langage a continué d'évoluer après cette date à travers les différents compilateurs qui ont vu le jour. Son succès international a contribué à sa normalisation, d'abord par l'ANSI (American National Standard Institute), puis par l'ISO (International Standardization Organisation), plus récemment en 1993 par le CEN(Comité européen de normalisation) et enfin, en 1994, par l'AFNOR. En fait, et fort heureusement, toutes ces normes sont identiques, et l'usage veut qu'on parle de "C ANSI" ou de "C norme ANSI". La norme ANSI élargit, sans la contredire, la première définition de Kernighan et Ritchie. Outre la spécification de la syntaxe du langage, elle a le mérite de fournir la description d'un ensemble defonctions que l'on doit trouver associées à tout compilateur C sous forme d'une "bibliothèque standard". En revanche, compte tenu de son arrivée tardive, cette norme a cherché à "préserver l'existant", en acceptant systématiquement les anciens programmes. Elle n'a donc pas pu supprimer certaines formulations quelque peu désuètes 1 ou redondantes . Cet ouvrage a été conçu comme un cours de programmation enlangage C. Suivant notre démarche habituelle, héritée de notre expérience de l'enseignement, nous présentons toujours les notions fondamentales sur un ou plusieurs exemples avant d'en donner plus formellement la portée générale. Souvent constitués de programmes complets, ces exemples permettent l'auto expérimentation. La plupart des chapitres proposent des exercices que nous vous conseillons derésoudre d'abord "sur papier", en comparant vos solutions avec celles fournies en fin de volume et en réfléchissant sur les différences de rédaction qui ne manqueront pas d'apparaître. Ils serviront à la fois à contrôler les connaissances acquises et à les appliquer à des "situations" variées. Nous avons cherché à privilégier tout particulièrement la clarté et la progressivité de l'exposé. Dans cetesprit, nous avons systématiquement évité les "références avant", ce qui, le cas échéant, autorise une étude séquentielle ; de même, les points les plus techniques ne sont exposés qu'une fois bien assises les bases du langage (une présentation prématurée serait perçue comme un "bruit de fond" masquant le fondamental). D'une manière générale, notre fil conducteur est ce qu'on pourrait appeler le "Cmoderne", c'est-à-dire non pas la norme ANSI "pure et dure", mais plutôt l'esprit de la norme dans ce qu'elle a de positif. Nous pensons ainsi forger chez le lecteur de bonnes habitudes de programmation en C et, par la même occasion, nous lui facilitons son entrée future dans le monde du C++. Par ailleurs, nous mentionnons toujours les risques d'écart à la norme que l'on rencontre encore enpratique . Le lecteur est ainsi en mesure, s'il le souhaite, de réaliser aussi bien des programmes portables en théorie (c'est-à-dire à la norme ANSI) que des programmes portables en pratique (c'est-à-dire acceptables par tous les compilateurs, même les plus anciens!). Enfin, outre son caractère didactique, nous avons doté cet ouvrage d'une organisation appropriée à une recherche rapide d'information :- ses chapitres sont fortement structurés : la table des matières, fort détaillée, offre de nombreux "points d'entrée",
2

1. Par exemple, la première définition de Kernighan et Ritchie prévoit qu'on déclare une fonction en précisant uniquement le type de son résultat. La norme autorise qu'on la déclare sous forme d'un "prototype" (qui précise en plus le type de ses arguments) mais ne...
tracking img