SlideShare une entreprise Scribd logo
1  sur  545
Télécharger pour lire hors ligne
Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence :
                                Creative Commons BY-NC-SA 2.0
     La copie de cet ouvrage est autorisée sous réserve du respect des conditions de la licence
Texte complet de la licence disponible sur :   http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
                            Simple IT 2010 - ISBN : 978-2-9535278-0-3
Avant-propos


L     e livre que vous tenez d—ns vos m—ins — une longue histoire derrière luiF it pour
      ™—use X il — mis plus de dix —ns à mûrir —v—nt de voir le jourF gomment peutEon en
      —rriver à prép—rer un livre pend—nt dix longues —nnées c …n petit retour en —rrière
s9imposeF
te suis un p—ssionné de nouvelles te™hnologies p—rmi t—nt d9—utresF t9—i eu mon premier
ordin—teur entre les m—ins juste —v—nt de rentrer —u ™ollègeF g9ét—it à ™e moment le
l—n™ement en gr—ndes pompes de ‡indows WSF
t9—i immédi—tement voulu —ller plus loinD s—voir  ™omment ç— fon™tionne à l9intérieur F
won premier ré)exe — été d9é™umer les li˜r—iries de qu—rtier et plus p—rti™ulièrement
leur se™tion mi™roEinform—tique déjà ˜ien développéeF „out @ou presqueA me f—is—it
envie X  gréez votre site we˜ en r„wv en SH minutes D  héveloppez vos propres
progr—mmes f—™ilement —ve™ †isu—l f—si™ D et™F hes promesses quiD à elles seulesD
—ur—ient pu —voir r—ison de mon —rgent de po™heF
g9est en lis—nt l— qu—trième de ™ouverture que les ™hoses ont ™ommen™é à ™oin™er X  Ce
livre est destiné aux personnes ayant déjà une bonne expérience en programmation F
€—s de p—niqueF sl su0t de trouver ™elui qui s9—dresse —ux dé˜ut—nts ™omme moiF te
repose le livre sur les ét—l—ges et je tente d9en sortir un —utreF €uis un —utreF €uis en™ore
un —utreF tusqu9à me rendre à l9éviden™e X pour —pprendre à progr—mmerD il f—ut déjà
s—voir progr—mmerF
ristoire de ne p—s —voir f—it le tr—jet pour rienD je rep—rtir—i qu—nd même —ve™ un
livre ou deux sous les ˜r—sD ™eux qui sem˜l—ient les plus ™orre™ts du lotF te leur rends
homm—ge i™i X ™9est —ve™ eux que j9—i dém—rré et j9—i ˜e—u™oup —ppris à leur le™tureF w—is
en les relis—nt —ve™ un peu de re™ul quelques mois plus t—rdD j9—i (ni p—r m9—per™evoir
de ™ert—ines in™ohéren™es X un ™h—pitre simple sur l9inst—ll—tion d9un logi™iel qui —ur—it
dû être pl—™é tout —u dé˜utD des ™odes sour™e s—ns expli™—tionsD qu—nd ™e n9ét—it p—s
™—rrément un mot import—nt utilisé tout —u long du livre et dé(ni vers l— (n 3
v— ™ritique ét—it f—™ileD m—is il me f—ll—it prouver que l9on pouv—it f—ire plus clair et plus
simpleF t9—i don™ entrepris de reformuler mon premier livre tel que j'aurais souhaité
le lire en ™ré—nt mon premier site we˜F
g9ét—it il y — dix —ns presque jour pour jour à l— sortie de ™e livreF


                                              i
CHAPITRE 0. AVANT-PROPOS

Qu'est-ce que ce livre vous propose ?
fien des —nnées se sont é™oulées depuis l— réd—™tion des premiers ™oursF h—ns ™et interE
v—lle de tempsD j9—i suivi des études d9ingénieur en inform—tique puis j9—i été professeur
de l—ng—ge g d—ns l9enseignement supérieurF
„out ™e™i m9— —mené à ™onstruire un pl—n de ™ours —d—pté —ux dé˜ut—ntsD progressif et
™on™retF geluiE™i est ™onstitué de qu—tre p—rties que vous retrouverez d—ns ™et ouvr—ge X

     IF Les bases de la programmation en C X nous dém—rrerons en dou™eur en
        dé™ouvr—nt ™e qu9est l— progr—mm—tion et à quoi sert le l—ng—ge g qui f—it l9o˜jet
        de ™e livreF xous inst—llerons les outils né™ess—ires —u progr—mmeur —d—ptés à
        votre système d9exploit—tion X ‡indowsD w—™ yƒ ˆ ou vinuxF xous ré—liserons
        nos premiers progr—mmes simples et pourrons pr—tiquer en ré—lis—nt un petit jeu
        dès l— (n de ™ette p—rtieF
     PF Techniques  avancées  du langage C X nous étudierons des ™on™epts plus
        —v—n™és et plus ™omplexes du gF geuxE™iD ˜ien que d9un nive—u plus élevéD sont
        indispens—˜les à l— ˜onne ™ompréhension du l—ng—ge X pointeursD t—˜le—uxD stru™E
        turesD ™h—înes de ™—r—™tèresD et™F ve nive—u reste progressif m—is le ™ours dem—nE
        der— plus d9—ttention de votre p—rt à p—rtir de ™ette se™onde p—rtieD soyezEen
        simplement prévenusF
     QF Création de jeux 2D en SDL X —près —voir —™quis l9essentiel des ™onn—iss—n™es
        né™ess—ires pour progr—mmer en gD il nous ser— possi˜le de nous —muser en ™ré—nt
        nousEmêmes des progr—mmes ™omplets tels que des jeux et des le™teurs —udioF
        €our y p—rvenirD nous utiliserons une  extension du l—ng—ge g que l9on —ppelle
        l— ƒhvF
     RF Les structures de données X pour —ller plus loinD nous dé™ouvrirons des méE
        thodes de progr—mm—tion spé™i(ques d—ns ™ette dernière p—rtieF xous m—nipuleE
        rons des données en mémoire à l9—ide de stru™tures personn—lisées et intelligentesD
        ™e qui vous permettr— d9—ugmenter en e0™—™ité lorsque vous ré—liserez vos futurs
        progr—mmesF


Comment lire ce livre ?
Suivez l'ordre des chapitres
visez ™e livre ™omme on lit un rom—nF sl — été ™onçu de ™ette f—çonF
gontr—irement à ˜e—u™oup de livres te™hniques où il est ™our—nt de lire en di—gon—le et
de s—uter ™ert—ins ™h—pitresD i™i il est très fortement re™omm—ndé de suivre l9ordre du
™oursD à moins que vous ne soyez déjà un peu expérimentéF
ii
COMMENT LIRE CE LIVRE ?

Pratiquez en même temps
€r—tiquez régulièrementF x9—ttendez p—s d9—voir (ni l— le™ture de ™e livre pour —llumer
votre ordin—teur et f—ire vos propres ess—isF
ve livre ™omporte plusieurs „F€F qui vous invitent à ™réer votre propre progr—mme en
                                      1


suiv—nt une série de ™onsignesF g9est ˜ienD m—is ne vous en ™ontentez p—sF iss—yez les
™odes sour™e que je vous propose tout —u long du ™oursF wodi(ezEles un tout petit peuD
puis de plus en plus jusqu9à vous sentir à l9—iseF …ne fois les „F€F terminésD ess—yez de
ré—liser les —mélior—tions suggérées —insi que ™elles qui vous p—ssent p—r l— têteF †ous
progresserez —insi ˜e—u™oup plus vite que vous ne l9im—giniezF

Utilisez les codes web !
e(n de tirer p—rti du ƒite du éro dont est issu ™e livreD ™eluiE™i vous propose ™e qu9on
—ppelle des  ™odes we˜ F ge sont des ™odes à T ™hi'res à rentrer sur une p—ge du ƒite
du éro pour être —utom—tiquement redirigé vers un site we˜ s—ns —voir à en re™opier
l9—dresseF
€our utiliser les ™odes we˜D rendezEvous sur l— p—ge suiv—nte X   2



http:GGwwwFsiteduzeroF™omG™odewe˜Fhtml
…n formul—ire vous invite à rentrer votre ™ode we˜F p—ites un premier ess—i —ve™ le ™ode
™iEdessous X
   £                     
   ¢gode we˜ X IPQRST ¡
ges ™odes we˜ ont deux intérêts X
! vous f—ire télé™h—rger les ™odes sour™e in™lus d—ns ™e livreD ™e qui vous éviter— d9—voir
   à re™opier ™ert—ins ™odes un peu longs Y
! vous rediriger vers les sites we˜ présentés tout —u long du ™oursF
ge système de redire™tion nous permet de tenir à jour le livre que vous —vez entre les
m—ins s—ns que vous —yez ˜esoin d9—™heter systém—tiquement ™h—que nouvelle éditionF
ƒi un site we˜ ™h—nge d9—dresseD nous modi(erons l— redire™tion m—is le ™ode we˜ à
utiliser rester— le mêmeF ƒi un site we˜ disp—r—îtD nous vous redirigerons vers une p—ge
du ƒite du éro expliqu—nt ™e qui s9est p—ssé et vous propos—nt une —ltern—tiveF
in ™l—irD ™9est un moyen de nous —ssurer de l— pérennité de ™et ouvr—ge s—ns que vous
—yez à f—ire quoi que ™e soit 3




  1. Travaux Pratiques
  2. Je vous suggère d'ailleurs de l'ajouter à vos favoris.

                                                                                        iii
CHAPITRE 0. AVANT-PROPOS

Du Site du Zéro au Livre du Zéro
À l9époque où j9—i souh—ité rédiger mes premiers ™ours pour dé˜ut—ntsD mon premier
ré)exe — été de ™réer un site we˜ ™—r ™9ét—it pour moi le moyen le plus simple de pu˜lier
mes é™rits F sl fut dé™idé que le site s9—ppeller—it le  ƒite du éro F F F p—r™e qu9on y
            3


—pprendr—it tout à p—rtir de zéroF
ƒ—ns moyens pu˜li™it—ires —utres que le ˜ou™he à oreilleD m—is —ve™ ˜e—u™oup de motiE
v—tion et de p—ssionD wwwFsiteduzeroF™om s9est f—it —u (l des —nnées un vérit—˜le nom
sur le ‡e˜F À tel point que j9—i (ni p—r dé™ouvrir qu9il ét—it ™onnu et re™omm—ndé p—r
des professeurs en inform—tiqueD m—is —ussi utilisé ™omme support de ™ours p—r leurs
élèves 3
ve site s9est fortement développé et est devenu plus qu9un site de ™ours en ligne pour
dé˜ut—ntsF sl regroupe —ujourd9hui plus de IUH HHH mem˜res formid—˜les qui é™h—ngent
et s9entr—ident sur les forums m—is prennent —ussi p—rt à l— réd—™tion des ™ours de
f—çon désintéresséeF v— seule ™onsigne en vigueur sur le site est l— seule que j9—ie j—m—is
suivie X se mettre à l— pl—™e du le™teur dé˜ut—nt que nous —vons tous étéF
gel— f—it longtemps que je souh—ite un retour —ux sour™esD d—ns ™es li˜r—iries où j9—i
moiEmême été perduF ve vivre du éro est le moyen idé—l de ˜ou™ler l— ˜ou™leF

À l'attention de ceux qui ne connaissent pas le Site du Zéro
ƒi vous ne f—ites p—s p—rtie des visiteurs du ƒite du éro D vous vous dem—ndez à juste
                                                                     4


titre si ™e livre est f—it pour vousF
gomme vous l9—urez s—ns doute ™omprisD ™e livre est —v—nt tout destiné —ux dé˜ut—ntsF
†ous y trouverez né—nmoins —ussi votre ™ompte si vous —vez déjà de l9expérien™e en
progr—mm—tion d—ns d9—utres l—ng—ges et que vous souh—itez dé™ouvrir le gF
„outes les notions à ™onn—ître pour dém—rrer d—ns l— progr—mm—tion seront dét—illéesD
en privilégi—nt les exemples —ux dé(nitions théoriquesF ve ™ours est d9—illeurs p—rti™uE
lièrement fourni en s™hém—s ™omme vous pourrez le ™onst—terF
visez le premier ™h—pitre pour dé™ider si vous —™™ro™hez et ™omprenez ™e qui s9y ditF
v— seule ™ompéten™e réellement requise est de s—voir —llumer un ordin—teur F te me             5


™h—rge de vous expliquer tout le reste X de l9inst—ll—tion des logi™iels né™ess—ires pour
progr—mmer à l9expli™—tion des ™omm—ndes qui permettent de ™réer des progr—mmesD
en p—ss—nt p—r les ™onseils et les ˜onnes pr—tiques qui vous feront g—gner du tempsF
†ous noterez que je m9exprime toujours à l— première personneF g9est m— f—çon de f—ireF
sm—ginez d9une ™ert—ine m—nière que nous sommes vous et moi d—ns l— même s—lle et
que je suis votre professeurF te vous p—rle dire™tement et je réponds à vos questions en
   3. Et ça l'est d'ailleurs toujours, c'est amusant de voir que cela n'a pas changé. Le Web est plus
que jamais un formidable espace d'expression et doit le rester.
   4. Que l'on appelle d'ailleurs les  Zéros , selon une logique implacable qui ne vous aura pas
échappé. ;-)
   5. Ce n'est pas une plaisanterie, c'est la raison d'être de ce livre et c'est pour cela qu'on l'appelle
le  Livre du Zéro .

iv
REMERCIEMENTS

ess—y—nt d—ns l— mesure du possi˜le de les —nti™iperF

À l'attention des visiteurs du Site du Zéro
ge livre ne rempl—™e p—s le ƒite du éroF sl le complèteF
in f—itD il répond à une question que l9on m9— souvent posée X  €ourquoi ne voitEon
p—s ™es ™ours en li˜r—irie c F yui ™9est vr—iD pourquoi c
€—r™e que rédiger et pu˜lier un livre ne s9improvise p—sF e(n d9—voir le m—ximum de
li˜erté et d9indépend—n™eD je souh—it—is être l9éditeur de ™es livresF sl —ur— f—llu du
temps pour y p—rvenir m—is ™9est —ujourd9hui ™hose f—iteF
ge livre s9—dresse à vous si vous —vez —imé les ™ours du ƒite du éro m—is que X
! l— le™ture sur é™r—n vous f—tigue Y
! vous —vez ˜esoin d9un support hors ligne que vous pouvez emporter où vous voulez Y
! vous —uriez ˜ien imprimé les ™ent—ines de p—ges du ™ours vousEmême m—is votre
   imprim—nte risquer—it de f—ire un peu l— tête Y
! vous souh—itez tout simplement —pporter votre ™ontri˜ution —u siteD —(n de nous
   —ider à (n—n™er son développement et l— réd—™tion de nouve—ux ™oursF
†ous y retrouverez le ™ours de progr—mm—tion en g d—ns une édition revue et ™orrigéeD
—ve™ de nouvelles rem—rques et —ne™dotesF ve livre ™omporte une série de ™h—pitres
inédits qui vous permettront d9—ller en™ore plus loin et d9explorer de nouvelles voies
d—ns votre dé™ouverte de l— progr—mm—tionF

Remerciements
ge livre n9est p—s le fruit d9une seule et même personneF sl n9—ur—it en f—it j—m—is vu
le jour s—ns de nom˜reuses personnes qui m9ont —pporté leur soutien ou leur —ideF
! wes p—rents tout d9—˜ordD qui m9ont toujours en™our—gé et ™onseillé qu—nd j9en —v—is
   le plus ˜esoinF
! ÉlodieD qui p—rt—ge m— vie depuis plusieurs —nnées et qui s—it toujours trouver les
   mots justes pour m9—ider à —v—n™erF
! €ierre hu˜u™D mon —sso™iéD à qui l9on doit les fond—tions te™hniques du ƒite du éro
   que l9on ™onn—ît —ujourd9hui —insi que le ré™ent développement de notre stru™tureF
   v— dévotion qu9il — portée à l— n—iss—n™e de ™e livre ne s—ur—it être su0s—mment
   s—luéeF
! xh—t winh vê @rzHA —ve™ qui j9—i eu de longues et intéress—ntes ™onvers—tions sur
  Av „iˆD le l—ng—ge d—ns lequel est é™rit ™e livre D —insi que sur le l—ng—ge gD son
                                                            6


   dom—ine de prédile™tionF
! xos infogr—phistesD p—n tiyong @™ouverture de ™e livreA et ‰—nni™k €i—ult @illustr—E
   tions des ™h—pitresA qui ont tr—v—illé d9—rr—™heEpied pend—nt plusieurs sem—ines pour
   livrer le meilleur tr—v—il possi˜leF
  6. Eh oui, même ce livre est compilé, on ne se refait pas. :-)

                                                                                      v
CHAPITRE 0. AVANT-PROPOS

! v9équipe des zgorre™teursD des p—ssionnés de l—ngue fr—nç—ise et de typogr—phie
  qui ™orrigent depuis longtemps les ™ours du ƒite du éro et qui ont f—it un tr—v—il
  formid—˜le de rigueur et d9e0™—™ité pour relire ™e livre @triple rele™ture pour ™h—que
  ™h—pitre 3AF te tiens à remer™ier en p—rti™ulier les ™inq ™orre™teurs qui se sont ™h—rgés
  de l— rele™ture de ™e livre X €hilippe vutun @ptipilouAD voï™ ve freton @pihldAD w—rtin
  ‡etterw—ld @ht poxAD quill—ume q—ullier @quill—wmeA et véo ‚oux @xeltyAF
! v9équipe du ƒite du éroD p—sséeD présente et futureF veur —ide pour f—ire tourner le
  site est inestim—˜leF ‚édiger une liste ™omplète des mem˜res de l9équipe ser—it ˜ien
  trop long i™iD m—is ils s—uront se re™onn—ître tous —ut—nt qu9ils sontF YEA
! in(n et surtoutD tous ™eux qui nous ont f—it ™on(—n™e et nous ont en™our—gés à
  ™ontinuer X les visiteurs du ƒite du éro F iux —ussi sont un peu trop nom˜reux
                                                      7


  pour être listés i™iD m—is qu9ils s—™hent à quel point leurs en™our—gements ont été le
  moteur de l— ™ré—tion de ™e livreF
wer™i à vous en(nD qui vous —pprêtez à nous f—ire ™on(—n™e en lis—nt ™e livreF te vous
souh—ite une ˜onne et —gré—˜le le™tureD et surtout n9ou˜liez p—s d9y prendre du pl—isir 3




     7. Il est intéressant de noter que toutes les personnes listées précédemment en font partie !

vi
Sommaire



Avant-propos                                                                                                                              i
   u9estE™e que ™e livre vous propose c     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F ii
   gomment lire ™e livre c F F F F F F F F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F ii
   hu ƒite du éro —u vivre du éro F F      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F iv
   ‚emer™iements F F F F F F F F F F F F     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F v

I Les bases de la programmation en C                                                                                                     1
1 Vous avez dit programmer ?                                                                                                             3
   €rogr—mmerD ™9est quoi c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F                                                   R
   €rogr—mmerD d—ns quel l—ng—ge c F F F F F F F F F F F F F F F F F F F F F F F F F                                                      S
   €rogr—mmerD ™9est dur c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F                                                    W
2 Ayez les bons outils !                                                                                                                 11
   ves outils né™ess—ires —u progr—mmeur F F             F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IP
   gode: :flo™ks @‡indowsD w—™ yƒD vinuxA                F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IQ
   †isu—l gCC @‡indows seulementA F F F F                F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IW
   ˆ™ode @w—™ yƒ seulementA F F F F F F F F              F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PS
3 Votre premier programme                                                                                                                31
   gonsole ou fenêtre c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QP
   …n minimum de ™ode F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QR
   É™rire un mess—ge à l9é™r—n F F F F F F F F F F F F F F F F F F F F F F F F F F F F QW
                                             vii
SOMMAIRE

       ves ™omment—iresD ™9est très utile 3 F F F F F F F F F F F F F F F F F F F F F F F F RQ

4 Un monde de variables                                                                                                                                  47
       …ne —'—ire de mémoire F F F F F F                 F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    RV
       hé™l—rer une v—ri—˜le F F F F F F F F             F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    SP
       e0™her le ™ontenu d9une v—ri—˜le F                F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    SW
       ‚é™upérer une s—isie F F F F F F F F              F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    TI

5 Une bête de calcul                                                                                                                                     65
       ves ™—l™uls de ˜—se F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F TT
       ves r—™™our™is F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F UH
       v— ˜i˜liothèque m—thém—tique F F F F F F F F F F F F F F F F F F F F F F F F F F UP

6 Les conditions                                                                                                                                          77
       v— ™ondition ifFFF else F F F F F F F F F                         F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    UV
       ves ˜ooléensD le ™oeur des ™onditions F F F                       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    VR
       v— ™ondition swit™h F F F F F F F F F F F F                       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    VU
       ves tern—ires X des ™onditions ™ondensées F                       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    WI

7 Les boucles                                                                                                                                             93
       u9estE™e qu9une ˜ou™le c     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    WR
       v— ˜ou™le while F F F F F     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    WR
       v— ˜ou™le doFFF while F       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    WU
       v— ˜ou™le for F F F F F F F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F    WV

8 TP : Plus ou Moins, votre premier jeu                                                                                                                  101
       €rép—r—tifs et ™onseils F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHP
       gorre™tion 3 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHR
       sdées d9—mélior—tion F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHU

9 Les fonctions                                                                                                                                          109
       gréer et —ppeler une fon™tion F F F F F F F F F F F F F F F F F F F F F F F F F F F IIH
       hes exemples pour ˜ien ™omprendre F F F F F F F F F F F F F F F F F F F F F F F IIV
viii
SOMMAIRE

II Techniques  avancées  du langage C                                                                                                                          125
10 La programmation modulaire                                                                                                                                    127
  ves prototypes F F F F F F F F F F F F F F                                 F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IPV
  ves he—ders F F F F F F F F F F F F F F F F                                F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IQH
  v— ™ompil—tion sép—rée F F F F F F F F F F                                 F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IQS
  v— portée des fon™tions et des v—ri—˜les                                   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IQV
11 À l'assaut des pointeurs                                                                                                                                      143
  …n pro˜lème ˜ien ennuyeux F F F F F F F F                                      FF      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IRR
  v— mémoireD une question d9—dresse F F F                                       FF      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IRT
  …tiliser des pointeurs F F F F F F F F F F F F                                 FF      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IRW
  invoyer un pointeur à une fon™tion F F F F                                     FF      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   ISR
  ui — dit X  …n pro˜lème ˜ien ennuyeux                                        c       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   ISU
12 Les tableaux                                                                                                                                                  159
  ves t—˜le—ux d—ns l— mémoire F F F                             F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   ITH
  hé(nir un t—˜le—u F F F F F F F F F                            F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   ITH
  €—r™ourir un t—˜le—u F F F F F F F F                           F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   ITQ
  €—ss—ge de t—˜le—ux à une fon™tion                             F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   ITS
13 Les chaînes de caractères                                                                                                                                     169
  ve type ™h—r F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IUH
  ves ™h—înes sont des t—˜le—ux de ™h—r F F F F F F F F F F F F F F F F F F F F F F IUP
  pon™tions de m—nipul—tion des ™h—înes F F F F F F F F F F F F F F F F F F F F F F IUT
14 Le préprocesseur                                                                                                                                              187
  ves in™lude F F    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IVV
  ves define F F     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IWH
  ves m—™ros F F     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IWQ
  ves ™onditions F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   IWT
15 Créez vos propres types de variables                                                                                                                          201
  hé(nir une stru™ture F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PHP
  …tilis—tion d9une stru™ture F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PHR
  €ointeur de stru™ture F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PHV
                                                                                                                                                                  ix
SOMMAIRE

    ves énumér—tions F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PII
16 Lire et écrire dans des chiers                                                                                                                 215
    yuvrir et fermer un (™hier F F F F F F F F F                   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PIT
    hi'érentes méthodes de le™ture G é™riture                      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PPQ
    ƒe dépl—™er d—ns un (™hier F F F F F F F F F                   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PQI
    ‚enommer et supprimer un (™hier F F F F                        F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PQQ
17 L'allocation dynamique                                                                                                                          235
    v— t—ille des v—ri—˜les F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PQT
    ello™—tion de mémoire dyn—mique F F F F F F F F F F F F F F F F F F F F F F F F PRH
    ello™—tion dyn—mique d9un t—˜le—u F F F F F F F F F F F F F F F F F F F F F F F F PRS
18 TP : réalisation d'un Pendu                                                                                                                     249
    ves ™onsignes F F F F F F F F F F F F F F F F F                    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PSH
    v— solution @I X le ™ode du jeuA F F F F F F F                     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PST
    v— solution @P X l— gestion du di™tionn—ireA F                     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PTI
    sdées d9—mélior—tion F F F F F F F F F F F F F                     F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   PUI
19 La saisie de texte sécurisée                                                                                                                    273
    ves limites de l— fon™tion s™—nf F F F F F F F F F F F F F F F F F F F F F F F F F F PUR
    ‚é™upérer une ™h—îne de ™—r—™tères F F F F F F F F F F F F F F F F F F F F F F F F PUT
    gonvertir l— ™h—îne en nom˜re F F F F F F F F F F F F F F F F F F F F F F F F F F F PVQ

III Création de jeux 2D en SDL                                                                                                                     287
20 Installation de la SDL                                                                                                                          289
    €ourquoi —voir ™hoisi l— ƒhv c F F F F F F F F F F F F F F F F F F F F F F F F F F F PWH
    „élé™h—rgement de l— ƒhv F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PWR
    gréer un projet ƒhv F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PWS
21 Création d'une fenêtre et de surfaces                                                                                                           305
    gh—rger et —rrêter l— ƒhv F    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QHT
    yuverture d9une fenêtre F F    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QIH
    w—nipul—tion des surf—™es F    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QIU
    ixer™i™e X ™réer un dégr—dé    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QPU
x
SOMMAIRE

22 Acher des images                                                                                                                        333
   gh—rger une im—ge fw€ F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QQR
   qestion de l— tr—nsp—ren™e F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QQV
   gh—rger plus de form—ts d9im—ge —ve™ ƒhv•sm—ge F F F F F F F F F F F F F F F F QRP
23 La gestion des événements                                                                                                                351
   ve prin™ipe des événements F F F F       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QSP
   ve ™l—vier F F F F F F F F F F F F F F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QSU
   ixer™i™e X diriger ozor —u ™l—vier F    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QTH
   v— souris F F F F F F F F F F F F F F    F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QTV
   ves événements de l— fenêtre F F F       F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QUP
24 TP : Mario Sokoban                                                                                                                       377
   g—hier des ™h—rges du ƒoko˜—n F F F F F F                F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QUV
   ve m—in et les ™onst—ntes F F F F F F F F F              F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QVI
   ve jeu F F F F F F F F F F F F F F F F F F F F           F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   QVT
   gh—rgement et enregistrement de nive—ux                  F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RHH
   v9éditeur de nive—ux F F F F F F F F F F F F             F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RHP
   ‚ésumé et —mélior—tions F F F F F F F F F F              F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RHV
25 Maîtrisez le temps !                                                                                                                     411
   ve Delay et les ticks F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RIP
   ves timers F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RPH
26 Écrire du texte avec ƒhv•ttf                                                                                                             425
   snst—ller ƒhv•ttf F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RPT
   gh—rgement de ƒhv•ttf F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RPV
   ves di'érentes méthodes d9é™riture F F F F F F F F F F F F F F F F F F F F F F F F RQI
27 Jouer du son avec FMOD                                                                                                                   443
   snst—ller pwyh F F F F F F F F F F F F F         F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RRR
   sniti—liser et li˜érer pwyh F F F F F F          F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RRT
   ves sons ™ourts F F F F F F F F F F F F F        F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RRU
   ves musiques @w€QD yqqD ‡weF F FA                F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RSP
   ves musiques @wshsA F F F F F F F F F F          F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RSU
                                                                                                                                             xi
SOMMAIRE

28 TP : visualisation spectrale du son                                                                                                          463
      ves ™onsignes F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RTR
      v— solution F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RUH
      sdées d9—mélior—tion F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RUR

IV Les structures de données                                                                                                                    475
29 Les listes chaînées                                                                                                                          477
      ‚eprésent—tion d9une liste ™h—înée        F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RUV
      gonstru™tion d9une liste ™h—înée F F      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RUW
      ves fon™tions de gestion de l— liste      F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RVP
      eller plus loin F F F F F F F F F F F F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   RVU
30 Les piles et les les                                                                                                                        489
      ves piles F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RWH
      ves (les F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RWU
31 Les tables de hachage                                                                                                                        503
      €ourquoi utiliser une t—˜le de h—™h—ge c              F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   SHR
      u9estE™e qu9une t—˜le de h—™h—ge c F F F             F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   SHR
      É™rire une fon™tion de h—™h—ge F F F F F              F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   SHT
      qérer les ™ollisions F F F F F F F F F F F F          F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   F   SHV




xii
Première partie
Les bases de la programmation
             en C




               I
Chapitre      1
Vous avez dit programmer ?

                                                                         Diculté :


V     ous avez déjà entendu parler de programmation et nul doute que si vous avez ce
      livre entre les mains, c'est parce que vous voulez  enn  comprendre comment ça
      fonctionne.
Mais programmer en langage C. . . ça veut dire quoi ? Est-ce que c'est bien pour com-
mencer ? Est-ce que vous avez le niveau pour programmer ? Est-ce qu'on peut tout faire
avec ?
Ce chapitre a pour but de répondre à toutes ces questions apparemment bêtes et pourtant
très importantes. Grâce à ces questions simples, vous saurez à la n de ce premier chapitre
ce qui vous attend. C'est quand même mieux de savoir à quoi sert ce que vous allez
apprendre, vous ne trouvez pas ?




                                            Q
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?

Programmer, c'est quoi ?
yn ™ommen™e p—r l— question l— plus simple qui soitD l— plus ˜—sique de toutes les
questions ˜—siquesF ƒi vous —vez l9impression de déjà s—voir tout ç—D je vous ™onseille
de lire qu—nd mêmeD ç— ne peut p—s vous f—ire de m—l 3 te p—rs de zéro pour ™e ™oursD
don™ je v—is devoir répondre à l— question X

              Que signie le mot  programmer  ?

€rogr—mmer signi(e ré—liser des  progr—mmes inform—tiques F ves progr—mmes deE
m—ndent à l9ordin—teur d9e'e™tuer des —™tionsF
†otre ordin—teur est rempli de progr—mmes en tous genres X
! l— ™—l™ul—tri™e est un progr—mme Y
! votre tr—itement de texte est un progr—mme Y
! votre logi™iel de  ™h—t est un progr—mme Y
! les jeux vidéo sont des progr—mmes @™fF (gF IFID le ™élè˜re jeu r—lfEvife PAF




    Figure IFI ! ve jeu r—lfEvife P — été progr—mmé en gCCD un l—ng—ge voisin du g
in ˜refD les progr—mmes sont p—rtout et permettent de f—ire — priori tout et n9importe
quoi sur un ordin—teurF †ous pouvez inventer un logi™iel de ™rypt—ge révolutionn—ire si
ç— vous ™h—nteD ou ré—liser un jeu de ™om˜—t en Qh sur snternetD peu importeF †otre
ordin—teur peut tout f—ire @s—uf le ™—féD m—is j9y tr—v—illeAF
ettention 3 te n9—i p—s dit que ré—liser un jeu vidéo se f—is—it en ™l—qu—nt des doigtsF t9—i
simplement dit que tout ™el— ét—it possi˜leD m—is soyez sûrs que ç— dem—nde ˜e—u™oup
de tr—v—ilF
R
PROGRAMMER, DANS QUEL LANGAGE ?

gomme vous dé˜utezD nous n9—llons p—s ™ommen™er en ré—lis—nt un jeu QhF ge ser—it
sui™id—ireF xous —llons devoir p—sser p—r des progr—mmes très simplesF …ne des preE
mières ™hoses que nous verrons est comment acher un message à l'écranF yuiD je s—isD
ç— n9— rien de tr—ns™end—ntD m—is rien que ç— ™royezEmoiD ™e n9est p—s —ussi f—™ile que
ç— en — l9—irF
Ç— impressionne moins les —misD m—is on v— ˜ien devoir p—sser p—r làF €etit à petitD
vous —pprendrez su0s—mment de ™hoses pour ™ommen™er à ré—liser des progr—mmes
de plus en plus ™omplexesF ve ˜ut de ™e ™ours est que vous soyez ™—p—˜les de vous en
sortir d—ns n9importe quel progr—mme é™rit en gF
w—is tenezD —u f—itD vous s—vez ™e que ™9est vousD ™e f—meux  l—ng—ge g c



Programmer, dans quel langage ?
†otre ordin—teur est une m—™hine ˜iz—rreD ™9est le moins que l9on puisse direF yn ne
peut s9—dresser à lui qu9en lui envoy—nt des H et des IF einsiD si je tr—duis  p—is le
™—l™ul Q C S en l—ng—ge inform—tiqueD ç— pourr—it donner quelque ™hose ™omme X      1



HHIHIIHIIHHIHHIIHIHHIIIIH
ge que vous voyez làD ™9est le l—ng—ge inform—tique de votre ordin—teurD —ppelé langage
binaire @retenez ˜ien ™e mot 3AF †otre ordin—teur ne ™onn—ît que ™e l—ng—geElà etD
™omme vous pouvez le ™onst—terD ™9est —˜solument in™ompréhensi˜leF
hon™ voilà notre premier vr—i pro˜lème X
             Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et
             des 1 ?

†otre ordin—teur ne p—rle p—s l9—ngl—is et en™ore moins le fr—nç—isF €ourt—ntD il est
in™on™ev—˜le d9é™rire un progr—mme en l—ng—ge ˜in—ireF wême les inform—ti™iens les
plus fous ne le font p—sD ™9est vous dire 3
ih ˜ien l9idée que les inform—ti™iens ont eueD ™9est d9inventer de nouve—ux l—ng—ges
qui ser—ient ensuite tr—duits en ˜in—ire pour l9ordin—teurF ve plus dur à f—ireD ™9est
de ré—liser le progr—mme qui f—it l—  tr—du™tion F reureusementD ™e progr—mme —
déjà été é™rit p—r des inform—ti™iens et nous n9—urons p—s à le ref—ire @ouf 3AF yn v—
—u ™ontr—ire s9en servir pour é™rire des phr—ses ™omme X  Fais le calcul 3 + 5
qui seront tr—duites p—r le progr—mme de  tr—du™tion en quelque ™hose ™omme X
 HHIHIIHIIHHIHHIIHIHHIIIIH F
ve s™hém— IFP résume ™e que je viens de vous expliquerF

  1. J'invente, je ne connais quand même pas la traduction informatique par c÷ur.

                                                                                        S
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?




          Figure IFP ! ƒ™hém— @très simpli(éA de ré—lis—tion d9un progr—mme

Un peu de vocabulaire
và j9—i p—rlé —ve™ des mots simplesD m—is il f—ut s—voir qu9en inform—tique il existe
un mot pour ™h—™une de ™es ™hosesElàF „out —u long de ™e ™oursD vous —llez d9—illeurs
—pprendre à utiliser un vo™—˜ul—ire —ppropriéF xon seulement vous —urez l9—ir de s—voir
de quoi vous p—rlezD m—is si un jour @et ç— —rriver—A vous devez p—rler à un —utre
progr—mmeurD vous s—urez vous f—ire ™omprendre F          2



‚eprenons le s™hém— que l9on vient de voirF v— première ™—se est  †otre progr—mme
est é™rit d—ns un l—ng—ge simpli(é F ge f—meux  l—ng—ge simpli(é est —ppelé en f—it
langage de haut niveauF sl existe plusieurs nive—ux de l—ng—gesF €lus un l—ng—ge est
h—ut nive—uD plus il est pro™he de votre vr—ie l—ngue @™omme le fr—nç—isAF …n l—ng—ge de
h—ut nive—u est don™ f—™ile à utiliserD m—is ™el— — —ussi quelques petits déf—uts ™omme
nous le verrons plus t—rdF
sl existe de nom˜reux l—ng—ges de plus ou moins h—ut nive—u en inform—tique d—ns
lesquels vous pouvez é™rire vos progr—mmesF in voi™i quelquesEuns p—r exemple X
! le g Y
! le gCC Y
! t—v— Y
! †isu—l f—si™ Y
! helphi Y
! et™F
xotez que je ne les —i p—s ™l—ssés p—r  nive—u de l—ng—ge D n9—llez don™ p—s vous
im—giner que le premier de l— liste est plus f—™ile que le dernier ou l9inverseF ge sont
juste quelques exemples F   3



gert—ins de ™es l—ng—ges sont plus h—ut nive—u que d9—utres @don™ en théorie un peu
plus f—™iles à utiliserAF yn v— voir not—mment un peu plus loin ™e qui di'éren™ie le
l—ng—ge g du l—ng—ge gCCF
…n —utre mot de vo™—˜ul—ire à retenir est code sourceF ge qu9on —ppelle le ™ode
sour™eD ™9est tout simplement le ™ode de votre progr—mme é™rit d—ns un l—ng—ge de
h—ut nive—uF g9est don™ vous qui é™rivez le ™ode sour™eD qui ser— ensuite tr—duit en
   2. Certes, les gens autour de vous vous regarderont comme si vous êtiez des extra-terrestres, mais
ça il ne faudra pas y faire attention !
   3. D'avance désolé pour tous les autres langages qui existent, mais faire une liste complète serait
vraiment trop long !

T
PROGRAMMER, DANS QUEL LANGAGE ?

˜in—ireF
†enonsEen justement —u  progr—mme de tr—du™tion qui tr—duit notre l—ng—ge de h—ut
nive—u @™omme le g ou le gCCA en ˜in—ireF ge progr—mme — un nom X on l9—ppelle le
compilateurF v— tr—du™tionD elleD s9—ppelle la compilationF
„rès import—nt X il existe un ™ompil—teur di'érent pour ™h—que l—ng—ge de h—ut nive—uF
g9est d9—illeurs tout à f—it logique X les l—ng—ges ét—nt di'érentsD on ne tr—duit p—s le
gCC de l— même m—nière qu9on tr—duit le helphiF
             Vous verrez par la suite que même pour le langage C il existe plusieurs com-
             pilateurs diérents ! Il y a le compilateur écrit par Microsoft, le compilateur
             GNU, etc. On verra tout cela dans le chapitre suivant. Heureusement, ces
             compilateurs-là sont quasiment identiques (même s'il y a parfois quelques
              légères  diérences que nous apprendrons à reconnaître).

in(nD le progr—mme ˜in—ire ™réé p—r le ™ompil—teur est —ppelé l'exécutableF g9est
d9—illeurs pour ™ette r—ison que les progr—mmes @tout du moins sous ‡indowsA ont
l9extension  Fexe ™omme iˆi™ut—˜leF
‚eprenons notre s™hém— pré™édentD et utilisons ™ette fois des vr—is mots tordus d9inE
form—ti™ien @(gF IFQAF




               Figure IFQ ! ve même s™hém—D —ve™ le ˜on vo™—˜ul—ire

Pourquoi choisir d'apprendre le C ?
gomme je vous l9—i dit plus h—utD il existe de très nom˜reux l—ng—ges de h—ut nive—uF
hoitEon ™ommen™er p—r l9un d9entre eux en p—rti™ulier c qr—nde questionF
€ourt—ntD il f—ut ˜ien f—ire un ™hoixD ™ommen™er l— progr—mm—tion à un moment ou à
un —utreF it làD vous —vez en f—it le ™hoix entre X
! un langage très haut niveau X ™9est f—™ile à utiliserD plutôt  gr—nd pu˜li™ F €—rmi
  euxD on ™ompte €ythonD ‚u˜yD †isu—l f—si™ et ˜ien d9—utresF ges l—ng—ges permettent
  d9é™rire des progr—mmes plus r—pidementD en règle génér—leF sls né™essitent toutefois
  d9être —™™omp—gnés de (™hiers pour qu9ils puissent s9exé™uter @™omme un interpréE
  teurA Y
! un langage un peu plus bas niveau @m—is p—s trop qu—nd même 3A X ils sont
  peutEêtre un peu plus di0™iles ™ertesD m—is —ve™ un l—ng—ge ™omme le gD vous —llez
  en —pprendre ˜e—u™oup plus sur l— progr—mm—tion et sur le fon™tionnement de votre
                                                                                           U
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?

   ordin—teurF †ous serez ensuite l—rgement ™—p—˜les d9—pprendre un —utre l—ng—ge de
   progr—mm—tion si vous le désirezF †ous serez don™ plus —utonomesF €—r —illeursD le g
   est un l—ng—ge très popul—ireF sl est utilisé pour progr—mmer une gr—nde p—rtie des
   logi™iels que vous ™onn—issezF
in(nD le l—ng—ge g est un des l—ng—ges les plus ™onnus et les plus utilisés qui existentF
sl est très fréquent qu9il soit enseigné lors d9études supérieures en inform—tiqueF
†oilà les r—isons qui m9in™itent à vous —pprendre le l—ng—ge g plutôt qu9un —utre F te      4


ne dis p—s qu9il faut ™ommen™er p—r ç—D m—is je vous dis plutôt que ™9est un ˜on ™hoix
qui v— vous donner de solides ™onn—iss—n™esF
te v—is supposer tout —u long de ™e ™ours que ™9est votre premier l—ng—ge de progr—mE
m—tionD que vous n9—vez j—m—is f—it de progr—mm—tion —v—ntF ƒi p—r h—s—rdD vous —vez
déjà un peu progr—mméD ç— ne pourr— p—s vous f—ire de m—l de reprendre à zéroF
              Il y a quelque chose que je ne comprends pas. . . Quelle est la diérence entre
              le langage  C  et cet autre langage dont on parle, le langage  C++  ?

ve l—ng—ge g et le l—ng—ge gCC sont très simil—iresF sls sont tous les deux toujours très
utilisésF €our ˜ien ™omprendre ™omment ils sont nésD il f—ut f—ire un peu d9histoireF
! eu tout dé˜utD à l9époque où les ordin—teurs pes—ient des tonnes et f—is—ient l— t—ille
  de votre m—isonD on — ™ommen™é à inventer un l—ng—ge de progr—mm—tion —ppelé
  l'AlgolF
! ves ™hoses évolu—ntD on — ™réé un nouve—u l—ng—ge —ppelé le CPLD qui évolu— luiE
  même en BCPLD qui prit ensuite le nom de langage BF
! €uis un ˜e—u jourD on en est —rrivé à ™réer un —utre l—ng—ge en™oreD qu9on — —ppeléF F F
  le langage CF ge l—ng—geD s9il — su˜i quelques modi(™—tionsD reste en™ore un des plus
  utilisés —ujourd9huiF
! …n peu plus t—rdD on — proposé d9—jouter des ™hoses —u l—ng—ge gF …ne sorte d9—mélioE
  r—tion si vous voulezF ge nouve—u l—ng—geD que l9on — —ppelé  gCC D est entièrement
  ˜—sé sur le gF Le langage C++ n9est en f—it rien d9—utre que le l—ng—ge g —ve™ des
  —jouts permett—nt de progr—mmer d9une f—çon di'érenteF
              Qu'il n'y ait pas de malentendus : le langage C++ n'est pas  meilleur 
              que le langage C, il permet juste de programmer diéremment. Disons aussi
              qu'il permet au nal de programmer un peu plus ecacement et de mieux
              hiérarchiser le code de son programme. Malgré tout, il ressemble beaucoup
              au C. Si vous voulez passer au C++ par la suite, cela vous sera facile.

ge n9est €eƒ p—r™e que le gCC est une  évolution du g qu9il f—ut —˜solument f—ire
du gCC pour ré—liser des progr—mmesF ve l—ng—ge g n9est p—s un  vieux l—ng—ge
ou˜lié X —u ™ontr—ireD il est en™ore très utilisé —ujourd9huiF sl est à l— ˜—se des plus
gr—nds systèmes d9exploit—tion tels …nix @et don™ vinux et w—™ yƒA ou ‡indowsF
  4. On pourrait citer d'autres raisons : certains langages de programmation sont plus destinés au
Web (comme PHP) qu'à la réalisation de programmes informatiques.

V
PROGRAMMER, C'EST DUR ?

Retenez donc X le g et le gCC ne sont p—s des l—ng—ges ™on™urrentsD on peut f—ire
—ut—nt de ™hoses —ve™ l9un qu9—ve™ l9—utreF ge sont juste deux m—nières de progr—mmer
—ssez di'érentesF

Programmer, c'est dur ?
†oilà une question qui doit ˜ien vous torturer l9espritF elors X f—utEil être un superE
m—thém—ti™ien qui — f—it IH —ns d9études supérieures pour pouvoir ™ommen™er l— proE
gr—mm—tion c
v— réponseD que je vous r—ssureD est nonF xonD un superEnive—u en m—ths n9est p—s néE
™ess—ireF in f—it tout ™e que vous —vez ˜esoin de ™onn—îtreD ™e sont les qu—tre opér—tions
de ˜—se X
! l9—ddition Y
! l— soustr—™tion Y
! l— multipli™—tion Y
! l— divisionF
ge n9est p—s trop intimid—ntD —vouez 3 te vous expliquer—i d—ns un pro™h—in ™h—pitre
™omment l9ordin—teur ré—lise ™es opér—tions de ˜—se d—ns vos progr—mmesF
frefD nive—u m—thsD il n9y — p—s de di0™ulté insurmont—˜leF in f—itD tout dépend du
progr—mme que vous —llez ré—liser X si vous devez f—ire un logi™iel de ™rypt—geD —lors
ouiD il vous f—udr— ™onn—ître des ™hoses en m—thsF ƒi vous devez f—ire un progr—mme
qui f—it de l— QhD ouiD il vous f—udr— quelques ™onn—iss—n™es en géométrie de l9esp—™eF
gh—que ™—s est p—rti™ulierF w—is pour —pprendre le l—ng—ge g luiEmêmeD vous n9—vez
p—s ˜esoin de ™onn—iss—n™es pointues en quoi que ™e soitF

             Mais alors, où est le piège ? Où est la diculté ?

sl f—ut s—voir ™omment un ordin—teur fon™tionne pour ™omprendre ™e qu9on f—it en gF
he ™e point de vueElàD r—ssurezEvousD je vous —pprendr—i tout —u fur et à mesureF
xotez qu9un progr—mmeur — —ussi ™ert—ines qu—lités ™omme X
! la patience X un progr—mme ne m—r™he j—m—is du premier ™oupD il f—ut s—voir perE
   sévérer 3
! le sens de la logique X p—s ˜esoin d9être forts en m—ths ™ertesD m—is ç— ne vous
   empê™her— p—s d9—voir à ré)é™hirF hésolé pour ™eux qui pens—ient que ç— —ll—it tom˜er
   tout ™uit s—ns e'ort 3
! le calme X nonD on ne t—pe p—s sur son ordin—teur —ve™ un m—rte—uF ge n9est p—s ç—
   qui fer— m—r™her votre progr—mmeF
in ˜refD et pour f—ire simpleD il n9y — p—s de vérit—˜les ™onn—iss—n™es requises pour
progr—mmerF …n nul en m—ths peut s9en sortir s—ns pro˜lèmeD le tout est d9—voir l—
p—tien™e de ré)é™hirF sl y en — d9—illeurs ˜e—u™oup qui dé™ouvrent qu9ils —dorent ç— 3
                                                                                        W
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?

En résumé
! €our ré—liser des progr—mmes inform—tiquesD on doit é™rire d—ns un langage que
  l9ordin—teur  ™omprend F
! sl existe de nom˜reux l—ng—ges inform—tiques que l9on peut ™l—sser p—r nive—uF ves
  l—ng—ges dits de  h—ut nive—u sont p—rfois plus f—™iles à m—îtriser —u détriment
  souvent d9une perte de perform—n™es d—ns le progr—mme (n—lF
! ve langage C que nous —llons étudier d—ns ™e livre est ™onsidéré ™omme ét—nt de ˜—s
  nive—uF g9est un des l—ng—ges de progr—mm—tion les plus ™élè˜res et les plus utilisés
  —u mondeF
! ve code source est une série d9instru™tions é™rites d—ns un l—ng—ge inform—tiqueF
! ve compilateur est un progr—mme qui tr—nsforme votre ™ode sour™e en code bi-
  naireD qui peut —lors être exé™uté p—r votre pro™esseurF ves Fexe que l9on ™onn—ît
  sont des progr—mmes ˜in—iresD il n9y — plus de ™ode sour™e à l9intérieurF
! v— progr—mm—tion ne requiert p—s en elleEmême de ™onn—iss—n™es m—thém—tiques
  poussées Y né—nmoinsD il est né™ess—ire d9—voir un ˜on sens de l— logique et d9être
             5


  méthodiqueF




  5. Sauf dans quelques cas précis où votre application doit faire appel à des formules mathématiques,
comme c'est le cas des logiciels de cryptage.

IH
Chapitre       2
Ayez les bons outils !

                                                                            Diculté :


A      près un premier chapitre plutôt introductif, nous commençons à entrer dans le vif du
       sujet. Nous allons répondre à la question suivante :  De quels logiciels a-t-on besoin
       pour programmer ? .
Il n'y aura rien de dicile à faire dans ce chapitre, on va prendre le temps de se familiariser
avec de nouveaux logiciels.
Protez-en ! Dans le chapitre suivant, nous commencerons à vraiment programmer et il ne
sera plus l'heure de faire la sieste !




                                              II
CHAPITRE 2. AYEZ LES BONS OUTILS !

Les outils nécessaires au programmeur
elors à votre —visD de quels outils un progr—mmeur —EtEil ˜esoin c ƒi vous —vez —ttentiE
vement suivi le ™h—pitre pré™édentD vous devez en ™onn—ître —u moins un 3
†ous voyez de quoi je p—rle cF F F †r—iment p—s c
ih ouiD il s9—git du compilateurD ™e f—meux progr—mme qui permet de tr—duire votre
l—ng—ge g en l—ng—ge ˜in—ire 3
gomme je vous l9—v—is déjà un peu dit d—ns le premier ™h—pitreD il existe plusieurs
™ompil—teurs pour le l—ng—ge gF xous —llons voir que le ™hoix du ™ompil—teur ne ser—
p—s très ™ompliqué d—ns notre ™—sF
fonD de quoi d9—utre —EtEon ˜esoin c te ne v—is p—s vous l—isser deviner plus longtempsF
†oi™i le stri™t minimum pour un progr—mmeur X
! un éditeur de texte pour é™rire le ™ode sour™e du progr—mmeF in théorie un logi™iel
   ™omme le flo™Enotes sous ‡indowsD ou  vi sous vinux f—it l9—'—ireF v9idé—lD ™9est
   d9—voir un éditeur de texte intelligent qui ™olore tout seul le ™odeD ™e qui vous permet
   de vous y repérer ˜ien plus f—™ilement Y
! un compilateur pour tr—nsformer @ ™ompiler A votre sour™e en ˜in—ire Y
! un débogueur pour vous —ider à tr—quer les erreurs d—ns votre progr—mme F                   1



e prioriD si vous êtes —venturiersD vous pouvez vous p—sser de dé˜ogueurF w—is ˜onD je
s—is pertinemment que vous ne t—rderez p—s à en —voir ˜esoinF YEA
À p—rtir de m—inten—nt on — deux possi˜ilités X
! soit on ré™upère ™h—™un de ™es trois progr—mmes séparémentF g9est l— méthode
   l— plus ™ompliquéeD m—is elle fon™tionneF ƒous vinux en p—rti™ulierD ˜on nom˜re de
   progr—mmeurs préfèrent utiliser ™es trois progr—mmes sép—rémentF te ne dét—iller—i
   p—s ™ette méthode i™iD je v—is plutôt vous p—rler de l— méthode simple Y
! soit on utilise un progr—mme  troisEenEun @™omme les liquides v—isselleD ouiD ouiA
   qui ™om˜ine éditeur de texteD ™ompil—teur et dé˜ogueurF ges progr—mmes  troisEenE
   un sont —ppelés IDE D ou en™ore  invironnements de développement F
                              2



sl existe plusieurs environnements de développementF eu dé˜utD vous —urez peutEêtre
un peu de m—l à ™hoisir ™elui qui vous pl—îtF …ne ™hose est sûre en tout ™—s X vous pouvez
ré—liser n9importe quel type de progr—mmeD quel que soit l9shi que vous ™hoisissezF

Choisissez votre IDE
sl m9— sem˜lé intéress—nt de vous montrer quelques shi p—rmi les plus ™onnusF „ous
sont disponi˜les gr—tuitementF €ersonnellementD je n—vigue un peu entre tous ™euxElà
et j9utilise l9shi qui me pl—ît selon le jourF
! …n des shi que je préfère s9—ppelle Code: :BlocksF sl est gr—tuit et fon™tionne sur
   l— plup—rt des systèmes d9exploit—tionF te ™onseille d9utiliser ™eluiE™i pour dé˜uter @et
  1. On n'a malheureusement pas encore inventé le  correcteur  qui corrigerait tout seul nos erreurs.
Ceci dit, quand on sait bien se servir du débogueur, on peut facilement retrouver ses erreurs !
  2. Integrated Development Environment

IP
CODE: :BLOCKS (WINDOWS, MAC OS, LINUX)

  même pour l— suite s9il vous pl—ît ˜ien 3AF pon™tionne sous ‡indowsD w—™ et vinuxF
! ve plus ™élè˜re shi sous ‡indowsD ™9est ™elui de wi™rosoft X Visual C++F sl existe à
  l— ˜—se en version p—y—nte @™hère 3AD m—is il existe heureusement une version gr—tuite
  intitulée Visual C++ Express qui est vr—iment très ˜ien @il y — peu de di'éE
  ren™es —ve™ l— version p—y—nteAF sl est très ™omplet et possède un puiss—nt module de
  ™orre™tion des erreurs @dé˜og—geAF pon™tionne sous ‡indows uniquementF
! ƒur w—™ yƒ ˆD vous pouvez utiliser ˆ™odeD génér—lement fourni sur le gh d9insE
  t—ll—tion de w—™ yƒ ˆF g9est un shi très —ppré™ié p—r tous ™eux qui font de l—
  progr—mm—tion sur w—™F pon™tionne sous w—™ yƒ ˆ uniquementF
             Note pour les utilisateurs de Linux : il existe de nombreux IDE sous Linux, mais
             les programmeurs expérimentés préfèrent parfois se passer d'IDE et compiler
              à la main , ce qui est un peu plus dicile. En ce qui nous concerne nous al-
             lons commencer par utiliser un IDE. Je vous conseille d'installer Code: :Blocks
             si vous êtes sous Linux, pour suivre mes explications.


             Quel est le meilleur de tous ces IDE ?

„ous ™es shi vous permettront de progr—mmer et de suivre le reste de ™e ™ours s—ns
pro˜lèmeF gert—ins sont plus ™omplets —u nive—u des optionsD d9—utres un peu plus
intuitifs à utiliserD m—is d—ns tous les ™—s les progr—mmes que vous ™réerez seront les
mêmes quel que soit l9shi que vous utilisezF ge ™hoix n9est don™ p—s si ™ru™i—l qu9on
pourr—it le ™roireF
„out —u long de tout ™e ™oursD j9utiliser—i gode: :flo™ksF ƒi vous voulez o˜tenir ex—™E
tement les mêmes é™r—ns que moiD surtout pour ne p—s être perdus —u dé˜utD je vous
re™omm—nde don™ de ™ommen™er p—r inst—ller gode: :flo™ksF




Code: :Blocks (Windows, Mac OS, Linux)

gode: :flo™ks est un shi li˜re et gr—tuitD disponi˜le pour Windows, Mac et LinuxF
gode: :flo™ks n9est disponi˜le pour le moment qu9en —ngl—isF gel— ne devr—it €eƒ vous
repousser à l9utiliserF groyezEmoiD nous —urons quoi qu9il en soit peu —'—ire —ux menus X
™9est le l—ng—ge g qui nous intéresseF
ƒ—™hez toutefois que qu—nd vous progr—mmerezD vous serez de toute f—çon ™onfrontés
˜ien souvent à des do™ument—tions en —ngl—isF †oilà don™ une r—ison de plus pour
s9entr—îner à utiliser ™ette l—ngueF
                                                                                          IQ
CHAPITRE 2. AYEZ LES BONS OUTILS !

Télécharger Code: :Blocks
‚endezEvous sur l— p—ge de télé™h—rgements de gode: :flo™ks F           3

   £                      
   ¢ gode we˜ X VUHQQU ¡
! ƒi vous êtes sous ‡indowsD repérez l— se™tion  ‡indows un peu plus ˜—s sur ™ette
   p—geF „élé™h—rgez le logi™iel en pren—nt le progr—mme qui ™ontient mingw d—ns le nom
   @exF X ™ode˜lo™ksEVFHPmingwEsetupFexeAF v9—utre version ét—nt s—ns ™ompil—teurD
   vous —uriez eu du m—l à ™ompiler vos progr—mmes 3
! ƒi vous êtes sous vinuxD ™hoisissez le p—™k—ge qui ™orrespond à votre distri˜utionF
! in(nD sous w—™D ™hoisissez le (™hier le plus ré™ent de l— listeF
   ixF X ™ode˜lo™ksEVFHPEpPEm—™FzipF
v9inst—ll—tion est très simple et r—pideF v—issez toutes les options p—r déf—ut et l—n™ez
le progr—mmeF †ous devriez voir une fenêtre simil—ire à l— (gF PFIF
yn distingue R gr—ndes se™tions d—ns l— fenêtreD numérotées sur l9im—ge X
    IF la barre d'outils X elle ™omprend de nom˜reux ˜outonsD m—is seuls quelquesEuns
       nous seront régulièrement utilesF t9y reviendr—i plus loin Y
    PF la liste des chiers du projet X ™9est à g—u™he que s9—0™he l— liste de tous
       les (™hiers sour™e de votre progr—mmeF xotez que sur ™ette ™—pture —u™un projet
       n9— été ™rééD on ne voit don™ p—s en™ore de (™hiers à l9intérieur de l— listeF †ous
       verrez ™ette se™tion se remplir d—ns ™inq minutes en lis—nt l— suite du ™ours Y
    QF la zone principale X ™9est là que vous pourrez é™rire votre ™ode en l—ng—ge g Y
    RF la zone de notication X —ussi —ppelée l—  zone de l— mort D ™9est i™i que vous
       verrez les erreurs de ™ompil—tion s9—0™her si votre ™ode ™omporte des erreursF
       gel— —rrive très régulièrement 3
sntéressonsEnous m—inten—nt à une se™tion p—rti™ulière de l— ˜—rre d9outils @(gF PFPAF
†ous trouverez les ˜outons suiv—nts @d—ns l9ordreA X gompilerD ixé™uterD gompiler 8
ixé™uter et „out re™ompilerF ‚etenezElesD nous les utiliserons régulièrementF
†oi™i l— signi(™—tion de ™h—™une des qu—tre i™ônes que vous voyez sur l— (gF PFPD d—ns
l9ordre X
! compiler X tous les (™hiers sour™e de votre projet sont envoyés —u ™ompil—teur qui
   v— se ™h—rger de ™réer un exé™ut—˜leF ƒ9il y — des erreurs D l9exé™ut—˜le ne ser— p—s
                                                                    4


   ™réé et on vous indiquer— les erreurs en ˜—s de gode: :flo™ks Y
! exécuter X ™ette i™ône l—n™e juste le dernier exé™ut—˜le que vous —vez ™ompiléF gel—
   vous permettr— don™ de tester votre progr—mme et de voir —insi ™e qu9il donneF h—ns
   l9ordreD si vous —vez ˜ien suiviD on doit d9—˜ord ™ompilerD puis exé™uter pour tester
   ™e que ç— donneF yn peut —ussi utiliser le troisième ˜outonF F F
! compiler  exécuter X p—s ˜esoin d9être un génie pour ™omprendre que ™9est
   l— ™om˜in—ison des deux ˜outons pré™édentsF g9est d9—illeurs ™e ˜outon que vous
   3. J'en prote pour vous rappeler que les codes web peuvent être entrés dans le formulaire du
Site du Zéro prévu à cet eet. Cela vous redirige automatiquement sur la page ou le chier qui vous
intéresse. Voir l'avant-propos pour plus d'informations à ce sujet.
   4. Ce qui a de fortes chances d'arriver tôt ou tard !

IR
CODE: :BLOCKS (WINDOWS, MAC OS, LINUX)




              Figure PFI ! gode: :flo™ks




Figure PFP ! ves prin™ip—ux ˜outons de l— ˜—rre d9outils



                                                           IS
CHAPITRE 2. AYEZ LES BONS OUTILS !

  utiliserez le plus souventF xotez que s9il y — des erreurs pend—nt l— ™ompil—tion
  @pend—nt l— génér—tion de l9exé™ut—˜leAD le progr—mme ne ser— p—s exé™utéF À l—
  pl—™eD vous —urez droit à une ˜eeelle liste d9erreurs à ™orriger 3
! tout reconstruire X qu—nd vous f—ites ™ompilerD gode: :flo™ks ne re™ompile en f—it
  que les (™hiers que vous —vez modi(és et non les —utresF €—rfois E je dis ˜ien p—rfois E
  vous —urez ˜esoin de dem—nder à gode: :flo™ks de vous re™ompiler tous les (™hiersF
  yn verr— plus t—rd qu—nd on — ˜esoin de ™e ˜outonD et vous verrez plus en dét—ils
  le fon™tionnement de l— ™ompil—tion d—ns un ™h—pitre futurF €our l9inst—ntD on se
  ™ontente de s—voir le minimum né™ess—ire pour ne p—s tout mél—ngerF ge ˜outon ne
  nous ser— don™ p—s utile de suiteF
             Je vous conseille d'utiliser les raccourcis plutôt que de cliquer sur les boutons,
             parce que c'est quelque chose qu'on fait vraiment très très souvent. Retenez
             en particulier qu'il faut taper sur pW pour faire gompiler 8 ixé™uter.




Créer un nouveau projet
€our ™réer un nouve—u projetD ™9est très simple X —llez d—ns le menu pile G xew               G
€roje™tF h—ns l— fenêtre qui s9ouvre @(gF PFQAD ™hoisissez gonsole —ppli™—tionF




                              Figure PFQ ! xouve—u projet
IT
CODE: :BLOCKS (WINDOWS, MAC OS, LINUX)

            Comme vous pouvez le voir, Code: :Blocks propose de réaliser pas mal de types
            de programmes diérents qui utilisent des bibliothèques connues comme la
            SDL (2D), OpenGL (3D), Qt et wxWidgets (fenêtres), etc. Pour l'instant,
            ces icônes servent plutôt à faire joli car les bibliothèques ne sont pas installées
            sur votre ordinateur, vous ne pourrez donc pas les faire marcher. Nous nous
            intéresserons à ces autres types de programmes bien plus tard. En attendant
            il faudra vous contenter de  Console , car vous n'avez pas encore le niveau
            nécessaire pour créer les autres types de programmes.

gliquez sur qo pour ™réer le projetF …n —ssist—nt s9ouvreF p—ites xextD ™ette première
p—ge ne serv—nt à rienF
yn vous dem—nde ensuite si vous —llez f—ire du g ou du gCC @(gF PFRA X répondez
g F




                            Figure PFR ! ghoix du l—ng—ge

yn vous dem—nde le nom de votre projet @(gF PFSA et d—ns quel dossier les (™hiers
sour™e seront enregistrésF
in(nD l— dernière p—ge @(gF PFTA vous permet de ™hoisir de quelle f—çon le progr—mme
doit être ™ompiléF †ous pouvez l—isser les options p—r déf—utD ç— n9—ur— p—s d9in™iden™e
sur ™e que nous —llons f—ire d—ns l9immédi—t @veillez à ™e que l— ™—se he˜ug ou ‚ele—se
—u moins soit ™o™héeAF
gliquez sur pinishD ™9est ˜on 3 gode: :flo™ks vous ™réer— un premier projet —ve™ déjà
un tout petit peu de ™ode sour™e ded—nsF
h—ns le ™—dre de g—u™he  €roje™ts D développez l9—r˜ores™en™e en ™liqu—nt sur le petit
 C pour —0™her l— liste des (™hiers du projetF †ous devriez —voir —u moins un m—inF™
                                                                                            IU
CHAPITRE 2. AYEZ LES BONS OUTILS !




               Figure PFS ! xom et empl—™ement du projet




                   Figure PFT ! wode de ™ompil—tion


IV
VISUAL C++ (WINDOWS SEULEMENT)

que vous pourrez ouvrir en dou˜leE™liqu—nt dessusF †ous voilà p—rés 3


Visual C++ (Windows seulement)
uelques petits r—ppels sur †isu—l gCC X
! ™9est l9shi de wi™rosoft Y
! il est à l— ˜—se p—y—ntD m—is wi™rosoft — sorti une version gr—tuite intitulée †isu—l
  gCC ixpress Y
! il permet de progr—mmer en g et en gCC @et non p—s seulement en gCC ™omme
  son nom le l—isse entendreAF
xous —llons ˜ien entendu voir i™i l— version gr—tuiteD †isu—l gCC ixpress @(gF PFUAF 5




                             Figure PFU ! †isu—l gCC ixpress


             Quelles sont les diérences avec le  vrai  Visual ?

  5. Attention, il n'est compatible avec Windows 7 qu'à partir de la version 2010.

                                                                                         IW
CHAPITRE 2. AYEZ LES BONS OUTILS !

sl n9y — p—s l9éditeur de ressour™es qui vous permet de dessiner des im—gesD des i™ônesD
ou des fenêtresF w—is ˜onD ç—D entre nousD on s9en moque ˜ien p—r™e qu9on n9—ur— p—s
˜esoin de s9en servir d—ns ™e ™oursF ge ne sont p—s des fon™tionn—lités indispens—˜lesD
˜ien —u ™ontr—ireF
€our télé™h—rger †isu—l gCC ixpressD rendezEvous sur le site we˜ de †isu—l gCCF
   £                      
   ¢gode we˜ X QQQUQQ ¡
ƒéle™tionnez ensuite †isu—l gCC ixpress pr—nç—is un peu plus ˜—s sur l— p—geF
†isu—l gCC ixpress est en fr—nç—is et tot—lement gr—tuitF ge n9est don™ p—s une version
d9ess—i limitée d—ns le tempsF g9est une ™h—n™e d9—voir un shi —ussi puiss—nt que ™elui
de wi™rosoft disponi˜le gr—tuitementD ne l— l—issez don™ p—s p—sserF

Installation
v9inst—ll—tion devr—it norm—lement se p—sser s—ns en™om˜reF ve progr—mme d9inst—lE
l—tion v— télé™h—rger l— dernière version de †isu—l sur snternetF te vous ™onseille de
l—isser les options p—r déf—utF
À l— (nD on vous dit qu9il f—ut vous enregistrer d—ns les QH joursF €—s de p—niqueD ™9est
gr—tuit et r—pide m—is il f—ut le f—ireF
gliquez sur le lien qui vous est donné X vous —rrivez sur le site de wi™rosoftF gonne™tezE
vous —ve™ votre ™ompte ‡indows vive sh @équiv—lent du ™ompte rotm—il ou wƒxA ou
™réezEen un si vous n9en —vez p—sD puis répondez —u petit questionn—ireF
yn vous donner— à l— (n une ™lé d9enregistrementF †ous devrez re™opier ™ette ™lé d—ns
le menu c G sns™rire le produitF

Créer un nouveau projet
€our ™réer un nouve—u projet sous †isu—lD —llez d—ns le menu pi™hier G xouve—u G
€rojetF ƒéle™tionnez ‡inQP d—ns l— ™olonne de g—u™heD puis eppli™—tion ™onsole
‡inQP à droite @(gF PFVAF intrez un nom pour votre projetD p—r exemple testF
†—lidezF …ne nouvelle fenêtre s9ouvre @(gF PFWAF gette fenêtre ne sert p—s à gr—ndE™hoseF
€—r ™ontreD ™liquez sur €—r—mètres de l9—ppli™—tion d—ns l— ™olonne de g—u™heF
†eillez à ™e que €rojet vide soit ™o™hé ™omme sur l— (gF PFIHF gliquez en(n sur
„erminerF


Ajouter un nouveau chier source
†otre projet est pour l9inst—nt ˜ien videF p—ites un ™li™ droit sur le dossier pi™hiers
sour™e situé sur votre g—u™heD puis —llez d—ns ejouter G xouvel élément @(gF PFIIAF
…ne fenêtre s9ouvreF ƒéle™tionnez pi™hier            gCC @F™ppA 6 F    intrez un nom pour votre
     6. Je sais, on ne fait pas de C++ mais ça n'a pas d'importance ici.

PH
VISUAL C++ (WINDOWS SEULEMENT)




    Figure PFV ! gré—tion de projet †isu—l gCC ixpress




Figure PFW ! essist—nt ™ré—tion de projet †isu—l gCC ixpress

                                                               PI
CHAPITRE 2. AYEZ LES BONS OUTILS !




                 Figure PFIH ! gon(gur—tion du projet




                 Figure PFII ! ejout d9un (™hier sour™e



PP
VISUAL C++ (WINDOWS SEULEMENT)

(™hier X m—inF™D ™omme sur l— (gF PFIPF




              Figure PFIP ! ghoix du type et du nom du (™hier sour™e
gliquez sur ejouterF g9est ˜onD vous —llez pouvoir ™ommen™er à é™rire du ™ode 3

La fenêtre principale de Visual
†oyons ensem˜le le ™ontenu de l— fenêtre prin™ip—le de †isu—l gCC ixpress @(gF PFIQAF
gette fenêtre ressem˜le en tous points à ™elle de gode: :flo™ksF yn v— r—pidement
@reAvoir qu—nd même ™e que signi(ent ™h—™une des p—rtiesF
   IF v— ˜—rre d9outils X tout ™e qu9il y — de plus st—nd—rdF yuvrirD enregistrerD enreE
      gistrer toutD ™ouperD ™opierD ™ollerD et™F €—r déf—utD il sem˜le qu9il n9y —it p—s de
      ˜outon de ˜—rre d9outils pour ™ompilerF †ous pouvez les r—jouter en f—is—nt un ™li™
      droit sur l— ˜—rre d9outilsD puis en ™hoisiss—nt hé˜oguer et qénérer d—ns l— listeF
      „outes ™es i™ônes de ™ompil—tion ont leur équiv—lent d—ns les menus qénérer et
      hé˜oguerF ƒi vous f—ites qénérerD ™el— ™réer— l9exé™ut—˜le @ç— signi(e  ™ompiler
      pour †isu—lAF ƒi vous f—ites hé˜oguer G ixé™uterD on devr—it vous proposer de
      ™ompiler —v—nt d9exé™uter le progr—mmeF pU permet de générer le projetD et pS
      de l9exé™uterF
   PF h—ns ™ette zone très import—nte vous voyez norm—lement l— liste des (™hiers de
      votre projetF gliquez sur l9onglet ixplor—teur de solutions en ˜—sD si ™e n9est
      déjà f—itF †ous devriez voir que †isu—l ™rée déjà des dossiers pour sép—rer les
                                                                                        PQ
CHAPITRE 2. AYEZ LES BONS OUTILS !




          Figure PFIQ ! penêtre prin™ip—le de †isu—l gCC ixpress




PR
XCODE (MAC OS SEULEMENT)

      di'érents types de (™hiers de votre projet @sour™esD enEtête et ressour™esAF xous
      verrons un peu plus t—rd quels sont les di'érents types de (™hiers qui ™onstituent
      un projetF
   QF v— p—rtie prin™ip—leF g9est là qu9on modi(e les (™hiers sour™eF
   RF g9est là en™ore l—  zone de l— mort D ™elle où on voit —pp—r—ître toutes les
      erreurs de ™ompil—tionF g9est d—ns le ˜—s de l9é™r—n —ussi que †isu—l —0™he les
      inform—tions de dé˜og—ge qu—nd vous ess—yez de ™orriger un progr—mme ˜oguéF
†oilàD on — f—it le tour de †isu—l gCCF †ous pouvez —ller jeter un ÷il d—ns les options
@yutils G yptionsA si ç— vous ™h—nteD m—is n9y p—ssez p—s trois heuresF sl f—ut dire
qu9il y — tellement de ™—ses à ™o™her de p—rtout qu9on ne s—it plus trop où donner de
l— têteF

Xcode (Mac OS seulement)
sl existe plusieurs shi ™omp—ti˜les w—™F sl y — gode: :flo™ks ˜ien sûrD m—is ™e n9est
p—s le seulF te v—is vous présenter i™i l9shi le plus ™élè˜re sous w—™ X ˆ™odeF
gette se™tion dédiée à ˆ™ode est inspirée d9un tutoriel p—ru sur vogi™ielw—™F™omD —ve™
l9—im—˜le —utoris—tion de son —uteur €sy™horIQF
   £                     
   ¢gode we˜ X TRVSVR ¡


Xcode, où es-tu ?
„ous les utilis—teurs de w—™ yƒ ne sont p—s des progr—mmeursF epple l9— ˜ien ™ompris et
n9inst—lle p—s p—r déf—ut d9shi —ve™ w—™ yƒF reureusementD pour ™eux qui voudr—ient
progr—mmerD tout est prévuF in e'etD ˆ™ode est présent sur le gh d9inst—ll—tion de
w—™ yƒ @logo (gF PFIRAF



                            Figure PFIR ! vogo de ˆ™ode
snsérez don™ le gh d—ns le le™teur et inst—llezEleF sl se trouve d—ns les  heveloper
„ools F
€—r —illeursD je vous ™onseille de mettre en f—voris l— p—ge dédiée —ux développeurs sur
le site d9eppleF †ous y trouverez une foule d9inform—tions utiles pour le développement
sous w—™F †ous pourrez not—mment y télé™h—rger plusieurs logi™iels pour développerF
x9hésitez p—s à vous ins™rire à l9ehg @ epple hevelopment gonne™tion AD ™9est
gr—tuit et vous serez —insi tenus —u ™our—nt des nouve—utésF
   £                     
   ¢gode we˜ X PTRUHV ¡

                                                                                     PS
CHAPITRE 2. AYEZ LES BONS OUTILS !

Lancement de Xcode
vorsque vous l—n™ez ˆ™ode pour l— première foisD vous serez pro˜—˜lement surprisF it
il y — de quoiF gontr—irement à l— plup—rt des logi™iels w—™D il n9y — p—s de fenêtre de
˜ienvenueF in f—itD l— première foisD on trouve ç— un peu videF F F et pourt—ntD ™9est un
logi™iel très puiss—nt 3
              Xcode est l'IDE le plus utilisé sous Mac, créé par Apple lui-même. Les plus
              grands logiciels, comme iPhoto et Keynote, ont été codés à l'aide de Xcode.
              C'est réellement l'outil de développement de choix quand on a un Mac !

v— première ™hose à f—ire est de ™réer un nouve—u projetD —lors ™ommençons p—r ç—F
ellez d—ns le menu pile G xew €roje™tF …ne fenêtre de séle™tion de projet s9ouvre
@(gF PFISAF




                              Figure PFIS ! e™™ueil de ˆ™ode
ellez d—ns l— se™tion eppli™—tion et séle™tionnez gomm—nd vine „ool F             7



gliquez ensuite sur xextF yn vous dem—nder— où vous voulez enregistrer votre projet
@un projet doit toujours être enregistré dès le dé˜utA —insi que son nomF €l—™ezEle d—ns
le dossier que vous voulezF
   7. Si vous avez une version plus ancienne du logiciel, il vous faudra probablement aller dans la
section Command line utility et sélectionner Standard tool.

PT
XCODE (MAC OS SEULEMENT)

…ne fois ™rééD votre projet se présenter— sous l— forme d9un dossier ™onten—nt de mulE
tiples (™hiers d—ns le pinderF ve (™hier à l9extension Fx™odeproj ™orrespond —u (™hier
du projetF g9est lui que vous devrez séle™tionner l— pro™h—ine fois si vous souh—itez
réouvrir votre projetF

La fenêtre de développement
h—ns ˆ™odeD si vous séle™tionnez m—inF™D vous devriez —voir une fenêtre simil—ire à l—
(gF PFITF




                           Figure PFIT ! ˆ™ode en —™tion
v— fenêtre est dé™oupée en qu—tre p—rtiesD i™i numérotées de I à RF
  IF v— première p—rtie est l— ˜—rre de ˜outons tout en h—utF †ous pouvez l— ™on(gurer
      ™omme ˜on vous sem˜leD ™h—nger les ˜outonsD et™F ves plus import—nts d9entre
      eux sont représentés sur les (gF PFIU et PFIVF ves trois premiers ˜outons vous
      permettent de n—viguer entreD d—ns l9ordre X
      ! €roje™t X là où vous voyez vos (™hiers et où vous les modi(ez Y
      ! fuild X vous y voyez le résult—t de l— ™ompil—tion de votre progr—mmeD et les
        erreurs s9il y en — eu Y
      ! he˜ug X l— fenêtre de dé˜og—geD où vous pouvez exé™uter votre progr—mme ligne
        p—r ligne pour trouver et ™omprendre ses erreursF
                                                                                   PU
CHAPITRE 2. AYEZ LES BONS OUTILS !

        ves deux ˜outons de l— (gF PFIV signi(ent X
        ! fuild X ™ompile votre projetD don™ ™rée un exé™ut—˜le à p—rtir de vos sour™es Y
        ! fuild —nd qo @le ˜outon que vous utiliserez le plus souventA X ™ompile votre
           projet et le l—n™e pour le testerF
     PF v— p—rtie de g—u™he ™orrespond à l9—r˜ores™en™e de votre projetF gert—ines se™E
        tions regroupent les erreursD les —vertissementsD et™F ˆ™ode vous pl—™e —utom—tiE
        quement d—ns l— se™tion l— plus utileD ™elle qui porte le nom de votre projetF
     QF v— troisième p—rtie ™h—nge en fon™tion de ™e que vous —vez séle™tionné d—ns l—
        p—rtie de g—u™heF s™iD on — l— liste des (™hiers de notre projet X
        ! m—inF™ X ™9est le (™hier sour™e de votre progr—mme @il peut y en —voir plusieurs
           d—ns les gros progr—mmesA Y
        ! Mon_Premier_Programme X ™9est votre progr—mme une fois ™ompiléD don™
           l9exé™ut—˜le que vous pouvez distri˜uerF ƒi le (™hier est en rougeD ™9est qu9il
           n9existe p—s en™ore @vous n9—vez don™ p—s en™ore ™ompilé votre progr—mmeD
           m—is ˆ™ode le référen™e qu—nd mêmeA Y
        ! Mon_Premier_Programme.l X ™9est votre progr—mme présenté en l—ng—ge —sE
           sem˜leurD un l—ng—ge très pro™he du pro™esseurF gel— ne nous intéresser— p—sD
           m—is si vous voulez prendre peur n9hésitez p—s à y jeter un ÷ilF
     RF in(nD l— qu—trième p—rtieD l— plus intéress—nte X ™9est ™elle d—ns l—quelle vous
        pourrez é™rire votre ™ode sour™e en l—ng—ge gF €—r déf—utD ˆ™ode met juste un
        petit ™ode d9exemple qui —0™he  relloD world 3 à l9é™r—nF



                       Figure PFIU ! v— ˜—rre d9outils @n—vig—tionA



                      Figure PFIV ! v— ˜—rre d9outils @™ompil—tionA

Lancement du programme
€our tester ™e premier progr—mmeD ™liquez sur le ˜outon fuild —nd qo de l— ˜—rre
d9outilsF †otre é™r—n devr—it ™h—nger et ressem˜ler à l— (gF PFIWF
   IF ge sont les ˜outons qui permettent de ™h—nger de p—geD ™omme on l9— vu plus
      tôtF ƒéle™tionnez €roje™t si vous souh—itez revenir à l— fenêtre pré™édenteF
   PF g9est l— ™i˜leD le (™hier qui réunit les sour™es ™ompilées de votre progr—mmeF
   QF v9exé™ut—˜le de votre —ppli™—tionF
   RF ve mode de ™ompil—tionF sl peut être X
PV
XCODE (MAC OS SEULEMENT)




                 Figure PFIW ! v—n™ement du progr—mme sous ˆ™ode

       ! he˜ug X l9exé™ut—˜le reste d—ns ˆ™ode et ™ontient des inform—tions de dé˜og—ge
         pour vous —ider à résoudre vos erreurs éventuellesF g9est ™e que vous utiliserez
         lorsque vous développerez votre —ppli™—tion Y
       ! ‚ele—se X à n9utiliser qu9à l— (nF ˆ™ode génère —lors l9—ppli™—tion dé(nitiveD
         f—ite pour être p—rt—gée et utilisée p—r d9—utres ordin—teursF
  SF   ges deux ˜outons vous permettent de dém—rrer l9—ppli™—tion dire™tement @‚unA
       ou de l— dém—rrer en mode  he˜ug pour exé™uter le progr—mme instru™tion
       p—r instru™tionD —(n de résoudre les erreursF x9utilisez he˜ug que lorsque vous
       —vez des erreurs d—ns votre progr—mmeF
  TF   v— liste des (™hiers de votre projetF
  UF   v9éditeur du ™ode sour™eD ™omme tout à l9heureF
  VF   v— ™onsole de ˆ™odeF g9est là que vous verrez votre progr—mme s9exé™uterF
  WF   ves ˜outons fuild et ‚un vous permettent de p—sser du mode  gompil—tion
       —u mode  ixé™ution F in ™l—irD —ve™ le premier vous pouvez voir ™e qui s9est
       p—ssé pend—nt l— ™ompil—tionD t—ndis que d—ns le se™ond vous pouvez voir ™e que
       votre —ppli™—tion — —0™hé une fois qu9elle — été dém—rréeF

Ajouter un nouveau chier
eu dé˜utD vous n9—urez qu9un seul (™hier sour™e @m—inF™AF gepend—ntD plus loin d—ns le
™oursD je vous dem—nder—i de ™réer de nouve—ux (™hiers sour™e lorsque nos progr—mmes
deviendront plus grosF
                                                                                      PW
CHAPITRE 2. AYEZ LES BONS OUTILS !

€our ™réer un nouve—u (™hier sour™e sous ˆ™odeD rendezEvous d—ns le menu pile G
xew pileF …n —ssist—nt vous dem—nde quel type de (™hier vous voulez ™réerF ‚endezE
vous d—ns l— se™tion fƒh et séle™tionnez g pile @pi™hier gAF †ous devriez —voir sous
les yeux l— (gF PFPHF




                      Figure PFPH ! ejouter un (™hier sous ˆ™ode
†ous devrez donner un nom à votre nouve—u (™hier @™e que vous voulezAF v9extensionD
elleD doit rester F™F €—rfois E nous le verrons plus loin ED il f—udr— —ussi ™réer des (™hiers
Fh @m—is on en rep—rler—AF v— ™—se à ™o™her elso ™re—te fi™hierFh est là pour ç—F
€our le momentD elle ne nous intéresse p—sF
gliquez ensuite sur pinishF g9est f—it 3 †otre (™hier est ™réé et —jouté à votre projetD
en plus de m—inF™F
†ous êtes m—inten—nt prêts à progr—mmer sous w—™ 3

En résumé
! ves progr—mmeurs ont ˜esoin de trois outils X un éditeur de texteD un ™ompil—teur et
  un dé˜ogueurF
! sl est possi˜le d9inst—ller ™es outils sép—rémentD m—is il est ™our—nt —ujourd9hui d9—voir
  un p—™k—ge troisEenEun que l9on —ppelle IDED l9environnement de développementF
! gode: :flo™ksD †isu—l gCC et ˆ™ode ™omptent p—rmi les shi les plus ™élè˜resF

QH
Chapitre       3
Votre premier programme

                                                                           Diculté :


O     n a préparé le terrain jusqu'ici, maintenant il serait bien de commencer à programmer
      un peu, qu'en dites-vous ? C'est justement l'objectif de ce chapitre ! À la n de celui-
      ci, vous aurez réussi à créer votre premier programme !
Bon d'accord, ce programme sera en noir et blanc et ne saura que vous dire bonjour, il
semblera donc complètement inutile mais ce sera votre premier ; je peux vous assurer que
vous en serez ers.




                                             QI
CHAPITRE 3. VOTRE PREMIER PROGRAMME

Console ou fenêtre ?
xous —vons r—pidement p—rlé de l— notion de  progr—mme ™onsole et de  proE
gr—mme fenêtre d—ns le ™h—pitre pré™édentF xotre shi nous dem—nd—it quel type de
progr—mme nous voulions ™réer et je vous —v—is dit de répondre ™onsoleF
sl f—ut s—voir qu9en f—it il existe deux types de progr—mmesD p—s plus X
! les progr—mmes —ve™ fenêtres Y
! les progr—mmes en ™onsoleF

Les programmes en fenêtres
ge sont les progr—mmes que vous ™onn—issezF v— (gF QFI est un exemple de progr—mme
en fenêtres que vous ™onn—issez sûrementF




                         Figure QFI ! ve progr—mme €—int
Ç— don™D ™9est un progr—mme —ve™ des fenêtresF te suppose que vous —imeriez ˜ien ™réer
™e type de progr—mmesD hmm c ih ˜ienF F F vous n9—llez p—s pouvoir de suite 3
in e'etD ™réer des progr—mmes —ve™ des fenêtres en g ™9est possi˜leD m—isF F F qu—nd on
dé˜uteD ™9est ˜ien trop ™ompliqué 3 €our dé˜uterD il v—ut mieux ™ommen™er p—r ™réer
des progr—mmes en ™onsoleF

            Mais au fait, à quoi ça ressemble un programme en console ?


QP
CONSOLE OU FENÊTRE ?

Les programmes en console
ves progr—mmes ™onsole ont été les premiers à —pp—r—îtreF À ™ette époqueD l9ordin—teur
ne gér—it que le noir et ˜l—n™ et il n9ét—it p—s —ssez puiss—nt pour ™réer des fenêtres
™omme on le f—it —ujourd9huiF
fien entenduD le temps — p—ssé depuisF ‡indows — rendu l9ordin—teur  gr—nd pu˜li™
prin™ip—lement grâ™e à s— simpli™ité et —u f—it qu9il n9utilis—it que des fenêtresF ‡indows
est devenu tellement popul—ire qu9—ujourd9hui ˜e—u™oup de monde — ou˜lié ™e qu9ét—it
l— ™onsole 3
          1



t9—i une gr—nde nouvelle 3 La console n'est pas morte 3 in e'etD vinux — remis —u
goût du jour l9utilis—tion de l— ™onsoleF v— (gF QFP est une ™—pture d9é™r—n d9une ™onsole
sous vinuxF




                   Figure QFP ! …n exemple de ™onsoleD i™i sous vinux
frrrF F F „erri(—ntD hein c †oilàD vous —vez m—inten—nt une petite idée de ™e à quoi
ressem˜le une ™onsoleF
ge™i ditD plusieurs rem—rques X
! —ujourd9hui on s—it —0™her de l— ™ouleurD tout n9est don™ p—s en noir et ˜l—n™ ™omme
   on pourr—it le ™roire Y
! l— ™onsole est —ssez peu —™™ueill—nte pour un dé˜ut—nt Y
! ™9est pourt—nt un outil puiss—nt qu—nd on s—it le m—îtriserF
gomme je vous l9—i dit plus h—utD ™réer des progr—mmes en mode  ™onsole ™omme
i™iD ™9est très f—™ile et idé—l pour dé˜uter @™e qui n9est p—s le ™—s des progr—mmes en
mode  fenêtre AF
xotez que l— ™onsole — évolué X elle peut —0™her des ™ouleursD et rien ne vous empê™he
de mettre une im—ge de fondF
  1. Oui vous là, ne regardez pas derrière vous, je sais que vous vous demandez ce que c'est.

                                                                                                QQ
CHAPITRE 3. VOTRE PREMIER PROGRAMME


            Et sous Windows ? Il n'y a pas de console ?

ƒiD m—is elle est un peuF F F  ™—™hée on v— direF †ous pouvez —voir une ™onsole en
f—is—nt hém—rrer G e™™essoires G snvite de ™omm—ndesD ou ˜ien en™ore en f—is—nt
hém—rrer G ixé™uterFFFD et en t—p—nt ensuite ™mdF
v— (gF QFQ représente l— m———gni(que ™onsole de ‡indowsF




                        Figure QFQ ! v— ™onsole de ‡indows

ƒi vous êtes sous ‡indowsD s—™hez don™ que ™9est d—ns une fenêtre qui ressem˜le à
ç— que nous ferons nos premiers progr—mmesF ƒi j9—i ™hoisi de ™ommen™er p—r des
petits progr—mmes en ™onsoleD ™e n9est p—s pour vous ennuyerD ˜ien —u ™ontr—ire 3 in
™ommenç—nt p—r f—ire des progr—mmes en ™onsoleD vous —pprendrez les ˜—ses né™ess—ires
pour pouvoir ensuite ™réer des fenêtresF
Soyez donc rassurés X dès que nous —urons le nive—u pour ™réer des fenêtresD nous
verrons ™omment en f—ireF



Un minimum de code
€our n9importe quel progr—mmeD il f—udr— t—per un minimum de ™odeF ge ™ode ne fer—
rien de p—rti™ulier m—is il est indispens—˜leF g9est ™e  ™ode minimum que nous —llons
dé™ouvrir m—inten—ntF sl devr—it servir de ˜—se pour l— plup—rt de vos progr—mmes en
l—ng—ge gF
QR
UN MINIMUM DE CODE

Demandez le code minimal à votre IDE
ƒelon l9shi que vous —vez ™hoisi d—ns le ™h—pitre pré™édentD l— méthode pour ™réer
un nouve—u projet n9est p—s l— mêmeF ‚eportezEvous à ™e ™h—pitre si vous —vez ou˜lié
™omment f—ireF
€our r—ppelD sous gode: :flo™ks @qui est l9shi que je v—is utiliser tout —u long de
™e ™oursAD il f—ut —ller d—ns le menu pile G xew G €roje™tD puis ™hoisir gonsole
eppli™—tion et séle™tionner le l—ng—ge gF
gode: :flo™ks — don™ généré le minimum de ™ode en l—ng—ge g dont on — ˜esoinF ve
voi™i X
 5in™lude `stdioFhb
 5in™lude `stdli˜Fhb

 int m—in@A
 {
     printf@4rello world3’n4AY
     return HY
 }


              Notez qu'il y a une ligne vide à la n de ce code. Il est nécessaire de taper sur
              la touche  Entrée  après la dernière accolade. Chaque chier en C devrait
              normalement se terminer par une ligne vide. Si vous ne le faites pas, ce
              n'est pas grave, mais le compilateur risque de vous acher un avertissement
              (warning ).

xotez que l— ligne X
 int m—in@A

F F F peut —ussi s9é™rire X
 int m—in@int —rg™D ™h—r B—rgv‘“A

ves deux é™ritures sont possi˜lesD m—is l— se™onde @l— ™ompliquéeA est l— plus ™our—nteF
t9—ur—i don™ tend—n™e à utiliser plutôt ™ette dernière d—ns les pro™h—ins ™h—pitresF in
™e qui nous ™on™erneD que l9on utilise l9une ou l9—utre des é™rituresD ç— ne ™h—nger— rien
pour nousF snutile don™ de s9y —tt—rderD surtout que nous n9—vons p—s en™ore le nive—u
pour —n—lyser ™e que ç— signi(eF
ƒi vous êtes sous un —utre shiD ™opiez ™e ™ode sour™e d—ns votre (™hier m—inF™ pour
que nous —yons le même ™ode vous et moiF
inregistrez le toutF yui je s—isD on n9— en™ore rien f—itD m—is enregistrez qu—nd mêmeD
™9est une ˜onne h—˜itude à prendreF xorm—lementD vous n9—vez qu9un seul (™hier sour™e
—ppelé m—inF™ @le resteD ™e sont des (™hiers de projet générés p—r votre shiAF
                                                                                            QS
CHAPITRE 3. VOTRE PREMIER PROGRAMME

Analysons le code minimal
ge ™ode minim—l qu9on vient de voir n9est rien d9—utre que du ™hinois pour vousD
j9im—gineF it pourt—ntD moi je vois là un progr—mme ™onsole qui —0™he un mess—ge à
l9é™r—nF sl v— f—lloir —pprendre à lire tout ç— 3
gommençons p—r les deux premières lignes qui se ressem˜lent ˜e—u™oup X
 5in™lude `stdioFhb
 5in™lude `stdli˜Fhb

ge sont des lignes spé™i—les que l9on ne voit qu9en h—ut des (™hiers sour™eF ges lignes sont
f—™ilement re™onn—iss—˜les ™—r elles ™ommen™ent p—r un dièse 5F ges lignes spé™i—lesD
on les —ppelle directives de préprocesseur @un nom ™ompliquéD n9estE™e p—s cAF ge
sont des lignes qui seront lues p—r un progr—mme —ppelé prépro™esseurD un progr—mme
qui se l—n™e —u dé˜ut de l— ™ompil—tionF
yui X ™omme je vous l9—i dit plus tôtD ™e qu9on — vu —u dé˜ut n9ét—it qu9un s™hém— très
simpli(é de l— ™ompil—tionF sl se p—sse en ré—lité plusieurs ™hoses pend—nt une ™ompil—E
tionF yn les dét—iller— plus t—rd X pour le momentD vous —vez juste ˜esoin d9insérer ™es
lignes en h—ut de ™h—™un de vos (™hiersF

             Oui mais elles signient quoi, ces lignes ? J'aimerais bien savoir quand même !

ve mot in™lude en —ngl—is signi(e  in™lure en fr—nç—isF ges lignes dem—ndent d9inE
™lure des (™hiers —u projetD ™9estEàEdire d9—jouter des (™hiers pour l— ™ompil—tionF sl y
— deux lignesD don™ deux (™hiers in™lusF ges (™hiers s9—ppellent stdioFh et stdli˜FhF
ges (™hiers existent déjàD des (™hiers sour™e tout prêtsF yn verr— plus t—rd qu9on les
—ppelle des bibliothèques @™ert—ins p—rlent —ussi de librairies m—is ™9est un —ngliE
™ismeAF in grosD ™es (™hiers ™ontiennent du ™ode tout prêt qui permet d9—0™her du
texte à l9é™r—nF
ƒ—ns ™es (™hiersD é™rire du texte à l9é™r—n —ur—it été mission impossi˜leF v9ordin—teur à
l— ˜—se ne s—it rien f—ireD il f—ut tout lui direF †ous voyez l— g—lère d—ns l—quelle on est 3
frefD en résumé les deux premières lignes in™luent les ˜i˜liothèques qui vont nous
permettre @entre —utresA d9—0™her du texte à l9é™r—n —ssez  f—™ilement F
€—ssons à l— suiteF v— suiteD ™9est tout ç— X
 int m—in@A
 {
     printf@4rello world3’n4AY
     return HY
 }

ge que vous voyez làD ™9est ™e qu9on —ppelle une fonctionF …n progr—mme en l—ng—ge
g est ™onstitué de fon™tionsD il ne ™ontient qu—siment que ç—F €our le momentD notre
progr—mme ne ™ontient don™ qu9une seule fon™tionF
QT
UN MINIMUM DE CODE

…ne fon™tion permet grosso modo de r—ssem˜ler plusieurs ™omm—ndes à l9ordin—teurF
‚egroupées d—ns une fon™tionD les ™omm—ndes permettent de f—ire quelque ™hose de
pré™isF €—r exempleD on peut ™réer une fon™tion ouvrir•fi™hier qui ™ontiendr— une
suite d9instru™tions pour l9ordin—teur lui expliqu—nt ™omment ouvrir un (™hierF v9—v—nE
t—geD ™9est qu9une fois l— fon™tion é™riteD vous n9—urez plus qu9à dire ouvrir•fi™hierD
et votre ordin—teur s—ur— ™omment f—ire s—ns que vous —yez à tout répéter 3
ƒ—ns rentrer d—ns les dét—ils de l— ™onstru™tion d9une fon™tion @il est trop tôtD on rep—rE
ler— des fon™tions plus t—rdAD —n—lysons qu—nd même ses gr—ndes p—rtiesF v— première
ligne ™ontient le nom de l— fon™tionD ™9est le deuxième motF yui X notre fon™tion s9—pE
pelle don™ m—inF g9est un nom de fon™tion p—rti™ulier qui signi(e  prin™ip—l F m—in
est l— fon™tion prin™ip—le de votre progr—mmeD c'est toujours par la fonction m—in
que le programme commenceF
…ne fon™tion — un dé˜ut et une (nD délimités p—r des —™™ol—des { et }F „oute l— fon™tion
m—in se trouve don™ entre ™es —™™ol—desF ƒi vous —vez ˜ien suiviD notre fon™tion m—in
™ontient deux lignes X
 printf@4rello world3’n4AY
 return HY


ges lignes à l9intérieur d9une fon™tion ont un nomF yn les —ppelle instructions @ç—
en f—it du vo™—˜ul—ire qu9il v— f—lloir retenirAF gh—que instru™tion est une ™omm—nde
à l9ordin—teurF gh—™une de ™es lignes dem—nde à l9ordin—teur de f—ire quelque ™hose de
pré™isF
gomme je vous l9—i dit un peu plus h—utD en regroup—nt intelligemment @™9est le tr—v—il
du progr—mmeurA les instru™tions d—ns des fon™tionsD on ™rée si on veut des  bouts de
programmes tout prêts F in utilis—nt les ˜onnes instru™tionsD rien ne nous empê™her—it
don™ de ™réer une fon™tion ouvrir•fi™hier ™omme je vous l9—i expliqué tout à l9heureD
ou en™ore une fon™tion —v—n™er•personn—ge d—ns un jeu vidéoD p—r exempleF
…n progr—mmeD ™e n9est —u ˜out du ™ompte rien d9—utre qu9une série d9instru™tions X
 f—is ™e™i D  f—is ™el— F †ous donnez des ordres à votre ordin—teur et il les exé™ute F 2




             Très important : toute instruction se termine obligatoirement par un point-
             virgule  Y . C'est d'ailleurs comme ça qu'on reconnaît ce qui est une ins-
             truction et ce qui n'en est pas une. Si vous oubliez de mettre un point-virgule
             à la n d'une instruction, votre programme ne compilera pas !

v— première ligne X printf@4rello world3’n4AY dem—nde à —0™her le mess—ge  rello
world 3 à l9é™r—nF u—nd votre progr—mme —rriver— à ™ette ligneD il v— don™ —0™her
un mess—ge à l9é™r—nD puis p—sser à l9instru™tion suiv—nteF
€—ssons à l9instru™tion suiv—nte justement X return HY ih ˜ien ç—D en grosD ç— veut dire
que ™9est (ni @eh ouiD déjàAF gette ligne indique qu9on —rrive à l— (n de notre fon™tion
m—in et dem—nde de renvoyer l— v—leur HF
  2. Du moins si vous l'avez bien dressé.

                                                                                         QU
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c

Contenu connexe

En vedette

Pp2013 1%
Pp2013 1%Pp2013 1%
Pp2013 1%Aicasc
 
H1 chap 1 sur 2 croissance et mondialisation
H1 chap 1 sur 2 croissance et mondialisationH1 chap 1 sur 2 croissance et mondialisation
H1 chap 1 sur 2 croissance et mondialisationCompagnonjbd
 
Utilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDBUtilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDB13p
 
HDSS Découvrir Paris avec Amélie Poulain
HDSS Découvrir Paris avec Amélie PoulainHDSS Découvrir Paris avec Amélie Poulain
HDSS Découvrir Paris avec Amélie Poulainaniaal
 
Vt 750 1999
Vt 750 1999Vt 750 1999
Vt 750 1999jean
 
151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...
151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...
151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...Ettaoufik Elayedi
 
CC Auberge espagnole
CC Auberge espagnoleCC Auberge espagnole
CC Auberge espagnoleaniaal
 
Présentation de la Filière Ingénieur Entprendre de l'INSA de Lyon
Présentation de la Filière Ingénieur Entprendre de l'INSA de LyonPrésentation de la Filière Ingénieur Entprendre de l'INSA de Lyon
Présentation de la Filière Ingénieur Entprendre de l'INSA de LyonRémi Darricau
 
Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...
Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...
Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...daniellamy
 

En vedette (20)

Dossier peda-histoire-de-cerveau-ok
Dossier peda-histoire-de-cerveau-okDossier peda-histoire-de-cerveau-ok
Dossier peda-histoire-de-cerveau-ok
 
Pp2013 1%
Pp2013 1%Pp2013 1%
Pp2013 1%
 
Test page
Test pageTest page
Test page
 
Le petit bulletin
Le petit bulletin Le petit bulletin
Le petit bulletin
 
H1 chap 1 sur 2 croissance et mondialisation
H1 chap 1 sur 2 croissance et mondialisationH1 chap 1 sur 2 croissance et mondialisation
H1 chap 1 sur 2 croissance et mondialisation
 
Le Gestionnaire de balade expliqué
Le Gestionnaire de balade expliquéLe Gestionnaire de balade expliqué
Le Gestionnaire de balade expliqué
 
Utilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDBUtilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDB
 
HDSS Découvrir Paris avec Amélie Poulain
HDSS Découvrir Paris avec Amélie PoulainHDSS Découvrir Paris avec Amélie Poulain
HDSS Découvrir Paris avec Amélie Poulain
 
Vt 750 1999
Vt 750 1999Vt 750 1999
Vt 750 1999
 
Presentación4
Presentación4Presentación4
Presentación4
 
Diapo4
Diapo4Diapo4
Diapo4
 
Technoleader amarrec
Technoleader amarrecTechnoleader amarrec
Technoleader amarrec
 
151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...
151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...
151497916 137506165-langue-francaise-lecture-courante-cp-ce1-elocution-et-voc...
 
Encimera Siemens EH675FD27E
Encimera Siemens EH675FD27EEncimera Siemens EH675FD27E
Encimera Siemens EH675FD27E
 
Nevera Smeg FAB50B
Nevera Smeg FAB50BNevera Smeg FAB50B
Nevera Smeg FAB50B
 
Encimera Siemens EP718QB21E
Encimera Siemens EP718QB21EEncimera Siemens EP718QB21E
Encimera Siemens EP718QB21E
 
CC Auberge espagnole
CC Auberge espagnoleCC Auberge espagnole
CC Auberge espagnole
 
Présentation de la Filière Ingénieur Entprendre de l'INSA de Lyon
Présentation de la Filière Ingénieur Entprendre de l'INSA de LyonPrésentation de la Filière Ingénieur Entprendre de l'INSA de Lyon
Présentation de la Filière Ingénieur Entprendre de l'INSA de Lyon
 
Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...
Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...
Lachrtientenglobetouteslesreligionssoitdisantchrtienneetquipourtantnesuiventp...
 
Tostadora Smeg TSF02CREU
Tostadora Smeg TSF02CREUTostadora Smeg TSF02CREU
Tostadora Smeg TSF02CREU
 

Similaire à Apprenez a programmer_en_c

Reprenez le controle de linux (2010)
Reprenez le controle de linux (2010)Reprenez le controle de linux (2010)
Reprenez le controle de linux (2010)Théodore KOFFI
 
Extrait chap1
Extrait chap1Extrait chap1
Extrait chap1mvaudano
 
Documentaliste et rédaction - dossier complet easy writing
Documentaliste et rédaction - dossier complet easy writingDocumentaliste et rédaction - dossier complet easy writing
Documentaliste et rédaction - dossier complet easy writingPoleDocumentation.fr
 
Programmer pour les nuls afin de maîtriser la programmation dans tout son sens
Programmer pour les nuls afin de maîtriser la programmation dans tout son sensProgrammer pour les nuls afin de maîtriser la programmation dans tout son sens
Programmer pour les nuls afin de maîtriser la programmation dans tout son sensJean-philippe Denou
 
Création de blog et sites internet
Création de blog et sites internetCréation de blog et sites internet
Création de blog et sites internetpiera5
 
Guide auto-formation pour écrire pour le web~Learning Cube
Guide auto-formation pour écrire pour le web~Learning CubeGuide auto-formation pour écrire pour le web~Learning Cube
Guide auto-formation pour écrire pour le web~Learning CubeLaurent BOBY
 
Introduction au cours d'écriture numérique
Introduction au cours d'écriture numériqueIntroduction au cours d'écriture numérique
Introduction au cours d'écriture numériqueXavier Lambert
 
LE MULTIMEDIA EN CLASSE DE FLE
LE MULTIMEDIA EN CLASSE DE FLELE MULTIMEDIA EN CLASSE DE FLE
LE MULTIMEDIA EN CLASSE DE FLEHabib SOUMAHORO
 
Capter attention de vos lecteurs en quelques étapes simples
Capter attention de vos lecteurs en quelques étapes simplesCapter attention de vos lecteurs en quelques étapes simples
Capter attention de vos lecteurs en quelques étapes simplesThierry Valker
 
Exposé méthodologie générale zaky
Exposé méthodologie générale zakyExposé méthodologie générale zaky
Exposé méthodologie générale zakyNajlaa Zouaoui
 
Être lisible sur le web
Être lisible sur le webÊtre lisible sur le web
Être lisible sur le webYves Bonis
 
Atelier pratique : CR CMS - Webassoc 14 avril 2015
Atelier pratique : CR CMS - Webassoc 14 avril 2015Atelier pratique : CR CMS - Webassoc 14 avril 2015
Atelier pratique : CR CMS - Webassoc 14 avril 2015webassoc .fr
 
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...JUSTINDAVONDAMBAT
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement AndroidAnthony Faucogney
 
Stratégie digitale: écrire pour le web - Copywriting
Stratégie digitale: écrire pour le web - CopywritingStratégie digitale: écrire pour le web - Copywriting
Stratégie digitale: écrire pour le web - CopywritingXavier Lambert
 

Similaire à Apprenez a programmer_en_c (20)

Concevez votre site web avec php et mysql
Concevez votre site web avec php et mysqlConcevez votre site web avec php et mysql
Concevez votre site web avec php et mysql
 
Reprenez le controle de linux (2010)
Reprenez le controle de linux (2010)Reprenez le controle de linux (2010)
Reprenez le controle de linux (2010)
 
Extrait chap1
Extrait chap1Extrait chap1
Extrait chap1
 
Documentaliste et rédaction - dossier complet easy writing
Documentaliste et rédaction - dossier complet easy writingDocumentaliste et rédaction - dossier complet easy writing
Documentaliste et rédaction - dossier complet easy writing
 
Programmer pour les nuls afin de maîtriser la programmation dans tout son sens
Programmer pour les nuls afin de maîtriser la programmation dans tout son sensProgrammer pour les nuls afin de maîtriser la programmation dans tout son sens
Programmer pour les nuls afin de maîtriser la programmation dans tout son sens
 
150 scripts pour flash as2
150 scripts pour flash as2150 scripts pour flash as2
150 scripts pour flash as2
 
Création de blog et sites internet
Création de blog et sites internetCréation de blog et sites internet
Création de blog et sites internet
 
Guide auto-formation pour écrire pour le web~Learning Cube
Guide auto-formation pour écrire pour le web~Learning CubeGuide auto-formation pour écrire pour le web~Learning Cube
Guide auto-formation pour écrire pour le web~Learning Cube
 
Introduction au cours d'écriture numérique
Introduction au cours d'écriture numériqueIntroduction au cours d'écriture numérique
Introduction au cours d'écriture numérique
 
Classe virtuelle trame de cours
Classe virtuelle trame de cours Classe virtuelle trame de cours
Classe virtuelle trame de cours
 
LE MULTIMEDIA EN CLASSE DE FLE
LE MULTIMEDIA EN CLASSE DE FLELE MULTIMEDIA EN CLASSE DE FLE
LE MULTIMEDIA EN CLASSE DE FLE
 
Capter attention de vos lecteurs en quelques étapes simples
Capter attention de vos lecteurs en quelques étapes simplesCapter attention de vos lecteurs en quelques étapes simples
Capter attention de vos lecteurs en quelques étapes simples
 
Exposé méthodologie générale zaky
Exposé méthodologie générale zakyExposé méthodologie générale zaky
Exposé méthodologie générale zaky
 
Les sites de fle
Les sites de fleLes sites de fle
Les sites de fle
 
Être lisible sur le web
Être lisible sur le webÊtre lisible sur le web
Être lisible sur le web
 
Atelier pratique : CR CMS - Webassoc 14 avril 2015
Atelier pratique : CR CMS - Webassoc 14 avril 2015Atelier pratique : CR CMS - Webassoc 14 avril 2015
Atelier pratique : CR CMS - Webassoc 14 avril 2015
 
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android
 
Stratégie digitale: écrire pour le web - Copywriting
Stratégie digitale: écrire pour le web - CopywritingStratégie digitale: écrire pour le web - Copywriting
Stratégie digitale: écrire pour le web - Copywriting
 
Les sites de fle
Les sites de fleLes sites de fle
Les sites de fle
 

Apprenez a programmer_en_c

  • 1.
  • 2.
  • 3. Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence : Creative Commons BY-NC-SA 2.0 La copie de cet ouvrage est autorisée sous réserve du respect des conditions de la licence Texte complet de la licence disponible sur : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Simple IT 2010 - ISBN : 978-2-9535278-0-3
  • 4.
  • 5.
  • 6. Avant-propos L e livre que vous tenez d—ns vos m—ins — une longue histoire derrière luiF it pour ™—use X il — mis plus de dix —ns à mûrir —v—nt de voir le jourF gomment peutEon en —rriver à prép—rer un livre pend—nt dix longues —nnées c …n petit retour en —rrière s9imposeF te suis un p—ssionné de nouvelles te™hnologies p—rmi t—nt d9—utresF t9—i eu mon premier ordin—teur entre les m—ins juste —v—nt de rentrer —u ™ollègeF g9ét—it à ™e moment le l—n™ement en gr—ndes pompes de ‡indows WSF t9—i immédi—tement voulu —ller plus loinD s—voir ™omment ç— fon™tionne à l9intérieur F won premier ré)exe — été d9é™umer les li˜r—iries de qu—rtier et plus p—rti™ulièrement leur se™tion mi™roEinform—tique déjà ˜ien développéeF „out @ou presqueA me f—is—it envie X gréez votre site we˜ en r„wv en SH minutes D héveloppez vos propres progr—mmes f—™ilement —ve™ †isu—l f—si™ D et™F hes promesses quiD à elles seulesD —ur—ient pu —voir r—ison de mon —rgent de po™heF g9est en lis—nt l— qu—trième de ™ouverture que les ™hoses ont ™ommen™é à ™oin™er X Ce livre est destiné aux personnes ayant déjà une bonne expérience en programmation F €—s de p—niqueF sl su0t de trouver ™elui qui s9—dresse —ux dé˜ut—nts ™omme moiF te repose le livre sur les ét—l—ges et je tente d9en sortir un —utreF €uis un —utreF €uis en™ore un —utreF tusqu9à me rendre à l9éviden™e X pour —pprendre à progr—mmerD il f—ut déjà s—voir progr—mmerF ristoire de ne p—s —voir f—it le tr—jet pour rienD je rep—rtir—i qu—nd même —ve™ un livre ou deux sous les ˜r—sD ™eux qui sem˜l—ient les plus ™orre™ts du lotF te leur rends homm—ge i™i X ™9est —ve™ eux que j9—i dém—rré et j9—i ˜e—u™oup —ppris à leur le™tureF w—is en les relis—nt —ve™ un peu de re™ul quelques mois plus t—rdD j9—i (ni p—r m9—per™evoir de ™ert—ines in™ohéren™es X un ™h—pitre simple sur l9inst—ll—tion d9un logi™iel qui —ur—it dû être pl—™é tout —u dé˜utD des ™odes sour™e s—ns expli™—tionsD qu—nd ™e n9ét—it p—s ™—rrément un mot import—nt utilisé tout —u long du livre et dé(ni vers l— (n 3 v— ™ritique ét—it f—™ileD m—is il me f—ll—it prouver que l9on pouv—it f—ire plus clair et plus simpleF t9—i don™ entrepris de reformuler mon premier livre tel que j'aurais souhaité le lire en ™ré—nt mon premier site we˜F g9ét—it il y — dix —ns presque jour pour jour à l— sortie de ™e livreF i
  • 7. CHAPITRE 0. AVANT-PROPOS Qu'est-ce que ce livre vous propose ? fien des —nnées se sont é™oulées depuis l— réd—™tion des premiers ™oursF h—ns ™et interE v—lle de tempsD j9—i suivi des études d9ingénieur en inform—tique puis j9—i été professeur de l—ng—ge g d—ns l9enseignement supérieurF „out ™e™i m9— —mené à ™onstruire un pl—n de ™ours —d—pté —ux dé˜ut—ntsD progressif et ™on™retF geluiE™i est ™onstitué de qu—tre p—rties que vous retrouverez d—ns ™et ouvr—ge X IF Les bases de la programmation en C X nous dém—rrerons en dou™eur en dé™ouvr—nt ™e qu9est l— progr—mm—tion et à quoi sert le l—ng—ge g qui f—it l9o˜jet de ™e livreF xous inst—llerons les outils né™ess—ires —u progr—mmeur —d—ptés à votre système d9exploit—tion X ‡indowsD w—™ yƒ ˆ ou vinuxF xous ré—liserons nos premiers progr—mmes simples et pourrons pr—tiquer en ré—lis—nt un petit jeu dès l— (n de ™ette p—rtieF PF Techniques avancées du langage C X nous étudierons des ™on™epts plus —v—n™és et plus ™omplexes du gF geuxE™iD ˜ien que d9un nive—u plus élevéD sont indispens—˜les à l— ˜onne ™ompréhension du l—ng—ge X pointeursD t—˜le—uxD stru™E turesD ™h—înes de ™—r—™tèresD et™F ve nive—u reste progressif m—is le ™ours dem—nE der— plus d9—ttention de votre p—rt à p—rtir de ™ette se™onde p—rtieD soyezEen simplement prévenusF QF Création de jeux 2D en SDL X —près —voir —™quis l9essentiel des ™onn—iss—n™es né™ess—ires pour progr—mmer en gD il nous ser— possi˜le de nous —muser en ™ré—nt nousEmêmes des progr—mmes ™omplets tels que des jeux et des le™teurs —udioF €our y p—rvenirD nous utiliserons une extension du l—ng—ge g que l9on —ppelle l— ƒhvF RF Les structures de données X pour —ller plus loinD nous dé™ouvrirons des méE thodes de progr—mm—tion spé™i(ques d—ns ™ette dernière p—rtieF xous m—nipuleE rons des données en mémoire à l9—ide de stru™tures personn—lisées et intelligentesD ™e qui vous permettr— d9—ugmenter en e0™—™ité lorsque vous ré—liserez vos futurs progr—mmesF Comment lire ce livre ? Suivez l'ordre des chapitres visez ™e livre ™omme on lit un rom—nF sl — été ™onçu de ™ette f—çonF gontr—irement à ˜e—u™oup de livres te™hniques où il est ™our—nt de lire en di—gon—le et de s—uter ™ert—ins ™h—pitresD i™i il est très fortement re™omm—ndé de suivre l9ordre du ™oursD à moins que vous ne soyez déjà un peu expérimentéF ii
  • 8. COMMENT LIRE CE LIVRE ? Pratiquez en même temps €r—tiquez régulièrementF x9—ttendez p—s d9—voir (ni l— le™ture de ™e livre pour —llumer votre ordin—teur et f—ire vos propres ess—isF ve livre ™omporte plusieurs „F€F qui vous invitent à ™réer votre propre progr—mme en 1 suiv—nt une série de ™onsignesF g9est ˜ienD m—is ne vous en ™ontentez p—sF iss—yez les ™odes sour™e que je vous propose tout —u long du ™oursF wodi(ezEles un tout petit peuD puis de plus en plus jusqu9à vous sentir à l9—iseF …ne fois les „F€F terminésD ess—yez de ré—liser les —mélior—tions suggérées —insi que ™elles qui vous p—ssent p—r l— têteF †ous progresserez —insi ˜e—u™oup plus vite que vous ne l9im—giniezF Utilisez les codes web ! e(n de tirer p—rti du ƒite du éro dont est issu ™e livreD ™eluiE™i vous propose ™e qu9on —ppelle des ™odes we˜ F ge sont des ™odes à T ™hi'res à rentrer sur une p—ge du ƒite du éro pour être —utom—tiquement redirigé vers un site we˜ s—ns —voir à en re™opier l9—dresseF €our utiliser les ™odes we˜D rendezEvous sur l— p—ge suiv—nte X 2 http:GGwwwFsiteduzeroF™omG™odewe˜Fhtml …n formul—ire vous invite à rentrer votre ™ode we˜F p—ites un premier ess—i —ve™ le ™ode ™iEdessous X £   ¢gode we˜ X IPQRST ¡ ges ™odes we˜ ont deux intérêts X ! vous f—ire télé™h—rger les ™odes sour™e in™lus d—ns ™e livreD ™e qui vous éviter— d9—voir à re™opier ™ert—ins ™odes un peu longs Y ! vous rediriger vers les sites we˜ présentés tout —u long du ™oursF ge système de redire™tion nous permet de tenir à jour le livre que vous —vez entre les m—ins s—ns que vous —yez ˜esoin d9—™heter systém—tiquement ™h—que nouvelle éditionF ƒi un site we˜ ™h—nge d9—dresseD nous modi(erons l— redire™tion m—is le ™ode we˜ à utiliser rester— le mêmeF ƒi un site we˜ disp—r—îtD nous vous redirigerons vers une p—ge du ƒite du éro expliqu—nt ™e qui s9est p—ssé et vous propos—nt une —ltern—tiveF in ™l—irD ™9est un moyen de nous —ssurer de l— pérennité de ™et ouvr—ge s—ns que vous —yez à f—ire quoi que ™e soit 3 1. Travaux Pratiques 2. Je vous suggère d'ailleurs de l'ajouter à vos favoris. iii
  • 9. CHAPITRE 0. AVANT-PROPOS Du Site du Zéro au Livre du Zéro À l9époque où j9—i souh—ité rédiger mes premiers ™ours pour dé˜ut—ntsD mon premier ré)exe — été de ™réer un site we˜ ™—r ™9ét—it pour moi le moyen le plus simple de pu˜lier mes é™rits F sl fut dé™idé que le site s9—ppeller—it le ƒite du éro F F F p—r™e qu9on y 3 —pprendr—it tout à p—rtir de zéroF ƒ—ns moyens pu˜li™it—ires —utres que le ˜ou™he à oreilleD m—is —ve™ ˜e—u™oup de motiE v—tion et de p—ssionD wwwFsiteduzeroF™om s9est f—it —u (l des —nnées un vérit—˜le nom sur le ‡e˜F À tel point que j9—i (ni p—r dé™ouvrir qu9il ét—it ™onnu et re™omm—ndé p—r des professeurs en inform—tiqueD m—is —ussi utilisé ™omme support de ™ours p—r leurs élèves 3 ve site s9est fortement développé et est devenu plus qu9un site de ™ours en ligne pour dé˜ut—ntsF sl regroupe —ujourd9hui plus de IUH HHH mem˜res formid—˜les qui é™h—ngent et s9entr—ident sur les forums m—is prennent —ussi p—rt à l— réd—™tion des ™ours de f—çon désintéresséeF v— seule ™onsigne en vigueur sur le site est l— seule que j9—ie j—m—is suivie X se mettre à l— pl—™e du le™teur dé˜ut—nt que nous —vons tous étéF gel— f—it longtemps que je souh—ite un retour —ux sour™esD d—ns ™es li˜r—iries où j9—i moiEmême été perduF ve vivre du éro est le moyen idé—l de ˜ou™ler l— ˜ou™leF À l'attention de ceux qui ne connaissent pas le Site du Zéro ƒi vous ne f—ites p—s p—rtie des visiteurs du ƒite du éro D vous vous dem—ndez à juste 4 titre si ™e livre est f—it pour vousF gomme vous l9—urez s—ns doute ™omprisD ™e livre est —v—nt tout destiné —ux dé˜ut—ntsF †ous y trouverez né—nmoins —ussi votre ™ompte si vous —vez déjà de l9expérien™e en progr—mm—tion d—ns d9—utres l—ng—ges et que vous souh—itez dé™ouvrir le gF „outes les notions à ™onn—ître pour dém—rrer d—ns l— progr—mm—tion seront dét—illéesD en privilégi—nt les exemples —ux dé(nitions théoriquesF ve ™ours est d9—illeurs p—rti™uE lièrement fourni en s™hém—s ™omme vous pourrez le ™onst—terF visez le premier ™h—pitre pour dé™ider si vous —™™ro™hez et ™omprenez ™e qui s9y ditF v— seule ™ompéten™e réellement requise est de s—voir —llumer un ordin—teur F te me 5 ™h—rge de vous expliquer tout le reste X de l9inst—ll—tion des logi™iels né™ess—ires pour progr—mmer à l9expli™—tion des ™omm—ndes qui permettent de ™réer des progr—mmesD en p—ss—nt p—r les ™onseils et les ˜onnes pr—tiques qui vous feront g—gner du tempsF †ous noterez que je m9exprime toujours à l— première personneF g9est m— f—çon de f—ireF sm—ginez d9une ™ert—ine m—nière que nous sommes vous et moi d—ns l— même s—lle et que je suis votre professeurF te vous p—rle dire™tement et je réponds à vos questions en 3. Et ça l'est d'ailleurs toujours, c'est amusant de voir que cela n'a pas changé. Le Web est plus que jamais un formidable espace d'expression et doit le rester. 4. Que l'on appelle d'ailleurs les Zéros , selon une logique implacable qui ne vous aura pas échappé. ;-) 5. Ce n'est pas une plaisanterie, c'est la raison d'être de ce livre et c'est pour cela qu'on l'appelle le Livre du Zéro . iv
  • 10. REMERCIEMENTS ess—y—nt d—ns l— mesure du possi˜le de les —nti™iperF À l'attention des visiteurs du Site du Zéro ge livre ne rempl—™e p—s le ƒite du éroF sl le complèteF in f—itD il répond à une question que l9on m9— souvent posée X €ourquoi ne voitEon p—s ™es ™ours en li˜r—irie c F yui ™9est vr—iD pourquoi c €—r™e que rédiger et pu˜lier un livre ne s9improvise p—sF e(n d9—voir le m—ximum de li˜erté et d9indépend—n™eD je souh—it—is être l9éditeur de ™es livresF sl —ur— f—llu du temps pour y p—rvenir m—is ™9est —ujourd9hui ™hose f—iteF ge livre s9—dresse à vous si vous —vez —imé les ™ours du ƒite du éro m—is que X ! l— le™ture sur é™r—n vous f—tigue Y ! vous —vez ˜esoin d9un support hors ligne que vous pouvez emporter où vous voulez Y ! vous —uriez ˜ien imprimé les ™ent—ines de p—ges du ™ours vousEmême m—is votre imprim—nte risquer—it de f—ire un peu l— tête Y ! vous souh—itez tout simplement —pporter votre ™ontri˜ution —u siteD —(n de nous —ider à (n—n™er son développement et l— réd—™tion de nouve—ux ™oursF †ous y retrouverez le ™ours de progr—mm—tion en g d—ns une édition revue et ™orrigéeD —ve™ de nouvelles rem—rques et —ne™dotesF ve livre ™omporte une série de ™h—pitres inédits qui vous permettront d9—ller en™ore plus loin et d9explorer de nouvelles voies d—ns votre dé™ouverte de l— progr—mm—tionF Remerciements ge livre n9est p—s le fruit d9une seule et même personneF sl n9—ur—it en f—it j—m—is vu le jour s—ns de nom˜reuses personnes qui m9ont —pporté leur soutien ou leur —ideF ! wes p—rents tout d9—˜ordD qui m9ont toujours en™our—gé et ™onseillé qu—nd j9en —v—is le plus ˜esoinF ! ÉlodieD qui p—rt—ge m— vie depuis plusieurs —nnées et qui s—it toujours trouver les mots justes pour m9—ider à —v—n™erF ! €ierre hu˜u™D mon —sso™iéD à qui l9on doit les fond—tions te™hniques du ƒite du éro que l9on ™onn—ît —ujourd9hui —insi que le ré™ent développement de notre stru™tureF v— dévotion qu9il — portée à l— n—iss—n™e de ™e livre ne s—ur—it être su0s—mment s—luéeF ! xh—t winh vê @rzHA —ve™ qui j9—i eu de longues et intéress—ntes ™onvers—tions sur Av „iˆD le l—ng—ge d—ns lequel est é™rit ™e livre D —insi que sur le l—ng—ge gD son 6 dom—ine de prédile™tionF ! xos infogr—phistesD p—n tiyong @™ouverture de ™e livreA et ‰—nni™k €i—ult @illustr—E tions des ™h—pitresA qui ont tr—v—illé d9—rr—™heEpied pend—nt plusieurs sem—ines pour livrer le meilleur tr—v—il possi˜leF 6. Eh oui, même ce livre est compilé, on ne se refait pas. :-) v
  • 11. CHAPITRE 0. AVANT-PROPOS ! v9équipe des zgorre™teursD des p—ssionnés de l—ngue fr—nç—ise et de typogr—phie qui ™orrigent depuis longtemps les ™ours du ƒite du éro et qui ont f—it un tr—v—il formid—˜le de rigueur et d9e0™—™ité pour relire ™e livre @triple rele™ture pour ™h—que ™h—pitre 3AF te tiens à remer™ier en p—rti™ulier les ™inq ™orre™teurs qui se sont ™h—rgés de l— rele™ture de ™e livre X €hilippe vutun @ptipilouAD voï™ ve freton @pihldAD w—rtin ‡etterw—ld @ht poxAD quill—ume q—ullier @quill—wmeA et véo ‚oux @xeltyAF ! v9équipe du ƒite du éroD p—sséeD présente et futureF veur —ide pour f—ire tourner le site est inestim—˜leF ‚édiger une liste ™omplète des mem˜res de l9équipe ser—it ˜ien trop long i™iD m—is ils s—uront se re™onn—ître tous —ut—nt qu9ils sontF YEA ! in(n et surtoutD tous ™eux qui nous ont f—it ™on(—n™e et nous ont en™our—gés à ™ontinuer X les visiteurs du ƒite du éro F iux —ussi sont un peu trop nom˜reux 7 pour être listés i™iD m—is qu9ils s—™hent à quel point leurs en™our—gements ont été le moteur de l— ™ré—tion de ™e livreF wer™i à vous en(nD qui vous —pprêtez à nous f—ire ™on(—n™e en lis—nt ™e livreF te vous souh—ite une ˜onne et —gré—˜le le™tureD et surtout n9ou˜liez p—s d9y prendre du pl—isir 3 7. Il est intéressant de noter que toutes les personnes listées précédemment en font partie ! vi
  • 12. Sommaire Avant-propos i u9estE™e que ™e livre vous propose c F F F F F F F F F F F F F F F F F F F F F F F ii gomment lire ™e livre c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F ii hu ƒite du éro —u vivre du éro F F F F F F F F F F F F F F F F F F F F F F F F F iv ‚emer™iements F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F v I Les bases de la programmation en C 1 1 Vous avez dit programmer ? 3 €rogr—mmerD ™9est quoi c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F R €rogr—mmerD d—ns quel l—ng—ge c F F F F F F F F F F F F F F F F F F F F F F F F F S €rogr—mmerD ™9est dur c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F W 2 Ayez les bons outils ! 11 ves outils né™ess—ires —u progr—mmeur F F F F F F F F F F F F F F F F F F F F F F IP gode: :flo™ks @‡indowsD w—™ yƒD vinuxA F F F F F F F F F F F F F F F F F F F F IQ †isu—l gCC @‡indows seulementA F F F F F F F F F F F F F F F F F F F F F F F F IW ˆ™ode @w—™ yƒ seulementA F F F F F F F F F F F F F F F F F F F F F F F F F F F F PS 3 Votre premier programme 31 gonsole ou fenêtre c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QP …n minimum de ™ode F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QR É™rire un mess—ge à l9é™r—n F F F F F F F F F F F F F F F F F F F F F F F F F F F F QW vii
  • 13. SOMMAIRE ves ™omment—iresD ™9est très utile 3 F F F F F F F F F F F F F F F F F F F F F F F F RQ 4 Un monde de variables 47 …ne —'—ire de mémoire F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RV hé™l—rer une v—ri—˜le F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F SP e0™her le ™ontenu d9une v—ri—˜le F F F F F F F F F F F F F F F F F F F F F F F F F SW ‚é™upérer une s—isie F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F TI 5 Une bête de calcul 65 ves ™—l™uls de ˜—se F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F TT ves r—™™our™is F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F UH v— ˜i˜liothèque m—thém—tique F F F F F F F F F F F F F F F F F F F F F F F F F F UP 6 Les conditions 77 v— ™ondition ifFFF else F F F F F F F F F F F F F F F F F F F F F F F F F F F F F UV ves ˜ooléensD le ™oeur des ™onditions F F F F F F F F F F F F F F F F F F F F F F F VR v— ™ondition swit™h F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F VU ves tern—ires X des ™onditions ™ondensées F F F F F F F F F F F F F F F F F F F F F WI 7 Les boucles 93 u9estE™e qu9une ˜ou™le c F F F F F F F F F F F F F F F F F F F F F F F F F F F F F WR v— ˜ou™le while F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F WR v— ˜ou™le doFFF while F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F WU v— ˜ou™le for F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F WV 8 TP : Plus ou Moins, votre premier jeu 101 €rép—r—tifs et ™onseils F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHP gorre™tion 3 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHR sdées d9—mélior—tion F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHU 9 Les fonctions 109 gréer et —ppeler une fon™tion F F F F F F F F F F F F F F F F F F F F F F F F F F F IIH hes exemples pour ˜ien ™omprendre F F F F F F F F F F F F F F F F F F F F F F F IIV viii
  • 14. SOMMAIRE II Techniques avancées du langage C 125 10 La programmation modulaire 127 ves prototypes F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IPV ves he—ders F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQH v— ™ompil—tion sép—rée F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQS v— portée des fon™tions et des v—ri—˜les F F F F F F F F F F F F F F F F F F F F F IQV 11 À l'assaut des pointeurs 143 …n pro˜lème ˜ien ennuyeux F F F F F F F F FF F F F F F F F F F F F F F F F F F F IRR v— mémoireD une question d9—dresse F F F FF F F F F F F F F F F F F F F F F F F IRT …tiliser des pointeurs F F F F F F F F F F F F FF F F F F F F F F F F F F F F F F F F IRW invoyer un pointeur à une fon™tion F F F F FF F F F F F F F F F F F F F F F F F F ISR ui — dit X …n pro˜lème ˜ien ennuyeux c F F F F F F F F F F F F F F F F F F ISU 12 Les tableaux 159 ves t—˜le—ux d—ns l— mémoire F F F F F F F F F F F F F F F F F F F F F F F F F F F ITH hé(nir un t—˜le—u F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F ITH €—r™ourir un t—˜le—u F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F ITQ €—ss—ge de t—˜le—ux à une fon™tion F F F F F F F F F F F F F F F F F F F F F F F F ITS 13 Les chaînes de caractères 169 ve type ™h—r F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IUH ves ™h—înes sont des t—˜le—ux de ™h—r F F F F F F F F F F F F F F F F F F F F F F IUP pon™tions de m—nipul—tion des ™h—înes F F F F F F F F F F F F F F F F F F F F F F IUT 14 Le préprocesseur 187 ves in™lude F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IVV ves define F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IWH ves m—™ros F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IWQ ves ™onditions F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IWT 15 Créez vos propres types de variables 201 hé(nir une stru™ture F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PHP …tilis—tion d9une stru™ture F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PHR €ointeur de stru™ture F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PHV ix
  • 15. SOMMAIRE ves énumér—tions F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PII 16 Lire et écrire dans des chiers 215 yuvrir et fermer un (™hier F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PIT hi'érentes méthodes de le™ture G é™riture F F F F F F F F F F F F F F F F F F F F PPQ ƒe dépl—™er d—ns un (™hier F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PQI ‚enommer et supprimer un (™hier F F F F F F F F F F F F F F F F F F F F F F F F PQQ 17 L'allocation dynamique 235 v— t—ille des v—ri—˜les F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PQT ello™—tion de mémoire dyn—mique F F F F F F F F F F F F F F F F F F F F F F F F PRH ello™—tion dyn—mique d9un t—˜le—u F F F F F F F F F F F F F F F F F F F F F F F F PRS 18 TP : réalisation d'un Pendu 249 ves ™onsignes F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PSH v— solution @I X le ™ode du jeuA F F F F F F F F F F F F F F F F F F F F F F F F F F PST v— solution @P X l— gestion du di™tionn—ireA F F F F F F F F F F F F F F F F F F F F PTI sdées d9—mélior—tion F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PUI 19 La saisie de texte sécurisée 273 ves limites de l— fon™tion s™—nf F F F F F F F F F F F F F F F F F F F F F F F F F F PUR ‚é™upérer une ™h—îne de ™—r—™tères F F F F F F F F F F F F F F F F F F F F F F F F PUT gonvertir l— ™h—îne en nom˜re F F F F F F F F F F F F F F F F F F F F F F F F F F F PVQ III Création de jeux 2D en SDL 287 20 Installation de la SDL 289 €ourquoi —voir ™hoisi l— ƒhv c F F F F F F F F F F F F F F F F F F F F F F F F F F F PWH „élé™h—rgement de l— ƒhv F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PWR gréer un projet ƒhv F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PWS 21 Création d'une fenêtre et de surfaces 305 gh—rger et —rrêter l— ƒhv F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QHT yuverture d9une fenêtre F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QIH w—nipul—tion des surf—™es F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QIU ixer™i™e X ™réer un dégr—dé F F F F F F F F F F F F F F F F F F F F F F F F F F F F QPU x
  • 16. SOMMAIRE 22 Acher des images 333 gh—rger une im—ge fw€ F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QQR qestion de l— tr—nsp—ren™e F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QQV gh—rger plus de form—ts d9im—ge —ve™ ƒhv•sm—ge F F F F F F F F F F F F F F F F QRP 23 La gestion des événements 351 ve prin™ipe des événements F F F F F F F F F F F F F F F F F F F F F F F F F F F F QSP ve ™l—vier F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QSU ixer™i™e X diriger ozor —u ™l—vier F F F F F F F F F F F F F F F F F F F F F F F F F QTH v— souris F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QTV ves événements de l— fenêtre F F F F F F F F F F F F F F F F F F F F F F F F F F F QUP 24 TP : Mario Sokoban 377 g—hier des ™h—rges du ƒoko˜—n F F F F F F F F F F F F F F F F F F F F F F F F F F QUV ve m—in et les ™onst—ntes F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QVI ve jeu F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QVT gh—rgement et enregistrement de nive—ux F F F F F F F F F F F F F F F F F F F F RHH v9éditeur de nive—ux F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RHP ‚ésumé et —mélior—tions F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RHV 25 Maîtrisez le temps ! 411 ve Delay et les ticks F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RIP ves timers F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RPH 26 Écrire du texte avec ƒhv•ttf 425 snst—ller ƒhv•ttf F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RPT gh—rgement de ƒhv•ttf F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RPV ves di'érentes méthodes d9é™riture F F F F F F F F F F F F F F F F F F F F F F F F RQI 27 Jouer du son avec FMOD 443 snst—ller pwyh F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RRR sniti—liser et li˜érer pwyh F F F F F F F F F F F F F F F F F F F F F F F F F F F F RRT ves sons ™ourts F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RRU ves musiques @w€QD yqqD ‡weF F FA F F F F F F F F F F F F F F F F F F F F F F RSP ves musiques @wshsA F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RSU xi
  • 17. SOMMAIRE 28 TP : visualisation spectrale du son 463 ves ™onsignes F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RTR v— solution F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RUH sdées d9—mélior—tion F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RUR IV Les structures de données 475 29 Les listes chaînées 477 ‚eprésent—tion d9une liste ™h—înée F F F F F F F F F F F F F F F F F F F F F F F F RUV gonstru™tion d9une liste ™h—înée F F F F F F F F F F F F F F F F F F F F F F F F F F RUW ves fon™tions de gestion de l— liste F F F F F F F F F F F F F F F F F F F F F F F F RVP eller plus loin F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RVU 30 Les piles et les les 489 ves piles F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RWH ves (les F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F RWU 31 Les tables de hachage 503 €ourquoi utiliser une t—˜le de h—™h—ge c F F F F F F F F F F F F F F F F F F F F F SHR u9estE™e qu9une t—˜le de h—™h—ge c F F F F F F F F F F F F F F F F F F F F F F F F SHR É™rire une fon™tion de h—™h—ge F F F F F F F F F F F F F F F F F F F F F F F F F F SHT qérer les ™ollisions F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F SHV xii
  • 18. Première partie Les bases de la programmation en C I
  • 19.
  • 20. Chapitre 1 Vous avez dit programmer ? Diculté : V ous avez déjà entendu parler de programmation et nul doute que si vous avez ce livre entre les mains, c'est parce que vous voulez enn comprendre comment ça fonctionne. Mais programmer en langage C. . . ça veut dire quoi ? Est-ce que c'est bien pour com- mencer ? Est-ce que vous avez le niveau pour programmer ? Est-ce qu'on peut tout faire avec ? Ce chapitre a pour but de répondre à toutes ces questions apparemment bêtes et pourtant très importantes. Grâce à ces questions simples, vous saurez à la n de ce premier chapitre ce qui vous attend. C'est quand même mieux de savoir à quoi sert ce que vous allez apprendre, vous ne trouvez pas ? Q
  • 21. CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ? Programmer, c'est quoi ? yn ™ommen™e p—r l— question l— plus simple qui soitD l— plus ˜—sique de toutes les questions ˜—siquesF ƒi vous —vez l9impression de déjà s—voir tout ç—D je vous ™onseille de lire qu—nd mêmeD ç— ne peut p—s vous f—ire de m—l 3 te p—rs de zéro pour ™e ™oursD don™ je v—is devoir répondre à l— question X Que signie le mot programmer ? €rogr—mmer signi(e ré—liser des progr—mmes inform—tiques F ves progr—mmes deE m—ndent à l9ordin—teur d9e'e™tuer des —™tionsF †otre ordin—teur est rempli de progr—mmes en tous genres X ! l— ™—l™ul—tri™e est un progr—mme Y ! votre tr—itement de texte est un progr—mme Y ! votre logi™iel de ™h—t est un progr—mme Y ! les jeux vidéo sont des progr—mmes @™fF (gF IFID le ™élè˜re jeu r—lfEvife PAF Figure IFI ! ve jeu r—lfEvife P — été progr—mmé en gCCD un l—ng—ge voisin du g in ˜refD les progr—mmes sont p—rtout et permettent de f—ire — priori tout et n9importe quoi sur un ordin—teurF †ous pouvez inventer un logi™iel de ™rypt—ge révolutionn—ire si ç— vous ™h—nteD ou ré—liser un jeu de ™om˜—t en Qh sur snternetD peu importeF †otre ordin—teur peut tout f—ire @s—uf le ™—féD m—is j9y tr—v—illeAF ettention 3 te n9—i p—s dit que ré—liser un jeu vidéo se f—is—it en ™l—qu—nt des doigtsF t9—i simplement dit que tout ™el— ét—it possi˜leD m—is soyez sûrs que ç— dem—nde ˜e—u™oup de tr—v—ilF R
  • 22. PROGRAMMER, DANS QUEL LANGAGE ? gomme vous dé˜utezD nous n9—llons p—s ™ommen™er en ré—lis—nt un jeu QhF ge ser—it sui™id—ireF xous —llons devoir p—sser p—r des progr—mmes très simplesF …ne des preE mières ™hoses que nous verrons est comment acher un message à l'écranF yuiD je s—isD ç— n9— rien de tr—ns™end—ntD m—is rien que ç— ™royezEmoiD ™e n9est p—s —ussi f—™ile que ç— en — l9—irF Ç— impressionne moins les —misD m—is on v— ˜ien devoir p—sser p—r làF €etit à petitD vous —pprendrez su0s—mment de ™hoses pour ™ommen™er à ré—liser des progr—mmes de plus en plus ™omplexesF ve ˜ut de ™e ™ours est que vous soyez ™—p—˜les de vous en sortir d—ns n9importe quel progr—mme é™rit en gF w—is tenezD —u f—itD vous s—vez ™e que ™9est vousD ™e f—meux l—ng—ge g c Programmer, dans quel langage ? †otre ordin—teur est une m—™hine ˜iz—rreD ™9est le moins que l9on puisse direF yn ne peut s9—dresser à lui qu9en lui envoy—nt des H et des IF einsiD si je tr—duis p—is le ™—l™ul Q C S en l—ng—ge inform—tiqueD ç— pourr—it donner quelque ™hose ™omme X 1 HHIHIIHIIHHIHHIIHIHHIIIIH ge que vous voyez làD ™9est le l—ng—ge inform—tique de votre ordin—teurD —ppelé langage binaire @retenez ˜ien ™e mot 3AF †otre ordin—teur ne ™onn—ît que ™e l—ng—geElà etD ™omme vous pouvez le ™onst—terD ™9est —˜solument in™ompréhensi˜leF hon™ voilà notre premier vr—i pro˜lème X Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ? †otre ordin—teur ne p—rle p—s l9—ngl—is et en™ore moins le fr—nç—isF €ourt—ntD il est in™on™ev—˜le d9é™rire un progr—mme en l—ng—ge ˜in—ireF wême les inform—ti™iens les plus fous ne le font p—sD ™9est vous dire 3 ih ˜ien l9idée que les inform—ti™iens ont eueD ™9est d9inventer de nouve—ux l—ng—ges qui ser—ient ensuite tr—duits en ˜in—ire pour l9ordin—teurF ve plus dur à f—ireD ™9est de ré—liser le progr—mme qui f—it l— tr—du™tion F reureusementD ™e progr—mme — déjà été é™rit p—r des inform—ti™iens et nous n9—urons p—s à le ref—ire @ouf 3AF yn v— —u ™ontr—ire s9en servir pour é™rire des phr—ses ™omme X Fais le calcul 3 + 5 qui seront tr—duites p—r le progr—mme de tr—du™tion en quelque ™hose ™omme X HHIHIIHIIHHIHHIIHIHHIIIIH F ve s™hém— IFP résume ™e que je viens de vous expliquerF 1. J'invente, je ne connais quand même pas la traduction informatique par c÷ur. S
  • 23. CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ? Figure IFP ! ƒ™hém— @très simpli(éA de ré—lis—tion d9un progr—mme Un peu de vocabulaire và j9—i p—rlé —ve™ des mots simplesD m—is il f—ut s—voir qu9en inform—tique il existe un mot pour ™h—™une de ™es ™hosesElàF „out —u long de ™e ™oursD vous —llez d9—illeurs —pprendre à utiliser un vo™—˜ul—ire —ppropriéF xon seulement vous —urez l9—ir de s—voir de quoi vous p—rlezD m—is si un jour @et ç— —rriver—A vous devez p—rler à un —utre progr—mmeurD vous s—urez vous f—ire ™omprendre F 2 ‚eprenons le s™hém— que l9on vient de voirF v— première ™—se est †otre progr—mme est é™rit d—ns un l—ng—ge simpli(é F ge f—meux l—ng—ge simpli(é est —ppelé en f—it langage de haut niveauF sl existe plusieurs nive—ux de l—ng—gesF €lus un l—ng—ge est h—ut nive—uD plus il est pro™he de votre vr—ie l—ngue @™omme le fr—nç—isAF …n l—ng—ge de h—ut nive—u est don™ f—™ile à utiliserD m—is ™el— — —ussi quelques petits déf—uts ™omme nous le verrons plus t—rdF sl existe de nom˜reux l—ng—ges de plus ou moins h—ut nive—u en inform—tique d—ns lesquels vous pouvez é™rire vos progr—mmesF in voi™i quelquesEuns p—r exemple X ! le g Y ! le gCC Y ! t—v— Y ! †isu—l f—si™ Y ! helphi Y ! et™F xotez que je ne les —i p—s ™l—ssés p—r nive—u de l—ng—ge D n9—llez don™ p—s vous im—giner que le premier de l— liste est plus f—™ile que le dernier ou l9inverseF ge sont juste quelques exemples F 3 gert—ins de ™es l—ng—ges sont plus h—ut nive—u que d9—utres @don™ en théorie un peu plus f—™iles à utiliserAF yn v— voir not—mment un peu plus loin ™e qui di'éren™ie le l—ng—ge g du l—ng—ge gCCF …n —utre mot de vo™—˜ul—ire à retenir est code sourceF ge qu9on —ppelle le ™ode sour™eD ™9est tout simplement le ™ode de votre progr—mme é™rit d—ns un l—ng—ge de h—ut nive—uF g9est don™ vous qui é™rivez le ™ode sour™eD qui ser— ensuite tr—duit en 2. Certes, les gens autour de vous vous regarderont comme si vous êtiez des extra-terrestres, mais ça il ne faudra pas y faire attention ! 3. D'avance désolé pour tous les autres langages qui existent, mais faire une liste complète serait vraiment trop long ! T
  • 24. PROGRAMMER, DANS QUEL LANGAGE ? ˜in—ireF †enonsEen justement —u progr—mme de tr—du™tion qui tr—duit notre l—ng—ge de h—ut nive—u @™omme le g ou le gCCA en ˜in—ireF ge progr—mme — un nom X on l9—ppelle le compilateurF v— tr—du™tionD elleD s9—ppelle la compilationF „rès import—nt X il existe un ™ompil—teur di'érent pour ™h—que l—ng—ge de h—ut nive—uF g9est d9—illeurs tout à f—it logique X les l—ng—ges ét—nt di'érentsD on ne tr—duit p—s le gCC de l— même m—nière qu9on tr—duit le helphiF Vous verrez par la suite que même pour le langage C il existe plusieurs com- pilateurs diérents ! Il y a le compilateur écrit par Microsoft, le compilateur GNU, etc. On verra tout cela dans le chapitre suivant. Heureusement, ces compilateurs-là sont quasiment identiques (même s'il y a parfois quelques légères diérences que nous apprendrons à reconnaître). in(nD le progr—mme ˜in—ire ™réé p—r le ™ompil—teur est —ppelé l'exécutableF g9est d9—illeurs pour ™ette r—ison que les progr—mmes @tout du moins sous ‡indowsA ont l9extension Fexe ™omme iˆi™ut—˜leF ‚eprenons notre s™hém— pré™édentD et utilisons ™ette fois des vr—is mots tordus d9inE form—ti™ien @(gF IFQAF Figure IFQ ! ve même s™hém—D —ve™ le ˜on vo™—˜ul—ire Pourquoi choisir d'apprendre le C ? gomme je vous l9—i dit plus h—utD il existe de très nom˜reux l—ng—ges de h—ut nive—uF hoitEon ™ommen™er p—r l9un d9entre eux en p—rti™ulier c qr—nde questionF €ourt—ntD il f—ut ˜ien f—ire un ™hoixD ™ommen™er l— progr—mm—tion à un moment ou à un —utreF it làD vous —vez en f—it le ™hoix entre X ! un langage très haut niveau X ™9est f—™ile à utiliserD plutôt gr—nd pu˜li™ F €—rmi euxD on ™ompte €ythonD ‚u˜yD †isu—l f—si™ et ˜ien d9—utresF ges l—ng—ges permettent d9é™rire des progr—mmes plus r—pidementD en règle génér—leF sls né™essitent toutefois d9être —™™omp—gnés de (™hiers pour qu9ils puissent s9exé™uter @™omme un interpréE teurA Y ! un langage un peu plus bas niveau @m—is p—s trop qu—nd même 3A X ils sont peutEêtre un peu plus di0™iles ™ertesD m—is —ve™ un l—ng—ge ™omme le gD vous —llez en —pprendre ˜e—u™oup plus sur l— progr—mm—tion et sur le fon™tionnement de votre U
  • 25. CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ? ordin—teurF †ous serez ensuite l—rgement ™—p—˜les d9—pprendre un —utre l—ng—ge de progr—mm—tion si vous le désirezF †ous serez don™ plus —utonomesF €—r —illeursD le g est un l—ng—ge très popul—ireF sl est utilisé pour progr—mmer une gr—nde p—rtie des logi™iels que vous ™onn—issezF in(nD le l—ng—ge g est un des l—ng—ges les plus ™onnus et les plus utilisés qui existentF sl est très fréquent qu9il soit enseigné lors d9études supérieures en inform—tiqueF †oilà les r—isons qui m9in™itent à vous —pprendre le l—ng—ge g plutôt qu9un —utre F te 4 ne dis p—s qu9il faut ™ommen™er p—r ç—D m—is je vous dis plutôt que ™9est un ˜on ™hoix qui v— vous donner de solides ™onn—iss—n™esF te v—is supposer tout —u long de ™e ™ours que ™9est votre premier l—ng—ge de progr—mE m—tionD que vous n9—vez j—m—is f—it de progr—mm—tion —v—ntF ƒi p—r h—s—rdD vous —vez déjà un peu progr—mméD ç— ne pourr— p—s vous f—ire de m—l de reprendre à zéroF Il y a quelque chose que je ne comprends pas. . . Quelle est la diérence entre le langage C et cet autre langage dont on parle, le langage C++ ? ve l—ng—ge g et le l—ng—ge gCC sont très simil—iresF sls sont tous les deux toujours très utilisésF €our ˜ien ™omprendre ™omment ils sont nésD il f—ut f—ire un peu d9histoireF ! eu tout dé˜utD à l9époque où les ordin—teurs pes—ient des tonnes et f—is—ient l— t—ille de votre m—isonD on — ™ommen™é à inventer un l—ng—ge de progr—mm—tion —ppelé l'AlgolF ! ves ™hoses évolu—ntD on — ™réé un nouve—u l—ng—ge —ppelé le CPLD qui évolu— luiE même en BCPLD qui prit ensuite le nom de langage BF ! €uis un ˜e—u jourD on en est —rrivé à ™réer un —utre l—ng—ge en™oreD qu9on — —ppeléF F F le langage CF ge l—ng—geD s9il — su˜i quelques modi(™—tionsD reste en™ore un des plus utilisés —ujourd9huiF ! …n peu plus t—rdD on — proposé d9—jouter des ™hoses —u l—ng—ge gF …ne sorte d9—mélioE r—tion si vous voulezF ge nouve—u l—ng—geD que l9on — —ppelé gCC D est entièrement ˜—sé sur le gF Le langage C++ n9est en f—it rien d9—utre que le l—ng—ge g —ve™ des —jouts permett—nt de progr—mmer d9une f—çon di'érenteF Qu'il n'y ait pas de malentendus : le langage C++ n'est pas meilleur que le langage C, il permet juste de programmer diéremment. Disons aussi qu'il permet au nal de programmer un peu plus ecacement et de mieux hiérarchiser le code de son programme. Malgré tout, il ressemble beaucoup au C. Si vous voulez passer au C++ par la suite, cela vous sera facile. ge n9est €eƒ p—r™e que le gCC est une évolution du g qu9il f—ut —˜solument f—ire du gCC pour ré—liser des progr—mmesF ve l—ng—ge g n9est p—s un vieux l—ng—ge ou˜lié X —u ™ontr—ireD il est en™ore très utilisé —ujourd9huiF sl est à l— ˜—se des plus gr—nds systèmes d9exploit—tion tels …nix @et don™ vinux et w—™ yƒA ou ‡indowsF 4. On pourrait citer d'autres raisons : certains langages de programmation sont plus destinés au Web (comme PHP) qu'à la réalisation de programmes informatiques. V
  • 26. PROGRAMMER, C'EST DUR ? Retenez donc X le g et le gCC ne sont p—s des l—ng—ges ™on™urrentsD on peut f—ire —ut—nt de ™hoses —ve™ l9un qu9—ve™ l9—utreF ge sont juste deux m—nières de progr—mmer —ssez di'érentesF Programmer, c'est dur ? †oilà une question qui doit ˜ien vous torturer l9espritF elors X f—utEil être un superE m—thém—ti™ien qui — f—it IH —ns d9études supérieures pour pouvoir ™ommen™er l— proE gr—mm—tion c v— réponseD que je vous r—ssureD est nonF xonD un superEnive—u en m—ths n9est p—s néE ™ess—ireF in f—it tout ™e que vous —vez ˜esoin de ™onn—îtreD ™e sont les qu—tre opér—tions de ˜—se X ! l9—ddition Y ! l— soustr—™tion Y ! l— multipli™—tion Y ! l— divisionF ge n9est p—s trop intimid—ntD —vouez 3 te vous expliquer—i d—ns un pro™h—in ™h—pitre ™omment l9ordin—teur ré—lise ™es opér—tions de ˜—se d—ns vos progr—mmesF frefD nive—u m—thsD il n9y — p—s de di0™ulté insurmont—˜leF in f—itD tout dépend du progr—mme que vous —llez ré—liser X si vous devez f—ire un logi™iel de ™rypt—geD —lors ouiD il vous f—udr— ™onn—ître des ™hoses en m—thsF ƒi vous devez f—ire un progr—mme qui f—it de l— QhD ouiD il vous f—udr— quelques ™onn—iss—n™es en géométrie de l9esp—™eF gh—que ™—s est p—rti™ulierF w—is pour —pprendre le l—ng—ge g luiEmêmeD vous n9—vez p—s ˜esoin de ™onn—iss—n™es pointues en quoi que ™e soitF Mais alors, où est le piège ? Où est la diculté ? sl f—ut s—voir ™omment un ordin—teur fon™tionne pour ™omprendre ™e qu9on f—it en gF he ™e point de vueElàD r—ssurezEvousD je vous —pprendr—i tout —u fur et à mesureF xotez qu9un progr—mmeur — —ussi ™ert—ines qu—lités ™omme X ! la patience X un progr—mme ne m—r™he j—m—is du premier ™oupD il f—ut s—voir perE sévérer 3 ! le sens de la logique X p—s ˜esoin d9être forts en m—ths ™ertesD m—is ç— ne vous empê™her— p—s d9—voir à ré)é™hirF hésolé pour ™eux qui pens—ient que ç— —ll—it tom˜er tout ™uit s—ns e'ort 3 ! le calme X nonD on ne t—pe p—s sur son ordin—teur —ve™ un m—rte—uF ge n9est p—s ç— qui fer— m—r™her votre progr—mmeF in ˜refD et pour f—ire simpleD il n9y — p—s de vérit—˜les ™onn—iss—n™es requises pour progr—mmerF …n nul en m—ths peut s9en sortir s—ns pro˜lèmeD le tout est d9—voir l— p—tien™e de ré)é™hirF sl y en — d9—illeurs ˜e—u™oup qui dé™ouvrent qu9ils —dorent ç— 3 W
  • 27. CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ? En résumé ! €our ré—liser des progr—mmes inform—tiquesD on doit é™rire d—ns un langage que l9ordin—teur ™omprend F ! sl existe de nom˜reux l—ng—ges inform—tiques que l9on peut ™l—sser p—r nive—uF ves l—ng—ges dits de h—ut nive—u sont p—rfois plus f—™iles à m—îtriser —u détriment souvent d9une perte de perform—n™es d—ns le progr—mme (n—lF ! ve langage C que nous —llons étudier d—ns ™e livre est ™onsidéré ™omme ét—nt de ˜—s nive—uF g9est un des l—ng—ges de progr—mm—tion les plus ™élè˜res et les plus utilisés —u mondeF ! ve code source est une série d9instru™tions é™rites d—ns un l—ng—ge inform—tiqueF ! ve compilateur est un progr—mme qui tr—nsforme votre ™ode sour™e en code bi- naireD qui peut —lors être exé™uté p—r votre pro™esseurF ves Fexe que l9on ™onn—ît sont des progr—mmes ˜in—iresD il n9y — plus de ™ode sour™e à l9intérieurF ! v— progr—mm—tion ne requiert p—s en elleEmême de ™onn—iss—n™es m—thém—tiques poussées Y né—nmoinsD il est né™ess—ire d9—voir un ˜on sens de l— logique et d9être 5 méthodiqueF 5. Sauf dans quelques cas précis où votre application doit faire appel à des formules mathématiques, comme c'est le cas des logiciels de cryptage. IH
  • 28. Chapitre 2 Ayez les bons outils ! Diculté : A près un premier chapitre plutôt introductif, nous commençons à entrer dans le vif du sujet. Nous allons répondre à la question suivante : De quels logiciels a-t-on besoin pour programmer ? . Il n'y aura rien de dicile à faire dans ce chapitre, on va prendre le temps de se familiariser avec de nouveaux logiciels. Protez-en ! Dans le chapitre suivant, nous commencerons à vraiment programmer et il ne sera plus l'heure de faire la sieste ! II
  • 29. CHAPITRE 2. AYEZ LES BONS OUTILS ! Les outils nécessaires au programmeur elors à votre —visD de quels outils un progr—mmeur —EtEil ˜esoin c ƒi vous —vez —ttentiE vement suivi le ™h—pitre pré™édentD vous devez en ™onn—ître —u moins un 3 †ous voyez de quoi je p—rle cF F F †r—iment p—s c ih ouiD il s9—git du compilateurD ™e f—meux progr—mme qui permet de tr—duire votre l—ng—ge g en l—ng—ge ˜in—ire 3 gomme je vous l9—v—is déjà un peu dit d—ns le premier ™h—pitreD il existe plusieurs ™ompil—teurs pour le l—ng—ge gF xous —llons voir que le ™hoix du ™ompil—teur ne ser— p—s très ™ompliqué d—ns notre ™—sF fonD de quoi d9—utre —EtEon ˜esoin c te ne v—is p—s vous l—isser deviner plus longtempsF †oi™i le stri™t minimum pour un progr—mmeur X ! un éditeur de texte pour é™rire le ™ode sour™e du progr—mmeF in théorie un logi™iel ™omme le flo™Enotes sous ‡indowsD ou vi sous vinux f—it l9—'—ireF v9idé—lD ™9est d9—voir un éditeur de texte intelligent qui ™olore tout seul le ™odeD ™e qui vous permet de vous y repérer ˜ien plus f—™ilement Y ! un compilateur pour tr—nsformer @ ™ompiler A votre sour™e en ˜in—ire Y ! un débogueur pour vous —ider à tr—quer les erreurs d—ns votre progr—mme F 1 e prioriD si vous êtes —venturiersD vous pouvez vous p—sser de dé˜ogueurF w—is ˜onD je s—is pertinemment que vous ne t—rderez p—s à en —voir ˜esoinF YEA À p—rtir de m—inten—nt on — deux possi˜ilités X ! soit on ré™upère ™h—™un de ™es trois progr—mmes séparémentF g9est l— méthode l— plus ™ompliquéeD m—is elle fon™tionneF ƒous vinux en p—rti™ulierD ˜on nom˜re de progr—mmeurs préfèrent utiliser ™es trois progr—mmes sép—rémentF te ne dét—iller—i p—s ™ette méthode i™iD je v—is plutôt vous p—rler de l— méthode simple Y ! soit on utilise un progr—mme troisEenEun @™omme les liquides v—isselleD ouiD ouiA qui ™om˜ine éditeur de texteD ™ompil—teur et dé˜ogueurF ges progr—mmes troisEenE un sont —ppelés IDE D ou en™ore invironnements de développement F 2 sl existe plusieurs environnements de développementF eu dé˜utD vous —urez peutEêtre un peu de m—l à ™hoisir ™elui qui vous pl—îtF …ne ™hose est sûre en tout ™—s X vous pouvez ré—liser n9importe quel type de progr—mmeD quel que soit l9shi que vous ™hoisissezF Choisissez votre IDE sl m9— sem˜lé intéress—nt de vous montrer quelques shi p—rmi les plus ™onnusF „ous sont disponi˜les gr—tuitementF €ersonnellementD je n—vigue un peu entre tous ™euxElà et j9utilise l9shi qui me pl—ît selon le jourF ! …n des shi que je préfère s9—ppelle Code: :BlocksF sl est gr—tuit et fon™tionne sur l— plup—rt des systèmes d9exploit—tionF te ™onseille d9utiliser ™eluiE™i pour dé˜uter @et 1. On n'a malheureusement pas encore inventé le correcteur qui corrigerait tout seul nos erreurs. Ceci dit, quand on sait bien se servir du débogueur, on peut facilement retrouver ses erreurs ! 2. Integrated Development Environment IP
  • 30. CODE: :BLOCKS (WINDOWS, MAC OS, LINUX) même pour l— suite s9il vous pl—ît ˜ien 3AF pon™tionne sous ‡indowsD w—™ et vinuxF ! ve plus ™élè˜re shi sous ‡indowsD ™9est ™elui de wi™rosoft X Visual C++F sl existe à l— ˜—se en version p—y—nte @™hère 3AD m—is il existe heureusement une version gr—tuite intitulée Visual C++ Express qui est vr—iment très ˜ien @il y — peu de di'éE ren™es —ve™ l— version p—y—nteAF sl est très ™omplet et possède un puiss—nt module de ™orre™tion des erreurs @dé˜og—geAF pon™tionne sous ‡indows uniquementF ! ƒur w—™ yƒ ˆD vous pouvez utiliser ˆ™odeD génér—lement fourni sur le gh d9insE t—ll—tion de w—™ yƒ ˆF g9est un shi très —ppré™ié p—r tous ™eux qui font de l— progr—mm—tion sur w—™F pon™tionne sous w—™ yƒ ˆ uniquementF Note pour les utilisateurs de Linux : il existe de nombreux IDE sous Linux, mais les programmeurs expérimentés préfèrent parfois se passer d'IDE et compiler à la main , ce qui est un peu plus dicile. En ce qui nous concerne nous al- lons commencer par utiliser un IDE. Je vous conseille d'installer Code: :Blocks si vous êtes sous Linux, pour suivre mes explications. Quel est le meilleur de tous ces IDE ? „ous ™es shi vous permettront de progr—mmer et de suivre le reste de ™e ™ours s—ns pro˜lèmeF gert—ins sont plus ™omplets —u nive—u des optionsD d9—utres un peu plus intuitifs à utiliserD m—is d—ns tous les ™—s les progr—mmes que vous ™réerez seront les mêmes quel que soit l9shi que vous utilisezF ge ™hoix n9est don™ p—s si ™ru™i—l qu9on pourr—it le ™roireF „out —u long de tout ™e ™oursD j9utiliser—i gode: :flo™ksF ƒi vous voulez o˜tenir ex—™E tement les mêmes é™r—ns que moiD surtout pour ne p—s être perdus —u dé˜utD je vous re™omm—nde don™ de ™ommen™er p—r inst—ller gode: :flo™ksF Code: :Blocks (Windows, Mac OS, Linux) gode: :flo™ks est un shi li˜re et gr—tuitD disponi˜le pour Windows, Mac et LinuxF gode: :flo™ks n9est disponi˜le pour le moment qu9en —ngl—isF gel— ne devr—it €eƒ vous repousser à l9utiliserF groyezEmoiD nous —urons quoi qu9il en soit peu —'—ire —ux menus X ™9est le l—ng—ge g qui nous intéresseF ƒ—™hez toutefois que qu—nd vous progr—mmerezD vous serez de toute f—çon ™onfrontés ˜ien souvent à des do™ument—tions en —ngl—isF †oilà don™ une r—ison de plus pour s9entr—îner à utiliser ™ette l—ngueF IQ
  • 31. CHAPITRE 2. AYEZ LES BONS OUTILS ! Télécharger Code: :Blocks ‚endezEvous sur l— p—ge de télé™h—rgements de gode: :flo™ks F 3 £   ¢ gode we˜ X VUHQQU ¡ ! ƒi vous êtes sous ‡indowsD repérez l— se™tion ‡indows un peu plus ˜—s sur ™ette p—geF „élé™h—rgez le logi™iel en pren—nt le progr—mme qui ™ontient mingw d—ns le nom @exF X ™ode˜lo™ksEVFHPmingwEsetupFexeAF v9—utre version ét—nt s—ns ™ompil—teurD vous —uriez eu du m—l à ™ompiler vos progr—mmes 3 ! ƒi vous êtes sous vinuxD ™hoisissez le p—™k—ge qui ™orrespond à votre distri˜utionF ! in(nD sous w—™D ™hoisissez le (™hier le plus ré™ent de l— listeF ixF X ™ode˜lo™ksEVFHPEpPEm—™FzipF v9inst—ll—tion est très simple et r—pideF v—issez toutes les options p—r déf—ut et l—n™ez le progr—mmeF †ous devriez voir une fenêtre simil—ire à l— (gF PFIF yn distingue R gr—ndes se™tions d—ns l— fenêtreD numérotées sur l9im—ge X IF la barre d'outils X elle ™omprend de nom˜reux ˜outonsD m—is seuls quelquesEuns nous seront régulièrement utilesF t9y reviendr—i plus loin Y PF la liste des chiers du projet X ™9est à g—u™he que s9—0™he l— liste de tous les (™hiers sour™e de votre progr—mmeF xotez que sur ™ette ™—pture —u™un projet n9— été ™rééD on ne voit don™ p—s en™ore de (™hiers à l9intérieur de l— listeF †ous verrez ™ette se™tion se remplir d—ns ™inq minutes en lis—nt l— suite du ™ours Y QF la zone principale X ™9est là que vous pourrez é™rire votre ™ode en l—ng—ge g Y RF la zone de notication X —ussi —ppelée l— zone de l— mort D ™9est i™i que vous verrez les erreurs de ™ompil—tion s9—0™her si votre ™ode ™omporte des erreursF gel— —rrive très régulièrement 3 sntéressonsEnous m—inten—nt à une se™tion p—rti™ulière de l— ˜—rre d9outils @(gF PFPAF †ous trouverez les ˜outons suiv—nts @d—ns l9ordreA X gompilerD ixé™uterD gompiler 8 ixé™uter et „out re™ompilerF ‚etenezElesD nous les utiliserons régulièrementF †oi™i l— signi(™—tion de ™h—™une des qu—tre i™ônes que vous voyez sur l— (gF PFPD d—ns l9ordre X ! compiler X tous les (™hiers sour™e de votre projet sont envoyés —u ™ompil—teur qui v— se ™h—rger de ™réer un exé™ut—˜leF ƒ9il y — des erreurs D l9exé™ut—˜le ne ser— p—s 4 ™réé et on vous indiquer— les erreurs en ˜—s de gode: :flo™ks Y ! exécuter X ™ette i™ône l—n™e juste le dernier exé™ut—˜le que vous —vez ™ompiléF gel— vous permettr— don™ de tester votre progr—mme et de voir —insi ™e qu9il donneF h—ns l9ordreD si vous —vez ˜ien suiviD on doit d9—˜ord ™ompilerD puis exé™uter pour tester ™e que ç— donneF yn peut —ussi utiliser le troisième ˜outonF F F ! compiler exécuter X p—s ˜esoin d9être un génie pour ™omprendre que ™9est l— ™om˜in—ison des deux ˜outons pré™édentsF g9est d9—illeurs ™e ˜outon que vous 3. J'en prote pour vous rappeler que les codes web peuvent être entrés dans le formulaire du Site du Zéro prévu à cet eet. Cela vous redirige automatiquement sur la page ou le chier qui vous intéresse. Voir l'avant-propos pour plus d'informations à ce sujet. 4. Ce qui a de fortes chances d'arriver tôt ou tard ! IR
  • 32. CODE: :BLOCKS (WINDOWS, MAC OS, LINUX) Figure PFI ! gode: :flo™ks Figure PFP ! ves prin™ip—ux ˜outons de l— ˜—rre d9outils IS
  • 33. CHAPITRE 2. AYEZ LES BONS OUTILS ! utiliserez le plus souventF xotez que s9il y — des erreurs pend—nt l— ™ompil—tion @pend—nt l— génér—tion de l9exé™ut—˜leAD le progr—mme ne ser— p—s exé™utéF À l— pl—™eD vous —urez droit à une ˜eeelle liste d9erreurs à ™orriger 3 ! tout reconstruire X qu—nd vous f—ites ™ompilerD gode: :flo™ks ne re™ompile en f—it que les (™hiers que vous —vez modi(és et non les —utresF €—rfois E je dis ˜ien p—rfois E vous —urez ˜esoin de dem—nder à gode: :flo™ks de vous re™ompiler tous les (™hiersF yn verr— plus t—rd qu—nd on — ˜esoin de ™e ˜outonD et vous verrez plus en dét—ils le fon™tionnement de l— ™ompil—tion d—ns un ™h—pitre futurF €our l9inst—ntD on se ™ontente de s—voir le minimum né™ess—ire pour ne p—s tout mél—ngerF ge ˜outon ne nous ser— don™ p—s utile de suiteF Je vous conseille d'utiliser les raccourcis plutôt que de cliquer sur les boutons, parce que c'est quelque chose qu'on fait vraiment très très souvent. Retenez en particulier qu'il faut taper sur pW pour faire gompiler 8 ixé™uter. Créer un nouveau projet €our ™réer un nouve—u projetD ™9est très simple X —llez d—ns le menu pile G xew G €roje™tF h—ns l— fenêtre qui s9ouvre @(gF PFQAD ™hoisissez gonsole —ppli™—tionF Figure PFQ ! xouve—u projet IT
  • 34. CODE: :BLOCKS (WINDOWS, MAC OS, LINUX) Comme vous pouvez le voir, Code: :Blocks propose de réaliser pas mal de types de programmes diérents qui utilisent des bibliothèques connues comme la SDL (2D), OpenGL (3D), Qt et wxWidgets (fenêtres), etc. Pour l'instant, ces icônes servent plutôt à faire joli car les bibliothèques ne sont pas installées sur votre ordinateur, vous ne pourrez donc pas les faire marcher. Nous nous intéresserons à ces autres types de programmes bien plus tard. En attendant il faudra vous contenter de Console , car vous n'avez pas encore le niveau nécessaire pour créer les autres types de programmes. gliquez sur qo pour ™réer le projetF …n —ssist—nt s9ouvreF p—ites xextD ™ette première p—ge ne serv—nt à rienF yn vous dem—nde ensuite si vous —llez f—ire du g ou du gCC @(gF PFRA X répondez g F Figure PFR ! ghoix du l—ng—ge yn vous dem—nde le nom de votre projet @(gF PFSA et d—ns quel dossier les (™hiers sour™e seront enregistrésF in(nD l— dernière p—ge @(gF PFTA vous permet de ™hoisir de quelle f—çon le progr—mme doit être ™ompiléF †ous pouvez l—isser les options p—r déf—utD ç— n9—ur— p—s d9in™iden™e sur ™e que nous —llons f—ire d—ns l9immédi—t @veillez à ™e que l— ™—se he˜ug ou ‚ele—se —u moins soit ™o™héeAF gliquez sur pinishD ™9est ˜on 3 gode: :flo™ks vous ™réer— un premier projet —ve™ déjà un tout petit peu de ™ode sour™e ded—nsF h—ns le ™—dre de g—u™he €roje™ts D développez l9—r˜ores™en™e en ™liqu—nt sur le petit C pour —0™her l— liste des (™hiers du projetF †ous devriez —voir —u moins un m—inF™ IU
  • 35. CHAPITRE 2. AYEZ LES BONS OUTILS ! Figure PFS ! xom et empl—™ement du projet Figure PFT ! wode de ™ompil—tion IV
  • 36. VISUAL C++ (WINDOWS SEULEMENT) que vous pourrez ouvrir en dou˜leE™liqu—nt dessusF †ous voilà p—rés 3 Visual C++ (Windows seulement) uelques petits r—ppels sur †isu—l gCC X ! ™9est l9shi de wi™rosoft Y ! il est à l— ˜—se p—y—ntD m—is wi™rosoft — sorti une version gr—tuite intitulée †isu—l gCC ixpress Y ! il permet de progr—mmer en g et en gCC @et non p—s seulement en gCC ™omme son nom le l—isse entendreAF xous —llons ˜ien entendu voir i™i l— version gr—tuiteD †isu—l gCC ixpress @(gF PFUAF 5 Figure PFU ! †isu—l gCC ixpress Quelles sont les diérences avec le vrai Visual ? 5. Attention, il n'est compatible avec Windows 7 qu'à partir de la version 2010. IW
  • 37. CHAPITRE 2. AYEZ LES BONS OUTILS ! sl n9y — p—s l9éditeur de ressour™es qui vous permet de dessiner des im—gesD des i™ônesD ou des fenêtresF w—is ˜onD ç—D entre nousD on s9en moque ˜ien p—r™e qu9on n9—ur— p—s ˜esoin de s9en servir d—ns ™e ™oursF ge ne sont p—s des fon™tionn—lités indispens—˜lesD ˜ien —u ™ontr—ireF €our télé™h—rger †isu—l gCC ixpressD rendezEvous sur le site we˜ de †isu—l gCCF £   ¢gode we˜ X QQQUQQ ¡ ƒéle™tionnez ensuite †isu—l gCC ixpress pr—nç—is un peu plus ˜—s sur l— p—geF †isu—l gCC ixpress est en fr—nç—is et tot—lement gr—tuitF ge n9est don™ p—s une version d9ess—i limitée d—ns le tempsF g9est une ™h—n™e d9—voir un shi —ussi puiss—nt que ™elui de wi™rosoft disponi˜le gr—tuitementD ne l— l—issez don™ p—s p—sserF Installation v9inst—ll—tion devr—it norm—lement se p—sser s—ns en™om˜reF ve progr—mme d9inst—lE l—tion v— télé™h—rger l— dernière version de †isu—l sur snternetF te vous ™onseille de l—isser les options p—r déf—utF À l— (nD on vous dit qu9il f—ut vous enregistrer d—ns les QH joursF €—s de p—niqueD ™9est gr—tuit et r—pide m—is il f—ut le f—ireF gliquez sur le lien qui vous est donné X vous —rrivez sur le site de wi™rosoftF gonne™tezE vous —ve™ votre ™ompte ‡indows vive sh @équiv—lent du ™ompte rotm—il ou wƒxA ou ™réezEen un si vous n9en —vez p—sD puis répondez —u petit questionn—ireF yn vous donner— à l— (n une ™lé d9enregistrementF †ous devrez re™opier ™ette ™lé d—ns le menu c G sns™rire le produitF Créer un nouveau projet €our ™réer un nouve—u projet sous †isu—lD —llez d—ns le menu pi™hier G xouve—u G €rojetF ƒéle™tionnez ‡inQP d—ns l— ™olonne de g—u™heD puis eppli™—tion ™onsole ‡inQP à droite @(gF PFVAF intrez un nom pour votre projetD p—r exemple testF †—lidezF …ne nouvelle fenêtre s9ouvre @(gF PFWAF gette fenêtre ne sert p—s à gr—ndE™hoseF €—r ™ontreD ™liquez sur €—r—mètres de l9—ppli™—tion d—ns l— ™olonne de g—u™heF †eillez à ™e que €rojet vide soit ™o™hé ™omme sur l— (gF PFIHF gliquez en(n sur „erminerF Ajouter un nouveau chier source †otre projet est pour l9inst—nt ˜ien videF p—ites un ™li™ droit sur le dossier pi™hiers sour™e situé sur votre g—u™heD puis —llez d—ns ejouter G xouvel élément @(gF PFIIAF …ne fenêtre s9ouvreF ƒéle™tionnez pi™hier gCC @F™ppA 6 F intrez un nom pour votre 6. Je sais, on ne fait pas de C++ mais ça n'a pas d'importance ici. PH
  • 38. VISUAL C++ (WINDOWS SEULEMENT) Figure PFV ! gré—tion de projet †isu—l gCC ixpress Figure PFW ! essist—nt ™ré—tion de projet †isu—l gCC ixpress PI
  • 39. CHAPITRE 2. AYEZ LES BONS OUTILS ! Figure PFIH ! gon(gur—tion du projet Figure PFII ! ejout d9un (™hier sour™e PP
  • 40. VISUAL C++ (WINDOWS SEULEMENT) (™hier X m—inF™D ™omme sur l— (gF PFIPF Figure PFIP ! ghoix du type et du nom du (™hier sour™e gliquez sur ejouterF g9est ˜onD vous —llez pouvoir ™ommen™er à é™rire du ™ode 3 La fenêtre principale de Visual †oyons ensem˜le le ™ontenu de l— fenêtre prin™ip—le de †isu—l gCC ixpress @(gF PFIQAF gette fenêtre ressem˜le en tous points à ™elle de gode: :flo™ksF yn v— r—pidement @reAvoir qu—nd même ™e que signi(ent ™h—™une des p—rtiesF IF v— ˜—rre d9outils X tout ™e qu9il y — de plus st—nd—rdF yuvrirD enregistrerD enreE gistrer toutD ™ouperD ™opierD ™ollerD et™F €—r déf—utD il sem˜le qu9il n9y —it p—s de ˜outon de ˜—rre d9outils pour ™ompilerF †ous pouvez les r—jouter en f—is—nt un ™li™ droit sur l— ˜—rre d9outilsD puis en ™hoisiss—nt hé˜oguer et qénérer d—ns l— listeF „outes ™es i™ônes de ™ompil—tion ont leur équiv—lent d—ns les menus qénérer et hé˜oguerF ƒi vous f—ites qénérerD ™el— ™réer— l9exé™ut—˜le @ç— signi(e ™ompiler pour †isu—lAF ƒi vous f—ites hé˜oguer G ixé™uterD on devr—it vous proposer de ™ompiler —v—nt d9exé™uter le progr—mmeF pU permet de générer le projetD et pS de l9exé™uterF PF h—ns ™ette zone très import—nte vous voyez norm—lement l— liste des (™hiers de votre projetF gliquez sur l9onglet ixplor—teur de solutions en ˜—sD si ™e n9est déjà f—itF †ous devriez voir que †isu—l ™rée déjà des dossiers pour sép—rer les PQ
  • 41. CHAPITRE 2. AYEZ LES BONS OUTILS ! Figure PFIQ ! penêtre prin™ip—le de †isu—l gCC ixpress PR
  • 42. XCODE (MAC OS SEULEMENT) di'érents types de (™hiers de votre projet @sour™esD enEtête et ressour™esAF xous verrons un peu plus t—rd quels sont les di'érents types de (™hiers qui ™onstituent un projetF QF v— p—rtie prin™ip—leF g9est là qu9on modi(e les (™hiers sour™eF RF g9est là en™ore l— zone de l— mort D ™elle où on voit —pp—r—ître toutes les erreurs de ™ompil—tionF g9est d—ns le ˜—s de l9é™r—n —ussi que †isu—l —0™he les inform—tions de dé˜og—ge qu—nd vous ess—yez de ™orriger un progr—mme ˜oguéF †oilàD on — f—it le tour de †isu—l gCCF †ous pouvez —ller jeter un ÷il d—ns les options @yutils G yptionsA si ç— vous ™h—nteD m—is n9y p—ssez p—s trois heuresF sl f—ut dire qu9il y — tellement de ™—ses à ™o™her de p—rtout qu9on ne s—it plus trop où donner de l— têteF Xcode (Mac OS seulement) sl existe plusieurs shi ™omp—ti˜les w—™F sl y — gode: :flo™ks ˜ien sûrD m—is ™e n9est p—s le seulF te v—is vous présenter i™i l9shi le plus ™élè˜re sous w—™ X ˆ™odeF gette se™tion dédiée à ˆ™ode est inspirée d9un tutoriel p—ru sur vogi™ielw—™F™omD —ve™ l9—im—˜le —utoris—tion de son —uteur €sy™horIQF £   ¢gode we˜ X TRVSVR ¡ Xcode, où es-tu ? „ous les utilis—teurs de w—™ yƒ ne sont p—s des progr—mmeursF epple l9— ˜ien ™ompris et n9inst—lle p—s p—r déf—ut d9shi —ve™ w—™ yƒF reureusementD pour ™eux qui voudr—ient progr—mmerD tout est prévuF in e'etD ˆ™ode est présent sur le gh d9inst—ll—tion de w—™ yƒ @logo (gF PFIRAF Figure PFIR ! vogo de ˆ™ode snsérez don™ le gh d—ns le le™teur et inst—llezEleF sl se trouve d—ns les heveloper „ools F €—r —illeursD je vous ™onseille de mettre en f—voris l— p—ge dédiée —ux développeurs sur le site d9eppleF †ous y trouverez une foule d9inform—tions utiles pour le développement sous w—™F †ous pourrez not—mment y télé™h—rger plusieurs logi™iels pour développerF x9hésitez p—s à vous ins™rire à l9ehg @ epple hevelopment gonne™tion AD ™9est gr—tuit et vous serez —insi tenus —u ™our—nt des nouve—utésF £   ¢gode we˜ X PTRUHV ¡ PS
  • 43. CHAPITRE 2. AYEZ LES BONS OUTILS ! Lancement de Xcode vorsque vous l—n™ez ˆ™ode pour l— première foisD vous serez pro˜—˜lement surprisF it il y — de quoiF gontr—irement à l— plup—rt des logi™iels w—™D il n9y — p—s de fenêtre de ˜ienvenueF in f—itD l— première foisD on trouve ç— un peu videF F F et pourt—ntD ™9est un logi™iel très puiss—nt 3 Xcode est l'IDE le plus utilisé sous Mac, créé par Apple lui-même. Les plus grands logiciels, comme iPhoto et Keynote, ont été codés à l'aide de Xcode. C'est réellement l'outil de développement de choix quand on a un Mac ! v— première ™hose à f—ire est de ™réer un nouve—u projetD —lors ™ommençons p—r ç—F ellez d—ns le menu pile G xew €roje™tF …ne fenêtre de séle™tion de projet s9ouvre @(gF PFISAF Figure PFIS ! e™™ueil de ˆ™ode ellez d—ns l— se™tion eppli™—tion et séle™tionnez gomm—nd vine „ool F 7 gliquez ensuite sur xextF yn vous dem—nder— où vous voulez enregistrer votre projet @un projet doit toujours être enregistré dès le dé˜utA —insi que son nomF €l—™ezEle d—ns le dossier que vous voulezF 7. Si vous avez une version plus ancienne du logiciel, il vous faudra probablement aller dans la section Command line utility et sélectionner Standard tool. PT
  • 44. XCODE (MAC OS SEULEMENT) …ne fois ™rééD votre projet se présenter— sous l— forme d9un dossier ™onten—nt de mulE tiples (™hiers d—ns le pinderF ve (™hier à l9extension Fx™odeproj ™orrespond —u (™hier du projetF g9est lui que vous devrez séle™tionner l— pro™h—ine fois si vous souh—itez réouvrir votre projetF La fenêtre de développement h—ns ˆ™odeD si vous séle™tionnez m—inF™D vous devriez —voir une fenêtre simil—ire à l— (gF PFITF Figure PFIT ! ˆ™ode en —™tion v— fenêtre est dé™oupée en qu—tre p—rtiesD i™i numérotées de I à RF IF v— première p—rtie est l— ˜—rre de ˜outons tout en h—utF †ous pouvez l— ™on(gurer ™omme ˜on vous sem˜leD ™h—nger les ˜outonsD et™F ves plus import—nts d9entre eux sont représentés sur les (gF PFIU et PFIVF ves trois premiers ˜outons vous permettent de n—viguer entreD d—ns l9ordre X ! €roje™t X là où vous voyez vos (™hiers et où vous les modi(ez Y ! fuild X vous y voyez le résult—t de l— ™ompil—tion de votre progr—mmeD et les erreurs s9il y en — eu Y ! he˜ug X l— fenêtre de dé˜og—geD où vous pouvez exé™uter votre progr—mme ligne p—r ligne pour trouver et ™omprendre ses erreursF PU
  • 45. CHAPITRE 2. AYEZ LES BONS OUTILS ! ves deux ˜outons de l— (gF PFIV signi(ent X ! fuild X ™ompile votre projetD don™ ™rée un exé™ut—˜le à p—rtir de vos sour™es Y ! fuild —nd qo @le ˜outon que vous utiliserez le plus souventA X ™ompile votre projet et le l—n™e pour le testerF PF v— p—rtie de g—u™he ™orrespond à l9—r˜ores™en™e de votre projetF gert—ines se™E tions regroupent les erreursD les —vertissementsD et™F ˆ™ode vous pl—™e —utom—tiE quement d—ns l— se™tion l— plus utileD ™elle qui porte le nom de votre projetF QF v— troisième p—rtie ™h—nge en fon™tion de ™e que vous —vez séle™tionné d—ns l— p—rtie de g—u™heF s™iD on — l— liste des (™hiers de notre projet X ! m—inF™ X ™9est le (™hier sour™e de votre progr—mme @il peut y en —voir plusieurs d—ns les gros progr—mmesA Y ! Mon_Premier_Programme X ™9est votre progr—mme une fois ™ompiléD don™ l9exé™ut—˜le que vous pouvez distri˜uerF ƒi le (™hier est en rougeD ™9est qu9il n9existe p—s en™ore @vous n9—vez don™ p—s en™ore ™ompilé votre progr—mmeD m—is ˆ™ode le référen™e qu—nd mêmeA Y ! Mon_Premier_Programme.l X ™9est votre progr—mme présenté en l—ng—ge —sE sem˜leurD un l—ng—ge très pro™he du pro™esseurF gel— ne nous intéresser— p—sD m—is si vous voulez prendre peur n9hésitez p—s à y jeter un ÷ilF RF in(nD l— qu—trième p—rtieD l— plus intéress—nte X ™9est ™elle d—ns l—quelle vous pourrez é™rire votre ™ode sour™e en l—ng—ge gF €—r déf—utD ˆ™ode met juste un petit ™ode d9exemple qui —0™he relloD world 3 à l9é™r—nF Figure PFIU ! v— ˜—rre d9outils @n—vig—tionA Figure PFIV ! v— ˜—rre d9outils @™ompil—tionA Lancement du programme €our tester ™e premier progr—mmeD ™liquez sur le ˜outon fuild —nd qo de l— ˜—rre d9outilsF †otre é™r—n devr—it ™h—nger et ressem˜ler à l— (gF PFIWF IF ge sont les ˜outons qui permettent de ™h—nger de p—geD ™omme on l9— vu plus tôtF ƒéle™tionnez €roje™t si vous souh—itez revenir à l— fenêtre pré™édenteF PF g9est l— ™i˜leD le (™hier qui réunit les sour™es ™ompilées de votre progr—mmeF QF v9exé™ut—˜le de votre —ppli™—tionF RF ve mode de ™ompil—tionF sl peut être X PV
  • 46. XCODE (MAC OS SEULEMENT) Figure PFIW ! v—n™ement du progr—mme sous ˆ™ode ! he˜ug X l9exé™ut—˜le reste d—ns ˆ™ode et ™ontient des inform—tions de dé˜og—ge pour vous —ider à résoudre vos erreurs éventuellesF g9est ™e que vous utiliserez lorsque vous développerez votre —ppli™—tion Y ! ‚ele—se X à n9utiliser qu9à l— (nF ˆ™ode génère —lors l9—ppli™—tion dé(nitiveD f—ite pour être p—rt—gée et utilisée p—r d9—utres ordin—teursF SF ges deux ˜outons vous permettent de dém—rrer l9—ppli™—tion dire™tement @‚unA ou de l— dém—rrer en mode he˜ug pour exé™uter le progr—mme instru™tion p—r instru™tionD —(n de résoudre les erreursF x9utilisez he˜ug que lorsque vous —vez des erreurs d—ns votre progr—mmeF TF v— liste des (™hiers de votre projetF UF v9éditeur du ™ode sour™eD ™omme tout à l9heureF VF v— ™onsole de ˆ™odeF g9est là que vous verrez votre progr—mme s9exé™uterF WF ves ˜outons fuild et ‚un vous permettent de p—sser du mode gompil—tion —u mode ixé™ution F in ™l—irD —ve™ le premier vous pouvez voir ™e qui s9est p—ssé pend—nt l— ™ompil—tionD t—ndis que d—ns le se™ond vous pouvez voir ™e que votre —ppli™—tion — —0™hé une fois qu9elle — été dém—rréeF Ajouter un nouveau chier eu dé˜utD vous n9—urez qu9un seul (™hier sour™e @m—inF™AF gepend—ntD plus loin d—ns le ™oursD je vous dem—nder—i de ™réer de nouve—ux (™hiers sour™e lorsque nos progr—mmes deviendront plus grosF PW
  • 47. CHAPITRE 2. AYEZ LES BONS OUTILS ! €our ™réer un nouve—u (™hier sour™e sous ˆ™odeD rendezEvous d—ns le menu pile G xew pileF …n —ssist—nt vous dem—nde quel type de (™hier vous voulez ™réerF ‚endezE vous d—ns l— se™tion fƒh et séle™tionnez g pile @pi™hier gAF †ous devriez —voir sous les yeux l— (gF PFPHF Figure PFPH ! ejouter un (™hier sous ˆ™ode †ous devrez donner un nom à votre nouve—u (™hier @™e que vous voulezAF v9extensionD elleD doit rester F™F €—rfois E nous le verrons plus loin ED il f—udr— —ussi ™réer des (™hiers Fh @m—is on en rep—rler—AF v— ™—se à ™o™her elso ™re—te fi™hierFh est là pour ç—F €our le momentD elle ne nous intéresse p—sF gliquez ensuite sur pinishF g9est f—it 3 †otre (™hier est ™réé et —jouté à votre projetD en plus de m—inF™F †ous êtes m—inten—nt prêts à progr—mmer sous w—™ 3 En résumé ! ves progr—mmeurs ont ˜esoin de trois outils X un éditeur de texteD un ™ompil—teur et un dé˜ogueurF ! sl est possi˜le d9inst—ller ™es outils sép—rémentD m—is il est ™our—nt —ujourd9hui d9—voir un p—™k—ge troisEenEun que l9on —ppelle IDED l9environnement de développementF ! gode: :flo™ksD †isu—l gCC et ˆ™ode ™omptent p—rmi les shi les plus ™élè˜resF QH
  • 48. Chapitre 3 Votre premier programme Diculté : O n a préparé le terrain jusqu'ici, maintenant il serait bien de commencer à programmer un peu, qu'en dites-vous ? C'est justement l'objectif de ce chapitre ! À la n de celui- ci, vous aurez réussi à créer votre premier programme ! Bon d'accord, ce programme sera en noir et blanc et ne saura que vous dire bonjour, il semblera donc complètement inutile mais ce sera votre premier ; je peux vous assurer que vous en serez ers. QI
  • 49. CHAPITRE 3. VOTRE PREMIER PROGRAMME Console ou fenêtre ? xous —vons r—pidement p—rlé de l— notion de progr—mme ™onsole et de proE gr—mme fenêtre d—ns le ™h—pitre pré™édentF xotre shi nous dem—nd—it quel type de progr—mme nous voulions ™réer et je vous —v—is dit de répondre ™onsoleF sl f—ut s—voir qu9en f—it il existe deux types de progr—mmesD p—s plus X ! les progr—mmes —ve™ fenêtres Y ! les progr—mmes en ™onsoleF Les programmes en fenêtres ge sont les progr—mmes que vous ™onn—issezF v— (gF QFI est un exemple de progr—mme en fenêtres que vous ™onn—issez sûrementF Figure QFI ! ve progr—mme €—int Ç— don™D ™9est un progr—mme —ve™ des fenêtresF te suppose que vous —imeriez ˜ien ™réer ™e type de progr—mmesD hmm c ih ˜ienF F F vous n9—llez p—s pouvoir de suite 3 in e'etD ™réer des progr—mmes —ve™ des fenêtres en g ™9est possi˜leD m—isF F F qu—nd on dé˜uteD ™9est ˜ien trop ™ompliqué 3 €our dé˜uterD il v—ut mieux ™ommen™er p—r ™réer des progr—mmes en ™onsoleF Mais au fait, à quoi ça ressemble un programme en console ? QP
  • 50. CONSOLE OU FENÊTRE ? Les programmes en console ves progr—mmes ™onsole ont été les premiers à —pp—r—îtreF À ™ette époqueD l9ordin—teur ne gér—it que le noir et ˜l—n™ et il n9ét—it p—s —ssez puiss—nt pour ™réer des fenêtres ™omme on le f—it —ujourd9huiF fien entenduD le temps — p—ssé depuisF ‡indows — rendu l9ordin—teur gr—nd pu˜li™ prin™ip—lement grâ™e à s— simpli™ité et —u f—it qu9il n9utilis—it que des fenêtresF ‡indows est devenu tellement popul—ire qu9—ujourd9hui ˜e—u™oup de monde — ou˜lié ™e qu9ét—it l— ™onsole 3 1 t9—i une gr—nde nouvelle 3 La console n'est pas morte 3 in e'etD vinux — remis —u goût du jour l9utilis—tion de l— ™onsoleF v— (gF QFP est une ™—pture d9é™r—n d9une ™onsole sous vinuxF Figure QFP ! …n exemple de ™onsoleD i™i sous vinux frrrF F F „erri(—ntD hein c †oilàD vous —vez m—inten—nt une petite idée de ™e à quoi ressem˜le une ™onsoleF ge™i ditD plusieurs rem—rques X ! —ujourd9hui on s—it —0™her de l— ™ouleurD tout n9est don™ p—s en noir et ˜l—n™ ™omme on pourr—it le ™roire Y ! l— ™onsole est —ssez peu —™™ueill—nte pour un dé˜ut—nt Y ! ™9est pourt—nt un outil puiss—nt qu—nd on s—it le m—îtriserF gomme je vous l9—i dit plus h—utD ™réer des progr—mmes en mode ™onsole ™omme i™iD ™9est très f—™ile et idé—l pour dé˜uter @™e qui n9est p—s le ™—s des progr—mmes en mode fenêtre AF xotez que l— ™onsole — évolué X elle peut —0™her des ™ouleursD et rien ne vous empê™he de mettre une im—ge de fondF 1. Oui vous là, ne regardez pas derrière vous, je sais que vous vous demandez ce que c'est. QQ
  • 51. CHAPITRE 3. VOTRE PREMIER PROGRAMME Et sous Windows ? Il n'y a pas de console ? ƒiD m—is elle est un peuF F F ™—™hée on v— direF †ous pouvez —voir une ™onsole en f—is—nt hém—rrer G e™™essoires G snvite de ™omm—ndesD ou ˜ien en™ore en f—is—nt hém—rrer G ixé™uterFFFD et en t—p—nt ensuite ™mdF v— (gF QFQ représente l— m———gni(que ™onsole de ‡indowsF Figure QFQ ! v— ™onsole de ‡indows ƒi vous êtes sous ‡indowsD s—™hez don™ que ™9est d—ns une fenêtre qui ressem˜le à ç— que nous ferons nos premiers progr—mmesF ƒi j9—i ™hoisi de ™ommen™er p—r des petits progr—mmes en ™onsoleD ™e n9est p—s pour vous ennuyerD ˜ien —u ™ontr—ire 3 in ™ommenç—nt p—r f—ire des progr—mmes en ™onsoleD vous —pprendrez les ˜—ses né™ess—ires pour pouvoir ensuite ™réer des fenêtresF Soyez donc rassurés X dès que nous —urons le nive—u pour ™réer des fenêtresD nous verrons ™omment en f—ireF Un minimum de code €our n9importe quel progr—mmeD il f—udr— t—per un minimum de ™odeF ge ™ode ne fer— rien de p—rti™ulier m—is il est indispens—˜leF g9est ™e ™ode minimum que nous —llons dé™ouvrir m—inten—ntF sl devr—it servir de ˜—se pour l— plup—rt de vos progr—mmes en l—ng—ge gF QR
  • 52. UN MINIMUM DE CODE Demandez le code minimal à votre IDE ƒelon l9shi que vous —vez ™hoisi d—ns le ™h—pitre pré™édentD l— méthode pour ™réer un nouve—u projet n9est p—s l— mêmeF ‚eportezEvous à ™e ™h—pitre si vous —vez ou˜lié ™omment f—ireF €our r—ppelD sous gode: :flo™ks @qui est l9shi que je v—is utiliser tout —u long de ™e ™oursAD il f—ut —ller d—ns le menu pile G xew G €roje™tD puis ™hoisir gonsole eppli™—tion et séle™tionner le l—ng—ge gF gode: :flo™ks — don™ généré le minimum de ™ode en l—ng—ge g dont on — ˜esoinF ve voi™i X 5in™lude `stdioFhb 5in™lude `stdli˜Fhb int m—in@A { printf@4rello world3’n4AY return HY } Notez qu'il y a une ligne vide à la n de ce code. Il est nécessaire de taper sur la touche Entrée après la dernière accolade. Chaque chier en C devrait normalement se terminer par une ligne vide. Si vous ne le faites pas, ce n'est pas grave, mais le compilateur risque de vous acher un avertissement (warning ). xotez que l— ligne X int m—in@A F F F peut —ussi s9é™rire X int m—in@int —rg™D ™h—r B—rgv‘“A ves deux é™ritures sont possi˜lesD m—is l— se™onde @l— ™ompliquéeA est l— plus ™our—nteF t9—ur—i don™ tend—n™e à utiliser plutôt ™ette dernière d—ns les pro™h—ins ™h—pitresF in ™e qui nous ™on™erneD que l9on utilise l9une ou l9—utre des é™rituresD ç— ne ™h—nger— rien pour nousF snutile don™ de s9y —tt—rderD surtout que nous n9—vons p—s en™ore le nive—u pour —n—lyser ™e que ç— signi(eF ƒi vous êtes sous un —utre shiD ™opiez ™e ™ode sour™e d—ns votre (™hier m—inF™ pour que nous —yons le même ™ode vous et moiF inregistrez le toutF yui je s—isD on n9— en™ore rien f—itD m—is enregistrez qu—nd mêmeD ™9est une ˜onne h—˜itude à prendreF xorm—lementD vous n9—vez qu9un seul (™hier sour™e —ppelé m—inF™ @le resteD ™e sont des (™hiers de projet générés p—r votre shiAF QS
  • 53. CHAPITRE 3. VOTRE PREMIER PROGRAMME Analysons le code minimal ge ™ode minim—l qu9on vient de voir n9est rien d9—utre que du ™hinois pour vousD j9im—gineF it pourt—ntD moi je vois là un progr—mme ™onsole qui —0™he un mess—ge à l9é™r—nF sl v— f—lloir —pprendre à lire tout ç— 3 gommençons p—r les deux premières lignes qui se ressem˜lent ˜e—u™oup X 5in™lude `stdioFhb 5in™lude `stdli˜Fhb ge sont des lignes spé™i—les que l9on ne voit qu9en h—ut des (™hiers sour™eF ges lignes sont f—™ilement re™onn—iss—˜les ™—r elles ™ommen™ent p—r un dièse 5F ges lignes spé™i—lesD on les —ppelle directives de préprocesseur @un nom ™ompliquéD n9estE™e p—s cAF ge sont des lignes qui seront lues p—r un progr—mme —ppelé prépro™esseurD un progr—mme qui se l—n™e —u dé˜ut de l— ™ompil—tionF yui X ™omme je vous l9—i dit plus tôtD ™e qu9on — vu —u dé˜ut n9ét—it qu9un s™hém— très simpli(é de l— ™ompil—tionF sl se p—sse en ré—lité plusieurs ™hoses pend—nt une ™ompil—E tionF yn les dét—iller— plus t—rd X pour le momentD vous —vez juste ˜esoin d9insérer ™es lignes en h—ut de ™h—™un de vos (™hiersF Oui mais elles signient quoi, ces lignes ? J'aimerais bien savoir quand même ! ve mot in™lude en —ngl—is signi(e in™lure en fr—nç—isF ges lignes dem—ndent d9inE ™lure des (™hiers —u projetD ™9estEàEdire d9—jouter des (™hiers pour l— ™ompil—tionF sl y — deux lignesD don™ deux (™hiers in™lusF ges (™hiers s9—ppellent stdioFh et stdli˜FhF ges (™hiers existent déjàD des (™hiers sour™e tout prêtsF yn verr— plus t—rd qu9on les —ppelle des bibliothèques @™ert—ins p—rlent —ussi de librairies m—is ™9est un —ngliE ™ismeAF in grosD ™es (™hiers ™ontiennent du ™ode tout prêt qui permet d9—0™her du texte à l9é™r—nF ƒ—ns ™es (™hiersD é™rire du texte à l9é™r—n —ur—it été mission impossi˜leF v9ordin—teur à l— ˜—se ne s—it rien f—ireD il f—ut tout lui direF †ous voyez l— g—lère d—ns l—quelle on est 3 frefD en résumé les deux premières lignes in™luent les ˜i˜liothèques qui vont nous permettre @entre —utresA d9—0™her du texte à l9é™r—n —ssez f—™ilement F €—ssons à l— suiteF v— suiteD ™9est tout ç— X int m—in@A { printf@4rello world3’n4AY return HY } ge que vous voyez làD ™9est ™e qu9on —ppelle une fonctionF …n progr—mme en l—ng—ge g est ™onstitué de fon™tionsD il ne ™ontient qu—siment que ç—F €our le momentD notre progr—mme ne ™ontient don™ qu9une seule fon™tionF QT
  • 54. UN MINIMUM DE CODE …ne fon™tion permet grosso modo de r—ssem˜ler plusieurs ™omm—ndes à l9ordin—teurF ‚egroupées d—ns une fon™tionD les ™omm—ndes permettent de f—ire quelque ™hose de pré™isF €—r exempleD on peut ™réer une fon™tion ouvrir•fi™hier qui ™ontiendr— une suite d9instru™tions pour l9ordin—teur lui expliqu—nt ™omment ouvrir un (™hierF v9—v—nE t—geD ™9est qu9une fois l— fon™tion é™riteD vous n9—urez plus qu9à dire ouvrir•fi™hierD et votre ordin—teur s—ur— ™omment f—ire s—ns que vous —yez à tout répéter 3 ƒ—ns rentrer d—ns les dét—ils de l— ™onstru™tion d9une fon™tion @il est trop tôtD on rep—rE ler— des fon™tions plus t—rdAD —n—lysons qu—nd même ses gr—ndes p—rtiesF v— première ligne ™ontient le nom de l— fon™tionD ™9est le deuxième motF yui X notre fon™tion s9—pE pelle don™ m—inF g9est un nom de fon™tion p—rti™ulier qui signi(e prin™ip—l F m—in est l— fon™tion prin™ip—le de votre progr—mmeD c'est toujours par la fonction m—in que le programme commenceF …ne fon™tion — un dé˜ut et une (nD délimités p—r des —™™ol—des { et }F „oute l— fon™tion m—in se trouve don™ entre ™es —™™ol—desF ƒi vous —vez ˜ien suiviD notre fon™tion m—in ™ontient deux lignes X printf@4rello world3’n4AY return HY ges lignes à l9intérieur d9une fon™tion ont un nomF yn les —ppelle instructions @ç— en f—it du vo™—˜ul—ire qu9il v— f—lloir retenirAF gh—que instru™tion est une ™omm—nde à l9ordin—teurF gh—™une de ™es lignes dem—nde à l9ordin—teur de f—ire quelque ™hose de pré™isF gomme je vous l9—i dit un peu plus h—utD en regroup—nt intelligemment @™9est le tr—v—il du progr—mmeurA les instru™tions d—ns des fon™tionsD on ™rée si on veut des bouts de programmes tout prêts F in utilis—nt les ˜onnes instru™tionsD rien ne nous empê™her—it don™ de ™réer une fon™tion ouvrir•fi™hier ™omme je vous l9—i expliqué tout à l9heureD ou en™ore une fon™tion —v—n™er•personn—ge d—ns un jeu vidéoD p—r exempleF …n progr—mmeD ™e n9est —u ˜out du ™ompte rien d9—utre qu9une série d9instru™tions X f—is ™e™i D f—is ™el— F †ous donnez des ordres à votre ordin—teur et il les exé™ute F 2 Très important : toute instruction se termine obligatoirement par un point- virgule Y . C'est d'ailleurs comme ça qu'on reconnaît ce qui est une ins- truction et ce qui n'en est pas une. Si vous oubliez de mettre un point-virgule à la n d'une instruction, votre programme ne compilera pas ! v— première ligne X printf@4rello world3’n4AY dem—nde à —0™her le mess—ge rello world 3 à l9é™r—nF u—nd votre progr—mme —rriver— à ™ette ligneD il v— don™ —0™her un mess—ge à l9é™r—nD puis p—sser à l9instru™tion suiv—nteF €—ssons à l9instru™tion suiv—nte justement X return HY ih ˜ien ç—D en grosD ç— veut dire que ™9est (ni @eh ouiD déjàAF gette ligne indique qu9on —rrive à l— (n de notre fon™tion m—in et dem—nde de renvoyer l— v—leur HF 2. Du moins si vous l'avez bien dressé. QU