Download as pdf
Download as pdf
You are on page 1of 409
Apprenez a programmer en C! Par Mathieu Nebra (M@teo21) eet Site ov nd Zéro www.siteduzero.com Licence Creative Commons 6 2.0 Demiére mise a jour le 8/01/2013 2/410 Sommaire Sommaire Lire aussi . Apprenez a programmer en C ! Partie 1 : Les bases de la programmation en C . Vous avez dit programmer ? Programmer, cest quoi? Programmer, dans quel langage ? Un peu de vocabulaire Pourquoi choisr dapprend ia G? Programmer, cest dur? ‘Ayez les bons outils ! Les utils nécessaires au programmeur CCholsissez volr IDE Gode:Blocks (Windows, Mac 68, Linux) ‘Telécharger CodeBlocks Crder un nouveau projet Visual C+ (Windows sediement) Installation Créer un nouveau projat Alouter un nouveau fichier source La fendtre principale de Vieual Xcode (Mae OS seulement) Xcode, od e-tu ? Laneemant de Xcode La fendtre de développement Alouter un nouveau fichier En résumé Votre premier programme Console ou fentre ? Les programmes en fenéires Les programmes en console Un minimum de code Demandez le code minimal & votre IDE ‘Analysons le code minimal Testons notre programme Ecrire un message a eran Dis Bonjour au Monsiour Les caractéres spaciaux Le syndrome de Gérard Les Gommentares, cest ir ule | Un monde de variables Une affaire de mémoire Les diférents types de mémoie LLaimémoire vive en photos Le schéma de la mamoie vive Déelarer une variable Donner un nom a ses variables Les types de variables Déclarer une variable AMfecter une valeur & un variable La valeur dune nowvalle variable Les constantes Afficher le contenu dune variable ‘Aficher plusieurs variables dans un méme pani Reécupérer une saisie Une bate de calcul Les calculs de base La division Le modulo Des caleuls entre variables Les accoureis Linerémentaion Lardéerémentation Les autres raccourcis Labibloteque matnematique fabs cell floor pow sat sn, 608 tan ‘asin, cos, alan exp log logié www.siteduzero.com Sommaire Enrésume Les conditions a condone Guetques symbole 4 connaire Gnitsimpie Le else pour de sinon > Us else pour dra «snon ais Plusleurs condions ala fo Quetquet erreurs courantes de début ls boolens, le coeur des condions uelques pois teste pour ten compre Des expicatons simposent Untest avec une varable Catt varabe majeur et un bool {les boelens dans ls condions La condton sith nse un ste Gérer un menu avec un sich tis temates : des condone condenées Une condition i lee bin connue Latname condtion en trate Enrasumé Les boucles ‘Questco quune boule ? La bouce while, Attention aux boii inns ta boule do. whe Ua bowser Enresume TP : Plus ou Moins, votre premier jeu Prdparatisotconsels Le pinepe 6 programe Tarun nombre au sot Les bibiatheques 2 incre sFen al assez dt! Correcion La correction de «Pus a Mois » Exéctable et sources Explcatons tases camsicraion Les fonctions Créer et apple une faction Sehéma dune fonction Greer une fonction Pusieurs paramates, aucun paramdire ‘Appeler une fonction (Das exemples pour bien comprendee Conversion euros rancs La puniion Ae dun recangia Un menu Enresumé Partie 2 : Techniques « avancées » du langage C La programmation modulaire es prototypes Le prototype pour annonce une foncon Les eaders Psleus finer par projet Fichiers het c los ncide des bibloinbquessiandard LStcomplation separge La porte des fonctions et vrata Les variables propres aux fonctions Les vaabes globles = éier Variable staique a une fonction Les foneons locales & un fichier | Envéeumé, ‘A assaut des pointeurs {Un probleme bien ennuyeux La mémove, une question dadresse Rappel ds fats Aatosse et valour Le sooop dour Utiser des porters Gréer un pointeur ‘tet Sbsolumen Envoyer un pointeur une foncon Une autre fagon tenvoyer un pontine fondion ui a dt: Un probleme bien ennui ? Enresue Les tableaux www.siteduzero.com 3/410 107 108 109 109 111 m 2 12 na 4 "5 "5 18 no 120 12 123 123 Sommaire 4/410 Les tableau dans la mémoice 128 Défini un tableau 124 Les tableaus a talie dynamique 126 Parcourirun tableau var Iniaiser Un tableau 128 Une autve facon dinitaliser 128 Passage de tableaux & une fonction 129 ‘Queiques exercices 130 En résumé 12 Les chaines de caractéres 133 Le type char 133 Aficher un caractire 13 Les chaines sont des tableaux de char 14 Craton et intalsation de la chai 136 Reécupération dune chaine via un serif 138 Fonctions de manipulation des chaines. 138 Pengez a inclure sring.8 139 strlen = calcul la longueur dune chaine 139 Stopy - copier une chaine dans une autre 140 steal: coneaténer 2 chaines a2 stremp : comparer 2 chaines “3 sche :rechercher un caractére 144 Stpbrk: premier caractore dela isto 14s ssi rechercher une chaine dans une aure M6 Sprint: derive dans une chaine var En résumé 148 Le préprocesseur 148 Les include 149 Les define 150 Un define pauria tale des tabioaux 182 Calouis dans les define 153 Les constantes prédéfinios 183 Les definitions simples 153 Les macros 188 Macro sans paramétres 154 Macro avec paramétres 185 Les conditions 187 ‘ioe nde! 187 #htrdef pour éviter les inclusions infinies 158 En résumé 169 Créez vos propres types de variables 159 Dalinicune structure 160 Exemple do structure 160 Tableaux dans une sticlure 161 Utiisation dune structure 162 Le typedet 162 Modifier ls composantes de la structure 163 Iniaiser une stueture 164 Pointeur de structure 165 Envoi dla sttucture & une fonction 166 Un raccourei pratique et rs ullisé 167 Les énumérations 168 Association de nombres aux valours 168 ‘Assocter une valeur precise 169 En résumé 169 Lire et écrire dans des fichiers 170 uv et ferme un fichier m1 fopen : ouverture du fichier m Tester fouverture du hier Ws felose : ferme le fichier 6 Diflérentes méthodes de lecture /deriture Ww Ecrire dans le fichier wr Lire dans un fchier 120 Se déplacer dans un fiche 14 fell: position dans le fichier 184 seek: se positonner dans le fichier 14 rewind : retour au début 188 Fnommer et supprimer un fichior 186 rename :renommer un fichier 186 Femove :supprimer un fichior 186 Lallocation dynamique 187 La taille des variables 188 Une nouvelle fagon de wairia mémaire 190 Allocation de mémoice dynamique 193 malloc: demande dalacation de mémaire 193 Testor ie pointeur 198 free ibérer de la mémole 194 Exemple concret dutisation 195 Allocation dynamique dun tabieau 196 En résumé 198 TP : réalisation d'un Pendu 199 Les consignes 199 www.siteduzero.com Sommaire 5/410 Déroulement dune partie. 199 Dictionnaire de mots 202 La solution (1 le code du jou} 208 Analyse de la fonction main 208 Analyse dela fonction gagne 207 Analyse de la fonction rechercheLstre 207 La solution 2: la gestion du dictionnaira) 208 Préparation des nouveaux fichiers. 209 La fonction piocherMot 208 La fonction nombresleaioire an Le fichier dico.h 22 Le fichier dica.c 22 iva flit modifier fa main 213 Idées améloraion 27 Télécharger le projet ar Amdliorez le Pend! air La saisie de texte sécurisée 218 Le limites de la fonction scant 219 Enter une chaine de caractered avec des eepaces 219 Enter une chaine de caracteres top longue 220 Reécupérer une chaine de caractores 2a La fonction gets 2a Créer sa propre foncion de Sasi ulisant fgets 22 Convertia chaine en nombre Zr Sol: convert une chaine en jong zr Sirtod : converte une chaine en doubie 229 En resumé 228 Partie 3 : Création de jeux 2D en SDL. 230 Installation de la SDL 231 Pourquoi avoir choisi la SOL? 231 CChoisicune bibiothéque : pas facile! 231 La'SDLest un bon enon! 231 Les possiblitésoffertes par la SOL 232 Teléchargement de la SDL 233 Créer un projet SDL: Windows 234 Création dun projet SDL sous Code:‘Biocks 234 Création dun projet SOL sous Visual C++ 238 Créer un projet SDL = Mac OS (Xcode) 240 Gréer un projet SDL: Linux 26 En résumé 245 Création d'une fenétre et de surfaces 246 Charger et aréter a SOL. 246 SSDL- Init: chargement de ia SOL 246 SSDL_Quit:anétde la SOL. 2ar CGanavas de programme SO 248 Giérer les erreurs 248 Ouverture dune fenive 249 CChox du mode vidéo 250 attr en pause le programme 251 CChanger'e tire de la fendive 253 Manipulation des surfaces. 255 Votre premiére surface: tecran 255 Colorar une surface 257 Dessiner une nowveli surface & fécran 261 Centro la surface 8 'éeran 265 Exerc = eréer un dégrad 295 Correction 267 ‘Je voux des exercces pour mientainer |» 269 Enrésume 269 Afficher des images 269 Charger une image 8M 270 Le format BMP. 210 Gharger un Bima 210 AAssocier une icdne & son appiiction 22 Gestion dela transparence 213 Le probleme dela ransparence 213 RRendre une image transparente 215 Latransparence Alpha ar Charger plus de formats dimage avee SOL” image 219 installer SDL_image sous Windows 280 Installer SDL_image sous Mac OS X 282 Charger les images 282 Enréeumé 284 La gestion des événements 284 Le principe des événements 285 La variable eévénement 285 La bouele des evanemenis 286 écupération de 'événement 286 Analyse de Pévénement 287 Le code compat 288 Leclavier 289 Les événements du clavier 289 www.siteduzero.com Sommaire 6/410 Récupireria touche Exerc igor Zac daar Charger image Suna dota pogatiain Sinamariaie ‘rater ovenamont SOL KEYOOWN Guelgues options tases Gre los ccs da sours Ghrertedeplacement ds ice Suetues ares oncione avec ta Sore tas onements lft Rdmenconnemart doa tends Wai donee Envésume TP : Mario Sokoban Cater des cnarges du Saban Riwopos au Soon Leche des heres, Récopurot is spies sje Loman et lee contanee Uf frets flrs du pit Les contoriee constants teva a lope Le pitas envybs bia oan Les diarations do varates tteatons Uabouceprncila Fh dota tocton abhaigemoia Litonaion deplacortouue Chargoment et enepcvemaii de ai chageneas seuegadenvaas Ute do niveau tateatons UB gest ds anaes Bitte! Résune ardor Riss eeonoret Amato Mattisez Ie temps 1 Le Delay elas Toke SbL- Delay SoLceatts Ubtiar SD Geis pour grea tmps teeters Iiineriesyatime de timers ower cn ner Envésume Ecrire du texte ave SDL. tt instar SOL-t Comment onstie SOLA? irtalor SOL t Contre itr S61 tadoeumertabon Charger de Soi Cincuoe Dermarage de 86 Aretde SOL Chargement una pics te cferertos mothodes déciure Exenple Cachure de ei on londod Code ope deere ce toe ftsbuis dotted teste Crosson fe compiour Envound JJouer du son avec FMOD instar FMOD Pourquoi FMOD 9 Taechorger too Insta EOD viata tet in ob iva Inclure header Crdoret tals cj sibs Fermor tbe un bjt syaime Censors cours ‘rouyer dos sone Sots tp Gapes suv pourri Son Exompl un ou Ceemusiquos 9, 086, Wi”) ‘rouver dos musics Tee es sue po ua ne ia Code cmp olacure www.siteduzero.com 289 291 291 292 293 295 298 299 401 02 303 303 303 305 306 308 308 307 307 309 309 309 an 32 2 313 6 3B 2 m2 325 325 ar 28 28 29 32 33 33 Eo 335 335 335 336 a7 a2 a2 a2 Baa 345 ‘346 346 346 346 ur Mar ur aar 4B 4B 350 382 353 355 356 350 360 "360 360 360 361 361 361 362 363 363 363 268 306 369 369 370 372 Lire aussi 7/410 En résumé ams TP : visualisation spectrale du son 375 Les consignes 375 4 Ure un MPS 35 21 Récupérer les données spectales du son 376 47 Réaliser le dégrads 378 La solution 379 dées gaméloraion 4383 Partie 4 : Les structures de données .. Les listes chainées 385 Représentation dune isto chainge 385 Construction dune liste chainge 386 Un élément deta iste 386 La stucture de contate 386 Le demier élément dela liste 387 Les fonctions de gestion dela iste 388 Iniiaisr la iste 388 Alouter un élément 380 Supprimer un élémont 391 Afficher a liste chains 392 Allor plus lin 393 Enrésumé 393 Les piles et les files, 394 Les piles 398 Fonetonnement des ples 394 Création dun systema de pile 396 Les fies 4400 Fonctionnement des fles ‘400 Création dun systome de fils 400 Kvous de jouer! ‘402 En résumé 4402 Les tables de hachage 404 Pourquol utiliser une table de hachage ? 408 Quiest.ce qu'une table de hachage ? 408 Eerie une fonction de hachage’ 405 Gérer les colisions 407 Ladressage ouvert 408 Le chainage 408 En résumé 408 www.siteduzero.com Lire aussi 8/410 | Apprenez a programmer en C ! Par = 1, Mathicu Nebra (M@teo21) Mise jour : 08/01/2013 Diffcuité :Intermédiaire waa... Durée d'étude :2 mois, 15 jours 83 619 visites depuis 7 jours, classé 2799 Vous aimeriez apprendre & programmer, mais vous ne savez pas par ol commencer ? (auttement dit: vous en avezmarte des cours trop compliqués que vous ne comprenez pas ? 2) Cost votre jourde chance ! Nous venezde tomber surun ours de progranmation pour débutants, visiment pour débutants linyy a aucune honte a étre débutant, tout le onde est passé par fi, moi y compris Ce quil vous faut est pourtant sinpe.I faut qu'on vous explique tout, progressivemnt, depuis le début + Comment s'y prend-on pour eréer des progranmes comme des jeux des fenétres + De quels logiciels a--on besoin pour programmer? + Dans quellangage commencer programmer? Daleus,cest quoiun ngage» @) Ce tutoriel est constitué de 2 parties théoriques sur le langage C (patties let I!) suivies d'une partie pratique (pautic Ill) portant surla bibliothéque SDL dans laquelle vous réutiliserez tout ce que vous avez appris pour eréer des jeux vidéo ! Exemples de réalisations tirés de la partie Ill sur la SDL. Ce cours vous plait ? Sivous avez aimé ce cours, vous pouvez retrouver le livre "pp rene 0 programmer en C* du meme auteur, en vente sure Site dui Zé10, en librairie et dans les boutiques en ligne comme Amazon.fr et PNAC com Vous y trouverez.ce cours adapté au format papier avec une série de chapitres inédits. Plus d'informations www.siteduzero.com Apprenez a programmer en C! 9/410 Partie 1 : Les bases de la programmation en C Vous avez dit programmer ? ‘Nous avez déji entendu parler de programmation et nul doute que si vous avez.e livre entre les mains, c'est parce que vous voulez. « enfin » comprendre comment ¢a fonctionne. Mais programmer en langage C... ¢a veut dire quoi? Est-ce que c'est bien pour commencer ? Est-ce que vous avez le niveau. pour programmer ? Est-ce qu'on peut tout faire avec ? CC chapitta pourbut de épondre toutes ces questions apparemment bétes et poutant ints importantes Gtices ces questions sinples,vous saurez fin dece premier chapitte ce qui vous attend Cest quand mime micuxde savoir {quoi ser ee que vous allezapprendte, vous ne trouvez pas? Programmer, c'est quoi ? (On commence parla question laps simple qui soi, a pls basique de toutes les questions basiques Sivous avezTinpression de dg savoir tout ga, je Vous conseille de lr quand meme, ga ne peut pas vous fire de mal Je pars de aby pource cours, donc je vais devotrepondre ls question @ Que signifie le mot « programmer » ? Programmer signifie réaliser des « programmes informatiques ». Les programmes demandent & lordinateur deffectuer des actions. Notre ordinateur est rempli de programmes en tous genres Ja caleulatrie est un programme ; votre traitement de texte est un programme ; votre logiciel de « chat » est un programme ; les jeux vidéo sont des programmes. ‘Clone de Metal Slug réalisé par le membre joe En bref, les programmes sont partout et pemmettent de fair a prioritout et n"importe quoi sur un ordinateur. \ous pouvez inventer ‘un logiciel de eryptage révolutionnaire sia vous chante, ou réalser un jeu de combat en 3D sur lntemet, peu importe. Votre ‘ordinateur peut tout faire (saufle café, mais jy travail). Attention ! Je n'ai pas dit que réaliser un jeu vidéo se faisat en claquant des doigts. ai simplement dit que tout cela était www.siteduzero.com Apprenez a programmer en C! 10/410 possible, mais soyez stirs que ga demande beaucoup de travail, Comme vous débutez, nous n’allons pas commencer en réalisant un jeu 3D. Ce serait suicidaire. ‘Nous allons devoir passer par des programmes trés simples. Une des premigres choses que nous vertons est comment afficher un message 4 I'écran. Oui, je sais, ga n'a rien de transcendant, mais rien que ga croyez-moi, ce n'est pas aussi facile que ¢a en a Fair Ca impressionne moins les amis, mais on va bien devoir passer par li. Petit & petit, vous apprendrez.suffisamment de choses pour commeneer réaliser des programmes de plus en plus complexes. Le but de ce cours est que vous soyez capables de vous en sortir dans n'importe quel programme écrit en C. Mais tenez, au fit, vous savezce que cest vous, ce fameux.« langage Cs? Programmer, dans quel langage ? Notre ordinateur est une machine bizarre, c'est le moins que Fon puisse dire. On ne peut s'adresser ili qu'en hi envoyant des 0 et des 1. Ans, sje traduis « Fis le calcul 3 +5 » en langage infomstique, ga pourrait donner quelque chose comme (invent, je he connais quand méme pas la traduction informatique par eur) Ce que vous voyer li, cst le langage informatique de votre ordinateur, appelé langage binaire (retenez bien ce mot !). Votre ondinateur ne connait que ce langage-i et, comme vous pouvez constater, c'est absolument incompréhensible. Done voili notre premier vrai probleme © ‘Comment parler a lordinateur plus simplement quien binaire avec des O et des 1? \otre ordinateurne parle pas anglais et encore moins le frangais. Pourtant, ilest inconcevable d'écrire un programme en langage binaire. Méme les informaticiens les plus fous ne le font pas, c'est vous dire ! Fh bien Tidée que les informaticiens ont eue, c'est dinventer de nouveaux langages qui seraient ensuite traduits en binaie pour ordinateur. Le plus dur faire, c'est de réaliser le programme qui fait la « traduction ». Heureusement, ce programme a deja crit par des informaticiens et nous n'aurons pas & le refaire (ouf !). On va au contraive s'en servir pour écrire des phrases comme « Fais le calcul 3 + 5 » qui seront traduites parle programme de « traduction » en quelque chose comme : « Le schéma suivante résume ce que je viens de vous expliquer. ee (On ottient un programme en Votre programme est det Leprogramme de binaie que votre ordinateur ddans un langage simpiié ‘traction radu en comprend “«Fais le calcul 3+ 5» «binaire » (001100110011 101001010 Un peu de vocabulaire Li jai parlé avec des mots simples, mais il faut savoir qu'en informatique il existe un mot pour chacune de ces choses-li. Tout au long de ce cours, vous allezdailleurs apprendre a utiliser un vocabulaire approprié. [Non seulement vous aurez lair de savoir de quoi vous parlez, mais siun jour (et ga arrivera) vous devez parler 8 un autre programmeur, vous saurez vous faire comprendre. Certes, les gens autour de vous vous regarderont comme si vous étiez des exiracterestres, mais ¢a il ne faudra pas y faire attention ! Reprenons le schéma que lon vient de voit. La premire case est « Votre programme est écrit dans un langage simplifié ». Ce fameux« langage simplifé » est appelé en fait langage de haut niveau. existe plusieurs niveauxde langages. Plus un langage est haut niveau, plus ilest proche de votre vraie langue (comme le ffangais). Un langage de haut niveau est done facile utiliser, mis cela a aussi quelques petits défauts comme nous le verrons www.siteduzero.com Apprenez a programmer en C! 11/410 plus tard existe de nombreux langages de plus ou moins haut niveau en informatique dans lesquels vous pouvez écrite vos programmes. En voici quelques-uns par exemple ks kcH; Java; Visual Basic ; Delphi; ete. Notez que je ne les ai pas classés par « niveau de langage », nallez done pas vous imaginer que le premier de la liste est plus facile que le demier ou Finverse. Ce sont juste quelques exemples. Davance désolé pour tous les autres langages quicxistent, mis faire une liste complete serait vaiment trop long ! Contains de ces langages sont plus haut niveau que d'autres (done en théorie un peu plus faciles & utiliser). Un autre mot de vocabulaire a retenir est code source. Ce qu'on appelle le code source, c'est tout simplement le code de votre programme écrit dans un langage de haut niveau. Cest done vous qui écrivez le code source, qui sera ensuite traduit en binaire. \Venons-en justement au « programme de traduction » qui traduit notre langage de haut niveau (comme le C ou le C++) en binaire, Ce programme a un nom: on Fappelle le compilateur. La traduction, elle, s'appelle La compilation ‘Trés important :ilexiste un compilateur différent pour chaque langage de haut niveau. C'est d'ailleurs tout & fit logique : les langages étant différents, on ne traduit pas le C de la méme maniére qu'on traduit le Delphi \ous verrez par la suite que méme pour le langage C ilexiste plusieurs compilateurs différents ! Ily a le compilateur écrit par Microsoff, le compilateur GNU, ete. On vera tout cela dans le chapitre suivant Heureusement, ces compilateurs-ld sont quasiment identiques (méme s‘ily a parfois quelques « légéres » différences que nous apprendrons a reconnaitre) Enfin, le programme binaire créé par le compilateur est appelé exéeutable. Cest dailleurs pour cette raison que les programmes (tout du moins sous Windows) ont lextension « .exe » comme EXEcutable. Reprenons notre schéma précédent, et utilisons cette fois des vrais mots tordus d'informaticien (ig. suivante). Votre programme est écrit dans un langage de haut EEE Sate 0011001 10011101001010 Pourquoi choisir d'apprendre le C ? ‘Comme je vous Fai dit plus haut, il existe de trés nombreux langages de haut niveau, Doit-on commencer par lun d'entre euxen particulier ? Grande question. Pourtant, il faut bien faire un choix, commencer la programmation un moment ou 8 un autre. Bt li, vous avezen fait le choix centre ‘+ un langage trés haut niveau :cest facile & utiliser, plut6t « grand public ». Parmi eux, on compte Python, Ruby, Visual Basic et bien d'autres. Ces langages permettent d'écrire des programmes plus rapidement, en regle générale. Ils nécessitent toutefbis d’étre accompagnés de fichiers pour quis puissent s'exicuter (comme un interpréteur) ; ‘© unangage un peu plus bas niveau (mais pas trop quand méme !) ils sont peut-étre un peu plus difficiles certes, mais avec un langage comme le C, vous allez en apprendre beaucoup plus sur ls programmation et sur le fonctionnement de votre ordinateur. Vous serezensuite largement capables d'apprendre un autre langage de programmation si vous le désirez. Nous serez done plus autonomes. www.siteduzero.com Apprenez a programmer en C! 12/410 Parailleurs, le Cest un langage trés populaive. Ilest utilisé pour programmer une grande partie des logiciels que vous Fnfin, le langage C est un des langages les plus connus et es plus utilisés qui existent. Ilest trés frequent quil soit enseigné lors études supérieures en informatique. \oili les raisons qui mincitent a vous apprendre le langage C plutdt qu'un autre. Je ne dis pas quill faut commencer par ga, mais je vous dis plutét que c'est un bon choix qui va vous donner de solides connaissances. ‘On pourait citer d'autres raisons : certains langages de programmation sont plus destinés au Web (comme PHP) qu‘a la realisation de programmes informatiques, Je vais supposer tout au Jong de ce cours que c'est votre premier langage de programmation, que vous n'avez jamais fait de programmation avant. Si parhasard, vous avezdéja un peu programmé, ca ne pourra pas vous faire de mal de reprendre & 2éro. Iy a quelque chose que je ne comprends pas... Quelle est la diffrence entre le langage « C» et cet autre langage dont on parle, le langage « C++» ? Le langage Cet le langage C++ sont trés similaires. ls sont tous les deux toujours trés utilisés. Pour bien comprendre comment ils sont nés, il faut faire un peu dhistoire ‘+ Au tout début, a !époque oft les ordinateurs pesaient des tonnes et fasaient la taille de votre maison, on a commence & inventer un langage de programmation appelé 'Algol. + Les choses évoluant, on a enéé un nouveau langage appelé le CPL, qui évolua luisméme en BCPL, qui prit ensuite le nom de langage B. Puis un beau jour on en est amivé & eréerun autre langage encore, qu'on a appele... le langage C. Ce langage, sila subi quelques modifications, reste encore un des plus utilisés aujourd hu ‘+ Un peu plus tard, on a proposé diajouter des choses au langage C. Une sorte d'amélioration si vous voulez. Ce nouveau langage, que lon a appelé « C++ », est entidrement basé sur le C. Le langage C++ n'est en fait rien d'autre que le langage Cavee des ajouts permettant de programmer d'une fagon diferente. Quilny ait pas de malentendus : le langage C++ n'est pas « meilleur» que le langage C, ilpermet juste de programmer différemment. Disons aussi quill pemet au final de programmer un peu plus efficacement et de micuxhigrarchiser le code de son programme. Malgré tout, il essemble beaucoup au C. Si vous voulez passer au C+ parla suite, cela vous sera facile Ce n'est PAS parce que le C+ est une « évolution » du C qu'l faut absolument faire du C+ pour réaliser des programmes. Le langage C'est pas un « vieuxlangage oublié » :au contraie, ilest encore ts utilisé aujourd'hui. Ilest a la base des plus grands systemes dexploitation tels Unix (et done Linux et Mac OS) ou Windows, Retenez done : le Ct le C++ ne sont pas des langages concumtents, on peut faite autant de choses avec Fun quiavee Fautre. Ce sont juste deuxmaniéres de programmer assez diferentes. Programmer, c'est dur ? bili une question qui doit bien vous torturer esprit. Alors: faut étre un super-mathématicien quia fit 10 ans d'études supérieures pour pouvoir commencer ly programmation ? Laréponse, que je vous rassure, est non, Non, un super-niveau en maths n'est pas nécessaire. En fait tout ce que vous avez besoin de connaitre, ce sont les quatre opérations de base + Taddition ; © soustraction ; + a mutiplication ; + division Ce n'est pas trop intimidant, avouez_! Je vous expliquerai dans un prochain chapitre comment lordinateur réalise ces opérations de base dans vos programmes. Bref, niveau maths, iln'y a pas de difficulté insumontable. En fait, tout dépend du programme que vous allezréaliser: si vous dever faire un logiciel de eryptage, alors oui, il vous faudra connaitre des choses en maths. Si vous devez fare un programme qui fait de la 3D, oui, il vous faudra quelques connaissances en géométrie de lespace. www.siteduzero.com Apprenez a programmer en C! 13/410 ‘Chaque eas est particulier Mais pour apprendre le langage C lui-méme, vous n'avezpas besoin de connaissances pointues en quoi que ce soit © Mais alors, ot est le pidge ? Oi est la difficulté ? 11 faut savoir comment un ordinateur fonctionne pour comprendre ce qu’on fait en C. De ce point de vue-li,rassurez-vous, je ‘vous apprendrai tout au fur et & mesure, Notez qu’un programmeura aussicertaines qualités comme ‘+ la patience : un programme ne marche jamais du premier coup, il faut savoir persévérer ! ‘le sens de Ia logique : pas besoin d’étre forts en maths certes, mais ga ne vous empéchera pas d'avoir i réfléchir. Désolé pour ceux qui pensaient que ¢a allait tomber tout cuit sans effort ! + Te calme : non, on ne tape pas surson ordinateur avec un marteau. Ce n'est pas ga qui fera marcher votre programme. En bref, et pour faire simple, il n'y a pas de véritables connaissances requises pour programmer. Un nul en maths peut s'en sortir sans probleme, le tout est d'avoir la patience de réfléchir Ily en a dailleurs beaucoup qui découvrent quis adorent ¢a ! En résumé ‘+ Pour séaliser des programmes informatiques, on doit écrire dans un langage que lordinateur « comprend ». ‘© existe de nombreux langages informatiques que Ton peut classer par niveau. Les langages dits de « haut niveau » sont parfois plus faciles maitriser au détriment souvent dune perte de performances dans le programme final. ‘+ Le langage C que nous allons étudier dans ce livre est considéré comme étant de bas niveau. Cest un des angages de programmation les plus célébres et les plus utilsés au monde. ‘+ Le code source est une série dinstructions écrites dans un langage informatique. ‘+ Le compilateur est un programme qui trans forme votre code source en code binaire, qui peut alors étre exscuté par votre processeur Les . exe que fon connait sont des programmes binaires,iln'y a plus de code source & lintérieur. ‘* Laprogrammation ne requiert pas en elle-méme de connaissances mathématiques poussées (sauf dans quelques cas précis oi votre application doit faire appel a des formules mathématiques, comme c'est le cas des logiciels de cryptage). Néannpoins, ilest nécessaire d'avoir un bon sens de la logique et d'etre méthodique. www.siteduzero.com Apprenez a programmer en C! 14/410 Ayez les bons outils ! Aprés un premier chapitre plut6t introductif, nous commencons a entrer dans le vif du sujet. Nous allons répondre & la question suivante : « De quels logiciels a-t-on besoin pour programmer ? » n'y aura rien de difficile faire dans ce chapitre, on va prendre le temps de se familiariser avec de nouveauxlogiciels Profitezen ! Dans le chapitre suivant, nous commencerons a vraiment programmer et ine ser pus Theure de fire la sieste! Les outils nécessaires au programmeur Alors a votre avis, de ques outils un progranmeura-tilbesoin? Sivous avezattentivement suivile chapitte préeédent, vous devezen connaite au moins un! Vous voyez de quoi je parle ?... Vaiment pas ? Fh oui, il sagit du compilateur, ce fameux programme qui permet de traduire votre langage C en langage binaire ! ‘Comme je vous Favais déji un peu dit dans le premier chapitre, il existe plusieurs compilateurs pour le langage C. Nous allons voir que le choixdu conpilateur ne sera pas trés compliqué dans notre cas. Bon, de quoi d'autre a-t-on besoin ? Je ne vais pas vous laisser deviner plus longtemps. \oici le strict minimum pour un programmeur ‘+ un éditeur de texte pour écrire le code source du programme. En théorie un logiciel comme le Bloc-notes sous Windows, ou « vi» sous Linux fait faflaire. Vidéal, cest d'avoir un éditeurde texte intelligent qui colore tout seul le code, ce qui vous permet de vous y repérer bien plus facilement ; ‘© un compilateur pour iransformer (« compiler ») votre source en binaire ; ‘+ un débogueur pour vous aider traquer les erreurs dans votre programme. On n'a malheureusement pas encore inventé le «comecteur » qui corrigerait tout seul nos erreurs. Ceci dit, quand on sait bien se servir du débogueur, on peut facilement rotrouver ses erreurs ! A priori, sivous étes aventutiers, vous pouvez vous passer de débogueur Mais bon, je sais pertinemment que vous ne tarderez pas d en avoir besoin. :-) ‘A partir de maintenant on a deux possibilites ‘soit on récupére chacun de ces trois programmes séparément. Cest la méthode la plus compliquée, mais elle fonctionne, Sous Linuxen particulier, bon nombre de programmeurs préférent utiliser ces trois programmes séparément. Je ne détaillerai pas cette méthode ic, je vais plut6t vous parler de la méthode simple ; + soit on utilise un programme « trois-en-un » (comme les liquides vaisselle, oui, oui) qui combine éditeur de texte, compilateur et débogueur Ces programmes « trois-en-un » sont appelés IDE, ou encore « Environnement de développement ». existe plusieurs environnements de développement. Au début, vous aurezpeut-étre un peu de mal a choisir celui qui vous, plait. Une chose est siie en tout cas : vous pouvez éaliser n'importe quel type de programme, quel que soit [IDE que vous choisissez. Choisissez votre IDE Ima semblé intéressant de vous montrer quelques IDE pari les plus connus. Tous sont disponibles gratuitement. Personnellement, je navigue un peu entre tous ceweli et jutilise MIDE qui me plait selon le jour. + Un des IDE que je prfre s'appelle Code::Blocks. Il est gratuit et fonctionne sur la plupart des systémes d'explotation Je conseille dutilser celui-ci pour débuter (et mime pour la suite s'il vous plait bien!) Fonctionne sous Windows, Mac et Linux + Leplus célebre IDE sous Windows, c'est celui de Microsoft: Visual C++. Iexste& la base en version payante (chére !), mais ilexiste heureusement une version gratuite intitulée Visual C++ Express qui est vraiment tés bien (ly a peu de differences avec la version payante) Ilest és complet et posséde un puissant module de correction des erreurs (débogage). Fonctionne sous Windows uniquement. + SurMac OS X, vous pouvez utiliser Xcode, généralement foun sure CD dinstallation de Mac OS X. Cest un IDE és apprécié par tous eeuxqui font de la programmation sur Mac Fonetionne sous Mac OS X uniquement. Note pour ks utisateus de Linu: este de nombreux IDE sous Linux mais kes programmers expérinentés MW prsivent partis se passer d4DEet compiler «la main ».cc quiestun peu pls dificil En ee qu nous conceme www.siteduzero.com Apprenez a programmer en C! 15/410 nous allons commencer par utiliser un IDE. Je vous conseille dinstaller Code:Blocks si vous étes sous Linux pour suivre mes explications, © Quel est le meilleurde tous ces IDE? ‘Tous ces IDE vous permettront de programmer et de suivre le reste de ce cours sans probleme. Certains sont plus complets au niveau des options, d'autres un peu plus intuitifs & utiliser, mais dans tous les cas les programmes que vous eréerez seront les ‘mimes quel que soit IDE que vous utilisez. Ce choixn'est done pas si crucial qu'on pourrait le croire Tout au long de tout ce cours, jutiliserai CodeBlocks. Si vous voulez obtenir exactement les mimes écrans que moi, surtout pour ne pas étre perdus au début, je vous recommande done de commeneer par installer Code::Blocks. Code::Blocks (Windows, Mac OS, Linux) Code:Blocks est un IDE bre et gratuit, disponible pour Windows, Mac et Linux. CodeBlocks n'est disponible pour le moment qu'en anglais. Cela ne devrait PAS vous repousser Tutiliser. Croyez-moi, nous aurons quoi qu'llen soit peu affaire aux menus :cest le langage C qui nous intéresse. Sachez toutefois que quand vous programmerez, vous serez de toute fagon confrontés bien souvent & des documentations en anglais. Voili donc une raison de plus pour s'entrainer utiliser cette langue. Télécharger Code::Blocks Rendez-vous sur la page de téléchargements de Code:Blocks. + Sivous étes sous Windows, repérezla section « Windows » un peu plus bas surcette page. Téléchargez le logiciel en prenant le programme qui contient mingw dans le nom(ex : codeb locks~10.05mingw-setup.exe). autre version étant sans compilateur, vous auriez eu du mal. compiler vos programmes ! ‘ Sivous étes sous Linux choisissez le package qui correspond a votre distribution. ‘© Enfin, sous Mac, choisissez_e fichier le plus récent de la liste. Ex : codeblocks-10 .05-p2~mac. zip, Jinsiste dessus :si vous étes sous Windows, téléchargez la version incluant mingw dans le nomdu programm installation. Si vous prenez la mauvaise version, vous ne pourrez pas compiler vos programmes par la suite ! installation est trés simple et rapide. Laissez toutes les options par défaut et lancez le programme. Nous devriez voir une fenétre similare la fig. suivante, Windows 2000 / XP / Vista / 7: File Date Size Download from codeblocks-10.05-setup.exe 27 May 2010 23.3 MB BerliOS NOTE: The codeblocks-10.05mingw-setup.exe file includes the GCC compiler and GDB debugger from MinGW. ‘On distingue 4 grandes sections dans la fenétre, numérotées sur image 1. Ia barre d'outils : elle comprend de nombreuxboutons, mais seuls quelques-uns nous seront réguliérement utiles. 'y reviendrai plus loin ; 2. lalliste des fichiers du projet :c'est a gauche que s‘affiche la liste de tous les fichiers source de votre programme. Notez www.siteduzero.com Apprenez a programmer en C! 16/410 que surcette capture aucun projet n'a &té eréé, on ne voit done pas encore de fichiers & fintérieur de la liste. Vous verez cette section se remplir dans cing minutes en lisant la suite du cours ; 3. lazone principale : c'est i que vous pourrez écrire votre code en langage C; 4, lazone de notification : aussi appelée la « zone de la mort », C'est ici que vous verez les erreurs de compilation s'afficher sivotre code comporte des erreurs. Cela arrive tres réguligrement ! Sie Gemais File Edt View Search Projet Bul Debug Smith Tools Plugins Settings Hep Sager SOoi asi (1) Ph Ol 2] OD ODO laid trot! Z ease BAY | scortbere x a> | Projects| Symbol) 4 > Q Werspace C Code::Blocks Th opensource, cross-platform IDE (2) @) | In thon codeblock org E a Ta atid + flscatvaraPoriZSsiSiaa & a Cn) : - Recent les . | Messages 7” | A coders |, searches | eudlg [But messages |G oxbuce | a> fie Une Message (4) efau Intéressons-nous maintenant a une section particulige de la barre d'outils (fig. suivante). \bus trouverezles boutons suivants (dans fordre): Compiler, Bxécuter,Compiler & Exécuteret Tout. recompiler. Retenezles, nous les utiliserons réguliérement. \bici la signification de chacune des quatre icdnes que vous voyezsur la fig. suivante, dans fordre = + compiler : tous les fichiers source de votre projet sont envoyés au compilateurqui va se charger de eréerun exécutabe Sily a des ereurs -ce quia de fortes chances darver t6t ou tard !-,lexécutable ne sera pas eréé et on vous indiquera les emeurs en bas de Code:Blocks : «+ exéeuter: cette ine lance juste le demier extcutable que vous avez compile. Cela vous penmettra done de tester votre programme et de voirainsice qu'il donne. Dans Tordre, sivous avezbien suivi,on doit dabord compiler, puis exécuter pour testerce que ga donne. On peut aussi utiliser le troisitme bouton + Compiler & exécuter :pas besoin détre un génie pour comprendre que cest la combinaison des deuxboutons précédents. Cest daileurs ce bouton que vous utilserezle ph souvent. Notez que sly a des emeurs pendant la compilation (pendant la génératon de Fenécutable), le programme ne sera pas exécuté. A la place, vous aurez droit une becelle liste diemeurs é comiger ! «+ tout reconstruire : quand vous faites compi Le: Code:Blocks ne recompile en fit que ls fichiers que vous avez mmodifis et non les autres. Paros -je dis bien parfois- vous aurez besoin de demander i Code:Blocks de vous recompile tous ls fichiers. On vera plus tard quand on a besoin de ce bouton, et vous verezplus en détails le www.siteduzero.com Apprenez a programmer en C! 17/410 fonctionnement de la compilation dans un chapitre futur Pour Finstant, on se contente de savoir le minimum nécessaire pour ne pas tout mélanger. Ce bouton ne nous sera done pas utile de suite. Je vous conseille dutlser ks raccourcs putt que de eliquersurles boutons, parce que est quelque chose qu'on ft ‘raiment ne tris souvent. Retenezen particulier qui faut aper sur ®9 pour fie Compi ier # Exécuter. Créer un nouveau projet Pour créer un nouveau projet, c'est trés simple :allezdans lemenu File / New / Project. Dans la fenétre qui s'ouvre (fig. suivante), choisissez Console application. ‘New from templates Projects Category: [ x rs © & @ 2 User templates || AVR Project se & @ DirectX project Dynamic Link brary [| ® & Empty project FLTK project GLFW project z €@ @ GLUT project Iiticht project TIP: Try right-clicking an item 1. Selecta wizard type first on the left 2. Selecta specific wizard from the main window (fiter by categories if needed) 53. Press Go CConme vous pouveze voir, Code:.Blocs propose de lier pas na de types de progres direntsqutiisent des bblothéqucsconnues comme SDL 2D), OpenGL (GD), tet waits (entes) ee Pour Fstan ces cbnes © ssresssistSie crests eon pases sur vote ontnat vous ne pune ne pos fire mureher Nous nous hndesserons Ages autes types de programmes ben pls lard En atendant faa vous conterter de « Console», car vous navezpas encore ke nven nécessaie pour cir es utes types de programmes Cliquez sur Go pour eréer le projet. Un assistant s‘ouvre. Faites Next, cette premire page ne servant a rien ‘On vous demande ensuite si vous allez faire du C ou du C+ (fig. suivante) :répondez« C». www.siteduzero.com Apprenez a programmer en C! Console application Lakery ety On vous deman: Please select the language you want to use. Please make a selection cH \de le nomde volte projet (fig. suivante) et dans quel dossier les fichiers source seront enregistrés. Console application Lakery ety Please select the folder where you want the new project tobe created as well as its ttle Project tte ‘manpragramme Folder to create projectin: C\Users\Mateo Frojets\ aa) Project fiena ‘monprogramme.cbp Resulting flename: C\Users\Mateo Projets monprogramme yronprogramne 18/410 Enfin, la demigre page (fig. suivante) vous pemmet de choisir de quelle fagon le programme doit étre compilé. Yous pouvez laisser les options par défaut, ca n'aura pas dincidence sur ce que nous allons faire dans limmédiat (veillez ce que la case Debug ou Release au mo it cochée). www.siteduzero.com Apprenez a programmer en C! 19/410 Console application —— lees] & Console Please select the compiler to use and which configurations ‘you want enabledin your project. Compier: WU SCC Comper. [create Debug" configuration: Debug "Debug" options Output dir. bin\pebug\ Objects output dr: obj\Debual\, Create "Release" configuration: Release “Release” options output di. bin Release Objects output dr.: obj\Release\ Cliquezsur Finish, c'est bon! Code:Blocks vous créera un premier projet avec déja un tout petit peu de code source dedans. Dans le cadre de gauche « Projects », développez larborescence en cliquant sur le petit « +» pourafficher la liste des fichiers du projet. \ous devriez avoirau moins un main .c que vous pourrez ouvriren double-cliquant dessus. Vous voila parés ! Visual C++ (Windows seulement) Quelques petits rappels sur Visual C++ ‘+ cest MDE de Microsoft; ‘lest 4 a base payant, mais Microsoft a sorti une version gratuite intitulée Visual C+ Express ‘+ ilpemet de programmer en C er en C+ (et non pas seulement en C++ comme son nomle laisse entendte). "Nous allons bien entendu voir ici la version gratuite, Visual C++ Express (attention, il n'est compatible avec Windows 7 qu’a partir de la version 2010) www.siteduzero.com Apprenez a programmer en C! 20/410 Pagededémerage > Recon CO WVisual C++-2010 Eres Derniéres informations BF) Nowesu pei : a pers Prise en main Gi owen a Bienvenue Apprendre Mie Projets récents [I Fermer la page aprésle chargement du proje Ii Atfcher le page au démariage © Quelles sont les différences avec le « vrai» Visual ? n'y a pas Féditeur de ressources qui vous permet de dessiner des images, des icnes, ou des fenétres. Mais bon, ¢a, entre nous, on s‘en moque bien parce qu'on n’aura pas besoin de s'en servir dans ce cours. Ce ne sont pas des fonctionnalités indispensables, bien au contraire. Pour télécharger Visual C++ Express, rendez-vous sur le site web de Visual ( Sélectionnez ensuite Visual C++ Express Frangais un peu plus bas sur la page. ‘Visual C+ Express est en francais et totalement gratuit. Ce n'est done pas une version d'essai limitée dans le temps. Cest une chance d'avoir un IDE aussi puissant que celui de Microsoft disponible gratuitement, ne la aissez donc pas passer Installation installation devrait nonmalement se passer sans encombre. Le programme dinstallation va télécharger la demiére version de ‘Visual sur Intemet. Je vous conseille de laisser les options par défaut I faut vous enregistrer dans les 30 jours. Pas de panique, ¢ ‘gratuit et rapide ; mais il faut le fire. Cliquez sure lien qui vous est donné : vous arrivez sur le site de Microsoft. Connectez-vous avee votre compte Windows Live ID (Equivalent du compte Hotmail ou MSN) ou créez-en un si vous n'en avez pas, puis repondez.au petit questionnaire. ‘On vous donnera & la fin une clé d'enregistrement. Yous devrez recopier cette clé dans le menu? / Inserize le produit, www.siteduzero.com Apprenez a programmer en C 211410 Créer un nouveau projet Pour créer un nouveau projet sous Visual, allezdans le menu Fichier / Nouveau / Projet. Sélectionnez,Win32 dans la colonne de gauche, puis Application console Win32 a droite (fig. suivante). Entrezun ‘nom pour votre projet, par exemple test. Modeles récen 4 Viual Coe cur wins Genera Nom: Emplacement: Nom de zokaton: Tarpon [Pmaeion ] cheer Modeler neta io Pro es2 vse Projet de création d'une application console Win? tet e\documents\vieual studio 2010\Projects test \Validez. Une nouvelle fenétre s'ouvre www.siteduzero.com Apprenez a programmer en C! 22/410 Assistant Application Wind2-test ee Bienvenue dans I'Assistant Application Win32 || Les paramétres actuels du projet sontles suivants : ‘© Appication console t ‘ue densemble Paramétres de fepplication Cliquez sur Terminer dans n'importe quelle fenétre pour accepter les paranétres actus Aprés avoir créée projet, consultez son fichier readme.txt pour vous informer sur ses fonctionnalités et sur les fichiers gérérés. — —e SS — Cotte fenétre ne sert pas A grand-chose, Par contre, cliquez sur Paramétres de 1'application dans lacolonne de suche Assistant Application Wind2-test ee Paramétres de l'application || ‘Type dappicaton ‘outer les fichiers dan-téte courants ‘Application Windows Das t Application console R I bu ibiothEque statique Yue densemble Paramétres de Tapplication Options supplémentaires : aiet vide www.siteduzero.com Apprenez a programmer en C! 23/410 \eillez ce que Projet vide soit coché comme sur a fig. suivante. Cliquezenfin sur Zezminer. Ajouter un nouveau fichier source Notre projet est pour instant bien vide. Faites un clic droit sur le dossier Fichiers source situé sur votre gauche, puis allez dans Ajouter / Nouvel élément (fig. suivante), [) Solution test projet) & Fitest Gi Fichiers dien-téte (Gi Fichiers de ressources Nouvel élément. “EDhent eistant.. Nouveau Filtre X | supprimer Renommer Propriétés Une fenétre s'ouvee. Sélectionnez Visual C++ gauche puis Pichier C++ (.cpp) (jesais,on ne fait pas de C++ mis ga n'a pas importance ici), Entrez un nom pour votre fichier : main .c, comme sur la figure suivante. “er par arte ; Recharche Models 2 Genes! Type: Viual C+ Visual Co Ce un fichier contenant da code source [i] Pere cesesty venice www.siteduzero.com Apprenez a programmer en C! 24/410 Cliquezsur 4} outer. Un fichier vide est eréé, je vous invite & lenregistrer rapidement sous le nomdemain.c. Cest bon, vous allez pouvoir commencer a éerire du code ! La fenétre principale de Visual \oyons ensemble le contenu de la fenétre principale de Visual C++ Express (fig. suivante). Ga Fichiers dentate Fichiers de ressources i Fichiers sources E Cotte fenétre ressemble en tous points a celle de CodeBlocks. On va rapidement (re)voir quand méme ce que signifient chacune des parties. 1. Labamre d'outils: tout ce quiily a de plus standard. Ouvrir, enregistrer, enregistrer tout, couper, copier, coer, ete. Par défaut, il semble qu'il ny ait pas de bouton de barre d'outils pour compiler. Yous pouvez ls rajouteren faisant un clic droit surla barre d'outils, puis en choisissant Déboguer et Générer dans la liste Toutes ces icdnes de compilation ont leur équivalent dans les menus Générer et Déboguer. Sivous faites Générer, cela eréera lexécutable (ca signifie « compiler » pour Visual). Si vous faites Deéboguer / Exécuter,on devrait vous proposer de compiler avant diexécuter le programme. F7 permet de générer le projet, et FS de Fexécuter. 2. Dans cette zone trts importante vous voyeznommalement la liste des fichiers de votre projet. Cliquez sur Tonglet Explorateur de solutions en bas, sice n'est déja fit. Vous devriez voir que Visual crée déja des dossiers pour séparer les différents types de fichiers de votre projet (sources, en-téte et ressources). Nous verrons un peu plus tard quels sont les différents types de fichiers qui constituent un projet. 3. Lapartie principale :c'est i qu'on modifi les fichiers source. www.siteduzero.com Apprenez a programmer en C! 25/410 \Wili, on a fate tourde Visual C++. Nous pouvezallerjeterun cil dans les options (Outi2s / options)siga vous chante, mais n'y passez pas trois heures. I faut dite quily a tellement de cases 4 cocher de partout qu’on ne sait plus trop od! donner de latéte Xcode (Mac OS seulement) lexiste plusieurs IDE compatibles Mac. Ily a CodeBlocks bien si, mais ce nest pas le seul Je vais vous présenter ici IDE le pls célébre sous Mac : Xcode. Cotte section dédige a Xcode est inspirée «vn ‘utorie! paru sur Logicie!Mac.com, avec laimable autorisation de son auteur PsychoH13. Merci Flohw pour la mise & jour des captures. Xcode, oil es-tu ? fo ‘Tous les utilsateurs de Mac OS ne sont pas des programmeurs. Apple fa bien compris et ninstalle pas par defaut d'IDEavee Mac OS. Heurousement, pour ceux qui voudraient programmer, tout est prévu. Fn effet, Xcode (logo en fig. suivante) est disponible sur le MacAppStore. Commencez done parle récupérer icbas. Parailleurs, je vous conseille de mettre en favors ls paye dédise auxdéveloppeurs sur le site d’Apple. Nous yy trouverezune foule d'informations utiles pour le développement sous Mac. \ous pourrez notamment y télécharger plusieurs logiciels pour développer. Nihésitez pas a vous inscrire a TADC (« Apple Development Connection »), c'est gratuit et vous serezainsi tenus au courant des Lancement de Xcode ‘Xcode est IDE e plus utilisé sous Mac, eréé par Apple lui-méme. Les plus grands logiciels, comme iPhoto et Keynote, ont &té codés Paide de Xcode. Cest réellement foutil de développement de choixquand on a un Mac ! La premire chose & faire est de eréer un nouveau projet, alors commengons parca. Allezdans le menu File / New Project. Une fenétre de sélection de projet s'ouvre (fig. suivante). www.siteduzero.com Apprenez a programmer en C! 26/410 Choose a template for your new project: Bios Framevorc Library y omer al Cocon Applicat Gy | SGreeAlescrien i mac osx ‘Apalization ree | Framework & Library |) Aaplcation Puc-in Speirs usin omer a Command Line Tool es “This template buds a command-iine tol. Cancel Previous) (GaNext=a) ‘Allezdans la section Appi ication et sélectionnezCommand Line Tool. Si vous avezune version plus ancienne du logiciel, il vous faudra probablement aller dans la section Command Line utility et sélectionner Standard tool. Cliquez ensuite sur Nese. On vous demandera oi vous voulez enregistrer votre projet (un projet dot toujours étre enregistré 4és le début) ainsique son nom Placez-le dans le dossier que vous voulez. Une fois eréé, votre projet se présentera sous la forme d'un dossier contenant de multiples fichiers dans le Finder. Le fichier & extension . xcodepro} comespond au fichier du projet. Cest lui que vous devrez.sélectionner la prochaine fois si vous souhaitez mouvrie votre projet. La fenétre de développement Dans Xcode, si vous sélectionnezmain .c a gauche, vous devriez avoir une fenétre similaire a la fig. suivante www.siteduzero.com Apprenez a programmer en C! 27/410 &_seode_fik_tai_ View Naga tor Peduct_Window Help BO YO 6 2 i099 om. 22). 1525 ison Pome Fopannescaeor) — a Goo GRD) & La fenétre est découpée en quatre parties, ici numérotées de 1 4 4, 1. La premigre partie est la barre de boutons tout en haut. Le plus important d’entre eux, Run, vous permettra d'exécuter votre programme. 2. Lapartie de gauche comespond a farborescence de votre projet. Certaines sections regroupent les erreurs, les avertissements, etc. Xcode vous place automatiquement dans la section la plus utile, cele qui porte le nomde votre projet. 3. La tioisiéme partie change en fonction de ce que vous avez sélectionné dans la partie de gauche. Ici, on a le contenu de notre fichiermain..c 4. Enfin, la quatriéme partie affiche le résultat de fexécution du programme dans la console, lorsque vous avezcliqué sur Ajouter un nouveau fichier ‘Au début, vous naurezquun seul fehier source (nan .c),Cependant, plas loin dans le cous, e vous emanderai de créer de nouveaus fichiers source lorsque nos programmes deviendront pls gros Pour enéerun nouveau fichier source sous Xcode, rendez-vous dans lemenu File / New Pile Un assistant vous demande quel type de fichier vous voulezréer. Rendez-vous dans la section Mac OS X/C and C++ et sélectionnezC File (FichierC). \ous devtiez avoir sous les yeuxla fig. suivante, www.siteduzero.com Apprenez a programmer en C! Choose a template for your new file: 28/410 Bios . ene h jaa ea Saas a i Mac Os x Cocoa Header File User Interface ‘Core Data Resource Other 4 s 9 CH Ce File Cc Crile AC hile Cancel ‘Nous devrez donner un noma votre nouveau fichier (ce que vous voulez). Lextension, ell, doit ester c. Parfois - nous le verrons plus loin il faudra aussi créer des fichiers .h (mais on en reparlera).La case Acocher Also create fichier.h est i pour ga. Pour le moment, elle ne nous intéresse pas, Cliquez ensuite sur Finish. Cest fait ! Notre fichier est eréé et ajouté a votre projet, en plus demain. c. ous étes maintenant préts & programmer sous Mac ! En résumé ‘+ Les programmeurs ont besoin de trois outils : un éditeur de texte, un compilateur et un débogueur. + est possible cinstaller ces outils séparément, mais est courant aujourd’hui davoir un package trois-en-un que fon appelle IDE, environnement de développement. + Code:Blocks, Visual C+ et Xcode comptent parm les IDE es plus célébres www.siteduzero.com Apprenez a programmer en C! 29/410 Votre premier programme On a préparé le tema jusqutci, maintenant i seri bien de commencera programmer un peu, qu’en dites-vous ? Cestjustement Tobjectide ce chapitre! A ln fin de celtic, vous aurez néussia créer votre premier programme ! Bon d'accord, ce programme sera en noir et blanc et ne saura que vous dire bonjour il semblera done complétement inutile mais ce sera votre premier; je peux vous assurer que vous en serez fiers. Console ou fenétre ? "Nous avons rapidement parlé de la notion de « programme console » et de « programme fenétre » dans le chapitre précédent. Notre IDE nous demandait quel type de programme nous voulions créer et je vous avais dit de répondre console. I faut savoir quien fait ilexiste deuxtypes de programmes, pas plus ‘+ les programmes avec fenétres ; ‘es programmes en console. Les programmes en fendtres Ce sont les programmes que vous connaissez. La fig. suivante est un exemple de programme en fenétres que vous connaissez siirement. Seen Fichier Etition ffichage Image Couleurs? rie eects Couleurs de base BEES Couleurs petsonnalisées LDDs CL Ci Dani les couleurs persannalisées > Cadone, c'est un programme avee des fenstres. Je suppose que vous aimeriez bien eréer ce type de programmes, hmm ? Eh bien... vous nallez pas pouvoir de suite ! En effet, créer des programmes avec des fenétres en C'est possible, mas... quand on débute, c'est bien trop complique ! Pour débuter, il vaut mieux commencer par eréer des programmes en console. © Mais au fait, quoi ga ressemble un programme en console ? www.siteduzero.com Apprenez a programmer en C! 30/410 Les programmes en console Les programmes console ont été les premiers & apparaitre. A cette époqu pas assez puissant pour eréer des fenétres comme on le fat aujourd'hui Tordinateurne g rait que le noiret blanc et iln'stait Bien entendu, le temps a passé depuis. Windows a rendu Fordinateur « grand public » principalement grice a sa simplicité et au fait qu'lln'utilisait que des fenétres. Windows est devenu tellement populaire qu'aujourd'hui beaucoup de monde quiétait a console, Oui vous la, ne regardez pas derriére vous, je sais que vous vous demandez ce que st! Jaiune grande nouvelle! suivante est une capture dé console n'est pas morte ! En effet, Linuxa remis au goiit du jour futlsation de la console. La fig. an d'une console sous Linux aon SSEentl rant eorecl Bor... Terifant, hein ? Voila, vous avez maintenant une petite idée de ce a quoi essemble une console. Ceci dit, plusieurs remarques ‘+ aujourd'hui on sait afficher de la couleur, tout n'est done pas en noir et blanc comme on pourrait le croire + aconsole est assez peu accueillante pour un débutant ‘© cst pourtant un outil puissant quand on sait le maitriser. Comme je vous tai dit plus haut, c quin'est pas le cas des programmes en mode « fenétre ». er des programmes en mode « console » comme ici, c'est tres facile et idéal pour débuter (ce Notez que la console a évolué : elle peut afficher des couleurs, et rien ne vous empéche de mettre une image de fond. e» on va dire, \ous pouvez avoir une console en faisant Démax fisant Démarver / Exécuter..,et en tapant ensuite cmd. Si, mais elle est un peu... « cach © / Accessoires / Invite de commandes,oubien encore en La fig. suivante représente la maaagnifique console de Windows, Apprenez a programmer en C! 31/410 BH Administrateur : C\Windows\system32\cmd.exe (6/5 aes) Ee copyright 2086 Microsoft Corporation. Tous droits réservés. Ic:\Users\Mateo>, Sivous étes sous Windows, sachezdone que c'est dans une fené étre qui ressemble 4 ga que nous ferons nos premiers programmes. Sijai choisi de commencer par des petits programmes en console, ce n'est pas pour Vous ennuyer, bien au contraire En commencant par faire des programmes en console, ‘ous apprendrez les bases nécessaires pour pouvoir ensuite créer des, fenétres. Soyez done rassurés : dés que nous aurons le niveau pour eréer des fenétres, nous verrons comment en fa Pour n'importe quel programme, il faudra taper un minimum de code. Ce code ne fera rien de particulier mais ilest indispensable. Cest ce « code minimum» que nous allons découvrir maintenant. I devrait servir de base pour la plupart de vos programmes en langage C Selon MIDE que vous avez.choisi dans le chapitre précédent, la méthode pour créer un nouveau projet n'est pas la mime. Reportezvous A ce chapiitre sivous avez oublié comment faire. Roureppel sons CadesBocis (oiest ADEque je vals wiser tout ung de ce conn), fit ler dan meno Pi New / Project,puis choisir Console Application et sélectionner le langage C Code: Blocks a done _g6néreé le minimumde code en langage C dont on a besoin. Le voici Code : C return 0; www.siteduzero.com Apprenez a programmer en C! 32/410 Notez que la ligne Code : C int main() peut aussis'éerire Code : C int main(int arge, char *argv[]) Les deuxécritures sont possibles, mais la seconde (la compliquée) est la plus courante. Jaurai done tendance & utiliser plutot cette demigre dans les prochains chapitres. En ce quinous conceme, que fon utilise Tune ou Fautre des écritures, ¢a ne changera rien pour nous. Inutile done de sy attarder, surtout que nous n'avons pas encore le niveau pour analyser ce que ga signitic. Sivous étes sous un autre IDE, copiezce code source dans votre fichier ma in .c pour que nous ayons le méme code vous et Enregistrezle tout. Oui je sais, on n'a encore rien fait, mais enregistrez quand méne, clest une bonne habitude a prendre. ‘Nommilement, vous n'avez qu'un seul fichier source appelé main .c (le reste, ce sont des fichiers de projet générés par votre IDB, Analysons le code minimal Ce code mininal qu'on vient de voir n'est rien d'autre que du chinois pour vous, jimagine. Et pourtant, moije vois ki un programme console qui afliche un message A Iécran, Iva falloir apprendre a lie tout ga ! ‘Commengons par les deux premiéres lignes qui se ressemblent beaucoup Code : C finclude finclude Ce sont des lignes spéciales que Ton ne voit qu'en haut des fichiers source. Ces lignes sont facilement reconnaissables car elles commencent par un dise #. Ces lignes spéciales, on les appelle directives de préprocesseur (un nomcompligué, n'est-ce pas ?). Ce sont des lignes qui seront lues par un programme appelé préprocesseur, un programme quise lance au début de la conpilation. Oui: comme je vous fai dit plus t6t, ce qu'on a vu au début n'tait qu‘un schéma trés simplifié de la compilation. Ilse passe en réalité plusieurs choses pendant une compilation. On les détaillera plus tard : pour le moment, vous avez juste besoin dinsérer ces lignes en haut de chacun de vos fichiers © COuimas els signitient quoi ces lignes ?Faimenis bien savoir quand méme | Le mot include en anglais signitie « inclure » en frangais. Ces lignes demandent d'inclure des fichiers au projet, c'est-a-dire dajouter des fichiers pour la compilation. Iya deuxlignes, donc deux fichiers inclus. Ces fichiers s'appellent stdiioh et std1ib .h. Ces fichiers existent déji, des fichiers source tout préts. On verra plus tard qu'on les appelle des bibliotheques (certains parlent aussi de librairies nis c'est un anglicisme). En gros, ces fichiers contiennent du code tout prét qui permet d'afficher du texte a lécran, www.siteduzero.com Apprenez a programmer en C! 33/410 Sans ces fichiers, écrire du texte Iécran aurait été mission impossible. ordinateur d la base ne sait rien faire, il faut tout lui dire. Vous voyez a galére dans laquelle on est ! Bref, en résumé les deuxpremigres lignes incluent les bibliothéques qui vont nous permettre (entre autres) d'afficher du texte & Téeran assez « facilement » Passons a la suite. La suite, c'est tout ¢a Code : C int main() ( print£("Hello world!\n"); return 0 Ce que vous voye7 li, c'est ce qu’on appelle une fonction. Un programme en langage C est constitué de fonctions, il ne contient 4quasiment que ¢a. Pour le moment, notre programme ne contient donc qu'une seule fonction. Une fonction permet grosso modo de rassembler plusieurs commandes 4 fordinateur Regroupées dans une fonction, les commandes permettent de faire quelque chose de précis. Par exemple, on peut créerune fonction ouvrir fichier qui contiendra une suite instructions pour fordinateur lui expliquant comment ouvrir un fichier. Lavantage, clest qu'une fois la fonction éerite, vous n'aurez plus qu’a dire ouvrir fichier, et votre ordinateur saura ‘comment faire sans que vous ayez tout répéter! Sans rentrer dans les détails de la construction d'une fonction (il est trop t6t, on reparlera des fonctions plus tard), analysons quand méme ses grandes parties. La premiére ligne contient le nomde la fonction, c'est le deuxiéme mot. ‘Oui :notre fonction s‘appelle done ma in. Cest un nomde fonction particulier qui signifie « principal ». main est la fonction principale de votre programme, c'est toujours par Ia fonction main que le programme commence. Une fonction a un début et une fin, délimités pardes accolades { et ). Toute la fonction main se trouve done entre ces accolades. Si vous avez bien suivi, notre fonction main contient deux lignes Code : C printf ("Hello world! \n"); return 0; Ces lignes 4 Tintérieur d'une fonction ont un nom, On les appelle instructions (ca en fait du vocabulaire qui va falloirretenit) ‘Chaque instruction est une commande a ordinateur. Chacune de ces lignes demande a ordinateur de faire quelque chose de précis ‘Comme je vous Fai dit un peu plus haut, en regroupant intelligenment (c'est le avail du programmeut) les instructions dans des fonctions, on erée sion veut des « bouts de programmes tout préts ». En utilisant les bonnes instructions, rien ne nous ‘empécherait done de eréerune fonction ouvyir fichier comme je vous Iai explique tout a Theure, ou encore une fonction avancer_personnage dans un jeu vidéo, par exemple. Un programme, ce n'est au bout du compte rien d'autre qu'une série d'instructions : « fais ceci», « fais cela ». Nous donnez des ordres A votre ordinateur et illes exécute. Du moins si vous favezbien dressé. Lapremite ligne sprintf ("Hello world!\n") ; demande é afficherle message « Hello world! » a lécran. Quand votre programme arrivera a cette ligne, il va done afficher un message a Iécran, puis passer a instruction suivante. Passons a Finstruction suivante justement www.siteduzero.com Apprenez a programmer en C! 34/410 return 0; Eh bien ga, en gros, ga veut dire que c'est fini (eh oui, déji) Cette ligne indique qu’on arrive a la fin de notre fonction main et demande de renvoyer la valeur 0. © Pourquoi mon programme renvermat-il le nombre 0? En fait, chaque programme une fois terminé renvoie une valeur, par exemple pour dire que tout s'est bien passé. En pratique, 0 signifie « tout s'est bien passé » et n'importe quelle autre valeur signifie « erreur ». La plupart du temps, cette valeur n'est pas ‘vraiment utilisée, mas il faut quand méme en renvoyer une. Votre programme aurait marché sans le return 0, mis on va dire que c'est plus propre et plus sérieuxde le mettre, done on le met. Et voila ! On vient de détaller un peu le fonctionnement du code minimal, Contes, on n'a pas vraiment tout vu en profondeur, et vous devez avoir quelques questions en suspens. Soyez rassurés : toutes ‘vos questions trouveront une réponse petit petit. Je ne peuxpas tout vous divulguer d'un coup, cela ferat trop de choses & assimiler \ous suivez toujours ? Sitel n'est pas le cas, rien ne presse. Ne vous forcez pas A lire la suite. Faites une pause et relisezce début de chapiire a téte reposée. Tout ce que je viens de vous apprendre est fondamental, surtout si vous voulez étre sits de pouvoir suivre apres. ‘Tenez:: comme je suis de bonne huneur, je vous fais un schéma qui récapitule le vocabulaire qu'on vient d'apprendre (fig. suivante). #include ee ; #include Sane) Directives de préprocesseur int main() « printf ("Hello world!\n"); i i spice instructions Fonction Testons notre programme ‘Tester devrait aller vite. Tout ce que vous avez faire c'est compiler le projet, puis Fextcuter (cliquez sur ficbne Build © Run sous Code:;Blocks). Sivous ne lavez pas encore fait, on vous demandera d'enregistrer les fichiers. Faites-le. Sila compilation ne fonctionne pas et que vous avez une erreur de ce type: "My-program - Release" uses an invalid compiler. Skipping... Nothing to be done... Cela signifie que vous avez téléchargé la version de CodeBlocks sans mingw (le compilateur), Retoumez sur ke site de Code:Blocks pour télécharger la version avec mingw. Aprés un temps d'attente insupportable (la compilation), votre premier programme va apparaitre sous vos yeuxtotalement cenvahis de bonheur (ig. suivante) www.siteduzero.com Apprenez a programmer en C! 35/410 Es Process returned @ (Bx@) execution tine See aCe ‘On vous invite est pas transi appuyersurninporte quel endant Mats bon, quand votre vi! Non? Ecrire un message a I'éeran A partir de maintenant, on va moi 2s le code de ce programme minima Nolte mission, si vous facceptez:afichet ke message « Bonjour du clavier pour fermer la fenétre. Notre programme s'arréte alors. Oui je sais, e ! Cest un premier programme, un instant dont vous vous souviendrez toute ‘Comme tout a Theure, une console doit s‘ouvrit. Le message « Bonjour» doit s'afli her dans la console. Ce sera en fait assez simple. Si vous partez,du code quia été donné plus haut, il vous sulfit simplement de remplacer « Hello world! » par « Bonjour » dans la ligne qui fait appela print £ Comme je vous le disais plus tt, EE est une instruction, Elle commande A fordinateur: « Affiche-moi ce message a l'éeran I faut savoirque peint£ est en fait une fonction quia déj gerite par d'autres programmeurs avant vous. Apprenez a programmer en C! 36/410 Les bibliothéques sont en fit des fichiers avec des tonnes de fonctions toutes prétes & lintérieur Ces fichiers-Ba (st dio. et std1ib .h) contionnent la plupart des fonctions de base dont on a besoin dans un programme. stdiio.h en particulier contient des fonctions permettant dafficher des choses & lécran (comme print £) mais aussi de demander a futilsateur de taper quelque chose (ce sont des fonctions que Fon verm plus tad). Dis Bonjour au Monsieur Dans notre fonction nain,on fait done appela la fonction print £, Cest une fonction quien appelle une autre (cs main appelle pint). Vous allez voir que c'est tout le temps comme ga que ga se passe en langage C: une fonction contient des instructions qui appellent d'autres fonctions, et ainsi de suite Done, pour faire appel a une fonction, c'est simple : il suflt décrire son nom, suivi de deux parenthéses, puis un point-virgule Code : C printe(); Cest bien, mais ce n'est pas suffisant. Il faut indiquer quoi écrire & 'éeran. Pour faire ga, il faut donner la fonetion print le tex A afficher. Pour ce faire, ouvrez des guillemets 4 fintérieur des parenthéses et tapez le texte & afficher entre ces guillemets, comme cela avait déja été fait sur le code minimal, Dans notre eas, on va done taper trés exactement Code : C printf ("Bonjour"); Jespére que vous n'avez pas oublié le point-virgule 4 la fin, je vous rappelle que c'est trés important ! Cela permet dlindiquer que Tinstruction s'arréte ka Wici le code source que vous devriez avoir sous les yeux. Code : C finclude finclude int main() i printf ("Bonjour"); return 0; } ‘Ona done deuxinstructions qui commandent dans Fordre a ordinateur 1. affiche « Bonjour» a Péeran ; 2. la fonction main est temminée, renvoie 0. Le programme s'artéte alors La fig. suivante vous montre ce que donne ce programme & Iéeran www.siteduzero.com Apprenez a programmer en C! 37/410 BH C\Users\Mateo\Projets\test\bin\Release\testexe l/s esa Tor Process returned @ (Bx) execution tine sete Ce oe ‘Comme vous pouvez le voir la ligne du « Bonjour» est un peu coliée avec le reste du texte, contrairement & tout a Yheure, Une des solutions pour rendre notre programme plus présentable serait de faire un retour la ligne aprés « Bonjour » (comme si ‘on appuyait sur la touche « Entrée »), Mais bien stir, ce serait trop simple de taper « Entrée » dans notre code source pour qu'une ntrée soit effectu falloir utiliser ce qu’on appelle des caractéres spéciaux. Heeran Ulva. Les caractéres spéciaux Les caractéres sp. sclauxsont des lettres spéciales qui permettent d'indiquer qu'on veut aller la ligne, faire une tabulation, ete Ils sont facies 4 reconnaitre : c'est un ensemble de deux caractéres. Le premier dientre euxest toujours un anti-slash (\),et le second un nombre ou une lettre. Yoici deuxcaractéres spéciauxcourants que vous aurez probablement besoin dlutiliser, ainsi que leur signification * \nrretoura ba ligne (= « Entrée ») © \e Htabulation, Dans notre eas, pour faire une entré il sufft de taper \n pour eréerun retour la ligne. Sije veuxdone faite un retour a la li e juste aprés le mot « Bonjour », je devrais taper Code : C print ("Bonjour\n") ; \otre ordinateur comprend qu'l doit afficher « Bonjour » suivi d'un retour a la ligne ( www.siteduzero.com Apprenez a programmer en C! 38/410 BiH C:\Users\Mateo\Projets\test\bin\Release\testexe l(a aes for a Process returned @ (Bx) execution tine Sete eet Cest déji un peu mieux, non ? @ were: Tout d'abord, bonjour Gérard. Cest une question trés intéressante que vous nous posez i. Je tiens en premier liew 4 vous fliciter pour votre esprit dinitiative, c'est trés bien d'avoir eu Tidée de modifier un peu le programme, Cest en « bidouillant » les programmes que je vous donne que vous allez en apprendre le plus. Ne vous contentez pas de ce que vous lisez, essayez un peu vos propres modifications des programmes que nous voyons ensemble ! Bien ! Maintenant, pour répondre a la question de notre ami Gérard, jai une bien triste nouvelle a vous annoncer : la console de Windows ne gére pas les accents. Par contre la console de Linux, oui. A partir de li vous avez,deuxsolutions. ‘© Passer a Linux. Cest une solution un peu radicale et il me faudrait un cours entier pour vous expliquer comment vous servir de Linux. Si vous n’avez pas le niveau, oubliez-cette possibilité pour le moment. ‘+ Ne pas utiliser d'accents. Cest malheureusement la solution que vous risquez de choisir. La console de Windows a ses defauts, que voulez-vous. Ilva vous falloir prendre Mhabitude d'écrire sans accents. Bien entendu, comme plus tard vous ferez probablement des programmes avec des fenétres, vous ne rencontrerez plus ce probléme-li. Je vous recommande done de ne pas utiliser d'accents temporairement, pendant votre apprentissage dans la console. Vos futurs programmes « professionnels » n'auront pas ce probleme, rassurez-vous, Pour ne pas étre ire sans accent Code : C printé ("Bonjou a Apprenez a programmer en C! 39/410 (On remercie notre ami Gérard pournous avoir soulevéce probleme ! Sidfaventure vous vous appeiez Girard, sachez que je ni rien conte ce prénom. Cet sinplement le prenerprénomavee un accent quinfest passe par ia tte... Er puis bon i faut toujours que quelguun prenne pour kes ates, que voulez vous ! Les commentaires, c'est trés utile ! ‘Avant de teminerce premier chapitre de « véntable » programmation, je dois absohument vous fire découvrir les commentaires. Quel que sot le langage de progranmaton, ona a possibilté dajouer des conmentaies&son code. Le langage Cr'échappe pas ao regke Queest-ce que ga veut dire, « commenter » ? Cola signifie taper du texte au milieu de votre programme pour indiquer ce qu'il fait, quoi ser telle ligne de code, etc. Cest vraiment quelque chose d'indispensable car, méme en étant un génie de la programmation, on a besoin de faire quelques annotations par-ci par-L. Cela permet ‘* de vous retrouverau milieu d'un de vos codes source plus tard. On ne dirait pas comme ¢a, mais on oublie vite comment fonctionnent les programmes qu’on a écrits. Si vous faites une pause ne serait-ce que quelques jours, vous aurez besoin de vous aider de vos propres commentaires pour vous retrouver dans un gros code ‘* sivous donnez votre projet 4 quelqu'un d'autre (qui ne connait a priori pas votre code source), cela lui permettra de se familiariser avec bien plus rapidement ; ‘© enfin, ca va me permettte & moi d'ajouter des annotations dans les codes source de ce cours. Ft de mieux vous expliquer 3 quoi peut servir elle ou tell ligne de code. ly a plusieurs manidres d'insérer un commentaire, Tout dépend de la longueur du commentaire que vous voulez écrie. ‘+ Notre commentaire est court :iltient sur une seule ligne, il ne fait que quelques mots. Dans ce cas, vous deveztaper un suivide votre commentaire. Par exemple // Ceci est un commentair \ous pouvezaussi bien écrire un commentaire seul sur sa ligne, ou bien a droite d'une instruction. Cest diilleurs quelque chose de trés pratique car ainsi, on sait que le commentaire ser indiquer 4 quoi sert la ligne sur laquelle il est. Exemple Code: print£ ("Bonjour"); Cette instruction affiche Bonjour a ‘+ \otre commentaire est long : vous avez beaucoup a dire, vous avez besoin d'écrire plusieurs phrases qui tiennent sur plusieurs lignes. Dans ce cas, vous devez taper un code qui signifie « début de commentaire » et un autre code qui signifie « fin de commentaire » ‘© pour indiquer le début du commentaire :tapez.un slash suivi d'une étoile ( © pour indiquer la fin du commentaire : tapezune étoile suivie d'un slash (* /). \ous écrirez done par exemple Code: /* Ceci e: sur plusieurs lignes */ Reprenons notre code source qui écrit « Bonjour», et ajoutons-Iui quelques commentaires juste pour s'entrainer Code : C www.siteduzero.com Apprenez a programmer en C! 40/410 Ci-dessous, ce sont des directives de préprocesse Ces lignes’ permettent d fichiers que I'on appelle bibliothéques Grace a ces bibliothéques, on disposera de fonctions toutes prétes pour afficher par exemple un message a 1'6: */ finclude finclude us, vous avez ne, appelée a fonction principale du f Clest par cette fonction que tous */ les progranme: her Bonjour int main() ‘ printf ("Bonjour"); return 0; ) Will ce que donnerait notre programme avec quelques commentaires. Oui, ila Tair d'étre plus gros, mais en fait cst le mime que tout a theure. Lors de la compilation, tous les commentaires seront ignorés. Ces commentaires n'apparaitront pas dans le programme final, ils servent seulement aux programmeurs. Normalement, on ne commente pas chaque ligne du programme. Iai dit ete le redirai) que cétait important de mettre des commentaires dans un code source, mais il faut savoir doser : commenter chaque ligne ne servira la plupart du temps rien. A force, vous saurezque le print £ pennet daflicher un message lécran, pas besoin de Findiquer a chaque fos, Le mieuxest de commenter plusieurs lignes a la fois, 'est-A-dire d'indiquer & quoi sert une série d'instructions histoire d'avoirune idée. Apres, sile programmeur veut se pencher plus en detail dans ces instructions, il est assez intelligent pour y arriver tout seul. Retenez done : les commentaires doivent guider le programmeur dans son code source, lui permettre de se repérer. Essayezde ‘commenter un ensemble de lignes plutot que toutes les lignes une par une. Ft pour finir surune petite touche culturelle, voiei une citation tirée de chez IBM Citation Siaprés avoir lu uniquement les commentaires d'un programme vous n'en comprenez pas ke fonctionnement, jetezle tout ! En résumé ‘+ Les programmes peuvent communiquer avec Tutilisateur via une console ou une fenétre. ‘+ lest beaucoup plus facile pour nos premiers programmes de travailler avec la console, bien que celle-ci soit moins attirante pour un débutant. Cela ne nous empéchera pas parla suite de travailler avec des fenétres dans la partie Il, Tout vient point & quisait attendre. ‘+ Un programme est constitué dinstructions qui se terminent toutes par un point-virgule. ‘+ Les instructions sont contenues dans des fonetions qui permettent de les classer, comme dans des boites La fonction main (qui signifie « principale ») est la fonction par laquelle démame votre programme. Cest la seule qui soit obligatoire, aucun programme ne peut étre compilé sans elle. ‘+ pint est une fonction toute préte qui permet d'afficher un message a fcran dans une console. ‘© pint £ se trouve dans une bibliothéque oi Ion retrouve de nombreuses autres fonctions prétes a Templo. www.siteduzero.com Apprenez a programmer en C! 41/410 Un monde de variables Vous savezaflicher un texte a léeran. Trés bien. Ca ne vole peut-étre pas tres haut pour le moment, mais c'est justement parce que vous ne connaissez pas encore ce qu'on appelle les variables en programmation. Le principe dans les grandes lignes, c'est de faire retenir des nombres & Yordinateur. On va apprendre a stocker des nombres dans a mémwite, Je souhaite que nous commencions par quelques explications sur la mémoire de votre ordinateur. Comment fonctionne une ‘mémoire ? Combien un ordinateur posséde-t-ilde mémoites différentes ? Cela pourra paraitre un peu simpliste a certains d'entre ‘vous, mais je pense aussi i ceux qui ne savent pas bien ce qu‘est une mémoie. Une affaire de mémoire ‘Ce que je vais vous apprendre dans ce chapitre a un rapport direct avec la mémoire de votre ordinateur ‘Tout étre humain normalement constitué a une mémoire. Eh bien c'est pareil pour un ordinateur... un détail prés :un ordinateur aplusieurs types de mémoire ! © Pourquoi un ordinateur aurait-il plusieurs types de mémoire ? Une seule mémoire aurait suffi, non ? ‘Non : en fait, le probleme c'est qu’on a besoin d'avoir une mémpire & la fois rapide (pour récupérer une information tres vite) et importante (pour stocker beaucoup de données). Or, vous allez rire, mais jusquiici nous avons été incapables de créer une ‘mémoire qui soit la fois tes rapide et importante. Plus exictement, la mémnire rapide codte cher, on n'en fait done qu'en petites, quantités, Du coup, pour nous arranger, nous avons dé doter les ordinateurs de mémnires trés rapides mais pas importantes, et de _mémoires importantes mais pas trés rapides (vous suivez.toujours ?) Les différents types de mémoire Pour vous donner une idée, voici les différents types de mémoire existant dans un ordinateur, de la plus rapide A la plus lente 1. [es registres : une mémoie ultra-rapide située directement dans le processeur ; 2. la mémoire cache : elle fait le lien entre les registres et la mémoire vive ; 3. la mémnie vive : c'est la mémoire avec laquelle nous allons travaille le plus souvent ; 4, le disque dur : que vous connaissezsiirement, c'est la qu'on enregistre ls fichiers. ‘Comme je vous lai dit, jai classé les mémoires de la plus rapide (les registres) la plus lente (le disque dur). Sivous avez bien Suivi, vous avez compris aussique la mémoire la plus rapide était la plus petite, et la plus lente la plus grosse. Les registres sont done a peine capables de retenir quelques nombres, tandis que le disque dur peut stocker de trés gros fichiers Quand je dis qu'une mémoire est « lente», c'est a [échelle de votre ordinateurbien sir. Eh oui : pourun ordinateur, 8 nillisecondes pour accéder au disque dur, c'est deja trop long ! Que faut-ilretenir dans tout ga? En fait, je souhaite vous situer un peu. Vous savez désommais qu'en programmation, on va surtout travailler avec la mémoire vive. ‘On verra aussi comment lire et éerire sur le disque dur, pour lite et créer des fichiers (mais on ne le fera que plus tard). Quant & la _mémoire cache et auxregistres, on n'y touchera pas du tout ! Cest votte ordinateur quis'en occupe. Dans des langages trés bas niveau, comme lassembleur (abrégé « ASM »), on travaille au contraire plutot directement aver les registres. Je fai fait et je peux vous dire que faire une simple multiplication dans ce ngage est un véritable parcours du combatant ! Heureusement, en langage C (et dans la plupart des autres langages de programmation), c'est beaucoup plus facile. faut ajouter une demigre chose trés importante : seul le disque dur retient tout le temps les informations qu'il contient. Toutes les autres mémoires (registres, mémoire cache, mémpire vive) sont des mémpires temporaites : lorsque vous éteignez votre ordinateur, ces mémoires se vident ! www.siteduzero.com Apprenez a programmer en C! 42/410 Heureusement, lorsque vous rallumerezFordnateur, vote disque dur sera toujours li pour rappeler votre ontinateur quiet. La mémoire vive en photos Vis quion va travallr pendant un moment avec la mémoie vive je pense ql serait bien de vous la pésenter ‘On va y aller par zooms successifs. Commengons par votre ordinateur (fg. suivante). \ous reconnaissez le clavier, la sours, Iécran et Funité centrale (la tour. Intéressons-nous maintenant a funité centrale (fig, suivante), le eur de votre ordinateur qui contient toutes les mémoires, Ce quinous intéresse, c'est ce quiily a4 Fintérieur de Tunité centrale. Ouvrons-ta (fig. suivante), www.siteduzero.com Apprenez a programmer en C! 43/410 Cest un joyeux petit bazar. Rassurez-vous, je ne vous demanderai pas de savoir comment tout cela fonctionne. Je veuxjuste que ‘vous sachiez oii se trouve la mémoire vive ki-dedans. Je vous lai encadrée. Je n'ai pas indiqué les autres mémoires (registres et mémoire cache) car de toute fagon elles sont bien trop petites pour étre visibles A Toei nu Wici a quoi resemble une barrette de mémoire vive de plus prés (fig. suivante). ~ La mémoire vive est aussi appelée RAM, ne vous étonnez done pas si parla suite jutilise plutét le mot RAM quiest un peu plus court. Le schéma de la mémoire vive Fn photographiant de plus prés la mémoire vive, on n'y verrait pas grand-chose. Pourtant,ilest trés important de savoir comment 6a fonctionne lintérieur. C'est dailleurs la que je veuxen venir depuis tout & 'heure. Je vous propose un schéma du fonctionnement de la mémoire vive (fig. suivante). Hest trés simplifé (comme mes schémas de www.siteduzero.com Apprenez a programmer en C! 4a/a10 compilation !), mais c'est parce que nous n'avons pas besoin de trop de détails. Si vous retenez.ce schéma, ce sera déja trés bien Adresse Valeur 0 145 1 3.8028322 2 0.827551 3 3901930 3 448 765 900 126 (et des poussiéres) SIs ‘Comme vous le voye7, il faut en gros distinguer deux colonnes. + Ilyales adresses : une adresse est un nombre qui permet A Fordinateurde se repérer dans la mémoire vive. On commence ATadresse 0 (au tout début de la mémoire) et on finit & Tadresse 3 448 765 900 126 et des poussires....Euh, en fait je ne connais pas ke nombre d'adresses quily a dans la RAM, je sais juste qu'ly en a beaucoup. En plus ga dépend de la quantté de mémoire vive que vous avez. Plus vous avez de mémoire vive, plus ily a d'adresses, done plus on peut stocker de choses. + A chaque adresse, on peut stocker une yaleur (un nombre) : votre ordinateur stocke dans la mémoire vive ces nombres pour pouvoir s'en Souvenir parla suite. On ne peut stocker qu’un nombre par adresse ! Notre RAM ne peut stocker que des nombres. © Mais alors, comment fait-on pour retenir des mots ? Bonne question. En fait, méme les lettres ne sont que des nombres pour lordinateur ! Une phrase est une simple succession de nombres. existe un tableau qui fait la correspondance entte les nombres et les lettres. Cest un tableau qui dit par exemple : le nombre 67 correspond d la lettre Y_Je ne rentre pas dans les détails, on aura loccasion de reparler de cela plus loin dans le cours Revenons & notre schéma. Les choses sont en fait trés simples : si lordinateur veut retenit le nombre $ (qui pourrait étre le nombre de vies quill este au personnage d'un jeu),ille met quelque part en mémoire oi ily a de la place et note Fadresse correspondante (par exemple 3 062 199 902). Plus tard, lorsqu'll veut savoir & nouveau quel est ce nombre, il va chercher la « case » mémpire n° 3.062 199 902 ce quily a, et il ‘trouve la valeur... 5! www.siteduzero.com Apprenez a programmer en C! 45/410 \oili en gros comment ca fonctionne. Cest peut- Hinclude int main(int arge, char *argv[]) // Squivalent de int ‘ int nombrebeVies; return 0; } Sivous lancez le programme ci-dessus, vous constaterez avec stupeur... quill ne fait rien Quelques explications ‘Alors, avant que vous ne miétrangliez en croyant que je Vous méne en bateau depuis tout a Theure,laissez-moi juste dire une chose pour na défense. En fait, ise passe des choses, mais vous ne les voyez pas. Lorsque le programme arrive la ligne de la déclaration de variable, i demande bien gentiment a ordinateur s'll peut utiliser un peu d'espace dans la mémoire vive. Sitout va bien, lordinateur repond « Oui bien sar, fais comme chez toi». Généralement, cela Se passe sans problime. Le seul ssouci qu'il pourait y avoir, c'est qu'lln'y ait plus de place en mémoire... Mais heureusement cela arrive rarement, car pour remplir toute la mémoire rien quiavee des ‘int il faut vraiment le vouloir! Soyez done sans erainte, vos variables devraient nommalement étre enéées sans souci Une petite astuce a connaitre: si vous avez plusieurs variables du méme type & déclarer, inutile de faire une ligne pour chaque variable. II vous sufft de séparer kes différents noms de variables par des virgules sur la méme ligne : int nombreDeVies, niveau, ageDuJoueur;. Cela créera tis variables int appelées nombreDeVies, niveau et ageDuJoueur. Et maintenant ? Maintenant qu'on a eréé notre variable, on va pouvoir lui donner une valeur Affecter une valeur 4 une variable Cest tout ce quily a de plus béte. Si vous voulezdonner une valeur la variable nombreDeVies, ilsuffit de procéder comme Code : C nombreDeVies = 5; Rien de plus a faire. Yous indiquez le nom de la variable, un signe égal, puis la valeur que vous voulezy mettre, Ici, on vient de donner la valeur 5 & la variable nombreDeVies. ‘Notre programme complet ressemble done a ceci Code : C www.siteduzero.com Apprenez a programmer en C! 49/410 finclude finclude int main(int arge, char *argv[]) ( int nombrebeVies; nombreDeVies = 5; return 0; } Li encore, rien ne s'affiche & Iéeran, tout se passe dans la mémpire, Quelque part dans les tréfonds de votre ordinateur, une petite case de mémoire vient de prendre la valeur 5. Nest-ce pas magnifique ? ‘On peut s‘amuser sion veut & changer la valeur parla suite Code : C int _nombrebeVies; nombreDeVies = 57 nombreDeVies = 4} nombreDeVies = 3; Dans cet exemple, la variable va prendre d'abord la valeur 5, puis 4, et enfin 3. Comme votre ordinateur est trés rapide, tout cela se passe extrémement vite. Yous n'avezpas le temps de cligner des yeuxque votre variable vient de prendre les valeurs 5,4 et 3...et cay est, votre programme est fini. La valeur d'une nouvelle variable Voici une question trés importante que je veux vous soumettre © ‘Quand on déclare une variable, quel valeura-telle au départ? Fn effet, quand ordinateur lt cette ligne Code : C int nombrebeVies; iIréserve un petit emplacement en mémpire, d'accord. Mais quelle est la valeur de la variable & ce moment-li? Ya+-il une valeur par défaut (par exemple 0)? Fh bien, accrochez-vous : la réponse est non. Non, non et non, iln'y a pas de valeur par défaut. En fat, templacement est réservé nas la valeur ne change pas. On n'efface pas ce qui se trouve dans la « case mémoire ». Du coup, votre variable prend la valeur qui se trouvait avant dans la mémoire, et cette valeur peut étre n'importe quoi ! Sicette zone de la mémoire n'a jamais été modifige, la valeur est peut-étre 0. Mais vous n’en étes pas sis, il pouraittrés bien y avoir le nombre 363 ou 18 4 la place, cest-a-dire un reste d'un vieux programme qui est passé par i avant ! I faut done faire trés attention A ga Si on veut éviter des problémes par a suite. Le mieuxest dinitialser la variable dés qu'on la déclare. Fn C, c'est tout a fait possible. En gros, ga consiste & combiner la déclaration et affectation dune variable dans la méme instruction Code : C www.siteduzero.com Apprenez a programmer en C! 50/410 int nombrepeVies = Ici, la variable nombreDeV ies est déclarée et prend tout de suite la valeur 5. Lavantage, clest que vous étes sis aprés que cette variable contient une valeur comeete, et pas du n'importe quoi. Les constantes arrive parfois que Ton ait besoin d'utiliser une variable dont on voudrait qu'elle garde la méme valeur pendant toute la durée du programme. Cest-i-dire qu'une fois déclarée, vous voudriez que votre variable conserve sa valeur et que personne r'ait le droit de changer ce qu'elle contient. (Ces variables particuliéres sont appelées constantes, justement parce que leur valeur reste constant. Pour déclarer une constante, c'est en fait trés simple : il faut utiliser le mot const juste devant le type quand vous déclarez votre variable. Par ailleurs, il faut obligatoirement lui donner une valeur au moment de sa déclaration comme on vient d'apprendre a le faire. Aprés, il sera trop tard : vous ne pourrez plus changer la valeur de la constante. Exemple de déclaration de constante Code : C const int NOMBRE DE VIES_INITIALES viens de le faire li. Cela nous permet ainsi de distinguer facilement les constantes des variables. Notez qu'on utilise © Ce n'est pas une obligation, mais par convention on écrit les noms des constantes entigrement en majuscules comme je Tunderscore _ a la place de lespace. ‘A part ga, une constante s'utiise comme une variable normale, vous pouvez aflicher sa valeur'si vous le désirez. La seule chose qui change, cest que si vous essayez-de modifier la valeur de la constante plus loin dans le programme, le conpilateur vous indiquera qu'ily a une erreuravee cette constante. Les erreurs de compilation sont affichées en bas de Fécran (dans ce que Jappelle a « zone de la mort », vous vous souvenez”). Dans un tel cas, le compilateur vous afficherait un mot douxdu genre : [Warning] assignment of read-only variable ‘NOMBRE _D#_VIES_INITIALES' (traduction :« Triple idiot, pourquoi tu essaies de modifier la valeur d'une constante ? ») Afficher le contenu d'une variable ‘On sait afficher du texte é 'éeran avec la fonction print t Maintenant, on va voir comment afficher la valeur dune variable avec cette méme fonction, On utilise en fat print de la mime maniére, sauf que fon rajoute un symbole spécial 4 fendroit od fon veut afficher la valeur de la variable. Par exemple Code : C printf£("I1 vous reste $d vies"); Ce « symbole spécial» dont je viens de vous parler est en fait un * * suivid'une lettre (dans mon exemple, la lettre " finclude int main(int arge, char *argv[]) ‘ int nombrebeVies = 5; // Au départ, 1 print£ ("Vous avez $d vies\n", nombreDeVies) printg("**"" BAM ****\nM); nombreDeVies = 4; // 11 vient de perdre une vie ! printf("Ah desole, il ne vous reste plus que %d vies maintenant !\n\n", nombredeVies) ; / La il se prend un grand coup sur return 0; } Ca pourrait presque étre un jeu vidéo (il faut juste beaucoup d'imagination), Ce programm afliche ceci a leran Code : Console Vous avez 5 vies sess BAM teee An desole, il ne vous reste plus que 4 vies maintenant ! ‘ous devriez reconnaitre ce qui se passe dans votre programme. www.siteduzero.com Apprenez a programmer en C! 52/410 1. Au départ le joueura 5 vies, on affiche ga dans un print £. 2. Ensuite, le joueur prend un coup surla téte (d'oit le BAM), 3. Finalement iln'a plus que 4 vies, on affiche ga aussiavec un pyint £ Bref,clest plutot simple. Afficher plusieurs variables dans un méme print£ lest possible dafficher la valeurde plusieurs variables dans un seul printf. IIvous suffit pour cela d'indiquer des *d ou des, £ li oi vous voulez, puis dindiquer les variables comespondantes dans le méme ordre, séparées par des virgules. Par exemple Code : C printf ("Vous avez $d vies et vous etes au niveau n° ta", nombreDeVies, niveau); (nombreDeVies), et le second Sd parla seconde variable (niveau). Si vous vous trompezd'ordre, votre phrase ne ‘Allez, un petit test maintenant, Notez que jenléve les lignes tout en haut (les directives de préprocesseur commengant parun #), J vais supposer que vous les mettez chaque fois maintenant Code : C int main(int arge, char *argv[]) ‘ int nombreDeVies = 5, niveau = 1; printf ("Vous avez $d vies nombreDeVies, niveau); vous etes au niveau n° $d\n", return 0; } Ce quiaffichera Code : Console Vous avez 5 vies et vous etes au niveau n* 1 Récupérer une saisie Les variables vont en fait ommencer devenirintéessantes maintenant. On va apprendre & demander Tuiisateur de tperun nombre dans la console. Ce nombre, on va erécupére etl stocker dans une vara Une fos que ga sera ft, on pour aie tout un tas de choses avee, vous vemez Pour demander a Iutilisateur d'entrer quelque chose dans la console, on va utiliser une autre fonction toute préte : scant. Cotte fonction ressemble beaucoup a pz int £. Nous devez mettre un format pour indiquer ce que Tutilisateur doit entrer (un int, un £10¢,..) Puis vous devez ensuite indiquer le nom de la variable qui va recevoir le nombre. Noici comment faire par exemple www.siteduzero.com Apprenez a programmer en C! 53/410 Code : € int age secant (" On doit mettre le “c entre guillemes. Par ailleurs, il faut mettre le symbole & devant le nomde la variable qui va recevoir la valeur. © Buh, pourquoi mettre un & devant le nomde la variable ? 1, il va falloirque vous me fassiez confiance. Sije dois vous expliquer ¢a tout de suite, on nest pas sortis de Fauberge, croyez- Que je vous rassure quand méme : je vous expliquerai un peu plus tard ce que signifie ce symbole. Pour le moment, je choisis de ze pas vous lexpliquer pour ne pas vous emrouiller, c'est done plutat un service que je Vous rends li! ‘Attention, ily a une petite divergence de fommat entre print-£ et scanf ! Pour récupérerun float est le format "5 £ quil faut utiliser, mais pourle type double cest le format "16" Code : C double poids = 0; scanf("S1£", &poids: Revenons & notre programme. Lorsque celui-ci anive a un scant, ilse met en pause et attend que Tutilisateur entre un nombre. Ce nombre sera stocks dans la variable age \oici un petit programme simple qui demande lige de Tu jsateuret quile luiafliche ensuite Code : C int main(int arge, char *argv[]) ‘ int age On initialise 1a variable 4 0 printf£("Quel age avez-vous ? "); scanf("Sd", gage); // On demande d'entrer 1'age avec scant print£("Ah ! Vous avez done $d ans !\n\n", age); return 0; } Code : Console Quel age avez-vous ? 20 Ah | Vous avez done 20 ans ! Le programme se met done en pause aprés avoir affiché la question « Quel age avez-vous ?». Le curseur appara Yécran, vous devez taper un nombre entier (votre Age). Tapez ensuite sur « Entrée » pour Valider, et e programme continuera & s'exécuter. Ici, tout ce quill fait aprés c'est afficher la valeur de la variable age a Féeran (« Ah ! Vous avez done 20 ans !». www.siteduzero.com Apprenez a programmer en C! 54/410 Wili, vous avezcompris le principe. Grice 4 la fonction scan£,on peut done commencer a interagir avec Tutilisateur ‘Notez que rien ne vous empéche de taper autre chose qu'un nombre entier sivous rentrezun nombre décimal, comme 2.9, il sera automatiquement tronqué, cest-i-dire que seule la partie entigre sera conservée. Dans ce cas, c'est le nombre 2 qui aurait été stocké dans la variable ; sivous tapez des lettres au hasard (« ééydf»), la variable ne changera pas de valeur. Ce qui est bien ici, est qu'on avait initialisé notre variable & O au début. De ce fait, le programme affichera « 0 ans » sia n'a pas marché. Sion n’avait pas, initialisé la variable, le programme aurait pu afficher n'importe quoi! En résumé Nos ondinateurs possédent plusieurs types de mémpire. De la plus rapide 4 la plus lente : les registres, la mémoire cache, a mémoire vive et le disque dur Pour « retenir » des informations, notre programme a besoin de stocker des données dans la ménpire. Il utilise pour cela la mémoire vive. Les rogistres et la mémoire cache sont aussi utilisés pour augmenter les performances, mais cela fonctionne automatiquement, nous n'avons pas & nous en préoccuper. Dans notre code source, les variables sont des données stockées temporairement en mémoire vive. La valeur de ces données peut changer au cours du programme. A Topposé, on parle de constantes pour des données stockées en mémoire vive. La valeur de ces données ne peut pas changer. existe plusieurs types de variables, qui occupent plus ou moins d'espace en mémoire. Certains types comme int sont prévus pour stocker des nombres entiers, tandis que d'autres comme double stockent des nombres décimaux. Lafonction scant permet de demander [utiisateur de saisir un nombre, www.siteduzero.com Apprenez a programmer en C! 55/410 Une béte de calcul Je vous Fai dit dans le chapitre précédent : votre ordinateur n'est en fait qu'une grosse machine A caleuler. Que vous soyezen train d'Scouter de la musique, regarder un filmou jouer 4 un jeu vidéo, votre ordinateurne fait que des caleuls. Ce chapitre va vous apprendre a réaliser a plapart des calculs qu'un ordinateur sat faire. Nous réutiliserons ce que nous venons tout juste dapprendre,a savoir les variables. Lidée, c'est justement de faire des caleuls avec vos variables :ajouter des variables centre elles, les multiplier, enregistrer le résultat dans une autre variable, ete. Méme si vous n'étes pas fan des mathématiques, ce chapitre vous sera absolument indispensable. Les calculs de base faut savoirqu'en plus de n’étre qu'une vulgaire calculatice, votre ordinateur est une calculatrice trés basique puisqu'on ne peut faire que des opérations tres simples addition ; soustraction; multiplication division ; modulo (je vous expliquerai ce que c'est si vous ne savezpas, pas de panique). Si vous voulez faire des opérations plus compliquées (des carés, des puissances, des logarithmes et autres joyeusetés) il vous faudra les programmer, clest-i-dire expliquer a l'ordinateur comment les faire. Fort heureusement, nous vertons plus loin dans ce chapitre qui existe une bibliothéque mathématique livrée avec le langage C qui contient des fonctions mathématiques toutes prétes. \ous n'aurez.done pas a les réécrie, a moins que vous souhaitioz volontairement passer un sale quart dheure (ou que vous soyez prof de maths), \oyons done addition pour commence. Pour faire une addition, on utilise le signe + (sans blague !), Vous devez mettre le résultat de votre calcul dans une variable. On va done par exemple eréer une variable vesultat de type int et faite un caleul Code : C int resultat = 0; resultat = 5 + 3; Pas besoin 'tre un pro du calcul mental pour deviner que la variable vesu1tat contiendra la valeur 8 aprés exécution, Bien sir, rien ne saffiche a lécran avee ce code. Si vous voulez voir la valeur de la variable, rajoutezun pr int-£ comme vous savez maintenant si bien le faire Code : C prints("5 + 3 = $4", resultat); A Técran, cela donnera Code : Console \oili pour faddition Pour les autres opérations, cst la mime chose, seul le signe utilisé change (voir tab. suivante) Signes www.siteduzero.com Apprenez a programmer en C! 56/410 Addition | + Soustraction | — ‘Multiplication | « Division / Module Sivous avez déja utilisé la calculatrice sur votre ordinateur, vous devriez connaitre ces signes. ILn'y a pas de difficulté particuligre pour ces opérations, 4 part pour les deux demiéres (la division et le modulo). Nous allons done parler un peu plus en détail de chacune d'elles La division Les divisions fonctionnent nommalement sur un ordinateur quand iln'y a pas de reste. Parexemple, 6 / 3 font 2, votre ordinateur vous donnera la réponse juste, Jusque-i pas de souci Mais prenons maintenant une division avec reste comme 5/2... Le résultat devrait étre 2.5. Bt pourtant ! Regardez-ce que fait ce code Code : C int resultat resultat = 5 printf ("5 / Code : Console ly aun gros problime. On ademandé 5 / 2, on ‘attend 4 avoir? et fondinateur nous dit que ga fait 2! ly a anguille sous roche. Nos ordinateurs seraient-ils stupides a ce point ? En fait, quand il voit les chiflies 5 et 2, votre ordinateur fait une division de nombres entiers (aussi appelée « division euclidienne »). Cela veut dire qu'il tronque le résultat, ilne garde que la parte entiére (le 2). © Hé mais je sais pourquoi ! Cest parce que resultat est un int ! Siga avait été un double, ilaurait pu stocker un nombre décimal a lintérieur ! Fh non, ce n'est pas la raison ! Essayez le méme code en transformant juste resultat en double, et vous verrez qu'on vous affiche quand méme 2. Parce que les nombres de Fopération sont des nombres entiers, ordinateur répond par un nombre entier Sion veut que fordinateur affiche le bon résultat, il va falloir transformer les nombres 5 et 2 de Topération en nombres décimaux, Cest-a-dire écrire 5,0 et 2.0 (ce sont les mémes nombres, mais fordinateur considére que ce sont des nombres décimaux, done il fait une division de nombres décimaux) Code : C double resultat resultat = 5.0 printf ("5 / 2 resultat); www.siteduzero.com Apprenez a programmer en C! 57/410 Code : Console 5 / 2 = 2.500000 Li, le nombre est comect. Bon :ilaffiche des tonnes de zéros derriére sia lui chante, mais le résultat reste quand méme correct. Cotte propriété de la division de nombres entiers est ts importante. I faut que vous reteniez que pour un ordinateur: Cest un peu suprenant, mais c'est sa fagon de calculer avec des entiers. Sivous voulezavoir un résultat décimal, il faut que les nombres de lopération soient décimaux: * 50/20=25; + 10.0/3.0= 3.33333; + 40/ 50-08. Fn fait, en faisant une division d'entiers comme 5 / 2, votre ondinateur répond a la question « Combien y a-t-il de fois 2 dans le nombre 5». La réponse est deux fois. De méme, « combien de fois y a-t-ile nombre 3 dans 10? » Trois fois. Mais alors me direz-vous, comment on fait pour nécupérer le reste de la division ? Cest li que super-modulo intervient. Le modulo Le modulo est une opération mathématique qui permet diobtenirle reste d'une division. Cest peut-étre une opération moins connue que les quatre autres, mais pour votre ordinateur ¢a reste une opération de base... probablement pour justement combler le probleme de la « division d'entiers » quon vient de voir. Le modulo, je vous Fai dit tout a Mheure, se représente parle signe Voici quelques exemples de modulos © 5% 2=1; 2 4% 3-2; 4% Lemodulo 5 * 2estlereste dela division S / 2, cesti-dire 1. Lordinateurcaleule que 5 = 2 * 2 + 1 (estee Ile reste, que le modulo renvoie), Deméme,14 © 3, lecaleulest14 = 3 * 4 + 2 (modulo renvoie le2).Enfin, pour 4 © 2, ladivision tombe juste, iln'y a pas de reste, done modulo renvoie 0. Wilt, n'y a tien & ajouter au sujet des modulos. Je tenais juste & Fexpliquer 4 ceuxqui ne connaitraient pas. En plus jai une bonne nouvelle : on a vu toutes les opérations de base. Finis les cours de maths ! Des calculs entre variables Ce qui serait intéressant, maintenant que vous savez fare les cing opérations de base, ce serait de s'entrainer fare des calculs centre plusieurs variables. En effet, rien ne vous empéche de faire Code : C resultat = nombrel + nombre2; www.siteduzero.com Apprenez a programmer en C! 58/410 Cotte ligne fait la somme des variables nombre! et nombe2, et stocke le résultat dans la variable resultat. Ei clest i que les choses commencent a devenir trés intéressantes. Tene, il me vient une idée. Vous avez maintenant déja le niveau pour raliser une mini-calculatrice. Si, si, je vous assure ! Imaginezun programme qui demande deuxnombres 4 lutilisateur. Ces deuxnombres, vous les stockez dans des variables. Ensuite, vous faites la some de ces variables et vous stockez le résultat dans une variable appelée resultat. Nous n'avez plus qu‘a afficher le résultat du calcul i 'écran, sous les yeux bahis de l'utilisateur qui n'aurait jamais ét& capable de calculer cela de tte aussivite, Exsayezde coder vous-mémes ce petit programme, c'est facile et ga vous entrainera ! Laréponse est ci-dessous, Code : C int main(int arge, char *argv[]) ( int vesultat = nombrel = 0, nombre2 printf("Entrez le nombre 1: "); scanf("Sd", snombrel); printf ("Entrez le nombre 2: "); scanf("Sd", snombre2); result: nombrel + nombre2; Et on affiche 1'addition a 1'écran + printf ("td + $d = $d\n", nombrel, nombre2, resultat); return 0; Code : Console Entrez le nombre 1 Entrez le nombre 2 30 + 25 = 55 Sans en avoir air, on vient de faire li notre premier programme ayant un intérét. Notre programme est capable d'additionner deux nombres et dafficher le résultat de Topération ! \ous pouvez essayer avec n'importe quel nombre (duu moment que vous ne dépassez pas les limites dun type int), vowre ondinateur effectuera le calcul en un éclair. Encore heureux parce que des opérations comme ¢a, il doit en faire des milliards en une seule seconde ! Je vous conseille de faire la méme chose avec les autres opérations pour vous entrainer (soustraction, multiplication...). Vous ne devriez pas avoir trop de mal-vu quiily a juste un ou deuxsignes a changer. Yous pouvez aussi ajouter une troisigme variable et faire laddition de trois variables a la fois, ga fonctionne sans probléme Code : C resultat = nombrel + nombre2 + nombre3; www.siteduzero.com Apprenez a programmer en C! 59/410 Les raccourcis ‘Comme promis, nous n'avons pas de nouvelles opérations a voir. Ft pour cause ! Nous les connaissons deja toutes. Cest avec ces simples opérations de base que vous pouvez tout créer. IIn'y a pas besoin d'autres opérations. Je reconnais que c'est difficile Aavaler se dire qu'un jeu 3D ne fait rien autre au final que des additions et des soustractions, pourtant... c'est la stricte vérit Ceci tant, il existe en C des techniques pemmettant de raccourcirIécriture des opérations, Pourquoi utiliser des raccourcis ? Parce que, souvent, on fait des opérations répéttives. Nous allez voir ce que je veuxdire par li tout de suite, avec ce qu'on appellelinerémentation. L'incrémentation Vous verrez que vous serez souvent amenés & ajouter | une variable. Au fur et & mesure du programme, vous aurez des variables qui augmentent de I en 1 Imaginons que votre variable s'appelle nombre (nomtrés original, n'est-ce pas ?). Sauriez-vous comment faire pourajouter 1 cette variable, sans savoir quel est le nombre qu'elle contient ? Voici comment on doit faire Code : C nombre = nombre + 1; Que se passe-tilici? On fait le caleul nombre + 1, et on range ce résultat dans la variable... nombre ! Du coup, sinotre variable nombre vabit 4, elle vaut maintenant 5. Sielle valait 8, elle vaut maintenant 9, ete, Cotte opération est justement répétitive. Les informaticiens étant des gens particuligrement fainéants, ils n'avaient guére envie de taper deux fois le méme nomde variable (ben oui quoi, c'est fatigant !). Ils ont done inventé un raccourci pour cette opération qu'on appelle "inerémentation. Cette instruction produit exictement le mime résultat que le code qu'on vient de voir Code : C nombret +s Cette ligne, bien plus courte que celle de tout & theure, signifie « Ajoute 14 la variable nombre ». Il suflit d'écrite le nomde la variable a incrémenter, de mettre deux signes +, et bien entendu, de ne pas oublier le point-virgule. Mine de rien, cela nous sera bien pratique par la suite car, comme je vous Tai dit, on sera souvent amenés & faire des incrémentations (cest-i-dire ajouter 1 une variable), Sivous étes perspicaces, vous avez dialleurs remarqué que ce signe ++ se trouve dans le nomdu langage C+. Cest cn fait un clin d'eil des programmeurs, et vous étes maintenant capables de le comprendre ! C+ signifie quill s'agit du langage C« inerémenté », c'est~i-dire sion veut « du langage C un niveau supérieur ». En pratique, le C++ permet surtout de programmer différemment mas il n'est pas « meilleur» que le C: juste different La décrémentation Cest tout bétement inverse de l'incrémentation :on enlive 1 une variable. Méme sion fait plus souvent des incrémentations que des décrémentations, cela reste une opération pratique que vous utiliserez, de temps en tenps. Ladécrémentation, sion écrit en forme « longue» Code : C www.siteduzero.com Apprenez a programmer en C! 60/410 nombre = nombre - 1; Et maintenant en forme « raccourcie » Code : C On Faurait presque deviné tout seul !Au lieu de mettre un ++, vous mettezun ~~: si votre variable vaut 6, elle vauda S aprés Finstruction de décrémentation, Les autres raccourcis existe d'autres raccoureis qui fonctionnent sur le méme principe. Cette fois, ces raccourcis fonctionnent pour toutes les opérations de base: + - * Cola permet li encore e'éviter une répétition du nomd'une variable sur une méme ligne. ‘Ainsi, Sivous voulez multiplier par deuxune variable Code : C nombre = nombre * 2; \ous pouvez lécrire d'une fagon raccourcie comme ceci Code : C nombre *= 2; Sile nombre vaut 5 au dépatt, il vaudra 10 aprés cette instruction, Pour les autres opérations de base, cela fonctionne de la méme maniére. Voici un petit programme d'exemple Code : C int nombre nombre += 4; // nombre vaut 6... nombre -= 3; // bre vaut 3 nombre *= 5; // re vaut nombre /= 3; // aut nombre 3= 33 // vaut 2*#342) (Ne boudez pas, un peu de calcul mental n'a jamais tué personne !) Lavantage ici est qu'on peut utiliser toutes les opérations de base, et qu’on peut jouter, soustraie, miler par n'importe quel nombre Cesont des mccourcs § connafte si vous avezun jourdes lignes répétitves di taper dans un programme. Retenez quand méme que Finerémentation reste de lon le raccourci le phs utilis La biblioth¢que mathématique En langage C, ilexste ce qu'on appelle des bibiothéques « standard », cesta-ie des bibliothéques toujours utilisables. Ce www.siteduzero.com Apprenez a programmer en C! 61/410 sont en quelque sorte des bibliothéques « de base » qu'on utilise t's souvent. Les bibliothéques sont, je vous le rappelle, des ensembles de fonctions toutes prétes. Ces fonctions ont été éerites par des programmeurs avant vous, elles vous évitent en quelque sorte d'avoir a réinventer la roue & chaque nouveau programme. Vous avez déja utilisé les fonctions print £ et scant de la bibliothéque stdio.h. I faut savoir quillexiste une autre bibliothéque, appelée math .), qui contient de nombreuses fonctions mathématiques toutes prétes. Fn effet, les cing opérations de base que fon a vues sont loin d’étre suffisantes ! Bon, ilse peut que vous n'ayez jamais besoin de certaines opérations complexes comme les exponentielles. Si vous ne savez pas ce que c'est, cest que vous étes peut-dtre un peu trop jeunes ou que vous n'avezpas assez fait de maths dans votre vie. Toutefois, a bibliothéque mathématique contient de nombreuses autres fonctions dont vous aurez.trés probablement besoin, ‘Tenez par exemple, on ne peut pas faire de puissances en C ! Comment calculer un simple carré ? Vous pouvez toujours essayer de taper 5$°25 dans votre programme, mis votre ordinateur ne le comprendra jamais car il ne sait pas ce que cst... A moins {que Vous le lui expliquiez en lui indiquant la bibliotheque mathématique ! Pour pouvoir utiliser les fonctions de la bibliothéque mathématique, ilest indispensable de mettre la directive de préprocesseur suivante en haut de votre programme Code : C include Une fois que c'est fait, vous pouvezttiliser toutes les fonctions de cette bibliothéque. Jai justement Intention de vous les présenter. Bon :comme ily a beaucoup de fonctions, je ne peuxpas en faire la liste compléte ici. Dine part ¢a vous ferait trop & assimiler, et autre part mes pauvres petits doigts auraient fondu avant la fin de Fécriture du chapitre. Je vais done me contenter des fonctions principales, c'est-i-dire celles quime semblent les plus importantes. Vous n'avez peut-étre pas tous Ie niveau en maths pour comprendre ce que font ces fonctions. Sic'est votre cas, pas dlinquigtude. Lisez juste, cela ne vous pénalisera pas pour la suite. Ceci tant, je vous ofite un petit conseil gratuit : soyezattentifs en cours de maths, on ne dirait pas comme ga, mais en fait ga finit par servir! fabs Cette fonction retoume la valeur absolue d'un nombre, cest-i-dre fy (est la notation mathématique) La valeur absolue d'un nombre est sa valeur positive ‘+ sivous donnez.-53. la fonction, elle vous renvoie $3 ; + sivous donnez.53 4 la fonction, elle vous renvoie 53, En bref, elle renvoie toujours léquivalent positifdu nombre que vous lui donnez. Code : C double absolu = 0, nombre dra 27 absolu = fabs (nombre); Cette fonction renvoie un doub Le, done votre variable absolu doit étre de type double. MW esse aussiunesontion sine appee ads, stud cee fois dans «edb. www.siteduzero.com Apprenez a programmer en C! 62/410 La fonction abs marche de la mime maniére, sauf qu'elle utilise des entiers (int). Ele envoie done un nombre entier de type int et non un double comme fabs. ceil Cotte fonction renvoie le premier nombre entier aprés le nombre décimal qu'on lui donne. Cest une sorte d'arrondi. On arrondit en fait toujours au nombre entier supérieur. Par ewmple, sion lui donne 26.512, la fonction renvoie 27 Cotte fonction s'utilise de la méme manire et renvoie un double Code : C double dessus = 0, nombre = dessus = ceil (nombre); floor Cest linverse de la fonction précédente : cette fois, elle renvoie le nombre directement en dessous. Sivous lui donnez 37291, la fonction £100r vous renverra done 37. pow Cotte fonction permet de calculer la puissance d'un nombre. Yous devez ui indiquer deux valeurs : le nombre et la puissance & laquelle vous voulez Iélever. Voici le schéma de la fonction Code : C pow(nombre, puissance); Par exemple, « 2 puissance 3» (que lon écrit habituellement 23 sur un ordinateur), cest le caleul2* 2* 2, ce qui fait § Code : C double resultat ) nombre = 2; resultat = pow(nombre, 3); // resultat vaudra 2 \ous pouvez done utiliser cette fonction pour calculer des earrés. Il suflit d'indiquer une puissance de 2. sqrt Cette fonction calcul la acne camtée d'un nombre. lle renvoie un double Code :€ double resultat = 0, nombre - resultat = sqrt(nombre); // resultat vaudra 10 www.siteduzero.com Apprenez a programmer en C! 63/410 sin, cos, tan Ce sont les trois fameuses fonctions utilisées en trigonométre. Le fonctionnement est le méme, ces fonctions renvoient un coub Le. Ces fonctions attendent une valeuren radians. asin, acos, atan Ce sont les fonctions are sinus, are cosinus et arc tangente, d'autres fonctions de trigonométrie. Els s'utiisent de la méme maniére et renvoient un doub Le. exp Cette fonction calcule fexponentielle d'un nombre. Elle renvoie un doub Le (oui, oui, elle a si), log Cette fonction calcul le garthme népérien dun nombre (que ton note aussi « lh») logi0 Cotte fonction calcule le logarithme base 10 d'un nombre. En résumé ‘+ Un ordinateur n'est en fait qu'une calculatrice géante : tout ce quill sat faie, ce sont des opérations. ‘Les opérations connues par votre ordinateur sont trés basiques : Taddition, la soustraction, la multiplication, la division et Je modulo (ils’agit du reste de la division). + lest possible deffectuer des calculs entre des variables. Cest dailleurs ce qu'un ordinateur sat faire de mieux: ile fait bien et vite, {ncrémentation est lopération qui consiste a ajouter | 4 une variable. On écrit variable ‘+ Ladécrémentation est fopération inverse : on retire 14 une variable. On éerit done variable~~. ‘© Pour augmenter le nombre d’opérations connues par votre ordinateur il faut charger la bibliotheque mathématique (c'est- Aire ¥include ), ‘+ Catte bibliotheque contient des fonctions mathématiques plus avancées, telles que la puissance, la racine cartée, arrondi, texponentielle, le logarithme, ete www.siteduzero.com Apprenez a programmer en C! 64/410 Les conditions "Nous avons vu dans le premier chapiitre qu'l existait de nombreux langages de programmation, Certains se ressemblent diilleurs un grand nombre d'entre euxsont inspités du langage C. En fait le langage Ca été créé ily a assez longtemps, ce qui fait quila servi de modéle & de nombreuxautres plus récents, La plupart des langages de programmation ont finalement des resemblances, ils teprennent les principes de base de leurs ainés. En parlant de principes de base : nous sommes en plein dedans. Nous avons vu comment créer des variables, faire des ealeuls avec (concept commun & tous les langages de programmation !), nous allons maintenant nous intéresser aux conditions, Sans conditions, nos programmes informatiques feraient toujours la méme chose ! La condition if... else Les conditions permettent de tester des variables. On peut par exemple dire « sila variable machin est égale & 50, fais ceci Mais ce serait dommage de ne pouvoir tester que légalité ! Il faudrait aussi pouvoir tester sila variable est infSrieure & 50, inférieure ou égale 4 50, supérieure, supérieure ou égale... Ne vous inquiétez pas, le Ca tout prévu ! Pour étudier les conditions i else, nous allons suivre le plan suivant quelques symboles a connaitre avant de commencer, le test if, ketest else, ketestelse if, plusieurs conditions a la fois, quelques erreurs courantes a éviter. Avant de voir comment on écrit une condition de type if... e1se en C, il faut done que vous connaissiez deuxou trois symboles de base. Ces symbokss sont indispensables pour réaliser des conditions. Quelques symboles & connaitre \oici un petit tableau de symboles du langage A connaitre par coeur est égala > est supérieur < est infriour& S=__ | estsupérieurou égala <= __[estinféricurou égala est diffrent de Fates tris attention, ily a bien deuxsymboles ~~ pour tester fégalité. Une emeur courante que font les débutants et de ne mettre quun symbole ~, ce quin'a pas la méme signification en C. Je vous en reparleraiun peu phis bas Un i simple Attaquons maintenant sans plus tarder, Nous alos faire un test simple, qui va dit fordinateur Citation SI la variable vaut ga, ALORS fais ceci En anglais, le mot « si» se traduit par 4. Cest celui qu’on utilise en langage C pour introduire une condition. www.siteduzero.com Apprenez a programmer en C! 65/410 Ecrivezdone un i. Ouvrezensuite des parenthéses a Fintrieur de ces parenthéses vous devrez écrre votre condition, Ensuite, ouvrezune accolade ( et fermez-la un peu plus loin }. Tout ce qui se trouve & lintérieur des accolades sera exécuté ‘uniquement sila condition est vérifie. Cola nous donne done a éerire Code : C 4f (/* Votre condition */) i } ructions a exécuter si 1a condition est vraie Ala place de mon commentaire « Votre condition », on va écrire une condition pour tester une variable. Par ewmple, on pourrait tester une variable age qui contient votre age. Tenez pour s'entrainer, on va tester si vous étes majeur, dite si votre ge est supérieur ou égal A 18 Code : C 4f (age >= 18) i printf ("Vous etes majeur 1"); } Le symbole >= signifie « supérieur ou égal », comme on I'a vu dans le tableau tout 4 theure Siln'y a qulune instruction entre les accolades (comme c'est le cas ici), alors celles-ci deviennent facultatives. Je recommande néanmoins de toujours mettre des accolades pour des raisons de clarté. Tester ce code Sivous voulez tester les codes précédents pour voir comment le 4£ fonctionne, ilfaudra placer le 4£ 4 lintérieur dune fonction main et ne pas oublier de déclarer une variable age a laquelle on donnera la valeur de notre choix. Cola peut paratre évident pour certains, mais plusieurs lecteurs visiblement perdus miont encourage A ajouter cette explication. Voici done un code complet que vous pouveztester Code : C finclude finclude int main(int arge, char *argv[]) ( int age = if (age >= 18) ‘ printf ("Vous etes majeur !\n"); ) return 0 www.siteduzero.com Apprenez a programmer en C! 66/410 Ici, la variable age vaut 20, done le « Nous étes majeur!» s'affchera. Essayez de changer la valeur initiae de la variable pour voir: Mettez par exemple 15 : a condition sera fausse, et done « Nous étes ‘mujeur !» ne s‘affichera pas cette fos. Utilisezce code de base pour tester les prochains exemples du chapitre. Une question de propreté La fagon dont vous ouvrez les accolades n'est pas importante, votre programme fonctionnera aussi bien si vous écrivez tout sur une méme ligne. Par exemple Code : C if (age 18) { printf ("Vous etes majeur 1"); } Pourtant, méme s'llest possible d'écrire comme ga, c'est absolument déconseillé, En effet, tout écrire sur une méme ligne rend votre code diflicilement lisible. Si vous ne prenez pas dés maintenant Ihabitude daérer votre code, plus tard quand vous éerirez de plus gros programmes vous ne vous y retrouverez plus ! Exsayez done de présenter votre code source de la méme fagon que moi: une accolade sur une ligne, puis vos instructions (précédées d'une tabulation pour les « décaler vers la droite »), puis Faccolade de fermeture sur une ligne. existe plusieurs bonnes fagons de présenter son code source. Ca ne change rien au fonctionnement du programme final, mais c'est une question de « style informatique » si vous voulez. Sivous voyezle cade de quelqu'un d'autre présenté un peu diffSremment, c'est qu'il code avec un style différent. Le principal dans tous les cas étant que le code reste aéré et lisible Le else pour dire « sinon » Maintenant que nous savons faire un test simple, allons un peu plus loin : sie test n'a pas marché (il est faua), on va dire & ordinateur dexécuter d'autres instructions, En frangais, nous allons donc écrire quelque chose qui wessemble a cela Citation SI la variable vaut ga, ALORS fais ceci, SINON fais cela, Isuflt de rajouter le mot e1se aprés Faccolade fermante du i. Petit exemple Code : C if (age ( 18) i l'age est supérieur ov égal 4 18 print£ ("Vous etes majeur 1"); printf ("Ah c'est bete, vous etes mineur !"); Les choses sont assez.simples : sila variable age est supérieure ou égale a 18, on affiche le message « Vous étes majeur !», sinon on affiche « Vous étes mineur » www.siteduzero.com Apprenez a programmer en C! 67/410 Le else if pour dire « sinon si» ‘On a vu comment faite un « si» et un « sinon ». Hest possible aussi de faire un « sinon si» pour faire un autre test sile premier test n'a pas marché. Le « sinon si» se place entre le i£ et le else. ‘On dit dans ce cas A fordinateur Citation Sl a variable vaut ¢a ALORS fais ceci, SINON SI la variable vaut ¢a ALORS fais ¢a, SINON fais cela, ‘Traduction en langage C Code : € Af (age >= 18) // Si 1'4ge est supérieur ou égal 4 18 printf ("Vous etes majeur !"); } ise if ( age > 4) // Sinon, si 1'Age est au moins supérieur a 4 ( printf ("Bon t'es pas trop jeune quand mene. } else // Sinon... ( printf ("Aga gaa aga gaa"); // Langage bébé, vous pouvez pas cont Lordinateur fait les tests dans Forde. 1. Dabord ilteste le premier 1 : sila condition est vraie, alors il exécute ce quisse trouve entre les premitres accolades. 2 Sinon, ilva au « sinon sip et fait & nouveau un test: sice test est vrai, alors il exécute les instructions correspondantes entre accolades. 3. Enfin, siaucun des tests préeédents n'a marché, il exécute les instructions du « sinon ». Leelsectleelse if ne sont pas obligatoires. Pour faire une condition, seul un 1 est nécessaite (logique me direz-vous, sinon iln'y a pas de condition !), Notez qu'on peut mettre autant de else if queTon veut. On peut done écrire Citation SI la variable vaut ga, ALORS fais ceci, SINON SI la variable vaut ¢a ALORS fais ¢a, SINON SI la variable vaut ¢a ALORS fais ¢a, SINON SI la variable vaut ¢a ALORS fais a, SINON fais cela, Plusieurs conditions a la fois peut aussi tre utile de faire plusieurs tests A la fois dans votre 4£. Par exemple, vous voudriez tester si lage est supérieur a 18 ET silige est infériour 25. Pour faire cela, il va falloir utiliser de nouveaux symboles www.siteduzero.com Apprenez a programmer en C! 68/410 Test ET Sion veut faire le test que jai mentionné plus haut, il faudra éerire Code : C 4f (age > 18 c& age < 25) Les deuxsymboles «.« signifient ET. Notre condition se dirait en francais : « sige est supérieur 18 ET si fige est inférieur & 25 Test OU Pour faire un OU, on utilise les deuxsignes | |. Je dois avouer que ce signe n'est pas facilement accessible sur nos elaviers. Pour ke taper surun clavier AZERTY francais, il faudra faire Alt Ge + 6. Surun clavier belge, il faudra faire Alt Ge + Imaginons pour lexemple un programme stupide qui décide si une personne a le droit 'ouvrir un compte en banque. C'est bien connu,, pour ouvrir un compte en banque il vaut mieuxne pas étre trop jeune (on va dire arbitrairement qu'il faut avoirau moins 30 ans) ou bien avoir beaucoup d'argent (parce que la, méme a 10 ans on vous acceptera a bras ouverts !). Notre test pour savoir sile client a le droit douvrir un compte en banque pourrait re Code : C if (age i || argent > 100000) printf£("Bienvenue chez PicsouBanque !"); } else ( print£("Hors de ma vue, miserable ! } Ce test n'est valide que sila personne a plus de 30 ans ou sieelle posséde plus de 100 000 euros ! Test NON Le demier symbole qu'il nous reste a tester est le point d'exclamation. En informatique, le point d'exclamation signifie « non ». Vous devez mettre ce signe avant votre condition pour dire «si cela n'est pas vrai» Code : C 4f (!(age < 18)) Cela pourrait se traduire par « si la personne n'est pas mineure ». Sion avait enlevé le | devant, cela aurait signifié Finverse :« si la personne est mineure », www.siteduzero.com Apprenez a programmer en C! 69/410 Quelques erreurs courantes de débutant Noubliez pas les deux signes Sion veut tester sila personne a tout juste 18 ans, il faudra éerire Code : C if (age == 18) ( print ("Vous venez de devenir majeur 1"); } N'oubliez pas de mettre deuxsignes « égal» dans un 1, comme ceci Sivous ne mettez,qulun seul signe =, alors votre variable prendra la valeur 18 (comme on Ta appris dans le chapitre sur les variables). Nous ce qu‘on veut faire ici, c'est tester la valeur de la variable, non pas la changer ! Faites trés attention a cela, beaucoup dentre vous n’en mettent qu'un quand ils débutent et forcement... leur programme ne fonctionne pas comme ils ‘voudmaient ! Le poit t-virgule de trop Une autre enwur courante de débutant: vous mettez parfois un point-virgule & la fin de la ligne d'un 4£. Or,un if est une condition, et on ne met de point-virgule qu'é la fin d'une instruction et non dune condition. Le code suivant ne marchera pas comme prévu car ily a un point-virgule la fin du i Code : C Af (age == 18); // Notez le point-virgule ici qui ne devrait PAS t printf ("Tu es tout juste majeur"); } Les booléens, le coeur des conditions ‘Nous allons naintenant enter plus en détails dans le fonctionnement dune condition detype if... else. En effet les conditions font intervenirquelque chose qu'on appelle les booléens en informatique Quelques petits tests pour bien comprendre [Nous allons commencer par faire quelques petites expériences avant d'introduite cette nouvelle notion. Voici un code source trés simple que je vous propose de tester Code : C af) ( printe("C'est vrai"); } else { printf£("Ctest faux"); } Résultat : Code : Console www.siteduzero.com Apprenez a programmer en C! 70/410 Crest vrai © Mais ? On n'a pas mis de condition dans le 4, juste un nombre. Qu’est-ce que ¢a veut dire ? Ca n'a pas de sens. Si,¢aen a, vous allezcomprendre. Faites un autre test en remplagant 1 par 0. Code : C 4 (0) ‘ printf ("C'est vrai"); } else ( printf£("Ctest faux"); } Résultat Code : Console Crest faux Faites maintenant d'autres tests en remplacant le 0 par nimporte quel autre nombre entier, comme 4, 15, 226, 10, 36, ete Qurest-ce qu'on vous répond a chaque fais ? On vous répond : « Cest vrai» Résumé de nos tests : sion met un 0, le test est considéré comme faux, et sion met un | ou nlimporte quel autre nombre, Ie test est vm Des explications s'imposent rfl, chaque fos que vous fates un test dans un ££, ce test renvoie a valeur I s'est vrai et Ost est faux Par exemple Code : C if (age Iei,le test que vous faites est age Supposons que age vaille 23. Alors le test est via, et Fordinateur « remplace » en quelque sorte age >= 28 par | Ensuite, lordinateur obtient (dans sa téte)un 4£ (1). Quand le nombre est, comme on Ta vu, fordinateur dit que la condition est viaie, done ilaffiche « Cest vrai» ! De méme, sila condition est fauss lire les instructions du else. remplace age > 15 parle nombre 0, et du coup la condition est fausse :Tordinateur va Un test avec une variable www.siteduzero.com Apprenez a programmer en C! 71/410 ‘Testez maintenant un autre truc : envoye7 le résultat de votre condition dans une variable, comme si c'Stait une opération (car pour ordinateur, c'est une opération !). Code : C int age int majeur majeur = age >= 18; printf ("Majeur vaut : td\n", majeur); ‘Comme vous le voye7, la condition age >= 18 arenvoyé le nombre | car elle est vraie. Du coup, notre variable ma jeux vaut 1, on vérifie dailleurs cela grice a un print £ qui montre bien qu'elle a changé de valeur. Faites le méme test en mettant age 10 parexemple. Cette fois, a} our vaudra 0 Cette variable majeur est un booléen Retenezbien ceci :on dit qu'une variable & laquelle on fait prendre les valeurs Oct | est un booléen, Et aussiceci Pour étre tout fait exict, 0 = fauxet tous les autres nombres valent vrai (on a eu Foccasion de le tester plus t61). Ceci dit, pour simplifier les choses on va se contenter de n'utiiser que les nombres 0 et 1, pour dire si « quelque chose est fauxou vrai. En langage C, iln'existe pas de type de variable « booléen ». Du coup, on est obligé d'utiliser un type entier comme int pour gérer les booléens Les booléens dans les conditions Souvent, on fera un test 4 surune variable boolgenne Code : C int majeur if (majeur) ( printf("Tu es majeur 1" } else { } printf£("Tu es mineur"); ‘Comme majeur vaut 1, a condition est vraie, done on affiche « Tu es majeur! » Ce quiest trés pratique, c'est que la condition peut étre le facilement parun étre humain. On voit if (majeur), ce quipeut se traduire par « situ es majeur». Les tests sur des booléens sont done faciles A lie et & comprendre, pour peu que vous ayez donné des noms claits 4 vos variables come je vous ai dit dele faire des le début. ‘Tenez, voici un autre test imaginaire Code : C www.siteduzero.com Apprenez a programmer en C! 72/410 4f (majeur && garcon) Ce test signifie « situ es majeur ET que tu es un gargon ». garcon est ici une autre variable boolgenne qui vaut | sivous étes un gargon, et 0si vous étes... une fille ! Bravo, vous avez tout compris ! Les boolgens permettent done de dire si quelque chose est vrai ou faux Cest vraiment utile et ce que je viens de Vous expliquer vous permettra de comprendre bon nombre de choses parla suite. © Petite question : sion fait le test if (majeur ‘Tout a fit, Mais le principe des booléens c'est justement de raccourcir fexpression du 4¢ et de la rendre plus facilement lisible. Avouezque if (ma:jeur) ga se comprend trés bien, non ? 1), ga marche aussi, non ? Retenez done : si votre variable est censée contenir un nombre (comme un Age), fates un test sous la forme if (variable v) Siau contraire votre variable est censée contenir un booléen (c’est-i-dite soit I soit 0 pour dire vraiou faus), faites un test sous lafome if (variable) La condition switch Lacondition i£... else que lon vient de voir est le type de condition le plus souvent utilisé. En fait, n'y a pas 36 fagons de faire une condition en C. Le if... else permet de gérer tous les cas. Toutefois,le Af... else peut s'avérer quelque peu... repétiif: Prenons cet exemple Code : C if (age ( 2 printf£("Salut bebe !" else if (age { } else if (age { } else if (age { } else if (age { } else if (age { } else { } 6) printf£("Salut gamin ! aay printf£("Salut jeune !"); 16) printf£("Salut ado 1"); 1g) printf("Salut adulte !"); printf£("Salut papy !" printf("Je n'ai aucune phrase de prete pour ton age"); Construire un switch Les informaticiens détestent faire des choses répétitives, on a eu Toceasion de le vérifier plus t6t. www.siteduzero.com Apprenez a programmer en C! 73/410 Alors, pour éviter d'avoir a faire des répétitions comme ga quand on teste la valeur d'une seule et méme variable, is ont inventé une autre structure que le if... else, Cette structure particuliére s'appelle witch. Voici un switch basé sur lexemple quion vient de voir : Code : C switch (age) Sane 2: prsnte(tsalut bebe 11 Enek prsnee(salut ganin 1")1 Ereak, consis prsne£ ("salut jeune 1")1 Enek pesnte('salut ado "91 printf("Salut adulte 1" break, printf£("Salut papy !"); break, default: printf("Je n'ai aucune phrase de prete pour ton age "); break; } Imprégnez-vous de mon exemple pour créer vos propres switch. On les utilise plus rarement, mais c'est vrai que clest pratique cara fait (un peu) moins de code a taper. Lidée c'est done décrie switch (maVariable) pour dire « je vais tester la valeur de la variable maVariable ». Yous ‘ouvrez ensuite des accolades que vous refermez tout en bas, Ensuite, a Fintérieur de ces accolades, vous géreztous Ies cas :case 2,case 4,case 5,case ordinateur ira lr les instructions en dessous censées étre réservées auxautres cas ! Linstruction break; commande @ \ous devez mettre une instruction break; obligatoirement & la fin de chaque cas. Sivous ne le faites pas, alors cn fait & Fordinateur de « sortir» des accolades. Enfin, le cas default comespond en fait au ese qu’on connait bien maintenant. Sila variable ne vaut aucune des valeurs précédentes, tordinateur ira lire le default. Gérer un menu avec un switch Le switch est trés souvent utilisé pour faire des menus en console. Je crois que le moment est venu de pratiquer un peu ! Au boulot ! En console, pour faire un menu, on fit des print £ quiaffichent les différentes options possibles. Chaque option est, ‘numérotée, et lutilisateur doit entrer le numéro du menu qui lintéresse. \bici par exemple ce que la console devra afficher : Code : Console www.siteduzero.com Apprenez a programmer en C 741410 a. 2. 3, 4 ve ot Menu Royal Cheese Mc Deluxe Mc Bacon Big Mac ze choix ? ‘Voici votre mission si vous acceptez) : reproduisez ce menu a fade de print £ (facile) ajoutezun scan. pour enregistrer le choix de Futiisateur dans une variable choi xienu, et enfin faites un swi teh pour dire a futlsateur « tu as choisi le menu Royal Cheese » par exemple. ‘Allez, au travail ! Correction \bici a solution (fespére que vous Tavez trouvée !) Code : C finclude finclude int main(int arge, char *argv[]) ‘ int choixMenu; printf ("=== Menu a\n") 5 printf£("1. Royal Cheese\n"); printf£("2. Mc Deluxe\n"); print£("3. Mc Bacon\n") print£("4. Big Mac\n"); print£("\nVotre choix ? scanf("Sd", schoixMenu) ; print£("\n"); switch (choixMenu) { case 1: printf£("Vous avez choisi le Royal Cheese. Bon choix !"); break; print£("Vous avez choisi le Me Deluxe. Berk, trop de print£("Vous avez choisi le Mc Bacon. Bon, ca passe encore ca 70)" break; case 4: printf ("Vous avez choisi faim 1"); break; default: printf£("Vous n'avez pas rentre un nombre correct. Vous ne mangerez rien du tout !"); break; Vous devez avoir tres ) print£("\n\n"); return 0; } www.siteduzero.com

You might also like