Bibliographie http ://www-clips.imag.fr/commun/bernard.cassagne/Introduction ANSI C.html Le langage Cpar B.W. Kernighan et D.M. Ritchie, Masson Editions (1992). Le langage Cpar T. Zhang, CampusPress Editions (1997). Sams Teach Yourself C in 21 Dayspar B.L. Jones et P. Aitken, Sams Publishing (2003). Practical C Programmingpar S. Oualline, O’Reilly Editions (1997).
Contacts Ge´rald MONARD UMR 7565 - Equipe de Chimie et Biochimie Theoriques Universite Henri Poincare - Nancy I Faculte des Sciences - BP 239 54506 Vandoeuvre-les-Nancy Cedex, FRANCE E-mail : Gerald.Monard@lctn.uhp-nancy.fr t´el.:03.83.68.43.81 fax. : 03.83.68.43.71 www : http ://gerald.monard.free.fr
1 Le langage C 1.1 Introduction Lesordinateurssontdesappareils´electroniquespermettantd’effectuerdesop´erationsdebasesurlesentiersetles r´eels(ottants).Grosso-modo,cesontdegrossescalculatrices. Ce qui est inte´ressant sur un ordinateur est qu’il estprogrammable: si on donne une suite d’instructions (le programmea)exe´cuter te.aun ordinateur, celui-ci l’ex ´ ecu L’ordinateur est donc une sorte d’esclavequi fait exactement ce qu’on lui dit, qui n’a pas besoin de nourriture (autre qu’ e´lectrique) et ne fait jamais greve. Leprincipalavantageetinconv´enientd’unordinateurestqu’ilfaitcequ’onluidemandeetseulementcequ’onlui demande.Ainsiquandlar´eponsed’unordinateurneconvientpasal’utilisateur,ilfautchercherleproblemedans leprogrammequ’illuia´ete´donne´etnondansl’ordinateurlui-meˆme(i.e., c’est le programmateur qui a tort, et nonl’ordinateurquiaappliqu´ebeˆtementleprogrammequiluia´ete´assigne). ´ Un ordinateur ne reconnait que le langagebinaireet les programmes binaires. L’hommead’´enormesdifculte´saparlerunlangagebinaire! Les langages de programmation permettent d’effectuer le lien entre l’homme et l’ordinateur : un programme est ´ecritdansunidiome(assezfacilement)compre´hensifparl’hommepuisesttraduit(parl’interm´ediaired’unin-terpr´eteuroud’uncompilateur)enunes´equenced’instructions(binaires)directementreconnaissablesparl’ordi-nateur. Il existe deux sortes de langages : les langageset´erpr´inteset les langagesocs´eilmp(= traduits). Lesteste´xe´tucseecirmetetrntuiadetpr´rtee´ssnodtlangagesinL.llientuetenemvnretnoc´sqeitsestruesinnssoctio auformatbinaireparuninterpre´teurpuisex´ecute´esimme´diatement. Leslompil´esangagescipmocnutnesilituurtelatraduit le programme en langage binaire. Une fois le langagequi compile´, il est possible de lestockerdanusnhceier´xcetuleab. Le compilateur n’intervient qu’au moment de la creationducodebinaire.Leprogrammecompil´epeuts’ex´ecutersansavoirrecoursaucompilateur. ´ On parle decode sourceourd´esipamgrenmesdonrouprtsnitcurengiselsnbie´ehdteele,atteformomprxteccode executablepour de´signer les instructions du programme en langage binaire directement exe´cutable par l’ordinateur. Toutchiersourcemisajourdoiteˆtreanouveaucompile´pourrecre´erlechierex´ecutablecorrespondant. Le langage C est l’un des tout premiers langages dits dehaut niveau(contrairement al’assembleur par exemple). Il ae´te´con¸cupourdenombreusesutilisationsetestcaract´eris´eparune´economied’expression,pardesinstructions de controˆle et des structures de donne´es modernes, ainsi que par un ensemble tres complet d’op e´rateurs. Al’origine,lelangageCae´t´einvent´eparDennisRitchieauseindeslaboratoiresBellpourlesystemed’exploita-tionUNIXen1972(DECPDP-11)puisa´ete´utilise´pour“recr e´er et la plupart ´eUNIX, le compilateur C associ des programmes d’application sous UNIX. LelangageCestunlangagecompil´e.
1.2 Pourquoi C C estpuissant et exibleeudeespdetrsseemopm-eˆlriuegapd’leibsspostlecinodtesetniartnocel:lgaeann faire pratiquement ce que l’on veut. C est utilis e´ pour des projets aussi divers que des systemes d’exploitation, des traitements de textes, du graphisme, des tableurs, et meˆme des compilateurs pour d’autres langages C est l’un des langages les pluspopulaireschez les informaticiens. De ce fait, il existe de nombreux compilateurs disponibles ainsi que de nombreux utilitaires. C est un langageportable ecrit qu’un programme a-dire. C’est- en C sur un ordinateur pourra eˆtre exe´cute´ sans ´ modication (ou presque) sur un autre ordinateur d’architecture totalement differente. ´ Laportabilit´eestfacilite´parlanormeANSI(AmericanNationalStandardInstitute). Cestmodulaire.Uncodesource´ecritenCpeuteˆtredivise´enroutines(lesfonctions). Ces routines peut alors eˆtrer´eutilis´eespard’autresapplications.
4
1.3 Les autres langages courants en informatique Quelques langages courants que vous rencontrerez peut-eˆtre au cours de votre stage, de votre these, et/ou de votre vie professionelle : Fortran.0s96s1´neesenaiulsdepexistce.EllenexceLlEnaaggescientiquepar Detresnombreuxlogicielsenchimiequantiqueetenm´ecaniquemole´culaireonte´te´baˆtisenFortran. C++nioataltnattemmargorpcentnr´epermedeCUensnoixeetOriente´e Objets. Hors programme ... Javaes´pilrurpirartoueSn(eemcmioMtn,Csedien´irb+e+xecte´leeopptpirrUnesortrosystems). Avantage : une tres large bibliotheques de modules (re´seau, Internet, graphisme, . . .). PerlUn langage re´cent, populaire, permettant le traitement rapide de chiers. Plutoˆt un langage pour les systemes d’exploitation qu’un langage“scientique. Slogan : “There is more than one way to do it−→ue!ngLanega´pnogadeqigo Pythonsuopupallpsunelpourpartiire.Ilapedealuc´tirangaUnlceneeg´rovul,te´ernt,i´ee,t´´epre´tneiroed,tejbo pouvoir s’interfacer tr es facilement avec C, Fortran, Java,etc. 2 Premier programme en C Voici le premier programme en C : 1# i n c l u d e< .s t d i o h> 2 3i n tmai n ( ) 4{ 5 (p r i n t f"Hello a tous\n") ; 6r e t u r n( 0 ) ; 7} Compilationetex´ecution $ cc -O -Wall hello1.c -o hello1 $ ./hello1 ccomecelgnsi´edCetruipal -O -Wallsont des options du compilateur C qui permettent (-O) d’optimiser le code executable (i.e., le rendre plus rapide al’ex e´cution) et (-Wall e´cran tout probleme possible dans le code source () d’indiquer al’Warning all). -o hello1sauvegarde le re´sultat de la compilation (l’ex e´cutable) dans le chierhello1. LeschierssourcesenlangageCseterminentg´ene´ralementpar.c. Les commentaires commencent par /* et se terminent par */. 1# i n c l u d e< .s t d i o h> 2 3/∗ un c o m m e n t a i r e e s tc e c i∗/ 4i n tmai n ( ) 5{ 6/∗un c o m m e n t a i r e 7 t r e p r e s e n tp e u t e 8 l l u s i e u r s i g n e s ps u r∗/ 9p r i n t f ("Hello a tous\n") ; 10r e t u r n( 0 ) ; 11}