La lecture en ligne est gratuite
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
Télécharger Lire

Cours de Programmation en C

De
34 pages
Programmation en CGerald´ MONARDD.E.A. C.I.T. - Annee´ Universitaire 2004 2005Bibliographie– http ://www clips.imag.fr/commun/bernard.cassagne/Introduction ANSI C.html– Le langage C par B.W. Kernighan et D.M. Ritchie, Masson Editions (1992).– Le langage C par T. Zhang, CampusPress Editions (1997).– Sams Teach Yourself C in 21 Days par B.L. Jones et P. Aitken, Sams Publishing (2003).– Practical C Programming par S. Oualline, O’Reilly Editions (1997).ContactsGerald´ MONARDUMR 7565 - Equipe de Chimie et Biochimie TheoriquesUniversite Henri Poincare - Nancy IFaculte des Sciences - BP 23954506 Vandoeuvre les Nancy Cedex, FRANCEE mail : Gerald.Monard@lctn.uhp nancy.frtel.´ : 03.83.68.43.81fax. : 03.83.68.43.71www : http ://gerald.monard.free.frTable des matier` es1 Le langage C 41.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Pourquoi C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Les autres langages courants en informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Premier programme en C 53 Concepts fondamentaux 63.1 Constantes et variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.3 Operateurs´ arithmetiques´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
Voir plus Voir moins
Programmation en C
Ge´rald MONARD D.E.A.C.I.T.-Ann´eeUniversitaire2004-2005
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
Tabledesmatieres 1 Le langage C 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Pourquoi C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Les autres langages courants en informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Premier programme en C 3 Concepts fondamentaux 3.1 Constantes et variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3Op´erateursarithm´etiques....................................... 3.4 Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Blocs d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 De´clarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
4 4 4 5 5 6 6 6 7 7 7 7
4 Noms et types de donnees ´ 4.1 Typechar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Typeint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Typefloat. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Typedouble. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Notation scientique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 La fonctionprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Ope´rateurs 5.1Ope´rateursarithm´etiquesdaffectation................................ 5.2 Ope´rateurs unaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3Ope´rateursdincre´mentationetded´ecre´mentation.......................... 5.4 Ope´rateurs de conversion de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 La fonctionsizeof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Fonctions 6.1 Type d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Nom d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Arguments d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 De´but et n d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Corps d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Appel d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 Pointeurs 7.1 Pointeur NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 Pointeurs et fonctions
9 Boole´ens et op´ ti s sur les boole´ens era on
10 Instructions conditionnelles 10.1 Instructionsif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .et consorts 10.2Op´erateurconditionnel: :ca ?b. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3 Instructionswitch. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Boucles 11.1 Bouclewhile .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Boucledo ... while .... . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Bouclefor (...) .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4Bouclesimbriqu´ees..........................................
12 Tableaux 12.1D´eclarationduntableau....................................... 12.2 Indexation d’un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
8 8 8 8 8 9 9 10 10 10 10 11 11 12 12 12 12 12 13 13
13 14
14
15
16 16 17 18 19 20 20 21 22
22 22 22
12.3 Initialisation d’un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4 Taille d’un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5 Tableaux aplusieurs dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6Chaˆnesdecaracetres......................................... 12.7 Taille implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8 Tableaux et pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9 Pointeurs, memoires et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ 12.10Arithme´tique sur les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13 La bibliotheque d’entre´es-sorties<stdio.h> 14 Porte´e des variables 14.1 Porte´e locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 Porte´e d’un bloc imbriqu e´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3Port´eedefonction........................................... 14.4 Porte´e globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 Autres types et fonctions 15.1 Typeenum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2 De´nitionstypedef. . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.3main. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  .et ses arguments 16 Structures 16.1 De´claration de structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2 Lecture de membres de structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.3 Initialisation de structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.4 Structures et appels de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.5 Pointage vers des structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 Preprocesseur ´ 17.1#include. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2#define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.3#ifdef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .et consorts .
3
23 23 23 23 24 24 24 25
25 26 27 27 27 27
28 28 28 29 29 29 30 30 31 31
32 32 32 33
1 Le langage C 1.1 Introduction Lesordinateurssontdesappareils´electroniquespermettantdeffectuerdesop´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´enientdunordinateurestquilfaitcequonluidemandeetseulementcequonlui demande.Ainsiquandlar´eponsedunordinateurneconvientpasalutilisateur,ilfautchercherleproblemedans leprogrammequilluia´ete´donne´etnondanslordinateurlui-meˆme(i.e., c’est le programmateur qui a tort, et nonlordinateurquiaappliqu´ebeˆtementleprogrammequiluia´ete´assigne). ´ Un ordinateur ne reconnait que le langagebinaireet les programmes binaires. Lhommead´enormesdifculte´saparlerunlangagebinaire! Les langages de programmation permettent d’effectuer le lien entre l’homme et l’ordinateur : un programme est ´ecritdansunidiome(assezfacilement)compre´hensifparlhommepuisesttraduit(parlinterm´ediairedunin-terpr´eteurouduncompilateur)enunes´equencedinstructions(binaires)directementreconnaissablesparlordi-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´epeutsex´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´economiedexpression,pardesinstructions de controˆle et des structures de donne´es modernes, ainsi que par un ensemble tres complet d’op e´rateurs. Alorigine,lelangageCae´t´einvent´eparDennisRitchieauseindeslaboratoiresBellpourlesystemedexploita-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ˆlriuegapdleibsspostlecinodtesetniartnocel: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´eespardautresapplications.
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}
5
Un pour Un
Permettre à tous d'accéder à la lecture
Pour chaque accès à la bibliothèque, YouScribe donne un accès à une personne dans le besoin