Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence :                                Creative Com...
Avant-proposL     e livre que vous tenez d—ns vos m—ins — une longue histoire derrière luiF it pour      ™—use X il — mis ...
CHAPITRE 0. AVANT-PROPOSQuest-ce que ce livre vous propose ?fien des —nnées se sont é™oulées depuis l— réd—™tion des premi...
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 p...
CHAPITRE 0. AVANT-PROPOSDu Site du Zéro au Livre du ZéroÀ l9époque où j9—i souh—ité rédiger mes premiers ™ours pour dé˜ut—...
REMERCIEMENTSess—y—nt d—ns l— mesure du possi˜le de les —nti™iperFÀ lattention des visiteurs du Site du Zéroge livre ne re...
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 d...
SommaireAvant-propos                                                                                                      ...
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 RQ4 Un monde de variab...
SOMMAIREII Techniques  avancées  du langage C                                                                             ...
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 PII16 Lire et écrire dans...
SOMMAIRE22 Acher des images                                                                                               ...
SOMMAIRE28 TP : visualisation spectrale du son                                                                            ...
Première partieLes bases de la programmation             en C               I
Chapitre      1Vous avez dit programmer ?                                                                         Diculté ...
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?Programmer, cest quoi ?yn ™ommen™e p—r l— question l— plus simple qui soitD l— plus ...
PROGRAMMER, DANS QUEL LANGAGE ?gomme vous dé˜utezD nous n9—llons p—s ™ommen™er en ré—lis—nt un jeu QhF ge ser—itsui™id—ire...
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?          Figure IFP ! ƒ™hém— @très simpli(éA de ré—lis—tion d9un progr—mmeUn peu de...
PROGRAMMER, DANS QUEL LANGAGE ?˜in—ireF†enonsEen justement —u  progr—mme de tr—du™tion qui tr—duit notre l—ng—ge de h—utni...
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?   ordin—teurF †ous serez ensuite l—rgement ™—p—˜les d9—pprendre un —utre l—ng—ge de...
PROGRAMMER, CEST 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 —v...
CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?En résumé! €our ré—liser des progr—mmes inform—tiquesD on doit é™rire d—ns un langag...
Chapitre       2Ayez les bons outils !                                                                            Diculté ...
CHAPITRE 2. AYEZ LES BONS OUTILS !Les outils nécessaires au programmeurelors à votre —visD de quels outils un progr—mmeur ...
CODE: :BLOCKS (WINDOWS, MAC OS, LINUX)  même pour l— suite s9il vous pl—ît ˜ien 3AF pon™tionne sous ‡indowsD w—™ et vinuxF...
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  ...
CODE: :BLOCKS (WINDOWS, MAC OS, LINUX)              Figure PFI ! gode: :flo™ksFigure PFP ! ves prin™ip—ux ˜outons de l— ˜—...
CHAPITRE 2. AYEZ LES BONS OUTILS !  utiliserez le plus souventF xotez que s9il y — des erreurs pend—nt l— ™ompil—tion  @pe...
CODE: :BLOCKS (WINDOWS, MAC OS, LINUX)            Comme vous pouvez le voir, Code: :Blocks propose de réaliser pas mal de ...
CHAPITRE 2. AYEZ LES BONS OUTILS !               Figure PFS ! xom et empl—™ement du projet                   Figure PFT ! ...
VISUAL C++ (WINDOWS SEULEMENT)que vous pourrez ouvrir en dou˜leE™liqu—nt dessusF †ous voilà p—rés 3Visual C++ (Windows seu...
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...
VISUAL C++ (WINDOWS SEULEMENT)    Figure PFV ! gré—tion de projet †isu—l gCC ixpressFigure PFW ! essist—nt ™ré—tion de pro...
CHAPITRE 2. AYEZ LES BONS OUTILS !                 Figure PFIH ! gon(gur—tion du projet                 Figure PFII ! ejou...
VISUAL C++ (WINDOWS SEULEMENT)(™hier X m—inF™D ™omme sur l— (gF PFIPF              Figure PFIP ! ghoix du type et du nom d...
CHAPITRE 2. AYEZ LES BONS OUTILS !          Figure PFIQ ! penêtre prin™ip—le de †isu—l gCC ixpressPR
XCODE (MAC OS SEULEMENT)      diérents types de (™hiers de votre projet @sour™esD enEtête et ressour™esAF xous      verron...
CHAPITRE 2. AYEZ LES BONS OUTILS !Lancement de Xcodevorsque vous l—n™ez ˆ™ode pour l— première foisD vous serez pro˜—˜leme...
XCODE (MAC OS SEULEMENT)…ne fois ™rééD votre projet se présenter— sous l— forme d9un dossier ™onten—nt de mulEtiples (™hie...
CHAPITRE 2. AYEZ LES BONS OUTILS !        ves deux ˜outons de l— (gF PFIV signi(ent X        ! fuild X ™ompile votre proje...
XCODE (MAC OS SEULEMENT)                 Figure PFIW ! v—n™ement du progr—mme sous ˆ™ode       ! he˜ug X l9exé™ut—˜le rest...
CHAPITRE 2. AYEZ LES BONS OUTILS !€our ™réer un nouve—u (™hier sour™e sous ˆ™odeD rendezEvous d—ns le menu pile Gxew pileF...
Chapitre       3Votre premier programme                                                                           Diculté ...
CHAPITRE 3. VOTRE PREMIER PROGRAMMEConsole ou fenêtre ?xous —vons r—pidement p—rlé de l— notion de  progr—mme ™onsole et d...
CONSOLE OU FENÊTRE ?Les programmes en consoleves progr—mmes ™onsole ont été les premiers à —pp—r—îtreF À ™ette époqueD l9o...
CHAPITRE 3. VOTRE PREMIER PROGRAMME            Et sous Windows ? Il ny a pas de console ?ƒiD m—is elle est un peuF F F  ™—...
UN MINIMUM DE CODEDemandez le code minimal à votre IDEƒelon l9shi que vous —vez ™hoisi d—ns le ™h—pitre pré™édentD l— méth...
CHAPITRE 3. VOTRE PREMIER PROGRAMMEAnalysons le code minimalge ™ode minim—l qu9on vient de voir n9est rien d9—utre que du ...
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Apprenez a programmer_en_c
Prochain SlideShare
Chargement dans…5
×

Apprenez a programmer_en_c

1 473 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 473
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
105
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Apprenez a programmer_en_c

  1. 1. 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 licenceTexte 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
  2. 2. Avant-proposL 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ères9imposeFte suis un p—ssionné de nouvelles te™hnologies p—rmi t—nt d9—utresF t9—i eu mon premierordin—teur entre les m—ins juste —v—nt de rentrer —u ™ollègeF g9ét—it à ™e moment lel—n™ement en gr—ndes pompes de ‡indows WSFt9—i immédi—tement voulu —ller plus loinD s—voir ™omment ç— fon™tionne à l9intérieur Fwon premier ré)exe — été d9é™umer les li˜r—iries de qu—rtier et plus p—rti™ulièrementleur se™tion mi™roEinform—tique déjà ˜ien développéeF „out @ou presqueA me f—is—itenvie X gréez votre site we˜ en r„wv en SH minutes D héveloppez vos propresprogr—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™heFg9est en lis—nt l— qu—trième de ™ouverture que les ™hoses ont ™ommen™é à ™oin™er X Celivre 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 terepose le livre sur les ét—l—ges et je tente d9en sortir un —utreF €uis un —utreF €uis en™oreun —utreF tusqu9à me rendre à l9éviden™e X pour —pprendre à progr—mmerD il f—ut déjàs—voir progr—mmerFristoire de ne p—s —voir f—it le tr—jet pour rienD je rep—rtir—i qu—nd même —ve™ unlivre ou deux sous les ˜r—sD ™eux qui sem˜l—ient les plus ™orre™ts du lotF te leur rendshomm—ge i™i X ™9est —ve™ eux que j9—i dém—rré et j9—i ˜e—u™oup —ppris à leur le™tureF w—isen les relis—nt —ve™ un peu de re™ul quelques mois plus t—rdD j9—i (ni p—r m9—per™evoirde ™ert—ines in™ohéren™es X un ™h—pitre simple sur l9inst—ll—tion d9un logi™iel qui —ur—itdû ê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 3v— ™ritique ét—it f—™ileD m—is il me f—ll—it prouver que l9on pouv—it f—ire plus clair et plussimpleF t9—i don™ entrepris de reformuler mon premier livre tel que jaurais souhaitéle lire en ™ré—nt mon premier site we˜Fg9ét—it il y — dix —ns presque jour pour jour à l— sortie de ™e livreF i
  3. 3. CHAPITRE 0. AVANT-PROPOSQuest-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 interEv—lle de tempsD j9—i suivi des études d9ingénieur en inform—tique puis j9—i été professeurde 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—mmesFComment lire ce livre ?Suivez lordre des chapitresvisez ™e livre ™omme on lit un rom—nF sl — été ™onçu de ™ette f—çonFgontr—irement à ˜e—u™oup de livres te™hniques où il est ™our—nt de lire en di—gon—le etde 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éFii
  4. 4. 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 —llumervotre ordin—teur et f—ire vos propres ess—isFve livre ™omporte plusieurs „F€F qui vous invitent à ™réer votre propre progr—mme en 1suiv—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 peuDpuis de plus en plus jusqu9à vous sentir à l9—iseF …ne fois les „F€F terminésD ess—yez deré—liser les —mélior—tions suggérées —insi que ™elles qui vous p—ssent p—r l— têteF †ousprogresserez —insi ˜e—u™oup plus vite que vous ne l9im—giniezFUtilisez 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 ™hires à rentrer sur une p—ge du ƒitedu éro pour être —utom—tiquement redirigé vers un site we˜ s—ns —voir à en re™opierl9—dresseF€our utiliser les ™odes we˜D rendezEvous sur l— p—ge suiv—nte X 2http: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 ™oursFge système de redire™tion nous permet de tenir à jour le livre que vous —vez entre lesm—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—gedu ƒite du éro expliqu—nt ™e qui s9est p—ssé et vous propos—nt une —ltern—tiveFin ™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 dailleurs de lajouter à vos favoris. iii
  5. 5. CHAPITRE 0. AVANT-PROPOSDu 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 premierré)exe — été de ™réer un site we˜ ™—r ™9ét—it pour moi le moyen le plus simple de pu˜liermes é™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 motiEv—tion et de p—ssionD wwwFsiteduzeroF™om s9est f—it —u (l des —nnées un vérit—˜le nomsur le ‡e˜F À tel point que j9—i (ni p—r dé™ouvrir qu9il ét—it ™onnu et re™omm—ndé p—rdes professeurs en inform—tiqueD m—is —ussi utilisé ™omme support de ™ours p—r leursélèves 3ve site s9est fortement développé et est devenu plus qu9un site de ™ours en ligne pourdé˜ut—ntsF sl regroupe —ujourd9hui plus de IUH HHH mem˜res formid—˜les qui é™h—ngentet s9entr—ident sur les forums m—is prennent —ussi p—rt à l— réd—™tion des ™ours def—çon désintéresséeF v— seule ™onsigne en vigueur sur le site est l— seule que j9—ie j—m—issuivie X se mettre à l— pl—™e du le™teur dé˜ut—nt que nous —vons tous étéFgel— f—it longtemps que je souh—ite un retour —ux sour™esD d—ns ™es li˜r—iries où j9—imoiEmême été perduF ve vivre du éro est le moyen idé—l de ˜ou™ler l— ˜ou™leFÀ lattention 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 4titre si ™e livre est f—it pour vousFgomme 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 enprogr—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éesDen privilégi—nt les exemples —ux dé(nitions théoriquesF ve ™ours est d9—illeurs p—rti™uElièrement fourni en s™hém—s ™omme vous pourrez le ™onst—terFvisez le premier ™h—pitre pour dé™ider si vous —™™ro™hez et ™omprenez ™e qui s9y ditFv— 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 pourprogr—mmer à l9expli™—tion des ™omm—ndes qui permettent de ™réer des progr—mmesDen 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—ireFsm—ginez d9une ™ert—ine m—nière que nous sommes vous et moi d—ns l— même s—lle etque je suis votre professeurF te vous p—rle dire™tement et je réponds à vos questions en 3. Et ça lest dailleurs toujours, cest amusant de voir que cela na pas changé. Le Web est plusque jamais un formidable espace dexpression et doit le rester. 4. Que lon appelle dailleurs les Zéros , selon une logique implacable qui ne vous aura paséchappé. ;-) 5. Ce nest pas une plaisanterie, cest la raison dêtre de ce livre et cest pour cela quon lappellele Livre du Zéro .iv
  6. 6. REMERCIEMENTSess—y—nt d—ns l— mesure du possi˜le de les —nti™iperFÀ lattention des visiteurs du Site du Zéroge livre ne rempl—™e p—s le ƒite du éroF sl le complèteFin f—itD il répond à une question que l9on m9— souvent posée X €ourquoi ne voitEonp—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 deli˜erté et d9indépend—n™eD je souh—it—is être l9éditeur de ™es livresF sl —ur— f—llu dutemps pour y p—rvenir m—is ™9est —ujourd9hui ™hose f—iteFge 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—pitresinédits qui vous permettront d9—ller en™ore plus loin et d9explorer de nouvelles voiesd—ns votre dé™ouverte de l— progr—mm—tionFRemerciementsge livre n9est p—s le fruit d9une seule et même personneF sl n9—ur—it en f—it j—m—is vule 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
  7. 7. 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 livreFwer™i à vous en(nD qui vous —pprêtez à nous f—ire ™on(—n™e en lis—nt ™e livreF te voussouh—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
  8. 8. SommaireAvant-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 vI Les bases de la programmation en C 11 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 W2 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 PS3 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
  9. 9. 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 RQ4 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 TI5 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 UP6 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 WI7 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 WV8 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 IHU9 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 IIVviii
  10. 10. SOMMAIREII Techniques avancées du langage C 12510 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 IQV11 À lassaut 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 ISU12 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 ITS13 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 IUT14 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 IWT15 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
  11. 11. 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 PII16 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 PQQ17 Lallocation 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 PRS18 TP : réalisation dun 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 PUI19 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 PVQIII Création de jeux 2D en SDL 28720 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 PWS21 Création dune 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 QPUx
  12. 12. SOMMAIRE22 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 QRP23 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 QUP24 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 RHV25 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 RPH26 É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 RQI27 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
  13. 13. SOMMAIRE28 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 RURIV Les structures de données 47529 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 RVU30 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 RWU31 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 SHVxii
  14. 14. Première partieLes bases de la programmation en C I
  15. 15. Chapitre 1Vous 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, cest parce que vous voulez enn comprendre comment ça fonctionne.Mais programmer en langage C. . . ça veut dire quoi ? Est-ce que cest bien pour com-mencer ? Est-ce que vous avez le niveau pour programmer ? Est-ce quon peut tout faireavec ?Ce chapitre a pour but de répondre à toutes ces questions apparemment bêtes et pourtanttrès importantes. Grâce à ces questions simples, vous saurez à la n de ce premier chapitrece qui vous attend. Cest quand même mieux de savoir à quoi sert ce que vous allezapprendre, vous ne trouvez pas ? Q
  16. 16. CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ?Programmer, cest quoi ?yn ™ommen™e p—r l— question l— plus simple qui soitD l— plus ˜—sique de toutes lesquestions ˜—siquesF ƒi vous —vez l9impression de déjà s—voir tout ç—D je vous ™onseillede lire qu—nd mêmeD ç— ne peut p—s vous f—ire de m—l 3 te p—rs de zéro pour ™e ™oursDdon™ 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 deEm—ndent à l9ordin—teur d9ee™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 gin ˜refD les progr—mmes sont p—rtout et permettent de f—ire — priori tout et n9importequoi 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 †otreordin—teur peut tout f—ire @s—uf le ™—féD m—is j9y tr—v—illeAFettention 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—isimplement dit que tout ™el— ét—it possi˜leD m—is soyez sûrs que ç— dem—nde ˜e—u™oupde tr—v—ilFR
  17. 17. PROGRAMMER, DANS QUEL LANGAGE ?gomme vous dé˜utezD nous n9—llons p—s ™ommen™er en ré—lis—nt un jeu QhF ge ser—itsui™id—ireF xous —llons devoir p—sser p—r des progr—mmes très simplesF …ne des preEmiè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 à petitDvous —pprendrez su0s—mment de ™hoses pour ™ommen™er à ré—liser des progr—mmesde plus en plus ™omplexesF ve ˜ut de ™e ™ours est que vous soyez ™—p—˜les de vous ensortir d—ns n9importe quel progr—mme é™rit en gFw—is tenezD —u f—itD vous s—vez ™e que ™9est vousD ™e f—meux l—ng—ge g cProgrammer, dans quel langage ?†otre ordin—teur est une m—™hine ˜iz—rreD ™9est le moins que l9on puisse direF yn nepeut 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 1HHIHIIHIIHHIHHIIHIHHIIIIHge que vous voyez làD ™9est le l—ng—ge inform—tique de votre ordin—teurD —ppelé langagebinaire @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˜leFhon™ voilà notre premier vr—i pro˜lème X Comment parler à lordinateur plus simplement quen 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 estin™on™ev—˜le d9é™rire un progr—mme en l—ng—ge ˜in—ireF wême les inform—ti™iens lesplus fous ne le font p—sD ™9est vous dire 3ih ˜ien l9idée que les inform—ti™iens ont eueD ™9est d9inventer de nouve—ux l—ng—gesqui ser—ient ensuite tr—duits en ˜in—ire pour l9ordin—teurF ve plus dur à f—ireD ™9estde 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 + 5qui seront tr—duites p—r le progr—mme de tr—du™tion en quelque ™hose ™omme X HHIHIIHIIHHIHHIIHIHHIIIIH Fve s™hém— IFP résume ™e que je viens de vous expliquerF 1. Jinvente, je ne connais quand même pas la traduction informatique par c÷ur. S
  18. 18. CHAPITRE 1. VOUS AVEZ DIT PROGRAMMER ? Figure IFP ! ƒ™hém— @très simpli(éA de ré—lis—tion d9un progr—mmeUn peu de vocabulairevà j9—i p—rlé —ve™ des mots simplesD m—is il f—ut s—voir qu9en inform—tique il existeun 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—voirde quoi vous p—rlezD m—is si un jour @et ç— —rriver—A vous devez p—rler à un —utreprogr—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—mmeest é™rit d—ns un l—ng—ge simpli(é F ge f—meux l—ng—ge simpli(é est —ppelé en f—itlangage de haut niveauF sl existe plusieurs nive—ux de l—ng—gesF €lus un l—ng—ge esth—ut nive—uD plus il est pro™he de votre vr—ie l—ngue @™omme le fr—nç—isAF …n l—ng—ge deh—ut nive—u est don™ f—™ile à utiliserD m—is ™el— — —ussi quelques petits déf—uts ™ommenous le verrons plus t—rdFsl existe de nom˜reux l—ng—ges de plus ou moins h—ut nive—u en inform—tique d—nslesquels 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™Fxotez que je ne les —i p—s ™l—ssés p—r nive—u de l—ng—ge D n9—llez don™ p—s vousim—giner que le premier de l— liste est plus f—™ile que le dernier ou l9inverseF ge sontjuste quelques exemples F 3gert—ins de ™es l—ng—ges sont plus h—ut nive—u que d9—utres @don™ en théorie un peuplus f—™iles à utiliserAF yn v— voir not—mment un peu plus loin ™e qui diéren™ie lel—ng—ge g du l—ng—ge gCCF…n —utre mot de vo™—˜ul—ire à retenir est code sourceF ge qu9on —ppelle le ™odesour™eD ™9est tout simplement le ™ode de votre progr—mme é™rit d—ns un l—ng—ge deh—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. Davance désolé pour tous les autres langages qui existent, mais faire une liste complète seraitvraiment trop long !T
  19. 19. PROGRAMMER, DANS QUEL LANGAGE ?˜in—ireF†enonsEen justement —u progr—mme de tr—du™tion qui tr—duit notre l—ng—ge de h—utnive—u @™omme le g ou le gCCA en ˜in—ireF ge progr—mme — un nom X on l9—ppelle lecompilateurF 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—uFg9est d9—illeurs tout à f—it logique X les l—ng—ges ét—nt diérentsD on ne tr—duit p—s legCC 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 sil 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é lexécutableF g9estd9—illeurs pour ™ette r—ison que les progr—mmes @tout du moins sous ‡indowsA ontl9extension Fexe ™omme iˆi™ut—˜leF‚eprenons notre s™hém— pré™édentD et utilisons ™ette fois des vr—is mots tordus d9inEform—ti™ien @(gF IFQAF Figure IFQ ! ve même s™hém—D —ve™ le ˜on vo™—˜ul—irePourquoi choisir dapprendre 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—uFhoitEon ™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
  20. 20. 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—issezFin(nD le l—ng—ge g est un des l—ng—ges les plus ™onnus et les plus utilisés qui existentFsl 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 4ne dis p—s qu9il faut ™ommen™er p—r ç—D m—is je vous dis plutôt que ™9est un ˜on ™hoixqui v— vous donner de solides ™onn—iss—n™esFte v—is supposer tout —u long de ™e ™ours que ™9est votre premier l—ng—ge de progr—mEm—tionD que vous n9—vez j—m—is f—it de progr—mm—tion —v—ntF ƒi p—r h—s—rdD vous —vezdé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èsutilisé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é lAlgolF! 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 Quil ny ait pas de malentendus : le langage C++ nest pas meilleur que le langage C, il permet juste de programmer diéremment. Disons aussi quil 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—iredu gCC pour ré—liser des progr—mmesF ve l—ng—ge g n9est p—s un vieux l—ng—geou˜lié X —u ™ontr—ireD il est en™ore très utilisé —ujourd9huiF sl est à l— ˜—se des plusgr—nds systèmes d9exploit—tion tels …nix @et don™ vinux et w—™ yƒA ou ‡indowsF 4. On pourrait citer dautres raisons : certains langages de programmation sont plus destinés auWeb (comme PHP) quà la réalisation de programmes informatiques.V
  21. 21. PROGRAMMER, CEST 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érentesFProgrammer, cest dur ?†oilà une question qui doit ˜ien vous torturer l9espritF elors X f—utEil être un superEm—thém—ti™ien qui — f—it IH —ns d9études supérieures pour pouvoir ™ommen™er l— proEgr—mm—tion cv— 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—tionsde ˜—se X! l9—ddition Y! l— soustr—™tion Y! l— multipli™—tion Y! l— divisionFge 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—mmesFfrefD nive—u m—thsD il n9y — p—s de di0™ulté insurmont—˜leF in f—itD tout dépend duprogr—mme que vous —llez ré—liser X si vous devez f—ire un logi™iel de ™rypt—geD —lorsouiD il vous f—udr— ™onn—ître des ™hoses en m—thsF ƒi vous devez f—ire un progr—mmequi f—it de l— QhD ouiD il vous f—udr— quelques ™onn—iss—n™es en géométrie de l9esp—™eFgh—que ™—s est p—rti™ulierF w—is pour —pprendre le l—ng—ge g luiEmêmeD vous n9—vezp—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 gFhe ™e point de vueElàD r—ssurezEvousD je vous —pprendr—i tout —u fur et à mesureFxotez 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 eort 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—mmeFin ˜refD et pour f—ire simpleD il n9y — p—s de vérit—˜les ™onn—iss—n™es requises pourprogr—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
  22. 22. 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 cest le cas des logiciels de cryptage.IH
  23. 23. Chapitre 2Ayez 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 ny aura rien de dicile à faire dans ce chapitre, on va prendre le temps de se familiariseravec de nouveaux logiciels.Protez-en ! Dans le chapitre suivant, nous commencerons à vraiment programmer et il nesera plus lheure de faire la sieste ! II
  24. 24. CHAPITRE 2. AYEZ LES BONS OUTILS !Les outils nécessaires au programmeurelors à votre —visD de quels outils un progr—mmeur —EtEil ˜esoin c ƒi vous —vez —ttentiEvement 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 cih ouiD il s9—git du compilateurD ™e f—meux progr—mme qui permet de tr—duire votrel—ng—ge g en l—ng—ge ˜in—ire 3gomme 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 ™—sFfonD 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 1e prioriD si vous êtes —venturiersD vous pouvez vous p—sser de dé˜ogueurF w—is ˜onD jes—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 2sl existe plusieurs environnements de développementF eu dé˜utD vous —urez peutEêtreun peu de m—l à ™hoisir ™elui qui vous pl—îtF …ne ™hose est sûre en tout ™—s X vous pouvezré—liser n9importe quel type de progr—mmeD quel que soit l9shi que vous ™hoisissezFChoisissez votre IDEsl m9— sem˜lé intéress—nt de vous montrer quelques shi p—rmi les plus ™onnusF „oussont 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 na 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 EnvironmentIP
  25. 25. 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 dIDE 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 dinstaller 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—nspro˜lèmeF gert—ins sont plus ™omplets —u nive—u des optionsD d9—utres un peu plusintuitifs à utiliserD m—is d—ns tous les ™—s les progr—mmes que vous ™réerez seront lesmêmes quel que soit l9shi que vous utilisezF ge ™hoix n9est don™ p—s si ™ru™i—l qu9onpourr—it le ™roireF„out —u long de tout ™e ™oursD j9utiliser—i gode: :flo™ksF ƒi vous voulez o˜tenir ex—™Etement les mêmes é™r—ns que moiD surtout pour ne p—s être perdus —u dé˜utD je vousre™omm—nde don™ de ™ommen™er p—r inst—ller gode: :flo™ksFCode: :Blocks (Windows, Mac OS, Linux)gode: :flo™ks est un shi li˜re et gr—tuitD disponi˜le pour Windows, Mac et LinuxFgode: :flo™ks n9est disponi˜le pour le moment qu9en —ngl—isF gel— ne devr—it €eƒ vousrepousser à 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 pours9entr—îner à utiliser ™ette l—ngueF IQ
  26. 26. 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—™FzipFv9inst—ll—tion est très simple et r—pideF v—issez toutes les options p—r déf—ut et l—n™ezle progr—mmeF †ous devriez voir une fenêtre simil—ire à l— (gF PFIFyn distingue R gr—ndes se™tions d—ns l— fenêtreD numérotées sur l9im—ge X IF la barre doutils 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 3snté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 8ixé™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—nsl9ordre 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. Jen prote pour vous rappeler que les codes web peuvent être entrés dans le formulaire duSite du Zéro prévu à cet eet. Cela vous redirige automatiquement sur la page ou le chier qui vousintéresse. Voir lavant-propos pour plus dinformations à ce sujet. 4. Ce qui a de fortes chances darriver tôt ou tard !IR
  27. 27. CODE: :BLOCKS (WINDOWS, MAC OS, LINUX) Figure PFI ! gode: :flo™ksFigure PFP ! ves prin™ip—ux ˜outons de l— ˜—rre d9outils IS
  28. 28. 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 dutiliser les raccourcis plutôt que de cliquer sur les boutons, parce que cest quelque chose quon fait vraiment très très souvent. Retenez en particulier quil 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 projetIT
  29. 29. 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 linstant, 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 navez 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èrep—ge ne serv—nt à rienFyn vous dem—nde ensuite si vous —llez f—ire du g ou du gCC @(gF PFRA X répondezg F Figure PFR ! ghoix du l—ng—geyn vous dem—nde le nom de votre projet @(gF PFSA et d—ns quel dossier les (™hierssour™e seront enregistrésFin(nD l— dernière p—ge @(gF PFTA vous permet de ™hoisir de quelle f—çon le progr—mmedoit être ™ompiléF †ous pouvez l—isser les options p—r déf—utD ç— n9—ur— p—s d9in™iden™esur ™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éeAFgliquez 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—nsFh—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
  30. 30. CHAPITRE 2. AYEZ LES BONS OUTILS ! Figure PFS ! xom et empl—™ement du projet Figure PFT ! wode de ™ompil—tionIV
  31. 31. VISUAL C++ (WINDOWS SEULEMENT)que vous pourrez ouvrir en dou˜leE™liqu—nt dessusF †ous voilà p—rés 3Visual 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 entendreAFxous —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 nest compatible avec Windows 7 quà partir de la version 2010. IW
  32. 32. 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™ônesDou 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 versiond9ess—i limitée d—ns le tempsF g9est une ™h—n™e d9—voir un shi —ussi puiss—nt que ™eluide wi™rosoft disponi˜le gr—tuitementD ne l— l—issez don™ p—s p—sserFInstallationv9inst—ll—tion devr—it norm—lement se p—sser s—ns en™om˜reF ve progr—mme d9inst—lEl—tion v— télé™h—rger l— dernière version de †isu—l sur snternetF te vous ™onseille del—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 ™9estgr—tuit et r—pide m—is il f—ut le f—ireFgliquez sur le lien qui vous est donné X vous —rrivez sur le site de wi™rosoftF gonne™tezEvous —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—ireFyn vous donner— à l— (n une ™lé d9enregistrementF †ous devrez re™opier ™ette ™lé d—nsle menu c G sns™rire le produitFCré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„erminerFAjouter un nouveau chier source†otre projet est pour l9inst—nt ˜ien videF p—ites un ™li™ droit sur le dossier pi™hierssour™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 na pas dimportance ici.PH
  33. 33. VISUAL C++ (WINDOWS SEULEMENT) Figure PFV ! gré—tion de projet †isu—l gCC ixpressFigure PFW ! essist—nt ™ré—tion de projet †isu—l gCC ixpress PI
  34. 34. CHAPITRE 2. AYEZ LES BONS OUTILS ! Figure PFIH ! gon(gur—tion du projet Figure PFII ! ejout d9un (™hier sour™ePP
  35. 35. 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™egliquez sur ejouterF g9est ˜onD vous —llez pouvoir ™ommen™er à é™rire du ™ode 3La fenêtre principale de Visual†oyons ensem˜le le ™ontenu de l— fenêtre prin™ip—le de †isu—l gCC ixpress @(gF PFIQAFgette 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
  36. 36. CHAPITRE 2. AYEZ LES BONS OUTILS ! Figure PFIQ ! penêtre prin™ip—le de †isu—l gCC ixpressPR
  37. 37. 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 direqu9il y — tellement de ™—ses à ™o™her de p—rtout qu9on ne s—it plus trop où donner del— têteFXcode (Mac OS seulement)sl existe plusieurs shi ™omp—ti˜les w—™F sl y — gode: :flo™ks ˜ien sûrD m—is ™e n9estp—s le seulF te v—is vous présenter i™i l9shi le plus ™élè˜re sous w—™ X ˆ™odeFgette 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 etn9inst—lle p—s p—r déf—ut d9shi —ve™ w—™ yƒF reureusementD pour ™eux qui voudr—ientprogr—mmerD tout est prévuF in eetD ˆ™ode est présent sur le gh d9inst—ll—tion dew—™ yƒ @logo (gF PFIRAF Figure PFIR ! vogo de ˆ™odesnsé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 surle site d9eppleF †ous y trouverez une foule d9inform—tions utiles pour le développementsous w—™F †ous pourrez not—mment y télé™h—rger plusieurs logi™iels pour développerFx9hésitez p—s à vous ins™rire à l9ehg @ epple hevelopment gonne™tion AD ™9estgr—tuit et vous serez —insi tenus —u ™our—nt des nouve—utésF £   ¢gode we˜ X PTRUHV ¡ PS
  38. 38. CHAPITRE 2. AYEZ LES BONS OUTILS !Lancement de Xcodevorsque vous l—n™ez ˆ™ode pour l— première foisD vous serez pro˜—˜lement surprisF itil 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 unlogi™iel très puiss—nt 3 Xcode est lIDE le plus utilisé sous Mac, créé par Apple lui-même. Les plus grands logiciels, comme iPhoto et Keynote, ont été codés à laide de Xcode. Cest réellement loutil 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 ç—Fellez 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 ˆ™odeellez d—ns l— se™tion eppli™—tion et séle™tionnez gomm—nd vine „ool F 7gliquez 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—nsle dossier que vous voulezF 7. Si vous avez une version plus ancienne du logiciel, il vous faudra probablement aller dans lasection Command line utility et sélectionner Standard tool.PT
  39. 39. XCODE (MAC OS SEULEMENT)…ne fois ™rééD votre projet se présenter— sous l— forme d9un dossier ™onten—nt de mulEtiples (™hiers d—ns le pinderF ve (™hier à l9extension Fx™odeproj ™orrespond —u (™hierdu projetF g9est lui que vous devrez séle™tionner l— pro™h—ine fois si vous souh—itezréouvrir votre projetFLa fenêtre de développementh—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 —™tionv— 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
  40. 40. 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—tionALancement du programme€our tester ™e premier progr—mmeD ™liquez sur le ˜outon fuild —nd qo de l— ˜—rred9outilsF †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 XPV
  41. 41. 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éeFAjouter un nouveau chiereu 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—mmesdeviendront plus grosF PW
  42. 42. CHAPITRE 2. AYEZ LES BONS OUTILS !€our ™réer un nouve—u (™hier sour™e sous ˆ™odeD rendezEvous d—ns le menu pile Gxew pileF …n —ssist—nt vous dem—nde quel type de (™hier vous voulez ™réerF ‚endezEvous d—ns l— se™tion fƒh et séle™tionnez g pile @pi™hier gAF †ous devriez —voir sousles yeux l— (gF PFPHF Figure PFPH ! ejouter un (™hier sous ˆ™ode†ous devrez donner un nom à votre nouve—u (™hier @™e que vous voulezAF v9extensionDelleD doit rester F™F €—rfois E nous le verrons plus loin ED il f—udr— —ussi ™réer des (™hiersFh @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—sFgliquez ensuite sur pinishF g9est f—it 3 †otre (™hier est ™réé et —jouté à votre projetDen plus de m—inF™F†ous êtes m—inten—nt prêts à progr—mmer sous w—™ 3En 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è˜resFQH
  43. 43. Chapitre 3Votre premier programme Diculté :O n a préparé le terrain jusquici, maintenant il serait bien de commencer à programmer un peu, quen dites-vous ? Cest justement lobjectif de ce chapitre ! À la n de celui- ci, vous aurez réussi à créer votre premier programme !Bon daccord, ce programme sera en noir et blanc et ne saura que vous dire bonjour, ilsemblera donc complètement inutile mais ce sera votre premier ; je peux vous assurer quevous en serez ers. QI
  44. 44. CHAPITRE 3. VOTRE PREMIER PROGRAMMEConsole ou fenêtre ?xous —vons r—pidement p—rlé de l— notion de progr—mme ™onsole et de proEgr—mme fenêtre d—ns le ™h—pitre pré™édentF xotre shi nous dem—nd—it quel type deprogr—mme nous voulions ™réer et je vous —v—is dit de répondre ™onsoleFsl 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 ™onsoleFLes programmes en fenêtresge sont les progr—mmes que vous ™onn—issezF v— (gF QFI est un exemple de progr—mmeen 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 3in eetD ™réer des progr—mmes —ve™ des fenêtres en g ™9est possi˜leD m—isF F F qu—nd ondé˜uteD ™9est ˜ien trop ™ompliqué 3 €our dé˜uterD il v—ut mieux ™ommen™er p—r ™réerdes progr—mmes en ™onsoleF Mais au fait, à quoi ça ressemble un programme en console ?QP
  45. 45. CONSOLE OU FENÊTRE ?Les programmes en consoleves progr—mmes ™onsole ont été les premiers à —pp—r—îtreF À ™ette époqueD l9ordin—teurne 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 —ujourd9huiFfien 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 ‡indowsest devenu tellement popul—ire qu9—ujourd9hui ˜e—u™oup de monde — ou˜lié ™e qu9ét—itl— ™onsole 3 1t9—i une gr—nde nouvelle 3 La console nest pas morte 3 in eetD vinux — remis —ugoût du jour l9utilis—tion de l— ™onsoleF v— (gF QFP est une ™—pture d9é™r—n d9une ™onsolesous vinuxF Figure QFP ! …n exemple de ™onsoleD i™i sous vinuxfrrrF F F „erri(—ntD hein c †oilàD vous —vez m—inten—nt une petite idée de ™e à quoiressem˜le une ™onsoleFge™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—îtriserFgomme je vous l9—i dit plus h—utD ™réer des progr—mmes en mode ™onsole ™ommei™iD ™9est très f—™ile et idé—l pour dé˜uter @™e qui n9est p—s le ™—s des progr—mmes enmode fenêtre AFxotez que l— ™onsole — évolué X elle peut —0™her des ™ouleursD et rien ne vous empê™hede mettre une im—ge de fondF 1. Oui vous là, ne regardez pas derrière vous, je sais que vous vous demandez ce que cest. QQ
  46. 46. CHAPITRE 3. VOTRE PREMIER PROGRAMME Et sous Windows ? Il ny a pas de console ?ƒiD m—is elle est un peuF F F ™—™hée on v— direF †ous pouvez —voir une ™onsole enf—is—nt hém—rrer G e™™essoires G snvite de ™omm—ndesD ou ˜ien en™ore en f—is—nthém—rrer G ixé™uterFFFD et en t—p—nt ensuite ™mdFv— (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 despetits 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—irespour pouvoir ensuite ™réer des fenêtresFSoyez donc rassurés X dès que nous —urons le nive—u pour ™réer des fenêtresD nousverrons ™omment en f—ireFUn 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 —llonsdé™ouvrir m—inten—ntF sl devr—it servir de ˜—se pour l— plup—rt de vos progr—mmes enl—ng—ge gFQR
  47. 47. UN MINIMUM DE CODEDemandez le code minimal à votre IDEƒelon l9shi que vous —vez ™hoisi d—ns le ™h—pitre pré™édentD l— méthode pour ™réerun 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 gonsoleeppli™—tion et séle™tionner le l—ng—ge gFgode: :flo™ks — don™ généré le minimum de ™ode en l—ng—ge g dont on — ˜esoinF vevoi™i X 5in™lude `stdioFhb 5in™lude `stdli˜Fhb int m—in@A { printf@4rello world3’n4AY return HY } Notez quil 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 nest pas grave, mais le compilateur risque de vous acher un avertissement (warning ).xotez que l— ligne X int m—in@AF F F peut —ussi s9é™rire X int m—in@int —rg™D ™h—r B—rgv‘“Aves deux é™ritures sont possi˜lesD m—is l— se™onde @l— ™ompliquéeA est l— plus ™our—nteFt9—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— rienpour nousF snutile don™ de s9y —tt—rderD surtout que nous n9—vons p—s en™ore le nive—upour —n—lyser ™e que ç— signi(eFƒi vous êtes sous un —utre shiD ™opiez ™e ™ode sour™e d—ns votre (™hier m—inF™ pourque nous —yons le même ™ode vous et moiFinregistrez 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
  48. 48. CHAPITRE 3. VOTRE PREMIER PROGRAMMEAnalysons le code minimalge ™ode minim—l qu9on vient de voir n9est rien d9—utre que du ™hinois pour vousDj9im—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 ç— 3gommençons p—r les deux premières lignes qui se ressem˜lent ˜e—u™oup X 5in™lude `stdioFhb 5in™lude `stdli˜Fhbge sont des lignes spé™i—les que l9on ne voit qu9en h—ut des (™hiers sour™eF ges lignes sontf—™ilement re™onn—iss—˜les ™—r elles ™ommen™ent p—r un dièse 5F ges lignes spé™i—lesDon les —ppelle directives de préprocesseur @un nom ™ompliquéD n9estE™e p—s cAF gesont des lignes qui seront lues p—r un progr—mme —ppelé prépro™esseurD un progr—mmequi se l—n™e —u dé˜ut de l— ™ompil—tionFyui X ™omme je vous l9—i dit plus tôtD ™e qu9on — vu —u dé˜ut n9ét—it qu9un s™hém— trèssimpli(é de l— ™ompil—tionF sl se p—sse en ré—lité plusieurs ™hoses pend—nt une ™ompil—EtionF yn les dét—iller— plus t—rd X pour le momentD vous —vez juste ˜esoin d9insérer ™eslignes en h—ut de ™h—™un de vos (™hiersF Oui mais elles signient quoi, ces lignes ? Jaimerais 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˜FhFges (™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 dutexte à 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 3frefD en résumé les deux premières lignes in™luent les ˜i˜liothèques qui vont nouspermettre @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—geg est ™onstitué de fon™tionsD il ne ™ontient qu—siment que ç—F €our le momentD notreprogr—mme ne ™ontient don™ qu9une seule fon™tionFQT

×