Apprendre le c++ livre
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Apprendre le c++ livre

  • 530 views
Uploaded on

un livre français de programmation C++ qui donne l'image de la POO

un livre français de programmation C++ qui donne l'image de la POO

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
530
On Slideshare
530
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
77
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Claude Delannoy Apprendre Apprendre C++ C++ le le
  • 2. delappC++ titre 4/07/07 15:11 Page 2 Apprendre le C++
  • 3. AUX EDITIONS EYROLLES Du même auteur C. Delannoy. – Exercices en langage C++. N°12201, 3e édition 2007, 340 pages. C. Delannoy. – C++ pour les programmeurs C. N°12231, environ 580 pages, à paraître. C. Delannoy. – Programmer en Java (Java 5 et 6). N°12232, 5e édition, environ 780 pages + CD-Rom, à paraître. C. Delannoy. – Exercices en Java (Java 5). N°11989, 2e édition, 2006, 330 pages. C. Delannoy. – Langage C. N°11123, 1998, 944 pages (réédition au format semi-poche). C. Delannoy. – Programmer en langage C. Avec exercices corrigés. N°11072, 1996, 280 pages. C. Delannoy. – Exercices en langage C. N°11105, 1997, 260 pages. Autres ouvrages dans la même collection P. Roques. – UML 2 par la pratique. Cours et exercices. N°12014, 5e édition 2006, 360 pages. X. Blanc, I. Mounier. – UML 2 pour les développeurs. Cours et exercices corrigés. N°12029, 2006, 218 pages. H. Bersini, I. Wellesz. – L’orienté objet. Cours et exercices en UML 2 avec PHP, Java, Python, C# et C++. N°12084, 3e édition, 2007, 520 pages. J. Engels. – XHTML et CSS : cours et exercices. N°11637, 2005, 350 pages. J. Engels. – PHP 5 : cours et exercices. N°11407, 2005, 518 pages. Autres ouvrages I. Horton. – Visual C++ 6. Avec un CD-Rom contenant le produit Microsoft Visual C++ 6 Introductory Edition. N°9043, 1999, 1 250 pages. G. Leblanc. – C# et .NET 2.0. N°11778, 2006, 700 pages. E. Daspet et C. Pierre de Geyer. – PHP 5 avancé. N°12167, 4e édition, environ 800 pages, à paraître en octobre 2007. A. Goncalves. – Cahier du programmeur Java EE5. N°12038, 2007, 330 pages. C. Porteneuve. – Bien développer pour le Web 2.0. N°12028, 2006, 560 pages.
  • 4. Claude Delannoy Apprendre le C++
  • 5. 41 41 31 31 21 21 11 8 8 6 5 4 4 4 4 3 3 3 2 2 2 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rof no itcurtsni’l : noit itépér enu eriaf ruoP 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuoc tolf el res il itu : snoitamrofni sed erircé ruoP 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitara lcéD 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C egagna l ne emmargorp nu’d erutcurtS 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C egagnal ne emmargorp ed elpmexe nU 1.1 . . . . . . . . . . . . . . . . . . . ++C egagnal ud snoitcurtsni seuqleuq ed elp mexe’l rap noitatnesérP - 1 .............................. Chapitre 2 : Généralités sur le langage C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dradnats euqèhtoilbib al te ++C - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + +C t e C - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tejbo eétneiro noita m margorp al te ++C - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eérutcurts noita m margorp al te ++C - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C te noitammargorp ed segagnal ,.O.O.P 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . emsihpromyloP 5.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatiréH 4.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalC 3.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitaluspacnE 2.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tejbO 1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tejbo eétne iro noitammargorp al ed stroppa seL 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eérutcurts noitammargorp aL 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .noitammargorp a l ed euqitamélborP 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . tejbo eétneiro noita m margorp te eérutcurts noita m margorP - 1 ................................. Chapitre 1 : Présentation du langage C++ XXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . avaJ te ++C ,C ,egarvuo’L - 3 X IXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egarvuo’l ed erutcurts te fitcejbO - 2 X IXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C ed euqirotsiH - 1 X IXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Avant-propos Table des matières V Table des matières
  • 6. 83 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .noitpecxe’d sac ne sruetarépo sed tnemetropmoC 3.2 83 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sru et ar é po s e d s e v i ta le r sé t i ro ir p s eL 2.2 73 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetarépo sed noitatnesérP 1.2 73 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .++C ne seuqité mhtira sruetarépo seL - 2 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C ne noisserpxe’d te ruetarépo’d snoiton sed étilanigirO - 1 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 4 : Opérateurs et expressions 43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l o o b e p y t e L - 6 33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s e t n a t s n o c t e n o i t a s i l a i t i n I - 5 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serètcarac setnatsnoc sed noitatoN 2.4 1 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C eg a gna l ne e rè tc a ra c ed no it on aL 1.4 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s e r è t c a r a c s e p y t s e L - 4 03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setnatto lf setnatsnoc sed noitatoN 2.3 92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . er iomém ne noitatnesérper ruel te sep yt stneréffid seL 1.3 92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnattolf sepyt seL - 3 82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serè itne setnatsnoc sed noitatoN 4.2 82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . séngis non sre itne sep yt seL 3.2 72 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . er iomém ne noitatnesérper rueL 2.2 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C rap suvérp sre itne’d sleusu sep yt stneréffid seL 1.2 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s re itn e sep yt s eL - 2 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . epyt ed noiton aL - 1 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 3 : Les types de base de C++ 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etêt -ne sre ihc if seL 4.3 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sne i l e d no it id é’L 3.3 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n o i t a l i pm o c aL 2.3 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . emm ar g or p u d no it id é’L 1.3 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C ne e m margorp nu’d noitaérC - 3 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . engil ed nif ed seriatnemmoc seL 2.5.2 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serbil seriatnemmoc seL 1.5.2 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s e r i atne mmo c s eL 5.2 91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e r b i l t a m r o f e L 4 . 2 91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .sruetarapés seL 3.2 9 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s é l c - st om s eL 2.2 81 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetacifitnedi seL 1.2 81 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutircé’d selgèr seuqleuQ - 2 71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erètcarac ep yt el tnas ilitu emmargorp ed e lpmexE 01.1 71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gnisu no itcurtsni’L 9.1 61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruessecorpérp ud no itan itsed à sev itcerid seL 8.1 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fi noitcurtsn i’ l : xiohc sed eriaf ruoP 7.1 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nic tolf e l resi litu : sno itamrofn i sed eril ruoP 6.1 Apprendre le C++ 91 20 :7 7 00 2 niu j . 62 ,id r aM IV e g aP VI k oo b.e rvi L
  • 7. 56 46 46 36 36 16 06 06 95 85 85 85 65 55 45 45 35 35 25 25 25 05 05 05 05 94 94 84 74 74 54 44 34 34 34 24 14 14 04 04 04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuoc rus erut ircé’d séti libissop seL 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 elpmexE 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 elpmexE 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . narcé’l à egahciffA - 1 ................................................. Chapitre 5 : Les entrées-sorties conversationnelles de C++ VII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetarépo sel suot ed sétiroirp sed fitalutipacéR - 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stib ed sruetarépo sed noitasi litu’d selpmexE 4.41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egalacéd ed sruetarépo seL 3.41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tib à tib sruetarépo seL 2.41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stib ed no italupinam ed sruetarépo sed noitatnesérP 1.41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stib ed noitalupina m ed sruetarépo seL - 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . foe zis ruetarépo’L - 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . leitneuqés ruetarépo’L - 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lennoitidnoc ruetarépo’L - 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tsac ed ruetarépo’L - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eng is ed tub irtta nu’d etpmoc ne es irP 2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sleusu saC 1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatceffa enu rap seécrof snoisrevnoc seL - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eigralé noitatceffa’d sruetarépo seL - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . têrétni rueL 3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sét iroirp srueL 2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elôr rueL 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatne mércéd ed te noitatne mércni’d sruetarépO - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisrevnoc enu ren îartne tuep no itatceffa’L 3.6 . . . . . . . . . . . . . . . . . . ehcuag à et iord ed étivita icossa enu edèssop no itatceffa’d ruetarépo’L 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eulavl ed noitoN 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erianidro noitatceffa’d ruetarépo’L - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . || te && ed noitaulavé’l snad t iucr ic -truoC 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elôR 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqigol sruetarépo seL - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . slennoitaler sruetarépo seL - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serètcarac sed saC 2.4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sreitne sed saC 1.4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . séngis non sepyt ed ecnesérp ne snoisrevnoc seL 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . loob epyt ud saC 3.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rahc epyt ud saC 2.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sétilarénéG 1.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se lleusu seuqirémun sno itomorp seL 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ep yt ed tnemetsu ja’d sel leusu snoisrevnoc seL 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etxim noisserpxe’d noitoN 1.3 . . . . . . . . . . . . . . noisserpxe’d luclac nu snad rinevretni tnavuop seticilp mi snoisrevnoc seL - 3 Table des matières
  • 8. 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . tnemugra snas uo ruoter ed rue lav snas sno itcnof sed saC 3.2 001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nruter no itcurtsni’L 2.2 001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sf it ce ff e stn emug ra t e st eum stnemu gr A 1.2 001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selgèr seuqleuQ - 2 89 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcnof enu’d noitasilitu’d te noitiniféd ed elp mexE - 1 79 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 7 : Les fonctions 59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . otog no itcurtsni’L 3.7 49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eunitnoc no itcurtsni’L 2.7 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .kaerb no itcurtsni’L 1.7 39 . . . . . . . . . . . . . . . otog te eunitnoc ,kaerb : lennoitidnocni tne mehcnarb ed snoitcurtsni seL - 7 09 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rof noitcurtsn i’ l ed exatn yS 3.6 98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . larénég ne rof no itcurtsni’L 2.6 88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rof noitcurtsn i’ l ed no itcudortn i’d elpmexE 1.6 88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rof noitcurtsni’L - 6 78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elihw noitcurtsn i’ l ed exatn yS 2.5 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elihw noitcurtsn i’ l ed no itcudortn i’d elpmexE 1.5 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elihw noitcurtsni’L - 5 58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . el ihw ...od noitcurtsn i’ l ed exatn yS 2.4 48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elihw ...od noitcurtsn i’ l ed no itcudortn i’d elpmexE 1.4 48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elihw ...od noitcurtsni’L - 4 28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . hct iws noitcurtsn i’ l ed exatn yS 2.3 97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . hctiws no itcurtsni’l ed noitcudortni’d selpmexE 1.3 97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . hctiws noitcurtsni’L - 3 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f i sno itcurtsni sed no itac irbmI 3.2 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selpmexE 2.2 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fi noitcurtsn i’ l ed exatn yS 1.2 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fi noitcurtsni’L - 2 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . colb nu snad sno itaralcéD 2.1 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcurtsn i’d scolB 1.1 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcurtsni’d scolb seL - 1 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 6 : Les instructions de contrôle 07 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . edilavni erètcarac nu rus einifni elcuoB 3.6.2 07 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutcel al ed egacolB 2.6.2 96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . narcé te reivalc ertne emsinorhcnys ed euqnaM 1.6.2 96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r e i v a l c ua e rut ce l a l ra p s t iudn i s euqs ir s eL 6.2 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eénnod enu snad ed ilavni erètcarac nu’d ecnesérP 5.2 76 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >> rap seés ilitu selgèr serèimerP 4.2 76 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sru et ar a pé s se r èt ca ra c e d t e n o pma t ed sn o i toN 3.2 7 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n ic ru s erut ce l e d sé t i l ib is s op s etn er éf f i d s eL 2.2 6 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n o i tcu do rtn I 1.2 66 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r e i v a l c u a e r u t c e L - 2 VIII Apprendre le C++
  • 9. 921 821 721 721 621 521 421 421 321 321 121 021 911 811 711 711 611 611 611 511 411 311 211 111 111 111 011 901 901 801 801 801 701 701 601 601 401 401 301 301 301 IX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed noit inifédrus al ed ems inacém eL 3.21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sne il ed noit idé’l ed srol etnauqnam noitcnoF 2.21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sepytotorp te eérapés noital ipmoC 1.21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eérapés noitalip moc al ed ecneuqésnoc aL - 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexe dnoceS 2.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e lpmexe reimerP 1.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erb mon ne selbairav stne mugra seL - 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnemugra srueisulp à snoitcnof sed saC 2.3.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnemugra nu à snoitcnof sed saC 1.3.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . einifédrus noitcnof enu’d ehcrehcer ed selgèR 3.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e in ifédrus no itcnof enu’d x iohc ed selpmexE 2.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed no it in ifédrus a l ed ervuœ ne esiM 1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed noitinifédruS - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuaféd rap stnemugra sed sété irporp seL 2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selpmexE 1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuaféd rap stne mugra seL - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euqitamotua essa lc ed selbairav seL 2.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euq itats essa lc ed selbairav seL 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbairav sed noitasilaitinI - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sev isrucér sno itcnof sed sac eL 5.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . colb nu à selacol selbairaV 4.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuq itats se lacol selbairav seL 3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqitamotua se lacol selbairav seL 2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selaco l selbairav sed eétrop aL 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selacol selbairav seL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selabo lg selbairav sed noitacol la’d essa lc aL 3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selabo lg selbairav sed eétrop aL 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se labolg selba irav ed no itas ilitu’d elpmexE 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selabolg selbairav seL - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnatsnoc teum tnemugra nu’d saC 4.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnatsnoc fitceffe tnemugra nu’d saC 3.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisrevnoc ed ecnesbA 2.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stceridni seuqsir ed noitcudnI 1.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . tnemugra nu’d ecneréfér rap noissimsnart al ed sétéirporP 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneréfér rap tnemugra’d noissimsnart ed elpmexE 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneréfér rap noissi msnarT - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruelav rap stne mugra sed noissi msnarT - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ep ytotorp el rap setiudn i snoisrevnoc te selôrtnoC 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcnof enu’d noitara lcéd al recalp ùO 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcnof enu reralcéd ed snoçaf setneréffid seL 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitaralcéd sruel te snoitcnof seL - 3 Table des matières
  • 10. 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lun ruetniop el te sruetn iop ed sno itatceffa seL 3.7 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetniop ed noitcartsuos aL 2.7 351 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetn iop ed nos iarapmoc aL 1.7 351 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetniop sed rus selbasilaér snoitarépo seL - 7 251 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidn i srueisu lp à xuae lbat sed saC 2.6 151 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ec idn i nu à xuae lbat sed saC 1.6 151 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnatsnoc ruetniop nu tse uaelbat ed mon nU - 6 941 . . . . . . . . . . . . . . . . . . . . . ruetniop nu ceva esserda rap noissi msnart enu relu mis tne m moC - 5 8 4 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sru etn i o p ed n o it atne mé rcn I 3.4 741 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se lpmexe seuqleuQ 2.4 6 4 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n o i tcu do rtn I 1.4 641 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & te * sruetarépo seL – ruetniop ed noitoN - 4 541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitaco lla’d essalc te sruesilaitinI 3.3 441 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidni srueisulp à xuaelbat ed noitasilaitinI 2.3 4 4 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e c i dn i nu à xua e l b at e d n o it a s i l a i t in I 1.3 441 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xuaelbat sed noitasilaitin I - 3 341 . . . . . . . . . . . . . . . . . . . . . . . . . . . secidni srueisulp à xuaelbat sed eriomém ne tnemegnarr A 2.2 3 4 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no it ar a l c éd ru eL 1.2 341 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidni srueisulp à xuaelbat seL - 2 241 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecidni’d tnemedrobéD 4.2.1 241 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . uaelbat nu’d noisnemid aL 3.2.1 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidni seL 2.2.1 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . uaelbat ed stnemélé seL 1.2.1 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se lgèr seuqleuQ 2.1 041 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C ne uae lbat nu’d no itas il itu’d elpmexE 1.1 041 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecidni nu à xuaelbat seL - 1 931 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 8 : Les tableaux et les pointeurs 631 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . enilni noitacificéps aL - 41 531 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneréfér ed noitasilaitinI 2.2.31 531 . . . . . . . . . . . . . . . . . .tnemugra’d ellec euq elarénég sulp tse ecneréfér ed noiton aL 1.2.31 531 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .e larénég erèinam enu’d ecneréfér aL 2.31 431 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecnatsnoc te ruoter ed ruelaV 4.1.31 431 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisrevnoC 3.1.31 331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eulavl enu tneitbo nO 2.1.31 331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcudortnI 1.1.31 231 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruoter ed rue lav enu’d ecneréfér rap no issimsnarT 1.31 231 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secneréfér sel rus stne mélp moC - 31 231 . . . . . . . . . . . . . . . . . . . . . . . . citats noitaralcéd al – seéhcac selabolg selbairav seL 3.4.21 131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sneil ed noitidé’l te selabolg selbairav seL 2.4.21 031 . . . . . . . . . . . . . . . . . . . . . . nretxe noitaralcéd al – elabolg elbairav enu’d eétrop aL 1.4.21 031 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s e l a bo lg s e l b a i ra v te e é ra pé s n o i ta l i pm oC 4.21 X Apprendre le C++
  • 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnemugra ne sesimsnart snoitcnoF 2.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sno itcnof ed leppa’d egartémaraP 1.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof sed rus sruetniop ed noitasilitU - 11 . . . . . . . . . . . . . . . . . . . . . . . . . . selbairav snoisnemid ed uaelbat : elpmexe dnoceS 2.2.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exif elliat ed uaelbat : elpmexe reimerP 1.2.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidn i srueisu lp à xuae lbat sed saC 2.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elbairav elliat ed uaelbat : elpmexe dnoceS 2.1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exif elliat ed uaelbat : elpmexe reimerP 1.1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ec idn i nu à xuae lbat sed saC 1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tne mugra ne si msnart xuaelbat seL - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed noitinifédrus te sruetnioP - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 3.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ete led ruetarépo’L 2.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . wen ruetarépo’L 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eteled te wen sruetarépo sel : euqi manyd noitseg aL - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuq irénég sruetniop seL 5.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetniop ed snoisrevnoc seL 4.7 761 661 661 561 461 461 461 261 261 261 161 951 951 751 751 551 451 Chapitre 9 : Les chaînes de style C 381 381 281 281 181 081 971 871 871 871 871 771 771 671 571 571 471 371 371 271 071 071 071 961 XI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setnatsnoc sen îahc sed noitacifidom ed seuqs ir seL 2.01 . . . . . . . . . . . . . . . . . tubéd iarv ed sap s iam ,nif eiarv enu edèssop C el yts ed en îahc enU 1.01 . . . . . . . . . . . . . . . . . . . . . . . . . C elyts ed senîahc sel ceva erdnerp à snoituacérp seuqleuQ - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . enîahc enu snad ehcrehcer ed snoitcnof seL - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . senîahc ed eipoc ed snoitcnof seL - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . senîahc ed nosiarap moc ed snoitcnof seL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tacnrts noitcnof aL 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tacrts noitcnof aL 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . senîahc ed noitanétacnoc ed snoitcnof seL - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitanétacnoc ed sno itcnof sed sac eL 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ne lrts noitcnof aL 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sesserda sed rus sruo juot tnel liavart sno itcnof seC 1.5 . . . . . . . . . . . . . . . . . . . . . . . C elyts ed senîahc sed rus tnatrop snoitcnof sel rus sétilarénéG - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . niam noitcnof a l snad stnemugra sec rerépucér tnemmoC 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . emmargorp nu à stnemugra sed ressap tnemmoC 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nia m noitcnof al à si msnart stne mugra seL - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sen îahc sed rus sruetniop ed xuaelbat ed no itas ilaitinI 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serètcarac ed xuaelbat ed no itas ilaitinI 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . senîahc sed rap xuaelbat ed noitasilaitinI - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C elyts ed senîahc ed erutircé te erutceL - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setnatsnoc senîahc sed saC 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eétpoda no itnevnoc aL 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . senîahc sed noitatnesérpeR - 1 ...................................... Table des matières
  • 12. 322 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 3.5 222 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuq itats seénnod serbmem sed noitasilaitinI 2.5 122 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eénnod erbmem nu ruop c itats fitacifilauq eL 1.5 122 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .seuqitats seénnod serb me m seL - 5 022 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se lgèr seuqleuQ 5.4 712 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsed ud te ruetcurtsnoc ud se lôR 4.4 612 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ste jbo sed no itcurtsed te no itcurtsnoC 3.4 412 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsnoc nu tnatropmoc essa lc ed elpmexE 2.4 3 1 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n o i tcu do rtn I 1.4 312 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsed ed te ruetcurtsnoc ed snoitoN - 4 212 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stejbo’d noitatceffA - 3 802 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc ed noitoN - 2 702 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f italut ipacér elpmexE 4.1 602 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eés ilarénég erutcurts enu’d noitasi litU 3.1 502 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutcurts enu’d serbmem sno itcnof sed noitiniféD 2.1 402 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutcurts enu’d serbmem snoitcnof sed no itaralcéD 1.1 402 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s e é s i l a r é n é g s e r u t c u r t s s e L - 1 302 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 11 : Classes et objets 102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitarémuné ep yt ud sétéirporP 2.9 002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sfitcudortni selpmexE 1.9 002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitaré muné seL - 9 891 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoinu seL - 8 791 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s t i b e d s p m a h c s e L - 7 691 . . . . . . . . . . . . . . . . . . . . . noitcnof enu’d ruoter ed ruelav ne erutcurts enu’d noissi msnarT - 6 591 . . . . . . . . . . . . . . . . . . . . . . . . . . . > - ruetarépo’l : erutcurts enu’d esserda’ l ed noissimsnarT 3.5 491 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ecneréfér rap erutcurts enu’d noissimsnarT 2.5 491 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rue lav rap erutcurts enu’d noissimsnarT 1.5 391 . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcnof enu’d tne mugra ne erutcurts enu’d noissi msnarT - 5 291 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutcurts ed epyt ud eétrop al ed soporp À - 4 291 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetn iop nu tnamrefner erutcurts ed rei luc itrap saC 4.3 191 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serutcurts sertua’d tnatropmoc serutcurtS 3.3 191 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serutcurts ed xuaelbaT 2.3 091 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xuae lbat sed tnatropmoc erutcurtS 1.3 981 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .serutcurts ed noitacirb m I - 3 881 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s erut curt s e d n o it a s i l a i t in I 3.2 881 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .erutcurts enu’d e labolg noitasi litU 2.2 781 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutcurts enu’d spmahc sed noitasi litU 1.2 781 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erutcurts enu’d noitasilitU - 2 681 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e r u t c u r t s e n u ’ d n o i t a r a l c é D - 1 581 . . . . . . . . . . . . . . . XII Chapitre 10 : Les types structure, union et énumération Apprendre le C++
  • 13. 752 652 552 552 352 352 252 252 152 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsnoc ceva essalc enu’d saC 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsnoc snas essalc enu’d saC 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqi manyd stejbo seL - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetcurtsed sed te sruetcurtsnoc sed lepp A 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e iv ed eéruD 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqitats te seuqita motua stejbo seL - 1 ................................................. Chapitre 13 : Construction, destruction et initialisation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essa lc enu’d noitara lcéD 3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essa lc enu’d noitara lcéd al snad revuort tuep no’uq eC 2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++C ne sessa lc ed setros sertua seL 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . larénég ne sessalc seL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . égnahc a scilbup serbmem sed noitaralcéd aL 2.4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . égnahc sap a’n scilbup serbmem sed noitaralcéd aL 1.4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc enu’d no itac if idom ed sac nE 4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuq itats seénnod serbmem sed saC 3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se lpit lum snoisulcni sel ertnoc noitcetorP 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . leicigol tnasopmoc emmoc essa lc aL 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc enu’d noitatiolpxE - 6 032 922 822 822 822 822 722 722 722 522 522 Chapitre 12 : Les propriétés des fonctions membres 942 742 642 642 442 342 242 242 142 932 932 732 532 432 132 132 XIII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbatu m serb me m seL - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etnatsnoc erbmem noitcnof enu’d sétéirporP 2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etnatsnoc erbmem noitcnof enu’d noit iniféD 1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setnatsnoc serb me m snoitcnof seL - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqitats serb me m snoitcnof seL - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . siht élc to m el : ecneréférotuA - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tejbo nu eiovner noitcnof enu’uqsroL - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruelav rap no issimsnart a l rap sésop semèlborp seL 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneréfér rap noiss imsnarT 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tejbo nu’d esserda’l ed noiss imsnarT 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tne mugra ne stejbo sed noissi msnart ed edoM - 5 . . . . . . . . . . . . . . . . . . . . . . . . erb me m noitcnof enu’d tne mugra ne si msnart stejbo sed saC - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . engil ne serb me m snoitcnof seL - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuaféd rap stne mugrA - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serb me m snoitcnof sed noitinifédruS - 1 .................. Table des matières
  • 14. 003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -- te ++ sruetarépo sed saC 4.2 992 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetarépo nu’d elôr e l rus sesèhtop yh se l ret ivÉ 3.2 992 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc ed etxetnoc nu snad reca lp eS 2.2 792 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnatsixe sruetarépo xua ret imi l eS 1.2 792 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . larénég ne sruetarépo’d noitinifédrus aL - 2 6 9 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecn er éf ér r a p no is s i msna rt t e sru et ar épO 3.1 492 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erbmem noitcnof enu ceva ruetarépo’d no itin ifédruS 2.1 392 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eima noitcnof enu ceva ruetarépo’d no itin ifédruS 1.1 292 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetarépo’d noitinifédrus al ed e msinacé m eL - 1 192 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 15 : La surdéfinition d’opérateurs 882 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sei ma snoitcnof ed tnasopsid sessalc ed noitatiolpxE - 4 782 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc enu’d erbmem ,eima noitcnoF 2.3 682 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etnadnepédn i eima noitcnoF 1.3 582 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e l p m e x E - 3 582 . . . . . . . . . . . . . . . . . . . . . . . . . . essa lc ertua enu’d seima essalc enu’d snoitcnof sel setuoT 3.2 4 8 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s es sa lc s rue isu l p e d e im a n o i tcn o F 2.2 382 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc ertua enu’d eima ,essa lc enu’d erbmem noitcnoF 1.2 282 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éiti ma’d snoitautis setneréffid seL - 2 082 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc enu’d ei ma etnadnepédni noitcnof ed elp mexE - 1 972 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 14 : Les fonctions amies 672 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seriarop met stejbo seL - 8 572 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stejbo’d seuqiman yd xuae lbat sed saC 3.7 472 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruesi la it in i te sruetcurtsnoC 2.7 3 7 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sn o i ta toN 1.7 372 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stejbo’d xuaelbat seL - 7 272 . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsnoc nu’d etêt-ne’l snad serb me m ed noitasilaitin I - 6 172 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e i p oc er e d rue tcu rtsn o c eL 3.5 962 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetcurtsed sed te sruetcurtsnoc sed ervuœ ne esiM 2.5 8 6 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n o i tcu do rtn I 1.5 8 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s erb m e m s te jbO - 5 662 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitaralcéd as ed srol tejbo nu’d noitasilaitin I - 4 562 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcnof enu’d ruoter ed rue lav ne te jbo : 2 elpmexE 3.3 262 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eipocer ed ruetcurtsnoc nu’d noitiniféD 2.2.3 162 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuaféd rap eipocer ed ruetcurtsnoc ud iolpmE 1.2.3 062 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruelav rap s imsnart te jbo : 1 elpmexE 2.3 952 . . . . . . . . . . . . . . . . . . . . . . . . eipocer rap noitcurtnoc al eridretni etiahuos no’uqsroL 3.1.3 952 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éirporppa ruetcurtsnoc nu etsixe lI 2.1.3 852 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éirporppa ruetcurtsnoc ed sap etsixe’n lI 1.1.3 852 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatnesérP 1.3 852 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .eipocer ed ruetcurtsnoc eL - 3 XIV Apprendre le C++
  • 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elarénég erè inam enu’D 3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eénnod essalc enu ruop eteled te wen ed noitinifédruS 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eteled te wen sruetarépo sed noitinifédruS - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )( ruetarépo’l ed noitinifédruS - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] [ ruetarépo’l ed noitinifédrus ed elp mexE - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . larénég saC 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc enu’d euqinonac e mrof aL - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatceffa’l eridretn i etiahuos no’uqsroL 7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . te lpmoc emmargorp ed elpmexE 6.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . evitiniféd nE 5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruoter ed rue laV 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ésoporp emht irogl A 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itatceffa’l ed saC 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eipocer rap ruetcurtsnoc e l tnanrecnoc sleppaR 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = ruetarépo’l ed noitinifédruS - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eima noitcnof te erbmem noitcnof ertne x iohC 7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoisrevnoc seL 6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e inifédérp no itac if ing is enu edèssop = ruetarépo’L 5.2 713 513 513 413 413 113 013 013 903 703 703 703 503 403 303 303 303 203 103 Chapitre 16 : Les conversions de type définies par l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sliesnoc seuqleuQ - 5 . . . . . . . . . . . . . . essalc ertua enu snad iniféd ruetarépo nu à no itacif ing is enu rennod ruoP 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetcurtsnoc nu rap no isrevnoc ed elpmexE 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tsac ed ruetarépo’d e lpmis elpmexE 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc epyt ertua nu ne essalc epyt nu’d snoisrevnoc seL - 4 . . . . . . . . . . . . . . ticilpxe’d elôr e l : ruetcurtsnoc el rap seticilpm i snoisrevnoc se l er idretnI 5.3 . . . . . . . . . . . . . . . . . ruetarépo nu’d noitacifingis al rigralé ruop ruetcurtsnoc nu’d iolpmE 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itatceffa’d ruetarépo uo ruetcurtsnoc ertne x iohC 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoisrevnoc ed enîahc enu snad ruetcurtsnoc eL 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 1.3 . . . . . . . . . . . . . . . . . . . . . . . essalc epyt >- esab ed epyt noisrevnoc al ruop ruetcurtsnoc eL - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . étïugibma’d sac nE 6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . en îahc ne snoisrevnoC 5.2 . . . . . . . . . . . . . . no isserpxe enu’d noitaulavé’l snad tsac ed ruetarépo’l ed et ic ilpmi lepp A 4.2 . . . . . . . . . . . . . . . . . . . . noitcnof ed leppa nu’d srol tsac ed ruetarépo’l ed et ic ilpmi lepp A 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itas ilitu’d elpmexE 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tsac ed ruetarépo’l ed noit iniféD 1.2 . . . . . . . . . . . . . . . . . . . . esab ed epyt >– essalc epyt noisrevnoc al ruop tsac ed ruetarépo’L - 2 . . . . . . . . . . . . . . . . . . . . . . . . ruetasilitu’l rap seiniféd snoisrevnoc ed setros setneréffid seL - 1 ...... 143 933 733 633 633 633 333 233 133 923 923 923 723 523 423 223 223 223 023 913 Chapitre 17 : Les patrons de fonctions 543 443 443 343 XV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sno itcnof ed nortap ud snoitasi litu serèimerP 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed nortap nu’d noitaérC 1.1 . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed nortap nu’d noitasilitu’d te noitaérc ed elp mexE - 1 .................................. Table des matières
  • 16. 973 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidni xued à uaelbat essalc ed elp mexE - 9 873 . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessalc ed uo snoitcnof ed nortap ertua nu’d no itaralcéD 3.8 873 . . . . . . . . . . snortap sno itcnof ed uo snortap sessa lc ed serèi lucitrap secnatsni’d no itaralcéD 2.8 773 . . . . . . . . . . . . . . . . . . . . . . . . . . . . se ima » serian idro « sno itcnof uo sessalc ed no itaralcéD 1.8 773 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .éiti ma’d snoitaralcéd te snortap sessalC - 8 673 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snortap sessalc ed étitned I - 7 673 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serb me m snoitcnof ed snortaP - 6 673 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tuaféd rap sertè maraP - 5 573 . . . . . . . . . . . . . . sessalc ed snortap ed selleitrap snoitasilaicéps sed riovérp tuep nO 3.2.4 573 . . . . . . . . . . . . . . . . . . . . . . . . essalc enu uo erbmem noitcnof enu resilaicéps tuep nO 2.2.4 473 . . . . . . . . . . . . . . . sertèmarap sel suot ruop erbmem noitcnof enu resilaicéps tuep nO 1.2.4 4 7 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no it as i l a i c ép s e d sé t i l ib is s op s etn er éf f i d s eL 2.4 373 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erbmem noitcnof enu’d noitasi la icéps ed elpmexE 1.4 373 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessalc ed nortap nu’d noitasilaicépS - 4 273 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sno isserpxe sertèmarap sed sété irporp seL 2.3 173 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 1.3 073 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessalc ed nortap nu’d snoisserpxe sertè marap seL - 3 963 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nortap essalc enu’d no itaicnatsnI 2.2 963 . . . . . . . . . . . . . . . . . . . . . . . sessalc ed nortap nu’d no itaérc a l snad ep yt ed sertèmarap seL 1.2 963 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessalc ed nortap nu’d epyt ed sertè marap seL - 2 763 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f italut ipacér elpmexE 4.1 663 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessa lc ed nortap nu’d noitasi litu’d setniartnoC 3.1 663 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessa lc ed nortap nu’d noitasi litU 2.1 463 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sessa lc ed nortap nu’d noitaérC 1.1 463 . . . . . . . . . . . . . . . . . . . . . . . . . . . sessalc ed nortap nu’d noitasilitu’d te noitaérc ed elp mexE - 1 363 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 18 : Les patrons de classes 953 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nortap noitcnof enu’d noitaicnatsni’d e mhtiroglA - 6 8 5 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s e l l e it ra p sn o it a s i l a i c ép s s eL 2.5 853 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s é t i l a r é n é G 1 . 5 853 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nortap ed snoitcnof ed noitasilaicépS - 5 753 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoisserpxe sertèmarap sed tnatropmoc selpmexE 2.4 453 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ep yt ed sertèmarap sed euq tnatropmoc en selpmexE 1.4 453 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snortap ed noitinifédruS - 4 353 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed nortap nu’d snoisserpxe sertè marap seL - 3 253 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sno it cno f ed sn or ta p s ed sn o i ta t im iL 4.2 153 . . . . . . . . . . . . . . . . . . . . . dradnats sep yt sed selbairav sed noitasi la it in i’d exatn ys el levuoN 3.2 053 . . . . . . . . . . . . . . . . . . . . . . . . . .nortap noitcnof enu’d epyt ed sertèmarap sed no itac ifitnedI 2.2 943 . . . . . . . . . . . . . . . . . . . . . .nortap nu’d noitiniféd al snad ep yt ed sertèmarap sed noitasi litU 1.2 943 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed nortap nu’d epyt ed sertè marap seL - 2 843 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nortap nu’d noitasi litu’d setniartnoC 4.1 743 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc epyt nu à noitacilppA 2.3.1 643 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * rahc epyt ua noitacilppA 1.3.1 643 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed nortap ud snoitasi litu sertu A 3.1 XVI Apprendre le C++
  • 17. 914 914 814 814 814 714 714 514 214 214 214 014 904 904 804 504 404 404 304 204 104 004 993 993 893 893 793 793 693 593 393 393 293 293 093 093 883 883 683 483 383 . . . . . . . . . . . . . . . . . . . . . . .tniop ed edicnioc noitcnof al ed loctniop snad egatiréH 2.2.01 . . . . . . . . . . . . . . . . . . . . tniop snad iniféd + ruetarépo nu’d loctniop snad egatiréH 1.2.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selpmexE 2.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f ed stnemugra sed epyt eL 2.1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . leppa’l ed tatlusér ud epyt eL 1.1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatiréh’d noitautis aL 1.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seti mil ses te egatiréh’L - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . essalc enu’d euqinonac e mrof te egatiréH - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .= ruetarépo’l tinifédrus eév iréd essa lc aL 2.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = ruetarépo’l sap t in ifédrus en eév iréd essa lc aL 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatiréh’l te noitatceffa’d ruetarépo’L - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e ipocer ed ruetcurtsnoc nu tiniféd eév iréd essa lc aL 2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . e ipocer ed ruetcurtsnoc ed sap tiniféd en eév iréd essa lc aL 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatiréh’l te eipocer ed ruetcurtsnoc eL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . esab ed essalc al ed sno itcetorp sed noita lo iv ed seuqsir seL 4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ste jbo sed euqitats egap yt ua seé il sno itat imiL 3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetniop ed noisrevnoC 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . esab ed epyt nu ne éviréd ep yt nu’d noisrevnoC 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eéviréd essalc te esab ed essalc ertne étilibitap moC - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no italut ipacéR 5.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eégétorp noitaviréd ed sétilibissop seL 3.4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .eévirp noitaviréD 2.4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .euqilbup noitaviréd al tnanrecnoc sleppaR 1.4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eévirp no itaviréd te euqilbup no itaviréD 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . égétorp tutats ud têrétnI 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ségétorp serbmem seL 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sècca sed elôrtnoC - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnemé lpmoC 5.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 4.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetcurtsnoc ertne sno itamrofn i’d noiss imsnarT 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sleppa sed no itas ihcraré ih aL 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sleppaR 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetcurtsed sed te sruetcurtsnoc sed leppA - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itin ifédrus te no it in ifédeR 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . eéviréd essalc enu’d seénnod serbmem sed no it in ifédeR 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . eév iréd essa lc enu’d serbmem snoitcnof sed no it in ifédeR 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eéviréd essalc enu’d serb me m sed noitinifédeR - 3 . . . . . . . . . . . . . . . . . . eéviréd essalc enu snad esab ed essalc al ed serb me m sed noitasilitU - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatiréh’d noiton aL - 1 ........................................... Chapitre 19 : L’héritage simple Table des matières XVII
  • 18. 664 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqi manyd tsac seL - 9 664 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secneréfér sed ceva elpmexE 3.8 564 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ofni_ep yt ed nos iarapmoc ed sruetarépo sed noitasi litU 2.8 464 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ofn i_epyt ed eman pmahc ud noitasi litU 1.8 364 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitucéxe’l à epyt ed noitacifitned I - 8 164 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stejbo sed euqi manyd noitacifitnedi’d e msinacé m eL - 7 754 . . . . . . . . . . . . . . . . . . . . . . . . enègorétéh etsil : selleutriv snoitcnof ed noitasilitu’d elp mexE - 6 554 . . . . . . . . . . . . . . . . . . . . setiartsba sessalc ed noitaérc al ruop serup selleutriv snoitcnof seL - 5 454 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatceffa’d ruetarépo’l ed reilucitrap saC 4.6.4 354 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . leutriv ertê tuep ruetcurtsed nU 3.6.4 254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . leutriv ertê sap tuep en ruetcurtsnoc nU 2.6.4 254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elleutriv ertê tuep erbmem noitcnof enu elueS 1.6.4 254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s liesnoc te sno itcirtser seuqleuQ 6.4 254 . . . . . . . . . . . . . . . . . . . essalc el leuq etropm i’n snad el leutriv noitcnof enu reralcéd tuep nO 5.4 154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . einiféder e lleutr iv no itcnof enu’d ruoter ed ep yt eL 4.4 154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itin ifédrus te se lleutr iv snoitcnoF 3.4 054 . . . . . . . . . . . . . . . . . . . . . . . . . eriotagi lbo sap tse’n e lleutriv no itcnof enu’d no it in iféder aL 2.4 9 4 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e g at i réh’ l e d se l l ec tn os sn o it at im i l sru eL 1.4 944 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selleutriv snoitcnof sed sétéirporp seL - 4 644 . . . . . . . . . . . . . . . . . . . . . . . . . . . elbasnepsidni tse euqi manyd erutagil al ùo noitautis ertuA - 3 444 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selleutriv snoitcnof sed e msinacé m eL - 2 444 . . . . . . . . . . . . . . . . . . . . . . . . eriassecén tse euqi manyd egapyt el ùo noitautis enu’d leppaR - 1 344 . . . . . . . . . . . . Chapitre 21 : Les fonctions virtuelles et le polymorphisme 044 . . . . . . . . . . . . . . . . elleutriv noitaviréd al ed te elpitlu m egatiréh’l ed noitasilitu’d elp mexE - 4 734 . . . . . . . . . . . . . . . . selleutriv sessalc sed sac : sruetcurtsed sed te sruetcurtsnoc sed sleppA - 3 634 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selleutriv sessalc sel : stilfnoc sleutnevé sel relgér ruoP - 2 234 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpitlu m egatiréh’l ed ervuœ ne esiM - 1 134 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 20 : L’héritage multiple 824 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eév iréd essa lc enu’d noitat iolpxE 3.31 824 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egat iréh’l ed snoitasil itu setneréff iD 2.31 624 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sevisseccus snoitav iréD 1.31 624 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euqitarp ne egatiréh’L - 31 524 . . . . . . . . . . . . . . . . . . . . ertèmarap uaevuon nu’d no itcudortn i ceva snortap ed noitav iréD 3.21 524 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sertèmarap semêm se l ceva snortap ed noitav iréD 2.21 424 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nortap essalc enu’d tnaviréd » er ian idro « essa lC 1.21 324 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .egatiréh te sessalc ed snortaP - 21 024 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eéviréd essalc ed elp mexE - 11 XVIII Apprendre le C++
  • 19. 994 794 694 594 594 494 394 294 094 984 984 784 684 684 584 584 584 484 484 484 484 484 284 184 184 084 084 974 974 874 774 674 574 474 374 374 374 374 274 274 174 174 964 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 4.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serbmem snoitcnof seL 3.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqirtémarap sruetalupinam seL 2.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqirtémarap non sruetalupinam seL 1.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatamrof ed tutats e l rus noitc A 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatamrof ed tutats ud taté’d tom ud noitp ircseD 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tolf nu’d egatamrof ed tutats eL 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egata mrof ud noitseG - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . edohtéM 1.4 . . . . . . . . . . . . . . . . . . . . . . ruetasilitu’l rap siniféd sepyt sel ruop >> te << ed noitinifédruS - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selpmexE 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! te )( sruetarépo sed noitinifédruS 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruerre’d tutats ud noitacifidoM 2.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruerre’d stib xua sèccA 1.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruerre’d stib se l tnanrecnoc snoitc A 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruerre’d stib seL 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tolf nu’d ruerre’d tutatS - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sno itcnof sertua seuq leuQ 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sac sertuA 2.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .serètcarac sed saC 1.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . daer noitcnof aL 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnuocg te en ilteg sno itcnof seL 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . teg noitcnof aL 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >> rap sétpecca sepyt seL 3.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C elyts ed senîahc sed saC 2.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .serètcarac sed saC 1.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >> ruetarépo’L 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . maertsi essalc al ed elarénég noitatnesérP - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éroiléma noitarutcaf ed emmargorp nU 5.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elleitnenopxe uo etnattolf noitaton ertne xiohC 4.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etircé noitamrofni’l ed noisicérp al rus noitcA 3.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etircé noitamrofni’l ed tirabag el rus noitcA 2.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitarémun ed esab al rus noitcA 1.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . << ceva egatamrof ed sét il ib issop seuq leuQ 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sac sertuA 2.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .serètcarac sed saC 1.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . et irw noitcnof aL 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tup noitcnof aL 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sinifédérp stolf seL 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . << ruetarépo’L 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . maertso essalc al ed elarénég noitatnesérP - 1 ..................................................... Chapitre 22 : Les flots XIX Table des matières
  • 20. 635 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .esrevni sruocraP 2.3.1 535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tcerid sruocraP 1.3.1 535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ruetaréti nu ceva ruenetnoc nu’d sruocraP 3.1 435 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetarét i’d noitoN 2.1 435 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruen etn oc e d n o i toN 1.1 335 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e mhtirogla’d te ruetaréti’d ,ruenetnoc ed snoitoN - 1 335 . . . . . . . . . . . . . . . . . Chapitre 24 : Généralités sur la bibliothèque standard 035 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 elpmexE 2.5.6 035 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 elpmexE 1.5.6 925 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itpecxe essalc a l ed seév iréd snoitpecxe’d noitaérC 5.6 825 . . . . . . . . . . . . . . . . . . . reldnah_wen_tes ceva eriomém ed stnemedrobéd sed noitseG 2.4.6 725 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )worhton( wen ruetarépo’L 1.4.6 725 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . er iomém ed euqiman yd noitseg a l ed rei luc itrap saC 4.6 725 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . emmargorp nu snad selbas ilitu snoitpecxe seL 3.6 625 . . . . . . . . . . . . . . . . . . . . . . . . . . . . dradnats euqèhtoi lb ib al rap seéhcnelcéd snoitpecxe seL 2.6 625 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s é t i l a r é n é G 1 . 6 625 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dradnats snoitpecxe seL - 6 325 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . detcepxenu noitcnof al : ecafretni’d noitacificépS - 5 225 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitpecxe enu’d tnemehcne lcédeR 4.4 025 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitpecxe sed tnemenimehc eL 3.4 915 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitpecxe’d erianno itseg nu’d xiohc ed selgèR 2.4 915 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e ipoc enu sruo juot t ioçer eriannoitseg eL 1.4 815 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eriannoitseg ud xiohC - 4 815 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . scolb ed seitros sed etpmoc ne esirP 2.3 615 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . emmargorp ud noitucéxe’ l ed etiusruoP 1.3 615 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .snoitpecxe sed noitseg ed e msinacé m eL - 3 41 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elp m ex e dn oc eS - 2 2 1 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f it a lut i pa céR 3.1 115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itpecxe’d erianno itseg nu’d noitasi litU 2.1 115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . worht noitcurtsni’l : noitpecxe enu recnal tnemmoC 1.1 015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n o i t p e c x e ’ d e l p m e x e r e i m e r P - 1 905 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 23 : La gestion des exceptions 7 0 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m ae rt sr ts i es s a l c aL 2.7 605 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m ae rt srt s o es s a l c aL 1.7 505 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erio mé m ne egata mrof ed sétilibissop senneicna seL - 7 405 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . re ihcif nu’d erutrevuo’d sedom stneréffid seL 4.6 205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tcer id sècca’d séti libissop seL 3.6 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reihcif nu à eértne’d tolf nu’d noixennoC 2.6 994 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reihc if nu à eitros ed tolf nu’d noixennoC 1.6 994 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reihcif nu à tolf nu’d noixennoC - 6 XX Apprendre le C++
  • 21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetarépo’d sruetarénég seL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . retcepser à sétéirporP 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itcudortnI 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erdro’d noitaler te se mhtirogla ,sruenetnoC - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seinifédérp snoitcnof sessalC 2.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . leppar ed noitcnof emmoc noitcnof te jbo’d noitasilitU 1.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ste jbo te sessalC 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stac idérP 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . er ianu no itcno F 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof sessalc te stacidérp ,snoitcnoF - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruenetnoc sed rus snoitarépo sed éticaciffE - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitarépo sertu A 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itatceffa te e ipoc ,no itcurtsnoC 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stejbo sed tnos stne mélé sel tnod sruenetnoc seL - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruenetnoc ed seirogétac setneréffid seL 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqissalc seénnod ed serutcurts te sruenetnoC 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruenetnoc ed setros setneréffid seL - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetn iop te sruetarétI 6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . emht irogla’d noitoN 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetaréti’d e llavretnI 4.1 645 545 545 545 445 345 345 345 245 245 145 145 045 935 935 835 835 835 735 635 Chapitre 25 : Les conteneurs séquentiels 655 555 555 455 455 455 355 355 355 355 255 255 155 155 155 055 055 055 055 055 945 XXI . . . . . . . . . . . . . . . . . kcab_hsup te kcab_pop : nif ne snoisserppus/snoitresni sed saC 3.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisserppuS 2.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitresnI 1.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnemé lé’d no isserppus uo no itresnI 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selpmexE 3.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < ruetarépo’L 2.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . == ruetarépo’L 1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruenetnoc ed nos iarapmoC 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . paws noitcnof aL 4.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . raelc noitcnof aL 3.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ngissa erbmem noitcnof aL 2.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatceffa’d ruetarépO 1.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selabolg snoitac ifidoM 2.1 . . . . . . . . . . . . . . . . . . . . . . epyt emêm ed ruenetnoc ertua nu’d ritrap à noitcurtsnoC 5.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneuqés enu’d ritrap à noitcurtsnoC 4.1.1 . . . . . . . . . . . ruelav enu à sésilaitini stnemélé’d énnod erbmon nu ceva noitcurtsnoC 3.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnemélé’d énnod erbmon nu ceva noitcurtsnoC 2.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ediv ruenetnoc nu’d noitcurtsnoC 1.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itcurtsnoC 1.1 . . . . . . . . . . . . . . . . . . . . . . . euqed te tsil ,rotcev sruenetnoc xua senu m moc sétilannoitcnoF - 1 ............................... Table des matières
  • 22. 285 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dnif erbmem noitcnof al rap ehcrehceR 3.4.1 185 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetaréti rap sèccA 2.4.1 185 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] [ ruetarépo’l rap sèccA 1.4.1 1 8 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stnem é lé xu a sè cc A 4.1 185 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruenetnoc nu’d erdro’l ed xiohc ud secneuqésnoC 4.3.1 085 . . . . . . . . . . . . . . . . . . . . ruenetnoc nu rap eésilitu erdro’d noitaler al ertîannoc ruoP 3.3.1 975 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruenetnoc ud euqèsnirtni erdro’l ed xiohC 2.3.1 975 . . . . . . . . . . . . . . . . . . . . . . . . . . tuaféd rap erdro’d noitaler al tnasilitu snoitcurtsnoC 1.3.1 875 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pam epyt ed ruenetnoc nu’d no itcurtsnoC 3.1 8 7 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r i ap s e ss a l c e d no rt a p eL 2.1 675 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f itcudortni elpmexE 1.1 675 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pa m ruenetnoc eL - 1 575 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 26 : Les conteneurs associatifs 275 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eueuq_ ytiro irp ruetatpada’L 3.5 175 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eueuq ruetatpada’L 2.5 075 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . kcats ruetatpada’L 1.5 075 . . . . . . . . . . . . . . . . . . . . . . . .eueuq_ytiroirp te kcats ,eueuq : ruenetnoc ed sruetatpada seL - 5 965 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 5.4 865 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eriomém tnemecalpme’ l ed no itseG 4.4 865 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ertua enu snad etsil ed eitrap enu’d trefsnarT 4.3.4 765 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setsil xued ed noisuF 3.3.4 665 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elbuod ne stnemélé sed noisserppuS 2.3.4 665 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etsil enu’d irT 1.3.4 565 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se labolg sno itarépO 3.4 565 . . . . . . . . . . . . . . . . . . . . . . . . . . noitidnoc enu à tnadnopér stnemélé sed noisserppuS 2.2.4 565 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .eénnod ruelav ed stnemélé sed noisserppuS 1.2.4 465 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoisserppus te snoitresnI 2.4 465 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .stnatsixe stnemé lé xua sècc A 1.4 465 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tsil ruenetnoc eL - 4 365 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 2.3 265 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elarénég noitatnesérP 1.3 265 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euqed ruenetnoc eL - 3 165 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sneéloob ed sruetcev sed rei luc itrap saC 5.2 065 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 4.2 955 . . . . . . . . . . . . . . . . . . . . . . ruetcev nu’d eriomém tnemecalpme’l ed noitseg ed slituO 3.3.2 955 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secneréfér ed uo sruetaréti’d noitadilavnI 2.3.2 855 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcudortnI 1.3.2 855 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eriomém tnemecalpme’ l ed no itseG 3.2 855 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoisserppus te snoitresnI 2.2 855 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tnemélé reinred ua sècca’l ed saC 3.1.2 755 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecidni rap sèccA 2.1.2 755 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetaréti rap sèccA 1.1.2 755 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .stnatsixe stnemé lé xua sècc A 1.2 655 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rotcev ruenetnoc eL - 2 XXII Apprendre le C++
  • 23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se mhtirogla te sfitaicossa sruenetnoC - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tesitlu m ruenetnoc eL - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euq itaméhtam e lbmesne’l te tes ruenetnoc eL 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e larénég no itatnesérP 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tes ruenetnoc eL - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e larénég no itatnesérP 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pa mitlu m ruenetnoc eL - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elpmexE 8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . séti libissop sertu A 7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . er iomém no itseG 6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoisserppuS 2.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitresnI 1.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sno isserppus te sno itresnI 5.1 195 095 095 985 985 985 785 685 685 585 585 485 485 385 285 Chapitre 27 : Les algorithmes standard 216 016 016 906 706 706 706 606 606 506 406 306 106 006 006 995 895 895 695 595 595 495 495 495 395 395 395 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ir t ed s e mh ti roglA - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . » noisserppus ed « stid se mhtiroglA - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoit itraP 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seriotaéla snoitatumreP 3.2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitatumrep ed noitarénéG 2.2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatoR 1.2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruelav ed snoitatumreP 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruelav ed tnemeca lpmeR 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneuqés enu’d noita mrofsnart ed se mhtiroglA - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . muminim ed uo mum ixam ed ehcrehcer ed semht irogl A 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . erianu tacidérp nu uo éti lagé enu rus sédnof semht irogl A 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eh cr ehc e r ed s e mh ti roglA - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itcnof enu rap sruelav ed no itarénéG 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ertua enu snad ecneuqés enu’d e ipoC 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s etnat si x e se cneuq és ed n oi tas ilai tini ’d s e mh ti roglA - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eértne’d tolf ed ruetarétI 2.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eitros ed tolf ed ruetarétI 1.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . to lf ed ruetarétI 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itresn i’d ruetarétI 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secneuqés te semht irogl A 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetaréti’d seirogétac sed eihcraréiH 3.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eitros ne ruetarétI 2.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eértne ne ruetarétI 1.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetaréti’d se irogétac seL 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruetaréti te semht irogl A 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selarénég snoitoN - 1 ................................. Table des matières XXIII
  • 24. 946 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smon ed secapse xued ceva elpmexE 2.1 846 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smon ed ecapse levuon nu’d noitaérc ed elpmexE 1.1 746 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s mon ed secapse’d noitaérC - 1 746 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 30 : Les espaces de noms 346 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t es tib es sal c aL - 3 246 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . secidn i’d sruetceV 7.2 146 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .sruetcev ed snoitceS 6.2 0 4 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euq sam r ap s rue la v e d no it c e l éS 5.2 8 3 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . le ir ot c ev luc laC 4.2 836 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . el liat ed tnemegnahc te no itatceff A 3.2 8 3 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ][ rue t ar ép o’L 2.2 7 3 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y a rr a l av s e ss a l c se d sru et curt snoC 1.2 736 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seéicossa sessalc sel te yarralav essalc aL - 2 536 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x e l p m o c e s s a l c a L - 1 536 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 29 : Les outils numériques 136 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reivalc ua serutcel sel resilibaif ruop noitasilitU 2.2.7 036 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitatnesérP 1.2.7 036 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .maertsgn irts i essalc aL 2.7 9 2 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m ae rt sgn irt s o es s a l c aL 1.7 926 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erio mé m ne egata mrof ed sétilibissop seL - 7 826 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stn eme c a l pmeR 3.6 726 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sn o i ss er p puS 2.6 6 2 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sn o i tr esn I 1.6 626 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stne mecalp mer te snoisserppus ,snoitresn I - 6 526 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etius enu’d tnesba uo tnesérp erètcarac nu’d ehcrehceR 2.5 526 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erètcarac nu’d uo enîahc enu’d ehcrehceR 1.5 426 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . enîahc enu snad ehcrehceR - 5 426 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . no itané tacn oC - 4 326 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selabolg snoitarépO - 3 226 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitcurtsnoC - 2 226 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s é t i l a r é n é G - 1 126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 28 : La classe string 816 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s a t e d n o i t a l u p i n a m e d s e m h t i r o g l A - 0 1 616 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etsilb mesne erètcarac à se mhtiroglA - 9 516 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euqiré mun erètcarac à se mhtiroglA - 8 416 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisuf ed semhtirogl A 2.7 416 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . er ianib ehcrehcer ed semhtirogl A 1.7 316 . . . . . . . . . . . . . . . . . . . seénnodro secneuqés sed rus noisuf ed te ehcrehcer ed se mhtiroglA - 7 XXIV Apprendre le C++
  • 25. 186 186 086 086 086 976 976 876 876 776 776 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serb me m snoitcnoF - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stne mugra srueisulp à snoitcnoF - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . st ib ed spmahc sed sac : noitpecxE 6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selba irav stnemugra à sno itcno F 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruetas ilitu’l rap se in iféd snoisrevnoC 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sdradnats snoisrevnoC 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqirémun sno itomorP 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etcaxe ecnadnopserroc enu’d ehcrehceR 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . tne mugra lues nu à noitcnof enu’d ehcrehcer ed e mhtiroglA - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setadidnac snoitcnof sed noitani mretéD - 1 ........... Annexe A : Règles de recherche d’une fonction surdéfinie 576 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éiti ma’d noitaralcéd te s mon ed secapsE - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se mynona secapse seL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . saila seL - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gnisu evitcerid al ed étivitisnarT - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s mon ed secapse sed noitacirb mI - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed ehcrehcer te s mon ed secapsE - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smon ed secapse sel ruop gn isu evitcer id aL 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sétïugibma te egauqsaM 2.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . elarénég noitatnesérP 1.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selobm ys sel ruop gnisu no itaralcéd aL 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gnisu snoitcurtsni seL - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smon ed secapse’d elatnemércn i noitaérC 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smon ed ecapse nu snad tnarug if sno itcurtsnI 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etêt -ne re ihc if te smon ed ecapsE 3.1 166 166 066 066 956 756 556 456 256 256 256 156 056 056 Chapitre 31 : Le préprocesseur et l’instruction typedef 376 276 276 176 076 966 866 666 466 466 366 366 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]3[tn i ed emynonys nu’d noit iniféD 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * tn i ed emynonys nu’d noit iniféD 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tn i ed emynonys nu’d noit iniféD 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fedepyt ceva se mynonys ed noitiniféd aL - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisserpxe enu’d rue lav a l à eé il noitaroprocnI 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selobm ys ed ecnetsixe’ l à eé il noitaroprocnI 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ellennoitidnoc noitalip moc aL - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sorcam ed noit iniféD 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selobm ys ed noit iniféD 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . enifed# evitcerid aL - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . edulcni# evitcerid aL - 1 ................ Table des matières XXV
  • 26. 927 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sruerre sed noitseG 01.1 9 2 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r e ih c i f ed ru etn i o p e l rus n o i tc A 9.1 827 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . egatamrof snas seitros-seértnE 8.1 727 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serètcarac ed seitros-seértnE 7.1 527 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .sno itcnof sec rap sési litu tamrof ed sedoc seL 6.1 527 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof sec à senummoc selgèR 5.1 427 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e ét am ro f erut c eL 4.1 227 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof siort sec ceva selbasi litu tamrof ed sedoc seL 3.1 127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . eétamrof erutircÉ 2.1 0 2 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sr e ihc if s e d no it se G 1.1 027 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) o i d t s c ( s e i t r o s - s e é r t n E - 1 917 . Annexe G : Les principales fonctions de la bibliothèque C standard 717 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sr e vid s e mhti r oglA - 01 617 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sat ed noitalupina m ed se mhtiroglA - 9 317 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . etsilb mesne erètcarac à se mhtiroglA - 8 217 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . euqiré mun erètcarac à se mhtiroglA - 7 017 . . . . . . . . . . . . . . . . . . . seénnodro secneuqés sed rus noisuf ed te ehcrehcer ed se mhtiroglA - 6 807 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . irt ed se mhtiroglA - 5 607 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noisserppus ed se mhtiroglA - 4 307 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ecneuqés enu’d noita mrofsnart ed se mhtiroglA - 3 107 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ehcrehcer ed se mhtiroglA - 2 007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setnatsixe secneuqés ed noitasilaitini’d se mhtiroglA - 1 996 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annexe F : Les algorithmes standard 796 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serb me m sed rus sruetniop sel te egatiréh’L - 3 696 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seénnod serb me m sed rus sruetniop seL - 2 596 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .serb me m snoitcnof sed rus sruetniop seL - 1 596 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annexe E : Les pointeurs sur des membres 196 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annexe D : Comptage de références 986 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annexe C : Les différentes sortes de fonctions en C++ 686 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rtp_otua essalc al : tnegilletni ruetniop ed tpecnoc eL - 3 486 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . noitasilaitini rap secruosser ed noitseg ed euqinhcet aL - 2 386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seuqita motua stejbo sel rap sésop se mèlborp seL - 1 386 . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVI Annexe B : Compléments sur les exceptions Apprendre le C++
  • 27. Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )p mjtesc( xuacol non stne mehcnarB - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )onrrec( sruerre sed noitseG - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )tressac ( tniop ua esi m ed orcaM - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )bildtsc( seriatilitU - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )hta mc( seuqita méhta m snoitcnoF - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )gnirtsc( senîahc ed noitalupinaM - 3 . . . . . . . . . . . . . . . . . . . . )epytcc( selucsuni m-selucsuja m snoisrevnoc te serètcarac ed stseT - 2 537 537 437 337 237 037 927 Annexe H : Les incompatibilités entre C et C++ 147 047 047 047 937 937 837 837 837 837 737 737 737 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitcnof ed s mon seL - 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . serètcarac ed xuaelbat ed noitasilaitin I - 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . snoitaré muné seL - 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . otog noitcurtsni’L - 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selpitlu m snoitiniféd seL - 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . erètcarac epyt ed setnatsnoc seL - 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sélc-stoM - 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * diov epyt ed sruetniop seL - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tsnoc fitacifilauq eL - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ruoter ed ruelav snas snoitcnoF - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stne mugra snas snoitcnoF - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sepytotorP - 1 ........................ Table des matières XXVII
  • 28. -a mrofni ne stnangiesne xua te srueppolevéd xua ,stnaiduté xua sio f al à esserda’s lI .++C ne t e j b o e ét n eir o n oi t a m m ar g or p al r es irt î a m t n e ti a h u os i u q x u e c s u o t à é n i ts e d ts e e g ar v u o t e C 2 Objectifs et structure de l’ouvrage .8991 telliuj ne ISN A’l rap eéilbup été a ++C ed evitini féd emron a L .)yrarbiL etalpmeT dradnatS( L.T.S elgis el rap tnevuos engiséd no’uq seuqirénég sessalc ed te snoitcno f ed e mro f suos tnatnesérp es xuanigiro dradnats stnasopmoc ed tuotrus te snoisnetxe seuqleuq ed eihcirne a’l ,esuac ne ertte mer al snas ,iuq ISNA étimoc ud liav -ar t u a es ab ed i vre s a i uq erè inr e d e t te c t se’ C .1991 ne 3 t e 1.2 sn o isre v se l ,9891 ne 0 .2 n ois -rev al : tnos etad ne serèinred se L .egagnal ud ecneré fér ed ivres tno T&TA ed snoitacilbup e d er b m o n n i a tr e c n u , t n e m e l a it i n I . é ul o v é u e p e u ql e u q a + + C e g a g n al e l , n o it asi l a mr o n as à’uqsuj noitpecnoc as eD .O.O.P al srev eérutcurts noitam margorp al ed ruecuod ne noitis -nart enu reutce ffe’d C srue mmargorp sed à si mrep a li ,erusem eniatrec enu snaD .O.O.P ed s t p e c n o c s e l r e u q il p p a’ d t n at t e mr e p i u l s ét i c i fi c é p s e d er b m o n n i a tr e c n u ,) C el( t n a t si x e ér ut -curts egagnal nu à erdniojda à éhcrehc a ,ruetaérc nos ,purtsuortS enrajB ,te ffe nE .edirb yh ehcra méd enu tnavius uçnoc été a ,iul à tnauq ,++C egagnal e L .avaJ ,tnem mecér sulp ,uo lef fiE ,alu miS ,klatllamS euq slet » stejbo sétneiro « stid segagnal xuaevuon ed à ecnas -sian énnod tno ).O.O.P égérba ne( tejbo eétneiro noitammargorp al ed stpecnoc sel ,tôt sèrT 1 Historique de C++ Avant-propos
  • 29. .serianidro snoitcnof sec euq elôr emêm el tnemeuqitarp tnemelanif tnauoj ,tejbo euqnocleuq nu’d setnadnepédni ,» essalc ed sedohtém « sed riniféd ed tnettemrep ,avaJ tnod ,segagnal sniatrec ,tiaf nE .2 .C egagnal ud sruessiannoc xua tnemeuqificéps esserda’s ,C sruemmargorp sel ruop ++C ,ruetua emêm ud egarvuo ertua nU .1 erutagil al tnos euq selbasnepsidni sia m seécnava snoiton sel reppolevéd neib ed nios sirp snova suon ,tirpse emêm el snad sruojuoT . » euqinonac essalc « ed noiton al à tnesiudnoc iuq stne mélé ,noitatce ffa’d ruetarépo’l ed noitini féder al rus euq isnia ,eipocer ed ruetcurtsnoc ud elôr el rus étsisni tnemegral snova suon euq ,elpmexe rap ,isnia tse’C .sessalc serporp ses ed tniop ua esim al te tnemeppolevéd el ,noitpecnoc al snad lennoitarépo tne metia frap rineved ed ruetcel ua ertte mrep isnia snosnep suoN .)snoitpecxe’d noitseg ,stolf ,sei ma snoitcno f ,sruetarépo’d noitini fédrus( egagnal ua seuqi ficéps sèrt stcepsa sel issua siam ,)euqirénég noit -am margorp ,e msihprom ylop ,noitini féder ,egatiréh ,ruetcurtsed ,ruetcurtsnoc ,essalc( .O.O.P ed stpecnoc srup sel tnemelues non ,snotiart y suoN .egarvuo’l ed étivitsuahxe’l à eriun tnatua ruop snas sia m ,evissergorp noça f ed sédroba etiusne tnos tejbo sétneiro stcepsa se L .eiuppa’s elle selleuqsel rus selatne madnof snoiton sertua sel seélim - iss a t n os d n a u q ess a l c e d n oi t o n al r e t n e s ér p e d e li c a f s ul p t s e l i , e u q i g o g a d é p n al p n u r u S • . e g a g n al u d s é t il i bi s s o p seniatrec ed revirp es à tiardneiver , » tejbo noita mmargorp erup « enu à sap tnednopserroc en selle’uq etxetérp suos ,snoitcno f sellet ed resilitu sap eN .sruetarépo’d noitini fédrus al euq sellet secnatsnocric seniatrec snad ++C ne selbasnepsidni emêm tnos )tejbo nu’d setnad -nepédni( serianidro snoitcnof seC . stejbo sed à tnemeriotagilbo tnauqilppa’s sedohtém sed euq etsixe’n li ùo tejbo egagnal rup nu’d sac el sap tnemeuqiroéht tse’n iuq ec ,tejbo étneiro non egagnal nu’uq ertit emêm ua » serianidro snoitcno f « sed rini féd ed temrep ++C e L • . » edohtém « ed iulec snad étpada tne merègél evuort es noitcno f ed tpecnoc el lueS .cte ,elôrtnoc ed erutcurts ,noitatce f fa ,sep - yt ,selbairav : eérutcurts noitammargorp ed stpecnoc sed trapulp al rus eiuppa’s .O.O.P a L • : setnavius snosiar sel ruop ei fitsuj es ehcra méd etteC .tejbo sétneiro stpecnoc sel redroba’d t n a v a , + + C u d e ér u t c urt s n oi t a m m ar g or p e d s é t il i bis s o p s e d el b m es n e’ l s n o i d ut é y s u o N . el l e n n osr e p n o it at n e m ir é p x e e n u à tr a p é d e d t ni o p e d erocne uo liavart ed tnemennorivne erporp ertov snad etcerid noitatne mirépxe enu à ,noitseuq ne noiton al ed edipar noisivér enu à uo evitiutni ecnassiannoc ed esirp enu à rivres tne melagé tuep elpmexe teC .leér etxetnoc nu snad ervuœ ne erttem al tnem moc tnartnom )noituc -éxe’d elp mexe nu’d itrossa te( telp moc siam elpmis em margorp nu’d eértsulli tse elatnemad -no f noiton euqahc ,tne melarénéG .fissergorp sruoc nu’d emro f al suos uçnoc tse egarvuo’L .)...PHP ,avaJ ,tpircSavaJ ,noht yP ,lreP ,ihpleD ,cisaB lausiV ,++C/C ,lacsaP ,loboC( iuh’druojua egasu ne segagnal sed trapulp al à senummoc tnos iuq ,.cte ,snoitcno f e d , el ôrt n o c e d s er u t c ur ts e d , n o i t a t c e f f a’ d ,s e p yt e d ,s el b air a v e d s n oi t o n x u a é u ti b a h ts e li’uq erid-à-tse’c ,eérutcurts noitam margorp al ed ecneirépxe enu àjéd edèssop ruetcel el euq esoppus li ,ehcnaver ne ; C egagnal ne in ,O.O.P ne ecnassiannoc enucua treiuqer en lI .euqit 2 1 XXX Avant-propos AVANT-PROPOS
  • 30. .C ne tircé edoc ud resilituér tnatiahuos ++C ruem margorp ua tuotrus tnorivres sellE .++C te C ertne tnatsixe setnatrop mi sulp sel secneré ffid sel relangis tnenneiv » C nE « seértit seuqramer seuqleuq ,ertuo nE .avaJ ed eduté’l redroba aretiahuos ,++C ud esirtîa m al sèrpa ,iuq ruetcel ua tnemelagé sia m ,++C el ici dnerppa iuq avaJ rue mmargorp ua tnemelues non selitu tnores s el l E . + + C te a v aJ ert n e t n at si x e s er u ej a m se c ner é f fi d se l r us t ne cc a’l t n et te m s el l E . » a vaJ nE « seértit seuqramer sesuerbmon ed tiudortni snova suon ,avaJ egagnal ud étiralupop al ed unet etpmoC .++C egagnal ud OSI/ISNA emron al rus édno f tnemerèitne tse egarvuo’L 3 L’ouvrage, C, C++ et Java .stnasopmoc ses ed trapulp al ed noitasilitu ennob al tnennoitidnoc iuq semhtirogla’d te ruetaréti’d ,ruenetnoc ed sellec trap ertua’d ,seuqirénég s n o it c n o f e d t e s ess al c e d s n o it o n s e l tr a p e n u’ d t n e m el b al a ér p r es o p x e’ d n i os sir p r i o v a s èr p a ,liatéd ne eéiduté été a . L.T.S al ,e mê m eD .e msihprom ylop el tse’uq ).O.O.P al ed te( egagnal ud etnassiup sulp al noiton al rus tnehcuobéd selleuqsel ,setiartsba sessalc sel te euqiman yd 3 - L’ouvrage, C, C++ et Java XXXI
  • 31. .euqissalc larudécorp egagnal nu ceva ésirailimaf àjéd cilbup nu à esserda’s egarvuo’l euq snoleppaR .1 . .O.O.P ed stpecnoc sed tcniccus ésopxe nu rap te )elarudécorp uo( eérutcurts noita mmarg -orp al tnanrecnoc sleppar s ferb ed rap snorecnem moc suon ,rednehérppa sel xueim ed erttem -rep suov ruoP .++C ed selleitnesse seuqitsirétarac sel reni maxe’d ici snosoporp suov suoN .8991 ne IS N A’l rap noitasila mron as à’uqsuj ,snoisrev srueisulp unnoc a ++C .0991 ne ISNA’l rap ésilam -ron été a C .tnemelèllarap reulové’d éunitnoc tno ++C te C segagnal xued sel ,2891 sèrpA .).O.O.P égérba ne( » tejbo eétneiro noitammargorp « ed sétilibissop sed euqissalc elarudécorp noitam margorp ed egagnal nu rus » re fferg « ed ,etros euqleuq ne ,cnod te C egagnal ua sessalc sed retuoja’d tiaté purtsuortS .B ed lapicnirp fitcejbo’L .8791 ne eihctiR te nahgninre K rap ésilamro f ,eihc -tiR sineD rap 2791 sèd éérc emê m-iul ,C egagnal ud noisnetxe enu em moc ,2891 sèd ,)seir -otaroba L lleB T&TA( purtsuortS enrajB rap 2891 ed ritrap à uçnoc été a ++C egagnal e L 1 Présentation du langage C++ 1
  • 32. r er o i l é m a n e’ d t n e m el a g é ti art t e mr e p e l l e’ u q ér é p s e ti a v a n O . e s s et s u b or a l t e e d u ti t c a x e’ l reroiléma ne’d ,tnatrap ,te ,sem margorp sel rerutcurts ed simrep a elle ,tne mmatoN .sleicigol se d n o it c u d or p a l e d é ti la u q a l r ess er g or p t ia f t n e m et se f i n a m a eér ut c urts n oi ta m m ar g or p a L .) » o t o g s n as n o i t a m m ar g or p « e d s i o fr a p e lr a p n o( s e i n -i féd neib elôrtnoc ed serutcurts ed erb mon niatrec nu tnesilitu serudécorp sel ,trap ertua’D .serudécorp sec ed setnadnepédni tnemelarénég ,seénnod ed serutcurts setneré ffid ed te ser -udécorp setneré ffid ed noinuér al ed émro f tse em margorp nu ,eérutcurts noita mmargorp nE 1.2 La programmation structurée .seuqimonocé snosiar sed ruop euq ec-tiares en ,dnoces el snad xuaicurc tnemelbaborp tnores sli’uq srola ,sac reimerp el snad ecnatropmi’d erèug tnorua’n étilibasilituér te étilibisnetxe stcepsa sel ,e mê m eD ! seénna-se mmoh xid ed tejorp nu’d tiga’s li’uqsrol tnemertua tuot av ne li ; snoitcurtsni’d eniatnec enu etrop - moc li’uqsrol etsubor te tcaxe em margorp nu erircé’d elica f tse li ,elpmexe raP .sénrecnoc stejorp sed ecnatrop mi’l à eéil tnemelleitnesse te etnerappa’uq tnevuos tse’n noitcidartnoc a L ...erio mé m elliat ,noitucéxe’d sp met : ecneiciffe’l • ; s n o i t a t n e m él p mi setneré f fid snad leicigol emêm nu retiolpxe tuep no elleuqal ceva étilica f : étilibatrop al • ; e m èlb orp er t ua n u erduosér ruop leicigol ud )seludo m( seitrap seniatrec resilitu’d étilibissop : étilibasilituér al • ; snoitaci ficéps sed noitulové enu à eriafsitas ruop étpada ertê arruop emmargorp nu elleuqal ceva étilica f : étilibisnetxe’l • ; noitasilitu’d sela mron snoitidnoc sed etracé’s no’l euqsrol rigaér neib à edutitpa : essetsubor al • ; )snoitaci ficéps xua tnadnopserroc seénnod ,elp mexe rap( noitasilitu’d selam -r o n s n o it i d n o c s e d s n a d ,s ul u o v st at l us ér s el ri nr u o f à l ei ci g o l n u’ d e d u t it p a : e d u t i t c a x e ’ l • : t n e m m at o n ,s er èt ir c s ni atr e c t n a v i us r er u s e m e d e t n e t n o’ u q é ti l a u q e d secnegixe sed ceva sleicigol sed )e mret ud leirtsudni snes ua( eriudorp ed tiga’s li ,eriartnoc ua ,sertua’d ruoP .euqserp uo emèlborp leuq etropmi’n erduosér à rinevrap ruop )tniertser er b m o n n e( s eri at n e m él é s n oi t c ur ts ni s e d r e n î a h c n e’ d t i f f us li l e u q el s n a d , n it n a f n e n oi t c ur t -s n o c e d u ej n u’ d e u q t i g a’s e n l i , t e f f e n e ,s n i a tr e c r u o P . el at o t n oi t c i d ar t n o c a l à’ u qs u j t n a ll a sesrevid snoitcaér sed éticsus sruojuot a noita mmargorp ed étivitca’l ,tnanetniam à’uqsuJ 2 1.1 Problématique de la programmation 1 Programmation structurée et programmation orientée objet Présentation du langage C++ CHAPITRE 1
  • 33. .selôr te stnemugra ,smoN .2 .elbatiah -uos sap tios en elle’uq erid sap tuev en iuq ec ,eriotagilbo sap ares en noitaluspacne’l ,++C ne ,reilucitrap nE .esuer -uogir sniom uo sulp erèinam enu’d séuqilppa ertê tnevuep .O.O.P al ed stpecnoc sel euq teffe ne snorrev suoN .1 tejbo’l ed sruetasilitu sel ; emêm-iul tejbo’l rus euq ecnedicni’d a’n tejbo nu’d seénnod sed erutcurts al ed elleutnevé noitaci fidom enu : ecnanetnia m al tnemelbarédisnoc etilica f ellE .leicigol ed étilauq ed erèita m ne etse fina m têrétni nu etnesérp seénnod sed noitaluspacne’L . e és il a ér s a p t i a t é’ n s e é n n o d s e d n oi t c arts b a’l , n oi t a l us p a c n e’ d et u a f ,euq sia m ,snoitaci ficéps ses rap )rueirétxe’l ed( eésirétcarac ertê tne melagé tiavuop erudéc -orp enu ,eérutcurts noita mmargorp ne’uq reuqramer tuep no ,soporp ec À .)séhcac tnos noit -atne mélpmi’d stercnoc sliatéd sel euq neib emirpxe iuq ec( » seénnod sed noitcartsba « enu esilaér elle’uq tnasid ne noitautis ellet enu tnevuos tircéd nO .ecnatrop mi snas tnaté seénnod sel seétnalp mi tnemelleér tnos tnod erèinam al ,sedohtém ses ed snoitaci ficéps sel rap tnem -euqinu esirétcarac es tejbo nu ,rueirétxe’l ed uv ,euq tse noitaluspacne’l ed etirém dnarg e L .t ej b o’l à » e g ass e m « n u’ d i o v n e’l tia f ne tse edohtém enu’d leppa’l euq tnasid ne alec sio frap tiudart nO .eriotagilbo ecaf -r e t ni’ d el ôr el is ni a t n e u oj i u q ,s e d o h t é m s es e d eri ai d é mr e t ni’ l r a p r ess a p e d er i a ss e c é n ts e li ; tejbo nu’d seénnod sel rus tnemetcerid riga’d elbissop sap tse’n li’uq ei fingis aleC . enu emmon no’l euq ec esilaér no , » erup « .O.O.P ed reifilauq tiar -ruop no’l euq ec snad ,te ffe nE .noitisopatxuj elp mis enu’uq sulp tse noitaicossa ettec siaM 2 s eén -n od s ed n o italus pa cn e 1 1.3.2 Encapsulation te j b O = s eé n n o D + s e d o h t é M : tse .O.O.P al ed noitauqé’l euq erid tiarruop no ,htriW ed noitauqé’l ceva eigolana raP .seénnod sec rus tnassiga )sedohtém srola el le p pa n o’ u q( s er u d éc or p s e d t e s eé n n o d s e d n oi ta ic oss a e n u ri o va s à , ’ d t p e c n o c el r us tnemetsuj eédno f ,)O.O.P égérba ne( tejbo eétneiro noita mmargorp al tneivretni’uq àl tse’C tej b o 1.3.1 Objet 1.3 Les apports de la programmation orientée objet seénnod ed serutcurts + se mhtirogla = se mmargorP : » htriW ed noitauqé’l « e mmon no’l euq ec rap émusér evuort es leuqel ,serudécorp sel te seénnod sel ertne tnatsixe egalpuocéd ud esuac à tnemésicérp tîar -appa étluci ffid ed ep yt ec ,rO .seénnod ed erutcurts enu esuac ne erttemer ed eriassecén tiaté li’ u q e cr a p i c e c t e ,t n a ss er ét n i e l u d o m e l » r e ss a c « à t n e v u os ti as i u d n o c l e i ci g ol n u’ d n o i t as il -ituér al uo noitatpada’l euq uçrepa tse’s no ,euqitarp ne ,rO .étilibasilituér al te étilibisnetxe’l 1 - Programmation structurée et programmation orientée objet 3
  • 34. .essalc emêm enu’d stejbo sed elbmesne’l à senummoc tnemevitceffe tnos sed -ohtém sel ,ehcnaver nE .tejbo euqahc à serporp tnaté seénnod sel ,enummoc tse erutcurts al elues ,udnetne neiB .2 .elb -airav rap tejbo tom el te tejbo rap écalpmer tse essalc tom el ,)elpmexe rap ,lacsaP obruT( segagnal sniatrec snaD .1 .reilucit -rap egagnal nu à rehcatta suon snas .O.O.P al ed sepicnirp sdnarg sel recnoné’d snonev suoN 1.4 P.O.O., langages de programmation et C++ .s te jb o sec ed fitce ffe ep yt ud ecnassiannoc riova’d tnava tircé ,tne melleutnevé ,te ilbatéérp oiranécs nu snad stejbo xuaevuon ed retuoja’d tnattemrep ne ,sem margorp sed étilibisnetxe’l eroil -éma emsihpro m ylop e L .seini féder été tno sedohté m serporp ses tnod erèinam al ed reilucit -rap ne ,)esab ed essalc ettec ed eéviréd( evitce ffe essalc as ed dnepéd fitce ffe tnemetropmoc nos sia m ,esab ed essalc ettec ed tiaté li’s em moc tejbo euqahc esilitu no ,tnemésicérp sulP . es a b e d ess al c e m ê m a l e d s e é vir é d s es s a l c e d s u ot t n e i os s li’ u q u e p r u o p ,s t n er é f fi d s e p yt e d stejbo sed erèina m emêm al ed retiart ed étilibissop al erid-à-tse’c ,emsihpro m ylop el e mmon no’l euq ec ed élc al tse étilibissop etteC .esab ed essalc as ed seétiréh sedohté m sed sen -iatrec )rei fido m erid-à-tse’c( » rini féder « tuep eéviréd essalc enu ,O.O.P ne ,tnemelarénéG 1.3.5 Polymorphisme .)A ed etiréh e mê m-elle iuq ,B ed retiréh tuep C essalc al( eriassecén euq sio f ed tnatua érétiér ertê tuep li’uq sulp tnatua’d ,stnatsixe stiudorp ed noitasilituér al tne megral etilica f egatiréh’l ,retuod ne’s tuep no e mmoC .étnolov à » resilaicéps « sel te tniop ua tne metia frap serueir -étna snoitasilaér sed rus re yuppa’s isnia tuep ,enneicna’l ed sedutitpa sed te sétéirporp sed » e tir é h « i u q , ess a l c e ll e v u o n a l e d n oi t p e c n o c a L .s e d o h t é m s e ll e v u o n e d t e s e é n n o d s e ll e v -uon ed etuoja no elleuqal à ,)! colb ne esilituér no’uq( etnatsixe essalc enu’d ritrap à essalc ellevuon enu rini féd ed te mrep lI .egatiréh’d iulec tse .O.O.P ne tnatrop mi tpecnoc ertua nU 1.3.4 Héritage .)essalc as ed » ecnatsni « enu tse tejbo nu’uq issua tid no( essalc ep yt let nu’d selbairav sed em moc srola tnessiarappa stejbo se L .sedohtém se mêm sed tnasopsid te enum moc seénnod ed erutcurts enu tna ya stejbo’d elbmesne nu’d noitpircsed al euq ertua’d neir tse’n essalc enu ,te ffe nE .seuqissalc segagnal sel snad ertnocner no’l euq ep yt ed noiton al ed noitasilar -énég al à tnemelpmis dnopserroc iuq , essalc ed tpecnoc el tnemelarénég tîarappa .O.O.P nE 2 1 1.3.3 Classe .t ej b o n u’ d n oi ta si li t uér a l t n e m e d n ar g etilica f seénnod sed noitaluspacne’l ,erèinam emêm al eD .)eérutcurts noitam margorp al ceva sac el sap rûs neib tiaté’n iuq ec( noitaci fidom ettec ed ruenet al rap sénrecnoc sap tnores en 4 Présentation du langage C++ CHAPITRE 1
  • 35. ; noitalip moc al à eéxi f elliat ed ,ep yt emêm ed stne mélé’d selb mesne : xuaelbat sel • : tnos euq seénnod ed stagérga sel arevuort nO . ess al c e n u’ d e mr o f s u os , + + C ed tejbo seétneiro sétilibissop sel snad tia f ne artîarappa leuqel ,erèitne trap à enîahc ep yt nu’d sap tiga’s en li’uq arrev no ; serètcarac ed senîahc sed noitatnesérper ed noitnevnoc enu • ; erètcarac ep yt el • ; snoisicérp te séticap -ac setneré f fid ceva stnattol f ,séticapac setneré f fid ceva sreitne : sleusu seuqirémun sep yt sel • : arevuort no ,seénnod sed esab ed sep yt sel enrecnoc iuq ec nE .sruetniop sed noitpecxe’l à ,segagnal sertua sed sellec ed sehcorp zessa tnos te C egagnal ud sellec tia f ne tnos ++C ed eérutcurts noita mmargorp ed sétilibissop se L 2 C++ et la programmation structurée .étilauq ennob ed edoc ud resilaér arruop rue mmargorp el euq egagnal ud esirtîam ennob enu rap euq tse’n eC ..O.O.P te ) » selleusu « snoitcno f sed tnem maton( elarudécorp noitam margorp tnalêm edirb yh etxetnoc nu snad tnaçalp es ne’uq ++C ed essehcir al etuot retiolpxe arruop en no ,egagnal ud e mê m erutan al rap ed ,euq euv ed erdrep sap ardua f en li ,tios ne li’uq iouQ ...selabolg selbairav sed rus drob ed ste ffe sed tnasilaér seuqissalc snoitcno f sed ceva )seénnod sruel ed noitaluspacne etia frap enu tnasilaér euq ecrap ,mon ec ed sengid( stejbo sed retibahoc eria f ed elbissop tia f à tuot aretser li ,elpmexe raP .rueppolevéd ud snoisicéd sed tnemetiorté ardnepéd ++C ne stircé sem -margorp sed étilauq al euq tse esselpuos ettec ed eitrapertnoc al ,tnemesueruehlaM ..O.O.P al srev eérutcurts noitam margorp al ed » ruecuod ne noitisnart « enu tne melagé tiattemrep el l E . C n e s tir c é àj é d s e m m ar g or p e d , + + C c e v a ét il i bi t a p m o c-i s a u q a l à e c âr g , t n a tsi x e’l r e v -resérp ed etirém el tiava purtsuortS .B rap eétpoda noitulos al ,eurappa tse elle ùo euqopé’l À ! lef fiE ceva erup .O.O.P al ed eria f ed euq niol snio m sia m ,C ne .O.O.P eihposolihp enu retpoda’uq niol sulp cnod av ++C ne re mmargorP ..O.O.P al ed sepicnirp sel suot ervuœ ne erttem ed tnattemrep slituo sel )C( udnapér larudécorp egagnal nu à ne unetbo été tef fe ne a lI .euv ed stniop xued sec ertne nimehc-im à eutis es ++C egagnal e L .cisaB uo nartroF em moc segagnal sed à eérutcurts noita mmarg -orp al ed sepicnirp sel reuqilppa à tiatsisnoc iuq ellec à elbarap moc eédi enu àl evuorter nO .)...C ,lacsaP( euqissalc egagnal nu à » .O.O.P eihposolihp enu « rem mon à ecnadnet snoirua suon euq ec ,ruehnob ed sniom uo sulp ceva ,reuqilppa’d retnet sruojuot tuep no ,ésoppo’l À .l acs a P ce v a eér ut c urts n o i ta m mar g or p al r u o p ,s p m et n os ne , ue il ue a enèmonéhp e mêm e L .avaJ uo le ffiE ,tnemmecér sulp ,uo klatlla mS ,alumiS ed sac el elp -mexe rap tse’C . » erup « .O.O.P al ed snom mon suon euq ec resilaér te sepicnirp sec erttel al à reuqilppa ruop )secèip setuot ed( suçnoc ertê tnevuep segagnal sniatrec ,tnemetse fina m rO tnatu oja 2 - C++ et la programmation structurée 5
  • 36. : s et n er é f f i d s n o ç a f x u e d e d )s t e j b o s e d r e ér c i ss u a s n or i d s u o n( s t e j b o s e d » r ei c n a ts ni « arr u o p n o , es s a l c e n u’ d ri tr a p À .sedohtém sel rengiséd ruop » serb me m snoitcno f « • ; e ssa lc e n u à eé ic - oss a s eé n n od e d er ut c urts al e d ser b me m st ner é f fi d s el r en g isé d r u o p » s eé n n od ser b m e m « • : e d t e f f e n e e lr a p n O .s er p or p t n os i ul i u q s e mr et s e d es i li t u + + C , eri al u b a c o v u d n al p el r u S .se d o ht é m se d • ; seénnod ed erutcurts enu’d noitpircsed al • : ar etr op m o c e ssa lc e nU .)r ue t -asilitu’l rap ini féd ep yt ed noiton al ed noitasilarénég( essalc ed noiton al ed esopsid ++C .C egagnal ua ++C ed troppa’l ed leitnesse’l rûs neib tnetnesérper .O.O.P ed sétilibissop se L 3 C++ et la programmation orientée objet .sessalc sed sedohtém xua noitisoppo rap , » serianidro snoitcnof « se d t ne v u os ar e m m o n s el n o ; ess al c et u o t e d t ne m m a d n e pé d ni s ei n i fé d t n os s n oi tc n o f se c euq areton nO .sruetniop ed noitalupinam ed siaib el rap erocne uo )C ne elbissop sap tiaté’n iuq ec( ecneré fér rap ,ruelav rap : ruem margorp ud xiohc ua ,eria f y’s arruop stnemugra sed snoissimsnart a L .noitcno f ed noiton al snad ++C ne arevuorter es erudécorp ed noiton a L ! s e m m ar gorp se l r esir u cés à’ uq egagnal ud sruetalipmoc sed erutircé’l rei filp mis à tnatua tiahcrehc no ,euqopé’l à : 08 seénna xua tnemelani f tnetnomer se mreg sel tnod ,egagnal ud euqirotsih’l à stneréhni tia f ne tnos stcepsa seC .senîahc sed noitatnesérper ed noitnevnoc al à te xuaelbat xua séil tne melagé tnos sli’uq arrev no ,tnemesueiruc zessA .)C à te( ++C à seuqi ficéps zessa tnos sruetniop se L . r o f n oi tc ur ts ni : » r ue t p m oc ceva elcuob « enu ,sertua ertne ,remmargorp ed tnatte mrep elarénég sèrt erutcurts enu • ; elih w te elih w ...od snoitcurtsni : » à’uqsuj « te » euq tnat « ep yt ed elcuob ed serutcurts sel • ; hcti ws noitcurtsni : elpitlum xiohc ed erutcurts al • ; fi noitcurtsni : xiohc ed erutcurts al • : tnennerp moc elôrtnoc ed serutcurts se L .)! noitcurtsni enu sap ,ruetarépo nu tse noitatce ffa’l , + + C n e ’ u q a r e t o n n o ( y + x = x e mr o f a l e d s n o it at c e f f a s e d y = + x n e r ei f il p mis e d t n at t e m -rep xuanigiro noitatce ffa’d sruetarépo sed tne mmaton arevuort no ,)non ,uo ,te( seuqigol te )/ ,* ,- ,+(( seuqitémhtira sruetarépo sed sulp nE .xuerbmon sèrt tnos ++C ed sruetarépo se L .sessalc xua » sruesrucérp « ed tnorivres selle’uq arrev no ; seuqnocleuq sep yt ed stnemélé’d selbmesne : serutcurts sel • 6 Présentation du langage C++ CHAPITRE 1
  • 37. el rap ,rue mmargorp ud eticilpxe edna med al rus ,ecalp ne sim tse emsihpro m ylop e L .sertua srueisulp ed tne ménatlumis retiréh’d essalc enu à tnattemrep » elpitlu m egatiréh’d « setid sétilibissop ed )num moc uep tse iuq ec( emêm te egatiréh’l ed esopsid ++C ,tnemellerutaN .)ess al c e n u t n at é e x el p m o c( taolf >- exelpmoc noisrevnoc al à uo exelpmoc >- tni noisrevnoc al à snes nu rennod arruop no ,elpmexe raP .sessalc sel tnos euq ruetasilitu’l rap siniféd sep yt xua rigralé sel ed tem -rep ++C .seticilpmi uo seticilpxe snoisrevnoc ed sétilibissop ed àjéd tiasopsid C egagnal e L . ei m a n o it c n o f ed noiton al à sruocer el aretissecén noitinifédrus ettec ,sac sniatrec snad ,euq arrev nO ./ ,* ,- ,+ : stnatsixe selobm ys sel resilitu tnorruop snoitarépo sec ,tse sulp iuQ .noisivid ed te noit -acilpitlu m ed ,noitcartsuos ed ,noitidda’d snoitarépo sed rinum al te )sexelpmoc serb mon sed r e t n e s é r p e r à e é n i t s e d ( e x e l p m o c e ssa lc e n u r i ni f é d arr u o p n o , el p m e xe ra P .s i ni f é d ér p se p yt sel ruop ertnocner no’l euq sellec à seugolana snoitarépo’d essalc ettec retod ed erttemrep av » sruetarépo’d noitini fédrus « ed noiton a L .ruetasilitu’l rap ini féd ep yt nu tse essalc a L . eri a f el à se ésir o t ua t ne mûd snoitcno f sed rap tne meuqinu sia m ,éloiv tse noitaluspacne’d epicnirp el ,setreC .essalc al ed )seéluspacne( seénnod xua redécca à )essalc enu rap( seésirotua tnos iuq serb me m snoitcnof e d t i os ,s el l e us u s n o i t c n o f e d t i os ,t i g a’s l I . » ess al c e n u’ d s e i m a s n o it c n o f « s e d ri n i f é d e d ét il -ibissop al snad edisér .O.O.P ed segagnal sertua’d à troppar rap ++C ed sétilanigiro sed enU .ruetcurtsed el rap sérébil ertê tnorruop sreinred sec ; stnemecalpme’d seuqiman yd snoitacolla sed tnautce ffe stejbo’d sac el snad têrétni nu tuotrus aretnesérp ic-elleC .tejbo nu’d noitcurtsed al ed tnemo m ua eét -ucéxe erbmem noitcno f , » ruetcurtsed « nu’d resopsid tuep essalc enu ,eriali mis erèinam eD . é tir u c és e n u t n e m e ts e f i n a m e u ti ts n o c i u q e c , ési l a i ti ni sr u oj u ot ares tejbo’l euq titnarag ruetcurtsnoc nu’d ecnetsixe’L .tejbo’l ed noitasilitu’l à seriassecén stne mecalp me’d euqiman yd noitacolla enu’d eriov ,snoitcurtsni’d tnemeluoréd ua tnad -nopserroc eérobalé sulp noitarapérp enu’d tnemelagé siam ,seénnod serb me m ed snoitasilait - i n i s e l a n a b e d r i g a’s t u e p l i ; r u eir ét l u t n e m e n n oi t c n o f n o b n os t n at t e mr e p l ai ti n i t at é n u s n a d esi m as erid-à-tse’c ,emret ud egral sulp el snes ua ,tejbo nu’d noitasilaitini’l egrahc ne erd -nerp tnemmaton tuep ruetcurtsnoc e L .essalc al ed tejbo nu’d noitaérc al ed tne mom ua eétuc -éxe tse iuq erèilucitrap erb me m noitcno f enu tse ruetcurtsnoc nU .essalc ed » sruetcurtsnoc « s e d e m m o n n o’l e u q e c r i ni f é d e d t e mr e p + + C ,s t e j b o s e g a g n a l s e d tr a p u l p al e m m o C .eulosba noitaluspacne’l euq sellet selgèr seniatrec à tnangiertsa’s ne ,rueugir ed evuerp eriaf ed ruetpecnoc ua elbissop sruojuot etser li ,udnetne neiB .erup .O.O.P ed egagnal nu ertê sap tuep en ++C el ,)C ed noisnetxe( emêm noitpecnoc as rap ,euq euv ed erdrep sap tua f en li si a m r et t er g er el t u e p n O .s a p es o p m i’l e n l i s i a m ,s e é n n o d s e d n o it al us p a c n e’ l t e mr e p + + C .emêm-iul ruem margorp el rap sérég srola tnaté stne mecalpme sel , » sat « nu e mmon no’l euq ec snad euqiman yd noitacolla rap tios • ; » el i p « e n u e m m o n n o’l e u q ec e d e mr o f suos tne meuqita motua sérég srola tnaté stnemecalpme sel ,selleusu snoitaralcéd sed rap tios • 3 - C++ et la programmation orientée objet 7
  • 38. .u n e v tn e m o m e l l ia té d n e snoreiduté sel suoN .sleusu sulp sel semhtirogla sel te )...senîahc ,seénîahc setsil ,seuqi man yd sruetcev( setnatrop mi sulp sel seénnod ed serutcurts sel ervuœ ne ertte m ed tnattemrep snoit - c n o f e d t e s ess a l c e d s n or t a p x u er b m o n e d t n e m m a t o n etr o p m o c el l E .s e i ni f é d ér p s e ss a l c e d te snoitcnof ed erid-à-tse’c ,dradnats euqèhtoilbib enu’d esopsid ++C ,egagnal tuot e mmoC 5 C++ et la bibliothèque standard . H e x en n A ne se él u t -ipacér tnores selle ,noita mro fni’d ertit À .C el sap tîannoc en iuq à emèlborp nucua tnoresop e n s e ll e , er o c n e à L . + + C t e C ert n e s er u e ni m s é ti li b it a p m o c n i s e u ql e u q ets i x e l i ,sr u e l li a r a P . » C nE « seértit seuqramer sed snad , fita mro fni ertit elp mis à r e n n o i t n e m s el e d s n or e t n e t n o c s u o n s u o N .l i a t é d n e s e é i d u t é s a p t n or es e n C u d » s el it u n i s é ti li b iss o p « s e c e u q i os e d a v l i , + + C e g a g n a l e l t n e m e t c eri d s n oi d ut é s u o n , i c i e m m o C .C ud eerf te collac ,collam snoitcno f sel tne m -esuegatnava tnecalp mer iuq )eteled te wen( euqiman yd noitseg ed sruetarépo’d esopsid ++C ,erocne uO .fnacs uo ftnirp euq sellet C ed sdradnats snoitcno f sel seul frepus tnedner iuq )tol f ed noiton al rus seésab( seitros-seértne’d sétilibissop sellevuon ed tiudortni a ++C ,elp mexe r a P . + + C n e )s e t n a d n o d er u o( s e li t u n i t n e n n ei v e d C u d s ét i li b iss o p s e ni atr e c ,sr u e l li a r a P . s ert i p a h c s n i a h c or p s e d li f u a s e ét n es ér p t n e m -ellerutan tuot tnores .O.O.P non snoisnetxe sec euq etros ed ,++C el tnemetcerid snoreiduté suon ,icI .» tejbo étneiro « tnatua ruop tios li’uq snas ,C egagnal ua seétuoja ertê tia f ne tneiar -ruop sellE .O.O.P al à seéil sap tnos en ++C ud snoisnetxe sed seniatrec ,rueugir etuot nE .O.O.P ed sétilibissop sed tnar ffo ,C egagnal ud » elbmesne-rus « nu emmoc tiatnesérp es ++C euq ,etsilpmis uep euqleuq noça f enu’d ,tid snova suon ,tnem medécérP 4 C et C++ . A D A ce v a s ac e l el p m e x e r a p ts e’ c e m m o c , e m ê m- i u l e g a g n a l el s n a d e ér g é t ni t n e m e l a t ot s a p ts e’ n é ti cir é n é g et t e c is e m ê m ,s e u q ir é n é g e d si o fr a p s e é i fi l a u q s n oi t c n o f s et n er é f fi d u o s e ss a l c s e t n er é f f i d rerénég ruop selbasilitu te ,sep yt sed rap selbarté marap selèdom sed rini féd ed temrep nortap nU .)sialgna ne etalpmet( nortap ed noiton al ed étod été a ++C el ,noitasilamron as cevA .)r u et aré p o’ d n o it i ni fé dr us ed e ms i na cé m u a e câr g( ses sa lc s el t no s e uq r u et as il it u’ l r ap si n i fé d sep y t s e l r u o p s n es n u r e n n o d r u el e d t n e m m a t o n t e mr e p i u q e c ,)s er èi l u c itr a p s ess al c( » st o l f « ed noiton al rus tnesoper elle rac ,C ud sellec ed setneré ffid tnos ++C ed seitros-seértne se L .)repuccoérp ne’s ne sap cnod a’n ruemmargorp el te » fitan « tse emsihp -rom ylop el ,avaJ ne( selleutriv snoitcno f sed )tne mesueiruc( e mmon no’l euq ec ed siaib 8 Présentation du langage C++ CHAPITRE 1
  • 39. . C e d s e é tir é h s n oi t c n o f s el -apicnirp sel relutipacér ardneiv G exennA’L .sertipahc stneré ffid sed li f ua setiudortni tnores s el b as n e ps i d n i s n oi t c n o f s el , er o c n e à l , u d n e t n e n e i B .s et n a d n o d er u o s el it u ni s e u n e v e d snoitcno f ed sirp moc y ,C ud dradnats euqèhtoilbib al ed étilatot al ed esopsid ++C ,ertuo nE 5 - C++ et la bibliothèque standard 9
  • 40. .s el p m e xe s on snad essalc enucua cnod zerevuort en suov te ici édroba ares en .O.O.P tcepsa nucua ,tid tnem -ertuA .elarudécorp noitam margorp ed stcepsa sed à ,reilucitrap ne ,cnod te egarvuo’l ed etius al e d e d u t é’l r u o p el b a s n e ps i d n i er è v a’s i u q e c à s é ti mi l c n o d s e m m os s u o n s u o N . ér é f f i d ti os s n oi t on s en i atre c e d él li a té d és op xe’l e uq e c à et ti uq ,s te lp m oc se m m arg orp se d eé lb m e’d erircé’d te eril ed erttemrep suov ed tse ertipahc ec ed fitcejbo lapicnirp el euq neib zetoN . n o i t u c é x e’l t e s n ei l e d n o i ti d é’ l , n o i t a li p m o c al , n oi ti d é’l t n os e u q e c t n a l e p p ar s u o v ne em margorp nu’d tnemeppolevéd el esinagro’s tne mmoc snorertnom suov suon ,ni fnE .em margorp nu’d erutircé’l tnanrecnoc selarénég selgèr seuqleuq etiusne snoregagéd suoN .) xi o hc ,ruetp moc ceva elcuob( elôrtnoc ed serutcurts xued euq isnia ,)erutircé te erutcel ,noitat -ce ffa ,noitaralcéd( esab ed snoitcurtsni seniatrec tnemirpxe’s tnemmoc ,tnatsni’l ruop ellem -ro fni erocne erèinam ed ,zerirvuocéd y suoV .sétnem moc selp mexe xued rus eédno f ,++C egagnal ne em margorp nu’d ehcorppa erèi merp enu snosoporp suov suon ,ertipahc ec snaD Généralités sur le langage C++ 2
  • 41. Généralités sur le langage C++ CHAPITRE 2 1 Présentation par l’exemple de quelques instructions du langage C++ 1.1 Un exemple de programme en langage C++ . tn e m e n -noitcno f el sniom uo sulp riovecrep ne’d ze yasse ,tnevius iuq snoitacilpxe sel eril ed tnavA .noitucéxe’d elpmexe nu’d éngapmocca ,++C egagnal ne em margorp ed elpmexe nu icioV #include <iostream> #include <cmath> using namespace std ; main() { int i ; float x ; float racx ; const int NFOIS = 5 ; cout << "Bonjourn" ; cout << "Je vais vous calculer " << NFOIS << " racines carreesn" ; for (i=0 ; i<NFOIS ; i++) { cout << "Donnez un nombre : " ; cin >> x ; if (x < 0.0) cout << "Le nombre " << x << "ne possede pas de racine carreen " ; else { racx = sqrt (x) ; cout << "Le nombre " << x << " a pour racine carree : " << racx << "n" ; } } cout << "Travail termine - au revoir " ; } Bonjour Je vais vous calculer 5 racines carrees Donnez un nombre : 8 Le nombre 8 a pour racine carree : 2.82843 Donnez un nombre : 4 Le nombre 4 a pour racine carree : 2 Donnez un nombre : 0.25 Le nombre 0.25 a pour racine carree : 0.5 Donnez un nombre : 3.4 Le nombre 3.4 a pour racine carree : 1.84391 Donnez un nombre : 2 Le nombre 2 a pour racine carree : 1.41421 Travail termine - au revoir ++C emmargorp ed elpmexe reimerP 12
  • 42. .selabolg selbairav ed srola arelrap no : noitcno f etuot ed srohed ne selbairav sed rini féd tuep no’uq )snoitcno f xua ércasnoc ertipahc e l sn ad( t ne mel ag é sn orr ev s u oN .)n iam no it cn o f al ed se la co l selba ir av se d t nos elp m ex e erton snad seiniféd selbairav sel ,rueugir etuot ne( » selacol selbairav « elleppa sel no ; noitcno f enu snad seini féd selbairav sel setuot ruop emêm ed ari ne lI .)n iam noitcno f al ed tubéd ua : erid tôtulp tiarved no( emmargorp ud tubéd ua seépuorger snova sel suon ,icI .seésilitu tnemevitceffe ertê’d tnava ertîarappa tneviod sellE .seriotagilbo tnos s el b air a v s e d s e p y t s e d s n oi t ar al c é d s e l , sl e u t c a s e g a g n a l s e d tr a p ul p a l s n a d e m m o c , + + C n E . e é i fi d o m er t ê s a p t u e p e n et n at s n o c e n u’ d r u el a v a l , e l b a ir a v e n u à t n e m er i ar t n o C . 5 r u el a v al tna ya ,reitne ep yt ed etnatsnoc enu tse SIO FN euq euqidni noitaralcéd e mèirtauq al ,ni fnE .stnattol f sep yt srueisulp etsixe li ++C ne’uq snorrev suon ,erocne à L .)sleér serb mon ed noita mixorppa( stnattol f serbmon sed rinetnoc à seénitsed tnos selle’uq erid -à-tse’c ,taolf ep yt ed tnos xcar te x selbairav sel euq tnesicérp snoitaralcéd sertua xued se L .sre it n e’d sep yt srueisulp etsixe li ++C ne’uq snorrev suoN .)s fitaler( sreitne serbmon sed rinetnoc à eénitsed tse elle’uq erid-à-tse’c ,tni ep yt ed tse i eé mmon elbairav al euq esicérp erèi merp a L . » s n o it ar a l c é d « s e d t n os const int NFOIS = 5 ; float racx ; float x ; int i ; : s n oi t cur ts ni er ta uq s e L 1.3 Déclarations .s n oi tc n o f s ert u a’ d ri n et n oc si a m aj tuep en noitcno f enu’uq snorrev suon ,ehcnaver nE .)elpmexe erton ed sac el tse’c( scolb sertua’d rinetnoc e mê m-iul tuep colb nu’uq zetoN .++C noitcno f etuot ruop e mê m ed ari ne li ; colb nu’d te etêt-ne nu’d eéutitsnoc tse n iam noitcno f al euq erid no-tuep isniA . » colb « nu tne mro f sedalocca sec ertne seéutis snoitcurtsni sel euq tid nO . » } « te » { « sedalocca sel rap éti miléd tse lI .etêt-ne tec ed etius al à tneiv tid tnemerporp )lapicnirp( e mmargorp e L .ésopmi tse )niam( mon el tnod noitcno f enu e mmoc tiaf ne artîarappa lap -icnirp em margorp el ,++C ne ,isnia ; etêt-ne let nu tne melagé tnedèssop ic-sellec euq snorrev suon ,++C ne snoitcno f sed erutircé’l snoredroba suon euqsro L .)niam( lapicnirp emmarg -orp el tia f ne tse etius as à tircéd ares iuq ec euq esicérp ellE . » etêt-ne « nu e mmon es main() : e n gi l a L .sengil serèimerp siort sed elôr el rus niol sulp uep nu snordneiver suoN 1.2 Structure d’un programme en langage C++ 1 - Présentation par l’exemple de quelques instructions du langage C++ 13
  • 43. ++ i : r es il a ér , c o l b u d n oi t u c é x e e u q a h c e d n i f al à ; colb ec tnavius noitcurtsni’l à ressap nonis ,éuqidni colb el retucéxe ,etia fsitas tse elle is i < NFOIS : n oi ti d n o c a l r e n i m a x e ,) e l c u o b e d r u o t( c ol b u d n o it u c é x e e ll e v u o n e u q a h c t n a v a • i = 0 : r esi la ér ,n o it it épér e tt ec r ec n e m mo c e d tn a va • : s et n av i us se n gi sn o c s el t n at ceps er ne ,etius as à tnarugi f ) » } « te » { « sedalocca sed rap étimiléd( colb el retépér ed tse elôr noS for (i=0 ; i<NFOIS ; i++) : r o f n oi t c ur ts ni’ l é si li t u s n o v a s u o n , i c I .) » el c u o b « e n u iss u a tid no( noititépér enu resilaér ed snoça f srueisulp etsixe li ,++C ne ,snorrev el suon e mmoC 1.5 Pour faire une répétition : l’instruction for ."nseerrac senicar " noita mrofni’l • ; 5 riovas à ,etnatsnoc ettec ed ruelav al tia f ne erid-à-tse’c ,SIO FN noita mrofni’l • ; "reluclac suov siav eJ" noita mrofni’l • : n ar c é’ l à s e t n er é f f i d s n o it a mr o f ni si or t ei o v n e n o i c i’ u q e c n er é f f i d et t e c c e v a e t n e d é c ér p al à el b m ess er cout << "Je vais vous calculer " << NFOIS << " racines carreesn" ; : etnavius noitcurtsni’L .reilucitrap emsihp - ar g e d s a p t n a d éss o p e n er i d- à- ts e’ c , » el ôr t n o c e d « st i d s er èt c ar a c e d er b m o n n i atr e c n u r u o p ) erè tc ara c n u’ d i vi us ( e p y t e c e d n o it at o n e n u t i o vér p + + C , el aré n é g erè i n a m e d ,e u q snorrev suoN .etnavius engil al à egassap el euqovorp ,narcé’l à é yovne tse li’uqsrol ,iuq erèt -carac nu erid-à-tse’c ,engil ed nif ed erètcarac nu etnesérper elle : ellennoitnevnoc tse n noit -aton a L .)serètcarac ed etius( » serètcarac ed enîahc « enu retimiléd à tnevres stemelliug se L "Bonjourn" : n o it a m r o f n i ’l t i o ç e r tuoc : isnia eétérpretni ertê tuep noitcurtsni ettec ,cnod ,icI .statlusér sel tnehci ffa’s elleuqal snad ertêne f al engiséd tuoc euq snottemda ,tnatsni’l ruoP .eitros ed tolf nu rus noita m -ro fni’l ed re yovne’d tnatte mrep ruetarépo nu tse << euq te » eitros ed tol f « nu tse tuoc euq snorrev suon : tnemerueirétlu’uq setiudortni tnores en iuq secnassiannoc sed tiaretissecén cout << "Bonjourn" ; : noitcurtsni’l ed eélliatéd noitatérpretni’L 14 1.4 Pour écrire des informations : utiliser le flot cout Généralités sur le langage C++ CHAPITRE 2
  • 44. ; ) x ( t r q s = x ca r : euq ellet noitcurtsni enU 1 se uqrameR .tnemugra ne t e ms n ar t i u l n o’ u q e t n at t ol f r u el a v e n u’ d e érr a c e n i c ar a l e d r u e l a v al t i nr u o f t r q s n o it c no f a L .elituni dner el )noitidnoc al tnerdacne iuq sesèhtnerap ed ecnesérp al à ecârg t nem - m a t o n ( f i n o i t c u r ts n i ’ l e d e x a t n y s a L . n e h t t o m e d s a p s i a m e s l e t o m n u e t s i x e l i’ u q z e t o N { racx = sqrt (x) ; cout << "Le nombre " << x << " a pour racine carree : " << racx << "n" ; } : c o l b el , i c i , eri d- à-t s e’ c , e s l e t o m e l t n a vi us n oi t c urt s n i’l e t u c é x e n o , e ss u a f ts e el l e i S cout << "Le nombre " << x << "ne possede pas de racine carreen " ; : erid-à-tse’c ,etnavius noitcurtsni’l etucéxe no ,eiarv t s e n o it i d n o c e t t e c i S . 0 . 0 < x n o i t i d n o c a l r u s e é d n o f x i o h c e d n o i t c u r t s n i e n u t n e u t i t s n o c if (x < 0.0) cout << "Le nombre " << x << "ne possede pas de racine carreen " ; else { racx = sqrt (x) ; cout << "Le nombre " << x << " a pour racine carree : " << racx << "n" ; } : s e n gi l s e L 1.7 Pour faire des choix : l’instruction if . » eppar f e d e t ua f « ed sap tiaf en li’uq snoresoppus suon ,emê m eD .noitapicitna rap snoita mro fni srueisulp rinruo f tuep li’uq snorrev suon ,drat sulP .reivalc ua eértne nos » edilav « ruetasilitu’l euq snoresoppus suon ,icI .x elbairav al snad ecalp no’l euq taolf ep yt ed ruelav enu ne ritrevnoc al te reivalc ua serètcarac ed etius enu eril : isnia eétérpretni ertê tuep noitcurtsni ettec euq snottemda ,tnatsni’l ruoP .eértne’d tolf nu’d ritrap à noitamro fni’l ed )eril ed( » eriartxe «’d tnattemrep ruetarépo nu tse << euq te reivalc ua éicossa » eértne’d tol f « nu tse nic euq snorrev suon : tne merueirétlu’uq seiudortni tnores en iuq secnassiannoc sed tiaretissecén cin >> x ; : colb ud noitcurtsni ednoces al ed eélliatéd noitatérpretni’l ,erocne à L .ni f al à engil ed tnemegnahc ed uvérp sap snova’n suon ici’uq zetoN .:erbmon nu z ennoD egassem el tne melp mis ehci ffa rof noitcurtsni’l rap étépér colb ud noitcurtsni erèi merp a L 1.6 Pour lire des informations : utiliser le flot cin .sio f qnic étépér ares colb erton ici’uq ze yov suov ,evitiniféd nE i = i + 1 : à etnelaviuqé tse iuq ++C ua erporp noitaton enu’d àl tiga’s lI 1 - Présentation par l’exemple de quelques instructions du langage C++ 15
  • 45. .stnadnopserroc etêt-ne sreihci f sel reroprocni’d elbaré férp tse li ,seini féd -érp snoitcno f sec ed setcaxe snoitaralcéd sel rus regorretni’s ed euq tôtulP .seini fédérp snoit -cno f sel ruop tnemelagé tuav aleC .eéralcéd tne melbalaérp été tia elle’uq eriassecén tse li ,e mmargorp nu’d eitrap enu snad noitcno f enu zesilitu suov euq sèd ,elarénég erèinam enu’D .trqs à r èi l uc itr ap ne c n o d ,) C e d s e ét ir é h( s e u q it a m é h t a m s n o it c n o f x u a s e v i t a l er s n o i t ar a l c é d s e d t n ei t n o c h t a m c • ; )s erè il u ci tra p s n o it c n o f se d em moc sérédisnoc tia f ne tnos sli’uq drat sulp arrev no tnod( >> te << sruetarépo xua’uq isnia ,tuoc te nic à ,reilucitrap ne ,cnod stol f xua sevitaler snoitaralcéd sed tneitnoc maertsoi • : e u q z e t o n , t n a t s ni’ l r u o P .tnemerueirétlu’uq elbisneh -érp moc tnemetèlpmoc ares en elôr rue L .h tamc te maertsoi sreihci f sel snad seéutis )++C ne( snoitcurtsni sed )noitalip moc tnava( eriudortni’d tia f ne tnednamed sevitcerid xued seC .ici tia f snova’l suon em moc ,noitcno f etuot tnava ,tubéd ua recalp sel ed elbaré férp tse li ,elarénég erèina m enu’D .)edèccus iul iuq emmargorp ud eitrap al à’uq euqilppa’s en evit -cerid enu siam( etniartnoc enucua à si muos tse’n em margorp ud nies ua tnemecalp me rue L .engil ed tubéd ne recne mmoc tne meriotagilbo tneviod selle te engil rap enu’d nosiar à set -ircé ertê tneviod ,em margorp ud etser ua tnemeriartnoc ,sevitcerid seC .) » ruetalipmocérp « sio frap( » ruessecorpérp « é mmon em margorp nu rap ,em margorp ud )noitalipmoc( noit -cudart al tnava etp moc ne sesirp tnores iuq sevitcerid ed tiga’s lI .serèilucitrap uep nu tnos #include <iostream> #include <cmath> : e m mar g or p er t on e d se n g il ser èi mer p x ue d se L 1.8 Les directives à destination du préprocesseur . s u s s e d- i c s e m r o f s i or t s e d e l l e u q a l e tr o p m i’ n e d r i g a’ s a rr u o p l i ,s e r i a t n e m é l p p u s s n o i s i c ér p s n as , n o i t c u r ts n i’ d s n or e lr a p s u o n e u qs r o L .se mro f siort sed elleuqal etropmi’n ,ru ot ruel à ,rinet noc tnevuep selle’uqsiup » evisrucér « n oitini féd en u tno serèinre d xued se L .) } t e { r a p s é t i m il é d( s c o l b s e d – ; rof uo fi euq sellet noitarutcurts ed snoitcurtsni sed – ; elugriv-tniop nu rap tnemeriotagilbo seéni mret ,selpmis snoitcurtsni sed – : s n o i t c ur t s n i ’ d s e tr os s i or t e d e s o p s i d + + C , e l ar é n é g e r è i n a m e n u’ D 2 .s e ér o b a l é s u l p s e mr o f s e d er d n er p t u e p n o i t - a t c e f f a’ l + + C n e’ u q dr a t s u l p s n orr e v s u o N . l a g é e n g i s u d e t i o r d à e é u t is n o is s er p x e ’ l e d r u e l a v a l x c a r e l b a i r a v a l à e n n o d e l l e : n o i t a t c e f f a ’ d e u q i ss a l c n o i t c ur t s n i e n u t s e 16 Généralités sur le langage C++ CHAPITRE 2
  • 46. ra hc ep yt ud no itas i li t U opération souhaitée (+ ou *) ? * donnez 2 nombres entiers : 12 5 leur produit est : 60 opération souhaitée (+ ou *) ? + donnez 2 nombres entiers : 25 13 leur somme est : 38 #include <iostream> using namespace std ; main() { char op ; int n1, n2 ; cout << "opération souhaitée (+ ou *) ? " ; cin >> op ; cout << "donnez 2 nombres entiers : " ; cin >> n1 >> n2 ; if (op == ’+’) cout << "leur somme est : " << n1+n2 << "n" ; else cout << "leur produit est : " << n1*n2 << "n" ; } . t n a d n o ps err o c t at l us ér e l sr o l a e h c -if fa li ; sreitne serbmon xued rinruo f ed siup ,noitacilpitlu m al uo noitidda’l imrap noitarépo e n u ri si o h c e d r u e t as i li t u’ l à e d n a m e d l I . » er è t c ar a c « e p yt u d n o it asi l it u’l r er t n o m s u o v à énitsed ,noitucéxe’d selpmexe xued ed éngapmocca ,e mmargorp ed elpmexe dnoces nu icioV 1.10 Exemple de programme utilisant le type caractère . ) ! i ni f é d é t é erocne sap a’n iuq s mon ed ecapse nu à ecneré fér zere f suov rac ruerre enu zerdneitbo suov ,etêt-ne sreihci f sed noitaroprocni’l tnava gnisu noitcurtsni’l zecalp suov is ,noitnetta( » dts s mon ed ecapse tec snad « ecalp es no’l euq reuqidni à tnemésicérp tres gnisu noitcurtsni’L .dts smon ed ecapse’l à tnenneitrappa maertsoi reihci f el snad séralcéd selobm ys sel euq zen -eter ,tnatsni’l ruoP .etius al rap eéiduté ares smon ed ecapse’d noiton etteC .smon semêm sel tnesilitu seuqèhtoilbib srueisulp dnauq resop es tnevuep iuq semèlborp sel relgèr ed ,reiluc -itrap ne ,cnod te e mmargorp nu’d eitrap eniatrec enu à selob m ys sed » eétrop « al erdniertser ed temrep ellE .) ecapseman( » smon ed secapse «’d noiton al tiudortni a ++C ed e mron a L 1.9 L’instruction using .elbatucéxe edoc ed sap tnesiudorp en snoitaralcéd sel ùo erusem al snad ,tnanêg erèug tse’n alec ; énnod e mmargorp nu snad setuot sap zeresilitu sel en suov ,tnemelarénéG .snoitcno f srueisulp à sevitaler snoitaralcéd sed tneitnoc etêt-ne reihci f e mê m nu’uq zetoN 1 - Présentation par l’exemple de quelques instructions du langage C++ 17
  • 47. .» esohc « ed ecalp al à » étitne « emret el resilitu up snoirua suoN .fitcitser port tneived emret ec ,ici’uq ,rialc tse lI .emmargorp nu rap sélupinam » stejbo « sed relrap up snoirua suon ,O.O.P ed etxetnoc nu’d srohed nE .1 .)s fi t a ci f i n gis t n ei at é s er è t c ar a c srei merp 13 sel slues ,C ne( sruetaci fitnedi sed rueugnol al rus esèp en noitcirtser enucuA .stneré f fid stejbo xued tnengiséd engiL te engil sruetaci fitnedi sel ,++C n e ,i s n i A .s et n el a vi u q é s a p t n os e n si a m s e és ir ot u a t n o s s e l u cs u ni m s e l t e s e l u cs uj a m s e L • lg_lig valeur_5 _total _89 : stcerroc sruetaci fitnedi seuqleuq icioV .ruetaci fitnedi nu’d tubéd ua ertîarappa cnod tuep lI .erttel enu em moc érédisnoc tse )_( éngiluos erètcarac e L • : s er tt e l s el e nr e c n o c i u q e c n E .erttel enu tne meriassecén tnaté xue ertne’d rei merp el ,serffihc sel uo serttel sel i mrap sisiohc serètcarac ed etius enu’d sémro f tnos sli ,segagnal sed trapulp al snad e mmoC .)sorcam ,otog noitcurtsni’d setteuqité ,sep yt ,noinu’d uo erutcurts ed ,essalc e d s er b m e m ,s n oi tar é m u né u o s n o i nu , ser ut c urts , st ej b o : + + C e l r a p seé l u pi n a m se so h c sertua sel tnemerueirétlu snorertnocner suon( snoitcno f sel te selbairav sel sellet ,emmarg -orp el rap seélupinam » sesohc « setneré ffid sel rengiséd à tnevres sruetaci fitnedi se L 1 2.1 Les identificateurs .seriatne mmoc sed te sruetarapés sed egasu’l ed euq isnia ,snoitcurtsni sel tircé no leuqel snad erbil ta mro f ud ,» sélc-stom « sel te » sruetaci fitnedi « sel elleppa no’l euq ec ed tne mésicérp snorelrap y suoN .++C ne e mmargorp n u’ d er ut ir c é’l s n a d t n a n e vr e t ni s el ar é n é g s e l g èr e d er b m o n n i atr e c n u es o p x e e h p ar g ar a p e C 2 Quelques règles d’écriture .+ sap tse’n ruetasilitu’l rap inruof erèt -carac el euq srol sèd ,tiudorp el eluclac emmargorp erton ,tircé été a li’uq let ,euq zeuqrameR .serètcarac setnatsnoc sel ruop te ) " ed tiga’s li( senîahc setnatsnoc sel ruop sruetimiléd sem -êm sel sap esilitu’n ++C euq neib zetoN .erètcarac etnatsnoc enu etnesérper ’+’ noitaton a L • .)! noitaci fingis ertua enu ceva siam si mda tiares ,drat sulp snorrev el suon emmoc ,ici ,iuq te noitatce f fa’l etnesérper iuq = non te( == engis el rap tiudart es étilagé’d noitaler a L • : e uq ze to N . p o s n a d u n e t n o c erètcarac el tnavius ,serbmon xued ed tiudorp el uo e mmos al rehci ffa’d te mrep fi noitcurt -sni’L .po snad regnar el ed te reivalc ua erètcarac nu eril ed te mrep po >> ni c noitcurtsni’L .)! erianib e mrof suos ,rûs neib ,édoc( euqnocleuq erètcarac nu rinetnoc à eénit -sed tse elbairav ellet enU .)rah c( erètcarac ep yt ed tse po elbairav al euq snoralcéd suon ,icI 18 Généralités sur le langage C++ CHAPITRE 2
  • 48. #include <iostream> #include <cmath> using namespace std ; main() { int i ; float x ; float racx ; const : tnedécérp e mmargorp erton étnesérp )la m( ertê tiarruop tnem moc ze yov ,elpmexe’d ertit À .selbisil uep sem margorp sed à rituoba’d ,edrag dnerp y’n no’l is ,etsixe euqsir el ,tnem matoN .seitrapertnoc sed edèssop egap ne esim ed étrebil ettec ,udnetne neiB .tnedivé elbmes iuq ec ,engil ed ni f enu rap x u e d n e é p u o c ert ê t u e p e n r u et a c i fi t n e di n U . e n g il e l u es e n u’ d r u e ir é t ni’ l à s e tir c é ert ê t n e m - e v it ar é p mi t n e v i o d s e t n a ts n o c s e l l e t e d ; s e ti dr et n i t n os s e l l e ù o » s e n î a h c s et n ats n o c « s el snad fuas ,ecapse nu’uq ertit e mêm ua ,ruetarapés ed iulec tse’n ec is ,reilucitrap elôr ed sap tneuoj en engil ed sni f se L .zetiahuos el suov euq snoitcurtsni’d tnatua retrop moc tuep engil emê m enu te ,sengil ed euqnocleuq erbmon nu rus erdneté’s tuep noitcurtsni enu ,reilucitrap nE .erbil tnemetiafrap egap ne esi m enu esirotua ++C el ,stnecér segagnal sel suot em moC 2.4 Le format libre int n, compte, total, p : tne melbisil sulp uo int n,compte,total,p : tne mmeré ffidni erircé zerruop suov ,ehcnaver nE intx,y : n o n te int x,y : erir cé t ne me v it aré p m i zer ve d s u o v , is ni A .)e mmargorp ud étilibisil al eroiléma alec euq -itarp ne’uq neib( seriatnemélppus secapse’d riovérp ed eriassecén sap srola tse’n li ,euqnoc - l e u q r u et ar a p és n u es o p m i e x a t n y s a l e u q s è d , e h c n a v er n E . e n g il e d n i f e n u r a p ti os , e c a ps e nu rap tios sérapés ertê tnemevitarép mi tneviod ) } { ] [ ) ( * ; = , : euq slet( reilucitrap engis n uc u a es op m i’n e xa tn ys al s le uqs el ert ne s f iss ec c us sr ue ta ci f it n ed i xu e d ,e m m arg orp nu snad ,isniA .sellerutan ertîarap cnod tnov selgèr sel ùo ++C ne emêm ed tnemisauq av ne lI . e n g il e d n i f e n u u o n o it a ut -cnop ed engis nu ,ecapse nu rap sérapés tnos stom stneréffid sel ,etircé eugnal ERTON snaD 2.3 Les séparateurs .H exennA ne ,euqitébahpla erdro rap eéssalc ,etèlp moc etsil al zerevuort ne suoV .sruetaci fitnedi e mmoc sésilitu ertê s a p t n e v u e p e n t e i n i f é d n ei b e g a s u n u à e g a g n a l el r a p s é vr es ér t n o s » s é l c-s t o m « s ni atr e C 2.2 Les mots-clés 2 - Quelques règles d’écriture 19
  • 49. : elbisil uep siam lagél elpmexe nu ni fne icioV int i ; float x ; float racx ; /* compteur de boucle */ /* nombre dont on veut la racine carrée */ /* racine carrée du nombre */ : selbairav setneré ffid sed elôr el rini féd ed tnettemrep ,noitaralcéd ed noitcurtsni enu’d nies ua séutis ,iuq seriatnem moc ed elpmexe nu icioV /* ============================================= * commentaire quelque peu esthétique * * et encadré, pouvant servir, * * par exemple, d’en-tête de programme * ========================================== */ /* commentaire s’étendant sur plusieurs lignes de programme source */ /* commentaire fantaisiste &ç§{<>} ?%!!!!!! */ /* programme de calcul de racines carrées */ : seriatnem moc slet ed selp mexe seuqleuq icioV . e m m ar g or p u d ét i li b isi l e n n o b e n u à s e c i p or p st n e m e c a l p m e s e d à ar et i m i l e s no ,tnadnepec ,larénég nE .ésirotua tse ecapse nu ùo emmargorp ud tiordne tuot à ertîarappa tnevuep slI . /* te */ selobm ys sel ertne sécalp seuqnocleuq serètcarac ed sé mrof tnos slI 2.5.1 Les commentaires libres .)++C rap stiudortni( engil ed ni f ed seriatne mmoc sel • ; C egagnal ud sétiréh , » serbil « seriatne mmoc sel • : s er i a t n e m m o c e d s e p yt x u e d ets i x e l I . n oi t a li p m o c as r us e c n e di c ni e n u c u a tno’n iuq te em margorp ud sruetcel xua sénitsed s fitacilpxe setxet ed tiga’s lI .ecruos se m - margorp sov snad seriatnem moc ed ecnesérp al esirotua ++C ,éulové egagnal tuot e mmoC 2.5 Les commentaires étnesérp lam emmargorp ed elpmexE 20 int NFOIS = 5 ; cout << "Bonjourn" ; cout << "Je vais vous calculer " << NFOIS << " racines carreesn" ; for (i=0 ; i<NFOIS ; i++) { cout << "Donnez un nombre : " ; cin >> x ; if (x < 0.0) cout << "Le nombre " << x << "ne possede pas de racine carreen " ; else { racx = sqrt (x) ; cout << "Le nombre " << x << " a pour racine carree : " << racx << "n" ; } } cout << "Travail termine - au revoir " ; } Généralités sur le langage C++ CHAPITRE 2
  • 50. ec tnanrecnoc )tne mennorivne leuq etropmi’n à tnauqilppa’s( selarénég snoitacidni seuqleuq ic i s n oss i nr u o f s u o v s u o N . ze ll ia v art s u o v l e u q el s na d n o it a m m ar g or p e d t ne m e n n or i v n e’l ed tne mellerutan dnepéd ++C ne e mmargorp nu resilitu’d te reppolevéd ed erèinam a L 3 Création d’un programme en C++ . e m ê m- i u l e m m ar g - or p u d e t x e t u a tr o p p ar r a p s t n a d n o d er s er i a t n e m m o c s e l r e t i v é’ d e l b ar é f ér p ar es l i , t n e m e l ar é n é g , i s n i A . n o i t a m m ar g o r p e d s e l è d o m s e d e m m o c ,s a c n u c u a n e , t e s e u q - i t c a d i d s e l p m e x e s e d s e m m o c s ér é d i s n o c er t ê t n e v i o d s e r i a t n e m m o c e d s e l p m e x e s o N 3 . t n i o p u a e s i m e d e s a h p n e ) s er i a t n e m m o c s e d t n e m e l l e u t n e v é t n a n e t n o c( s n o i t c ur t s n i’ d e l b m es n e n u » r e b i h n i « r u o p / * t e * / à l e p p a er i a f sr o l a t u e p n o , e n g i l e d n i f e d er i a t n e m m o c e l t n e m e u q i t a m é t s y s e s i l i t u n o’ l i S 2 .) et i d t n e m er p or p n o it al i p m o c a l s a p c n o d enrecnoc en li( ruessecorpérp ua seénitsed sevitcerid sel enrecnoc sac ertua’L . fitaci fingis el ôr n u e u o j e n gi l e d n i f al ù o s a c x u e d s e d n u’l e u t its n o c e n g i l e d n i f e d eri at n e m m o c e L 1 se uqrameR .4 eitrap te 3eitrap ,2eitrap cnod enrecnoc lI .engil al ed ni f al à’uqsuj dneté’s // rap tiudortni eriatne mmoc el partie1 // partie2 /* partie3 */ partie4 : s na d ,e mê m e D .snoitcurtsni xua tnanetrappa em moc érédisnoc tse 3eitrap euq sidnat ,seriatne mmoc sed tnos 2eitrap te 1eitrap cnod ; /* niahcorp ua’uq eni mret es en */ rap » trevuo « eriatne mmoc el /* partie1 // partie2 */ partie3 : s n a d , e u q z e t o n , s a c e c s n a D . e n gi l e d n i f ed seriatnem moc sel te serbil seriatne mmoc sel )! non uo tnemeriatnolov( relê m zevuop suoV cout << "bonjourn" ; /* formule de politesse */ : isnia etircé ertê sruojuot tuep cout << "bonjourn" ; // formule de politesse : e u q el l e t e n gi l e n u , t e f f e n e ; étirucés ed te tro fnoc ed tîorcrus nu’uq etroppa’n étilibissop ellevuon ettec euq zetoN .eriat -ne mmoc nu tse engil al ed ni f al te // ertne éutis tse iuq ec tuot ,sac ec snaD .// : serètcarac xued sel rap stiudortni tnos slI .engil enu’d ni f al à tnecalp es sli ,euqidni’l mon ruel em moC 2.5.2 Les commentaires de fin de ligne int /* compteur de boucle */ i ; float x ; /* nombre dont on veut la racine carrée */ float racx ; /* racine carrée du nombre */ 3 - Création d’un programme en C++ 21
  • 51. . e t n a d n e p é d n i n o ç a f e d s él i p - m o c ,s t e j b o s el u d o m s t n er é f f i d s n ei l e d n o it i d é’ l e d t n e m o m u a r el b m ess ar e d el b iss o p t n e m -elagé ares suov li ,++C ed eérapés noitalipmoc ed sétilibissop xua ecârg ,euq snorrev suoN .sreihci f srueisulp uo nu ne ,eénrecnoc noitatnemélpmi’l tnavius ,eésinagro stejbo seludo m e d n o it c e ll o c e n u ts e e u q è ht o il b i b et t e c e u q z et o N .s eri ass e c é n st ej b o s e l u d o m s e l dr a d n at s euqèhtoilbib al snad rehcrehcer rella’d euq sneil ed ruetidé’l ed elôr el tnemevitcef fe tse’C .>> te << sruetarépo sed liavart ua t n a d n o p s e r r o c s n o i t c n o f s e d , t r q s n o it c n o f a l e d : t i ar i g a’s l i ,t n e d é c ér p e l p m e x e ert o n s n a d ; nioseb a li tnod dradnats euqèhtoilbib al ed snoitcno f sel sniom ua ,te ffe ne ,areuqna m iul lI .elbatucéxe tnemetcerid sap tse’n ruetalipmoc el rap isnia éérc tejbo eludo m nu ,larénég nE 3.3 L’édition de liens .tejbo eludom ed mon el etrop noitalip moc al ed tatlusér e L .r u ess e c or p ér p el r a p i nr u o f ++C etxet ud enihca m egagnal ne noitcudart erid-à-tse’c ,etid tnemerporp noitalipmoC • .ru ess ec -orpérp el rap inruo f tatlusér el ertîannoc ed ,zetiahuos el suov is ,sruellia’d tnettemrep suov noitammargorp ed stnemennorivne sed trapulp al : ecruos e mmargorp nu’uq ertit emêm ua ,etxet iarv nu’d sruojuot tiga’s li’uq neib zetoN .rup ++C ne ecruos em margorp nu ,tatlus -ér ne ,tiudorp lI .)# erètcarac nu rap tnecne mmoc selle’uq tiaf ua tîannocer sel li( tnenrec -noc el iuq sevitcerid sel tne melpmis etucéxe reinred ec : ruessecorpérp el rap tnemetiarT • : s epa té xu e d ti a f ne etropmoc noitalipmoc ed noitarépo ettec ,ruessecorpérp nu’d ecnetsixe’l ed unet etpmoc ,)C ne e mmoc( ++C nE .ruetalipmoc é mmon e mmargorp nu à leppa tnasia f ne ,enihca m egagnal ne )ecruos reihci f nu’d unetnoc el uo( ecruos em margorp el eriudart à etsisnoc ellE 3.2 La compilation .ppc noisnetxe’l tnoretrop ecruos sreihci f sel ,++C ne ,spmet ud trapulp al ; )» ep yt « nu sio frap ,uo( » noisnetxe « enu elleppa no’uq )3 sniom ua( serètcarac ed epuorg nu rap ésirétcarac ertê ,mon nos ed sulp ne ,tuep reihci f nu ,l aré n é g n E .sr ei h ci f se d n o i ta ni m o né d e d s n o it n e v n o c s er p or p se s e dèss o p e mè ts ys e u qa h C . » ecruos reihci f « arem mon no’l euq reihci f nu snad évresnoc ares etxet ec ,larénég nE . » ecruos e mmargorp « em mon no’uq em margorp nu’d etxet ud eitrap uo tuot ,reivalc nu’d ritrap à ,reérc à etsisnoc ) » eisias « siofrap issua tid no( em margorp ud noitidé’L 3.1 L’édition du programme . s n e il e d n oi t i d é t e n o i t a li p m o c , e m m ar g or p u d n o it i d é : r i o v as à , e m m ar g or p n u’ d n oi t a ér c a l e d s e p at é s e d n ar g s el r e l e p p a t i arr u o p n o’l e u q 22 Généralités sur le langage C++ CHAPITRE 2
  • 52. .) s n o it c n o f s e t n er é f fi d s e c e d e l b a t u c é x e e d o c el t n or d n e it n o c i u q st ej b o s e l u d o m sel ceva ,etêt-ne sreihci f sed snoitaralcéd sec sap zedno fnoc en ,noitnetta( seinifédérp snoit - c n o f x u a s e v it a l er s n o it ar a l c é d s e d ,s es o h c s er t u a ert n e , t n e tr o p m o c sr ei h ci f s e C . » e t ê t- n e « sreihci f sed elleppa no’l euq ec ed tnanevorp )++C egagnal ne( snoitcurtsni sed eriudortni’d ruessecorpérp ua rednamed zeivuop suov , edul cn i# evitcerid al à ecârg ,euq uv snova suoN 3.4 Les fichiers en-tête .++C ne noitam margorp ed tne mennorivne’l ed tnasopmoc euqnocleuq nu à leppa eriaf ed eriassecén tios li’uq snas étucéxe ertê tnemerueirétlu arruop li ,reihci f nu snad égnar tse elbatucéxe emmargorp ec iS .enihcam egagnal ne snoitcurtsni’d emonotua elbmesne nu erid-à-tse’c ,elbatucéxe em margorp nu em mon no’l euq ec tse sneil ed noitidé’l ed tatlusér e L 3 - Création d’un programme en C++ 23
  • 53. ne ertê ruop )stetco srueisulp ed uo nu’d( erio mém al ed tnemecalpme nu’d unetnoc el ert -îannoc ed sap ti ffus en li’uq tiov no ,snoitidnoc sec snaD .e mro f ettec suos ert ê ar v ed ,erutan as tios euq elleuq ,noitamro fni etuoT .erianib e mro f suos seé mirpxe snoitamro fni sed euq retiart te retnesérper tias en ,elleutca eigolonhcet as ed unet etpmoc ,ruetanidro’L .esserda nos em mon no’uq ec rap éréper tse tetco euqahc te ,)stib 8( stetco ne sép -uorger tnos stib se L .stib seémmon serianib snoitisop ed elbmesne nu tse elartnec eriomém aL e éd oc 1 La notion de type .eluocéd ne iuq ep yt ed noiton al te ruetanidro nu snad eétnesérper tse noita mro fni’l tnod erèinam al tnanrecnoc leppar ferb nu eria f ed snosoporp suov suon ,tnadnepec ,tnavarapuA .snoitarémuné sel uo sruetniop sel e mmoc selpmis sep yt sertua’d • ; ses sa lc se l t uo tr us te ,s n o in u se l u o ser ut c urts se l , xu ae lba t se l e m m o c s éru tc ur ts sep yt e d • : ess i ga’s li’ u q , » s é vir é d s e p y t « s ti d ,s ert u a s el s u o t s t i ur ts n o c er t ê t n orr u o p s l e u qs e d ri tr a p à s eri al a cs s e p y t s e d t i g a’s li ; + + C e g a g n a l u d s e l el l e p p a n o’ l e u q e c l i at é d n e s n or e i d u t é suon ,icI .)non uo ep yt emêm ed( sruelav srueisulp tnenneitnoc ,énnod tnatsni nu à ,iuq selb -airav sed à tnednopserroc iuq ) » ségérga « issua tid no( » sérutcurts « sep yt xua tnesoppo’s slI .ruelav elues enu tneitnoc ep yt let nu’d elbairav enu ,énnod tnatsni nu à ,rac ,» selpmis « uo » serialacs « stid tnevuos tnos sértnocner àjéd snova suon euq te , s e p yt s e L esab ed s epyt taolf tn i rah c Les types de base de C++ 3
  • 54. .) ne regérba tuep no’uq( tni gn ol • ; )tnedécérp ertipahc el snad értnocner snova suon euq iulec tse’c( tni • ;) ne regérba tuep no’uq( tni tr ohs • : s t na vi us s él c-st o m s el r ap s eé n g isé d ,sr ei tn e’ d setneré ffid selliat siort à’uqsuj revuort essiup no ,eénnod enihcam enu rus ,euq tiovérp ++C gnol trohs 2.1 Les différents types usuels d’entiers prévus par C++ 2 Les types entiers .) élc-tom( xuaf tios ,iarv tios tse ruelav al tnod erid-à-tse’c ,senneéloob sruelav • ; )rahc élc-tom( serètcarac • ; )elbu od uo ta olf élc-to m( stnattolf serb mon • ; )tni élc-tom( sreitne serb mon • : retnesérper ed tnette mrep sli’uq snoitamro fni sed erutan al ed noitcno f ne seirogétac ertauq ne tnessitrapér es ++C egagnal ud esab ed sep yt se L .reuqové’d snonev suon euq semèlborp sel )sesohc sertua ertne( relgér à tres ,séulové segagnal sel snad etsixe elle’uq ellet ,ep yt ed noiton al ,elarénég erèinam enu’D .» etnattol f « emro f suos sédoc serb mon xued te » erèitne « emrof suos sédoc serb mon xued rennoitidda ruop seuqinortcelé stiucric se mê m xua leppa sap tia f en no ,elp mexe raP .)enihcam egagnal ne( snoitcurtsni sennob sel ervuœ n e ert t e m r i o v u o p e d n i f a é y ol p m e é t é a e g a d o c l e u q ri o v a s ar d u a f li ,s n o it a mr o f ni x u e d r e n n o it i d d a r u o p , el p m e x e r a P . n o it a mr o f n i e tt e c » r e t i art « e d el b iss o p s a p e m ê m ar es e n l i ,larénég ne ,tse sulp iuQ .eédoc été a elle tnod erèinam al sap tîannoc en no’l euq tnat erianib noitamro fni enu à noitaci fingis enu reubirtta’d elbissop sap tse’n li’uq cnod dnerp moc nO .. . u o ,st et c o 4 r us é d oc le ér er b m o n n u’ d u o ,s te tc o 2 r us é d o c r e it ne er b m o n n u’ d u o e ni h ca m noitcurtsni enu’d eitrap enu retnesérper tne melagé tnevuep slI .)IICSA edoc ud sac el snad ,M elpmexe rap( énnod erètcarac nu erdnopserroc eria f iul snovuop suon ,serètcarac sel ret -nesérper ruop eénrecnoc enihca m al rus eé yolpme noitnevnoc al snossiannoc suon is ,sac ec snad ; erètcarac nu retnesérper ertê-tuep tnevuep sussed-ic stib tiuh sel ,snoitidnoc sec snaD .erianib ne seédoc ertê ,etp moc ud tuob ua ,tnorved )...soédiv ,snos ,sega mi ,seuqihparg ,enihcam egagnal ne e mmargorp ed snoitcurtsni ,serètcarac ,sexelp - moc serb mon ,sleér serbmon ,sreitne serb mon( snoitamro fni sel setuot ,te ffe nE ? erbmon nu li-tiaretnesérper alec iouqruop siaM .)erbmon ec ed 2 esab ne noitatnesérper al à dnopserroc sussed-ic fitom el euqsiup( reitne erb mon el etnesérper alec euq rerédisnoc zevuop suov l oo b 77 01001101 : tnavius » erianib fitom « el tneitnoc tetco nu’uq zevas suov is ,elpmexe raP .noitaci fingis enu reubirtta iul ed eruse m 26 Les types de base de C++ CHAPITRE 3
  • 55. .)eénnod reitne’d elliat enu ruop setrevuoc sruelav sed egalp al rus étinu enu’d ecneréffid ,0- te 0+ : oréz ud snoitatnesérper xued( seruenim tnetser secneréffid sel ,emron al rap seésopmi setniartnoc sel retcepser ed tneiatnetnoc es iuq snoitatnemélpmi )senneicna( sel snaD .ellesrevinu rineved à dnet euqinhcet ettec ,emron al rap tnemelatot eésopmi non euq neiB .2 .stimilc etêt-ne reihcif el snad seiniféd )NIM_TNI ,XAM_TNI euq sellet( setnatsnoc sed à ecârg sreitne sepyt stneréffid sed seuqitsirétcarac sel ertîannoc tuep no ,eénnod noitatnemélpmi enu snaD .1 -1 1111111111111111 FFFF -2 1111111111111110 FFFE -3 1111111111111101 FFFD -4 1111111111111100 FFFC -16 1111111111110000 FFF0 -256 1111111100000000 FF00 : )tne mmedécérp euq noitatnesérp e mê m al ceva( selpmexe seuqleuq icioV .tatlusér ua étinu enu etuoja no ,nifne ,te )1 tneived 0 te 0 tneived 1( sésrevni tnos stib sel suot siup 2 esab ne eémirpxe droba’d tse ruelav ettec ,eria f ec ruoP . » xued à tnemélpmoc ud euqinhcet « al emmon no’l euq e c t n a v i us t n e m e l ar é n é g e é d o c ts e e u l os b a r u el a v as , erbmon nu’d tiga’s li’uqsro L 2 fitagén )b 1 0000000000000001 0001 2 0000000000000010 0002 3 0000000000000011 0003 16 0000000000010000 0010 127 0000000001111111 007F 255 0000000011111111 00FF : ) la m ic é da x eh ne émirpxe egadoc emêm el ,etiord à ,tnadnopserroc erianib egadoc el ,ertnec ua ,la micéd ne erb mon el ,ehcuag à( serb mon ed segadoc ed selpmexe seuqleuq icioV .engis ed tib ud etius al à , 2 es a b n e e tir c é ts e e ul os b a r u e l a v a s ,) l u n u o( er b m o n n u’ d t i g a’s li’ u qsr o L fit is op )a .) fitagén ruop 1 te fitisop ruop 0( engis el retnesérper ruop tib nu tnasilitu ne sédoc tnos sreitne sel ,)! egagnal el ,iroitrof a ,cnod te( enihcam al tios euq elleuQ . e u q n o c l e u q el li at e n u à s o p or p er t o n r e si l ar é n é g e d e li c a f ar es li s i a m , stib 61 rus sétnesérper sreitne serb mon sed rus ici snorennosiar suon ,seédi sel rexi f ruoP 2.2 Leur représentation en mémoire . el l i a t e m ê m e n u à t n e d n o ps err o c s él c-s t o m si or t s e d x u e d , t n e m m e u q ér F ! s e ni h c a m s e l s e t u o t r us e ll i a t e m ê m al sap tno’n sel suot : eésilitu enihcam al ed tne melagé sia m ,érédisnoc élc-tom ud tnem -elues non tnednepéd serèinred sec ,siofetuoT .setimil ses tne mellerutan esopmi elliat euqahC 1 tni 2 - Les types entiers 27
  • 56. )01+61( 62 elamicéd ruelav al à dnopserroc A1x0 : elp mexe raP .)X0 uo( x0 serèt -carac xued sed )ezniuq à F ...ezno à B ,xid à dnopserroc A ,9 à 0 tneton es ser ffihc sreimerp xid sel( lamicédaxeh ne tircé erb mon el redécérp tnasia f ne eton es elamicédaxeh emro f a L .13 elamicéd ruelav al à dnopserroc 730 ,21 elamicéd ruelav al à dnopserroc 410 : e lp me x e r aP .0 er ffihc ud 8 esab ne tircé erb mon el redécérp tnasia f ne eton es elatco emro f a L .)61 esab( elamicédaxeh uo )8 esab( elatco noitaton enu resilitu tne melagé zevuop suoV +533 48 -273 : s e l p m e x e s e c s n a d e m m o c , e n g is s n as u o c e v a , e l a mi c é d e mr o f s u os t n e m e l p m is erir c é’ l e d tse e m m ar g or p n u s na d erè it n e et n ats n oc e n u er i u d ort n i’ d el ler ut a n s u l p al n o ça f a L 2.4 Notation des constantes entières .e mr o n al ra p ésir o t u a t n e m e u q ir oé ht ts e a le c is e m ê m , n oi sser p xe e m ê m e n u s na d s é n gis n o n sreitne sed te séngis sreitne sed relé m ed retivé’d élliesnoc tse li ,releppar el ed noisacco’l snorua suon em moC . » stib ed noitalupina m ed « stid sésilaicéps sruetarépo sed etsixe li’uq sruellia’d snorrev suoN .sluclac sed eria f ruop sap non te ) » taté’d tom « nu let( » erianib fito m « nu’d etcerid noitalupinam al à sévresér tnores séngis non sep yt sec ,euqitarp nE .)! n ed ellec à erueirépus ares p ed ruelav al euq sèd emèlborp resop av p-n euq ellet noisserpxe elp mis enu’uq zegnos( sep yt sec ed noitasilitu’l etrop moc euq seuqsir xua trop -par rap ,eriosiréd neib tse egatnava tec siaM .]53556 ; 0[ ellavretni’l à ]76723 ;86723-[ ellav -retni’l ed essap no ,stib 61 ceva ,elpmexe rap ; selbatnesérper serbmon sed elliat al relbuod ed tne meuqiroéht temrep aleC .eriassecén tse’n engis ed tib nucua sleuqsel ruop s fitisop serb - mon sed euq sulp etnesérper en no ,sac ec snaD .dengisnu fitaci filauq el tnasilitu ne stnedéc -érp sed snisiov sep yt sertua siort rini féd à esirotua suov ++C ,euqip yta uep euqleuq noça f eD 2.3 Les types entiers non signés . . . e u n e t er e d t i b n u t n ar o n g i n e , i s n i a é t i ar t ar e s ) u v ér p e p y t e l r u o p d n ar g p o r t e r è v a’ s n o i t ar é p o ’ d t a t l u s é r n u ù o s a c u a t n a d n o p s e rr o c( » é t i c a p a c e d t n e m e ss a p é d e d « e t i d n o i t a u t i s a l , + + C n e’ uq s n or re v s u oN .) l a m i c é d n e 86 723- u o l a m i c é d a xe h n e 000 8 t i o s , 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 i c i ( e l b i s s o p f i t a g é n er b m o n t i t e p s u l p e l . . . t n e i t b o n o , ) t a t - l us é r u d s t i b s r e i nr e d 6 1 s e l e u q er è d is n o c e n n o’ l i s , e m ê m u a t n e i v e r i u q e c , u o( e u n - e t e r er è i nr e d a l e d e t p m o c s a p t n e i t e n n o’ l e u q t e ) l a m i c é d n e 8 6 7 2 3 u o l a m i c é d a x e h ne FF F7 tios ,1111111111111110 ici( fitis op erb mon dnarg s ulp ua 1 et uoja no’l iS 2 .)0000000000000000( erèinam elues enu’d édoc tse 0 erb mon e L 1 se uqrameR 28 Les types de base de C++ CHAPITRE 3
  • 57. .selloryE snoitidé xua ,ruetua emêm ud , snad stnemélé sec rus snoitamrofni’d sulp arevuort nO .)...» enihcam nolispe « ,snoisicérp ,setimil( stnattolf sepyt stneréffid sed sétéirporp sel tnassiniféd setnatsnoc sesuerbmon ed tneitnoc etêt-ne reihcif el ,fitacidni ertit À .1 C egagnal taolfc -naver nE . luclac ed sruerre sed enif es ylana enu eria f tiod no’l euqsrol fuas ,elbasnepsidni s a p t n e m e l ar é n é g ts e’ n e g a d o c e d e m è ts ys u d s et c a x e s e u qi ts ir é t c ar a c s e d e c n as si a n n o c a L .elbuod gnol te elbuod ,taolf : setneré ffid selliat sed à tnadnopserroc stnattol f ed sep yt siort tiovérp ++C .erb mon ud enihcam noitatnesérper al snad tne meticilpxe sap erugi f en elle te )61 ed uo 2 ed tnevuos tiga’s li( eénnod enihcam enu ruop euqinu tne melarénég tse B esab a L .erbmon ec ed noitamixorppa enu etnesérper B.M r ue la v a l e u q se ll e t )t n as o p x e( E te ) ess it n a m( M sétitnauq xued tnanimretéd ne ,tnattol f ne étnesérper ares leér erbmon nu ,tne mésicérp sulP .8- uo 22 euq sellet sétitnauq sel » stnasopxe « te 274.0 uo 5.1 euq sellet sétitnauq sel » sessitnam « e mmon no ,noitaton ellet enu snad ; 01 274.0 uo 01 5.1 e mro f al suos erb mon nu erircé à etsisnoc iuq eunnoc neib )elleitnenopxe uo( euqi fitneics noitaton al ed tneripsni’s sli ,eria f ec ruoP .sleér serb mon sed eitrap enu ,eéhcorppa erèinam ed ,retnesérper ed tnette mrep stnattol f sep yt se L 1 E 8- 22 3.1 Les différents types et leur représentation en mémoire 3 Les types flottants . s er i a n i b s f i t o m e d n o i t a l u p i n a m a l e d s r o l t êr é t n i n u t u o tr u s t n o r u a s é t i l i b i s s o p s e c , er o c n e à L . l u 9 4 6 2 s n a d e m m o c , » l u « r a p t n a x i f f u s a l n e g n o l d e n g is n u e p y t u d er t ê’ d ; l 6 5 4 s n a d e m m o c , » l « r a p t n a x i f f u s a l n e , g n o l e p y t u d er t ê’ d ; u 5 2 - u o u 1 : s n a d e m m o c , » u « r a p t n a x i f f us a l n e , e é n g i s n o n er t ê’ d elamicéd etnatsnoc enu à resop mi tuep nO .)retnesérper al ruop tnasi ffus ,titep sulp el ep yt el esilitu no( gnol uo tni éngis sep yt xued sed nu’l snad eédoc tse ela micéd noitaton ne etircé erèitne etnatsnoc enu ,tua féd raP seriatnemélpmoc snoitamrofnI .)s eé n g is ne i b t n o s el a m ic é d noitaton ne setircé setnatsnoc sel euq srola( éngis non ep yt ed tnos setnatsnoc sec ,sruellia’D .noitseuq ne etnatsnoc al ed euqiré mun ruelav al à’uq erianib fito m ua sulp esserétni’s no selleuqsel snad snoitautis xua seévresér ertê tnadnepec tneviod snoitaton serèinred xued se L 3 - Les types flottants 29
  • 58. .)eénrecnoc enihca m al ed tnadnepéd noisicérp ne etrep al te ec -alp ne niag el( noisicérp ed etrep elleutnevé enu’d eitrapertnoc ne ,eriomé m ecalp ed uep nu rengag ed temrep alec : ) uo( erttel al ed erutircé nos ervius tnasia f ne , ep yt ud ertê’d • : e t n a tt ol f e t n a ts n o c e n u à r es o p mi’ d el b iss o p s i o f e t e p y t el s n a d r u e t a li p m o c e l r a p s e é ér c t n os s et n ats n o c s e l s et u ot , t u a f é d r a P f F tao lf e lbuod 4.25e+4 542.7E-33 48.e13 - u ot ts e lI . 4.25E4 54.27E-32 48e13 42.5E3 5427e-34 48.0E13 : )stnelaviuqé tnaté engil emêm enu’d selpmexe sel( stcerroc selp mexe seuqleuq icioV .)tnasopxe nu esilitu no’l euq sèd tnesba ertê tuep tniop el( reitne uo la micéd erbmon leuq etropmi’n ertê tuep essitna m a L .engis snas uo ceva ,)01 ed ecnas -siup( reitne tnasopxe nu eriudortni ruop ) uo( erttel al esilitu elleitnenopxe noitaton a L .)tnavius ertipahc el snad snorelrap suon tnod te( ruetalipmoc el rap ecalp ne sesim tnores iuq seuqitamotua snoisrevnoc sed unet etp moc ,noitucéxe’d spmet ud uaevin ua tse’n ec is ,ecnatropmi’d uep arua tiaf ec ,euqitarp al s n a D . e t n at t ol f e m m o c n o n t e er èi t n e e m m o c e ér é d is n o c ti ar es 7 4 et na ts n oc a l ,e h c na ver n E e -0.38 -.38 4. E 12.43 .27 : st cerr oc se lp m e xe se uql e uq ic io v n E .)! sp m et e mê m ne xu e d sel setuot sap ,rûs neib ,sia m( esi mo ertê tuep elamicéd eitrap al uo erèitne eitrap a L .)elug -r i v ert o n à t n a d n o ps err o c( t ni o p n u t n e m er i o t a g il b o r e tr o p m o c ti o d e l a mi c é d n oi t at o n a L .e ll e it ne n o p xe • ; e la mi cé d • : s n o it at o n x u e d s e d e n u’l t n a v i us t n e m - meré ffidni erircé’s tnevuep setnattol f setnatsnoc sel ,segagnal sed trapulp al snad e mmoC 3.2 Notation des constantes flottantes . 01 à 01 ed sniom ua ardneté’s li’uq érussa tse no ,eésilitu enihcam al tios euq elleuq ,erocne à L .sèrp erutac -nort ed ruerre’l à selbatnesérper serb mon sed elb mesne’l erid-à-tse’c ,trevuoc eniamod eL • . elb -uod gnol ep yt el ruop 01 te taolf ep yt el ruop 01 sap aressapéd en )evitaler( ruerre ettec euq érussa tse no ,eésilitu enihcam al tios euq elleuQ .erutacnort ed ruerre enu e mmon no’l euq ec tnasia f ne eéhcorppa noitatnesérper enu à retimil es ed égilbo cnod tse nO .egadoc l e t n u s n a d e t c a x e n o ç a f e d r e m ir p x e’s s a p t n e v u e p e n s el a m i c é d e d ét i m il er b m o n n u c e v a tna mirpxe’s serb mon sed trapulp al rO .stib ed ini f erb mon nu’uq revresnoc en ed eriassecén tse li ,tnattol f ep yt nu snad euqnocleuq lamicéd erbmon nu’d egadoc ud srol : noisicérp aL • : st n e m él é xued rap seésirétcarac tnos snoitatnesérper sellet ed euq reton ed tnatrop mi tse li ,ehc 73 + 0 1- 73- 6- 30 Les types de base de C++ CHAPITRE 3
  • 59. . s e h p or ts o p a x u e d er t n e e u q i s s a l c er è i n a m e d s é t o n er t ê ’ d e h c ê p m e s e l i u q r u e t i m i l é d e d r e i l u c i tr a p e l ôr n u t n e u o j , e ms i h p ar g n u’ d t n as o ps i d e u q n e i b , i u q ) t e , , ( s er è t c ar a c s e u q l e u q t n e m e l a g é e v u or t n o , e ir o g é t a c e t t e c s n a D . ) » hs a l s- er t n o c « u o » e sr e v n i err a b « i ss u a e m m o n e l n o , s i a ç n ar f n e , » h s a l s- k c a b « e m m o n e s l i , s i a l g n a n e( » h s a l s i t n a « é m m o n , » « er è t c ar a c e l t n as - i l i t u e l l e n n o i t n e v n o c n o i t a t n e s ér p er e n u t n e d ès s o p s e l b a m i r p m i n o n s er è t c ar a c s n i a tr e C ? " ’ ’a’ ’Y’ ’+’ ’$’ : s el p me xe se c sn a d e m m o c ,u l u ov erètcarac el )setouq uo( sehportsopa ertne tnavircé ne ,euqissalc noçaf ed tneton es ,selb - a mir p mi s er èt c ar a c s e d à t n e d n o ps err o c s e ll e’ u qsr o l , » er èt c ar a c « e p yt e d s e t n a ts n o c s e L 4.2 Notation des constantes caractères . 1 3 te 0 er t ne sir p m o c s e d o c s e d t n o s li ,) n o n u o t n ier tser( I I C S A e d oc el snaD . » elôrtnoc ed serètcarac « sé mmon tnevuos tnos selbamirpmi non serètcarac se L e uqrameR .) emro f al suos( reimerp el ésilitu àjéd sruellia’d snova suoN ...)ehcolc( eronos e mrala enu’d noitavitca’d ,noit -alubat ed ,engil ed tnemegnahc ed serètcarac sniatrec etsixe li’uq isnia tse’C .)narcé nu rus rehci ffa uo re mirp mi cnod tuep no’uq te( emsihparg nu éicossa tnemeriotagilbo tse leuqua erid-à-tse’c ,elba mirpmi erètcarac ed ellec essapéd ++C ne erètcarac ed noiton al ,sruellia raP .stnemennorivne sel suot snad sap tnerugi f en seuq -ihparg-imes serètcarac sel uo )ç uo séutnecca serètcarac( xuanoitan serètcarac sel ,ehcnaver nE .)! em margorp nu erircé ruop eiolp me no’l euq xuec suot ,tia f ne( sruetarapés stner - é f f i d s e d t e n o it a ut c n o p e d s e n g is s e d ,s er f fi h c s e d ,)s e l u c s u n i m t e s e l u cs u j a m( s ert t e l s e d r es -opsid ed niatrec sruojuot tse no ,sniomnaéN .)é yolpme ruetalipmoc ud te eénrecnoc enihcam al ed sio f al à erid-à-tse’c( ésilitu noitam margorp ed tnemennorivne’l ed dnepéd ,selb -atnesérper serètcarac sed elbmesne’l euq isnia ,é yolp me edoc el ,udnetne neiB .tetco nu rus eriomém ne sédoc serètcarac sed relupinam ed temrep ++C ,segagnal sed trapulp al em moC n 4.1 La notion de caractère en langage C++ 4 Les types caractères .)eénrecnoc enihca m al ed tnadnepéd ecalp ne etrep al te noisicérp ne niag el( eriomém ecalp ed etrep enu’d eitrapertnoc ne ,noisicérp ne tnemelleutnevé rengag ed temrep alec : ) uo( erttel al ed erutircé nos ervius tnasiaf ne , ep yt u d ertê’d • l L e lbuod gno l 4 - Les types caractères 31
  • 60. + + C e u q er t i p a h c n i a h c or p e l s n a d s n or r e v s u o n , e h c n a v e r n E . e r i o m é m n e er è t c ar a c n u’ d n o i t a t n es é r p er a l r u s s a p t i g a ’ n e n g i s e d t u b ir t t a t e c e u q z e h c as , t n a t s n i’ l r u o P . te , : s er è t c ar a c e d s e p y t s i o r t t i o v ér p e mr o n a l , t i a f n E 3 . » e h c o l c « a l e r i d- à- t s e’ c , 7 I I C S A e d o c e d e r è t c a r a c u a d n o p s e r r o c 7 e u q s i d n a t , ) 7 5 I I C S A e d o c e d ( 9 e r è t c a r a c u a d n o p s e r r o c 9 , I I C S A e d o c u a e r i a f f a a n o ’ l ù o s a c e l s n a d , i s n i A . é r o n g i t n e m e l p m i s t s e 7 à 0 e d e r f f i h c n u ’ d u o s u s s e d - i c u a e l b a t u d x u e c e u q e r t u a e r è t c a r a c n u ’ d i v i u s , e r è t c a r a c e L 2 .enum moc eitrap ettec à neib tnenneitrappa ici sétic selpmexe sel ; )snoitatne mélpmi s e l s et u ot s n a d e v u or t n o’ u q s er èt c ar a c x u a t n a d n o ps err o c( s e d o c s e d é i ti o m er èi m -erp al num moc ne tno setuot siam ,IICSA edoc ed snoisrev srueisulp etsixe li ,tia f nE 1 rah c d eng i sn u rah c d e ng is ra hc se uqrameR ’A’ ’r’ ’x41’ ’x0d’ ’101’ ’15’ ’015’ ’a’ ’x07’ ’x7’ ’07’ ’007’ : IICSA edoc el snad ,setnelaviuqé snoitaton ed selp mexe seuqleuq icioV .x ed eédécérp elamicédaxeh e mro f suos tios • ; elatco e mro f suos tios • : » hs al si t na « er èt car ac u d e ti us a l à sr u o j u ot ,t n a mir p x e’ l n e er èt c ar a c u d e d o c el t n e m et c er i d r es il it u’ d e l bis s o p ts e l i ,s ul p e D ? " ’ TV )baT lacitreV( elacitrev noitalubaT TH )baT latnoziroH( elatnoziroh noitalubaT RC )nruteR egairraC( toirahc ruoteR FL )deeF eniL( engil ed tuaS FF )deeF mroF( egap ed tuaS SB )ecapskcaB( erèirra ruoteR noitaivérbA elleusu noitacifingiS L EB )lleb elbidua uo trela( pib uo ehcolc F3 ? 22 " C2 ’ C5 B0 v 90 t D0 r A0 n C0 f 80 b ++C ne noitatoN ICS A edoC a 70 : serètcarac sec ed etsil al icioV 32 Les types de base de C++ CHAPITRE 3
  • 61. for (int i=1 ; i<15 ; i++) { k = j*j ; // ici, on utilise k } : e l p m e x e r a p , z er é d i s n o C . e m m ar g or p u d s n o i t c u r ts n i s e l u e s s e d n e m a x e’ l r us s e és a b » s n o i t a s i m i t p o « s e d à r e d é c or p e d r u e t a l i p m o c e l r e h c ê p m e sr o l a t u e p l i’ u q s i u p x ueicérp relèvér es tuep sac ec snad elitalov e d iolp me’L . noitisi uqca’d seuqiré hpirép s n i a tr e c er i a f e l t n e v u e p e m m o c , e r i o m é m s t n e m e c a l p m e s e d r us t n e m e t c er i d r i g a t u e p e m m ar g o r p u a r u e i r é t x e t n e m e n n o r i v n e’ l s e l l e u q s e l s n a d s er è i l u c i t r a p s è r t s n o i t a u t is sed à éti mil tse egasu n oS .e m margorp u d s noitcurtsni sed t nem mad nepédni ,reulové t u e p ) q u o p i c i( e t n a d n o p s err o c e l b a i r a v a l e d r u e l a v a l e u q r u e t a l i p m o c u a e u q i d n i e ll E volatile int p ; volatile int q = 50 ; : s el p m e xe se c s n a d e m m o c , t s n o c euq erèinam emêm al ed elitalov élc-to m el tna yolpme eétisu uep noitaralcéd enu etsixe lI seriatnemélpmoc snoitamrofnI .2 ertipahc ud 1.1 ehpargarap ud em margorp reimerp erton snad elp mexe nu értnocner àjéd snoiva ne suoN .ruetalipmoc el rap seétejer tnores n ed ruelav al tnai fidom s n o it c ur ts ni s e ll e u t n e v é s e l , tî or cr us e d ,si a m 0 2 ) el ai t i n i( r u el a v e d t e t n i e p y t e d n e r a l c é d n o const int n = 20 ; : c e v a ,e l p m e x e r a P .e m mar g or p u d n oi t uc é x e’l ed srol regnahc sap tiod en elbairav enu’d ruelav al euq reralcéd ed elbissop tnadnepec tse lI .51 ruelav al tiarvecer n ùo tnatsni’l snad tiar -edisér ecneré ffid elues al ; )51=n( noitatceffa enu’d niol sulp uep nu eivius ,)n tni( erianidro n oi t ar al c é d e n u r a p e é c a l p m er er t ê t i arr u o p et n e d é c ér p n oi t ar al c é d a l e u q sr u e l li a’ d z e t o N .e m mar g orp ud n o it u cé xe’ l ed sr ol e ul o vé e la it i ni r u el a v e tt ec e uq e h cêp m e’ n ne ir s ia m ; 51 ruelav al arecalp li elleuqal snad tni ep yt ed elbairav enu tse n ,ruetalip moc el ruop ,icI int n = 15 ; : s n a d e m m o c n o it ar a l c é d as e d sr ol e l b a ir a v e n u r es i l a it i ni’ d el b iss o p ts e lI I 5 nitialisation et constantes .rahc ep yt lues nu’uq etsixe’n lI . » edocinU « tid egadoc el tnasilitu ne ,stetco 2 rus sétnesérper tnos serètcarac se L avaJ n E .rinevret ni arruop erètcarac ud engis e d t ubirtta’l , s a c e c s n a d ; e r è i t n e r u e l a v e n u n e e r è t c a r a c e p y t e d r u e l a v e n u r i tr e v n o c e d t e mr e p 5 - Initialisation et constantes 33
  • 62. bool ok = false ; ..... if (.....) ok = true ; ..... if (ok) ..... : e u q s e ll et s n oi t c ur ts n o c s e d s n a d rinevretni tuep lI .eslaf te eurt seéton sruelav xued ed émro f tnemellerutan tuot tse ep yt eC 6 Le type bool . e l c u ob a l s n a d n o i t s e uq n e n o i t - a t c e f f a’ l ar e vr e s n o c r u e t a l i p m o c e l , e l i t a l o v e ér a l c é d é t é a k e l b a i r a v a l i s , e h c n a v e r n E k = j*j ; for (int i=1 ; i<15 ; i++) { // ici, on utilise k } : t ir c é t i a v a n o ’ l i s e m m o c s n o i t - c ur t s n i s e c ar i u d ar t r u e t a l i p m o c e l , e l c u o b a l s n a d e é i f i d o m s a p t s e’ n j e d r u e l a v a l i S 34 Les types de base de C++ CHAPITRE 3
  • 63. enu à ruelav enu’d noitubirtta enu esilaér y noitatce ffa’d noitcurtsni’l ,eriartnoc uA .elbairav enu à ruelav enu’d noitubirtta enucua reilucitrap ne ,noitca enucua esilaér en siam ruelav enu edèssop noisserpxe’l ,)C uo( ++C euq sertua segagnal sel snad ,tnemelarénég ,siaM ; p * 2 + n n oi s s er p x e’ l tî ar a p p a e ll e u q a l s n a d cout << "valeur = " << n + 2 * p ; : eg a hc i f fa’ d n o it cur ts ni’ l ero c ne uo y = a * x + b ; : noitatce f fa’d noitcurtsni’l ,elp mexe rap ,em -moc ,snoisserpxe sed rinevretni eria f tnemelleutnevé tnavuop snoitcurtsni sed ,trap ertua’d • ; sruetarépo’d edia’l à )sertua ertne( seémro f snoisserpxe sed ,trap enu’d • : + + C ne e m m oc , e v u or t n o , s e g a g n al s e d tr a p ul p a l s n a d , t e f f e n E . n o i t a ci l p x e e n u e tis s e c é n t c e ps a r ei nr e d e C .noitatnemércni’d te noitatceffa’d xuanigiro sruetarépo’d liatnevé tnatropmi nu’d esop -sid ++C ,tîorcrus ed ,siaM .)stib ed snoitalupinam( seuqissalc sniom uo )seuqigol ,slennoit -aler ,seuqitémhtira ( seuqissalc sruetarépo sed uaevin ua droba’d tuot etse fina m es essehcir etteC .sruetarépo ne sinruo f sulp sel segagnal sed nu’l tnemeniatrec tse ++C egagnal e L 1 Originalité des notions d’opérateur et d’expression en C++ Opérateurs et expressions 4
  • 64. . e g ar v u o t e c e d et i us al s n a d s és o p x e t n or es s l I . » e étr o p ed noitulosér « e mmon no’l euq ec te sessalc sed serb me m xua sècca sel ,serutcurts sed te xuaelbat sed stnemélé xua sècca sel ,sruetniop sel tnemelleitnesse tnenrecnoc sruetarépo sertua )s e u ql e u q( s e L .s n ois s er p x e s e d s n oi t a u l a v é s e l s n a d t n e n n e i vr e t n i i u q e p yt e d n o isr e v n o c e d te étiroirp ed selgèr sel euq isnia ++C ud sruetarépo sed trapulp al etnesérp suov ertipahc eC .eésilituni ,erocne àl ,tse etèlpmoc noisserpxe’l ed elani f ruelav al ,ertnoc rap ; k à eétce ffa ruot nos à tse ,5 erid-à-tse’c ,5=i noisserpxe’l ed ruelav al ,sac reinred el snaD .eésilituni tnemelani f tse ruelav al tnod )5=i uo i++( nois -serpxe enu’d noitaulavé a y li ,sac xued sec snad ,euq zetoN .segagnal sertua sed trapulp al snad tne meuqissalc ertnocner al no’uq ellet noitatcef fa enu’d erulla’l tno serèimerp xued se L ++i ; i = 5 ; k = i = 5 ; : sussed-ic seéuqové snoisserpxe sel tnennerper iuq snoitcurtsni sellet ed selpmexe sed icioV .» noisserpxe noitcurtsni « tnevuos em mon al nO .elugriv-tniop nu rap eénimret noisserpxe enu tse egagnal ec ed noitcurtsni elapicnirp al euqsiup seéil tnemetiorté tnos noitcurtsni’d te noisserpxe’d snoiton sel ,++C ne ,tia f nE .5 erid-à-tse’c ,5 = i n o iss er p x e’ l e d r u e l a v a l k à ar et c e f f a el l e s i u p 5 r u e l a v al i à a r e t c e f f a e l l e , t i d t n e m e r t u A k = (i = 5) : e m mo c eé térpre t ni ar es el lE .)s n or d -neiver y suon – noitcurtsni enu erocne sap tse’n ec( ++C ne noisserpxe enu etnesérper k = i = 5 : etnavius noitaton al ,elpmexe raP .ruetarépo nu tse )=( noitatce ffa’l ,++C ne ,sruellia’D .)5 ruelav ed ,ici( noisserpxe enu emmoc eérédisnoc ertê ,ruot nos à ,arruop i = 5 : euq ellet euqissalc tne mmerappa noitatce f fa enu ,trap ertua’D • .noitatnemércni sèrpa i ed ellec riovas à ,ruelav enu arua elle ,sp met e mê m ne ; 1 ed i ed ruelav al retnemgua : riovas à ,noitca enu aresilaér ++i : ) + + C n e n o iss er p x e e n u’ d n ei b t i g a’s li ,snorrev el suon em moc ,rac( noisserpxe’l ,isniA .selbairav ed unetnoc el rus riga tnem -elagé sia m ,)ruelav enu aredéssop ,etp moc ud tuob ua ,elleuqal( noisserpxe enu’d nies ua r i n e vr e t ni t n e m e l u es n o n t n orr u o p n o it at n e m ér c ni’ d sr u et ar é p o ) x u a e v u o n( s el , tr a p e n u’ D • : e u qsi u p t ne m m eré f f i d a v n e li , + + C n E .setniojsid tnemetia frap snoiton xued à eria ffa a nO .ruelav ed sap edèssop en siam elbairav 36 Opérateurs et expressions CHAPITRE 4
  • 65. .etneréffid elliat ed stnattolf xued ed uo tnattolf nu’d te reitne nu’d noitidda’d sap etsixe’n lI .elliat emêm ed stnattolf ed uo elliat emêm ed sreitne xued ed snoitidda sed euq ,elpmexe rap ,etsixe’n li ,enihcam egagnal nE .1 .stnattol f sel ruop te )non uo s fitisop( sreitne sel ruop ini féd tse % ruetarépo’L avaJ n E .)G exennA’l tnemelleutnevé ze yov( htamc snad erugi f etêt-ne’l tnod ,dradnats euqèhtoilbib al ed re wop noitcno f al à tios ,)x*x*x e mmoc x areluclac no ,elpmexe rap( sednarg port sap serèitne secnassiup sed ruop s fisseccus stiudorp sed à tios leppa eria f ed eriassecén tse lI .ecnassiup al à noitavélé’d ruetarépo’d sap etsixe’n lI 3 e uqrameR .) 5.2 t ne me v it a m i xorppa neib tuav 0.2/0.5( tnattol f nu neib tse )/ issua iul ,éton( stnattol f xued ed tneitouq el ,ehcnaver ne ; 2 tuav 2/5 ,isniA .reitne nu tinruo f sreitne xued ed tneitouq el ++C ne’uq neib zetoN .noitatne mélp mi’l ed dnepéd tatlusér el ,sac sertua sel snaD .sednarépo xued ses ed s e vi ti s o p sr u e l a v s e d r u o p e u q r u et ar é p o t e c ti n i f é d e n I S N A e mr o n a L . 5 t u a v 6 % 3 2 , 3 t u a v 4 %11 ,elpmexe raP .dnoces nos rap ednarépo rei merp nos ed noisivid al ed etser el tinruof iuq te sreitne sed rus euq retrop tuep en iuq % éton oludom ed ruetarépo nu etsixe li ,sulp eD . stneré f fid sep yt ed sednarépo sed rus tnoretrop sli’uqsrol tios • ; )rahc dengisnu te rahc dengis ruop e mê m ed ari ne li( serètcarac sep yt siarv ed sulp es -siga’s en sli’uq neib ,loob emêm uo rahc ep yt ed sednarépo sed rus tnoretrop sli’uqsrol tios • ; ) trohs dengisnu ruop emêm ed ari ne li( erèit -ne trap à euqiré mun ep yt nu tse iuq trohs ep yt ed sednarépo sed rus tnoretrop sli’uqsrol tios • : n oi t a ci f i n g is e n u r e n n o d r u e l ar u as r u et al -ip moc el ,seticilp mi snoisrevnoc sed uej el rap ,euq ,3 ehpargarap el snad ,snorrev suon siaM . se d naré p o sr u e l e u q e p yt e m ê m e d t at l usér n u t ne ssi nr u o f s li te )gnol dengisnu te tni dengisnu euq isnia( elbuod gnol te elbuod ,taolf ,tni gnol ,tni : imrap ep yt emê m el tna ya sednarépo xued ruop euq sini féd iroirp a tnos en serianib sruetarépo se L .)y+x- snad uo n- snad em moc( - éton ésoppo’l à tnadnopserroc )ednar -épo lues nu rus euq tnatrop en erid-à-tse’c( » erianu « ruetarépo nu’d euq isnia ,)/( noisivid al te )*( noitacilpitlum al ,)-( noitcartsuos al ,)+( noitidda’l riovas à ,) » sednarépo « xued rus tnat -rop erid-à-tse’c( » serianib « seuqissalc sruetarépo’d esopsid ++C ,segagnal sel suot em moC 1 2.1 Présentation des opérateurs 2 Les opérateurs arithmétiques en C++ 2 - Les opérateurs arithmétiques en C++ 37
  • 66. ; ) fi t a g é n t a tl us -ér nu tinruo f séngis non sreitne sed rus tnatrop noitarépo enu is eriudorp es tuep li( ep yt ud éticapac al ruop )eulosba ruelav ne( dnarg port luclac ed tatlusér : éticapac ed tnemessapéd • : tc erro c ta t lu sér n u r i n -ruo f sap tuep en ruetarépo nu ùo secnatsnocric siort etsixe li ,segagnal sel suot snad e mmoC 2.3 Comportement des opérateurs en cas d’exception .luclac ed sruerre sel tne metia frap resirtîam à ehcrehc no’l euqsrol euq ecnatropmi’d a’n euqramer ellet enu’uq neib zetoN .sluclac sed erdro’l » recrof « à s a p t i f f u s e n s a c e c s n a d s e s è h t n e r a p e d i o l p m e ’ l e m ê M . c t e b e d e m m o s a l à a t n a t u oj a ne’uq ,b te a ed em mos al à c tnatuoja ne eéluclac ertê neib issua arruop c+b+a euq ellet noisserpxe enu ,elpmexe raP .sétucéxe tnemelani f tnores sli leuqel snad erdro’l ed niatrec ert ê t ue p e n n o ,s fi t at u m m oc t n e m e u q ir o é ht t n o s sr u et aré p o x u e d e u qsr o l ,s n i o m na é N . n o iss er p x e e n u’ d e t c a x e n oi t a ci f i n g is al r i n i f é d r u o p t n e n n ei vr e t ni ét ir oir p e d s el g èr s e L e uqrameR a a - + * c a a a b b % + / / * + d c - % d b + c ( b + c ) c c % d a ( ( ( ( ( + a ( - ( * c a a b b ) ) a ) * ) % + ) / c + d ( / ( c % d ) ( - b ) ) + c - ( b + c ) ) ) ( c % d ) : )statlusér se mêm xua cnod tnesiudnoc seésop -orp snoisserpxe xued sel( sluclac sel tneutceffe’s erdro leuq snad ertnom ,seulfrepus sesèhtnerap sed setiudortni été tno ùo ,etiord ed noisserpxe’l sleuqsel snad selp mexe seuqleuq icioV .noisserpxe enu’d étilibisil eruellie m enu rerussa ruop seé yolpme ertê t n e m e l a g é t n e v u e p s e s è ht n e r a p s e c e u q z e t o N . t n e n n e it n o c s e l l e ’ u q n oi s s e r p x e ’ l e d e l b a l a é r p luclac el tnaçro f ne ,étiroirp ed selgèr sec ressapertuo’d tnette mrep sesèhtnerap sed ,nifnE .) e h c u a g à et i or d e d é ti v it ai c oss a e n u t n es i li t u , s e u qi t é m ht ir a’ u q sertua ,sruetarépo seuqleuq euq snorrev suon( etiord à ehcuag ed étivitaicossa enu à eria ffa a n o’ l e u q t i d n O . e t i or d à e h c u a g e d t n e u t c e f f e’s s l u c l a c s e l ,s e u qi t n e di s é tir oir p e d s a c n E .- te + serianib sruetarépo sel tnessiarappa ,uaevin reinred nu rus ,nifnE . % te / ,* sruetarépo sel ,uaevin e m ê m n u à , et i us n e e v u ort n O . e é v e l é s u l p a l é tir oir p a l t n o - t e + s eri a n u sr u et aré p o se L .)ici snolrap suon tnod seuqité mhtira sruetarépo sel enrecnoc iuq ec ne ,sniom ud( ellennoitidart erbègla’l ed sellec tnengiojer te sellerutan tnos selgèr sel ,segagnal sertua sel snad em moc ,++C nE .uej ne sim tnos sli erdro leuq snad riovas ed eriassecén tse li ,noisserpxe emê m enu snad tnessiarappa sruetarépo srueisulp euqsro L 38 2.2 Les priorités relatives des opérateurs Opérateurs et expressions CHAPITRE 4
  • 67. .iniféd tse séngis non sreitne’d noitidda’l ed éticapac ed tnemessapéd el lueS .1 .)snoitpecxe sed noitseg ed emsinacé m nu’d ecnetsixe’l érglam ,++C ne sac el sap tse’n iuq ec( emmargorp el rap eétpecretni ertê tnemelleutnevé tuep iuq » noitpecxe « enu ehcnelcéd oréz rap noisivid ed evitatnet al elueS .stnattol f sel ruop EEEI snoitnevnoc sed noitasilitu ,reitne ne étic - a p a c e d s t n e m es s a p é d s e d n o it c e t é d e d s a p : e g a g n a l e l r a p és o p m i t s e t n e m etr o p m o c e L avaJ n E .s ert u a s el s na d noitucéxe’l ed têrra nu à ,EEEI snoitnevnoc sel tnatcepser snoitatne mélp mi sel snad )reb -muN a toN( NaN uo FNI- ,FNI+ sruelav sed enu’l à tiudnoc oréz rap noisivid ed evitatnet al • ; noitucéxe’l ed têrra nu à tios ,lun tatlusér nu à tios tiudnoc stnattol f sed éticapac ed tnemessapéd-suos el • ; s ert u a s el s n a d n o it u c é x e’ l e d t êrr a n u à , E E E I s n o i t n e v n o c s e l t n at c e ps er s n o it at n e m -élpmi sel snad FNI- uo FNI+ ruelav al à tiudnoc stnattol f sed éticapac ed tnemessapéd el • ; t at l u s é r u d s fi t a c i f i n gi s s ni o m s el s ti b sel revresnoc ed etnetnoc es no te étcetéd sap tse’n sreitne sed éticapac ed tne messapéd el • : euq etatsnoc no ,tnadnepec ,euqitarp nE . .. • ; ruerre’d egassem nu’d )ertê-tuep( éngap mocca em margorp ud têrra nu à • ; E E E I s e t i d s n oi t n e v n o c s e l t n e s il i t u i u q snoitatne mélpmi sel snad stnattolf sel ruop tiudorp es iuq ec tse’c : ini fni tse li’uq uo erbmon n u s u l p ts e’ n t a t l u s ér n u’ u q r e u qi d n i à t n e m el l e n n oi t n e v n o c t n a vr es er è il u ci tr a p r u el a v e n u à • ; x u a f t a t l u s ér n u à • : r i t u o b a c n o d t u e p n o , e ir o é h t n E . » é n i mr et é d n i ts e e m m ar g -orp ud tnemetropmoc el « ,secnatsnocric sec snad ,euq erid ed etnetnoc es ++C ed e mron a L .oréz rap noisivid ed evitatnet • ; stnattol f sep yt sel ruop euq etnesérp es en noitautis ettec ; ep yt ud éticap -ac al ruop )eulosba ruelav ne( titep port luclac ed tatlusér : éticapac ed tnemessapéd-suos • 1 2 - Les opérateurs arithmétiques en C++ 39
  • 68. - u t a n é d s a p e n e d t e mr e p i u q e i h cr ar éi h e n u t n a vi us e u q eri a f es t u e p e n n oisr e v n o c el l e t e n U . » ep yt ed tnemetsuja’d noisrevnoc « enu e mmon es taolf >- tni euq ellet noisrevnoc enU 3.2 Les conversions usuelles d’ajustement de type .ertîannoc sap tuep en li tnemelarénég euq ruelav enu’d noisrevnoc al emêm-iul reutce ffe sap tuep en li ; )em margorp ud snoitcurtsni sertua sel euq spmet emêm ne seétucéxe cnod tnores iuq( noisrevnoc ed snoitcurtsni sel riovérp euq tuep en ruetalipmoc el ,noitnettA e uqrameR . t a o l f e p y t e d a r e s l a n i f t a t l u s é r e l t e , e c a l p n e s i m a r e s e m s i n a c é m e m ê m e L . ) t n i t e t a o l f( stneré ffid sep yt ed sednarépo xued ed ecnesérp ne uaevuon à evuorter es no ,noitidda’l ruoP .taolf ep yt ed tatlusér nu arinruo f elle te taolf ep yt ed sednarépo xued rus aretrop noitacilpitlum al ,etpmoc ud tuob uA .)xua f tne mellerutan tnaté esrevni’l ,erèitne ruelav enu tnemelbanevnoc sèrp uep à retnesérper ed temrep taolf ep yt ec euq erèdisnoc no rac( taolf ep yt el snad n ed ruelav al ed noisrev - n o c e d s n oi t c ur ts ni s e d e c al p n e er tt e m a v l i , el b iss o p ti os al e c e u q r u o P . x * n ti u d or p e l r e u t -ce ffe droba’d tiod li’uq ,étiroirp ed selgèr sed unet etp moc ,tias ruetalipmoc el ,sac ec snaD n * x + p : taolf ep yt ed ésoppus tse x euq sidnat ,tni ep yt ed sésoppus tnos p te n elleuqal snad ,eésirotua noisserpxe’d elp mexe nu icioV .stneré ffid sep yt ed sednarépo sed tnenneivretni selleuqsel snad » setxim snoisserpxe « sed em mon no’l euq ec erircé’d temrep suov ++C siaM .ep yt e mê m ed tnos sednarépo xued sruel euqsrol euq sini féd tnos en seuqitémhtira sruetarépo sel ,tid snova’l suon e mmoC 3.1 Notion d’expression mixte .sp met rei merp nu snad rerongi’l tnemelleutnevé zerruop suov ; sétisu uep sac sec rus tniop el etiusne are f rueirétlu ehpargarap nU .séngis non sep yt sel rinevretni sap tnasia f en selleusu snoitautis sel droba’d t u ot s n or e n i m a x e s u o n ,s o p or p el r e t il i c a f r u o P . i c i r e n i m a x e s n ol l a s u o n e u q e c t s e’ C .loob ep yt el euq isnia ,)seéngis non setnairav sruel ceva( rahc te trohs sep yt sel resilitu’d • ; n oi ss er p x e e m ê m e n u’ d n i es u a s e p yt sr u e is ul p r e g n a l é m e d • : temrep suov ++C ,tnemesuerueh trof ,siaM .elbuod gnol te elbuod ,taolf euq isnia ,)seéngis non setnairav sruel te( gnol te tni imrap ep yt emêm ed sednarépo sed ruop euq sini féd tnos en seuqitémhtira sruetarépo stneré ffid sel ,éuqové àjéd snova’l suon e mmoC 40 3 Les conversions implicites pouvant intervenir dans un calcul d’expression Opérateurs et expressions CHAPITRE 4
  • 69. : sèrpa-ic a méhcs el euqidni’l em moc eéulavé tse p1 * p2 + p3 * x : noisserpxe’l , taolf ep yt ed x te trohs ep yt ed tnos 3p te 2p ,1p is ,elp mexe raP .) » s e u qi t a m é ts ys s n o isr e v n o c « e d erocne uo( » seuqirémun snoito morp « ed ,sac ec snad ,srola elrap nO .sednarépo sertua sleut -nevé sed sep yt sel rerédisnoc snas alec te ,tni ne eitrevnoc droba’d tse noisserpxe enu snad tnassiarappa sep yt siort sec ed nu’l ed ruelav etuot euq tnemelp mis tuot tiovérp ++C ,tia f nE .seuqitémhtira snoisserpxe sed snad ,issua xue ,ertîarappa tnadnepec tnevuep iuq loob te rahc sep yt sel ruop in ,)euqirémun ep yt iarv nu’d essiga’s li’uq neib( trohs ep yt el ruop sini féd sap tnemeuqiroéht tnos en seuqité mhtira sruetarépo sel ,tid àjéd snova’l suon e m m o c ,t e f fe n E . sac s el s u o t r el gér à s a p t nes i f f us e n e p yt e d t n e m ets u ja’ d s n oisr e v n o c s e L 3.3.1 Généralités 3.3 Les promotions numériques usuelles n * p + x | | | long | | | | | |__ * __| | | | long | | | float | | | |____ + ____| | float ce qui fournit un résultat de type float pour être additionné à x il est converti en float le résultat de * est de type long multiplication par p conversion de n en long : a m é h cs e c t n a vi us e é ul a v é ar es n * p + x : n oi sserp xe’ l ,taolf e p y t e d x te g n o l ep y t ed p , tni ep yt ed tse n is ,elp mexe raP .elabolg noça f ed noisserpxe’l sap non te sénrecnoc sednarépo s el n u à n u t n ar é d is n o c n e é ut c e f f e ts e er v u œ n e ert t e m à s n oisr e v n o c s e d xi o h c el e u q z e t o N .tni ne uo taolf ne elbuod nu ritrev - n o c s a p arr u o p e n n o , e h c n a v er n e ; e l b u o d n e t n i n u t n e m e t c eri d ri tr e v n o c r ûs n e i b t u e p n O int -> long -> float -> double -> long double : riovas à ,)seén -nod sed étirgétni’l tnetcepser snoisrevnoc sellet ed euq siofrap tid no( elaitini ruelav al rer 3 - Les conversions implicites pouvant intervenir dans un calcul d’expression 41
  • 70. c1 c2 | | int int |___ _ ___| | int promotions numériques char -> int . ét i n u e n u’ d ét n e m g ua 1 c s n a d u ne t n oc erè tc ara c ud edoc ud ruelav al à tnadnopserroc ,tni ep yt ed tatlusér nu cnod tinruo f 1+1c noisserpxe’L c1 + 1 | | int | |___ + ___| | int promotion numérique char -> int .tni ep yt ed tse n euq sidnat ,rahc ep yt ed tnos 2c te 1c euq esoppus no sleuqsel snad ,snoisserpxe’d noitaulavé’d selpmexe seuqleuq icioV . e mê m el sr uo j u ot sap are s e n é n n o d erè tc ara c n u à éi c ossa re it n e’l ,s erè tc ara c s el r u o p e d oc e mê m e l sa p t ne i ol p m e’ n senihca m sel setuot em moc ,euq neib zetoN .etnesérper el iuq edoc ud )reitne( ruelav al ceva erètcarac nu tnemelica f dno fnoc ++C etros euqleuq ne’uq erid tuep no ,tne mevitce ffE .56 erb mon el erdnopserroc eria f tuep no leuqua ,10100010 erianib f i t o m e l r a p é t n e s é r p e r t s e E er èt c ar a c e l , I I C S A e d o c e l s n a d , e l p m e x e r a p ; ) n oi ts e u q n e fito m el tinruo f ,erianib ne édoc ,iuq erb mon el( reitne erb mon nu erdnopserroc eria f sruoj -uot tuep no reinred ec à ro ; stib 8 ed fito m nu erid-à-tse’c ,erètcarac ec ed edoc el e mmoc • ; e n g il e d n i f , Z , a : é n r e c n o c e r è t c a r a c e l e m m o c • : s no ça f xu e d ed eérédisnoc ertê tuep erètcarac ep yt ed ruelav enu ,te ffe nE .euv ed tniop ed noitseuq enu’d euq tiga’s en li ,tiaf nE .noitaci fingis as rus regorretni suov te tni ne rahc ed )euqirémun noitomorp( euqitaméts ys noisrevnoc enu’d ecnetsixe’l ed sirprus ertê zevuop suov ,iroirp A 3.3.2 Cas du type char .tne mmedécérp euq selgèr semêm sel euqilppa no ,iouq sèrpa ; tni >- trohs euqiré mun noit -omorp al à sesi muos droba’d tnos trohs ep yt ed selbairav siort sed sruelav sel euq neib zetoN 42 p1 * p2 + p3 * | | | int int int |____ * ____| | | float int |___ * ___ | | float float |_________ + _________| | float x | | | | | conversion d’ajustement de type promotions numériques short -> int addition conversion d’ajustement de type addition Opérateurs et expressions CHAPITRE 4
  • 71. . ed ellec à erueiréfni tse ed ruelav al euq sèd éticapac ed tnemessapéd nu à eriudnoc tuep )éngis non epyt ed tnos te ùo( euq ellet noisserpxe elpmis enu ,siof ettec ,noitnettA .1 p p n n p-n seuvérp snoisrevnoc sel euq zehcas ,fitacidni ertit elpmis À .erircsorp à cnod tse étrebil ellet enU .)? éngis non ne itrevnoc riolav neib sruellia’d tiarruop euq( seénnod sed étirgétni’l ,noçaf etuot ed ,sap tnatcepser en te snes ed erèug tna ya’n )éngis non srev éngis ed tnemelarénég( snoisrevnoc sed ecalp ne erttem à tiudnoc li sia m ; egagnal el rap étpecca tse ,élliesnocéd tnemetro f tios li’uq neib ,séngis non sep yt sed te séngis sep yt sed egnalé m el ,ehcnaver nE .) sétcetéd sap tnores en iuq éticapac ed stne messapéd sed rinetbo sruojuot tuep no( esop es en uaevuon e mèlborp nucua sia m , s n ois -revnoc sel rap )ep yt ed tne metsuja’d snoisrevnoc te seuqiré mun snoitom -orp( snoisrevnoc sel retélp moc ed tne melp mis ti ffus lI .sellerutan tnetser sesohc sel ,séngis non sreitne sep yt sed te séngis sreitne sep yt sed sap egnalé m en noisserpxe enu’uq tnaT 5- 1 gnol dengisnu >- tni dengisnu >- t roh s d engi snu gnol >- tni >- t roh s 3.4.1 Cas des entiers .spmet reimerp nu snad érongi ertê tuep ehpargarap eC .éngis non ep yt ed sednar -épo sed noisserpxe enu snad tnessiarappa ùo selleusu uep snoitautis sel ici snoni maxe suoN 3.4 Les conversions en présence de types non signés .étilibitapmoc al erussa eéuqové eticilpmi noisrevnoc al ,erocne à L . 1 u o 0 erè i t n e r u el a v e n u t ness i nr u o f li , C e g a g n al ne’ u q is n ia , + + C e d s n oisr e v s e n ne ic na sel snaD .loob ep yt ed tatlusér nu tnessinruo f )seuqigol ,slennoitaler( sruetarépo sniatreC bool ok = true ; ..... cout << ok + 2 ; ..... ok = false ; cout << ok +2 ; // affiche 2 // affiche 3 : elpmexe nu icioV .tni ne loob ed )euqirémun noitomorp( euqitam -éts ys noisrevnoc enu uvérp a emron al ,sedoc sneicna’d ceva étilibitap moc al revresérp ruoP .)0 uo 1( reitne nu rap seétnesérper tne melpmis tneiaté )eslaf te eurt( setnadnopserroc sruelav sel ,tnavarapuA .)C ne sap etsixe’n li( ++C snad tnemevidrat tiudortni été a loob ep yt e L 3.3.3 Cas du type bool c1 + n | | int | |___ + ___| | int promotion numérique pour c1 .)seuqiré mun snoitomorp( tni ne sruelav sruel ed elbalaérp noisrevnoc emêm dnauq a y li ,rahc ep yt ed tneios sednarépo xued sel euq neib ,icI 3 - Les conversions implicites pouvant intervenir dans un calcul d’expression 43
  • 72. .ruetidé emêm el zehc ,ruetua emêm ud C egagnaL snad sétilibissop sec ed eélliatéd eduté enu arevuort nO .1 .) e yt lues nu’uq etsixe’n li’uq snoleppar( éngis non tiaté ep yt e l is e m m o c e ss a p es t u o t ; r ei t n e n e ed euqirémun noito morp enu tnemelagé etsixe lI rahc rahc rahc avaJ n E cout << c ; : euq ellet noitcurtsni enu snad tîarappa’n ep yt ec ed emèlborp nucua’uq zetoN .n o it at n e m élp m i’l t n a vi us nu à uo nu à erdnopserroc tuep ic-iulec ,)truoc tuot( ep yt ed tse is ,euq sap areilbuo’n nO . ep yt e d ts e is te ertne esirp moc ruelav enu • ; ep yt ed tse is te ertne esirp moc ruelav enu • : ) e d eé t ne mg u a ,erè i nre d et t ec t na té e é hc i f fa r u el a v al( ne eitrevnoc ed ruelav al ruop aresilitu etnedécérp egahci ffa’d noitcurtsni’l ,isniA t n ei v e d t n ei v e d : e l p m e x e r a P . e r èt c a r a c u d e d o c u d t i b r ei m er p u a x u a g é st i b 8 e d o c n os e d e h c u a g à et u o j a n o , é n gis ts e er èt c ar a c e l i S • t n ei v e d t n ei v e d : elp mexe raP .0 à xuagé stib 8 edoc nos ed ehcuag à etuoja no ,éngis sap tse’n erètcarac el iS • . noisserpxe’l ed noitaulavé’l à eriassecén , euqiré mun noitomorp al tnemésicérp eluoréd es tnem moc sno yov te stib 61 rus sétnesérper tnos ep yt ed sreitne sel euq ,erocne ici ,snosoppus ,seédi sel rexi f ruoP rah c d eng isnu rah c rahc dengis rahc dengisnu c c r a h c d e n gi s c 552 721 0 821- 1 c 0000000001001110 0000000011011001 01001110 11011001 tn i 01001110 11011001 0000000001001110 1111111111011001 1+c tni >- rahc tni char c ; cout << c+1 ; : euq sellet noitautis sed snad ,elp mexe rap ,sac el tse’C .e mê m - i ul er èt car ac ua s ulp n on te er èt car ac ua e é ic oss a e uqir é m u n r ue l av al à e sser ét n i’s n o’ uq srol sèd rinevretni av tubirtta tec ,ehcnaver nE . el tnatpmoc ne selbissop snosianibmoc 652 tios ,stib 8 rus sedoc ed uej lues nu’uq a y’n li : )édoc( étnesérper tse énnod erètcarac nu tnod erèina m al rus ecnedicni enucua a’n erètcarac ep yt ed elbairav enu’d engis ed tubirtta’L .)s é ng is e m m oc sér éd is n oc t n os sre it n e s e p yt s e l s u ot ,t u a f é d r a p , e u q sr o l a( à uo à d n o ps err o c ) tr u o c t u o t( is sap tid en emron al ,ertuo ne ; engis ed tubirtta nu riovecer ,issua iul ,tuep ep yt e L 0 rah c dengis rahc d engi snu rah c rah c 3.4.2 Cas des caractères . )énrecnoc erianib fitom el leuq let revresnoc à tneiver ne e d n oi s -revnoc al ,elpmexe rap( erianib fito m el revresérp ed tnetnetnoc es ,sac ec snad ,emron al rap tni dengisnu 1 tni dengis 44 Opérateurs et expressions CHAPITRE 4
  • 73. .snoisserpxe sed snad sesèhtnerap seniatrec retivé’d tnevuos temrep aleC .seuq -itémhtira sruetarépo sel euq seriatiroirp sniom tnos slennoitaler sruetarépo sec ,trap ertua’D . er i ar t n o c s a c e l s n a d r u e l a v al ardnerp ellE .sessua f xued sel setuot tnores selle’uqsrol tios ,seiarv xued sel setuot tnores selle’uqsrol tios erid-à-tse’c ,ruelav emêm al xued sel setuot tnorua d < c te b < a snoitaler sel e u qsr o l r u e l a v a l a r d n e r p n o i s s e r p x e e t t e c , t i a f n E . s e r è i t n e s é t i t n a u q s e d , t n e m e l a n i f , t n o s te s n o iss er p x e s e l e u q é n n o d t n at é , n oi t a ci f i n gis e n u t n e m e vi t c e f f e a , + + C n e , i u q e c d< c 0 1 b<a ( a < b) == (c < d) : e mmoc eétérpretni tse a < b == c < d : noisserpxe’l ,isniA .stnedécérp sed ellec à erueiré fni tse ic-ellec siam ,étiroirp emêm al tnemelagé tnedèssop ) te ( sreinred xued se L .étiroirp emêm ed tnos )=> te =< , ( sruetarépo sreimerp ertauq sel euq riovas tuaf li ,étiroirp ruel enrecnoc iuq ec nE . s n o it at ( noitaton al neib zeuqrameR =! > , == < - c e f f a x u a é v r e s é r t n a t é e n gi s e l , ét il a g é’ d r u et ar é p o’l e d ) = == sl enno ita ler sru etar épo se L rue tarépO noita cifingiS < à rueiré fni =< à lagé uo rueiré fni > à rueirépus => à lagé uo rueirépus == à lagé =! ed t neréf fid : ++C ne tnatsixe slennoitaler sruetarépo sed etsil al icioV .)eiarv ares ( uo , e p yt e d sr u el a v s e d t n er u g i f s e d n ar é p o s e l s n a d is e mê m ,euqiré mun ep yt ed snoisserpxe sed euq rerapmoc à énema ares en no etpmoc ud tuob ua’uq ei fingis aleC .tnedécérp ehpargarap el snad seétnesérp noisrevnoc ed selgèr xua sesimuos tnores selle te euqnocleuq esab ed ep yt nu’d ertê tnorruop seérapmoc snoisserpxe seL . sruelav xued sed enu’l tnanerp enneéloob ruelav enu tse nosiarap moc al ed tatlusér e L es laf> eurt uo loob rah c trohs es laf eu rt 2 * a > b + 5 : elp mexe nu iciov nE .nosiarap moc ed seuq -issalc sruetarépo’d edia’l à snoisserpxe sed rerap moc ed temrep ++C ,egagnal tuot em moC 4 Les opérateurs relationnels 45 4 - Les opérateurs relationnels
  • 74. ! engis ed tubirtta’l tnavius reirav tuep elleuqal ,serètcarac sertua xua troppar rap )tnetsixe sli’uqsrol( séutnecca serètcarac sed ecalp al rus euq sulp sap ,selucsuni m sed te selucsuja m sed ,ser ffihc sed sevitaler secalp sel rus etiaf ertê tuep en esèhtop yh enucua ,ehcnaver nE . .. sruojuot a no ; lerutan erdro rap séssalc tnos ser f fihc sel • .. . , sr u o j u ot a n o ; tr a p ertua’d selucsujam sel ruop ,trap enu’d selucsunim sel ruop étcepser tse euqitébahpla erdro’l • : egadoc ec tios euq leuq ,euq riovas tua f li ,tnadnepeC .)é y olp me ep yt ud éngis non uo éngis tubirtta’l ,tne melleutnevé ,te( é yolpme egadoc el tnavius reirav cnod tuep nosiarapmoc ellet enu’d tatlusér e L . ed erètcarac ud edoc ua erueiré fni ruelav enu a ed erètcarac ud edoc el is eiarv ares elp mexe rap ,te ffe nE .tnesopmi’s snoisicérp seuqleuq ,étilagéni’d snosiarap moc sel ruop ,ehcnaver nE .ecneul fni’d erèug a’n n o isr e v n o c e n u’ d e c n ets i x e’ l , s e c n at s n o cri c s e c s n a d , ti d t n e m er t u A . er è t c ar a c el t n ei t n o c i s c n o d , e d e d o c u a l a g é ts e e d e d o c el is e iar v ares • ; er èt c ar a c e m ê m e l t n e n n e it n o c t e i s c n o d , e d o c e m ê m e d s er èt c ar a c sed tnenneitnoc te is erid-à-tse’c ,ruelav emêm al tno te is eiarv ares 2c == 1c • :) ep yt e d t na té t e ( elp mexe rap ; reilucitrap e mèlborp ed sap esop en étilagé’d nosiarapmoc al ,udnetne neiB . s e r è t c a r a c x u e d r u s r e t r o p t u e p n o s i a r a p m o c e n u , n oisr e v n o c e d s e l g èr s e d u n e t e t p m o C ’5’ < ’2’ ’S’ < ’ C’ ’ c’ < ’ a ’ rah c 2c 1c 2c < 1c tni >-- rahc e 1c ’e’ 2c 2c 1c ’e’ = = 1c 1c 1c 2c 1c rahc 2c 1c Cas des comparaisons de caractères r u e t a r é p o’ l e d es u e t u o d n o i t a s i l i t u ’ d s a c n e t n e m es s i tr e v a n u t n e ss i nr u o f s u o v s r u e t a l - i p m o c s n i a tr e c e u q r e t o n À ! e l l u n n o n t s e e d r u e l a v a l i s é t u c é x e l i - t s e t n a v i us c o l b e l , i s n i A . x u a f t n e i v e d l u n , i ar v t n e i v e d l u n n o n : e l g èr a l t n a v i u s n e é l o o b n u n e e u q - ir é m u n r u e l a v e t t e c s r o l a t i tr e v n o c n o i t c ur ts n i’ l e u q s n orr e v s u o N .) e d e l l e c , c n o d ( n o i t a t c e f f a s èr p a e d e l l e c t s e r u e l a v as t e à e d r u e l a v a l e t c e f f a noisserpxe’L .= b fi fi a b a b b= a if (a = b) // ici, on a utilisé = au lieu de == { ..... } : elp mexe tec ze yoV .uluov tatlusér ua sap tnassituoba’n sia m ,ruetalip moc el rap étpecca edoc ud à eriudnoc tuep ellE . ed ecalp al à ruetarépo’l resilitu à etsisnoc etnaruoc ruerre enU == = e uqrameR ( x + y ) < ( a + 2 ) : à tnelaviuqé tse x + y < a + 2 : is n i A 46 Opérateurs et expressions CHAPITRE 4
  • 75. 2 ednarépO tat luséR 0 xua f lun non xua f 0 xua f lun non ia rv 0 xua f lun non ia rv 0 ia rv lun non ia rv 0 ia rv lun non xua f ! ! || || || || && && && && rue tarépO lun non lun non 0 0 lun non lun non 0 0 1 ednarépO : n oi t a u ti s a l e l u ti p a c ér t n a vi u s u a el b a t e L .iarv à dnopserroc ) ruelav al tnemelues sap cnod te( ellun non ruelav etuot • ; x u a f à d n o ps err o c el l u n r ue la v e d e d n aré p o n u • : euq tner -édisnoc sruetarépo sec ,sac ec snaD .) ne te , e d e u qir é m u n n o it o mor p ed selgèr sel sirpmoc y( seértnocner àjéd eticilp mi noisrevnoc ed selgèr sel ceva ,)drat sulp snor -r e v el s u o n e m m o c sr u e t ni o p s e p y t s el e m ê m t e( st n a t t o l f s e p y t s el sir p m o c y , e u q i r é m u n ednarépo leuq etropmi’n tnetpecca seuqigol sruetarépo sec ,tiaf nE .senneéloob snois -serpxe sed euq ertê tnessiup en sruetarépo sec ed sednarépo sel euq ec à tiardnetta’s no siaM . : à et n el av i uqé ts e n oi sserp xe e tt e C . eri art - n o c s a c e l s n a d x u a f r u el a v al d n er p t e e ss u a f ts e n o it i d n o c a l i s i ar v r u e l a v a l d n er P 1 tn i loob rahc t rohs b=>a b<a )b <a ( ! al d n er p t e ei ar v ts e d< c te b<a || • . er i ar t n o c s a c e l s n a d x u a f r u e l a v s n oi t i d n o c x u e d s e d s n i o m u a e n u’ l is i ar v r u el a v al d n er P )d< c ( || )b<a ( al d ner p te se iar v x u e d s et u ot t n os d<c te b <a • . er i ar t n o c s a c e l s n a d x u a f r u e l a v snoisserpxe xued sel is iarv ruelav al dnerP )d <c ( & & )b<a ( n o n t e ) ét o n( u o ,) • : elpmexe raP .) éton( éton( te : seuqissalc seuqigol sruetarépo siort ed esopsid ++C ! && 5.1 Rôle 5 Les opérateurs logiques 5 - Les opérateurs logiques 47
  • 76. & & e u q el ôr e m ê m e l t n a u o j )| t e &( sr u et ar é p o s ert u a x u e d e d t n e m e l a g é es o psi d l i si a M .|| te && ruop tiucric-truoc ed noiton al ceva ,seuqigol sruetarépo semêm sed esopsid avaJ avaJ n E if ( i<max && (j++ == 10)) ... if ( ok && (i=j)) ... // j++ (incrémentation de j) ne se fera que si i<max // l’affectation i=j n’aura lieu que si ok est vrai : noitatnemércni’d te noitatce ffa’d sruetarépo sel éiduté zerua suov euqsrol euq selbisnehérp moc sio fetuot tnores en iuq selpmexe xued iciov nE .)ruelav enu redéssop ed sulp ne( noitca enu esilaér sednarépo sed nu’l selleuqsel snad » snoitcurtsnoc « sed resirtîam ruop elbasnepsidni tse étéirporp ettec ed ecnassiannoc a L . ) ( x u a f r u e l a v a l ar u a et èl p m o c n o iss er p x e’ l , n o ç a f e t u o t e d reulavé’d elituni tse li ,) ( xua f tse tatlusér el iS . reulavé rap ecnem moc no ,euqsiup 0 d< c 0 b<a a<b && c<d : euq ellet noisserpxe enu snad ,elp mexe raP .essuaf uo eiarv tse etnadnopserroc noisserpxe’l is redicéd ruop elbasnepsidni tse ruelav as ed ecnassiannoc al is euq éulavé tse’n )ruet -arépo’l ed etiord à erugi f iuq iulec( ednarépo dnoces ruel : » tiucric-truoc « ed mon el ruos tnevuos eunnoc etnasserétni étéirporp enu’d ++C ne tnessiuoj te sruetarépo xued se L || && 5.2 Court-circuit dans l’évaluation de && et || a<b && c<d a<b || c<d équivant à équivaut à (a<b) && (c<d) (a<b) || (c<d) : se sè ht n erap sn as se tir cé er tê ,t i a f ne , up tn ei ar ua e hpar gar ap e c e d t u b é d n e s el p m e x e e m m o c s e és il i t u s n ois s er p x e s e l ,is n i A .s l e n n o i t a l er u o s e u qi t é m ht ir a sr u e t -arépo xua erueiré fni étiroirp ed tnos xued suoT . euq eriatiroirp sniom tse ruetarépo’L && || ( ! a ) == b : e m m o c e é t ér pr e t n i t i ar e s ! a == b : n ois s er p x e’ l , t e f f e n E ! ( a == b ) : t n a v ir c é n e s es è h t n er a p s e d r es il it u’ d eri ass e c é n t s e l i a == b : e d er i ar t n o c n o it i d n o c al erir c é r u o p ,i s n i A .s l e n n oi t a l er sr u e t ar é p o x u a te serianib seuqitémhtira sruetarépo sel suot ed ellec à erueirépus étiroirp enu a ruetarépo’L ! if ( n == 0 ) : euq )elbisil sulp tnemécro f sap sia m( esicnoc sulp if (!n) : erutircé’l tnemmeuqér f ertnocner no’l euq zetoN .ruetalipmoc el rap seétpecca tnos n && p n || p !n : euq sellet snoisserpxe sed ,sreitne sed tnos te is ,++C ne ,isniA p n 48 Opérateurs et expressions CHAPITRE 4
  • 77. .értnocner àjéd esab ed ep yt l e u q etr o p m i’ n e d s e l b a ir a v s e l t n e ts er s n oss i a n n o c s u o n e u q se l ues se l ,t n ats n i’l ru oP . e m m o c s é s i li t u n o n u o ert ê t n e v u e p sl i’s s n or esi c ér p s u o n ,s t n e m é l é x u a e v u o n e d s n or er t n o c n er s u o n e u q er u s e m à te ru f ua ,trap ertua’d ; enu rinevretni tno f = euq sruetarépo sertua’d ++C ne’uq snorrev suon ,trap enu’d ,tia f nE .noita mrofni enucua etroppa’n e nu er tî arappa t i od noitatce ffa’d ruetarépo nu’d ehcuag à’uq erid euq revuort zevuop suov ,tnatsni’l ruop ,setreC . no i ta tc e f fa’ d r ue tar épo nu’d ehcuag à ertîarappa tuep iuq ec tuot erid-à-tse’c , » ehcuag à ruelav « enu engiséd emret e C . e u l a v l a l : u a e v u o n t o m n u er i u d or t ni t u a f l I . esi c ér p z e ss a s a p ts e’ n el b air a v e d n oi t o n et te c e u q el l et ts e e g a g n al u d e xa t n ys al ,t n a d n e pe c , + + C n E . er u tc ur ts e n u’ d s e t n as o p m oc sel uo xuaelbat ed stne mélé sel elpmexe rap ervuocer emret ec euq tnemelarénég esicérp no ; » elbairav « ed mon el rap ecneréfér ellet enu tnevuos engiséd no ,segagnal sertua sel snaD .ruelav al rei fido m tnemevitce ffe arruop no tnod erio mé m tnemecalpme nu à ecneré fér enu ertê tiod reinred ec ,te ffe nE .ednarépo r e i m er p n o s r u s s n o i t c irts er s e d es o p m i n o i t a t c e f f a’ d r u e t ar é p o t e c e u q c n o d s n o y o v s u o N eu lav l eula vl eulav l eulav l 6.1 Notion de lvalue c + 5 = x : snes ed sap tiarua’n etnavius noisserpxe’l ,isniA . ruetarépo tec ed ednar -épo rei merp emmoc noisserpxe enu ertîarappa eria f ed elbissop sap tse’n li ,ehcnaver nE . à e é tc e f fa et i us ne t se e u ne tbo i sn ia r ue la v a L . noisserpxe’l ed noitaulavé droba’d a y li’uq tia f )nosiarapmoc ed te seuqit - é m ht ir a sr u et ar é p o s el s u ot e d e l l e c à er u e ir é f ni ts e el l e( r u et ar é p o t e c e d é tir oir p el b i a f a L = c 3 + b = c = b + 3 : snad e mmoc snoisserpxe sertua’d rinevretni eria f tuep ) ( noitatce ffa’d ruetarépo teC . erid-à-tse’c ,noitatce f fa sèrpa ed ellec : ruelav enu tiadéssop • ; à ruelav al ed noitatce f fa’l : noitca enu tiasilaér • : iuq noisserpxe enu tiaté = 5 i i 5 i = 5 : euq reuqramer ed noisacco’l ue àjéd snova suoN 6 L’opérateur d’affectation ordinaire .s ed -narépo xued sed euqitaméts ys noitaulavé ceva erid-à-tse’c ,tiucric-truoc snas siam ,|| te 6 - L’opérateur d’affectation ordinaire 49
  • 78. .) e n u’ d tne melarénég sulp uo( elbairav enu’d ruelav al ed tnetnemércéd iuq uo tnetnemércni iuq eu la vl 1 i = i + 1 n = n - 1 : euq sellet )snoitcurtsni sed uo( snoisserpxe sed tnevuos ertnocner no ,)C uo( ++C euq ertua egagnal nu snad stircé sem margorp sed snaD 7.1 Leur rôle 7 Opérateurs d’incrémentation et de décrémentation .9 ehpargarap el snad snoitatceffa sel rap seésopmi snoisrevnoc ed sétilibissop setneré ffid sec rus tniop el snoref suoN .)erbmon ud elamicéd eitrap al dr e p n o , n e nu titrevnoc no’l euqsrol elp mexe rap( noitamrofni’l ed etnatropmi s n i o m u o s u l p n o it a d ar g é d e n u à ,s a c s e l t n a v i us , er i u d n o c c n o d t u e p e ll E .s et i c il p mi s n oi s -revnoc sed sac el snad rueugir ed tse iuq sep yt sed eihcraréih al tnemeriassecén sulp etcepser e n e é s o p m i n oi sr e v n o c el l e t e n U . al ed ep yt el snad )selleutibah selgèr sel tnavius eéul -avé tse iuq( noisserpxe’l ed ruelav al ed euqitamétsys noisrevnoc a y li ,ehcuag à tnarugi f al euq ep yt e mêm ud sap tse’n etiord à tnarugif noisserpxe’l ed ep yt el euqsrol ,tia f nE .snes ed sap a’n iuq ec ,ruet - aré p o t ec e d e h c ua g à t nar u gi f al ed ep yt el regnahc à tiardneiver noisrevnoc ellet enU .ruetarépo tec ed ehcuag à tîarappa iuq al e d n o isr e v n o c e u q n o cl e u q e n u re u tce f f e’ d ,ici ,noitseuq sulp tse’n li ,seticilpmi snoisrevnoc sed uej ne tneiattem iuq te tnemmedéc -érp sértnocner sruetarépo sel ruop tiasiudorp es iuq ec à tne meriartnoc ,tnadnepec ,sio f etteC .s t n er é f fi d s e p yt e d s e d n ar é p o s e d n o it a t c e f f a’ d r u e t ar é p o t e c à r i nr u o f e d ét i li b iss o p al rap tiudart es sep yt ed egaxim ed erèita m ne ++C rap etre ffo étrebil ednarg al ,erocne à L tn i e lbuod eu la v l eula vl eu lav l eula vl 6.3 L’affectation peut entraîner une conversion . erid-à-tse’c ,noitatce ffa sèrpa ed ellec tse noisserpxe ettec ed elani f ruelav al ,udnetne neiB . elbairav al à ruelav al retce ffa ne’d tnava n ois ser p xe’l dr o ba’ d r e ul a v é’ d 5 i j 5 5 = j i = j = 5 : euq ellet noisserpxe enu à te mrep iuq ec tse’C . e d é t iv i ta ic oss a e nu e d èss op n o it at c e f f a’ d r u et ar é p o t e c , i c i’ u qs uj s ért n o c n er s n o v a s u o n e u q x u e c s u ot à t n e m eri art n o C eh cuag à e t iord 50 6.2 L’opérateur d’affectation possède une associativité de droite à gauche Opérateurs et expressions CHAPITRE 4
  • 79. eula vl li e ll e u q a l r u s eu lav l li el le uq al r us , s a c s el t n a v i u s , i u q . etr op al ed etiord à écalp tse li’uqsrol noitatnemércédtsop ed ruetarépo nu • ; etr op a l e d e h c u a g à é c a l p t s e l i ’ u q s r o l n oitat ne mé rc é d ér p e d r u et aré p o n u • : ares éton noitatnemércéd ed ruetarépo nu etsixe li ,erèinam emêm al eD -- ; i++ ; + +i : s et n el a vi u q é t n os ) e é si li t u n i c n o d evuort es ruelav ruel – elugriv-tniop nu rap seéni mret tnos snoisserpxe sel rac snoitcurtsni’d ne ib ti g a’s li , ic i( s n oi tc ur ts ni xu e d s ec , is ni A .s èrpa u o t na v a éca lp t ne m mer é f fi d n i er tê tuep ruetarépo tec , e n u’ d n oi t a t n e m ér c n i’ d t e f f e’ l etr o p m i l u es e u qsr o l , u d n e t n e n e i B .etrop li e l l e uq a l r us a l e d e t i or d à é c a l p t s e l i ’ u q sr o l n o i t a t n e m é r c n i t s o p e d r u e t a r é p o n u • ; etr op li el le uq al r us al ed ehcuag à écalp tse li’uqsrol noitatnemércniérp ed ruetarépo nu • : ts e e u q ti d n O n o iss er p x e’l e d r u el a v a l i ci r a c( r u e l a v al à t e r u e l a v a l à a r e t c e f f a eula vl eu la v l eu lav l ++ .) t se 5 ++i 0 n 6 i n = i++ - 5 : n o iss er p x e’l , t u a v is , is ni A .noitatnemércni tnava elbairav al ed ellec tse etnadnopserroc noisserpxe’l ed r u el a v a l , etr op li el le uq al r us al éc alp tse r u et arép o t ec e uqsr ol ,e h cn a ver nE . r u e l a v al à t e r u e l a v a l à a r e t c e f f a 5 eula vl i sèrpa 1 n 6 i n = ++i - 5 : noisserpxe’l , tse ed ruelav al is ,isniA .noitatnemércni sèrpa ed ellec tse noisserpxe ettec ed ruelav al euq riov ed tnatropmi tse lI .) ed noitatne mércni( noitca enu esilaér ,tîorcrus ed ,iuq siam ,ruelav enu edèssop t n e m el u es n o n i u q n oi ss er p x e e n u à eri a f f a s n o v a s u o n , n o i t a t c e f f a’ l r u o p e m m o c , er o c n e à L 5 i i i .noitat -nemércni sèrpa ed ellec tse ruelav as te , ed ruelav al ed retne mércni’d tef fe ruop a i i 1 ++i : n oi ss er p x e’ l ,is n i A . ettec rus tnatrop » serianu « sruetarépo sed rap seésilaér ertê tnevuep snoitca sec ,++C nE eu la vl 7 - Opérateurs d’incrémentation et de décrémentation 51
  • 80. i += k : r ap i = i + k : recalpmer zerruop suov ,isniA .stnassiup sulp erocne sruetarépo’d esopsid ++C siaM i = i + 1 : t n e me su e ga t na va t i aç alp m er i++ : elpmexe raP .snoitatce ffa seniatrec ed erutircé’l rei filp mis ed tneiatte mrep noitatnemércni’d sruetarépo sel tnem moc riov ed snonev suoN 8 Les opérateurs d’affectation élargie . e x el p m o c s u l p t n a t u a’ d ares et na d n o pserr o c a l e u q e c n atr o p m i’ d s u l p t n a t u a’ d ar d n er p t c e ps a t e c , u d n et n e neiB .séti mil uep euqleuq isnia tnevuort ne’s noitammargorp ed sruerre’d seuqsir se L eulav l i = i + 1 sio f xued eriaf el à éne ma tse no’uq srola eénrecnoc eu lav l : n oi t a t o n a l s n a d al sio f elues enu’uq etic en no i++ : e u q el l e t n oi t a t o n enu snad ,te ffe nE .segagnal sertua sed trapulp al snad esim ed tse iuq ecnadnoder al retivé’d egatnava dnarg el tuotrus tner ffo te snoisserpxe seniatrec ed erutircé’l tnegèlla sruetarépo seC 7.3 Leur intérêt .e tr op li e ll euq al ru s al e d r u et ar -épo’l rehcorppar xueim ruop alec ,eria f el sap en à ecnadnet tôtulp snova suon ,noitatne m -ércni’d sruetarépo sed sac el snad ,tnadnepeC .snoitcurtsni son ed étilibisil al ertîorcca ruop edutital ettec tnevuos snosilitu suoN .etrop li sleuqsel rus sednarépo sel te ruetarépo nu ertne secapse srueisulp uo nu recalp ed )eriotagilbo non siam( elbissop sruojuot tse lI eu lav l e uqrameR .)snes ed ue sap srola tiarua’n noisserpxe’l ; e n u s a p t s e ’ n i u q n oi s s e r p x e ’ l à éuqilppa été tiarua reinred ec ,noitatnemércnitsop al euq eriatiroirp sulp été tiava * is( eu lav l i*3 3 * i++ * j-- + k++ : s n es n u a et n a v i us n o iss er p x e’ l ,is n i A .t n etr o p s l i e l l e u q a l r us al relosi ruop sesèht -nerap sed re yolpme’d eriassecén tios li’uq snas seéuqilpmoc zessa snoisserpxe sed erircé’d tnettemrep )51ehpargarap ua uaelbat riov( serianu sruetarépo sec ed seévelé sétiroirp se L eula vl 52 7.2 Leurs priorités Opérateurs et expressions CHAPITRE 4
  • 81. u o s u l p ts e n e t a t l u s ér el s i a m r u e t a li p m o c el r a p s e é t p e c c a t n o s ) e u qir é m u n e p y t ert u a n u sr e v euqiré mun ep yt nu’d( snoisrevnoc sel setuot ,noitatce ffa enu’d srol ,elarénég erèina m enu’D . à eétcef fa ertê riovuop ruop ne eitrevnoc etiusne ares erèinred ettec ; ep y t ed ruelav enu arinruo f iuq ec ,etiord à eéutis noisserpxe’l ed noitaulavé’l droba’d tuot arenîartne n tn i tao lf n = x + 5.3 ; : n oi ta tc e f fa’ l , ep yt ed te ep yt ed tse is ,elp mexe raP .etnad - nopserroc n oisserpxe’l ed iulec ed tneré f fid ep yt nu’d tse erèinre d ettec euq srol sèd ,ecirt -pecér al ed ep yt el snad eci ffo’d noisrevnoc enu tiudortni noitatce ffa enu ,sruellia raP .ep yt ed tnemetsuja’d te seuqirémun snoit -omorp ed selgèr sel euqilppa li ,sac ec snaD .snoisserpxe sed noitaulavé’l snad seticilp mi s n o isre v n oc se d eri u d ort n i à é n e m a er tê t u e p r ue ta li p mo c el t n e m m o c u v àj é d s n o va s uo N taolf x tn i n eulavl 9.1 Cas usuels .) é n g is n o n r ei t n e e p yt n u c u a( s e ll e us u s n o it a u t is s el dr o b a’ d t u o t s n or e n i m a x e s u o n , s e ti ci l p m i s n o isr e v n o c s e l r u o p ti a f s n o v a’ l s u o n e m m o c , er o c n e à L 9 Les conversions forcées par une affectation .étilibissop ettec rap sénrecnoc sap tnos en nosiarapmoc ed sruetarépo sel euq neib zetoN .eigralé noitatce ffa’d ruetarépo nu ceva nosiarap moc ed ruetarépo’l sap zedno fnoc eN =< e uqrameR .euqissalc noitatce ffa’d ruetarépo’l rap tne mmeuqér f etiudortni ecnadnoder al retivé à tneubirtnoc te snoitcurtsni sen -iatrec ed erutircé’l resnednoc ed tnette mrep ,noitatne mércni’d xuec em moc ,sruetarépo seC = > > = < < = & = ^ = | = % = / =* =- = + : )41 ehpargarap ua’uq snoredroba’n suon euq » stib ed sruetarépo « sed à tia f ne tnednopserroc sreinred qnic sel( » eigralé noitatce ffa’d sruetarépo « sé mmon sruetarépo xuaevuon sec suot ed etèlp moc etsil al icioV .stib ed noitalupinam ed te seuqitémhtira serianib sruetarépo sel suot enrecnoc étilibissop etteC lvalue : ne lvalue opérateur= = lvalue expression opérateur expression : emrof al ed snoitatce ffa sel resnednoc ed temrep ++C ,elarénég erèinam enu’D a *= b : rap a = a * b : er oc ne xu e i m , uo 9 - Les conversions forcées par une affectation 53
  • 82. emêm ud C egagnaL .ruetidé emêm el zehc ,ruetua egarvuo’l snad snoisrevnoc setneréffid sec rus seélliatéd sèrt snoitamrofni sed zerevuort suoV .1 -épo tec euq neib zetoN .etrop li elleuqal rus noisserpxe’l ed e p y t e l s n a d n oisr e v n o c al reutce ffe’d tse elôr el tnod erianu ruetarépo nu à tia f ne dnopserroc n oi ta t o n a L . ne eitrevnoc erèitne noisserpxe’l ed ellec ruelav e mmoc arua e lbuod )e lbuod ( e lbuod p /n (double) ( n/p ) : n oi sserp xe’ l ,ser èi t ne se lba ira v s e d t no s te , elp me x e rap , iS .)siaçnar f ne "noiticreoc " sio frap( "tsac " sialgna ne é mmon reilucitrap uep nu ruetarépo nu’d edia’l à ,xiohc nos ed ep yt nu snad euqnocleuq noisserpxe enu’d noisrevnoc al recro f tuep ruemmargorp el ,etiahuos el li’S p n 10 L’opérateur de cast .s e p yt s e d e i h cr ar éi h a l t n e t c e ps er i u q s el l e c t n os s e l a g é l s n o it at c e f f a s e l u es s e L avaJ n E ... » erianib fito m « ud tnevuep selle’uq ec tnevresérp selle ,larénég nE .seénnod sed étirgétni’l tnetcepser selle’uq itnarag tnemellun tse’n lI .emron al rap seésirotua sia m ,seélliesnocéd t n os s el le , é n g is sr e v é n g is n o n e d u o ,é n gis n o n sre v é n g is e d s eécr o f s n o isre v n oc x u a t n a u Q .)e v it is op ti os r u el a v as euq ,ertuo ne ,noitidnoc à( éngis non reitne srev tnattol f ed snoisrevnoc sel ruop emêm ed ari n e l I . e é virr a’ d e p y t e l s n a d e l b a t n e s ér p er t s e e n i gir o’ d r u el a v al i s t n a s i a f s it a s t s e t a tl u s ér ruel ,éngis non reitne ertua nu srev éngis non reitne nu’d snoisrevnoc sed tse iuq ec ruoP 9.2 Prise en compte d’un attribut de signe . n oi t u c é x e’ d r u err e e n u à si a m aj si a m e u d n e tt a ni r u el a v e n u à’ u q , si p u a ,t n e s -iudnoc en reitne ep yt ertua nu srev reitne ep yt nu’d snoisrevnoc sel euq ,sio fetuot ,zehcaS .erètcarac nu’d edoc nu à dnopserroc r ei t n e’ l e d r u el a v al i s e t n a s i a f s it a s ar e s ne nu’d noisrevnoc al ,erèinam emêm al eD .noitucéxe’d ruerre enu à ,sac sniatrec snad ,rituoba arruop no ,tîorcrus ed ,sia m ertua nu à tnemennorivne nu’d tneré ffid ertê arruop unetbo tatlusér el tnemelues non ,eésilaér sap tse’n noitidnoc ellet enu iS . ep yt el snad elbatnesérper ts e e t n a tt o l f r u e l a v a l e d er è i t n e ei tr a p al i s e u q el b at p e c c a t a t l u s ér n u ari nr u o f e n ) et n e d é c ér p noitcurtsni’l snad uej ne esim tse iuq ellec euq ellet( n o isr e v n o c a l , el p m e x e r a P . s a c s ert u a s el s n a d e m ê m e d s ul p a v n e’ n l i ,s e p y t s e d e i h cr ar éi h a l e d s n e s n o b e l t n a v i us u ei l t n a y a n o isr e v n o c e d s a c el s n a d ) n ois i c ér p ed etrep elleutnevé enu’uq ertua( esop es en e mèlborp nucua is ,te ffe nE .tnasia fsitas snio m rahc tni tn i tni >- taolf 1 54 Opérateurs et expressions CHAPITRE 4
  • 83. -éttil euqserp eriudart ed , : etnavius erèinam al ed sussed-ic esarhp al tnemelar e d e d i a’ l à e c âr g , e l bi s s o p t s e l i , + + C n E l enn o itidn o c rueta rép o’ l Si a>b alors a sinon b : esarhp ettec rap eini féd ertê tiarruop xam ed ruelav a L .b ed te a ed sruelav xued sed ednarg sulp al xam elbairav al à eubirtta ellE if ( a>b ) max = a ; else max = b ; : e t n a v i us n oi t c ur ts ni’ l s n or é d is n o C 11 L’opérateur conditionnel .eédna med n o isr e v n o c a l e d e c n a l b m es i ar v e d s n o i t a c i f ir é v s e n i a tr e c r e u t c e f f e’ d r u e t al i p m o c u a te mrep n oitaci filauq ettec ,elaré nég erèina m enu’D .tsac_cimanyd te tsac_terpretnier , t s a c _ t s n o c : t s a c e d r u e t ar é p o n u r e i f i l a u q e d s n o ç a f s e r t u a’ d e t s i x e l i’ u q s n or r e v s u o N static_cast<double> (n/p) // attention parenthèses obligatoires : sr o la t ne t o n es s et n e dé cér p s n o isre v n oc se L . n o it at n e m él p m i’l ed setnadnepédni isauq tnos selle’uq ei fingis iuq ec ,tsac_citats rap seéi filauq tnos euq -irémun ep yt ertua nu srev euqirémun ep yt nu’d snoisrevnoc se L .erutan al resicérp ne’d nifa ,tsac ed ruetarépo nu » rei filauq « ed ruem margorp ua temrep ++C ,rueugir etuot nE seriatnemélpmoc snoitamrofnI .)tnedécérp ehpargarap el tne melleutnevé ze yover( tnasiafsitas sniom uo sulp tse ne tatlusér el siam , » tsac « ed ruetarépo nu rap selbasilaér tnos seuqiré mun snoisrevnoc sel setuot ,noitatce ffa enu rap seécro f snoisrevnoc sel ruop em moc ,udnetne neiB .). .. e d er dr o’ l e d r u e l a v e n u ti ar d n ei t b o n o , e d t e e d sr ue la v se mê m sel ceva( ehpargarap ec ed tubéd ne eésoporp noisserpxe’l rap unetbo iulec ed tneré ffid srola tiares tatlusér e L .) ne( n o is iv i d al u e il t ia’ uq t n a va n e ri tre v n oc à sr o la t n e i ar e n è m a s e t i c il p m i s n oi sr e v n o c e d s e l g èr s el ; n e ri tre v n oc à dr o b a’ d t iar i u d n oc 33333 .3 p e lbuod n e lbuod elbuod p n (double) n/p : noisserpxe’l ,isniA .eénrecnoc noisserpxe’l sesèhtnerap ertne rec -alp ed eriassecén tne melarénég tse li’uq tia f )41 ehpargarap ua uaelbat riov( eévelé étiroirp rue L .)tnemerueirétlu snorertnocner suon euq sruetniop sel emmoc séviréd sep yt sel sirpmoc y( stneré ffid sep yt ed euq » tsac « ed sruetarépo’d tnatua etsixe li ,elarénég erèinam enu’D . ru el a v e m m o c aru a n oi sserp xe e tt ec , t u a v e uq te t u a v iS . ne itrevnoc ares tatlusér el euq etiusne tnemelues tse’c ; rap ed tneit -ouq ud , ep yt el snad ,luclac droba’d a y li ,ici ,tid tnemertuA .noitaulavé nos à tneruocnoc iuq sruelav setneré ffid sed ellec non te noisserpxe’l ed ud noisrevnoc al ecro f ruetar 3 01 n 3 e lbuod p p n tn i ta t lu sér 55 11 - L’opérateur conditionnel
  • 84. : elpmexe raP .noisserpxe emêm enu’d nies ua sfisseccus sluclac srueisulp remirpxe’d ,etros euqleuq ne ,temrep ic-iulec ,te ffe nE .noisserpxe’d noiton ettec sulp uep nu erocne rigralé av » leitneuqés « tid ruetarépo’L .segagnal sertua sed trapulp al snad euq elarénég sulp puocuaeb tiaté noisserpxe’d noiton al ++C ne’uq uv àjéd snova suoN 12 L’opérateur séquentiel .i elbairav al aretnemércéd no uo aretnemércni no ,essua f uo eiarv tse b>a noitidnoc al euq tnavius ,icI a>b ? i++ : i-- ; : n o it c ur ts n i e t t e c s n a d e m m o c e és il it u t i o s r u el a v as e u q s n as e é u l a v é t i os e l l e n n o i ti d n o c n oi ss er p x e’ l e u q e h c ê p m e’ n n eir , e m ê m e D z = ( a>b ? a : b ) ; : b e d t e a e d sr ue la v se d e d nar g s u l p al z à tnatcef fa )elugriv-tniop nu rap enimret es elle rac ,noitcurtsni enu’d tne mevitce ffe tiga’s li’uq zeton( noitcurtsni enu ,elpmexe rap ,icioV .exelp moc sulp noisserpxe enu snad ruot nos à ertîarappa ,noisserpxe etuot em moc ,tuep ellennoitidnoc noisserpxe enu ,udnetne neiB z = x = ( y ? a : b ) : e m m oc e éu la v é ti ares e ll e uqa l z = x = y ? a : b : ed e t ner é f fi d ts e n ois serp xe e tt ec e uq r ia lc ts e l I . z à b e d r u e l a v a l et c e f f a n o , e l l u n t s e r u e l a v e t t e c , e r i a r t n o c u a , i S . z à a e d r u el a v al e t c e f f a n o , e ll u n n o n ts e r u el a v ettec is ,siuP .x à y ed ruelav al retce ffa à droba’d tuot enèma noisserpxe ettec ed luclac e L z = (x=y) ? a : b : selbasnepsidni tnos sesèhtnerap sel ùo sac nu ,siofetuot ,icioV .)em margorp ud étilibisil al reroiléma sio frap essiup alec euq neib( sednarépo stner - é f fi d s e l r e ti mi l é d n e r u o p s es è h t n er a p s e d r e y o l p m e’ d er i as s e c é n t n e m er ar ts e li’ u q e tr o s ed ,)noitatceffa’l tnava etsuj evirra li( étiroirp elbia f enu’d esopsid lennoitidnoc ruetarépo’L 3*a+1 > 0 ? 3*a+1 : -3*a-1 : 1 + a*3 ed eulosba ruelav al tnaluclac noisserpxe enu’d elp mexe ertua nu icioV . ta tl us ér el t i nr u o f i u q e c , e d n ar é p o e m èis i ort u d n o i t a ul a v é a y l i , e h c n a v er n e , e ll u n ts e r u e l a v as i s ; tatlusér el tinruo f iuq ec ,ednarépo dnoces ud noitaulavé a y li ,oréz ed etneré ffid tse ruelav as iS .ep yt leuq etropmi’n ed tia f ne ertê tuep ic-ellec ,++C ne sruojuot emmoC .noitidnoc enu’d elôr el euoj iuq noisserpxe erèimerp al eulavé ruetarépo tec ,elarénég erèinam enu’D .: t e ? : sérap és s elobm ys xued r ap e si la iré ta m es leuqel ,lennoitidnoc ruetarépo’l ed sednarépo siort sel tnos iuq )b te a ,b>a( snoisserpxe siort ed eéutitsnoc tia f ne tse noitatce ffa’d ruetarépo’l ed etiord à tnarugi f noisserpxe’L 56 max = a>b ? a : b Opérateurs et expressions CHAPITRE 4
  • 85. .elpmis tnelaviuqé’d sap tnadéssop en snoitcurtsnoc sed resilaér ed temrep ruetarépo tec ,sellennoitidnoc selcuob sed sac el snad ,euq emêm snorrev suoN i=1 ; for (k=0 ; ... ; ... ) ...... : ecalpmer for (i=1, k=0 ; ... ; ... ) ....... : te i++ ; if (k>0) ...... : ecalpmer if (i++, k>0) ...... : selpmexe xued iciov nE .snoitca srueisulp uo sluclac srueisulp resilaér y’d cnod te ,srueisulp recalp ne’d artte mrep leitneuqés ruetar -épo’l ,noisserpxe elues enu revuort à tnednetta’s ic-sellec ùo àl ; selcuob sel snad uo xiohc ed snoitcurtsni sel snad rinevretni tnemmeuqér f arruop reinred ec ,ehcnaver nE .leitneuqés ruetarépo tec ed are f no’l euq egasu lapicnirp el àl sap tnadnepec tse’n ec ,euqitarp al snaD i++ ; j = i+k ; j-- ; i++, j = i+k, j-- ; : setnelaviuqé tnos snoitalumro f xued sec ,elpmexe rap ,isniA .elues enu ne snoitcurtsni srueisulp rinuér ruop ésilitu ertê tuep ruetarépo let nu ,setreC i++, j = i+k, j-- : )sesèhtnerap ed egasu’l etivé étiroirp elbia f as( snoisserpxe srueisulp rinevretni eriaf tnemelica f tuep ,etiord à ehcuag ed étivitaicossa enu’d esopsid iuq ,leitneuqés ruetarépo teC .etnedécérp noisserpxe’l rap noitat - n e m ér c n i s èr p a i e d r u e l a v a l es il it u n o sr o l a’ u q z et o N . k + i = j n o i t a t c e f f a ’ l e d n o i t a u l a v é • + + i n o iss er p x e’l e d n o it a ul a v é • : a y l i , e ll e u q a l s n a d ; i++, j = i + k : e t n a v i u s n ois s er p x e’ l e d e m ê m e d ts e n e lI .i elbairav al ed noitatne mércni enu tia f ne esilaér )eésilitu sap ares en ruelav al tnod( noisserpxe erèimerp al euqsiup têrétni nu retnesérp tuep i++, a + b : euq ellet noisserpxe enu ,ehcnaver nE .n o it ca enucua esilaér en li’uq te elabolg noisserpxe’l ed ruelav al snad sap tneivretni’n li’uqsiup elit -uni tse b*a ed elbalaérp luclac el ,elocé’d sac ec snad ,setreC .) j+i ed ellec ici cnod( eéluclac erèinred al ruelav e mmoc dnerp iuq te j+i siup ,b*a droba’d eulavé iuq noisserpxe enu tse a * b , i + j 12 - L’opérateur séquentiel 57
  • 86. . er i a n u r u et ar é p o n u’ d t e s er -ianib sruetarépo qnic ed tnesopmoc es iuq sruetarépo sec ed etsil al tinruof sèrpa-ic uaelbat e L . ) r ei t n e a r e s n e t at l u s é r e l s i a m ( serètcarac sed à reuqilppa’s tnemelagé tnorruop sli ,eticilpmi noisrevnoc ed selgèr sed unet etp moc ,sio fetuoT . , ir oir p A .ruelb messa egagnal ne noita m - margorp al à seévresér tne mellennoitidart sétilibissop sed isnia tnerucorp iul ic-xueC .ruelav enu’d erianib fitom el rus tnemetcerid relliavart ed tnatte mrep sruetarépo’d esopsid ++C s re itne s epyt sed rus e uq ret r op t nevu ep en s rueta rép o s ec 14.1 Présentation des opérateurs de manipulation de bits 14 Les opérateurs de manipulation de bits .s t e j b o s e d u o s er u t c ur ts s e d s a c e l t n e m m at o n ar es e C .r u et a li p m o c el ra p é t ne mé l p m i ares li t n o d erè i na m a l e d n ia tre c s a p ts e’ n n o le u q el r u o p exelpmoc tnemevitaler ep yt nu’d stejbo’d elliat al e mê m-ios reluclac à riova’d retivé ruop • ; st ne mé lé s ni atr ec e d e tca x e el li a t a l ert îa n -noc ed eriassecén tse li sleuqsel snad selbatrop se mmargorp sed erircé etiahuos no’l euqsrol • : t êré t ni n u er f f o r ue tar épo t e C .) e tr o s euqleuq ne ,noitini féd rap( 1 sruojuot arduav )rahc(foezis ,noitatnemélp mi’l tios euq elleuQ .8 arduav )elbuod(foezis • ; 2 ar d ua v ) t n i ( f o e z i s • : eétic tne mmedécérp noit - at n e mé l p m i’l s n a d , is ni A . é n n o d m o n e d e p yt n u à re u qi l p pa’s t ne me la gé t ue p r u et aré p o t e C .8 arduav )z(foezis noisserpxe’l • ; 2 arduav )n(foezis noisserpxe’l • double z ; int n ; : snoitaralcéd sec à eria ffa a no’l euq esoppus no’l is ,stetco 8 rus elbuod ep yt el te stetco 2 rus étnesérper tse tni ep yt el ùo noitatnemélp mi enu snad ,elp mexe raP .)eriomé m al ed elbasserda eitrap etitep sulp al ,tia f ne ,tse tetco’l euq sap zeilbuo’n( stetco ne elliat al tinruo f ,noitcno f enu’d iulec à elb messer iolp me’l tnod ,foezis ruetarépo’L 58 13 L’opérateur sizeof Opérateurs et expressions CHAPITRE 4
  • 87. ini féd evuort es tiudorp tatlusér ud emêm ep yt el ,tnadnepeC .sruetarépo sec rap éérc erianib f it a c i f i l a u q e l e u q z e t o N f it o m e l r us ec ne d ic n i’ d sa p a’ n s e d n aré p o s e d dengisnu/d engis tib à tib snoitarépo’d selpmexE n n n ~ 0000010101101110 0000001110110011 & p | p ^ p n n p 056E 03B3 1390 947 0000000100100010 0000011111111111 0000011011011101 1111101010010001 0122 07FF 06DD FA91 290 2047 1757 -1391 : ela micéd te elamicédaxeh ,erianib semro f suos sruelav sel éuqidni tnemeuqita méts ys snova suoN .stib 61 tiasilitu reinred ec euq te ep yt ud xued setuot tneiaté te selbairav sel euq ésoppus snova suoN .sruetarépo sec ed edia’l à sunetbo statlusér ed selpmexe seuqleuq icioV tni p n tib à tib sruetarépo sed étirév ed elbaT OPÉRANDE 1 OPÉRANDE 2 0 0 0 1 1 0 1 1 ET (&) OU inclusif (|) OU exclusif (^) 0 0 0 0 1 1 0 1 1 1 1 0 .) ennod te ennod ( ednarépo euqinu nos ed stib sed nucahc resrevni’d etnetnoc es lI . » tib à tib « ep yt ud tnemelagé tse )» nu à tne mélpmoc « ed tid( erianu ruetarépo’L .sèrpa-ic uaelbat el rap einruo f tse elbat etteC .sednarépo xued sed nucahc ed g n ar e m ê m e d st i b x u e d r us r etr o p t i a f a l n o’ u qsr ol n o it ar é p o et t e c e d t a t l u s ér el t n as si nr u o f ) » étirév ed elbat « etid( elbat enu’d ritrap à ini féd ertê isnia tuep tatlusér rue L .sednarépo xued sed stib sed nucahc à noitarépo e mê m al tia f ne tneuqilppa te , sruetarépo siort se L 0 1 1 0 ~ ^ | & 14.2 Les opérateurs bit à bit stib ed noitalupinam ed sruetarépO binaire & | ^ << >> unaire ~ TYPE Complément à un (bit à bit) ET (bit à bit) OU inclusif (bit à bit) OU exclusif (bit à bit) Décalage à gauche Décalage à droite OPÉRATEUR SIGNIFICATION 14 - Les opérateurs de manipulation de bits 59
  • 88. - i ul ec ù o n o it at n e m él p m i e n u s na d tni .stib 61 à dnopserroc ic e p y t e d é s o p p u s , e d » e n gi s ti b « e l er i ar t x e’ d t e mr e p n n & 0x8000 tni , , trohs rahc : e mê m e D .) uo ep y t ed ti os euq( ed e t ior d e d st ib 4 se l e uq etp mo c n e er dn erp e n ed te mr ep n gnol n n & 0xF : noisserpxe’l ,elp mexe raP .sertua sel tnauqsam ne ruelav enu’d stib sed eitrap enu à redécca’d temrep ruetarépo’L & 14.4 Exemples d’utilisation des opérateurs de bits egalacéd ed snoiitarépo’d selpmexE n << 2 n >> 3 p >> 3 (signed) n (unsigned) p 0000010101101110 0000010101101110 1010110111011110 1010110111011110 0001010110111000 0000000010101101 0000000010101101 1011011101111000 1111011011101111 0001010110111011 . eésoppus tse elbairav al euq sidnat , eésoppus tse elb -airav a L .egalacéd ed sruetarépo sec ed edia’l à sunetbo statlusér ed selpmexe seuqleuq icioV .)engis tib ud noitagaporp ,erocne ici ,a y li( engis tib ua xuagé tnores séérc isnia stib sel , e d ti g a’s l i’ S . or é z à t n os e h c u a g à s é ér c i s n i a st i b s el , ed tiga’s li’S .ednarépo reimerp ud fitacifilauq ud tnednepéd sreinred seC .ehcuag à tnessiarappa stib sed euq sidnat ,sudrep tnos etiord ed stib sel ,sio f etteC .etiord al sr e v s ti b e d e d e r i a n i b f i t o m e l t n a l a c é d n e e u n e t b o r u e l a v a l t a t l u s é r e m m o c t i n r u o f tni d engi snu p tni dengis n dengis dengisnu d engi snu/dengis 3 n n >> 3 : e mê m e D .etiord à tnessiarappa oréz à stib sed te sudrep tnos ehcuag ed stib sel ; ehcuag al sr e v s ti b e d e d e r i a n i b f i t o m e l t n a l a c é d n e e u n e t b o r u e l a v a l t a t l u s é r e m m o c t i n r u o f 2 n n << 2 : elpmexe raP .ednarépo dnoces el rap ein -ruo f tse ,stib ed erbmon ne eémirpxe ,egalacéd ud edutilpma’L .ednarépo rei merp ruel à tnad -nopserroc erianib fito m el rus ehcuag à uo etiord à segalacéd sed resilaér ed tnettemrep slI 14.3 Les opérateurs de décalage .)erianib fitom nos sap egnahc en iuq ec( é r al c é d é t é t i a v a i s t iare s ed elamicéd ruelav al ,selp mexe stnedécérp son snad ,isniA .selleutibah selgèr sel rap tni d engi snu n~ n 54146 60 Opérateurs et expressions CHAPITRE 4
  • 89. .ésoporp uaelbat el snad tnerugi f sli ,sniomnaéN .stnadnopserroc sertipahc sel snad tne merueirétlu séiduté tnores sruetarépo seC .):: ruetarépo( eétrop ed snoitulosér sel • ; *. te *>- ,. ,>- sruetarépo : tejbo nu’d uo erutcurts enu’d spmahc sed à secneré fér sel • ; & te * : egasserda’d sruetarépo sel • ; ][ rap se és il aér u ae lba t n u’ d s t ne m él é se d à s ec n eré fér se l • : tnemelleitnesse tnos eC .étiroirp ed selgèr sed à sesi muos ,slet euq tnat ne ,te sruetarépo sed emmoc seérédisnoc tnos stne mélé sed recneré fér à tnavres snoitaton ed erb mon niatrec nu ,++C ne’uq areton nO .étivitaicossa’d edo m ruel ed séngapmocca ,etnassiorcéd étiroirp ed erdro rap séssalc ,++C egagnal ud sruetarépo sed etèlpmoc etsil al tinruo f sèrpa-ic uaelbat e L 15 Récapitulatif des priorités de tous les opérateurs reitne nu’d étirap al ed tseT donnez il est donnez il est un entier : 124 pair un entier : 25 impair #include <iostream> using namespace std ; main() { int n ; cout << "donnez un entier : " ; cin >> n ; if ( n & 1 == 1 ) cout << "il est impair" ; else cout << "il est pair" ; } : erianib noitatnesérper as ed tib reinred el tnemelp mis tnani maxe ne ,riapmi uo riap tse reitne nu is edicéd iuq emmargorp ed elpmexe nu icioV 15 - Récapitulatif des priorités de tous les opérateurs 61
  • 90. ++C ed sruetarépo seL - + >-- - >> << >-- - => > =< < >-- - =! == >-- - & >-- - ^ >-- - | >-- - && >-- - || >-- - :? >-- - =>> =<< =| =^ =& =% =/ =* =- =+ = - --< , >-- - leitne uqéS noita tce ffA )erianret( lennoitidnoC euqigoL euqigoL stib ed noitalupinaM stib ed noitalupinaM stib ed noitalupinaM slennoitaleR slennoitaleR egalacéD sruetarépO étiv ita icossA )erianib - e ssalc ed eétro p( :: )erianu - elabolg eétrop( :: >- --< . > - ][ )( >- - ][ eteled eteled ][wen wen ts ac_ tsnoc tsac_ terp retnier ts ac_ci tat s tsa c_cima nyd tsac foezis & * ~ ! -- ++ - + - --< *. *>- --< euqitémhtirA % / * >-- - euqitémhtirA noit celéS erianU ecneré féR eét rop e d noi tuloséR eirogétaC 62 Opérateurs et expressions CHAPITRE 4
  • 91. cout << "Bonjourn" ; cout << "Je vais vous calculer " << NFOIS << " racines carreesn" ; : e u q s e ll et e g a h c i f f a’ d s n o it c ur ts ni s e d értnocner àjéd snova suon ,2 ertipahc ud 1 ehpargarap ud elp mexe e mmargorp erton snaD 1 Affichage à l’écran .em margorp ua tner - a ps n art t n e m e l a t o t sr o l a e ts er t c e ps a t e c s i a m ,sr ei h ci f s e d sr e v s ét i n u s e c e d n oi t c eri d er e n u reutce ffe’d tnette mrep stnemennorivne sed trapulp a L .)narcé’l ed ertêne f enu à tnemésicérp sulp( narcé’l à dradnats eitros al te reivalc ua dnopserroc dradnats eértne’l ,tnemelarénéG .dradnats eitros al rus erutircé’l • ; dradnats eértne’l rus erutcel al • : ri o va s à ,lennoitasrevnoc tcepsa’l snommon suon euq ec à tnati mil suon ne ,elle mro fni zessa erèinam ed ,seitros-seértne’d sétilibissop sec snotnesérp suov suon ertipahc ec snad ,iouqruop tse’C .stelp moc semmargorp sed erircé à recne mmoc ruop stniop stneré ffid sec éiduté ze ya suov e u q er d n e t t a’ d t n a d n e p e c x u e i c i d u j s a p t i ar es e n l I . t n e m er u e ir é tl u’ u q s n or e dr o b a’ n s u o n euq ruetarépo’d noitini fédrus ed te tol f ed snoiton sel rus tnesoper seitros-seértne sel ,++C nE Les entrées-sorties conversationnelles de C++ 5
  • 92. : st ni o p x u e d s n a d e d is ér e ll e’ u q er i d s n o v u o p s u o n , à j é d t e sero’d siam ,tnemerueirétlu einruo f ares étilibissop ettec ed etcaxe noitatérpretni’l ,erocne à L cout << "valeur :" << n ; : el u es e n u ne r es ne d n oc es t n e v u e p cout << "valeur :" ; cout << n ; : s n o it c urts n i x u e d s e l ,t i a f n E . t u o c t o l f u a e s i m s n a r t n o i t -amro fni euqahc ruop etneré ffid noitcurtsni enu ésilitu snova suon ,tnedécérp elpmexe’l snaD 1.2 Exemple 2 .)51 ertipahc ua liatéd ne snoredroba suon euq( ruetar -épo’d noitini fédrus al ++C ne e mmon no’l euq ec à dnopserroc ruetarépo emêm nu à snoitac - i fi n gi s sr u eis u l p r e u b irt t a’ d ét i li b iss o p et t e C .s er è t c ar a c e d e t i u s e n u n e er è i t n e eri a ni b r u el a v e n u r itr e v n o c r u o p » e g at a mr o f « n u à é d éc or p a li , d n oc es e l s na d , e nî a hc al e d s erè tc ara c sel si msnart a li ,reimerp el snad : sac xued sel snad tneré ffid tne metse finam tse << ruet -arépo’l ed elôr e L .reitne ep yt ed noita mro fni enu etiusne ,)etnatsnoc( enîahc ep yt ed noita m -r o f ni e n u dr o b a’ d , t u o c t o l f el r us r e y o v n e r u o p < < r u et aré p o e m ê m el é si li t u s n o va y s u o N valeur : 25 : t n a v i us t a tl us ér el t n e h ci f f a s e ll E int n = 25 ; cout << "valeur : " ; cout << n ; : s n oi t c ur ts ni s e c s n or é d is n o C 1.1 Exemple 1 .selpmexe seuqleuq rus alec sno yoV . et i or d à e h c u a g e d é t i v i t a i c oss a e n u e d èss o p li • ; t a tl us ér n u ti nr u o f li • ; snoita mro fni’d sep yt stneréf fid ruop ini féd tse li • : ri o va s à ,setnasserétni sétéirporp ed tiuoj ruetarépo tec ,selpmexe son resoppus tneiassial el e mmoC .noisserpxe enu à dnopserroc etiord ed ednarépo’l • ; ) n o it a mr o f n i’l e d r i o v e c er e d el b it p e cs us erid-à-tse’c ,eitros ed tol f nu à tnemésicérp sulp( tol f nu à dnopserroc ehcuag ed ednarépo’l • : s e d n aré p o x ue d e d es o psi d r u et ar -épo tec euq tiov no ,tnemésicérp sulP .narcé’l à tnadnopserroc ,tuoc tol f el rus noitamro fni’l ed re yovne’d tnatte mrep ruetarépo nu tiaté << euq erid ed sétnetnoc snoité suon suoN 64 Les entrées-sorties conversationnelles de C++ CHAPITRE 5
  • 93. .)àl -xuec tnemelues te( stnatsixe sruetarépo sel suot » rinifédrus « ed temrep ++C euq tnemelagé snorrev suoN .stib ed noitalupinam ed ruetarépo nu tse << euq uv àjéd snova suoN .1 : c e v a , e h c n a v er n E .s e u q it é m ht ir a s n ois s er p x e s e l e u q e nr e c n o c e n n o i s r e v n o c e d e r n e g e c r a c , e u q i r é m u n n o i t o m o r p e n u à e s i m u o s s a p t s e ’ n c e d r u el a v a l cout << c ; : )rahc ep yt ed tnaté c( euq ellet noitcurtsni enu snad euq neib areton no ; tnadnopserroc erètcar -ac el neib tneitbo no ,sac sel suot snad : )engis ed stubirtta sed non uo edèssop li’uq( rahc • : euqnocleuq esab ed ep yt nu’d noisserpxe enu’d ruelav al tuoc rus re yovne ruop << ruetarépo’l resilitu zevuop suov ,elarénég erèinam enu’D 1.3 Les possibilités d’écriture sur cout #include <iostream> using namespace std ; /* on utilisera les symboles définis dans */ /* l’espace de noms standard s’appelant std */ : rap se m margorp s ov s uot recne m moc à cn od te ,gnisu noitcurtsni enu er i u d or t n i à t i a e g i l b o s u o v e l l e ’ u q é u q i d n i a s u o v n o ù o 2 er t i p a h c u d 9 . 1 e h p a r g ar a p u a t n e m er i a m m o s e é t n e s é r p é t é a n o i t o n e t t e C . d t s s m o n e d e c a p s e ’ l s n a d s i n i f é d t n os stnadn opserroc selob m ys sel euq te >maertsoi< m on ed etêt-ne rei hci f nu s na d tner - u g i f > > t e < < s r u e t ar é p o s e d n o i t a s i l i t u’ l à s er i a s s e c é n s n o i t a r al c é d s e l e u q s n o l e p p a R 2 . t n e ss i ar a p p a s e l l e ù o er dr o’ l s n a d , s t i ar t s e d r a p s e é s i l o b m ys s n o i t a mr o f n i s e l t u o c t o l f e l r u s r e y o v n e’ d t e mr e p cout << ----- << ----- << ----- << ----- ; : euq ellet noitcurtsni enu’uq tnatsni’l ruop erttemda’d ti ffus suov li ,etnedivé sap tîarap suov en etnedécérp noitatérpretni’l iS 1 se uqrameR .n ed ruelav al tioçer ,": ruelav" ed étne mgua tuoc tol f el erid-à-tse’c , ": ruelav" << tuoc tol f el ,spmet e mèixued nu snad • ; ": ruelav" enîahc al tioçer tuoc tolf el ,spmet reimerp nu snad • : icec em moc retérpretni’s tuep ic-elleC (cout << "valeur :") << n ; : à etnelaviuqé tse etnedécérp noitcurtsni’l ,isniA .eénrecnoc noitamro fni’l uçer a li’uq sèrpa tol f emê m ec tse ,ednarépo rei merp ne tol f nu tioçer li dnauq ,<< ruetarépo’l rap inruo f tatlusér el • ; enigiro’d ruetarépo’l em moc etiord à ehcuag ed fitaicossa tse << ruetarépo’l • 1 1 - Affichage à l’écran 65
  • 94. p e d r u e l a v a l , et i u s n e ; n i c t o l f u d e t i a r t x e d r o b a ’ d t s e n e d r u e l a v a l e u q e r i d s n o v u o p s u o n ,tuoc ruop einruo f ellec à eugolana )ellemro f uep te( eégami noitatérpretni enu rennod ruoP (cin >> n) >> p ; : à t n el a v i u q é ar e s cin >> n >> p ; : euq sétéirporp serèinred xued sec à ecârg tse’C.etiord à ehcuag ed étivitaicossa enu edèssop li • ; t a tl us ér n u ti nr u o f li • cin << c ; int n ; char c ; ..... cin << n ; // lit une suite de caractères représentant un entier, // la convertit en int et range le résultat dans n // lit un caractère et le range dans c : elpmexe tec snad em moc ,snoita mro fni’d sep yt stneréf fid ruop ini féd tse li • : riovas à ,setnasserétni sétéirporp ed tiuoj ruetarépo tec ,erocne à L .)...noitatce f fa’d ruetarépo nu’d ehcuag ed ednarépo’l ruop tiaf el en no’uq sulp sap ,noisserpxe enu ici rinruof ed elbissop sap tiares en li ,sio f ettec ; << ruetarépo’l ceva ecneréf fid al zeton( eulavl enu à dnopserroc etiord ed ednarépo’l • ; ) n oi t a mr o f n i’l e d r i nr u o f e d el b it p e cs us erid-à-tse’c ,eértne’d tol f nu à tne mésicérp sulp( tol f nu à dnopserroc ehcuag ed ednarépo’l • : sednarépo xued ed ,<< em moc ,esopsid li ,tne mésicérp sulP .reivalc ua tnadnopserroc nic tol f el rus noita mro fni’l ed eril ed tnattemrep ruetarépo nu tiaté >> euq erid ed sétnetnoc snoité suon suon ,2 ertipahc ud 1 ehpargarap ud elp mexe em margorp erton snad ,erocne à L 2.1 Introduction 2 Lecture au clavier . fi t a l ut i p a c ér n u ar e s o p or p suov 22 ertipahc ud 1.1 ehpargarap el te etius al rap sétilbissop sertua’d snorertnocner suoN .)"ruojnob" e mro f al ed( etnatsnoc enîahc • ; elbuod gnol uo elbuod uo taolf : tnattol f • ; 1 e d u o 0 e d e g a h c i f f a’l ar d n e it b o n o : n e é l o o b • ; ) e n g is e d st u bir tt a s n as u o c e v a( g n o l u o t n i , t r o h s : r ei t n e • ; t n i e p y t e d n e i b a r e s 1 + c n ois s er p x e’ l e d r u el a v al 66 cout << c + 1 ; Les entrées-sorties conversationnelles de C++ CHAPITRE 5
  • 95. -nocner al à’uqsuj stnavius serètcarac sel suot etpmoc ne dnerp no siuP .ruetarapés nu’d tner -é ffid erètcarac rei merp ua’uqsuj ruetniop el recnava rap ecnem moc erutcel etuot ,tuaféd raP 2.4 Premières règles utilisées par >> .)f( egap ed tne megnahc el te )v( elacitrev noital -ubat al ,)t ( elatnoziroh noitalubat al : tneuqér f sniom puocuaeb egasu nu’d sertua siort etsixe ne lI .)n( engil ed ni f al te ecapse’l tnos xuapicnirp xued se L .seénnod sel snad reilucitrap elôr nu tneuoj ) » scnalb secapse « uo( » sruetarapés « stid serètcarac sniatrec ,trap ertua’D .nop mat uaevuon nu snad ruot nos à ecalp erdnerp ardneiv iuq serètcarac ed » engil « ellevuon enu essinruof ruetasilitu’l euq ardnetta >> ruetarépo’l ,seuluov sruelav sel setuot eril ruop sap tnesi ffus en nop mat el snad setnesérp snoita mro fni sel is ,tnemeuqorpicéR .erutcel eniahcorp enu ruop s el b i n o ps i d t n et s er s ét i ol p x e n o n s er è t c ar a c s el , er u t c el e n u r a p e ét i ol p x e s a p ts e’ n n o p m at u d ei tr a p e n u i S . e t p m o c n e er d n er p à er è t c ar a c ni a h c or p e l e n g is é d i u q r u e t ni o p n u et si x e lI .)setnavius selleutnevé sed uo erutcel erèimerp al ed essiga’s li’uq( snioseb sed erusem à te ru f ua >> ruetarépo’l rap erètcarac rap erètcarac ,érolpxe tse reinred eC . » nopmat « ém mon eriomém tne mecalpme nu snad tnemeriosivorp eégnar tse )esirpmoc engil ed ni f( serètcarac ed etius etteC .engil ed ni f enu à dnopserroc iuq » eértne « ehcuot al tnappar f ne » edilav « li’ u q s er èt c ar a c e d e ti us e n u ri nr u o f e d r u et as il it u’ l à e d n a m e d r e i v al c u a er ut c e l er èi m er p a L 2.3 Notions de tampon et de caractères séparateurs . fitalutipacér nu aresoporp suov 22 ert -ipahc ud 1.2 ehpargarap el te etius al rap sétilbissop sertua’d snorertnocner suon ,erocne à L . s e ét p e c c a t n os 1 u o 0 s er èi t n e sr u e l a v s e l s el u es : n e é l o o b • ; )e m m arg orp n u snad tnarugi f etnatsnoc enu ruop euq noitaci fingis ed tno’n iuq L uo l , F ,f sruetaci fidom sel resilitu sap tuep en no ,noitnetta( E uo e ceva ,elleitnenopxe uo ela micéd noitaton ne tnattol f nu’d ,reitne nu’d emro f al suos rinruo f el tuep no : elbuod gnol uo elbuod uo taolf : tnattol f • ; )engis ed stubirtta snas uo ceva( gnol uo tni ,trohs : reitne • ; t na d n o pserr oc er èt cara c u d edoc el neib tneitbo no ,sac sel suot snad : )engis ed stubirtta sed non uo edèssop li’uq( rahc • : euqnocleuq esab ed ep yt ed snoitamro fni sed à redécca ruop >> ruetarépo’l resilitu zevuop suov ,elarénég erèinam enu’D 2.2 Les différentes possibilités de lecture sur cin .n ed ruelav al tiartxe a ne no’uq sèrpa ,nic tolf el uneved tse’uq ec ed erid-à -tse’c ,)tolf nu tse >> ruetarépo’l ed tatlusér el ,<< ruop e mmoc( n >> nic tol f ud etiartxe tse 2 - Lecture au clavier 67
  • 96. . e d il a v ni er è t c ar a c e d n oi t o n e t t e c e d f it al er t c e ps a’l n ei b z e t o N .). .. t n a tt o l f n u r u o p e u o E e u q ert u a ert t e l e n u ,r e it n e n u r u o p t n i o p nu elpmexe rap( eria f ne tuev no’uq egasu’l à troppar rap ,edilavni erètcarac nu’d ertnocner • ,ruetarapés erètcarac nu’d ertnocner • : et i a fs i t as ts e s n o it i d n o c x u e d s e d e n u’l e u q s è d n o p m a t u d n o it ar -olpxe nos etêrra >> ruetarépo’l ,noitamro fni enu’d erutcel al ed srol ,elarénég erèinam enu’D .)a( tnaruoc erètcarac ec ed ritrap à nopmat ud noitarolpxe’l erviusruop à ruetarépo’l enè ma )c( etnavius ruelav al ed erutcel a L .n ruop 21 ruelav al cnod tinruo f te noitarolpxe nos tp morretni ruetarépo’l ,erèitne ruelav enu’d noitacirbaf al à sap tnanevnoc en a erèt -carac eC .a siup ,2 siup ,1 serètcarac sel ertnocner >> ruetarépo’l ,n ed erutcel al ed srol ,icI cin >> n >> c ; 12a@ n = 12 c = ’a’ : seénrecnoc selbairav sel snad seunetbo sruelav sed éngap mocca ,elpmexe tec ze yoV 2.5 Présence d’un caractère invalide dans une donnée cin >> c >> n ; a25@ a^^25@ ^a25@ c = ’a’ c = ’a’ c = ’a’ n = 25 n = 25 n = 25 cin >> n >> c ; 12 a@ n = 12 c = ’a’ cin >> n >> p ; 12^25@ n = 12 p = 25 // façon la plus naturelle de fournir les informations voulues. ^12^^25^^@ n = 12 p = 25 // on a introduit quelques espaces supplémentaires dans les données. 12@ @ ^25@ n = 12 p = 25 // on a fourni trois lignes d’information, dont une "vide". // l’opérateur >> a alimenté trois fois le tampon 12^25^48^8@ n = 12 p = 25 // l’exploration du tampon s’est arrêtée sur l’espace suivant 25 // les caractères non exploités ici pourront être utlisés // par une prochaine lecture : eri at n e m m o c n u t n e m e ll e u t n e v é t e s e u l t n e m e v it c e f f e sr u el a v s e l , dr a g er n e , c e v a ) e n gi l e d ni f e n u @ te ec a pse n u e n g isé d ^ ( s e l b -issop sesnopér ed selpmexe sed ,erutcel euqahc ruop ,snossinruo f suoN .rahc ep yt ed tse c euq sidnat ,tni ep yt ed tnos p te n euq snosoppus suon sleuqsel snad selpmexe seuqleuq icioV .) 6. 2 e h p ar g ar a p u a s n or d n e i v er y s u o n( e é n n o d al s n a d t n es ér p tse’n edilavni erètcarac nucua euqsrol snio m ud ,)ruetniop el tnaçalp y ne( ruetarapés nu’d ert 68 Les entrées-sorties conversationnelles de C++ CHAPITRE 5
  • 97. sésinorhcnys lam tnelbmes narcé’l te reivalc el dnauQ donnez une valeur pour n : 12 25 merci pour 12 donnez une valeur pour p : merci pour 25 #include <iostream> using namespace std ; main() { int n, p ; cout << "donnez une cin >> n ; cout << "merci pour cout << "donnez une cin >> p ; cout << "merci pour } " << p << "n" ; " << n << "n" ; valeur pour p : " ; valeur pour n : " ; .engil e mèisiort al à eésop noitseuq al à erdnopér à sap a’n ruetasilitu’l ,icI .etnedécérp al rap eétiolpxe non noitam -ro fni enu resilitu tuep erutcel enu tne mmoc tiov y nO .nop mat ud elôr el ertsulli elpmexe teC 2.6.1 Manque de synchronisme entre clavier et écran .edilavni erètcarac nu’d ecnesérp al à eud eini fni elcuob enu • , e d il a v n i er è t c ar a c n u r a p er ut c e l al e d e g a c ol b n u à • ,narcé’l te reivalc el ertne tnerappa emsinorhcn ys ed euqnam nu • : à r i t u o b a t u e p n o ,s a c s n i a tr e c s n a d ,euq tnartno m ,sussed-ic seétnesérp selgèr sel tnartsulli selp mexe siort snosoporp suov suoN 2.6 Les risques induits par la lecture au clavier .noitautis al » reuqolbéd « tnemmoc te tolf nu’d taté’l » retset « tnem -moc 22 ertipahc ud 3 ehpargarap ua ,snorrev suoN .)edilavni erètcarac ua tnadnopserroc ruelav al sap ardneitbo’n no ,erètcarac nu’d erutcel al ed tiga’s li’s emêm( areuohcé erutcel ed erueirétlu evitatnet etuot : eéuqolb tse tol f el rus erutcel al te eégnahcni etser eulavl al ed ruelav al ,sac ec snaD .etnadnopserroc eulavl al ruop ruelav ed reuqirba f up sap a’n nO • . e di l a v n i er èt c ar a c e c e d ri tr a p à ar e u ni t n o c t ol f e l r us e t n a vi us er u t c e l a l , s a c e c s n a D .) er - i a f n e t i a l u o v n o’ u q e gs u’l à t n a n e v n o c s er èt c ar a c sr u e is ul p u o n u r e v u ort u p a n o , e d il a v n i erètcarac el tnava ,tid tnemertua( etnadnopserroc eulavl al ruop ruelav enu reuqirba f up a nO • : r u et aré p o’l e d r u eir ét l u t n e m etr o p m o c el r us t n e ul f ni iuq setneré ffid secnatsnocric xued reugnitsid tua f li ,edilavni erètcarac ed sac ne ,sio fetuoT 2 - Lecture au clavier 69
  • 98. #include <iostream> using namespace std ; main() { int n ; do { cout << "donnez un nombre entier : " ; cin >> n ; cout << "voici son carre : " << n*n << "n" ; } while (n) ; } : )ellun non tse n ed ruelav al euq tnat ueil a noititépér al : elih w ...od elôrtnoc ed erut -curts al tnasilitu ne tnavius ertipahc el rus snopicitna suon ,ici( emmargorp nu’d egalcuob el renîartne tuep noitucéxe’l ed srol esserdalam enu tnem moc tnartno m elpmexe ertua nu icioV 2.6.3 Boucle infinie sur un caractère invalide .) e tr o s al ed seétiart tneiares erutcel ed sevitatnet sertua’d te éuqolb étser tse tolf el( eégnahcni eét -ser tse c ed ruelav al ,eéuqolb tnaté erutcel al : noitautis al éuqolbéd sap a’n ,c snad erètcarac n u’ d er u eir ét l u er u t c el e d e v i t a t n e t a l ,is n i A . er ut c e l al é u q o l b a li t e e é g n a h c n i n e d r u el a v al éssial a li ,erèitne ruelav enu reuqirba f ed elbapac sap srola tiaté’n li e mmoC .edilavni tne metse fina m ,x erètcarac el értnocner a >> ruetarépo’l ,n ed erutcel erèi merp al ed sro L » edilavni erètcarac « nu rap éuqolb reivalC donnez un entier et un caractere : x 25 merci pour 4467164 et a donnez un caractere : merci pour a #include <iostream> using namespace std ; main() { int n = 12 ; char c = ’a’ ; cout << "donnez un entier et un caractere :n" ; cin >> n >> c ; cout << "merci pour " << n << " et " << c << "n" ; cout << "donnez un caractere : " ; cin >> c ; cout << "merci pour " << c ; } : e mmargorp ud tnatrecnocéd tne metrop moc nu renîartne tuep )er ffihc nu’d ueil ua ert -tel enu’d eppar f ici( ruetasilitu’l ed esserdalam enu tnem moc ertno m iuq elp mexe tec ze yoV 70 2.6.2 Blocage de la lecture Les entrées-sorties conversationnelles de C++ CHAPITRE 5
  • 99. .82 ert ipa h c u d 2.7 e hpar gar ap ua , » eri o m é m ne egata mrof « nu tnasilitu ne serutcel sel tne melbanevnoc rerég ,emêm te 22 ertipahc ud 3 ehpargarap ua reuqolbéd el te tol f nu’d taté’l retset tne mmoc snorrev suoN .egarvuo tec snad drat sulp sétnesérp tnores iuq stne mélé sed à leppa eria f ed eriassecén tse li ,eriaf ec ruoP .stnedécérp sem margorp sed tnemetropmoc el reroilé ma’d elbissop tse lI e uqrameR . t ne m e n n or i v n e’l ed tnadnepéd eéirporppa ehcraméd enu tnavius em margorp ud noitucéxe’l erpmorretni arduaf lI ...eini fni elcuob al ùo’d ,éuohcé cnod tno setnavius serutcel sel setuoT .eéuq - ol b é té a er u tc el a l te ) 3 ic i( el b air a v al e d r u el a v al re i fi d o m s nas , e u p m orre t n i ts e’s n e d er ut -cel a L .reitne nu’d noitacirba f al ruop edilavni em moc érédisnoc été a » à « erètcarac el ,icI e di l a v n i e r è t c a r a c n u r u s e i nif ni e l c u o B donnez un voici son donnez un voici son donnez un donnez un donnez un donnez un ... nombre entier carre : 9 nombre entier carre : 9 nombre entier nombre entier nombre entier nombre entier : : : : voici voici voici voici son son son son carre carre carre carre : : : : 9 9 9 9 : à : 3 2 - Lecture au clavier 71
  • 100. . te , s n oi t cur ts ni : s el cu ob se d • ; te s n oi t c ur ts ni : x i o h c s e d • : r es il a ér e d t n a tt e mr e p s e ér ut c ur ts s n oit -curtsni’d esopsid li ,trap enu’d ,teffe nE .edirb yh uep euqleuq tse ++C egagnal el ,tniop ec ruS . O T O G l e n n oi ti d n o c n i t n e m e h c n ar b e d n o it c ur ts ni e n u’ d t âs o ps i d r e i nr e d e c ,r u e u g ir e t u o t n e , e u q n ei b l a cs a P e g a g n a l u d , e l p m e x e r a p ,s a c el ti at é a l e c ; e ér u t c ur ts noita mmargorp al ed selatne madno f serutcurts sed elèdi f noitcudart enu ,eriartnoc ua ,uo • ; cisaB sreimerp sed ,elp mexe rap ,sac el tiaté’c ; )lennoitidnocni uo lennoitidnoc( tnemehcnarb ed noiton al rus tne melleitnesse seésab • : ertê tnevuep ic-sellec ,sac el tnaviuS .selcuob sec uo xiohc sec resilaér ed tn at t e mrep , seém mon ,snoitcurtsni’d tnesopsid segagnal sel suoT .s n oi tc urt s ni’ d é n n o d elbmesne nu siof srueisulp retépér ed tid tnemertua ,selcuob sed reutcef fe’d étilibissop al ed • ; ) .. .l u c l a c ed tatlusér nu ,ruetasilitu’l ed esnopér enu ,elpmexe rap ,ertê tnavuop ic-sellec( sec -natsnocric sel tnavius tnemmeré f fid retropmoc es ed ,xiohc sed reutce f fe’d étilibissop al ed • : tnemelleitnesse tnenneivorp em margorp nu’d » tnegilletni tne metrop moc « el te ecnassiup al rO .tnessiarappa selle ùo erdro’l snad erid-à-tse’c ,tnemelleitneuqés seétucéxe tnos snoitcurtsni sel ,em margorp nu snad ,iroirp A r of eli h w eli h w... od h cti ws esl e...fi elôr tno c ed sno it cur tsni Les instructions de contrôle 6
  • 101. . tc erro c t ne me uq -ixatn ys tse iuq ec ,ediv noitcurtsni elues enu’d éutitsnoc colb nu tse } ; { euq erocne zetoN .ediv sproc nu tna ya selcuob ed sac el snad étilibisil eruelliem enu aretroppa )neir ...rap écalpmer ertê iroirp a tiarruop leuqel( colb reimerp el euq snorrev suon ,ehcnaver nE .tneitnoc li’uq elpmis noitcurtsni’l rap écalp mer ertê sruojuot arruop li’uqsiup ,euqitarp ne têrétni nucua etnesérp en colb dnoces e L { } { i = 1 ; } : stcerroc scolb ed selp mexe xued icioV .ediv ertê eriov ,noitcurtsni elues enu à eriudér es tuep colb nU . c o l b n u u o e é r ut c u rts , e l p m i s : + + C n o it c ur ts ni e l l e u q etr o p m i’ n sr u oj u ot ar e n g is é d i c-i u le c , ét o n àj é d s n o va’ l s u o n e m m o C . n o i t c u r t s n i ’ d e mr e t e c r e n n oi t n e m à s é n e m a t n e v u os s n or es s u o n ,s n o i t c urt s n i s e t n er é f f i d s e d e x a t n ys al e d n oi t -pircsed al snaD .evisrucér etros euqleuq ne tse noitcurtsni’d noiton al ,++C ne’uq snoleppaR .scolb sertua’d re mre fner ruot ruel à srola tnevuep selleuqsel ,)selcuob ,xiohc( seérutcurts snoitcurtsni’d euq )elugriv-tniop nu rap seéni mret( selpmis snoitcurtsni’d neib issua riga’s tuep lI .seuqnocleuq tnemulosba tnos colb nu snad tnarugi f snoitcurtsni se L .} te { ertne seécalp snoitcurtsni’d etius enu tse colb nU 1.1 Blocs d’instructions .e lar é né g erè i na m e n u’ d colb nu tse’uq ec ici resicérp ed snosoporp suov suoN .colb nu rinevretni eria f tneiavuop serèinred sec euq étatsnoc snova suoN . te : serèilucitrap elôrtnoc ed snoitcurtsni sed értnocner àjéd snova suon ,2 ertipahc ud 1 ehpargarap ud noitcudortni’d elpmexe erton snaD rof fi 1 Les blocs d’instructions . er ti p a h c e c s n a d r ei d -uté’d snosoporp suon suon euq ++C egagnal ud elôrtnoc ed snoitcurtsni setneréffid sec tnos eC .)nartroF snad e mmoc( elpitlu m egalliugia nu te )lacsaP snad e mmoc( érutcurts tnemetia frap elpitlum xiohc nu ertne eriaidémretni tia f ne tse hctiws noitcurtsni’l • : lennoitidnocni tnemehcnarb ed snoitcurtsni’d esopsid li • ; te , : s n orr e v e l s u o n em moc ,euqsiup etnesba tnemelatot sap tse ne’n tnemehcnarb ed noiton al ,trap ertua’d ,siaM e u nit n o c k a erb ot og 74 Les instructions de contrôle CHAPITRE 6
  • 102. .xua f tneived lun te iarv tneived lun non : seuqigol sruetarépo sel ruop eértnocner àjéd elgèr al tnavius neéloob ne tnemeticilpmi eitrevnoc tse iuq )etnattol f uo erèitne elpmexe rap( euqnocleuq noisserpxe enu tse snad tnarugif noitidnoc al ,rueugir etuot ne ,siaM .) elp mexe rap( enneéloob tiaté xiohc el tnassigér noitidnoc al ùo erusem al snad ,slerutan ed rei filauq tiarruop no’uq snoitcurtsni’d selp mexe sed értnocner àjéd snova suoN fi b < a fi 2 L’instruction if . n oi t c n o f e n u à s e l a c ol s e l b a ir a v s e l e u q s p m et e m ê m ne liatéd ne sulp énimaxe ares iuq tcepsa tec rus sulp sap snoretsisni’n suon ,tnatsni’l ruoP ..... { int p ; ..... // ici, on peut utiliser p } ..... // mais, ici, p n’est plus connu : s n ad emmoc ,colb nu’d rueirétni’l à selbairav sed reralcéd à tne melagé esirotua suov ++C siaM int n ; ..... { // ici, on peut utiliser n } : colb ec snad elbasilitu tse colb nu tnava eéralcéd elbairav etuot ,udnetne neiB .em margorp nu’d nies ua noitasilitu nos tnava elbairav enu reralcéd ed eriassecén tiaté li’uq uv snova suoN 1.2 Déclarations dans un bloc . c o lb n u’d etius al à s fitsep metni sel ugri v-st niop sed retuoja’d cnod zetivÉ .)sirp moc elu griv - t n i o p( e l p m i s n o i t c ur t s n i e n u’ u q e u q i x a t n y s el ôr e m ê m e l e u o j c o l b n u , tr a p er t u a’ D . n o i t c ur t s n i e d n o c e s a l e d n i f a l à e l u gr i v- t n i o p n u e u q n a m l i r a c t c er r o c n i t s e { i = 5 ; k = 3 } : c o l b ec , is ni A .elugriv-tniop nu rap eéni mret sruojuot tse elp mis noitcurtsni etuot euq sap zeilbuo’N e uqrameR 2 - L’instruction if 75
  • 103. : à t ne lav iuq é sap ts e’ n if ( i<max && ( j++ == 10) ) ...... : e hc n a ver n E i = i + 1 ; if ( i-1 < limite ) ...... : à tnelaviuqé tse if ( i++ < limite ) ...... : sr u el li a r a P i = i + 1 ; if ( i < limite ) cout << "OK" ; : à tnelaviuqé tse if ( ++i < limite) cout << "OK" ; : enneéloob erocne tse noisserpxe ettec ùo selpmexe sed icioV .snoitca seniatrec resilaér e mê m-elle tuep ic-ellec euq tia f ++C ne noisserpxe’d noiton al ed essehcir a L .euqnocleuq tse xiohc el tnannoitidnoc noisserpxe’L 2.2 Exemples . t ner u gi f y i uq se lp mi s s n o it cur ts ni s el t ne me ll er ut a n tn e ni mre t iuq xuec tse’n ec is ,elugriv-tniop nucua ios ne esopmi’n noitcurtsni ettec ed exatn ys a L e uqrameR ;) loob . e ér u t c ur ts n o it c ur ts n i – ; c o lb – ; )elugriv-tniop nu rap eénimret( elp mis – : erid-à-tse’c ,seuqnocleuq snoitcurtsni : 2_noitcurtsni te 1_noitcurtsni • ne tnemeticilp mi eitrevnoc tnemelleutnevé( euqnocleuq noisserpxe : noisserpxe • fi noi tcur tsn i’L instruction_2 else instruction_1 if (expression) instruction_1 if (expression) : s e mr o f x u e d et n e s -érp fi noitcurtsni ettec euq etros ed ,sfitatluca f tnos tiudortni li’uq noitcurtsni’l te esle to m e L 76 2.1 Syntaxe de l’instruction if Les instructions de contrôle CHAPITRE 6
  • 104. ; s or u e 0 0 0 1 à r u eir é f n i t n a t n o m n u r u o p % 0 • : r i o v as à , e u n et b o is ni a r u el a v al ed dnepéd xuat el tnod esimer enu etiusne tilbaté lI .)% 6,91 ed tnatsnoc AVT ed xuat nu ceva( tnadnopserroc CTT xirp el eluclac te sexat sroh xirp elp mis nu eénnod ne til lI .esimer ceva noitarutca f ed e mmargorp nu’d tiga’s lI .séuqirb mi fi ed noitasilitu’d elp mexe nu icioV .essap es iuq ec xueim el erèggus iuq noitatnesérp ednoces al tse’c ,elp mexe erton snaD rencontré auquel un esle fi Un se rapporte toujours au dernier été attribué. n’a pas encore esle : et n av i us al t se é tï u gib ma e ll et e n u r ev e l r uop + +C e g a g n a l e l r a p e é t p o d a e l g èr a L .s a c e c s n a d n e ir t i ar e h c i f f a’ n e d n o c es a l e u q si d n at , ess u a f tse b=<a noitidnoc al euqsrol "énnodro non" rehciffa à tiariudnoc noitatérpretni erèimerp a L if (a<=b) if (b<=c) cout << "ordonné" ; else cout << "non ordonné" ; ? ic-ellec erèggus el e mmoc neib uo if (a<=b) if (b<=c) cout << "ordonné" ; else cout << "non ordonné" ; ? noitatnesérp ettec erèggus el emmoc étérpretni li-tsE if (a<=b) if (b<=c) cout << "ordonné" ; else cout << "non ordonné" ; : e lp m e xe t ec s na d s ac el tse’C .tîarappa étïugib ma enu ùo snoitautis seniatrec etsixe li ,esle ed retrop moc sap en uo retropmoc tuep noitcurtsni ettec euq ec ed unet etp moc ,rO .fi snoitcurtsni sertua’d remre fner ,ruot ruel à ,tnevuep selle ,reilucitrap nE .seuqnocleuq tnemulosba ertê tneiavuop noitcurtsni e n u’ d xi o h c u d e itr a p e u q a h c s n a d t n ar u g i f s n o i t c urt s n i s e l e u q é n n oi t n e m àj é d s n o v a s u o N 2.3 Imbrication des instructions if // // if (a = b) { ..... } // // // if (a) { ..... } exécuté si a non nul, quel que soit le type de a (entier, flottant, et même pointeur) affecte b à a et exécute le bloc si a est non nul on obtient parfois un avertissement du compilateur lié au risque de confusion entre a=b et a==b : enneéloob s u l p ts e’ n noitcurtsni’l tnassigér noisserpxe’l ùo selpmexe sed tnanetniam icioV . n o it al u m -ro f emèixued al snad ,ehcnaver ne ,tse’l elle ; essua f tse xam<i noitidnoc al euqsrol eéulavé s a p ts e’ n noisserpxe’l ,noitalu mro f erèi merp al snad ,tid tnemertuA .eriassecén tse alec euqsrol euq ednarépo dnoces nos eulavé’n & & ruetarépo’l ,tid àjéd snova’l suon emmoc ,rac fi ++j j++ ; if ( i<max && ( j == 10 ) ) ...... 2 - L’instruction if 77
  • 105. Les instructions de contrôle CHAPITRE 6 .s oru e 000 5 à la g é u o r ue irép us t na t n o m n u r u op % 5 • ; s or ue 000 5 à r u eir é f n i te s oru e 000 2 à la g é u o r ue irép us t na t n o m n u r u op % 3 • ; s or ue 000 2 à r u eir é f n i te s oru e 000 1 à la g é u o r ue irép us t na t n o m n u r u op % 1 • #include <iostream> using namespace std ; main() { const double TAUX_TVA = 19.6 ; double ht, ttc, net, tauxr, remise ; cout << "donnez le prix hors taxes : " ; cin >> ht ; ttc = ht * ( 1. + TAUX_TVA/100.) ; if ( ttc < 1000.) tauxr = 0 ; else if ( ttc < 2000 ) tauxr = 1. ; else if ( ttc < 5000 ) tauxr = 3. ; else tauxr = 5. ; remise = ttc * tauxr / 100. ; net = ttc - remise ; cout << "prix ttc = " << ttc << "n" ; cout << "remise = " << remise << "n" ; cout << "net à payer = " << net << "n" ; } donnez le prix prix ttc = remise = net à payer = hors taxes : 500 598 0 598 donnez le prix prix ttc = remise = net à payer = hors taxes : 4000 4784 143.52 4640.48 esimer ceva noitarutcaf : séuqirbmi fi ed elpmexE e uqrameR .22 ertipahc ud 5.5.1 ehpargarap ua e mmargorp tnedécérp ud eéroiléma noisrev enu zerevuort suoV .tnemerueirétlu’uq sétnesérp tnores en iuq stol f ed » sruetalupina m « stneré ffid resilitu tuaf li ,tnadnepeC .sruelav setneré ffid sel tnemelbanevnoc tnangila ne ,statlusér sed noitatnesérp al reroiléma’d elbissop tse lI 78
  • 106. .colb el tius iuq noitcurtsni’l à essap no ,eriartnoc sac el snaD .etteuqité ettec sèrpa tnarugi f noit -curtsni’l à ehcnarb es no ,sac el tse’c iS .eunetbo isnia ruelav al à tnadnopserroc » x esac « emro f al ed » etteuqité « enu etsixe li’s tius iuq colb el snad ehcrehcer no ,siuP .)n ici( hctiws tom el sèrpa tnarugif noisserpxe’l reulavé rap droba’d tuot ecnemmoc nO .tius emmoc eluoréd es noitucéxe noS .)hctiws tom ua ecnemmoc elle( sengil tiuh rus ici dneté’s hctiws noitcurtsni’L hctiws noitcurtsni’d elpmexe reimer P donnez un entier : 5 au revoir donnez un entier : 2 deux au revoir donnez un entier : 0 nul au revoir #include <iostream> using namespace std ; main() { int n ; cout << "donnez un entier : " ; cin >> n ; switch (n) { case 0 : cout << "nuln" ; break ; case 1 : cout << "unn" ; break ; case 2 : cout << "deuxn" ; break ; } cout << "au revoirn" ; } .noitucéxe’d selpmexe siort ed éngapmocca emmargorp ed elp mexe reimerp ec ze yoV elp mexe rei m er P )a 3.1 Exemples d’introduction de l’instruction switch 3 L’instruction switch 3 - L’instruction switch 79
  • 107. : elp mexe nu iciov nE .tnavarapua eértnocner été tiarua’n etnasiafsitas ruelav enucua ùo sac el snad arehc -narb es em margorp el elleuqal à etteuqité e mmoc tluafed élc-to m el resilitu’d elbissop tse lI tl u afe d e t t e u q i t É ) b kaerb snoitcurtsni’d ecnesba’l nE donnez un entier : 5 au revoir donnez un entier : 2 deux au revoir donnez un entier : 0 nul un deux au revoir #include <iostream> using namespace std ; main() { int n ; cout << "donnez un entier : " ; cin >> n ; switch (n) { case 0 : cout << "nuln" ; case 1 : cout << "unn" ; case 2 : cout << "deuxn" ; } cout << "au revoirn" ; } : s n o i t c urt s n i’ d ecnesba’l ne e mmargorp emêm ec tiariudorp euq ec ,elp mexe’d ertit à ,ze yoV .latnemad -no f tse noitcurtsni ettec ed elôr el euq neib zetoN .colb ud ritros ed tia f ne edna med ic-elleC ka erb break ; : ici ,riovas à ,etnavius noitcurtsni’l à ,tnemellerutan ,etiusne essap nO cout << "nuln" ; et u c é x e n o’ l t e 0 esa c : erid-à-tse’c ,etnadnopserroc noitcurtsni’l etteuqité enu tnemevitcef fe evuort no ,0 tuav n dnauq ,elpmexe raP 80 Les instructions de contrôle CHAPITRE 6
  • 108. 3 - L’instruction switch #include <iostream> using namespace std ; main() { int n ; cout << "donnez un entier : " ; cin >> n ; switch (n) { case 0 : cout << "nuln" ; break ; case 1 : cout << "unn" ; break ; case 2 : cout << "deuxn" ; break ; default : cout << "grandn" ; } cout << "au revoirn" ; } donnez un entier : 2 deux au revoir donnez un entier : 25 grand au revoir tlua fed etteuqité’L la ré nég sulp elpmex E )c sniatrec si mo tnemeriatnolov snova suon leuqel snad ,elpmexe tec ze yoV . .)stniop-xued sruel ed seéngap mocca( sevisseccus setteuqité srueisulp ,evitini féd ne ,erid-à-tse’c ,snoitcurtsni snas setteuqité sed • ; et t e u q it é e n u’ d et i us a l à s n oi t c ur ts ni sr u e is ul p • : revuort tuep no ,elarénég erèinam enu’D ka erb #include <iostream> using namespace std ; main() { int n ; cout << "donnez un entier : " ; cin >> n ; switch (n) { case 0 : cout << "nuln" ; break ; case 1 : case 2 : cout << "petitn" ; 81
  • 109. e n u’ d r u el a v a l e d é t i l a g é’ d n o s i a r a p m o c a l e u q r e i l b u o s a p t u a f e n l i , t e f f e n e ; s e r è i t n e sr u e l a v s e d à s e t t e u q i t é s e d sr u e l a v s e l e t i m i l n o i t c ur t s n i e t t e c e u q l a mr o n t î a r a p l I 1 : seriatnemmoC • .seuqnocleuq snoitcurtsni’d ecneuqés : ; ) ne i tre v n oc • ( euqnocleuq reitne ep yt nu’d etnatsnoc noisserpxe : ; e u q n o c l e u q e r è i t n e n o i s s e r p x e : n oi s s e r p x e • snoit cu rtsni’d_etius ar e s l i r a c é t p e c c a t s e rah c tni etnatsnoc hctiws noitcurtsni’L } [ default : suite_d’instructions ] case constante_n : [ suite_d’instructions_n ] .............. case constante_2 : [ suite_d’instructions_2 ] { case constante_1 : [ suite_d’instructions_1 ] switch (expression) : ) fi t a tl u c a f t s e t n e m r e f -ner sli’uq ec euq tnei fingis ] te [ stehcorc sel( noitcurtsni ettec ed elarénég exatn ys al icioV 3.2 Syntaxe de l’instruction switch hctiws noitcurtsni’d larénég elpmexE 82 donnez un entier : 25 grand donnez un entier : 3 moyen donnez un entier : 1 petit moyen } } case 3 : case 4 : case 5 : cout << "moyenn" ; break ; default : cout << "grandn" ; Les instructions de contrôle CHAPITRE 6
  • 110. .ruessecorpérp ud enifed# evitcerid al à riruocer tialla f li ,selbar -ap moc sétilibissop sed rinetbo ruoP .lagélli tiaté tnedécérp elp mexe’L .setnatsnoc snois -serpxe sed snad rinevretni sap tneiavuop en tsnoc tubirtta’l ceva seéralcéd selbairav se L C nE n o i t ar a l c é d a s e d u a e v i n u a n o i t - nevretni elues enu à e m usér es ETIMIL e d ruelav al ed noitaci fid o m en u ,elp mexe tec s n a d , i s n i A . s e m m a r g or p s e d e g ar t é m ar a p n i a t r e c n u t e mr e p r e d é c or p e d n o ç a f e t t e C const int LIMITE = 20 ..... switch (n) { ..... case LIMITE-1 : ...... case LIMITE : ...... case LIMITE+1 : ...... } : elpmexe tec s nad em moc t s n o c t u b ir t t a’ l c e v a s e i n i f é d s e l b a i r a v s e d à l e p p a e r i a f t n e m e l a g é t u e p a l e c s i a M .e mêm - i o s l u c l a c e l e r i a f e d e l b i s s o p sr u o j u o t sr o l a t s e l i’ u q s i u p é t i m i l e t s er n e t êr é t n i ’ l s i a m 5 + 2 3 * 8 - 2 : e u q s e l l e t s n o i ss er p x e s e d ,rûs neib ,ertê tuep aleC .ruetlalip moc el rap selbaluclac s noisserp xe sed is nia e m mon n O . s e t n a ts n o c s e d t n e m e l u e s n o n t e s e t n a ts n o c s n o i ss er p x e s e d e s ir o t u a e x a t n ys a L 2 . ep y t u d ts e ù o tni n switch (n) { case ’A’ : ..... case 559 : ..... ....... } : er o c n e u o , r ah c e p y t e d ts e ù o c switch(c) { case ’a’ : ...... case 132 : ..... ...... } : e p y t u d s n o i t c ur t s n o c s e d es i r o t u a a l e C . n e n o i sr e v n o c t n e m e u q i t a m é ts ys a r u a y l i’ u q é n n o d t n a t é , er è t c ar a c e p y t e d s e t n a t s n o c s e d r e y o l p m e ’ d e l b i ss o p ts e l i , e h c n a v er n E . s l u c l a c s e d e é t i m i l n o i s i c ér p a l e d u n e t e t p m o c , er i o t a é l a t n e m e v i t a l er t s e e t n a t t o l f e t n a t s n o c e n u’ d e l l e c à e t n a t t o l f n o is s er p x e tni 3 - L’instruction switch 83
  • 111. printf ("vous avez fourni %d", n) ; : egahciffa’d noitcurtsni’l ed noitucéxe a y li ,elbanevnoc esnopér enu inruo f a ruet -asilitu’l euq sèrpa emêm ,ici ,isniA .essua f tneived eénnoitnem noitidnoc al euq sèd non te sn o it c urts n i s es e d te lp m oc sr uo crap n u sèrpa’ uq ti a f es e n el cu ob e d ei tro s al e uq ne ib ze t oN .)ni f ne erugi f » elihw eitrap « al euq tia f el sruellia’d erèggus el e mmoc( noititépér euqahc ed ni f al à’uq eéni maxe tse’n elcuob ettec tigér iuq noitidnoc al ,te ffe nE .sio f enu sniom ua euruocrap sruojuot tse elle ,emêm erutan as rap ed ,sio fetuoT .eétépér ares elcuob ellet enu siof ed neib moc iroirp a sap tias en nO .evitisop ruelav enu sap tinruof en li’uq tnat )eul ruelav al tnahci ffa ne( ruet -asilitu’l à erbmon nu edna med elle ,ici ,tid tne mertuA .)ellun non ,++C ne ,erid-à-tse’c( eiarv tse )0=<n( eénnoitne m noitidnoc al euq tnat )colb nu ici( tneitnoc elle’uq noitcurtsni’l etèpér do { ....... } while (n<=0) : noitcurtsni’L el i h w .. . o d n o i t c u r t s n i ’ d e l p m e x E donnez un nb >0 : -3 vous avez fourni : -3 donnez un nb >0 : -5 vous avez fourni : -5 donnez un nb >0 : 10 vous avez fourni : 10 reponse correcte #include <iostream> using namespace std ; main() { int n ; do { cout << "donnez un nb >0 : " ; cin >> n ; cout << "vous avez fourni : " << n << "n" ; } while (n <= 0) ; cout << "reponse correcte" ; } 4.1 Exemple d’introduction de l’instruction do... while . el i h w . .. o d noitcurtsni’l riovas à ,++C ne elcuob enu resilaér ed noça f erèimerp al tnanetniam snodrobA 84 4 L’instruction do... while Les instructions de contrôle CHAPITRE 6
  • 112. cout << "vous avez fourni : " << n << "n" ; : n o i t c ur t s n i’ l e u q s a p z e i l b u o’ N do { cout << "donnez un nb >0 : " ; cin >> n ; } while (cout << "vous avez fourni : " << n << "n", n <= 0) ; : e r ir c é’ s t n e m e l a g é t u e p 1 . 3 e h p ar g a r a p u a és o p or p e l p m e x e’ L 5 . n o i t c ur t s n i e n u r a p t n e m e l l e u t n e v é r i tr o s n e’ d e l b i ss o p a r es l i , s n o rr e v e l s u o n e m m o c , ù o e r u s e m a l s n a d t êr é t n i n u r e t n e s ér p ar r u o p ka erb do instruction while (1) ; : e h c n a v er n E . t ê r é t n i n u c u a e u q i t a r p n e e t n es - é r p e n e l l e’ u q n e i b , e t c e rr o c t n e m e u q i x a t n y s ts e e l l e ; e i n i f n i e l c u o b e n u e t n e s ér p er do { } while (1) ; : n o i t c u r ts n o c a L 4 do { } while ( ... ) ; do ; while ( ... ) ; : s e t c err o c t n os s n o i t c ur ts n o c s e C .)elu griv-tniop nu rap eéni mret e mê m d nauq sia m( ediv ertê tuep retépér à noitcurtsni’L 3 do cin >> c ; while ( c != ’x’) ; : er ir c é t n e m u l o s b a t u a f l I . e t c er r o c n i t s e do cin >> c while ( c != ’x’) ; : isni A .eni mret al iuq elu griv-tniop e l s a p z e t t e m o’ n , e l p m is n o i t c u r ts n i e l u es e n u à e t i m i l es r e t é p ér à n o i t c u r ts n i ’ l e u q sr o L 2 . n o i t c ur t - s n i e t t e c e d n i f a l à e l u g r i v- t n i o p n u’ d e c n es é r p a l t r a p er t u a ’ d , e l c u o b a l e d e ti us r u o p a l t i g é r i u q n o i s s e r p x e’ l e d r u o t u a s e s è h t n e r a p e d e c n e s ér p a l , t r a p e n u’ d , n e i b z e t o N 1 seriatnemmoC .) l o o b ne e itr e v n o c t ne m el l e u t ne v é ar es i u q( e u q n oc le u q n o isser p xe : n o i s s e r p x e • elihw ...od noitcurtsni’L while (expression) ; do instruction 4.2 Syntaxe de l’instruction do... while 4 - L’instruction do... while 85
  • 113. donnez donnez donnez donnez un un un un nombre nombre nombre nombre : : : : 25 17 42 9 #include <iostream> using namespace std ; main() { int n, som ; som = 0 ; while (som<100) { cout << "donnez un nombre : " ; cin >> n ; som += n ; } cout << "somme obtenue : " << som ; } 5.1 Exemple d’introduction de l’instruction while . n oi t c ur t -sni’l riovas à ,ellennoitidnoc elcuob enu resilaér ed noça f emèixued al tnanetnia m sno yoV elih w 5 L’instruction while . l e i t n e u q é s r u e t ar é p o’ l e d t n e m e n n oi t c n o f u d u n e t e t p m o c , e é u l a v é n o i s s er p x e er è i n r e d a l er t ê t i o d e t i u sr u o p e d n o i t i d n o c a l e u q n e i b z e t o N do { } while (cout << "donnez un nb >0 : ", cin >> n, cout << "vous avez fourni : " << n << "n", n <= 0 ) ; : e mê m u o do { cout << "donnez un nb >0 : " ; } while (cin >> n, cout << "vous avez fourni : " << n << "n", n <= 0) ; : e r ir c é’ s e r o c n e t i arr u o p e l p m e x e er t o N . t ê r é t n i n u r i o v a sr o l a e v u or t e s n o i t c a e l l e u t - n e v é’ l e l u e s t n o d s er t u a s e l é u l a v é r i o v a s è r p a , e d n ar é p o r e i nr e d n o s e d r u e l a v a l r i n -ruo f ed etnetnoc es leitne uqés ruetarépo’l ,trap ertua’D .elu gri v-tniop nu rap eé nimret cout << "vous avez fourni : " << n << "n" : n o i s s er p x e e n u , t i a f n e , t s e 86 Les instructions de contrôle CHAPITRE 6
  • 114. while ( expression2 ) ; 1 n o i ss e r p x e o d : à e t ne l a v i uq é ts e while ( expression1, expression2 ) ; : n o i t c u r ts n o c a L 4 . n o i t c u d or t n i’ d e l p m e x e’ l e d e l l e c à e t n e l a v i u q é s a p t s e’ n while ( cout << "donnez un nombre : " , cin >> n, som<=100 ) som += n ; : n o i t c u r t s n o c e t t e c , i s n i A . e l c u o b a l e d e t i u sr u o p e d t s e t e l t n a v a s e é u l - a v é t n o r es t n e u t i t s n o c a l i u q s n o is s er p x e s e l s e t u o t sr o l a’ u q s a p z e i l b u o’ n , l e i t n e u q és r u e t a r é p o’ l à l e p p a t i a f i u q n o is s er p x e e n u ts e e t i us r u o p e d n o i t i d n o c a l e u q sr o L 3 . t n e m o m e c à e i n i f é d t i o s r u e l a v a s e u q er i a s s e c é n c n o d t s e l I . e l c u o b e d r uot reimerp el tnava eéula vé tse etiusru op ed noiti dnoc e m moc eésilitu noisserpxe’L 2 . ) e l p m i s t s e i c- e l l e c i s , t i u s i u q n o i t c ur t s n i’ l e d n i f a l à n u t n e m e l l er u t a n a r e v u or t n e ’ s l i( n i f e d e l u gr i v- t n i o p n u c u a e s o p m i’ n e x a t n ys a l , er t n o c r a p , e u q z e u qr a m e R . e t i us - r u o p e d n o i t i d n o c a l r et i m i l é d r u o p s e s è h t n e r a p e d e c n e s ér p a l n e i b z e t o n , e r o c n e à L 1 seriatnemmoC .) l o o b ne e itr e v n o c t ne m el l e u t ne v é ar es i u q( e u q n oc le u q n o isser p xe : n o i s s e r p x e • elihw noitcurtsni’L instruction while (expression) 5.2 Syntaxe de l’instruction while .) i c i s a c e l s a p t s e’ n i u q e c( e dr o b a’l n o’ u q s è d e s s u a f t s e n oi t i d -noc al is siof enucua euruocrap ertê’n neib sèrt tuep elcuob ellet enu , ceva tiassap es iuq ec à tne meriartnoc ,isni A .sèrpa non te elcuob al ed sruocrap euqahc tnava eéni maxe ts e et i usr u o p e d n o i ti d n o c a l ,s i o f et t e c , e h c n a v er n E . tiare f el emmoc ,)oréz ed etneré ffid( eiarv tse eénnoitnem noitidnoc al euq tnat )colb nu ici( tius iuq noitcurtsni’l etèpér elih w ...od elih w ...od while (som<100) : n oi t c ur ts n o c a L elihw noitcurtsni’d elpmexE donnez un nombre : 21 somme obtenue : 114 5 - L’instruction while 87
  • 115. elih w elcuob enu rap ro f elcuob enu’d tnemecalpmeR #include <iostream> using namespace std ; main() { int i ; i = 1 ; while (i<=5) { cout << "bonjour " ; cout << i << " foisn" ; i++ ; } } : tnavius ua tnelaviuqé tse tnedécérp em margorp e L .sr uo crap e uqa hc e d n i f al à e éu l av é ts e , n i fn e ,e mè isi or t a L .sr u ocrap e uqa h c e é u l a v é t s e el l E . el c u o b a l e d e ti usr u o p al e n n o i ti d n o c e m èi x u e d a L . e l c u o b a l s n a d rertne’d tnava )siof elues enu( eéulavé tse erèi merp a L .snoisserpxe siort tia f ne etropmoc tnava for ( i=1 ; i<=5 ; i++ ) : en g il a L ro f noitcurtsni’d elpmexE bonjour bonjour bonjour bonjour bonjour 1 2 3 4 5 fois fois fois fois fois #include <iostream> using namespace std ; main() { int i ; for ( i=1 ; i<=5 ; i++ ) { cout << "bonjour " ; cout << i << " foisn" ; } } : em margorp ec zerédisnoC 6.1 Exemple d’introduction de l’instruction for . n oi t c ur t -sni’l riovas à ,selcuob sed resilaér ed tnattemrep noitcurtsni erèinred al tnanetnia m snoidutÉ rof 88 6 L’instruction for Les instructions de contrôle CHAPITRE 6
  • 116. )2( rof noitcurtsni’d elpmexE #include <iostream> using namespace std ; main() { for (int i=1 , j=3 ; i<=5 ; i++, j+=i) { cout << "i = " << i << " j = " << j << "n" ; } } } : n o ç a f e t t e c e d t n e d é c ér p e l p m e x e’ l er ir c é’ d te mrep iuq ec ,noitaralcéd enu ertê tne melagé tuep rof noitcurtsni’l ed eitrap erèi merp a L )1( ro f noitcurtsni’d elpmexE i i i i i = = = = = 1 2 3 4 5 j j j j j = = = = = 3 5 8 12 17 #include <iostream> using namespace std ; main() { int i, j ; for (i=1 , j=3 ; i<=5 ; i++, j+=i) { cout << "i = " << i << " j = " << j << "n" ; } } : e lp m e xe t ec ert n o m el emmoc ,étrebil ed sulp te mrep suov ++C ne noisserpxe’d noiton al ed étilarénég al siaM .r u et p m o c u d n oi t at ne mér c n i’ l à d n o ps err o c ei tra p e m èi si ort a l • ; ) 5 = <i( t êrr a’ d n o i ti d n o c a l à d n o ps err o c ei tr a p e m è i x u e d a l • ; )i ici( ruetpmoc nu’d noitasilaitini’l à dnopserroc eitrap erèimerp al • : » ruetpmoc ceva elcuob « tnevuos em mon no’l euq ec ed noitasilaér al riovas à ,rof noitcurtsni enu’d tneuqér f sulp el egasu’l à dnopserroc tnedécérp elpmexe’L 6.2 L’instruction for en général .) ( e d n o c es a l s n a d n oi t c ur ts ni t n e i v e d ) ( n o i t a l u m r o f e r è i m e r p a l snad noisserpxe tiaté iuq ec euq tiaf ++C ne noisserpxe’d noiton al ed étilarénég al ,erocne à L elih w rof 6 - L’instruction for 89
  • 117. i = 1 ; for ( ; i<=5 ; ) { cout << "bonjour " ; cout << i << " foisn" ; i++ ; } i = 1 ; for ( ; i<=5 ; i++ ) { cout << "bonjour ") ; cout << i << " foisn" ; } : e m m ar g or p e d e l p m e x e r e i m er p er t o n e d n o i t c u r t s n i’ l à s e t n e l a v i u q é t n o s s n o i t c ur t s n o c s e c , i s n i A . e v i t a t l u c a f ts e s n o i s s e r p x e s i or t s e d e n u c a h C 2 r of expression_1 ; while (expression_2) { instruction expression_3 ; } : à t n e l a v i uq é t s e for ( expression_1 ; expression_2 ; expression_3) instruction : e u q er i d s n o v u o p s u o n , e l ar é n é g e r è i n a m e n u’ D 1 seriatnemmoC . e u q n o c l e u q n o i s s e r p x e : 3 _ n oi s s e r p x e • ; )loob ne eitrevnoc tnemelleutnevé ares iuq( euqnocleuq noisserpxe : 2_noisserpxe • ; non uo seésilaitini ,ep yt emê m nu’d selbairav srueisulp ed uo enu’d noitaralcéd enu tios – ; ) + + C u d s nes ua( n o isser p xe e n u t i o s – : t s e 1 _ n o i t a r al c é d _ n oi s s e r p x e • . f it at l u c a f t s e u n et n o c r u e l e u q t n e i fi n g is ] t e [ st e h c or c s e L ro f noitcurtsni’L instruction for ( [ expression_déclaration_1 ] ; [ expression_2 ] ; [ expression_3 ] ) 6.3 Syntaxe de l’instruction for . el c -uob al ed eitros sèrpa erocne tnetsixe j te i ,te ffe ne ,sac rei merp el snaD .setnelaviuqé tne m - es u er u o gir s a p s el l e- t n os e n s t n e d é c ér p s e m m ar g or p x u e d s e d s n o it al u mr o f x u e d s e l is n i A .ni f al à tîarapsid li te rof noitcurtsni’l snad eértne’l à éuolla tse tnadnopserroc tne mecalpme’L .rof noitcurtsni’l rap igér colb ua selacol tnos j te i selbairav sel ,sac ec snaD 90 Les instructions de contrôle CHAPITRE 6
  • 118. .) t n a v i u s e h p a r g ar a p e l s n a d s n orr e v e l s u o n e m m o c( n o i t c ur t s n i e n u r a p r i t r os t n e m e l l e u t n e v é a rr u o p n o t n o d e i n i f n i i r o ir p a e l c u o b e n u ts e ka erb for ( ; ; ) instruction : n o i t c u r ts n o c e t t e c , e h c n a v er n E . t êr é t n i n u c u a t n e t n e s é r p e n s e l l e , e u q i t ar p n E . ) e i a r v e m m o c e ér é d i s n o c t s e e l l e , e t n e s b a t s e n o i ss er p x e e d n o c e s a l e u q sr o l , e u q s a p z e i l b u o’ n( e d i v s pr o c e d s e i n i f n i s e l c u o b s e d t n e t n e s ér p er s e l l E . s e t c e rr o c t n e m e u q i x a t n ys t n os for ( ; ; ) ; for ( ; ; ) { } r e i nr e d e l s èr p a é h c i f f a ts e : s n o i t c u r ts n o c x u e d s e L 5 .noitcurts noc e dnoces al snad sap tse’l en li’ uq sid nat ,ruot egasse m el ,noitcurtsn oc erèi merp al snad ,rac ru ot ed t ub éd cout << "on commencen" ; for ( i=1 ; i<=5 ; i++ ) { cout << "début de tourn" ; instructions } : à t n e l a v i u q é s a p t s e’ n for ( i=1, cout << "on commencen" ; cout << "debut de tourn", i<=5 ; i++) { instructions } : e h c n a v er n E for ( i=1 ; i<=5 ; i++ ) { instructions cout << "fin de tourn" ; } : à t ne l a v i uq é ts e for ( i=1 ; i <= 5 ; cout << "fin de tourn", i++ ) { instructions } : e m ê m eD i=0 ; j=1 ; k=5 ; for ( ; ... ; ...) : à erocne uo j=1 ; k=5 ; for ( i=0 ; ... ; ... ) : à t ne l a v i uq é ts e for ( i=0, j=1, k=5 ; ... ; ... ) : i s n i A . n o is s er p x e e n u s n a d s n o i t c a sr u e i s u l p r e p u or g e d t e mr e p + + C n e n o i ss e r p x e’ d n o i t o n a l e d es s e h c ir a l , e r o c n e à L 4 . e i a r v e m m o c e ér é d is n o c t s e e l l e , e t n e s b a ts e ’l e uq sr o L 3 2 _noi s s erp x e 6 - L’instruction for 91
  • 119. .rof noitcurtsni’l snad noitaralcéd enu reutce ffe’d elbissop sap tse’n lI C nE . er i a f e l e d é l l i e s - n o c é d t n e m e v i v u d n e t n e n e i b ts e l I . e l c u o b a l s n a d )s r u e is u l p e d er i o v( r u e t p m o c n u’ d r u e l a v a l r e i f i d o m e d e r i dr e t n i s u o v s a p t u e p e n r u e t a l i p m o c e l ,s n o i t i d n o c s e c s n a D .isnia eésilitu tuotrus tse elle tne melani f is e mê m ,)ni f ed r uela v as te tubéd e d ruelav as ,ruetp moc n u’d mo n e l r e t i c e d t i ar e t n e t n o c e s n o e l l e u q a l s n a d ( r u et p m o c c e v a e l c u o b e i ar v e n u’ d s a p t i g a’ s e n l I .) a v a J e d e l l e c e m m o c( e l l e n n o i t i d n o c e l c u o b e n u t e f f e ts e + + C e d r o f n o i t c u r t -s n i ’ l , n ar tr o F u o l a cs a P e m m o c s e g a g n a l s n i a tr e c s n a d e s s a p es i u q e c à t n e m e r i ar t n o C . ei n i f n i e l c u o b e n u à t i t u o b a n o , e l c u o b e d s p r o c e l s n a d sr u e l l i a e é i f i d o m s a p t s e’ n i e d r u e l a v a l i S for (i=1 ; i<=5 ; i++) { ..... i-- ; ..... } : es i m re p ts e n o i t c u r ts n o c e t te C 9 . . .01 à e la g é t ne mesuer uogir sap tse’n x ed ruela v al ,sru ot 01 sèrpa ,rac eini fni elcuob en u tneitbo n o for (double x=0. ; x !=1.0 ; x+=0.1) : c e v a , e r i P .s l u c l a c s e d i d n orr a’ d r u err e ’ l e d d n e p é d sr u o t e d er b m o n e l for (double x=0. ; x <=1.0 ; x+=0.1) : e uq ellet noitcurtsnoc enu ceva ,isniA .reitne ep yt ed sap tnos e n i u q s r u e t p m o c s e l c e v a s n o i t u a c ér p s e d er d n e r p t u a f l i , s e g a g n a l s e l s u o t s n a d e m m o C 8 .rof noitcurtsni’l e d » n o i s s er p x e « e r è i m e r p a l s n a d e u q e s i mr e p ts e’ n n o i t a r a l c é d e n u ’ u q n e i b z e t o N 7 float x ; for (int i=4, j=0, x=5 ; ... ; ... ) { // ici x est un int, initialisé à 5, de portée limitée au bloc : n o i t c ur t s n o c e t t e c à e d r a g n e i b ar d n er p n O for (int i=4, j=0, float x=5.2 ; ... ; ... ) // erreur : l a g é l l i t i ar e s i ce C . » ruetaralcéd « nu à’uq tior d a’n no ,1noitaralced_noisserpxe s nad euq neib areton nO 6 92 Les instructions de contrôle CHAPITRE 6
  • 120. kaerb noitcurtsni’d elpmexE début tour 1 bonjour fin tour 1 début tour 2 bonjour fin tour 2 début tour 3 bonjour après la boucle #include <iostream> using namespace std ; main() { int i ; for ( i=1 ; i<=10 ; i++ ) { cout << "début tour " << i << "n" ; cout << "bonjourn" ; if ( i==3 ) break ; cout << "fin tour " << i << "n" ; } cout << "après la bouclen" ; } : ed tne mennoitcno f el tnartnom elpmexe nu icioV .elituni elcuob al tiardner iuq ec ,elcuob e d r u ot r ei m er p e l s è d e é t u c é x e t i ar es e ll e , t e f f e n e , eri art n o c s a c el s n a d ; x i o h c n u r a p e é n -noitidnoc tse noitucéxe nos is euq têrétni’d a’n noitcurtsni ettec ,udnetne neiB .elcuob ettec tius iuq noitcurtsni’l à tnassap ne ,elcuob al ed tne meluoréd el erp morretni à tres elle ,sac e c s n a D . e l c u o b e n u s n a d n oi t c ur ts ni et t e c e d i ol p m e’ l t n e m e l a g é esir o t u a + + C e g a g n a l e L . noitcurtsni enu rap igér colb ud nies ua e d el ôr e l u v àj é d s n o v a s u o N ka erb hcti ws ka erb 7.1 L’instruction break .sem margorp ses uep euqleuq rerutcurts à ehcrehc no’l ùo tnemom ud ritrap à ,udnapér uep sia m erbil egasu nu’d tse erèinred al euq sidnat selcuob ed nies ua tne melapicnirp tneiolp me’s serèimerp xued se L .l e n n o it i d n o c ni t n e m e h c n ar b e d s esr e v i d s ét i li b iss o p s e d t n ess i nr u o f s n oi t c ur ts ni si or t s e C 7 Les instructions de branchement inconditionnel : break, continue et goto 7 - Les instructions de branchement inconditionnel : break, continue et goto 93
  • 121. Les instructions de contrôle CHAPITRE 6 e uqrameR .hctiws ud euq ritros tiaf en elle ,elcuob enu snad éuqirbmi hctiws nu snad tîarappa kaerb is emê m eD .enretni sulp al elcuob al ed ritros tia f kaerb ,seéuqirb mi selcuob ed sac nE 7.2 L’instruction continue : c e va e lp me x e r ei merp n u ic i ov nE . tn a v -ius elcuob ed ruot ua tneméruta mérp ressap ed temrep ,elle à tnauq , noitcurtsni’L eunitno c rof #include <iostream> using namespace std ; main() { int i ; for ( i=1 ; i<=5 ; i++ ) { printf ("début tour %dn", i) ; if (i<4) continue ; printf ("bonjourn") ; } } début tour début tour début tour début tour bonjour début tour bonjour 1 2 3 4 5 ro f elcuob enu snad eunitnoc noitcurtsni’d elpmexE : elih w ...od c e v a el p m e x e d n o c es n u i c i o v t E 94 #include <iostream> using namespace std ; main() { int n ; do { cout << "donnez un nb>0 : " ; cin >> n ; if (n<0) { cout << "svp >0n" ; continue ; } cout << "son carré est : " << n*n << "n" ; } while(n) ; }
  • 122. début tour 1 bonjour fin tour 1 début tour 2 #include <iostream> using namespace std ; main() { int i ; for ( i=1 ; i<=10 ; i++ ) { cout << "début tour " << i << "n" ; cout << "bonjourn" ; if ( i==3 ) goto sortie ; cout << "fin tour " << i << "n" ; } sortie : cout << "après la boucle" ; } .) n o i t c u rt s n i ’l ed elp mexe e mmoc étnesérp iulec euq statlusér semêm sel tinruo f em margorp ec( n o it - c ur ts ni’ l e d e d i a’ l à noitcurtsni’l , elcuob enu snad ,elumis iuq elpmexe tec ze yoV .e m mar g orp u d euq n oc le uq t ne me ca lp m e n u ne t n e m eh c narb el t n e m euq iss al c te mrep el lE ka erb ka erb otog rof 7.3 L’instruction goto . e nr e t n i s u l p a l e l c u o b a l e u q e nr e c n o c e n e u n i t n o c n o i t c ur t s n i’ l , s e é u q i r b m i s e l c u o b e d s a c n E 2 .sèrpa non te ,)exatn ys as ed noitatnesérp al snad 2_noisserpxe eémmon( elcuob ed sruocrap ed ni f ed noisserpxe’l ed noitaulavé’l rus tnemehcnarb nu neib eutce ffe eunitnoc noitcurtsni ettec rof elcuob enu snad eésilitu tse elle’uqsro L 1 , se uqrameR elihw ...od elcuob enu snad eunitnoc noitcurtsni’d elpmexE donnez un son carré donnez un svp >0 donnez un svp >0 donnez un son carré donnez un son carré nb>0 : 11 est : 121 nb>0 : 0 est : 0 nb>0 : -5 nb>0 : 3 est : 9 nb>0 : -2 7 - Les instructions de branchement inconditionnel : break, continue et goto 95
  • 123. main () { int n=0 ; goto ici ; for (int i=0 ; i<5 ; i++) { cout << "hellon" ; ici : cout << i << "n" ; } } : e é u o l l a n o n , i el b air a v e n u’ d n oi t a s - il i t u’ d e vi t a t n e t e n u à ar i u d n o c , n o it al i p m o c n e ét p e c c a ts e l i’s , t n a v i us e l p m e x e’l , e m ê m e D main () { int n=0 ; int i ; goto ici ; for (i=0 ; i<5 ; i++) { cout << "hellon" ; ici : cout << i << "n" ; } } : )ruerre enu tnetcetéd sruetalipmoc sniatrec( eini fédni i ed ruelav enu à tiudnoc iuq elp mexe tec snad emmoc ,colb nu’d rueirétni’l srev tnemehcnarb tuot retivé’d te sellennoit -pecxe secnatsnocric sed snad euq noitcurtsni ettec resilitu’n ed édna mmocer tne metro f tse lI otog noitcurtsni’d elpmexE 96 bonjour fin tour 2 début tour 3 bonjour après la boucle Les instructions de contrôle CHAPITRE 6
  • 124. ; s i m s n art a i u l n o’ u q st n e m u gr a s e d s ni atr e c e d sr u el a v s el r ei f i d o m • : is su a arru op e ll e , e uqi ta mé h ta m noitcno f enu’d elôr el reuoj ,trqs emmoc ,tnemevitce ffe tuep noitcno f enu is ,++C ne ,rO .)x(trqs*2 + y em -moc euqité mhtira noisserpxe enu snad tne metcerid resilitu’l tuep no ; noitcno f al rap inruo f tatlusér el engiséd )x(trqs : leppa nos rap tnemelp mis éngiséd )erialacs( tatlusér nu tinruo f • ; )2.5 (t rqs s n ad 2.5 u o )x(trqs snad x ,elp mexe rap( leppa’l ed srol ruelav al tinruo f no tnod stnemugra sed edèssop • : e u qi t a m é h t a m n oi t c n o f e n u , t e f f e n E . » e u qi t a m é h t a m n oi t c n o f « al euq larénég sulp elôr nu edèssop noitcno f al ,)avaJ ne uo C ne e mmoc( ++C ne’uq areton nO .i ci é i d ut é s n or u a s u o n e u q e c e d l e it n ess e’l r es il it u à s é n e m a srola snores suon euq etros ed ,snoitcno f sed à elbarap moc noça f ed seégidér tnores sedohtém sec euq snorrev suon ; sedohtém sed te seénnod sed areicossa ,etnadnepédni noça f ed eini féd ,essalc euqahC .noitisopmocéd ed sussecorp ec snad epaté ednoces enu areutitsnoc .O.O.P a L . » sertèmarap « sed tnas -sinruo f iul ne ,tnemelleutnevé ,te mon nos tnatic ne em margorp nu snad risiol à resilitu tuep no’uq snoitcurtsni’d colb nu’d tiga’s li : ertipahc ec snad redroba snolla suon euq noitcnof ed noiton al à ecârg ,snes ec snad sap reimerp nu temrep elarudécorp noitam margorp a L .edoc ud elbmesne’l renimaxe à riova snas ,elôr el tnemelica f erdnerpmoc arruop no tnod setnadnepédni tne mevitaler seitrap sed ne resop -mocéd el riovuop ed euqitarp tse li ,etxet ed segap seuqleuq essapéd em margorp nu’uq sèD Les fonctions 7
  • 125. } /* appel de fexple avec les arguments x+0.5, q et n-1 */ z = fexple (x+0.5, q, n-1) ; cout << "valeur de z : " << z << "n" ; /* appel de fexple avec les arguments x, n et p */ y = fexple (x, n, p) ; cout << "valeur de y : " << y << "n" ; #include <iostream> using namespace std ; /***** le programme principal (fonction main) *****/ main() { float fexple (float, int, int) ; // déclaration de fonction fexple float x = 1.5 ; float y, z ; int n = 3, p = 5, q = 10 ; .ruelav enu tnassinruo f te stnemugra sed tnavecer erid-à-tse’c ,euqitaméhta m noitcno f enu à tia f ne tnadnopserroc elp mis elp mexe nu r a p s n or e c n e m m o c s u o n , + + C n e n oi t c n o f e n u r es il it u t e ri n i f é d t n e m m o c r er t n o m s u o v r u o P 1 Exemple de définition et d’utilisation d’une fonction . » e n gi l n e s n oi t c n o f « se d ri ni f é d tne mmoc snorrev suon ,ni fnE .++C ed eérapés noitalip moc ed sétilibissop sel tnanrecnoc st n e m é l é s e u q l e u q sr ol a s n or e n n o d s u o N .s t n er é f fi d s t n e m u gr a s e d t n a y a si a m , m o n e m ê m ed snoitcno f srueisulp rini féd ed temrep iuq noitini fédrus ed noiton etnatropmi’l snoreid -uté suon siuP .noitcno f enu’d stnemugra sniatrec ruop tua féd rap sruelav sed rini féd à snord -nerppa suoN .selacol selbairav sed noitasilaitini’l te noitacolla’d essalc al rus tniop el etiusne s n or e f s u o N . n oi t a si li t u’l r e ll i e s n o c é d n e r u o p t u o tr u s ,s e l a b o l g s el b air a v s e d t n e m e t c n i c c u s snorelrap suoN .ecneréfér rap noissi msnart enu tnemeticilpxe rednamed à snordnerppa suon te ruelav rap simsnart tnos stne mugra sel ,tua féd rap ,euq etiusne snorrev suoN .noitaralcéd ruel te noitasilitu ruel ,snoitcnof sed erutircé’l tnanrecnoc selarénég selgèr seuqleuq snor - e n n o d s u o n t e , el p m e xe n u r u s n o it c n o f e d n o i t o n al r et ne sér p s u o v r a p s n or ec n e m m o c s u o N . t u ot u d r u el a v e d ri nr u o f s a p e n • ; sap aresilitu’n no’uq ruelav enu rinruo f • ; ) .. . st ej b o , s er u t c ur t s( eri al a c s n o n e p yt n u’ d t at l u s ér n u r i nr u o f • .. . n o i x e n n o c e n u ri l b a t é ,r ei h c i f n u r ir v u o ,sr u e l a v s e d r e h c i f f a ,sr u e l a v s e d eri l : e l p m e x e r a p ,) l u c l a c e l p m is n u’ u q er t u a( n o i t c a e n u r es il a ér • 98 Les fonctions CHAPITRE 7
  • 126. : e l p m e x e r a p , c e v a n oi t c n o f e d n oi ti n i f é d e m ê m a l ti ar d -neitbo no ; stnemugra sed mon ud eriartibra tcepsa’l neib zetoN .c + xb + 2x noisserpxe’l ed ruelav al tinruo f )c ,b ,x( elpxef euq ellet noitcno f enu tse elpxef euq erid tuep no ,evitini féd nE .liavart nos ed ni f al à noitcno f al arinruo f euq ruelav al esicérp lav nruter noitcurtsni’l ,ni fnE .)p te n ,x stne mugra sed sruelav sel rinevretni sio fetuot tnasiaf( euqissalc noitatce ffa enu tse elpxef noitcno f erton ed etnavius noitcurtsni’L . e h c a tt a y’ s i u q e é tr o p e d e ll e c t e e l a c ol elbairav ed noiton ettec liatéd ne sulp snorenimaxe suon ,niol sulp uep nU .)elitu sap tiaté’n noitcnitsid ettec ,noitcno f elues enu’d éutitsnoc em margorp nu à eria ffa snoiva suon ici’uqsuj emmoc siam( niam noitcno f al à selacol selbairav sed tnos ...y ,p ,n euq sellet selbairav sel euq emêm ed ,elpxef noitcno f al à elacol elbairav enu tse lav euq tid nO .lav eém mon taolf ep yt ed elbairav enu’d nioseb a noitcno f erton ,liavart nos reutce ffe ruop ,euq esicérp ic-elleC float val ; : noitaralcéd enu droba’d tuot ertnocner y no ,noitcnof al ed sproc ua esserétni’s no iS .sr u el av siort tnassinruo f iul ne arelleppa’l no dnauq noitcno f al reutce ffe arved euq liavart el erircéd à tnevres slI .noitcno f al ed sproc ud nies ua’uq ecnatropmi’d tno’n stnemugra sed s mon se L float | type de la "valeur de retour" fexple | nom de la fonction (float x, | premier argument (type float) int b, | deuxième argument (type int) int c) | troisième argument (type int) : ) .. . » r u o t er e d r u el a v « , » n o it c n o f a l e d r u e l a v « ,» tatlusér « tnem meré ffidni e mmon al no( noitcno f al rap einruo f ares iuq ruelav al ed ep yt el euq isnia ,)ep yt + mon( stne mugra’d etsil enu evuort y no ,) elpxef( noitcno f al ed mon el ertuo ,euqsiup niam noitcno f al ed iulec euq érobalé sulp tse etêt-ne’l siaM .)} te {( sedalocca sed rap étimiléd sproc nu te etêt-ne nu riovas à ,niam noitcno f al ed enisiov erutcurts enu e d èss o p i c- el l e C . al tîarappa ,etius as à ,siof ettec ,siaM .colb nu’d émro f lapicnirp em margorp nu ,euqissalc sia mroséd noça f ed ,droba’d tuot snovuort y suoN n oit cn o f e nu’d n o it in i féd noitcnof enu’d noitasilitu’d te noitiniféd ed elpmexE valeur de y : 11.75 valeur de z : 26 /*************** la fonction fexple ****************/ float fexple (float x, int b, int c) { float val ; // déclaration d’une variable "locale" à fexple val = x * x + b * x + c ; return val ; } 1 - Exemple de définition et d’utilisation d’une fonction 99
  • 127. float fexple (float x, int b, int c) { return (x * x + b * x + c) ; } : erèina m ettec ed etnedécérp elpxef noitcno f al rini féd up snoirua suon ,isniA .noisserpxe elleuq etrop mi’n rennoitnem tuep nruter noitcurtsni’ L • .noitcurtsni ettec tnanrecnoc selarénég selgèr seuqleuq icioV 2.2 L’instruction return ! 5 = )y + x( f rap f noitcno f enu zeirini féd en suov seuqitaméhtam ne’uq sulp sap ,)... ,b+a taolf( elpxef taolf emro f al suos elpxef ed etêt-ne nu erircé’d elbissop mi tiares li : slemro f sertèmarap sed sac el snad snes nucua tiarua’n » étrebil « ellet enu’uq zetoN .leppa nos ed srol noitcno f al à esi msnart ares iuq noisserpxe ettec ed ruelav al tse’c ,etpmoc ud tuob ua ; fitce ffe tne mugra em moc noisserpxe elleuq etropmi’n resilitu tuep no ,tnedécérp elpmexe’l renived essial el e mmoC .) » s fitce ffe sertèmarap « erocne uo( » s fitce ffe stnemugra « sed tnem mon es noitcno f al ed )leppa’l( noitasilitu’l ed srol sinruo f stnemugra se L . eri a f t i o d elle’uq ec erircéd ed ,noitcno f al ed sproc ud nies ua ,ertte mrep ed tse elôr rue L .)retemarap lamrof : sialgna’l ed( » sle mro f sertè marap « uo » sle mro f stnemugra « erocne uo , » steu m stne mugra « sed tnemmon es noitcno f al ed etêt-ne’l snad tnarugi f stnemugra sed smon se L 2.1 Arguments muets et arguments effectifs 2 Quelques règles .stneré ffid stne mugra sed ceva sesirper xued à noitcno f erton releppa’d sétnetnoc se mmos suon suon ,icI .trqs euq ellet eini fédérp noitcno f enu’d ellec à elbarapmoc te euqissalc tse elle ,niam noitcno f al ed nies ua elpxef noitcno f erton ed noitasilitu’l à tnauQ . n oi t ar al c é d e ll et e n u’ d e l ôr el rus liatéd ne niol sulp snordneiver suoN .ruoter ed ruelav as ed iulec euq isnia stnemugra ses ed ep yt el esicérp iul elle te ,noitcnof enu tse elpxef euq ruetalipmoc el rinevérp à tres ellE float fexple (float, int, int) ; : noitaralcéd enu evuort y no’uq zetatsnoc suoV .niam noitcno f al tnanetnia m snonimaxE 100 float fexple (float z, int coef, int n) { float val ; // déclaration d’une variable "locale" à fexple val = z * z + coef * z + n ; return val ; } Les fonctions CHAPITRE 7
  • 128. float tirage () : )! eriotaéla erb mon nu tnassinruo f noitcno f enu’d ,elp mexe rap ,riga’s tiarruop li( taolf ep yt ed ruelav enu tna yovner te tnemugra nucua tnavecer en noitcno f enu’d etêt-ne’l icioV .stne mugra’d etsil al snad rennoitne m neir en ed aretnetnoc es no ,tne mugra nucua tioçer en noitcno f enu dnauQ .ruerre’l sap sio fetuot tnoretcetéd en sruetalipmoc sniatreC .nruter noit -curtsni enucua rinetnoc ,epicnirp ne ,tiod en noitcno f ellet enu’d noitini féd al ,tnemellerutaN void sansval (int) ; : noitaralcéd as tiares elleuq iciov te void sansval (int n) : ruelav enucua tnassinruo f en te tni ep yt ed tnemugra nu tnavecer noitcno f enu’d etêt-ne’l iciov ,elpmexe raP .diov élc-tom ud edia’l à ,noitaralcéd as s n a d t e e t ê t- n e’ l s n a d s i o f al à , e si c ér p e l n o ,t at l us ér e d s a p e i o v n er e n n o it c n o f e n u d n a u Q 2.3 Cas des fonctions sans valeur de retour ou sans arguments .) ! er i o t a él a ruelav enu ,noitucéxe’l ed srol ,zerdneitbo suov ,tnetpecca’l sruetalipmoc sniatrec is( tatlus - ér e d s a p t n ass i nr u o f e n n o it c n o f e n u’ d r u e l a v a l r e si li t u’ d t i dr et n i ts e l i , e h c n a v er n E . t a t -lusér nu reluclac euq esohc ertua tia f noitcnof al is euq têrétni’d a’n alec ,udnetne neiB .nu tiudorp ne elle is emêm ,noitcno f enu’d tatlusér el resilitu sap en ed elbissop sruojuot tse lI . n oi sre v no c e d s n oi t c ur ts ni s e d e c al p n e t n e m e u qi t a m ot u a ar tt e m r u et a li p m o c el , e t ê t- n e’ l s n a d ér al c é d été a li’uq let tatlusér ud ep yt ud tneré f fid tse nruter snad tnarugi f noisserpxe’l ed ep yt el iS • . n o it c n o f a l e d ni f a l à r u e t a li p m o c el r a p tnemeuqita motua ecalp ne sim srola tnaté ruoter el ,nruter noitcurtsni enucua retrop moc en ,sac ec snad ,issua tuep elle sia m ; noitcno f al ed noitucéxe’l tne melpmis tnapmorretni , nruter snoitcurtsni srueisulp ed resopsid srola tuep elle : ruelav enucua rinruo f en tuep noitcno f enu’uq snorrev suoN .)niam no itc n o f al , ici , ec nerr uc co’ l ne( e éleppa a’ l iuq noitcno f al snad tnanever ne noitcno f al ed noitucéxe’l tp morretni elle ,spmet emêm ne ,siam ,tatlusér ud ruelav al tini féd nruter noitcurtsni’l tnemelues non euq neib zetoN n o is -s erp x e snas double absom (double u, double v) { double s ; s = a + b ; if (s>0) return (s) ; else return (-s) } : elp me xe er tu a tec snad emmoc ,noitcno f enu snad sesirper srueisulp à ertîarappa tuep nruter noitcurtsni’ L • 2 - Quelques règles 101
  • 129. . é t i c i l p m i s e d i c u o s r a p , i c i’ u q s u j e é s i l i t u s n o v a s u o n e u q e é i f i l p m is e mr o f a l t n e t p e c c a sr u e t a l i p m o c s e d tr a p u l p a l , e p i c n ir p n E . n i a m u d n o i t u c é x e’ l e d n i f a l à return 0 ; : n o i t c ur t s n i’ l r er t n o c n er t i ar v e d n o t e int main () : ertê cnod tiarved niam ed etêt-ne’L .emmargorp ud tne meluoréd nob nu reuqidni ruop 0 ed riga’s tiarved lI .noitam margorp ed tnemennorivne’l rap eésilitu ertê’d elbitpecsus ruoter ed ruelav enu rinruof tiarved niam noitcnof al ,rueugir etuot nE e uqrameR #include <iostream> using namespace std ; main() { void affiche_carres (int, int) ; // prototype de affiche_carres void erreur () ; // prototype de erreur int debut = 5, fin = 10 ; ..... affiche_carres (debut, fin) ; ..... if (...) erreur () ; } void affiche_carres (int d, int f) { int i ; for (i=d ; i<=f ; i++) cout << i << " a pour carré " << i*i << "n" ; } void erreur () { cout << "*** erreur ***n" ; } .)snoitcno f xued ed sulp tnanetnoc ecruos e mmargorp ed elpmexe rei merp erton ed tiga’s li( ruerre’d egasse m nu rehci ffa’d etnetnoc es iuq ruerre noitcno f enu te ,stne mugra ne seinruo f setimil xued ertne sirp moc sreitne serb mon sed sérrac sel ehci ffa iuq serrac_ehciffa noitcno f enu snossini féd y suoN .seéuqové snoitautis sed xued tnartsulli elpmexe nu icioV void message () ; : ar e s n oi t ar al c é d as t e void message () : e mr o f al e d ares e tê t- ne n os ,s ac e c s n aD .ruoter ed ruelav in tne mugra in tnadéssop en noitcno f enu resilaér ed ehcêp me’n neir ,nifnE float tirage () ; : )! elugriv-tniop ud ecnesérp al rap euq erè ffid en elle( enisiov sèrt tiares noitaralcéd aS 102 Les fonctions CHAPITRE 7
  • 130. -rus ed ,tE .ici’uqsuj tia f snova suon euq ec tse’c ; tnasilitu’l noitcno f etuot ed snoitaralcéd sed rueirétni’l à noitcno f enu’d noitaralcéd al recalp à etsisnoc ellerutan sulp al ecnadnet a L 3.2 Où placer la déclaration d’une fonction float fexple (float x, int b, int c) ; : isnia eéralcéd ertê up tiarua elpxef noitcno f erton ,1 ehpargarap ud elp mexe erton snaD .euqita motua noitaérc al retilica f ne tuep iuq ec ,)sèrp elugriv-tniop ua( noitcnof al ed etêt-ne’l à seuqitnedi tnos iuq sep ytotorp sed erircé riovuop ed têrétni lues ruop a étilib -issop ettec ; seriartibra tne melatot srola tnos sleuqsel ,stne mugra’d s mon sed rerugi f eria f ed ,ep ytotorp nu snad ,elbissop tse lI .epytotorp ed mon el etrop noitcno f enu’d noitaralcéd a L .++C ed eérapés noitalipmoc ed sétilibissop sel tnesirotua’l em moc ecruos sreihci f srueisulp ne retalcé’l à emê m uo ecruos emmargorp ertov rei fidom à énema ze yos suov tnemerueirétlu’uq elbissop tiaf à tuot tse li ,te ffe ne ; sac ec snad elpxef ed noitaralcéd al erttemo’d snolliesnocéd suov suon ,snio mnaéN .elpxef noitcno f al àjéd tîannoc ruetalipmoc el ,niam noitcno f al tiudart li’uqsrol ,rac evit -atluca f tse )niam snad ,ici( elpxef noitcno f al ed noitaralcéd al ,sac ec snad ,rueugir etuot nE float fexple (float x, int b, int c) { .... } main() { float fexple (float, int, int) ; // déclaration de la fonction fexple ..... y = fexple (x, n, p) ; ..... } : esrevni’l eria f neib issua tuot up snoirua suon siaM .niam noitcno f al ed ellec sèrpa elpxef noitcno f al ed noitini féd al inruof snoiva suon ,1 ehpargarap ud elp mexe erton snaD 3.1 Les différentes façons de déclarer une fonction 3 Les fonctions et leurs déclarations .ediv etsil enu ednamed ++C ùo àl ,diov tom el esilitu C : tne mugra snas snoit - c n o f s e d s a c el s n a d ets i x e é ti li b it a p m o c n i el u e s e n U . C n e )s e é l li es n o c e m ê m t e( s e di l a v tnetser ++C rap seé yolp me selgèr sel siaM .)tni nu’d tiga’s li’s( ruoter ed ruelav al ed iulec uo )sep yt sruel tneios euq sleuq( stnemugra sed ep yt el erttemo tuep no ; snoitcno f ed snoitaralcéd sel snad ++C euq )trot à( tnarélot sulp puocuaeb tse C egagnal e L C nE 3 - Les fonctions et leurs déclarations 103
  • 131. #include <iostream> using namespace std ; : elpmexe tec ze yoV .tneluocéd ne iuq snoitati mil sel te ,tnemetcaxe ei fingis alec euq ec ici riov ed snosoporp suov suoN .leppa nos ed tnemom ua noitcno f al à si msnart tneiaté stnemugra sed sruelav sel euq erid ed sétnetnoc sem mos suon suon ,ici’uqsuJ 4 Transmission des arguments par valeur .)etnadargéd noisrevnoc( tni ne noisrevnoc as te )taolf ne( x*2 noisserpxe’l ed ruelav al ed noitaulavé’l – ; taolf ne noisrevnoc as te )tni ne( 1+n noisserpxe’l ed ruelav al ed noitaulavé’l – : r a p t i u d ar t ar e s fexple (n+1, 2*x, p) : euq let leppa nu ,1 ehpargarap ud elpxef noitcno f erton ceva ,elpmexe raP .ep ytotorp el snad éuqidni ep yt el snad s fitce f fe stnemugra sed sruelav s e d s n o isr e v n o c s e l l e u t n e v é’ d e c al p n e t e m l i , n o it c n o f a l e d l e p p a n u er t n o c n er l i’ u qsr o L 2 .ruerre enu elangis li ,eriartnoc sac el snaD .ep ytotorp el snad iniféd ep yt el neib tno steu m stnemugra sel euq erussa’s li ,)noitaralcéd al sèrpa u o t n a v a t i os e c e u q( e cr u os r e i h c i f e m ê m e l s n a d e v u ort es n o it c n o f al e d n oi t i n i f é d a l i S 1 .s e t n er é f fi d t n e m -etèlp moc snoça f xued ed ,ruetalipmoc el rap eésilitu ertê tuep noitcno f enu’d noitaralcéd a L 3.3 Contrôles et conversions induites par le prototype .1f ed te niam ed siof al à eunnoc tse elpxef ed noitaralcéd al float fexple (float, int, int) ; main() { ..... } void f1 (...) { ..... } : ceva ,elpmexe raP .noitcnof erèimerp al ed noitiniféd al tnava ertîarappa tnasia f sel ne ,selabolg snoitaralcéd sed resilitu’d elbissop tnemelagé tse li siaM .t i a s si ar a p p a e ll e ù o n o it c n o f a l à e é ti mi l t i a t é e é tr o p a l t n o d e l a c ol n o it ar a l c é d e n u à eri a f f a s n o i v a s u o n ,s n o it i d n o c s e c s n a D ! e m ê m -elle niam noitcno f al tiaté ecirtasilitu noitcnof al ,stnedécérp selpmexe son suot snad ,tîorc 104 Les fonctions CHAPITRE 7
  • 132. : e u q e l l e t ) ! e é l l i e s n o c é d t n e m e tr o f( n o i t - a u t is e n u s n a d é t p e c x e , e c n a tr o p m i ’ d u e p e d ts e i c e c , l ar é n é g n E . l e p p a n os e d s r o l n o i t -c no f enu’d st nem ugra stneré f fid sed noitaula vé’l ruop erdr o nucua es op mi’n e mro n a L 2 .eulavl sed tnemelp mis sia m ,snoisserpxe sed ertê sulp tnorruop en s fitce ffe stne mugra sel ,ecneré fér rap noissimsnart al ceva’uq snorrev suon ,sruellia’d ,tE .euqnocleuq noisserpxe enu’d e mro f al erdnerp tnevuep s fitce ffe stnem -ugra sel euq » ruelav rap « tiaf es stnemugra sed noissi msnart al euq ecrap neib tse’C 1 se uqrameR .egnahce noitcno f erton tne metcerroc resilaér ed arttem -rep ecneré fér rap noissi msnart enu’d eticilpxe xiohc el ,tôtneib riov el snolla suon em moC . + + C r a p t u a f é d r a p ési li t u e d o m el e u q ts e’ n r u el a v r a p n o iss i ms n art e d e d o m e c ,t i a f n E . ét at sn o c ta tl us ér el e uqi lp xe i uq ec ts e’C .seéi fido m été sap ,selle à tnauq ,tno’n p te n selbairav sed sruelav sel euq etros ed ,egnahce noitcno f al élliavart a’uq seipoc sec rus tnemevitce ffe tse’C .b te a sém mon stne mecalpme sed snad egnahce noitcno f al snad tne melacol seéipocer été tno sruelav sec euq erid tuep nO .p te n snoisserpxe sed ruelav al ed noissimsnart ue a y li ,egnahce ed leppa’l ed srol ,te ffe nE .p te n s fitce ffe stnemugra sel rus etsisbus en egnahcé tec ed ecart enucua ,lapicnirp e mmarg -orp el snad unever tse no’l euqsrol ,siaM .sruelav xued sec ed egnahcé nu eutce ffe ellE .b te a steum stne mugra xued ses à tnadnopserroc sruelav xued tioçer egnahce noitcno f a L stnemugra sed ruelav rap noissimsnart al ed secneuqésnoC avant appel début echange fin echange apres appel : : : : 10 10 20 10 20 20 10 20 main() { void echange (int a, int int n=10, p=20 ; cout << "avant appel : echange (n, p) ; cout << "apres appel : } void echange (int a, int b) { int c ; cout << "début echange : c = a ; a = b ; b = c ; cout << "fin echange : } " << a << " " << b << "n" ; "<< a << " " << b << "n" ; " << n << " " << p << "n" ; " << n << " " << p << "n" ; b) ; 4 - Transmission des arguments par valeur 105
  • 133. avant appel : 10 20 début echange : 10 20 #include <iostream> using namespace std ; main() { void echange (int &, int &) ; int n=10, p=20 ; cout << "avant appel : " << n << " " << echange (n, p) ; // attention, ici cout << "apres appel : " << n << " " << } void echange (int & a, int & b) { int c ; cout << "debut echange : " << a << " " << c = a ; a = b ; b = c ; cout << "fin echange : " << a << " " << } b << "n" ; b << "n" ; p << "n" ; pas de &n, &p p << "n" ; : e g n a h c e n oi t c n o f et n e d é c ér p ert o n s na d e c ner é fér ra p no iss i m sn art e nu r esi l it u t n e m m o c er tn o m s uo sse d- ic e m m arg or p e L 5.1 Exemple de transmission d’argument par référence .ruoter ed ruelav al ruop noitasilitu nos rus reilucitrap ne ,ecneré fér ed noiton ettec rus élliatéd sulp tniop nu snore f suon ,)2.31 ehpargarap ua( etius al raP .elapicnirp noitac -ilppa nos niol ed eutitsnoc iuq ec ,stne mugra’d noissi msnart al ruop ecneré fér ed noiton ettec resilitu tnem moc riov rap snorecne mmoc suoN .ruelav as sulp non te ,esserda nos rerédisnoc à tneiver elbairav enu’d ecneré fér al rerédisnoc : esserda’d ellec à dnopserroc elleuqal ,ecner -éfér ed noiton al ed esopsid ++C ,rO .tne mugra nu’d ruelav al rei fidom ed noitcno f enu à sap t e mr e p e n n oi s si m s n ar t e d e d o m e c , e g n a h c e n o i t c n o f a l c e v a é t a t s n o c s n o v a ’ l s u o n e m m o C .ruelav rap simsnart tnos noitcno f enu’d stne mugra sel ,tua féd rap ,euq riov ed snonev suoN 5 Transmission par référence . e c n er é f é r r a p n o i s s i m s n ar t e n u à r ir u o c er ar d u a f l i , er o c n e à l , ù o t e l a t n e m a d n o f er è v a’ s l i ù o s e c n a t s n o c r i c s e d e ts i x e l i ’ u q dr a t s u l p s n orr e v s u o n s i a m , n i d o n a r e l b m e s t u e p t n i o p e C . e t n a l e p p a n o i t c n o f al snad eéleppa noitcno f al e d eipocer enu’d tejbo’l tia f elle’uq eri d-à-tse’c ,r uela v rap esi msnart iss ua elle tse )etsi xe elle’uqsrol( ruoter e d ruelav al ,r ue ugir etu ot nE 3 106 int i = 10 ; ... f (i++, i) ; // i++ peut se trouver caclulé avant i - l’appel sera : f (10, 11) // ou après i - l’appel sera : f (10, 10) Les fonctions CHAPITRE 7
  • 134. . e m ê m- e ll e n oi t c n o f al e d eé u qs ir s ul p te et ac il é d s ul p n oi ta m mar g or p e n u’ d ei tra p ert n oc n e , t n ess iar a psi d t n e m -medécérp séuqové seuqsir sel : sesserda sed tnemeticilpxe erttemsnart arved noitcno f al ed ruetasilitu’l ,sac ec snaD .sruetniop ed siaib el rap ,ecneré fér rap noissimsnart enu » relu mis « ed elbissop tnemelagé tse li’uq )8 ertipahc ud 5 ehpargarap ua( snorrev suoN e uqrameR .ruelav al ed eipoc enu’uq si msnart riova’n tiasnep li t n o d e l b a ir a v e n u r ei f i d o m e d c n o d e u qs ir l I .)s é t il i biss o p x u e d s e d ert u a’l u o e n u’ l r e n g is é d t na v u o p n o it at o n e m ê m al( t ne m u gra n u’ d e sser da’ l u o r ue la v al ,e t p m o c u d t u o b ua , te m -snart li’s sulp tias en ruetasilitu’l ,noitcno f enu elleppa li’uqsrol ,te ffe nE .sériséd non » drob ed ste ffe «’d seuqsir sel tîorcca ecneré fér rap noissimsnart al ed iolp me’l ,eitrapertnoc nE .) et êt- n e re i hc i f n u’d l aré n ég ne ardneivorp ep ytotorp ec ,sruellia’d( noitcno f al ed ep ytotorp ud noitaralcéd al ed uaevin ua tse’n ec is ,etiusne reicuos ne’s à sulp a’n noitcno f al ed ruetasilitu’L .eénrecnoc noit -cno f al ed erutircé’l ed tne mo m ua tia f tse ecneréfér rap noissi msnart ed edom ud xiohc e L 5.2.1 Induction de risques indirects .ruelav rap noissi msnart al ed sac el snad sap tneiatsixe’n iuq secneuqésnoc ed erb mon niatrec nu enîartne tne mugra nu’d ecneré fér rap noissimsnart a L 5.2 Propriétés de la transmission par référence d’un argument .eganolc ed etid eéirporppa edohtém enu tnasilitu ne tejbo nu’d eipoc enu tnem -eticilpxe reérc ed elbissop tnadnepec etser lI .ecneré fér rap si msnart tnos stejbo sel euq sidnat ,ruelav rap sesimsnart tnos esab ed ep yt nu’d selbairav sel ,tnemésicérp sulP .ruem -margorp ua etnerapsnart tnemerèitne tse elle sia m ,avaJ ne etsixe ecneré fér ed noiton a L avaJ n E . e ss er d a’ l t n e m e vi t c e f f e u ç er ar u a n oi t c n o f al t n o d el b air a v e tt e c rengiséd ruop a elob m ys el tnemelp mis esilitu no ,egnahce noitcno f al snad ,euq neib zetoN .ecneré fér rap esi msnart tni ep yt ed noitamro fni enu tse a euq eifingis a & tni noitaton al void echange (int & a, int & b) ; : n o i t c u rt s n i ’l s n a D ++C ne ecneréfér rap tnemugra’d noissimsnart al ed noitasilitU fin echange après appel : 20 10 : 20 10 5 - Transmission par référence 107
  • 135. .snes nu neib arua euq ellet noitaton enu’uq ,ehcnaver ne ,snorrev suon ,sruetniop sel snoreiduté suon dnauQ .exif esserda enu etnesérper ecneréfér enu ,noitiniféd rap ,euqsiup eésilitu ertê’d nosiar enucua a’n elle ; » nu à etnatsnoc ecneré fér « tiareifingis noitaton aL .2 .etnatsnoc enu rus relliavart ed etêt-ne nos snad uvérp tnemevitceffe a noitcnof al is eésirotua ares noissimsnart ellet enu’uq 4.2.5 ehpargarap ua tnadnepec arrev nO .1 tn i * tsnoc tni tn i & tsnoc const int c = 15 ; ..... fct1 (3) ; // correct ici fct1 (c) ; // correct ici stnavius sleppa se L . etnatsnoc enu à ecneréfér enu à dnopserroc 2 & tn i : st cerr oc t n ore s noitaralcéd a L t sno c void fct1 (const int &) ; : e p yt o t or p e d n oi tc n o f e n u s n oré d is n o c ,e hc n a ver n E 5.2.4 Cas d’un argument muet constant . ruelav al rei fidom neib sèrt tiarruop elle tnod ) uo 3( etnatsnoc enu’d esserda’l à rinruo f à tneiariudnoc sli ,sétpecca tneiaté stnedécérp sleppa sel is ,tef fe nE .seugigol tnos su fer seC c 1 t cf const int c = 15 ; ..... fct (c) ; // incorrect : f ne peut pas modifier une constante : r u o p e m ê m e d ari n e l I tn i // incorrect : f ne peut pas modifier une constante :) fct (3) ; e p y t e d t n a t é ( e t n a vi us e mr o f a l e d l e p p a n u sr o l a ar es u f er r u et al i p m o c e L n : ep ytotorp ruop tia void fct (int &) ; t cf n oi tc n o f e n u’ u q s n os o p p u S 5.2.3 Cas d’un argument effectif constant .selbissop tnores snoisrevnoc sed ,sac ec snad ,euq te elgèr ettec à noitpecxe tnore f stnatsnoc steum stnemugra sel euq 4.2.5 ehpargarap ua tnadnepec snorrev suoN .teum tnemugra’l ruop uvérp epyt ud eulavl enu ertê’d fitceffe tnemugra nu à cnod esopmi ecneréfér rap noissimsnart aL ...evuort y’s iuq ruelav al ed noisrevnoc euqnocleuq enu reutce ffe’d elbissop sulp tse’n li’uq ios ed av li ,rei fido m tnemelleutnevé tuep elle’uq reitne nu tnanetnoc em moc erèdisnoc elle’uq tne mecalpme nu’d esserda’l tnemetcerid tioçer noitcno f al ùo tnemo m ud ritrap À void f (int & n) ; // f reçoit la référence à un entier float x ; ..... f(x) ; // appel illégal : elpmexe tec ze yoV .tnessiarapsid ruelav rap noissi msnart ed sac ne seuvérp nois -revnoc ed sétilibissop sel ,ecneré fér rap noissi msnart enu uvérp a noitcno f enu’uq srol sèD 108 5.2.2 Absence de conversion Les fonctions CHAPITRE 7
  • 136. .erialacs epyt nu’d setnatsnoc sel ruop euq etiaf tse’n eipoc al ,tnemelarénéG .eipoc enu non uo eriaf ne’d erbil noitatnemélpmi’l essial emron al ,epyt emêm ud etnatsnoc enu’d sac el snaD .1 : sèrpa ic emmargorp ed elpmexe’l ze yoV 6.1 Exemple d’utilisation de variables globales .es sa lc e tt ec e d se d o ht é m )selues( sel ruop » labolg « tne metrop moc nu tnorua seénnod ed spmahc sel ,essalc enu snad • ; te jbo e t xe t no c n u snad ecnatrop mi nos etuot ardnerp elleuqal ,euqiman yd noitacolla’d essalc te euqitats noitac -olla’d essalc ertne ecneré f fid al erdnerp moc xueim ed te mrep elabolg elbairav ed noiton al • ; tnaruocer y edoc ud rertnocner ed zeuqsir suov • : rac ici tnadnepec snoretnesérp al suov suoN .mumixa m ua retivé arduaf li’uq eéuqsir euqitarp enu’d àl tnad -nepec tiga’s lI .selabolg ed srola ei filauq no’uq senum moc selbairav sed regatrap tnevuep )niam lapicnirp emmargorp el udnetne neib ,tnod( snoitcno f srueisulp ,++C ne ,eiroéht nE .ruoter ed ruelav enu’d noitarépucér al à te stnemugra’d noissimsnart al à ecârg snoitcno f setneré ffid ertne snoita mro fni sed regnahcé tne mmoc uv snova suoN 6 Les variables globales . te jbo nu ares noitseuq ne tnemugra’l ùo sac el snad étiuca’d sulp erocne ardnerp euqra mer etteC . u d n e tt a i ul e c e d t n er é f f i d e p y t n u’ d t e t n ats n o c ts e r e i nr e d e c e u q sr o l s è d ) n o isr e v n o c e n u’ d e é d é c ér p( f it c e f f e t n e m u gr a’l e d e i p o c e n u’ d noitaérc al esirotua no ,tîorcrus ed ,siaM .noitcno f al ed nies ua énrecnoc tnemugra’l ed ecnat -s n o c a l r e i fir e v à r u et a li p m o c e l e n è m a al e c , d n e tt a y’s n o e m m o c ,s e tr e C .s e c n e u q é s n o c e d edruol tse ecneré fér rap si msnart teu m tne mugra nu ruop e d n o it a s il it u’ l , e v it i ni f é d n E 1 tsno c void fct1 (const int &) ; float x ; ..... fct1 (x) ; // correct : f reçoit la référence à une variable temporaire // contenant le résultat de la conversion de x en int : elp mexe raP . ne ed noisrevnoc al ed tatlusér el arvecer iuq ) ep yt ed( eriaropmet elbairav enu’d noitaérc a y li ,sac ec snad ,te ffe nE . ed ep yt el tios euq leuq étpecca ares )euqnocleuq noisserpxe enu tnangiséd ( let leppa nu ,tse sulp iuQ . s u l p c n o d e tsi x e’ n tnem medécérp éuqové noitaci fidom ed euqsir el ; tnatsnoc ed esohc euqleuq à ecneréfér enu riovecer ed uvérp a euq tia f el rap sio f ettec ei fitsuj es snoitcurtsni sec ed noitatpecca’L tni p xe tn i p xe p xe )p xe ( 1t cf t cf 6 - Les variables globales 109
  • 137. main() { .... } int n ; float x ; : s n oi tc ur ts ni se c ,e lp me x e rap , ze y o v , is n i A .)sio f elues enu ne élip moc tse emmargorp ud elb mesne’l ùo sac ua snoti mil suon suon ,tnatsni’l ruop( noitaralcéd ruel tius iuq ecruos e mmargorp ud eitrap al à eéti mil tse )étidilav ed ecapse ruel erocne uo( eétrop ruel euq tid nO .noitaralcéd ruel tnavius ecruos em margorp ud eitrap al snad euq ruetalipmoc ud seunnoc tnos en selabolg selbairav se L 6.2 La portée des variables globales .s e éi f i d o m ert ê’ d s el b it p e cs us s e l b -airav selues sel tnos selleuq tne merialc euqidni noitcnof al ed leppa’l ,sac ec snaD .)drat sulp arrev el no emmoc ,ruetniop rap tios ,eria f el à sirppa snova suon emmoc ,ecneré fér rap tios( tne mugra ne esserda’l erttemsnart ne’d xueiciduj sulp puocuaeb tse li ,elbairav enu’d ruelav al ei fidom noitcno f enu’uq etiahuos no’uqsro L .noitcno f elleuq etrop mi’n rap tnemesueidisni eéi fidom ertê tuep elabolg elbairav etuot ,te ffe nE .sétimil sac sed snad euq selabolg selbairav sel resilitu’n à reticni suov tiod iuq euqra mer ed erneg ec tnemésicérp tse’C .reifidom al ed ehcêpme’l en neir sia m i ed ruelav al resilitu’d etnetnoc es tsimtpo noitcno f al ici’uq zetoN .tsimitpo noitcno f al rap seésilitu tnevuort es iuq sruelav sed i à etce ffa lapicnirp e mmargorp el ,ici ,isniA .ecruos e mmargorp emêm ud nies ua etius al rap seélip moc tnores iuq snoitcno f sel setuot ed eunnoc srola tse ellE .niam noitcno f al ed srohed ne eéralcéd été a i elbairav a L elabolg elbairav ed noitasilitu’d elpmexE 110 il il il il il fait fait fait fait fait beau beau beau beau beau 1 2 3 4 5 fois fois fois fois fois #include <iostream> using namespace std ; int i ; main() { void optimist (void) ; for (i=1 ; i<=5 ; i++) optimist() ; } void optimist(void) { cout << "il fait beau " << i << " foisn" ; } Les fonctions CHAPITRE 7
  • 138. .). .. st ej b o , s erut curt s ,xuae lbat ( sta gér ga s el ru o p t e sru et ni op se l ruo p e é si c ér p ar e s » oré z « e d n oit on ett eC .2 .é ra p é s et êt - n e r ei h ci f nu s na d uO .1 .s n o i t c n o f s ert u a’ d à s e l a c ol s e l b a ir a v s ert u a’ d ceva uo mon e mêm ed selabolg selbairav sed ceva neil nucua tno’n selacol selbairav se L . no itc no f ette c à eét i mi l cn od ts e eét ro p r ue L .se éra lc é d tn os selle ùo noitcno f al ed rueirétni’l à’uq ruetalip moc ud seunnoc tnos en selacol selbairav se L 7.1 La portée des variables locales . s e ér a l c é d t n o s s el l e e ll e u q a l s n a d noitcno f al à selacol setid tnos selbairav sellet eD .)niam ertê tiavuop iuq( noitcno f enu’d nies ua seini féd tneiaté selle ,tnemésicérp sulP .selabolg selbairav sed sap tneiaté’n ici’uqsuj seért -nocner snoiva suon euq selbairav sel ,tnedécérp ehpargarap ud elpmexe’l ed noitpecxe’l À 7 Les variables locales .noitaralcéd ruel ed tnemo m ua elaitini ruelav enu tnemeticilpxe zeubirtta ruel suov is ,rûs neib , fuas ,e mmarg -orp ud noitucéxe’l ed tubéd el tnava , oréz à seésilaitini tneiov es selbairav sec ,sulp eD .euqitats noitacolla’d e s s a l c al e d e itr a p t n o f s e l l e’ u q t n a s i d n e a l e c t i u d art n O . s n e il e d n o it i d é’ l e d sr o l s i ni f é d t n e m et i a fr a p t n os er i o m é m n e s t n e m e c a l p m e sr u e L .t n ess i ar a p p a s e ll e l e u q e l s n a d e m m ar g -orp ud noitucéxe’l etuot tnadnep tnetsixe selabolg selbairav sel ,elarénég erèinam enu’D 2 6.3 La classe d’allocation des variables globales .selabolg selbairav sec setuot ed snoitar - a l c é d s e l e m m ar g or p e d t u b é d n e t n a p u or g er n e s e d o c s e d é ti li b is il a l r e i g él i vir p r u o p ar e g -narra’s no ,selabolg selbairav sed à riruocer tnemulosba tua f li’s ,euqitarp nE .isnia tne merar aredécorp no ,snoitcno f xua rueirétxe tios iuq ecruos emmargorp ud tiordne leuq etropmi’n à selabolg selbairav sed reralcéd ed tne mevitce ffe elbissop tios li’uq neib ,euqitarp nE .lap -icnirp em margorp ua sap sia m ,2tcf te 1tcf snoitcno f xua selbissecca tnos x te n selbairav se L 1 fct1 (...) { .... } fct2 (...) { .... } 7 - Les variables locales 111
  • 139. ; secneré fér sruel uo stnemugra sed sruelav sel – ; r u ot er e d r u e l a v a l – : ruop elip al rus ecapse’l ed euolla no ,noit -cno f enu’d leppa’l ed sro L .ëugitnoc eriomém ed enoz enu snad eélu mis )tuO tsriF ,nI tsriF( OFIF ep yt ed » elip « enu seuqitamotua selbairav sel ruop esilitu no ,tnemelarénéG seriatnemélpmoc snoitamrofnI . n oi t -cnof al ed ellec à tnemelagé dnopserroc eiv ed eérud rue L .selacol selbairav sel euq erèinam emêm al ed seétiart tnos noitcno f enu à stnemugra ne sesimsnart sruelav sel ,trap ertua’D . s el b air a v s e l l e t e d s n oi t a s i l a it i ni s e ll e ut n e v é s e l rus )8 ehpargarap( niol sulp uep nu snordneiver suoN .) » setnena mér « sap tnos en selle’uq issua tid no( tnavius ua leppa nu’d seévresnoc sap tnos en selacol selbairav sed sruelav sel euq tse noitacolla’d edom ec ed etaidém mi ecneuqésnoc al euq reton ed tnatrop mi tse li ,tnat -s n i’l r u o P . er i o m é m a l e d n o it s e g e d e d o m e c r u s l i a t é d n e s ul p ri n e v er e d n o is a c c o’ l s n or u a suoN .euqitamotua tse selbairav sec ed noitacolla’d essalc al euq tnasid ne alec tiudart nO . tn a v -ius ua leppa nu’d tneré ffid tnemelarénég cnod ares lI .eitros euqahc à érébil te noitcno f al s n a d e ér t n e e u q a h c à é u ol l a t s e r u e l eri o m é m e c a ps e l e v u o n n U . s e l a b ol g s el b a ir a v s e d x u e c e m m o c et n e n a mr e p er è i n a m e d s i ni f é d s a p t n os e n s t n e m e c al p m e sr u el ,t n e m é si c ér p s u l P .t n er u g i f s el l e e ll e u q a l s n a d n oi t c n o f al ed noitucéxe enu’d ellec à eéti mil eiv ed eérud enu tno selacol selbairav sel ,tua féd raP 7.2 Les variables locales automatiques .n:: tna mmon al ne )::( » eétrop ed noitulosér ed « tid ruetarépo’l esilitu no ,n elabolg elbairav al 1tcf snad resilitu etiahuos no’l is ,rueugir etuot nE .n elabolg elbairav al ceva troppar nucua a’n 1tcf ed n elbairav al ,emêm eD .1tcf ed p elbairav al ceva troppar nucua a’n niam ed p elbairav a L int n ; main() { int p ; .... } fct1 () { int p ; int n ; } : elpmexe tec ze yoV 112 Les fonctions CHAPITRE 7
  • 140. .8 à 4 ed tnalla soré mun sed étrop tneiarua sleppa son ,sac ec snaD static int i = 3 ; : elp mexe rap ,i tnemeticilpxe resilaitini u p s n o ir u a s u o n e u q z e t o N . : )euqitats essalc ed issua tnos selleuqsel( selabolg selbairav sel ruop e mmoc ,tef fe nE .ellun tse ruelav as leppa reimerp ua’uq eton no ,sulp eD .leppa euqahc à 1 ed esserg -orp ruelav as euq neib etatsnoc nO . » euqitats « essalc ed eéralcéd été a elacol elbairav a L oré z à s eé si lait ini ,t ua f éd rap ,t no s euq itat s essa lc e d se lac ol s el ba irav s el i euqitats elacol elbairav ed noitasilitu’d elpmexE appel appel appel appel appel numéro numéro numéro numéro numéro : : : : : 1 2 3 4 5 #include <iostream> using namespace std ; main() { void fct() ; int n ; for ( n=1 ; n<=5 ; n++) fct() ; } void fct() { static int i ; i++ ; cout << "appel numéro : " << i << "n" ; } : elp mexe nu iciov nE .citats élc-tom ud edia’l à reralcéd al ed alec ruop ti ffus lI .tnavius ua leppa nu’d ruelav as isnia revresnoc ed te elacol elbairav enu à tnena mrep tnemecalpme nu reubirtta’d rednamed ed elbissop tse lI 7.3 Les variables locales statiques . . . » e t n e n a m ér « t s e e l a c o l e l b a ir a v e n u’ u q , tr o t à , er i or c t u e p n o , e l b a ir a v er t u a e n u à é u o l l a é t é t i a l i’ u q t n a v a e d è c c a y n o , n o i t a m m a r g or p e d r u err e e n u r a p , is euq etr os ed ,r uela v as tne melarénég edrag érébil tne mecalp me’l ; ruetniop ec ed ruelav a l e d n o i t a c i f i d o m e l p m is e n u r a p t i a f es t n e m e c a l p m e n u’ d n o i t a r é b i l a L . e l b i n o ps i d t n e m e c a l p m e r e i m er p e l t n a n g i s é d r u e t n i o p n u ’ d e d i a ’ l à t i a f e s e l i p a l e d n o i t s e g a L . é s i l it u a r u a’ l e l l e’ u q s èr p a , e t n a l e p p a n o i t c n o f a l r a p ér é b i l a r e s i u q r u o t e r e d r u e l a v a l e d i u l e c s i mr o h , e m ê m - e l l e n o i t c n o f a l r a p s ér é b i l t n o s s t n e m e c a l p m e s t n er é f f i d s e c , n o i t c n o f a l e d e i tr o s a l e d sr o L . n oi t c n o f al à s e l a c ol s e l b a ir a v s e t n er é f f i d s el – 7 - Les variables locales 113
  • 141. for (int i=1, j=1 ; i<4 ; i++) cout << i+j ; : snad em moc ,eticilpxe colb nucua tneitnoc en rof noitcurtsni’l is emêm ,euq areton nO for (int i=2, j=4 ; ... ; ...) { // i et j sont considérées comme deux variables locales à ce bloc } : elp mexe rap ,rof noitcurt -sni enu snad noitaralcéd enu reutce ffe’d elbissop tiaté li’uq uv àjéd snova suon ,trap ertua’D .s uss e d-i c f noitcnof erton à enretni colb emèixued ud sac el tse’C .rof ,fi em moc eérutcurts noitcurtsni euqnocleuq enu’d tne mmadnepédni ,colb nu tne melleici fitra reérc tuep no’uq zetoN } ..... { int p ; ..... } ..... // p n’est connue que dans ce bloc ; elle est allouée ici // et n’a aucun rapport avec la variable p ci-dessus // et elle sera désallouée ici } void f() { int n ; ..... for (...) { int p ; int n ; ..... // p n’est connue que dans le bloc de for // n masque la variable n de portée "englobante" // attention, on ne peut pas utiliser ::n ici qui ..... // désignerait une variable globale (inexistante ici) // n est accessible de tout le bloc constituant f .tnabolgne colb nu’d elacol elbairav enu’uq mon e mê m el etrop elacol elbairav enu’uq simrep sap tse’n lI .eitros al à tîarapsid li te colb el snad eértne’l à éuolla tse tne m - e c al p m e r u el ; c o l b e c à e ét i m il t n e m el l er u t a n t u ot sr ol a ts e e é tr o p r u e L . c ol b n u à s el a c o l selbairav sed reralcéd ed te mrep suov ++C ,tnemetcniccus éuqové àjéd snoiva’l suon e mmoC 7.4 Variables locales à un bloc .)! étiahuos e mmoc eétnemércni sap tiares en ,ici ,sio fetuot iuq( i ed ecnenamér eniatrec enu’d noisulli’l tnannod ,ruelav e mê m al sruojuot tiarehci ffa no’uq etros ed ,elip al rus i à éuolla évuort tiares es iuq tnemecalpme e mêm el sruojuot tse’c ,ici ,sulp eD . er i ot a é l a é t é c n o d t i ar u a r u e l a v a S . e és il ai ti n i n o n , t î or cr u s e d , t e e t n e n a m ér n o n , e ll e us u elacol elbairav enu’d tiga tiares es li ,citats tubirtta’l ceva eéralcéd été sap tiava’n i iS e uqrameR . ed elbairav al ceva troppar nucua srola tiarua’n iuq eé m - mon elabolg elbairav enu rini féd snoirruop suon ,elpmexe erton snad ,isniA .einiféd tse elle elleuqal snad noitcno f al à eétimil sruojuot etser elbairav ellet enu’d eétrop al ,te ffe nE .elab -olg elbairav enu ceva euqitats essalc ed elacol elbairav enu erdno fnoc sap en à edrag zenerP t cf i i 114 Les fonctions CHAPITRE 7
  • 142. . eri o m é m e c a ps e’l e d r er é b il à c n o d t e s t n e m e c al p m e s e l t e s l e p p a s e l » r el i p é d « à ar e c n e m m o c n o’l e u q noitcurtsni erèimerp al ed noitucéxe’l ed srol euq tse’n eC .noitcno f al ed sleppa sed tnemel -ip me nu à tnemelèllarap ,selacol selbairav xua séuolla secapse sed tnemelipme nu cnod a y lI .s ér é b il t n e i os st n e d é c ér p s t n e m -ecalpme sel euq snas ,noitacolla ellet enu euqovorp , ed rueirétni’l à , ed leppa levuon euqahc rO .)ruoter ed ruelav as riovecer à énitsed tnemecalpme nu riovérp tua f iul li ,étilaér ne ; elacol elbairav enucua etrop moc en ,tne mmerappa( tnemugra nos ruop te selacol selbairav sel ruop ecapse’d noitacolla enu enîartne ed leppa euqahc euq riov neib tua f lI caf tcf nruter caf n caf elleuiroitcaf ed luclac ed evisrucér noitcnoF long fac (int n) { if (n>1) return (fac(n-1)*n) ; else return(1) ; } : evisrucér erèinam ed elleirotca f enu tnaluclac noitcnof enu’d )noitucéxe’d spmet ud nalp el rus ecaci ffeni sruellia’d( euqissalc tro f elp mexe nu icioV .)s n oi t c n o f xued ed sulp rinevretni eria f sruellia’d tnavuop elc yc el( elaitini noitcno f al elleppa ,ruot nos à ,iuq noitcno f ertua enu’d iulec enîartne noitcnof enu’d leppa’l : eésiorc étivisrucér • ; emêm - e l l e à l e p p a n u s n i o m u a , n o it i ni f é d as s n a d , e tr o p m o c n oi t c n o f e n u : e t c eri d ét i visr u c ér • : st c e ps a x u e d er d n er p t u e p i c- el l e C .s n oi t c n o f e d s l e p p a s e d é ti v isr u c ér a l es ir o t u a + + C 7.5 Le cas des fonctions récursives . e l p m is e p y t n u’ d s el b air a v x u a’ u q r e u q il p p a’s tuep en étilibissop ettec ,udnetne neiB .noitucéxe’d spmet ed sniag seuqleuq renema tuep alec : elbairav al regnar y ruop enihca m al ed » ertsiger « nu ,elbissop ud erusem al snad ,resilitu’d ruetalipmoc ua ednamed ic-iuleC .retsiger fitaci filauq el ceva tnemeticilpxe eéralcéd ertê tuep euqita motua essalc al snad iroirp a tnartne elbairav etuot : » ertsiger « essalc al riovas à ,erèilucitrap uep nu noitacolla’d essalc enu etsixe li ,rueugir etuot nE seriatnemélpmoc snoitamrofnI for (int i=1, j=1 ; i<4 ; i++) { cout << i+j ; } tircé tiava no’l is e mmoc tnemetcaxe ,etius al rap seunnoc sulp tnores en j te i selbairav sel 7 - Les variables locales 115
  • 143. #include <iostream> using namespace std ; int n ; main() { void fct (int r) ; int p ; for (p=1 ; p<=5 ; p++) { n = 2*p ; fct(p) ; } } : el oc é’ d s a c n u i ci o v n E .s ei n i f é d t n o s s el l e e ll e u q al s n a d n oi t c n o f al e d l e p p a e u q a h c à s e ési l ai ti n i srola tnevuort es seuqita motua selbairav sec euq sap zeilbuo’N .)! niam noitcno f al ed riga’s t ue p l i( et na d n o pserr oc n oitc n o f a l s na d eért ne’l e d t ne m o m ua ei ni fé d ti os r uela v as e u q u e p ruop ,)noitatceffa rap elbitapmoc epyt nu’d( euqnocleuq noisserpxe enu’d emro f al suos einruo f ertê tuep elaitini ruelav al ,sac ec snaD .noitaralcéd ruel ed srol tnemeticilpxe seésilait - i ni ert ê t n e v u e p s e ll e , e u qi t a ts ess al c e d s e l b a ir a v s e l e m m o c , e h c n a v er n E . t u a f é d r a p s e é s -ilaitini sap tnos en selbairav seC .colb nu à uo noitcno f enu à selacol selbairav sed tiga’s lI 8.2 Les variables de classe automatique .oréz à seésilaitini tnores selbairav sec ,eticilpxe noitasilaitini’d ecnesba’l nE void f (...) { const int NB = 5 ; static int limit = 2 *NB + 1 ; // 2*NB+1 est une static short CTOT = 25 ; // 25 de type int static float XMAX = 5 ; // 5 de type int est static long YTOT = 9.7 ; // 9.7 de type float ..... expression constante est converti en short int converti en float est converti en long (déconseillé) : )seélliesnoc uep siam ,seétpecca tnos taolf >-- gnol ep yt ud setnadargéd snoisrevnoc sel euq areton no( elp mexe tec snad e mmoc ,elbairav al ed iulec ceva noitatceffa rap elbitapmoc nu’d )ruetalip moc el rap selbaluclac( ’ d u o s e t n a ts n o c e d e d i a’ l à ,noitaralcéd ruel ed srol tne meticilpxe seésilaitini ertê tnevuep sellE .em margorp ud noituc - é x e’l e d t u b é d e l t n a v a s i o f e l u e s e n u s e é s il ai t i n i t n o s s e l l E . s e t n e n a mr e p t n o s s e l b a ir a v s e C .citats tubirtta’l ceva seéralcéd selacol selbairav sed euq isnia ,selabolg selbairav sed tiga’s lI epyt setnatsn o c sn ois serp xe 8.1 Les variables de classe statique . e é nr e c n o c el b a ir a v a l e d n oi t a c o l l a’ d ess al c al ed tia f ne tnednepéd selleuqsel ,sétilibissop sec rus tniop el eria f snolla suon ,icI .noitar -alcéd as ed srol elbairav enu tnemeticilpxe resilaitini’d elbissop tiaté li’uq uv snova suoN 116 8 Initialisation des variables Les fonctions CHAPITRE 7
  • 144. 9 - Les arguments par défaut void fct(int r) { int q=n, s=r*n ; cout << r << " " << q << " " << s << "n" ; } 1 2 3 4 5 2 2 4 8 6 18 8 32 10 50 euqitamotua essalc ed selbairav ed noitasilaitinI 9 Les arguments par défaut 9.1 Exemples .leppa’l ed srol sinruof non stnemugra sed à tuaféd rap sruelav ed noitubirtta’d e ms i n a c é m n u à e c âr g , el g èr et t e c e d ei tr a p n e r i h c n ar f f a’s e d t e mr e p + + C .t n e m e v i t c e f f e ti a d -netta ne noitcno f al euq stnemugra’d tnatua tneia mre fner noitcno f ed sleppa son ,ici’uqsuJ Exemple 1 : t na v iu s elp m e xe’ l zeré d is n oC #include <iostream> using namespace std ; main() { int n=10, p=20 ; void fct (int, int=12) ; // prototype avec une valeur par défaut fct (n, p) ; // appel "normal" fct (n) ; // appel avec un seul argument // fct() serait, ici, rejeté */ } void fct (int a, int b) // en-tête "habituelle" { cout << "premier argument : " << a << "n" ; cout << "second argument : " << b << "n" ; } premier argument second argument premier argument second argument : : : : 10 20 10 12 117 tnemugra nu ruop tuaféd rap ruelav ed noitiniféd ed elpmexE
  • 145. float fexple (int = 5, long, int = 3) ; : euq ellet noitaralcéd enu ,elpmexe raP .etsil al ed sreinred sel ertê tnemeriotag -ilbo tneviod sénrecnoc stne mugra sel ,tua féd rap sruelav sed tiovérp noitaralcéd enu’uqsro L 9.2 Les propriétés des arguments par défaut stnemugra srueisulp ruop tuaféd rap sruelav ed noitiniféd ed elpmexE premier argument second argument premier argument second argument premier argument second argument : : : : : : 10 20 10 12 0 12 #include <iostream> using namespace std ; main() { int n=10, p=20 ; void fct (int=0, int=12) ; // prototype avec deux valeurs par défaut fct (n, p) ; // appel "normal" fct (n) ; // appel avec un seul argument fct () ; // appel sans argument } void fct (int a, int b) // en-tête "habituelle" { cout << "premier argument : " << a << "n" ; cout << "second argument : " << b << "n" ; } : tcf ed stnemugra sel suot ruop tua féd rap sruelav sed uvérp snova suon leuqel snad ,elp mexe dnoces nu icioV Exemple 2 .tcf ed tne mugra rei m -erp el ruop tuaféd rap ruelav ed uvérp sap tiaté’n li ici euqsiup noitalipmoc al à étejer tiares fct ( ) : euq let leppa nu’uq zetoN .enèmonéhp el tnertsulli tcf ed sleppa xued se L .ruelav ettec ceva éutce ffe été tiava leppa’l » is e mmoc eria f « ardua f iul li ,tcf ed leppa leut -nevé nu snad tne mugra dnoces ec ed ecnesba’d sac ne ,euq ruetalip moc ua esicérp ic-elleC int = 12 : e mro f al suos tîarappa tnemugra dnoces ud noitaralcéd a L void fct (int, int = 12) ; : ep ytotorp el rap eésilaér tse ,niam noitcnof al snad ici ,tcf ed noitaralcéd a L 118 Les fonctions CHAPITRE 7
  • 146. .» egrahcrus « rap tiudart siofrap ,gnidaolrevo eD .2 .)11 ertipahc ua éiduté ares siht( serbmem snoitcnof sel ruop siht rue la v al iN .1 .) n oi t c eri d ni e n u ,sr u e t ni o p s el s n or e i d u t é s u o n e u qsr ol snorrev el suon e mm moc ,uo( stnattol f ed ,sreitne’d noitacilpitlum enu ,etxetnoc el tnavius ,rengiséd tuep * elob m ys el ,e mê m eD .stnattol f ed noitidda enu’d uo sreitne’d noitidda enu’d riga’s arruop li ,sac sel tnavius ; b te a sednarépo sed ep yt ud dnepéd + ud noitaci fingis al a + b : euq ellet noisserpxe enu snad ,elpmexe raP .sruetarépo’d erb mon niat -rec nu’d noitini fédrus al tnesilitu séulové segagnal sed trapulp al euq isnia tse’C .etxetnoc ud noitcno f ne tnasia f es snoitaci fingis sed enu’l ed xiohc el ,setneré ffid snoitaci fingis srueisulp edèssop elobm ys e mê m nu’uqsrol » noitini fédrus « ed elrap no ,elarénég erèinam enu’D 2 10 Surdéfinition de fonctions .avaJ ne sap tnetsixe’n tua féd rap stne mugra se L avaJ n E . selacol selbairav ed rinevretni eria f sap sio fetuot tnevuep en sellE .setnatsnoc snoisserpxe sed tnemeriassecén sap tnos en tua féd rap sruelav se L 1 e uqrameR . » essalc enu’d ruetcurtsnoc « el em mon no’l euq ec reuqirba f ed ariga’s li’uqsrol xueicérp tne merèilucitrap tnorelévér es tua féd rap stnemugra sel euq snorrev suoN .etêt-ne reihci f nu snad ,setuot ruop sio f enu » seégi f « larénég ne tnos snoitcnof ed snoitaralcéd sel euq ecrap euq ec-tiares en ,étiolpxe erèug ares en tniop ec ,siofetuot euqitarp ne ; ertua enu à noitasilitu enu’d reirav tnevuep setnadnopserroc sruelav sel te e msinacém ec à si muos stnemugra sel euq tse étiralucitrap ettec ed etaidém mi ecneuq -ésnoc enU .ruetasilitu’l siam ,tua féd rap sruelav sed edicéd iuq noitcnof al ed » ruetpecnoc « el sap tse’n ec ,tid tnemertuA .noitiniféd as snad non te noitcnof al ed noitaralcéd al snad tuaféd rap sruelav sel rexif à tneiver ++C rap ésoporp emsinacé m el euq neib zetoN fexple (10, 20, 3) ; : em moc euq fexple (5, 10, 20) ; : e mmoc neib issua étérpretni ertê tiarruop fexple (10, 20) ; : tnavius leppa’l ,eétpecca tiaté noitar -alcéd ettec is ,te ffe nE .snes nob rup ud evèler noitcidretni ellet enu ,tia f nE .etidretni tse 10 - Surdéfinition de fonctions 119
  • 147. .)lues nu à etiudér ici( stne mugra’d etsil al ed uv ua ,eisos » noitcno f ennob « al ed leppa’l ecalp ne si m neib a ruetalip moc el euq zetatsnoc suoV eisos noitcnof al ed noitinifédrus ed elpmexE sosie numero I a = 5 sosie numero II a = 2.5 #include <iostream> using namespace std ; void sosie (int) ; void sosie (double) ; main() { int n=5 ; double x=2.5 ; sosie (n) ; sosie (x) ; } void sosie (int a) { cout << "sosie numero I } void sosie (double a) { cout << "sosie numero II } // la deuxième fonction a = " << a << "n" ; // la première fonction a = " << a << "n" ; // le programme de test // les prototypes . elbuod ep yt ed tnemugra nu ceva sio f ednoces enu ,tni ep yt ed tnemugra nu ceva sio f erèimerp enu ,eisos eini fédrus noitcno f al tnemevisseccus releppa’d snotnetnoc suon suon ,iasse’d emmarg -orp el snaD .eéirporppa egahci ffa’d noitcurtsni enu enucahc snad snosiudortni suon ,eéleppa tne mevitce ffe noitcno f al tnemerialc ertnom e mmargorp ud noitucéxe’l euq ruoP .ertua’l ed enu’l neib eicneré ffid sel iuq ec ,elbuod ep yt ed tnemugra nu ednoces al ,tni ep yt ed tne m -ugra nu aredéssop erèimerp a L .eisos seémmon snoitcno f xued resilitu te rini féd snolla suoN 10.1 Mise en œuvre de la surdéfinition de fonctions . » n oi t c n o f e n n o b « al e d xi o h c u a t n e d is ér p i u q s e é ll i a t é d s el g èr s el r e i d ut é’ d t n a v a ei n i f é dr u s noitcno f enu’d leppa’d snoitautis setneré ffid etiusne snorenimaxe suoN .snoitcno f ed noit -ini fédrus al ervuœ ne erttem tnem moc tnartnom telp moc elpmexe nu retnesérp suov rap snor -ecnemmoc suoN .stnemugra sed ep yt el rus )elp mexe ne tnem medécérp sétic sruetarépo sel ruop e mmoc( ésab tse xiohc ec ,++C nE .noitcno f ennob al risiohc ed tnatte mrep )mon el euq ertua( erètirc nu rûs neib tua f li ,mon e mê m ed snoitcno f srueisulp re yolpme riovuop ruoP .e mê m- el le r u o p i ci r e i d u té’ d s n os o p or p s u o n euq étilibissop erèinred ettec tse’C .snoitcnof ed noitini fédrus al rus tiaf ne esoper li’uq snor -rev suon ,tcepsa tec snoreiduté suon euqsro L .)essalc ed noiton al à séicossa tnos sli’uqsrol( sruetarépo sed trapulp al ed noitini fédrus al ertte mrep ed tse ++C ed stuota sdnarg sed nU 120 Les fonctions CHAPITRE 7
  • 148. 10 - Surdéfinition de fonctions 121 10.2 Exemples de choix d’une fonction surdéfinie .sevitiutni zessa snoitautis seuqleuq droba’d tuot snonimaxe ,eini fédrus noitcnof enu’d noitani mretéd ed selgèr sel retnesérp ed tnavA ...stnemugra srueisulp tnatropmoc snoitcno f sed à eriaf fa tiava no’l is uo ,gnol uo rahc ep yt ed tnemugra nu ceva elpmexe rap snoileppa’l suon is tiariudorp es iuq ec rednamed es tuep nO .) elbuod uo tni( sep ytotorp sel snad suvérp sep yt sed nu’l tnemetcaxe tna ya tne mugra nu ceva eisos noitcno f al sruojuot snoileppa suon ùo erusem al snad ,elp mis tiaté elp mexe tnedécérp ertoN Exemple 1 void sosie (int) ; void sosie (double) ; char c ; float y ; ..... sosie(c) ; // appelle sosie(y) ; // appelle sosie(’d’) ; // appelle // sosie I // sosie II sosie I, après conversion de c en int sosie II, après conversion de y en double sosie I, après conversion de ’d’ en int Exemple 2 void essai void essai int n, p ; ..... essai(n,z) essai(c,z) essai(n,p) (int, double) ; // essai I (double, int) ; // essai II double z ; char c ; ; // appelle essai I ; // appelle essai I, après conversion de c en int ; // erreur de compilation, .II iasse releppa te p rei fidom snas elbuod ne n ritrevnoc ,eriartnoc ua ,uo I iasse releppa te n rei fido m snas elbuod ne p ritrevnoc : ici tnetsixe sétilibissop xued ,tef fe nE .noitalipmoc ed ruerre enu à tiudnoc leppa reinred el ,étïugib ma nos ed unet etp moC Exemple 3 void test (int n=0, double x=0) ; // test I void test (double y=0, int p=0) ; // test II int n ; double z ; ..... test(n,z) ; // appelle test I test(z,n) ; // appelle test II test(n) ; // appelle test I test(z) ; // appelle test II test() ; // erreur de compilation, compte tenu de l’ambiguïté. Exemple 4 : snoitaralcéd sec cevA void truc (int) ; void truc (const int) ; // truc I // truc II
  • 149. .sac ec snad eipoc enu non uo eriaf ed erbil tse noitatnemélpmi’l ,emron al esirotua’l emmoC .1 void chose (int &) ; void chose (int) ; : ) e s o h c e d l e p p a t u o t e d t n e m m a d n e p é d n i( ét ï u g i b m a ruel à eud noitalipmoc ed ruerre enu à tneiariudnoc setnavius snoitaralcéd sel ,elp mexe raP .eini fédrus noitcno f enu’d xiohc el snad sap tneivretni’n )ruelav uo ecneré fér( nois -simsnart ed edo m el euq areton no ,5 elp mexe’l snad eéni maxe noitautis al ed srohed nE 1 se uqrameR void chose (int &) ; // chose I void chose (const int &) // chose II int n : float x ; ..... chose (n) ; // appelle chose I chose (2) ; // appelle chose II, après copie éventuelle de 2 dans un entier1 // temporaire dont la référence sera transmise à chose chose (x) ; // appelle chose II, après conversion de la valeur de x en un // entier temporaire dont la référence sera transmise à chose : )4.2.5 ehpargarap el tne m - el le u t ne vé z e y ov er( s elp me xe s ec t ner t n o m el e m m o c , se li tb us s u lp s ec n euq és n oc se d e dè s -sop secneré fér ed noitasilitu’l siaM .etnatsnoc ecneré fér enu rus ertua’l ,ecneré fér enu rus enu’l ,tnassiga snoitcno f xued reugnitsid tiavuop no tnemmoc értno m a tnedécérp elpmexe’L Exemple 6 . n eir t i a f n e’ n I I esohc euq sidnat ,ecneréfér al tioçer elle tnod eulavl al ed ruelav al eifidom I esohc euq renig - a m i n ei b s èr t t u e p n o , t e f f e n E . e éi f its u j ts e & t n i t s n o c t e & t n i e r t n e n o i t c n i t s i d a l , s i o f e t t e C void chose (int &) ; // chose I void chose (const int &) ; // chose II int n = 3 ; const int p = 5 ; ..... chose (n) ; // appelle chose I chose (p) ; // appelle chose II : snoitaralcéd sec tnanetniam zerédisnoc ,ehcnaver nE Exemple 5 . e uqn o c - l e u q l e p p a n u’ d t n e m m a d n e p é d ni , c u r t e d s n o it ar a l c é d s e d e c n es ér p e l u es al à t n ei t r u err e’ l ici’uq neib zetoN .elanigiro ruelav al rei fido m ed euqsir nucua a y’n li ,retiart à noita m -ro fni’l ed eipoc enu tnavecer curt snoitcno f xued sel ,euq tia f el rap ei fitsuj es aleC .tni tsnoc ed tni reugnitsid ed uvérp sap a’n ++C ,te ffe nE .noitalipmoc ed ruerre enu zerdneitbo suov 122 Les fonctions CHAPITRE 7
  • 150. . rahc dengisnu ed te rahc deng is ed tneréffid tse rahc ,++C ne : noitnettA .1 .eétpecca tse euqiré mun ep yt ertua nu ne euqiré mun ep yt nu’d noisrevnoc etuot ,tnemmaton ,euqsiup setnadargéd snoisrevnoc ed riga’s tuep li ,sio f ettec ; )tsac ed ruetarépo snas( noitatce f fa enu rap seésopmi ertê tnevuep iuq sel -lec ed erid-à-tse’c ,++C ne selagél snoisrevnoc sed tiga’s li : dradnats setid snoisrevnoC )3 .etnatsnoc enu à ecneré fér al ed tiga’s li’uqsrol fuas ,noisrevnoc enucua à si muos ertê tuep en ecneré fér rap simsnart tnemugra nu’uq snoleppaR elbuod >– taolf tn i >– trohs te r a h c : tnemelleitnesse erid-à-tse’c ,seuqirémun snoitomorp ceva ecnadnopserroC )2 .)sr ue t ni o p s el r u o p e m ê m ed ari ne li( secneré fér ed sac el snad rinevretni tuep tsnoc tubirtta’l ,stnedécérp selp mexe sel snad uv a’l no em moc ,sulp ed ; engis ed tubirtta leutnevé ruel ed etpmoc tnanet ne ,esab ed sep yt stneré f fid sel sertua sed snu sel neib eugnitsid no : etcaxe ecnadnopserroC )1 1 : ecnadnopserroc ed xuaevin stneré ffid uvérp tse li ,eriaf ec ruoP .noitaul - a v é’ d er è tir c n u’ d e s o p si d l i’ u q t u a f li , e c n a d n o ps err o c er u el li e m et t e c ts e’ u q e c r i ni f é d r i o v -uop ruop ,udnetne neiB .elbissop » ecnadnopserroc eruelliem « al ehcrehcer ruetalipmoc e L 10.3.1 Cas des fonctions à un argument .A exennA ne sesirper tnos selgèr sec setuot ed elbmesne’l ,sulp eD .seriatnemélp moc snoita mro fni sed retroppa suov à sénema snores suon ,egarvuo tec ed sruoc uA .stnavius sertipahc sed eduté’l ruop tnasi ffus ares iuq ec ,elarénég eihposolihp al tôtulp snoretnesérp suov suon ,tnatsni’l ruoP 10.3 Règles de recherche d’une fonction surdéfinie . s et i c il p mi s n o i s r e v - n o c e d s ét il i bi ss o p e d u e p e ts i x e l i r a c , + + C n e’ u q s e l p m is s u l p p u o c u a e b t n os n o it c n o f e n n o b al e d e h cr e h c er e d s e l g èr s el si a M . a v aJ n e ets i x e s n o it c n o f s e d n o it i ni f é dr us a L avaJ n E .) * t n i t s n o c ( etnatsnoc en u rus r uet niop nu te )* tni( elbaira v enu rus ruetniop nu ertne elbarap moc n o i t c n i ts i d e n u e t s i x e l i’ u q ) 8 er t i p a h c u d 9 e h p ar g ar a p( s n orr e v s u o n , sr u e t n i o p s e l s n or - e i d u t é s u o n e u q sr o L . & t n i t s n o c e d e u g n i t s i d e s & t n i t n e m m o c r i o v e d s n o n e v s u o N 2 10 - Surdéfinition de fonctions 123
  • 151. .stnemugra sed nucahc ruop ecnadnopserroc eruelliem al tnasilaér snoitcnof sed séutitsnoc selbmesne sed noitcesretni’l erèdisnoc li’uq erid à tneiver iuq eC .1 .stne mugra’d etsil al ed sruocrap el resilaitini’d ,etros euqleuq ne ,temrep iuq exi f tnemugra reinred el tse’c ,riov el snolla suon em moc ,tef fe nE .)tnesérp sruojuot erid-à-tse’c( exi f tne mugra nu sniom ua redéssop tiod noitcno f al euq tse retcepser à etniartnoc elues a L .)gradtsc etêt-ne reihcif el snad erugi f ep yt -otorp el tnod( gra_av te trats_av serèilucitrap snoitcno f sed edia’l à tneivrap y no ,++C nE .ertua nu à leppa nu’d reirav ed elbitpecsus stnemugra’d erbmon nu riovecer ed elbapac noitcno f enu resilaér retiahuos tuep no ,secnatsnocric seniatrec snad ,rO .noitcno f ettec ed erutircé’l ed srol uvérp tiaté noitcno f enu’d leppa’l ed sruoc ua sinruo f stne mugra’d erb mon el ,selpmexe stnedécérp son suot snaD 11 Les arguments variables en nombre .stne mugra’d t nas si orc erb m o n nu ce v a se i ni f é d é té t ne ia va se t neré f f i d s n oi tc n o f sr ue is ulp is e m m o c seétiart tnos tuaféd rap stnemugra srueisulp uo nu tnatropmoc snoitcno f sel euq zetoN . no i ta l -ipmoc ed ruerre arua y li ,tneivnoc en noitcno f enucua is ,emêm eD .eértnocner étïugib ma’l à eud noitalipmoc ed ruerre enu arua no ,erocne àl ,tnenneivnoc snoitcno f srueisulp iS . s n o it c n o f s er t u a s e l setuot ed ellec à elagé snio m ua ecnadnopserroc enu ,tnemugra euqahc ruop ,esilaér iuq )euq - i n u t s e el l e i s t e et si x e e ll e is( el l e c tis i o h c l i , s e é n n o it c e l és i s n i a s n oi t c n o f s e d e l b m es n e’ l imraP .)sussed-ic eini féd eihcraréih al ed snes ua( ecnadnopserroc eruelliem al tnesilaér iuq snoitcno f sel uo al ,tnemugra euqahc ruop ,ennoitcelés ruetalip moc el ,eria f ec ruoP .sertua sel setuot euq » eruelliem « noitcno f enu regagéd es tiod li’uq tse elarénég eédi’L 1 10.3.2 Cas des fonctions à plusieurs arguments .noitalipmoc ed ruerre issua a y li ,uaevin nucua à tneivnoc e n n oi t c n o f e n uc u a is , u d n et n e n ei B . eért n o c n er ét ï u gi b m a’l à e u d n o i ta li p m o c e d r uerr e a y li , e c n a d n o ps err o c e d u a e vi n e m ê m u a t n e n n e i v n o c s n o i t c n o f sr u e is ul p i S . e u q i n u ert ê sr ol a tiod iuq ,ecnadnopserroc enu revuort ed simrep tna ya uaevin reimerp ua etêrra’s ehcrehcer a L .etnatsnoc enu à ecneré fér enu’d tiga’s li’s fuas ,noisrevnoc enucua à simuos ertê arruop en ecneré fér rap simsnart tne mugra nu ,erocne à L . 6 1 e rt i p a h c u a’ u q s e éi d ut é t n or es e n i u q ,). U . D. C( » r u e t asi li t u’l r a p s e i ni f é d s n oisr e v n o c « s e d em mon no’l euq ec rinevretni eria f arruop no reilucitrap ne ; suvérp tnos xuaevin sertua’D )4 124 Les fonctions CHAPITRE 7
  • 152. va_list adpar ; : n oi tar al cé d a L .elbairav erb mon ne sertè marap ed ecnetsixe’l ruetalip -moc ua rei ficéps à tnevres stniop siort sel ; euqissalc erèina m ed séralcéd ,2rap te 1rap sexif sertèmarap sed smon xued sed , iasse noitcno f al ed etêt-ne’l snad ,ecnesérp al zetatsnoc suoV ellenitnes enu rap sétimiléd ,elbairav erbmon ne stnemugrA premier essai premier parametre second parametre argument variable argument variable argument variable deuxieme essai premier parametre second parametre : 6264 : S : : : : : 125 a 15 30 40 main() { cout << "premier essain" ; essai (125, ’a’, 15, 30, 40, -1) ; cout << "deuxieme essain" ; essai (6264, ’S’, -1) ; } void essai (int par1, char par2, { va_list adpar ; int parv ; cout << "premier parametre : " cout << "second parametre : " va_start (adpar, par2) ; while ( (parv = va_arg (adpar, cout << "argument variable } #include <iostream> #include <cstdarg> using namespace std ; int) ) != -1) : " << parv << "n" ; << par1 << "n" ; << par2 << "n" ; ...) // pour va_arg et va_list .reinred ud noitpecxe’l à ,)selbairav uo sexi f( stnemugra stneré ffid sec ed sruelav sel retsil ed ,noitcno f ettec snad ,sétnetnoc semmos s u o n s u o n , n oi ta ci f il p m is e d i c u os ra P . » e ll e ni t nes « e d , etr os e u ql e u q ne , c n o d tr es r u el a v erèinred etteC .1- tiaté xue ertne’d reinred el euq ésoppus a no’l te euqnocleuq erbmon ne tnos ,tni ep yt ed ,stnavius stnemugra se L .rahc ep yt ed ertua’l ,tni ep yt ed tnaté nu’l ,sexif tnos stne mugra srei merp xued sel : selbairav stnemugra à noitcno f ed elpmexe rei merp nu icioV 11.1 Premier exemple 11 - Les arguments variables en nombre 125
  • 153. .selbairav stne mugra’d erb mon el tnai ficéps iulec euq exi f tnemugra ertua’d uvérp sap snova y’n suoN .euqinhcet ednoces ettec tnasilitu noitcno f ed elpmexe nu icioV .s e l b a ir a v st n e m u gr a’ d er b m o n u d , e x i f t n e m u gr a n e , n ois si ms n ar t r a p • ; elpmexe tnedécérp erton snad em moc ,ellenitnes rap • : eriaf es tuep noitseg etteC .s t ne m -ugra sec ed fitce ffe erb mon el ertîannoc ed tnatte mrep noitcno f enucua etsixe’n li ,te ffe ne ; ruetasilitu’l ed nios nob ua eéssial tse selbairav stnemugra sed etsil al ed nif al ed noitseg a L 11.2 Second exemple . 1 3 e rt i p a h c ud 2.2 ehpargarap seétnesérp tnores ,C ne’uq ++C ne seésilitu snio m puocuaeb ,sorca m s e L . e vi t c e f f e n oi t a si li t u r u el r u s e c n e d i c n i’ d u e p e u q a’ n n o it c ni ts i d e t t e c ; » s or c a m « sed siam ,snoitcno f selbatirév ed sap tnos en gra_av te trats_av ,rueugir etuot nE seriatnemélpmoc snoitamrofnI .ertua enu’d uo noça f enu’d ,ertîannoc sel ed erusem ne tios noitcno f al euq sio fetuot noitidnoc à ,stneré ffid sep yt ed ertê tnevuep selbairav stnemugra se L e uqrameR .em margorp ud tnemennoitcno f siavuam nu à eriudnoc noitcno f al à leppa niahcorp nu riov ed euqsir el zeruoc suov ,elgèr ettec à zeuqna m suov iS .eénrecnoc noitcno f al ed ritros ed tnava eéleppa ertê tiod dne_av orca m al euq tiovérp ISNA e mron al ,nifnE .1- ruelav ruop a reinred el euq tnahcas ,selbairav stnemugra stneré ffid sel rerépucér ed temrep suon elihw noitcurtsni enu ,icI .t na v i us elb air av t n e m u gra’ l r us sr o la etniop ic-ellec euq erèina m ed ,rapda snad eunetnoc esserda’l etnemércni elle ,trap ertua’d • ; )tni ici( tnemugra dnoces nos rap éuqidni ep yt el tnavius ,)tne mugra rei merp nos( rap -da r ap e inr u o f e t nar u oc ess er da’ l à eé v u ort r u el av a l t at l us ér e m m oc ti nr u o f e ll e , trap e n u’ d • : elbuod tse gra_av noitcno f al ed elôr e L . e xi f er t è m ar a p r e i nr e d u d mon ud ecnassiannoc al ed ritrap à trats_av rap eénimretéd tse erèinred ettec euq neib zetoN .elbairav ertèmarap ud esserda’l à resilaitini’l ed erttemrep av iuq trats_av noitcno f al tnemev -itce ffe tse’C .rapda à ruelav enucua eubirtta’n noitaralcéd ellet enu ,eémutuocca’l à e mmoC .selbairav stnemugra stneré ffid sel ,sertua sel sèrpa snu sel ,rerépucér à arivres suon iuq iul tse’C .elbairav etsil ed ruetaci fitnedi nu tse rapda euq esicérp 126 Les fonctions CHAPITRE 7
  • 154. suon euq snoitcno f sel stneré ffid secruos sreihci f sed snad recalp tia f à tuot zeirruop suov ,elp -mexe raP . » eérapés noitalipmoc « ed srola elrap nO .ruetasilitu’l rap suçnoc secruos sreihcif sed à reuqilppa’s tuep )trap ertua’d trqs ,trap enu’d niam ertov ici( ertua’l ed enu’l etnad - ne p é d n i n oç a f e d s él i p m oc st ej b o s el u d o m sr u eis u l p t i n uér n o e ll e u qa l s na d ,e hcr a m é d e tt e C .elbatucéxe em margorp el reérc ruop sneil ed ruetidé’l rap éroprocni ares li’uq te euqèhtoilbib enu snad erugi f li’uq ,élip moc été àjéd a noitcno f ettec à tnadnopserroc tejbo eludom el euq snovas suoN .trqs euq sellet seuqitam -éhta m snoitcno f sed snoitaralcéd sel tneitnoc iuq htamc etêt-ne reihci f el snoiroprocni suon ,eria f ec ruoP .trqs euq sellet seini fédérp snoitcno f sed resilitu à sénema été àjéd snova suoN 12.1 Compilation séparée et prototypes 12 La conséquence de la compilation séparée exif tnemugra ne inruof tse erbmon el tnod selbairav stnemugrA deuxieme essai nombre de valeurs : 0 premier essai nombre de valeurs argument variable argument variable argument variable : : : : 3 15 30 40 #include <iostream> #include <cstdarg> using namespace std ; void essai (int nbpar, ...) { va_list adpar ; int parv, i ; cout << "nombre de valeurs : " << nbpar << "n" ; va_start (adpar, nbpar) ; for (i=1 ; i<=nbpar ; i++) { parv = va_arg (adpar, int) ; cout << "argument variable : " << parv << "n" ; } } main() { cout << "premier essain" ; essai (3, 15, 30, 40) ; cout << "ndeuxieme essain" ; essai (0) ; } 12 - La conséquence de la compilation séparée 127
  • 155. .ruerre enu ardneitbo no ,)dradnats euqèht -oilbib al tnautitsnoc xuec snad sirpmoc y( tejbo eludo m nucua snad eévuort tse’n f ed noitin -i féd al ,sneil ed noitidé’l ed srol is ,ehcnaver nE .emèlborp snas areluoréd es noitalip moc a L main() { void f() ; ..... f() ; ..... } // utilisation de f // déclaration de f : )eéralcéd tnemetcerroc tios elle’uq uep ruop( noitcno f enu’d noitini féd al si mo a no leuqel snad e mmargorp nu erircé’d elbissop tia f à tuot tse li’uq tiov no ,eérapés noitalipmoc ed sétilibissop sec ed unet etpmoC 12.2 Fonction manquante lors de l’édition de liens main() { #include "MesFonc.h" ... // ici, on dispose des déclarations figurant dans MesFonc.h } void f() { // ici, non } : a m é h cs e c s n a d e m m o c ,l a c o l u a e vi n n u à • #include "MesFonc.h" // // main() { ... // } void f() { // } ici, également ici, on dispose des déclarations figurant dans MesFonc.h Attention : "MesFonc.h" et non <MesFonc.h> pour un fichier en-tête utilisateur : a m é h cs e c s n a d e m m o c ,l a b o l g u a e vi n n u à • : er i a f es t u e p e t ê t- n e r ei h ci f n u’ d n o is ul c n i’l e u q s n o l e p p a R include "MesFonc.h" : ) >. . . < e d u e i l u a " . . . " e d n o i t a s i l i t u ( r u e t a s - il i t u’ l e d sr ei h ci f s e l r u o p e é i f i d o m t n e m er è g é l ts e n e e x a t n ys al e u q r i o v as t n a d n e p e c t u a f l I .edulcni# evitcerid enu rap etêt-ne reihci f ertov zereroprocni suov ,sinifédérp setêt-ne sreihci f sel ruop e mmoC .h. noisnetxe’l aretrop reihci f let nu ,tnemelaréné G .)selle ertne troppar nu tna ya snoitcno f ed epuorg rap etêt-ne reihci f nu tôtulp uo( erutircé’d sruerre selleutnevé’d retivé à noça f ed ,snoitaralcéd sel tnanetnoc ne )cno FseM elp mexe rap ém mon( etêt-ne reihci f nu riovérp à éne ma tne melbaborp zeres suov ,semmargorp srueisulp rap seésilitu ertê tneviod zeppolevéd suov euq snoitcno f sed seniatrec iS .noitaralcéd as euq arevuort y’n nO .t n asi l it u’l e m m ar g or p e l s n a d s ul p er u gi f e n n oi t c n o f a l e d n oi t i n i f é d a l ,s a c e c s n a D . t n e m -érapés relip moc sel te )tcf , tsimitpo ,egnahce ,elpxef( tnavarapua reérc à séne ma été snova 128 Les fonctions CHAPITRE 7
  • 156. extern "C" double fct (int, char) ; : e t n a v i us n o ç a f al e d e p y t ot -orp nos rinruo f ed ari ffus suon li ,++C e mmargorp nu snad resilitu’l snotiahuos suon euq te double fct (int n, char c) ; : etêt-ne’d noitcno f enu C ne élip moc te tircé snova suon is ,elpmexe raP ."C" nretxe noitnem al ed ep yt -otorp nos redécérp tnasia f ne noitcno f ellet enu reralcéd : sio fetuot etsixe noitulos enU .éuq -ové e msinacém el tnavius éi fido m mon nos sap arua’n noitcnof ellet enu ,tef fe nE .)nartroF el u o r u e l b m e ss a’ l t n e m m a t o n , n o it c n o f e d l e p p a’ d s n oi t n e v n o c s e m ê m s e l t n asi li t u e g a g n al ertua nu snad uo( C ne eélipmoc te etircé noitcnof enu ++C e mmargorp nu snad resilitu etiah -uos no’l euq sèd ,esop es emèlborp nu’uq cnod tiov nO .)ertua nu snad einifédrus ares ecruos r e i h c i f n u s n a d e él i p m o c n o it c n o f e n u is r i o v as e d el b iss o p m i t s e li( n o n u o s ei n i f é dr us t n ei os selle’uq ,snoitcno f sel setuot à euqilppa’s e msinacém ec euq reton ed tnatropmi sèrt tse lI .stne mugra ses ed erutan al te erb mon el rus trap ertua’d ,noitcno f al ed enretni mon el rus trap enu’d édno f mon uaevuon nu euqirba f ic-iulec ; snoitcnof sed » senretxe « s mon sed ,ruetalip moc el rap ,noitaci fido m al rus eédnof tse ecnassiannocer etteC .tejbo eludom ertua nu snad tnarugi f » noitcno f ennob « al te ruetalipmoc el rap érépo xiohc el ertne neil el reutce ffe’d erusem ne ertê tiod sneil ed ruetidé’l ,elbissop tios alec euq ruop ,rO .sep ytotorp sel rinruo f n e’ d t n at n e t n o c s u o n n e e cr u os r e i h c i f ert u a n u s n a d s n oi t c n o f s e c t n e m er u e ir é tl u r es il it u’ d • ; s e cr u os sr ei h ci f sr u ei s u l p s n a d s n oi t i n i f é dr us s e c r e t -alcé e mê m tuep no ; )selpmexe stnedécérp son snad esohc uo eisos euq ellet( noitcno f enu’d snoitini féd setneré f fid sel tnanetnoc ecruos reihci f nu sp met reimerp nu snad relip moc ed • : e l b a e g as i v n e ti a f à t u o t ts e l i’ u q t n a n e t ni a m t i o v n o s i a M .s i o f a l à e cr u os r ei h c i f l u es n u r us t n a n n os i ar n e , » n o it c n o f e n n o b « a l e d x i o h c e l ti asi a f r u e t a li p m o c e l t n o d er è i n a m al éni maxe snoiva suon ,01 ehpargarap ud snoitcno f sed noitini fédrus al ed eduté erton snaD 12.3 Le mécanisme de la surdéfinition de fonctions .noitaralcéd al zeissinruof ne suov euq uep ruop ,htamc reroprocni snas ,trqs resilitu elpmexe rap zeirruop suoV .etêt-ne sreihci f ed noisulcni elleutnevé’l ceva troppar n uc u a a’n te no i ta lip m o c al ed tn a d nepé d n i t ne m e la to t ts e s ne il e d r ue ti dé’ l e d e hcr e hcer ed liavart el ,tia f nE .resopsid ne ruop noitaralcéd ruel tnanetnoc setêt-ne sreihcif sel retic ed ti ffus li’uq noisserpmi’l a no tnod dradnats euqèhtoilbib al ed snoitcno f sel rap eun -etertne ertê tuep noisu fnoc al ,setreC .ertua’l sap ecalpmer en nu’L .noitini féd ruel à tnad -nopserroc elbatucéxe edoc el neib tnenneitnoc ,xue à tnauq ,iuq stejbo seludo m sel ceva snoitcno f ed snoitaralcéd sel euq tnenneitnoc en iuq etêt-ne sreihci f sel sap zedno fnoc eN e uqrameR 12 - La conséquence de la compilation séparée 129
  • 157. : ecruos sreihcif xued sec tnemérapés elip moc no’l euq zesoppus ,isniA .einiféd été a elle leuqel snad ecruos reihci f ua eétimil elb mes elabolg elbairav enu’d eétrop al ,iroirp A 12.4.1 La portée d’une variable globale – la déclaration extern .) s n e il e d n o it i d é( n ei l e d el l e c e d ) n o i t a li p m o c( e é t -rop ed noiton al reugnitsid à rivres tnemelagé tuep lI .selabolg selbairav ed eélliesnocéd euq -inhcet ettec tnasilitu edoc ud retiolpxe zeved suov is têrétni nu tuotrus a ehpargarap eC .B.N 12.4 Compilation séparée et variables globales . tcf m o n e d C s n o i t c n o f sr u e i s u l p r e n n o i t n e m e d e l b i ss o p s a p ts e’ n l i’ u q z e t o N . t c f s n o i t c n o f s i or t s e d e n u’ l e d l e p p a n e i b ar u a y l i , t c f e d l e p p a’ d t n e m u gr a’ l e d e r u t a n a l t n a v i u S extern "C" void fct (int) ; void fct (double) ; void fct (float) ; : i s n i a t n a d é c or p n e void fct (double x) void fct (float y) : e t ê t- n e ’ d + + C s n o i t c n o f x u e d t e e t n e d é c é r p t c f n o i t c n o f a l + + C e m m ar g or p n u s n a d r es i l i t u s n o v u o p s u o n , e l p m e x e r a P .) s t n er é f f i d s t n e m - u gr a’ d s i a m ( m o n e m ê m e d + + C s n o i t c n o f s er t u a sr u e is u l p u o e n u t e ) n ar t r o F u o r u e l b -messa( C noitcno f enu ,++C e m margorp e mê m nu’ d nies ua ,re yolp me’d elbissop tse l I 3 .)s e l l e n n o i t i d n o c nr e t x e s n o i t ar a l c é d s e d t n e n n e i t n o c s l i ( s t n a d n o p s er r o c e t ê t- n e sr e i h c i f s e d u a e v i n u a e grahc ne sirp tne meuqita mot ua tse tcepsa tec ,stne mennorivne sed trapulp al snad ,tia f n E . + + C n e es i l i t u ér n o’ l e u q C d r a d n a t s e u q è h t o i l b i b a l e d s n o i t c n o f s e l s e t u o t r u o p , ir o ir p a , e s o p e s ) n ar tr o F u o r u e l b m e ss a ( C s n o i t c n o f s e l r u o p é u q o v é e m è l b or p e L 2 extern "C" { void exple (int) ; double chose (int, char, float) ; ..... } ; : isnia etnesérp es iuq ,nretxe noitaralcéd al ed » evitcelloc « emro f enu etsixe lI 1 se uqrameR 130 Les fonctions CHAPITRE 7
  • 158. .evitce ffe esserda’l rinruo f ne ardua f li’uq te rueir -étxe’l ed tneivorp mon ed elbairav eniatrec enu’uq tnannoitne m noitacidni enu ,tnadnopser -roc tejbo eludom el snad ,evuort no ,ecruos reihci f dnoces ud noitalipmoc sèrpa ,trap ertua’D . st n a d n o ps err o c s t e j b o s el u d o m s e l r e v u ort er e d er us e m n e ti os sneil ed ruetidé’l euq ruop retsisbus neib tneviod sleuqsel ,snoitcno f ed smon sel ruop essap es i u q e c à e u g ol a na e msi n ac é m n u àl e v u or ter n O .s te j b o s el u d o m s e d u ae v i n u a r et si xe à eunitnoc selabolg selbairav sed mon el ,noitalip moc sèrpa mon ud ecart enucua etsisbus en selleuqsel ruop ,selacol selbairav sel ruop tiudorp es iuq ec à tnemeriartnoc ,tid tnem -ertuA .tejbo eludo m el snad esserda nos te elobm ys el tnaicossa noitacidni enu ,tnadnopser -roc tejbo eludo m el snad ,evuort no ,ecruos reihci f rei merp ud noitalip moc sèrpa ,trap enu’D .reim - er p e l s n a d e i ni f é d e l b a ir a v a l e d e v it c e f f e ess er d a’l e cr u os r e i h ci f d n o c es u d e l o b m y s u a erdnopserroc eria f tuep li tnemmoc snonimaxe ,reilucitrap nE .sunetbo isnia stejbo seludom xued sel tnemetcerroc relb messar ed erusem ne tse sneil ed ruetidé’l tnem moc sèrp sulp uep nu’d sno yov te stnedécérp ecruos sreihci f xued sel élipmoc sno ya suon euq snosoppuS x x x x 12.4.2 Les variables globales et l’édition de liens .ep yt el euqidni ne elle te sruellia rap eini féd tse elabolg elbairav al euq resicérp euq tiaf en ellE .elbairav ed tnemecalpme’d noitavresér ed sap eutce ffe’n nretxe noitaralcéd etteC x e uqrameR reihci f reimerp el snad eéralcéd( . te s n oi t c n o f s e l s n a d ) e cr u os elabolg elbairav al rennoitne m ed elbissop tneived li 3tcf x 2t cf extern int x ; : no i tara lc é d al e d ecr u os r ei h ci f d n o ces er to n r e dé cérp t nas i a f ne , is n i A . élc-tom ud edia’l à tia f es ic-elleC .ecruos reihci f ertua nu snad eini féd été àjéd a elabolg elbairav enu’uq rei ficéps ed tnatte mrep noitaralcéd enu tiovérp ++C ,tia f nE .)rei merp ud sellec ed etius al à reihci f dnoces ud snoitcurtsni s e l r e c a l p e d n i o s t i a n e r p n o ’ l i s s n i o m u d , l u e s n u n e e cr u o s s r e i h c i f x u e d s e c t i a s s i n -u ér no’l is tiaresop es en emèlborp nucua’uq srola( ecruos reihci f reimerp el snad eéralcéd elabolg elbairav al à ecneré fér eria f ed te snoitcno f sel snad ,elbissop sap elbmes en lI n ret xe x 3tcf 2tcf source 1 int x ; main() { ..... } fct1() { ..... } source 2 fct2() { ..... } fct3() { ..... } 12 - La conséquence de la compilation séparée 131
  • 159. .sr u et aré p o s e d noitini fédrus al rus ertipahc ud ellec à’uqsuj eéréffid ertê tuep ehpargarap ec ed eduté’L .B .N 13.1 Transmission par référence d’une valeur de retour .spmet rei merp nu snad si mo ertê neib sèrt tnevuep iuq sétisu uep stnemélé’d tiga’s li ; ruoter ed ruelav ed uo tne mugra’d ellec essapéd iuq ,ecneré fér ed noiton al ed larénég tcepsa’l • ; sruetarépo sed noitini fédrus al à ércasnoc ertipahc ud ritrap à’uq ardneivretni’n tniop ec ; » ruoter ed ruelav « enu’d ecneréfér rap noissimsnart al • : à s e vi ta ler ser ia t ne m él p m oc s n o it a mr o f ni se d s n o ssi nr u o f suov suon ,icI .5 ehpargarap ua éiduté été a ecneré fér ed noiton al tnanrecnoc leitnesse’L 13 Compléments sur les références .ecruos reimerp ud ellec ceva reré fretni sap arruop en elle’uqsiup sneil ed noit -idé’l à eétpecca ares elle ,ecruos reihci f ertua nu snad tîarappa elabolg elbairav ertua enu is ,xuei M .nretxe rap ecruos ertua enu siuped ecneré fér eria f y’d elbissopmi cnod ares lI .ecruos r ei h ci f e c e d t n at l us ér t ej b o el u d o m e l s n a d ets is b us e n a e d ec art e n uc u a’u q e d na me d n o it ar -alcéd et tec , er tn oc raP .eri an idr o elab ol g elbaira v e nu t iares a ,citats n oi taral cé d al sn aS static int a ; main() { ..... } fct() { ..... } : elp mexe tec snad e mmoc citats noitaralcéd al resilitu’d alec ruop tiffus lI .)» selleitnedifnoc selabolg selbairav « ed srola elrap no ; » rehcac « ed ueil ua » elleitnedi fnoc erdner « issua tid no( eini féd été a elle ùo ecruos reihci f ud rueirétxe’l à elbisseccani erdner al ed erid-à-tse’c ,elabolg elbairav enu » rehcac « ed elbissop tse lI 12.4.3 Les variables globales cachées – la déclaration static .euqigolli tse iuq ec ,ruetaci fitnedi e mê m nu ruop setneré ffid sesserda xued ed ecnesérp ne arevuort es sneil e d r ue ti d é’l ,s ac l et n u s na d ,t e f fe n E .)e il a m o na e tt ec re tc et é d s a p e n t n e v u e p s ne i l e d sr ue t -idé sniatrec( stnadnopserroc stejbo seludom sed sneil ed noitidé’l tnemetcerroc reutce ffe’d elbissopmi ,larénég ne ,ertnoc rap ,ares li ,stneré ffid ecruos sreihci f xued snad mon e mê m ed s e l a b ol g s e l b a ir a v s e d r e vr e s ér e d , e dr a g é m r a p , el b iss o p ts e li’s e u q er t n o m e ms i n a c é m e C .tejbo eludom dnoces el snad retroper al ed te elbairav al ed evitce ffe esserda’l tejbo eludom reimerp el snad revuorter ed euq sneil ed ruetidé’l ed elôr el tne mevitce ffe ares eC x 132 Les fonctions CHAPITRE 7
  • 160. .seuqihportsatac tnenneived sesohc sel euq tneréffid tnemetropmoc nu tnaya tnemennorivne nu snad egatrop ud srol euq tse’n ec ; etsefinam es en ruerre enucua ,» noitcurtsed « as ed srol elbairav enu’d ruelav al sap tnaifidom en tnemennorivne nu snad ; )...étnolov à ésilitu ertê tuep ruetniop nu’uq srola( emêm-iul leppa’l tse eénrecnoc ecneréfér al resilitu tuep no’l ùo tnemom lues el ùo erusem al snad retcetéd à eliciffid sulp erocne tse ellE .)drat sulp snorertnocner suon euq noitautis( elacol elbairav enu rus ruetniop nu’d ruoter ed ruelav ne noissimsnart al à eud ellec à etnerappa’s ruerre etteC .1 .][ r u et ar é p o’l e d s a c e l t n e m és i c -érp ares eC .tatlusér ne eulavl enu essinruof )noitcno f enu ,tia f ne( ruetarépo nu’uq elbasnep -sidni ares li ,sac sniatrec snad ,te ffe nE .sruetarépo’d noitini fédrus al snoreiduté suon euqsrol euq artîarappa’n ruoter ed ruelav enu’d ecneré fér rap noissimsnart al ed têrétni lapicnirp e L f() = x ; f() = 2 * n + 5 ; // // // // à la référence fournie de l’expression 2*n+5, à la référence fournie de x, après conversion par f, on range la valeur de type int par f, on range la valeur en int int & f () ; int n ; float x ; ..... : elp mexe tec ze yoV .eulavl enu e mmoc leppa nos resilitu’d elbissop tneived li ,ecneré fér enu eiovner noitcno f enu’uq srol sèD 13.1.2 On obtient une lvalue .rinruo f ne iul ed euq noitcnof enu’d ecneré fér enu riovecer ed nioseb tne merar sulp a no’uq tioçnoc no ,tne mevitce ffE . sulp etsixe’n iuq esohc euqleuq à )esserda( ecneré fér enu rerépucér ed eniep suos ,f noitcno f al à elacol sap tios en n euq eriassecén tse li ,tse sulp iuQ .ruelav rap noissimsnart enu à troppar rap têrétni’d retnesérp erèug elbmes en noissimsnart ellet enu 1 int p ; ..... p = f() ; // affecte à p la valeur située à la référence fournie par f : elleusu noçaf enu’d f esilitu no’l is ,tnadnepeC .n ed ecner -é fér al ed siam ,ruelav enu’d sulp non ruoter ne noissimsnart al areuqovorp f ed leppa nU int & f () { ..... return n ; } // on suppose ici n de type int : elp me xe ti t e p e c s n or é dis n o C . l er ut a n s n i o m t n a d n e p e c ts e l I . n oi t c n o f e n u’ d r u ot er e d r u el a v al à euqilppa’s stnemugra sed noissimsnart al ruop resopxe’d snonev suon euq emsinacé m e L 13.1.1 Introduction 13 - Compléments sur les références 133
  • 161. f() = x ; // idem f() = 2 * n + 5 ; // erreur : f() n’est pas une lvalue ..... int n ; float x ; const int & f () ; : eu lav l enu e mmoc eésilitu ertê sulp arruop en etnatsnoc enu à ecneré fér ellet enu’uq areton no siaM } // obtenu par conversion de la valeur de x return 5 ; // OK : on renvoie la référence à une copie temporaire return n ; return x ; // OK // OK : on renvoie la référence à un int temporaire const int & f2 (.....) { ..... : noisrevnoc elleutnevé enu’d eédécérp ,etnatsnoc ettec ed eipoc enu’d ecneré fér al arrevner no ,etnatsnoc enu ennoitnem nruter is ,sac ec snaD .etnatsnoc enu à ecneré fér enu ennoitne m etet-ne’l euqsrol ueil a noitpecxe enU } return n ; // OK return x ; // interdit { ..... return 5 ; // interdit int & f1 (.....) int n=3 ; float x=3.5 ; // variable globale // idem : n o it s e u q n e r u e l a v al e i fi d o m e t n a l e p p a n o i t c n o f al e u q euqsir el tiardnerp no ,sac el tiaté let is ,te ffe nE .nruter noitcurtsni’l snad etnatsnoc ed ren - n oi t n e m s a p arr u o p e n e ll e , e c n er é f ér r a p r u ot er n u e t ê t- n e n os s n a d ti o v ér p n o i t c n o f e n u i S 13.1.4 Valeur de retour et constance .etnatsnoc enu à ecneré fér enu tse ruoter ed ruelav al euqsrol e mê m ed sulp av ne’n li’uq 4.1.31 ehpargarap ua snorrev suoN inf & f () ; float x ; ..... x = f() ; // OK : on convertira en int la valeur située à la référence // reçue en retour de f : r esi li t u’l e d t n a v a n oisr e v -noc enu à ertte muos al ed elbissop sruojuot etser li rac ,ruoter ed ruelav enu rus esèp en ep yt ed edutitcaxe’d etniartnoc enucua ,stne mugra sel ruop tiasiudorp es iuq ec à tnemeriartnoC 134 13.1.3 Conversion Les fonctions CHAPITRE 7
  • 162. n = 5 ; : 3 et n ats n o c a l e d r u e l a v a l r e i fi d o m à tiariudnoc etnavius noitcurtsni’l ,snoitidnoc sec snaD .3 )etnatsnoc( ruelav al à ecneré fér enu ceva n resilaitini à tiardneiver elle ,eétpecca tiaté noitcurtsni ettec is ,euqsiup euqigol tse aleC int & n = 3 ; // incorrecte : e tc err oc ni tse etnavius noitaralcéd a L .etnatsnoc enu ceva ecneré fér enu resilaitini sap tuep en nO .q ecneré fér al ed noitaci fido m al ed non te ,p ecner - é f é r e d t n e m e c a l p m e ’ l à q e d r u e l a v a l e d n o i t a t c e f f a ’ l e d t n e m e r i ot a gi l b o t i g a ’ s l i , q = p z e v -ircé suov ; n=p & tni éralcéd tna ya ,is : te ffe tec à uvérp tse’n emsinacé m nucua ,sruellia’D .eéi fido m ertê sulp tuep en ecneré fér enu ,)eésilaitini te( eéralcéd siof enu’uq neib zetoN int & p ; // incorrect, car pas d’initialisation : snad e mmoc ,resil -aitini’l snas ecneréfér enu reralcéd ed elbissop sap tse’n li ,elarénég noça f enu’D .)n ed ecner -é fér al à( noitasilaitini enu’d eéngapmocca )p ici( ecneré fér ed noitaralcéd enu tiaf ne tse int & p = n ; : n oi tar al cé d a L 13.2.2 Initialisation de référence .s ec ner - é f ér e d x u a el b at s e d i n ,s e c n er é f ér s e d r us sr u et n i o p s e d ri n i f é d e d el b iss o p s a p ar e s e n l I e uqrameR .3 ruelav al snordneitbo suon n = 3 ; cout << p ; : ceva ,elpmexe raP .erio mé m tnemecalp me e mêm el tnor - e n g i s é d p t e n , et i us al s n a d ,i s n i A . n el b air a v a l à e c n er é f ér e n u ts e p e u q e i f i n gis e d n o c es a L int n ; int & p = n ; : snoitcurtsni sec ,elpmexe rap ,zerédisnoC .elbairav ertua enu’d ecneré fér em moc ruetaci fitnedi nu reralcéd ed elbissop tse li ,elarénég erèinam enu’D 13.2.1 La notion de référence est plus générale que celle d’argument .ici reni maxe snolla suon euq ec tse’C .ruoter ed ruelav ed uo tnemugra’d noiton al ed srohed ne rinevretni tuep ecneré fér ed noiton al ,rueugir etuot ne ,tnadnepeC .ruoter ed ruelav ed uo stne mugra’d noissi msnart al snad edisér ecneré fér ed noiton al tnanrecnoc leitnesse’L .s p m e t r ei m er p n u s n a d ér o n gi er t ê t u e p e h p ar g ar a p e C .B.N 13.2 La référence d’une manière générale 13 - Compléments sur les références 135
  • 163. . t n a l e p p a e m m ar g or p el s n a d r u ot er t e t n ar u o c t a t é’l e d n o it ar u a ts er • ; r u ot er e d r u e l a v a l e d e i p o c er • ; )s ne il ed ruetidé’l rap einruo f tia f ne ares evitini féd esserda’l tnod( noitcno f al à tnemehcnarb • ; st n e m u gra se d sr u el a v s e d ei p oc t e el i p al r us e ca ps e’ d n oi ta c ol la • ; )elp mexe rap enihca m al ed sertsiger sniatrec ed sruelav( tnaruoc taté’l ed edragevuas • : t n e m m at o n , n oi tc n o f al te tnaleppa emmargorp el ertne noitacinum moc al rilbaté ruop selitu snoitcurtsni sed tne m -elagé sia m ,tnadnopserroc elbatucéxe edoc ua tne mehcnarb el tne melues non ,riovérp tiod ruetalipmoc el ,noitcno f ettec ed leppa euqahc ruop ,sniomnaéN .ruetalip moc el rap sio f elues e n u ér é n é g t s e n o it c n o f e n u à t n a d n o ps err o c e l b a t u c é x e e d o c e l , er d n e tt a y’s t u e p n o e m m o C 14 La spécification inline .1.31 te 2 .5 s ehp arg arap x u a tir cé d t ne m -etropmoc el isnia evuorter nO .ruoter ed ruelav enu ruop emêm ed av ne lI .seésilitu tnos iuq erircéd ed snonev suon euq selgèr sel cnod tnos ec ,ecneréfér enu’d sac el snaD .steu m stne mugra sed » noitasilaitini « enu à tiudnoc noitcno f enu’d leppa’l ,rueugir etuot nE e uqrameR float x ; int temp = x ; const int & n = temp ; : )pmet eriarop met elbairav al à redécca riovuop sio fetuot snas( icec tircé zeiva suov is em moc essap es tuot ,erocne icI .n snad ecneré fér as tnecalp te tni ne x ed noisrevnoc al ed tatlusér el tnanetnoc eriaropmet elbairav enu’d noitaérc al à tnesiudnoc sellE float x ; const int & n = x ; : s et c err o c er o c n e t n o s s et n a v i us s n o it ar a l c é d s el , n i f n E .er iar op m et e lb -airav al à sècca tne meticilpxe sap zeva’n suov ,sac reimerp el snad ,euq ecneré ffid ettec ceva int temp = 3 ; int & n = temp ; : tir cé ze i va s u ov i s e m m o c essap es tuot euq erid tuep nO .n snad ecneré fér as ecalp te 3 ruelav al tnanetnoc )noitaralcéd al ed tne mecalpme’l rap eésopmi eiv ed eérud enu tna ya( eriarop met elbairav enu erènég ellE const int & n = 3 ; : et c err o c e ll e-t s e e t n a vi us n o i t ar a l c é d al is n i A .s e t n a ts n o c s e d r a p s e é si l - ai ti n i er t ê sr o l a t n e v u e p i u q s et n ats n o c s e c n er é f ér s e d r i ni f é d e d el b iss o p t s e li , e h c n a v er n E 136 Les fonctions CHAPITRE 7
  • 164. .ruessecorpérp el rap éutceffe tiaté elbarapmoc liavart nu ,orcam enu’d sac el snad euq srola ,emêm -iul ruetalipmoc el rap éutcef fe liavart nu’d ici neib tiga’s li’uq zetoN .1 .sleppa’d erb mon el ceva t nass i orc er i o mé m e d ét it n a u q e n u are m m os n oc i u q ec , le p p a e u q a hc à se éré né g t n ores s et n a d -nopserroc snoitcurtsni sel ,ehcnaver nE .spmet ed eimonocé enu temrep iuq ec ,)...seipocer ,sedragevuas ed nioseb sulp a y’n li( sulp aretsixe’n ruoter ud te leppa’l ed noitseg ed leut -ibah e msinacém e L .) enihca m egagnal ne( setnadnopserroc snoitcurtsni sel em margorp ud nies ua reroprocni arved ruetalipmoc el ,emron ed leppa euqahc À .erianidro noitcnof enu’d tnem meré ffid emron noitcno f al retiart ed ruetalip moc ua ednamed enilni to m ud ecnesérp a L .tne mugra ne tinruof iul no’uq setnasopmoc siort à ruetcev nu’d emron al reluclac ed tub ruop a emron noitcno f a L 1 engil ne noitcnof enu’d noitasilitu’d te noitiniféd ed elpmexE norme de v1 : 2.23607 norme de v2 : 3.31662 /* exemple d’utilisation */ main() { double v1[3], v2[3] ; int i ; for (i=0 ; i<3 ; i++) { v1[i] = i ; v2[i] = 2*i-1 ; } cout << "norme de v1 : " << norme(v1) << "n" ; cout << "norme de v2 : " << norme(v2) << "n" ; } } for (i=0 ; i<3 ; i++) s+= vec[i] * vec[i] ; return sqrt(s) ; #include <cmath> // ancien <math.h> #include <iostream> using namespace std ; /* définition d’une fonction en ligne */ inline double norme (double vec[3]) { int i ; double s = 0 ; pour sqrt : elpmexe tec ze yoV .enilni noitaci ficéps al à ecârg ,edoc ud elliat al ed tne mirtéd ua ,snoitcnof sed leppa’l snad spmet ud rengag ed temrep suov ++C ,tnatropmi erètirc nu tneived edoc ud étic -acif fe’l euqsro L .noitcno f al ed latot noitucéxe’d sp met ud tnatropmi egatnecruop nu retnes - ér p er t n e v u e p » e ci vr e s « e d s n o it c urts n i s e t n er é f f i d s e c , » s n o i t c n o f s et it e p « e d s a c el s n a D 14 - La spécification inline 137
  • 165. .etropmoc alec euq sruerre’d seuqsir sed unet etpmoc ,» elbannosiar « sap tiares en iuq ec ,noitini féd al siof srueisulp erircé ne’d sniom À .1 . 1 3 er t i p a h c u d 2. 2 e h p ar g ar a p u a s or c a m s e l s n or e i d u t é s u o N .) ! C n e s a p e ts i x e ’ n e n i l n i ( + + C n e s e é l l i e s - n o c é d t n e i o s s or c a m s e l e u q e u q i l p x e i u q e c t s e’ C .) d r o b e d s t e f f e’ d t n e m m a t o n( s e u q -s i r s d n ar g s èr t e d e t n e s ér p s or c a m s e d i o l p m e’ l r a c , à l e t êr r a ’s e c n a l b m e s s e r a l s i a M . er - i o m é m eca p se’ d e tre p e n u’ d ei tra per t n o c ne , n oi t u cé x e’ d s p me t e d n ia g n u t ne it b o n o – ; )r u e t a li p m o c u d u a e v i n u a s u l p n o n t e ,s i o f ettec ,ruessecorpérp ud uaevin ua( leppa euqahc à tiudortni tse tnadnopserroc edoc el – : en iln i ed iolpme’l ceva sedutili mis seuqleuq etnesérp elle te )sorcam sed tnos C ud dradnats euqèhtoilbib al ed » snoitcno f « sed seniatrec ,sruellia’d( noitcno f enu emmoc elleppa’s orcam a L .etxet ed seérté marap snoitutitsbus sed srola eutce ffe iuq ruessecorpérp ua s e i nr u o f s n o it c urts n i’ d ti g a’s l I . » s or c a m « s e d r i ni f é d e d ét il i bi ss o p al C e d ét ir é h a + + C seriatnemélpmoc snoitamrofnI .) esser d a ettec à eéutis noitcno f enu’d leppa leutnevé nu ecalp ne erttem ed sniom erocne te esserda enu reubirtta iul ed elbapacni tiares li ,eriartnoc sac el snad( erianidro noitcno f enu are f ne ruetalipmoc el ,enilni eéralcéd noitcno f enu’d esserda’l )énrecnoc ecruos reihci f ud nies ua( trap euqleuq zesilitu suov is ,e mê m eD .erianidro noitcno f enu eria f ne te engil ne eriudortni’l sap en )esueni mulov tse noitcno f al is ,elpmexe rap( tnemelleutnevé tuep reinred eC .ruetalipmoc ud sèrpua eéutce ffe edna med enu eutitsnoc enilni noitaralcéd a L e uqrameR . et êt- n e reihci f nu snad recalp al tne mulosba ardua f li ,sem margorp stneré ffid rap eégatrap ertê essiup e n g i l n e n oi t c n o f e m ê m e n u’ u q r u o p ,t e f f e n E . e n g il n e n oi t c n o f al r a p s tr e f f o s e g a t n a v a xua elbaton eitrapertnoc enu eutitsnoc eérapés noitalipmoc ed étilibissop ed ecnesba etteC 1 double norme (double) ; : euq ellet noitaralcéd ed elp mexe erton s n a d s a p e v u or t e n n o ,is n i A .) e i ni f é d er t ê’ d t n a v a , e cr u os r e i h c i f n u’ d ni es u a , e és il it u t s e e ll e is fuas( noitcno f ellet enu reralcéd ed eriassecén sap tse’n li’uq euqilpxe aleC ! tnemérapés e é l i p m o c e r t ê s u l p t u e p e n e ll E . es il it u’ l n o ù o i u l e c e u q e cr u os r e i h c i f e m ê m el s n a d eini féd ertê tiod engil ne noitcnof enu ,emêm erutan as rap ,euq reton ed tnatrop mi sèrt tse lI 138 Les fonctions CHAPITRE 7
  • 166. xuaelbat sel sérég tnos tnod erèinam al rus tniop el srola snore f suoN .sruetniop ed siaib el rap ,eteled te wen sruetarépo sel rap etre ffo erio mé m al ed euqiman yd noitseg ed noiton etnatropmi’l srola snoriudortni suoN .sruetniop sed à selbacilppa snoitarépo setneré ffid sel reiduté’d tnava ,ruetniop te uaelbat ertne etsixe iuq tiorté troppar el etiusne snoreni maxe suoN .ruetniop nu’d edia’l à ecneré fér rap noissimsnart enu » relumis « à snordnerppa uson te » euqitémhtira « ruel euq isnia ,tnehcatta y’s iuq & te * sruetarépo sel te ruetniop ed noiton al snoredroba suon siuP .noitaralcéd ruel ed srol xuaelbat sed resilaitini tne mmoc snorert -nom suoN .secidni srueisulp à xuaelbat sed re yolpme’d te mrep ++C tnemmoc etiusne snor -rev suoN .uaelbat let nu’d noitasilitu’l tnanrecnoc selarénég selgèr seuqleuq snorennod suon te ecidni nu à uaelbat nu’d têrétni’l tnartnom elp mis elpmexe nu rap snorecnem moc suoN . er ti p a h c l u es nu snad seépuorger tneios snoiton xued sec euq ei fitsuj iuq ec tse’C .noitcno f enu’d leppa’l ed tnemugra ne simsnart tnos ic-xuec euqsrol tnem maton ,xuaelbat sed tnemetiart el snad retucrepér es tuep aleC .» ruetniop etnatsnoc « enu tse uaelbat ed ruetaci fitnedi nu’uq riovas à ,snoiton xued sec ertne etsixe tceridni neil nu ++C ne’uq evuort es li ,sio fetuoT .ertua’l ed enu’l seéngiolé tro f ertîarap tnevuep sruetniop ed te xuaelbat ed snoiton xued sec ,iroirp A .)...snoitcno f ,selbairav( sesohc sertua’d sesserda sed rinetnoc à seénitsed selbairav ed erid-à-tse’c ,sruetniop ed esopsid ++C ,sruellia raP .elbmesne’l ed nies ua noitisop as tnasicérp ecidni nu rap éréper tse tne mélé euqahc ; e u q i n u r u e t a c i f i t n e di n u r a p s é n gis é d ) é ni mr e t é d er b m o n n e( e p yt e m ê m e d st n e m él é’ d e l b m e s n e n u i s n i a e m m o n n O . x u a e l b a t s e d r es il it u’ d t e mr e p + + C ,s e g a g n a l s e l s u ot e m m o C Les tableaux et les pointeurs 8
  • 167. } for (i=0 ; i<10 ; i++) { cout << "donnez la note numero " << i+1 << " : " ; cin >> t[i] ; } for (i=0, som=0 ; i<10 ; i++) som += t[i] ; moy = som / 10 ; cout << "Moyenne de la classe : " << moy << "n" ; for (i=0, nbm=0 ; i<10 ; i++ ) if (t[i] > moy) nbm++ ; cout << nbm << " eleves ont plus de cette moyenne" ; #include <iostream> using namespace std ; main() { int i, nbm ; float moy, som ; float t[10] ; : t na v i us e m m ar g -orp el ertnom el em moc ,e mèlborp ec à elbanevnoc noitulos enu rirf fo suon av eL .)s e t o n e d t n atr o p m i er b m o n n u à e l b as o ps n ar t t n e m el i ci f f i d t i ar es , er è i n a m e t u o t e d , i u q e d o h t é m( setneré ffid serialacs selbairav tgniv riovérp ed elbannosiar uep tîarap li ,eria f ec ruoP .s et o n t g ni v se c re s - ir o m é m ri o v u o p e d er i ass e c é n c n o d ts e l I . e u n e t b o is n i a e n n e y o m a l à s er u e ir é p us t n os s e ll e ertne’d neibmoc renimretéd ruop seton sel retlusnoc riovuop uaevuon à tua f suon li ,ici ,siaM .erutcel ruel ed erusem à te ru f ua ,elbairav enu snad tnalumuc sel ne ,em mos al reluclac n e’d t iar i f f us su o n l i , se t on s ec e d e nn e y o m al t n e m elp m is re lu cl ac e d e uq ti ass i ga’s e n l i’S . es s a l c a l e d e n n e y o m a l à s er u e ir é p us t n os s el l e er t n e’ d n ei b m o c ,) s e é n n o d ne seinruo f( sevèlé’ d seto n tgniv ed ritrap à ,reni mreté d sn oitia huos s uon euq sn osoppuS ua elbat 1.1 Exemple d’utilisation d’un tableau en C++ 1 Les tableaux à un indice . n oi t uc é xe’ l e d l i f ua re u l o v é t ue p n o is ne m i d al t n o d x ua el b at se d ri ni f é d ed tnattemrep rotcev ém mon elbarté marap essalc ep yt nu tinruo f dradnats euqèhtoilbib al euq niol sulp snorrev suoN .xuarudécorp segagnal sed uaelbat ed noiton al à tnednopserroc sli ; » ++C ed s fitan xuaelbat « sel releppa tiarruop no’l ec ici snoiduté suoN .B.N .s n oi t c n o f s e d rus sruetniop sed noitatnesérp al rap snorenimret suoN .noitcno f enu’d tnemugra ne si msnart 140 Les tableaux et les pointeurs CHAPITRE 8
  • 168. t[n-3] t[3*p-2*k+j%l] : s et c err o c t n os s n oi t a t o n s e c , e p y t e d tnos te , , is ,elp mexe raP .)seéngis non setnairav sruel ceva gnol ,trohs ,tni( euqnocleuq r e i t n e e p y t n u’ d e u q it é m ht ir a n o iss er p x e el l e u q etr o p m i’ n e d e mr o f a l er d n er p t u e p e ci d n i n U j k p tni n 1.2.2 Les indices ne ; 2t = 1t .xuaelbat ed selabolg snoitatce ffa’d étilibissop enucua er ffo’n ++C ,tiaf erircé’d ,sreitne’d xuaelbat sed tnos te is ,elbissop sap tse’n li ,ehcnaver nE 2t 1t t[3]++ --t[i] : snad em moc ,noitatnemércni’d ruetarépo nu’d ednarépo em moc ertîarappa issua tuep lI t[2] = 5 : s n a d e m m o c n o it at c e f f a’ d r ue tar é p o n u’ d e hc u a g à er tî ara p pa c n o d t u e p l I . e u l a v l e n u t s e u a e l b a t e d t n e m é l é n U 1.2.1 Les éléments de tableau 1.2 Quelques règles . ep yt ed erialacs elbairav enu’uq elôr emêm el euoj ellE . ed ruelav al rap einruo f tse uaelbat e u q el l et n o it at o n e n u , t n e m el aré n é g s ul P el s n a d n oi ti s o p a l t n o d t n e m é l é n u e n gis é d . r a p r e i n r e d e l , r a p e m èi s i ort e l , r a p é n g i s é d ares uaelbat ud tne mélé rei merp e L . à ed tnov secidni son ,cnod ,icI . oré mun el etrop noitisop erèi merp al ,++C ne ,tnemellennoitnevnoC .ecidni eé mmon ,uaelbat el snad noit -isop as rap éréper tse tne mélé euqahC . ep yt ed stnemélé 01 ruop tnemecalpme’l evresér tni i ]i [t ]91 [t 9 ]2[t ]0[t 0 0 taolf float t[10] : n oi tar al cé d a L uaelbat nu’d noitasilitu’d elpmexE Moyenne de la classe : 9.05 4 eleves ont plus de cette moyenne onnez la note numero 2 : 12.5 donnez la note numero 3 : 8 donnez la note numero 4 : 2.5 donnez la note numero 5 : 7 donnez la note numero 6 : 5 donnez la note numero 7 : 14 donnez la note numero 8 : 8.5 donnez la note numero 9 : 15 donnez la note numero 10 : 7 141 1 - Les tableaux à un indice
  • 169. . e c i d n i’ d e l ô r t n o c e d s é t i l i b -issop sed arir f fo , dradnats euqè htoilbib al rap ésop orp ,rotcev ep yt el euq snorrev suoN 2 .)uaelbat ud tnemélé euqahc ed elliat al à lennoitroporp issua te( ed ruelav al à lennoitroporp egalacéd nu , uaelbat ud tubéd ed esserda’l à tnatuoja n e e s s e r d a ’ l e n i m r e t é d n e l i , e u q el l e t e u l a v l e n u er t n o c n er r u e t a l i p m o c e l e u q sr o l ,euq rio vas tua f li ,secneuqésn oc sel erd nerp moc ne ruoP .ruetniop nu’d siaib el rap eri a f e s , + + C n e , t ne me la g é t u e p ua el b at n u’ d t n e m él é n u à s ècc a’l e u q ec e d u ne t e t p m o c ,udra sulp erocne udner tse emèlborp el euq snorrev suon ,sruellia raP .sp met ed etrep enu à t i ar i u d n o c i u q e c , n o i t u c é x e’l e d sr o l n o it a c i fir é v et t e c t n ar u ss a s eri at n e m él p p us s n o i t -curtsni’d ,tejbo e mmargorp el snad ,noitaroprocni’l tiaretissecén aleC .euqnocleuq nois -serpxe enu’d tiga’s li ùo sac sel suot snad tne melagé siam ,etnatsnoc enu tse ecidni’l ùo sac el snad tnemelues non ,eria f es riovuop tiarved ecidni’d elôrtnoc el ,ecaci ffe ertê ruoP 1 i t ]i[t se uqrameR .uaelbat el sèrpa uo tnava éutis tne mec -alp me nu ,rei fido m ed ,cnod ,te rengiséd ed )! erid tuep no’l is( elicaf sèrt tse li’uq etros eD .sruetalip moc sed trapulp al rap ecalp ne sim tse’n ecidni’d tne medrobéd ed elôrtnoc nucuA 1.2.4 Débordement d’indice int nel ; ..... cout << "Combien d’elements ? " ; cin >> nel ; int t[nel] ; // erreur : nel n’est pas une expression contante : s a p t i ar e s el e n i c- el l e c , e h c n a v er n E cont int N = 50 ; ..... int t[N] ; float h[2*N-1] ; e nu u o etnatsn oc : etcerroc tse noitcurtsnoc ettec ,isniA . enu’uq ertê tuep en )stnemélé’d erb mon nos( uaelbat nu’d noisne mid a L etnatsn o c n o isserp x e 1.2.3 La dimension d’un tableau . no i ta l -ipmoc ed ruerre enu à ariudnoc tnattolf ep yt ed secidni’d noitasilitu’d evitatnet al ,ehcnaver nE .)! engis ed tubirtta’l à noitnetta( selleutibah selgèr sel tnavius tni ne eitrevnoc tne melp - mis ares ruelav as ,sac ec snad ; erètcarac ep yt ed ertê tnemelagé tuep ecidni nu ,eiroéht nE . t n i e p y t e d t n os s e t n a d n o ps err o c s n ois s er p x e s e l e u qs i u p rahc e p yt e d t n os 2c te t[c1+3] t[c2-c1] : ed , 1c is ,e mê m ed a v n e l I 142 Les tableaux et les pointeurs CHAPITRE 8
  • 170. . ua elb -a t u d àl ed- u a e ts uj é u tis t ne me ca lp m e nu e n gis é d n oi t a t o n a l , ert n o c r a P . t n e m él é’l t i a f n e e n g is é d n o it at o n a l e u q z e y o v s u o v ,st n e m él é e d u a el b a t erton ceva sruojuot ,elpmexe raP .uaelbat ud eitros snas ecidni’d tnemedrobéd riova y tuep li ,dnerp li’uq sruelav sel te énrecnoc ecidni’l tnaviuS . » edrobéd « secidni sed nu’l euqsrol • ; uaelbat nu’d stnemélé stneré f fid xua ruetniop nu’d edia’l à redécca etiahuos no’l euqsrol • ; uaelbat nu’d snoisnemid seniatrec resicérp ed te mo no’l euqsrol • : secnatsnocric siort sniom ua snad ecnedicni enu a erdro tec euq snorrev suoN ]0[]5[t ]5[]0[t 3 x 5 ]2[]1[t t t[0][0] t[0][1] t[0][2] t[1][0] t[1][1] t[1][2] .... t[4][0] t[4][1] t[4][2] : tius em moc sénnodro stnemélé ses tiarrev tne mmedécérp éralcéd uaelbat el ,isniA .)ésoppo erdro’l esilitu nartroF ,erdro emêm el esilitu lacsaP( reimerp ne ecidni reinred el reirav tnasiaf ne unetbo erdro’l tnavius ségnar tnos uaelbat nu’d stne mélé se L t 2.2 Arrangement en mémoire des tableaux à plusieurs indices .ritnes eria f es ed tneuqsir énnod tne mennorivne nu à seéil eriomém elliat ed snoitatimil sel selueS .uaelbat nu retrop moc tuep euq secidni’d erbmon el rus esèp en noitatimil enucuA . + + C n e s n es n u t n ei a s n o it at o n s e ll et e d , dr a t s u l p u e p n u s n orr e v el suon em moc ,euq neib uo euq sellet snoitaton ed emêm ed sap sio fetuot ari ne’n lI .eulavl enu tse uaelbat let nu’d tnemélé nu tnangiséd noitaton al ,erocne àl ,euq neib zetoN ]3[t t[i][j] ] j[t t[3][2] t[i-3][i+j] : snoitaton sec snad e mmoc secidni xued rap éréper srola ev u or t es u ae lba t ec ed e uq n oc le uq t ne mé lé nU .s t ne mé lé ed uaelbat nu evresér )3 x 5( 51 int t[5][3] : n oi t ar al c é d a l , el p m e x e r a P .)snoisnemid srueisulp à iss u a ti d n o( s e ci d n i sr u eis u l p à x u a el b at s el es ir ot u a + + C ,s e g a g n a l s e d tr a p ul p a l e m m o C 2.1 Leur déclaration 2 Les tableaux à plusieurs indices 2 - Les tableaux à plusieurs indices 143
  • 171. : )snoitalumro f xued sel rerapmoc ed elica f sulp tios li’uq ruop sev -itucésnoc sruelav sed isiohc tnemeriatnolov snova suon( stnelaviuqé selpmexe xued sec ze yoV 3.2 Initialisation de tableaux à plusieurs indices voyelles [2] = ’i’ ; // interdit : e é t e j e r a r e s u a e l b a t u d n o i t a c i f i d o m e d er u e i r é t l u e v i t a t n e t e t u o t , u d n e t n e n e i B const char voyelles [] = {’a’, ’e’, ’i’, ’o’, ’u’, ’y’} ; : s n a d e m m o c r es il ai ti n i’l t e t n a ts n o c u a e l b a t n u r er al c é d t u e p n O e uqrameR int tab[] = { 10, 20, 5, 0, 3 } ; : à et n e l a v i u q é ts e e h p ar g ar a p e c e d n o it ar a l c é d erèimerp al ,isniA .noitasilaitini’l snad seéré muné sruelav ed erb mon el rap ruetalipmoc el rap eénimretéd srola tnaté ic-ellec ,uaelbat ud noisne mid al erttemo’d elbissop tse li ,sulp eD .)euqitamotua( seriotaéla uo )euqitats( oréz à seésilaitini ,uaelbat ud noitacolla’d essalc al tnavius ,tnores setnauqna m sruelav se L int tab[5] = { 10, 20 } ; int tab[5] = { 10, 20, 5 } ; : se l p m e xe se c snad e mmoc ,sruelav serèi merp sel euq sedalocca sel snad rennoitnem en ed elbissop tse lI . uaelbat ud stnemélé qnic sed nucahc snad te , , , sruelav sel ecalp bat 3 0 5 02 01 int tab[5] = { 10, 20, 5, 0, 3 } ; : noitaralcéd a L 3.1 Initialisation de tableaux à un indice .selp mexe seuqleuq droba’d iciov nE .noitaralcéd as ed srol uaelbat nu )tnemelatot uo tnemelleitrap( resilaitini’d ,erialacs elbairav enu ruop tia f el no em moc ,elbissop tse lI .t n e m e t i c il p m i s és il a it i ni s a p t n os e n e u q it a m o t u a ess al c e d x u a el b a t s e l ; oréz à sésilaitini ,tua féd rap ,tnos euqitats essalc ed xuaelbat se L .euqitamotua uo euqitats essalc ed ,noitaralcéd ruel tnavius ,ertê tnevuep xuaelbat sel ,serialacs selbairav sel e mmoC 3 Initialisation des tableaux .s n ois n e m i d sr u e is ul p à x u a e l b a t s e d s a c e l s n a d s el b a l a v t n ets er , n o is n e mi d e n u à xuaelbat sed soporp à ,2.1 ehpargarap el snad ,séuqové stniop stneré ffid sel ,udnetne neiB e uqrameR 144 Les tableaux et les pointeurs CHAPITRE 8
  • 172. const int NEL = 10 ; void fct (int p) { int n ; ..... int tab[] = {NEL, p, 2*p, n+1, n+p} ; ..... } : el oc é’ d elp m e xe n u i ci o v n E . u ae lba t u d s t ne mé lé se d ep yt e l ce va no i ta tc e f f a r ap e lbi t -ap moc ep yt nu’d noisserpxe elleuq etropmi’n resilitu tuep no ,euqitamotua uaelbat nu ruoP • void f() { const int N = 10 ; static int delta = 3 ; ..... int tab[5] = { 2*N-1, N-1, N, N+1, 2*N+1} ; int t[3] = { 0, delta, 2*delta } ; } : elpmexe nu iciov ne ; tsnoc tubirtta’l ceva seéralcéd seuqita motua selbairav sed uo seuqitats selbairav sed ertîarappa eriaf y tuep no ; uaelbat ud stnemélé sed ep yt el ceva noitatcef fa rap elbitapmoc ep yt nu’d setnatsnoc snoisserpxe sed ertê tneviod noitasilaitini’d sruelav sel ,euqitats uaelbat nu ruoP • : riovas à ,serialacs selbairav sed sruesilaitini sel euq selgèr semêm sel tnevius uaelbat nu’d stnemélé sel ruop selbasilitu sruesilaitini se L 3.3 Initialiseurs et classe d’allocation int tab [3] [4] = { { 1, 2 } , { 3, 4, 5 } } ; int tab [3] [4] = { 1, 2 , 3, 4, 5 } ; : )setnelaviuqé non siam( setcerroc tnos setnavius snoit -ar al cé d se L .se si m o er tê t n e v u e p sr u el a v s erè i nr e d s el , x ua e vi n x u e d s e d n uc a hc à ,er o c n e à L .er dro tec tnavius uaelbat ud sruelav sel rerémuné’d etnetnoc es elle te ,eriomé m ne ségnar tnemev -itce ffe tnos stnemélé sel tnod erèinam al etiolpxe ,elle ,ednoces a L .nucahc stnemélé ertauq ed xuaelbat siort ed ésopmoc em moc uaelbat erton rerédisnoc à tneiver e mro f erèi merp a L int tab [3] [4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 } ; int tab [3] [4] = { { 1, 2, 3, 4 } , { 5, 6, 7, 8 }, { 9,10,11,12 } } 3 - Initialisation des tableaux 145
  • 173. n = 30 ; : c e v a t a t l u s ér e m ê m e l u n e t b o s n oir u a s u o n , i c i , u d n et n e n e i B n 03 da : etnavius al tse noitautis al ,noitcurtsni ettec ed noitucéxe sèrpA .)sreitne sed rus ruetniop nu tse ,sap zeilbuo’l en ,rac ruelav al tnemelpmis sap te reitne’l snosid suon euq neib zeton( esserda ruop tna ya reitne’l etnesérper r O . r ue la v a l eulavl al à retce ffa : ei fingis da da da* 03 da* *ad = 30 ; : etnavius noitcurtsni’L da n 02 : n oi t a u ti s al isnia resitaméhcs tuep no ,noitucéxe nos sèrpA . elbairav al ed esserda’l elbairav al snad ecalp noitcurtsni ettec ,isniA .ednarépo nos ed esserda’l tatlusér e mmoc tinruo f iuq erianu ruetarépo nu tse ruetarépo’L . noisserpxe’l ed ruelav al elbairav al à etce ffa n & da n& da ad = &n ; : noitcurtsni’L .reitne nu’d esserda’l tse euq neib eifingis iuq ec ; ep yt ed tse , esserda’d tejbo’l erid-à-tse’c , euq ei fingis noitaralcéd ettec euq erid tuep no ,euqinomén m ertit à ,isniA .tius el iuq esserda’l à éutis unetnoc el engiséd iuq ruetarépo nu tse euq snorrev suoN .sreitne sed rus ruetniop nu tnaté em moc eé mmon elbairav enu evresér erèimerp a L da tni da da* * da int * ad ; int n ; n = 20 ; ad = &n ; *ad = 30 ; // on peut écire aussi : * ad = 30 ; // on peut aussi écrire : int *ad ; : s n oi t c urt s ni s e l s n or é d is n o c , n oi t o n e ll e v u o n e tt e c à n o it c u d or t ni’ d es i u g n E .sr u e t - n i o p s e é m m o n s e l b a ir a v e d e r i a i d é m r e t n i ’ l r a p s e s s er d a s e d r e l u p i n a m e d t e mr e p + + C 146 4.1 Introduction 4 Notion de pointeur – Les opérateurs * et & Les tableaux et les pointeurs CHAPITRE 8
  • 174. .)etneré ffid noitacifingis enu tiarua nois -serpxe ettec ,sesèhtnerap sel snas ,euq niol sulp snorrev suon( euq elôr emêm el tiareuoj + +n (*ad1) ++ : n o isserp xe’ l te n = n + 3 : e uq elôr e m ê m e l ti are u oj *ad1 += 3 : n oi s s e r p x e ’ l , e l b a r a p m o c e r è i n a m e D n = p + 2 ; , 2da : e u q el ôr e m ê m e l i c i c n o d e u oj n o i t c urt s n i et t e C . e d e é t n e m g u a ess er d a’ d )er èi t ne( r u el a v al rap eéngiséd esserda’l à ecalp elle ,tid tne mertuA 2 1da *ad2 + 2 1da* à et c e f f a e m è i s i or t a L . t e e d s ess er d a s e l p n 2da te 1da : n oi ss er p x e’ l e d r u e l a v al snad tnecalp serèi merp xued se L ad1 = &n ; ad2 = &p ; *ad1 = *ad2 + 2 ; : s n o it c urts n i s e c t n a n et n i a m s n or é d is n o C . es uep m or t s n io m tse )e lba ira v e d m o n e l te * er tn e ec apse s nas( er ia t ne m -moc ne einruo f noitaralcéd ed emro f al euq zetoN .sreitne sed ,xue à tnauq ,été tneiarua te siam )reitne tse e u qs i u p( r e i t n e n u r us r u e t n i o p n u ét é n ei b t i ar u a e l b a ir a v al da 1da* 1da // ou : 2da int * ad1, ad2, ad ; int *ad1, ad2, ad ; : tircé tiava no’l is ,reilucitrap ne ,noitaralcéd al ed e mr o f a l n ei b ze u qra m e R .sr ei t ne s e d r us sr u et n i o p s e d c n o d t n os t e , s elb air av s e L da 2da 1da int * ad1, * ad2, * ad ; int n = 10, p = 20 ; // ou : int *ad1, *ad2, *ad ; : s no i tara lc é d s ec éut -ceffe sno ya suon euq zesoppuS .sruetarépo xued sec ed noitasilitu’d selpmexe seuqleuq icioV 4.2 Quelques exemples .n& uo da* euq ellet noisserpxe enu sesèhtnerap ertne recalp ed eriassecén sap tse’n li’uq tia f eévelé étiroirp ruel ,emêm eD .)eria f el rûs neib tuep no sia m( ednarépo euqinu ruel te xue ertne ecapse’d recalp ed eriassecén sap tse’n li’uq etros ed ,sruetarapés ed tnevres & uo * ,ruetarépo tuot em moC e uqrameR 147 4 - Notion de pointeur – Les opérateurs * et &
  • 175. tse li ,trap ertua’D .tnadnopserroc tne mecalp me’l à tne melleér tnavuort es noitamro fni’l tios e u q s el l e t s n o i s s e r p x e s e d e u q n e i b z e t o N euq elleuq ,sedilav ,larénég ne ,tnos uo .tnavius tnemélé’l engiséd elle’uq erèinam ed snad eunetnoc esserda’l cnod etnemércni ++da 1 +da da ad++ .s te t co : noisserpxe’l ,elbarap moc erèina m eD ed tiares ecneré ffid ettec )elbuod(foezi s double * ad ; : rap eéralcéd été tiava iS .)énnod ep yt nu’d ,stetco ne ,elliat al tinruo f ruetarépo’l euq sap zeilbuo’n( stetco e d i c i ts e t e ert n e e c n er é f f i d al ,tne mésicérp sulP .)tetco( 1 ed eétne mgua ed esserda’l sap etnesérper en sussed-ic nois -serpxe’l ,tef fe nE .reitne erb mon nu ceva ruetniop nu erdno fnoc sap tua f en li’uq neib zetoN .senîahc ed uo xuaelbat ed tnemetiart el snad elitu tro f areréva’s alec euq snorrev suon siaM .tiordne tec à evuort es iuq ec edutitrec ceva sap snovas en suon rac ,têrétni’d erèug a’n alec ,elpmexe erton snad ,setreC .tnavius reitne’l ed esserda’l etnesérper su sse d- ic no iss erpx e’l , ++ C r uop , te r ei t ne nu’ d es ser da’ l r i ne t n oc e és ne c ts e , t e f f e n E . + + C r u op s n es n u a da fo ezis )tni(foe zis da 1 +da da da ad + 1 : euq ellet noisserpxe enu int * ad ; : isnia eéralcéd été a ruetniop elbairav enu is rO .seétniop sruelav sel sia m ,se mê m -selle sruetniop selbairav sel sap non ,relupinam ed sétnetnoc sem mos suon suon ,ici’uqsuJ da 4.3 Incrémentation de pointeurs .xuaelbat sed uo se nîahc sed tn ores sétniop stejbo sel euqsrol étiuca’d sulp erocne ardnerp euqramer etteC .reitne let nu ruop tnemecalp me nu sulp ne sap evresér e n ellE .reit ne nu rus ruetniop n u ruop tne mecalp me nu e vresér int * ad ; : e u q e l l e t n o i t ar a l c é d e n U 2 (&ad)++ ou (&p)++ // erreur : n o it al i p m o c ne seétejer tnores setnavius snoisserpxe sel ,elarénég erèina m enu’D .)euqnocleuq erialacs elbairav enu tiares n ùo ,n& à tiareuqilppa’s euqramer emêm al( reifidom al ed noitseuq ertê tiaruas en li te exif tnemeriassecén tse esserda etteC .ruetalipmoc el rap eini féd été a elle’uq ellet da elbairav al ed esserda’l sia m ,da em moc ruetniop elbairav enu sulp non ,engiséd n o i s s er p x e e t t e c ,t e f f e n E . d a & e d e m ê m e d s a p a v n e ’ n l i , e h c n a v e r n E . s e l b a i f i d o m t n o s da* te da tid tnemertua ; eulavl sed tnos da* te da snoisserpxe sel ,ruetniop nu tse da iS 1 se uqrameR 148 Les tableaux et les pointeurs CHAPITRE 8
  • 176. .ecneréfér ed noiton al sap tiadéssop en egagnal ec rac ,C ne sruemmargorp sel redécorp tneiaved euq isnia tse’C .1 noitcnof enu’d tnemugra ne sruetniop ed noitasilitU avant appel : 10 20 apres appel : 20 10 #include <iostream> using namespace std ; main() { void echange (int *ad1, int *ad2) ; int a=10, b=20 ; cout << "avant appel : " << a << " " << b << "n" ; echange (&a, &b) ; cout << "apres appel : " << a << " " << b << "n" ; } void echange (int *ad1, int *ad2) { int x ; x = *ad1 ; *ad1 = *ad2 ; *ad2 = x ; } : )s e l b a ir a v x u e d ed sruelav sed noitatu mrep al tiautce ffe iuq( 7 ertipahc ud 1.5 ehpargarap ud em margorp el snes ec snad erircéér snoirruop suon tnem moc icioV . tpecnoc ec resilitu snas ,ecneré fér rap noissi msnart enu’d tnelaviuqé’l resilaér ed elbissop tse li’uq riov snolla suoN .)etêt-ne’l snad & e d i o l p m e’l t n a n n e y o m( e c n er é f ér r a p u o ) t u a f é d r a p n o i t a ut is( r u e l a v r a p s i ms n ar t er t ê tneiavuop stnemugra sel ,++C ne ,euq uv snova suon ,snoitcno f xua fitaler ertipahc el snaD 1 5 Comment simuler une transmission par adresse avec un pointeur .) ! i o s n e s n es e d s a p a’ n n oi t c n o f e n u’ d e ll i a t al à t n a d n o ps err o c é t it n a u q e n u’ d ruetniop nu retnemércni’uq neib dnerpmoc no( 11 ehpargarap ua snorelrap suon tnod ,snoitcno f sed rus sruetniop sed sac el riovas à ,sétilibissop sec à noitpecxe enu aretsixe lI e uqrameR ad += 10 ; ad -= 25 ; : s n oi tc ur ts ni se c erirc é sn o irru op su o n , e d e tn e dé cérp n o it ara lc éd a l ce v a , elp me xe raP .erèitne étitnauq elleuq etrop mi’n ed ruetniop nu retne mércéd ed uo retne mércni’d elbissop da 5 - Comment simuler une transmission par adresse avec un pointeur 149
  • 177. - mi ruetniop rap noissimsnart al ,ehcnaver nE .stnemugra sniatrec ed sruelav sel rei fid -om ed tiauqsir noitcno f al euq ,uaevin ec à ,tiartnom en neir ; ruelav rap uo ecneré fér rap ueil tia noissimsnart al euq erèinam e mê m al ed tiasia f es noitcno f al ed noitasilitu’l – ; stnatropmi sulp tnos noit -am margorp ed sruerre’d seuqsir sel ,sruetniop sel ceva ; ruelav rap noissimsnart enu ceva’uq ecneré fér rap noissi msnart enu ceva elpmis issua tiaté noitcno f al ed erutircé’l – : e u q e t a t s n o c n o ,s r u e t n i o p e d s i ai b e l r a p » n o i t a l u m i s « a s c e v a e c n er é f ér r a p n o i ss i m s n ar t a l er a p m o c n o ’ l i S 2 . n o i t a l i p m o c e d r u err e e n u à t i ar i u d n o c e m m a r g or p e r t o n t e , s a p t i ar e s e l en e d e l l e c , e h c n a v er n e ; e l b a i f i d o m t i ar es ed ruelav al ,sac reinred ec snaD . t n a ts n o c r ei t n e n u r us r u e t n i o p n u ts – : c n o d e u q t e , e t n a ts n o c e n u t s e – : e u q t i ar e i f i n g i s a l e c r a c 1d a* 1da e 1d a 1da * t n i const int * ad1 : er ir c é u l l a f s a p t i ar u a’ n l I .r e i t n e n u r us t n a t ni o p e t n at s n o c e n u c n o d ts e – , ep y t e d ts e – : i c e c e m m o c e t èr pr e t n i’ s er è i m er p stne mu gra sed n oitaralcé d al ed e xatn ys al ,erocne àl ,neib zetoN 1d a tn i a l , is n i A . 2da te 1da 1da t sno c * void echange (int * const ad1, int * const ad2) : is n i a t n a v ir c é’l n e ,s e t n a ts n o c s e d t i a f n e t n o s ec euq )ep ytotorp nos snad ,puoc emêm ud ,te( etêt-ne nos snad resicérp snoirruop suoN . te e d sr u e l a v s e l r e i fi d o m r i ol u o v e d ,i ci , n o si ar e n u c u a a’ n no i tc n o f a L 1 2da 1da egn ah c e se uqrameR .sesserda sec à seéutis sruelav sel regnahcé ulla f a li’uq srola sesserda xued sec ed sruelav sel )tnemelacol( regnahcé à’uq tiudnoc tiarua’n aleC int x = ad1 ad2 *x ; ad1 ; = ad2 ; = x ; : )7 ertipahc ud 1.5 ehpargarap ud egnahce noitcno f al ceva eigolana rap( tnavircé ne stnemugra sec ed sruelav sel tnemelpmis regnahcé’d retnetnoc es ullaf sap tiarua’n li’uq neib zeuqra mer ,trap ertua’D .sesserda sec riovecer à seénitsed sruet -niop selbairav xued ,steum stne mugra ne ,éuqidni snova suon ,egnahce snad ,emmoc ze yoV .p & te n & snoisserpxe sed sruelav sel egnahce noitcnof al à te msnart no’l euq riovas à ,ruelav rap sruojuot tia f es noissimsnart al euq neib zetoN .)sruelav sruel sulp non te( p te n selbairav sed sesserda sel ,sio f ettec ,tnos egnahce ed leppa’l ed s fitce ffe stnemugra se L 150 Les tableaux et les pointeurs CHAPITRE 8
  • 178. . e ul a v l e n u s a p t s e ’ n e c ; t n a t s n o c r u e t n i o p nu tse uaelbat ed mon nU .++3 ,elp mexe rap ,euq ertit e mêm ua ,edilavni été tiarua ++t euq ellet noisserpxe enu ,tid tnemertuA .)sreitne sed rus ruetniop ep yt ed etnatsnoc enu tse t( etnat -snoc esserda enu etnesérper t elob m ys el euq euv ed erdrep sap tua f en li ,te ffe nE .p ém mon ruetniop nu snad t rap eétnesérper ruelav al reipocer ûd snova suon ,noçaf ednoces al snaD int i ; int *p : for (p=t, i=0 ; i<10 ; i++, p++) *p = 1 ; int i ; for (i=0 ; i<10 ; i++) *(t+i) = 1 ; : t uaelbat erton ed stne mélé 01 sed nucahc snad 1 ruelav al recalp ed snoça f xued iciov ,noitaton ed sétilibissop sellevuon sec rertsulli ruoP t+1 t+i t[i] &t[1] &t[i] * (t+i) : s e t n e l a v i u q é s n o it at o n e d s el p m e x e s e u q l e u q i c i o v ,is n i A .) tne mésicérp sulp e mêm te( , ic i ,er id- à-ts e’c , » ua elb at u d st ne mé lé xua tnadnopserroc ep yt el rus ruetniop « ep yt ed tnaté em moc érédisnoc tse t ruetaci fitnedi’L .]0[t & à etnelaviuqé tnemelatot srola tse t noitaton a L * tni tsnoc * tn i int t[10] : etnavius noitaralcéd al eutce ffe no’l euq ,elp mexe rap ,snosoppuS 6.1 Cas des tableaux à un indice .noitseuq ne ruetniop ud tcaxe ep yt ud etpmoc rinet ardua f li ,secidni srueisulp à xuaelbat sel ruop , e u q t e f f e n e s n orr e v s u o n ; e c i d ni n u à x u a e l b a t s e d s a c el r a p t n a ç n e m m o c n e s e c n e u q és n o c s el r e ni m a x e n e s n o l l a s u o N . u a el b at u d t u b é d el r u s )t n at s n o c( r u e t n i o p n u e m m o c ér é dis n o c tse ,)etius as à secidni snas( lues é yolp me tse li’uqsrol ,uaelbat nu’d ruetaci fitnedi’l ,++C nE 6 Un nom de tableau est un pointeur constant .s ur u o c n e s n oi t a ci f i d o m e d s e u qs ir s e d t n e i cs n o c s ul p noitcno f al ed ruetasilitu’l dner iuq ec ,esserda enu tnemeticilpxe erttemsnart ed esop 6 - Un nom de tableau est un pointeur constant 151
  • 179. .erid ed snonev suon euq ec tnartsulli améhcs nu icioV t[0] t[1] &t[0][0] &t[1][0] : ) e p y t e m ê m e d t n os s e l l e t e e ss er d a e m ê m al à t n e d n o ps err o c s el l e( s e t n e l a v i u q é tne melatot tnos setnavius snoitaton sel ,tid tnemertuA ep yt ed sruetniop ed neib tiga’s li ,sio f etteC ...colb dnoces ud ellec , , ed )sreitne 4 ed( colb reimerp ud tubéd ed esserda’l etnesérper ,elp mexe raP .snes nu tno uo , euq sellet snoitaton sel ,trap ertua’D .xued sel ruop noitaci fingis e mêm al sap a’n ed noitatnemércni’l siam ,esserda e mê m al à sruojuot tnednopserroc te snoitaton sel ,isniA .)! lues nu’d sulp non te( sreitne 4 e d e é t n e m g u a , e d es s er d a’ l à d n o ps err o c e u q e l l e t n oi ss er p x e e n u ,s n o it i d n o c s e c s n a D ]1 [t .* tni t ]0 [t ]i[t ]1[t ]0 [t 1 ]0 []0[t & t t 1 +t int [4] * : )noitaton ettec resilitu à siamaj tne melbaborp zerua’n suov( tne meuqiroéht reton es tiarved iuq ep yt , » sreitne 4 ed scolb sed rus ruetniop « ep yt nu’d si a m )e ci d ni n u à ua el b at n u r u o p sa c e l t ia té’ c e m m o c( e p yt e d s u l p t s e’ n li , u a e l b a t erton ed tubéd ed esserda’l neib etnesérper is ,tid tne mertuA .sreitne 4 ed uaelbat nu e mê m - i ul t n a t é s t n e m él é s e c e d n u c a h c , st n e m é l é 3 e d u a el b a t n u e n gis é d e u q t i a f n e e r è d i s n o c l i * tni t t t int t[3] [4] ; : euq ellet noitaralcéd enu ertnocner ruetalipmoc el euqsro L .s e c i d n i x u e d à x u a e l b a t e d s a c u a t n a ti mi l suon ne ,++C rap seé yolpme selgèr sel ici snotnesérp suov suon ,fitacidni ertit elpmis À .repuccoérp ne’s sap en tuep no’uq etros ed ,snois -revnoc ed ecalp ne esi m al rap ulosér tnemeuqitamotua tse emèlborp el euq snorrev suon ,tnadnepec ,sac reinred ec snad ; noitcno f enu’d tnemugra ne ruetniop ec ertte msnart tiod n o’l e u qsr o l u o ) er ar z ess a t s e i u q e c( r u e t n i o p e c c e v a s e u q it é m ht ir a sl u c l a c s e d e ut c e f f e n o’ l euqsrol euq ecnatrop mi’d a’n tniop ec ,euqitarp nE .uaelbat ud stnemélé sed rus ruetniop nu’d sulp tiga’s en li ,tcaxe ep yt nos à esserétni’s no’l is ,sio fetuoT .tubéd ed esserda nos sruojuot etnesérper ,lues é yolpme ,uaelbat nu’d ruetaci fitnedi’l ,ecidni nu à xuaelbat sel ruop e mmoC 6.2 Cas des tableaux à plusieurs indices .) e r i a s s e c é n e r i o m é m e c a p s e’ l e d es s er d a e t t e c à r es o ps i d , s i o f e t u o t , l i - t - ar d u a f e r o c n e( r u e t n i o p n u e m m o c ér a l c é d t n e m e l p m i s ts e ù o e m m a r g or p n u s n a d r es i l i t u t u e p n o , t i d t n e m e r t u A .s e t n e l a v i u q é t n e i ar e ts e r s e t n e d é c ér p s n o i t a t o n x u e d s e l t ]i[t int *t ; : c e v a , is n i A .éralcéd été a tnod erèinam al tios euq elleuq ,iarv etser alec ,tia f nE .uaelbat nu e mmoc éra lc é d tse e u q s r o l à e t nel av iuqé ts e n o i t a t o n a l e uq r i o v e d s n o n e v s u o N t t ) i + t (* ] i[ t e uqrameR 152 Les tableaux et les pointeurs CHAPITRE 8
  • 180. int t[10] ; int * p ; for (p=t ; p<t+10 ; p++) *p = 1 ; int t[10] ; int i ; for (i=0 ; i<10 ; i++) t[i] = 1 ; : uaelbat ud stnem -élé 01 sed 1 à esim : noitca emê m al tnasilaér snoitcurtsni’d setius xued ,elèllarap ne ,iciov ,elp mexe raP .epyt emêm ed sruetniop sed euq rerapmoc cnod arruop en nO .ep yt nu rap te eriomém ne esserda enu rap sio f al à ini féd tse ruetniop nu ++C ne’uq reilbuo sap tua f en lI t 7.1 La comparaison de pointeurs .sruetniop sed ceva selbasilaér snoitarépo sertua sel ici renimaxe snolla suoN .erèitne ruelav enu’d te ruetniop nu’d ecneré ffid al uo e mmos al tneiaté’uq ec uv àjéd snova suoN 7 Les opérations réalisables sur des pointeurs .etcerroc tse elle te sreitne’d uaelbat nu rus ruetniop n u à e c neré f ér al et n esérper el le , noitaton al à tnauQ .)++C rap étpecca sap tse’n iuq ec ,secneréfér ed uaelbat nu eiroéht ne tiaretnesérper elle( etidretni tse e u q e ll e t n oi tar al cé d e n U . + + C n e s n es e d s a p a’ n ua el b at n u à ec ner é fér e d n o it o n a L t & * tni ]01 [t & tni seriatnemélpmoc snoitamrofnI - n o c r a P . e di l a v n i t s e ++]1[t noisserpxe’L . . enu neib tse , ert enu sap tse’n ec ; etnatsnoc enu tse eu lav l eula vl ]2[]1[ t ]1[t e uqrameR ]2[t uo ]0[]2[t& 2+ t ]1[t uo ]0[]1[t& 1+t ]2[]0[t& ]0[t uo ]0[]0[t& t * ]4[ tni epyt * tn i epyt 7 - Les opérations réalisables sur des pointeurs 153
  • 181. resnep tiarruop no ,te ffe nE .etrop moc elle’uq seuqsir sed unet etp moc ,retivé’l ed snollies -noc suov suon ,elarénég erèinam enu’D . ed ruetarépo’l à leppa eria f ed elbissop sruojuot tse li ,ehcnaver nE .ertua nu snad ruetniop ep yt nu’d eticilp mi noisrevnoc enucua etsixe’n lI tsac 7.4 Les conversions de pointeurs . ed r u e l a v a l t n e m e l l e t n e d i c c a r e i f i d o m e d e l b i s s o p m i t s e l i , t e f f e n e ,s n o i t i d n o c s e c s n a D L LU N const int NULL = 0 ; : n o ça f e tt ec e d e ll u n et n ats n oc » ei ar v « enu tne melleutnevé rini féd ed te ,)noitini féder ed reilucitrap ne( tnetropmoc selle’uq s e u qsir s e d u n e t e t p m o c ,s or c a m e d t e s et n ats n o c e d s n o it i n i f é d s e l r es il i t u’ d él li es n o c é d tôtulp tse li ,++C nE .selbisil sulp tneiaté se mmargorp sel siam ,ruessecorpérp el rap tne metiart ud srol erèitne etnatsnoc al rap eécalpmer tnemelp mis tuot srola tiavuort es i c- el l e c : s na d t ne me la gé t e s n a d ei n i f é d ér p e t n a ts n o c al r e y ol p m e’ d édnam mocer tnevuos tiaté li ,0 erèitne ruelav al tnemetcerid resilitu’d euq tôtulp ,C nE 0 f eddt sc ,oidt sc LL UN e uqrameR n = 0 ; x = 0 ; if (n == 0) ..... : s e t c err o c t n or es s n oi t c urt s n i s e c int * n ; double * x ; : snoitaralcéd sec cevA . » lun ruetniop « ec ceva )ep yt leuq etrop mi’n ed( ruetniop leuq etropmi’n r er a p m o c e d e l bis s o p ts e li’ u q e cr a p e u q t êr é t ni’ d a’ n a l e c , u d n e t n e n e i B .)l a cs a P u d el tse’c( neir rus tnatniop en erid-à-tse’c ,lun ruetniop nu retnesérper riovuop ed nioseb el rap eévito m tse 0 ruelav al tnanrecnoc ecnarélot etteC .)niol sulp uep nu snorelrap suon tnod euqirénég ep yt el tnanrecnoc noitpecxe ertua enu aretsixe li( 0 erèitne ruelav al enrec - n oc i u q e c ne ue il s i o f et u o t a n oi t pe c x e e n U .)se ti ci l p xe s n oisr e v n o c s e d à s a p e d èc or p e n no’l euq tnat ,snio m ud( ++C el rap ésirotua sac lues el tse’c ,iroirp A .ep yt emêm ed ruetniop n u à r u e t ni o p n u’ d r u e l a v a l e d n o it a t c e f f a’ d s a c s e d ér t n o c n er à j é d t n e m el l er u t a n s n o v a s u o N l in * di o v 7.3 Les affectations de pointeurs et le pointeur nul . erar ze ssa t se ét i lib iss op ettec ed iolpme’L .setnadnopserroc sesserda xued sel ertne séutis ,noitseuq ne ep yt ud stne m -élé’d erbmon el tinruo f ecneréf fid ruel , epyt emêm ed tnos sruetniop xued dnauq ,erocne à L 154 7.2 La soustraction de pointeurs Les tableaux et les pointeurs CHAPITRE 8
  • 182. .euqirénég ruetniop ed eédi’l à neib dnopserroc iuq ec ,esserda’d noitamro fni’l euq enig -iro’d ruetniop ud revresnoc en à tneiver elle’uqsiup tnanerprus ed neir a’n étilibissop etteC void * ad ; int * adi ; void f (void *) ; ..... ad = adi ; // OK f(adi) ; // OK : snad e mmoc ne tnemeticilp mi itrevnoc ertê tuep ep yt leuq etropmi’n ed ruetniop nU . e p y t s n as r u e t ni o p n u’ d ) t n e m el l e n n oi t p e c x e( t i g a’s l I .) » e u qir é n é g r u et n i o p « ed tnevuos elrap no( euqnocleuq epyt ed tejbo nu rus ruetniop nu engiséd ic-iuleC * d io v void * : re il u ci trap ep yt n u e ts ix e li , ti a f nE .seticilpxe snoisrevnoc ed iolp me’l tnemeriotagilbo euq -ilpmi redécorp ed noçaf ettec ,sio fetuoT .)! 1 tuav e uq s ap z ei lb uo’ n( eri o mé m al ed tetco leuq etrop mi’n à redécca’d tnorttemrep suon ,etp moc ud tuob ua ,sleuqsel , ep yt ed sruetniop sed tnasilitu ne nioseb let nu eria fsitas arruop no ,sac sniatrec snaD .)ertua nu à leppa nu’d reirav ed elbitpecsus ,tôtulp ,uo( unnoc non ep yt ed stejbo’d sesserda sel relupinam tiod noitcno f enu ùo sellec euq sellet secnatsnocric seniatrec snad tnanêg reréva’s tuep sruetniop sed egap yt ec ,tne mésicérP .ep yt nu à te eriomé m ne esserda enu à sio f al à dnopserroc ruetniop nu ,++C nE )rahc ( foez is * rah c 7.5 Les pointeurs génériques pi = static_cast <int *> (pf) ; : )eénrecnoc esserda’l tnemerègél rei f -ido m à sap tnorecro f en tne mengila’d setniartnoc sed euq niatrec sap tse’n no ,ici’uq srola ,selbatrop isauq snoisrevnoc sed retnesérper ésnec( r u e i f i l a u q e l t n a s il it u n e t i o s • tsa c_ c ita ts int * pi ; float * pf ; pi = (int *) pf ; // conversion forcée de pf en un pointeur sur un int : s n a d e m m o c s e s è ht n er a p ert n e ét i a h u os e p y t u d m o n e l t n a ç a l p n e t i os • : t i a f es n o isr e v n o c e tt e c e d n o it at o n a L .eriapmi tse ic-ellec euqsrol enisiov esserda enu à tios ,eriap ts e i c- el l e c e u qsr o l er è t c ar a c u d e vi t c e f f e ess er d a’l à ti os eri u d n o c t u e p n u ne nu’d noisrevnoc al ,sac ec snaD .esserda elleuq etropmi’n à )tnemesuerueh( écalp ertê arruop )tetco lues nu’d tejbo( erètcarac nu’uq sidnat ,eriap esserda enu à écalp sruojuot ares stetco 2 ed tejbo nu ,elpmexe raP . » tnemengila’d setniartnoc « sed elleppa no’l euq ec stejbo sed s ess er d a x ua t nes o p mi s e ni h ca m se n ia tre c e u q ec e d e t p m o c ri n et t ua f li , t n e m es uer u e h la M .étniop tejbo’l ed ep yt ua resserétni’s snas ,ruetniop nu à tnadnopserroc esserda’l à’uq resserétni’s en à tne melani f tneiver noisrevnoc ellet enu’uq * tni * rahc 7 - Les opérations réalisables sur des pointeurs 155
  • 183. r u op * rah c .C ega gnal n e sa c el tiat é iu q eC .1 void raz (void * adr, int n) { char * ad = static_cast <char *> (adr) ; for (int i=0 ; i<n ; i++, ad++) *ad = 0 ; } : e n o z e r t o n er i r c é d e p y t e d e l b a ir a v e n u r e s i l i t u ar d u a f l i t e l a g é l l i t s e i c e c , t n e m e t s e f i n a M void raz (void * adr, int n) { for (int i=0 ; i<n ; i++, adr++) *adr = 0 ; } // illégal : isnia redécorp rerépse up tiarua no ,)stetco ne( elliat al te esserda’l tinruo f iul no tnod eriomém al ed tnemecalpme nu » oréz à te m « iuq noitcno f enu erircé ruop ,isniA .)tnemengila’d etniartnoc ed emèlborp ed sia maj tnoresop en snoisrevnoc sel sia m( ep yt ua ,ertua nu à uo tne mo m nu à ,riruocer e mê m dnauq ardua f li te ,tne mecalpme tec ed stetco stneré ffid sel erir c é d r u o p s a p t n e i v n o c e n ep yt el ,euqnocleuq ep yt ed tnemecalp me nu’d stetco stneré ffid sel rus relliavart ed noitcno f enu à eriassecén tse li’uqsrol ,euq neib areton nO * rahc >-- * diov * rahc * diov seriatnemélpmoc snoitamrofnI . ep yt ed ruetniop nu à noitceridni’d ruetar -épo’l reuqilppa’d elbissop sap tse’n li ,seriali mis snosiar sed ruoP .sétniop stejbo sed elliat al s a p tî a n n o c e n n o’ u q ti a f el r a p éi f it s u j t s e i c e c ; n ois s er p x e’ l r es i li t u e g at n a v a d s a p t u e p e n n o ; e d u o )r ei t ne t na té ( ed relrap sap tuep en no , e p yt e d t n o s t e i s , t n e m - maton ; seuqitémhtira snoitarépo sed snad rinevretni sap tuep en ep yt ed elbairav enU . t n a tt o l f nu’d esserda’l neib tneitnoc euq niatrec tse no’l is euq selbatrop tnemiarv tnos en snois -r e v n o c s e l ,i ci ti a f n E .t n e m e n g il a’ d s et n i ar t n o c s e ll e ut n e v é’ d et p m o c r i n e t r u o p e éi f i d o m tios enigiro’d esserda’l euq euqsir el truoc no ,seécrof snoisrevnoc sec snad ,tne mellerutaN * diov * + +p q-p i i +p * dio v q p * dio v da float * adf ; void * ad ; void g (float *) ; ..... adf = *ad ; // illégal adf = (float *) ad ; // OK adf = static_cast <float *> (ad) ; // OK : notation conseillée (attention aux () ) f(ad) ; // illégal f ( (float *) ad) ; // OK f (static_cast<float *>(ad)) ; // OK : notation conseillée : s n a d e m m o c , u l uo v ed ruetarépo’l à tnaruocer ne eédna med ertê tuep elle ,udnetne neiB . tne meticilpmi eésilaér ertê sap tuep en esrevni noisrevnoc al ,ehcnaver nE ts a c 1 156 Les tableaux et les pointeurs CHAPITRE 8
  • 184. int *ad = new int ; : el p m e x e r a p ,t n a v ir c é n e ni os e b z e v a n e s u o v ù o t n e m o m u a e l b a i r a v al reralcéd e mê m zevuop suov ,++C ne erbil tnemecalpme nu tno snoitaralcéd sel em moC .e tn a d nops err oc ess erd a’l ep yt ed tnemélé nu ruop eriassecén erio mé m ecapse’l reuolla’d temrep da à r et c e f f a’ d t e da tn i ad = new int ; : n o i t c u rt s n i ’l int *ad ; : noitaralcéd al cevA Exemple 1 .selpmis selpmexe seuqleuq droba’d sno yov ,elarénég exatn ys al rennod ne’d tnavA 8.1 L’opérateur new .s e u qi t a m o t u a s e é n n o d s e d e ll e c e d et n a d n e p é d ni tse elle ; elip enu snad eria f es sulp tuep en seuqiman yd seénnod sed noitseg al euq areton nO .)sdradnats snoitcno f sed ceva ,elp mexe rap ,seunetbo ertê up tneirua sétilannoitcno f se mêm sel ; iolpme ruel ed exatn ys al rus euq ecnedicni’d tia f ne a’n sruetarépo’d essiga’s li’uq ti a f el( te : sreilucitrap uep nu sruetarépo’d esopsid ++C ,eria f ec ruoP .e mêm - i u l e m m ar g or p u d e d n a m e d a l à s ér é b il t e s é u ol l a t n os s t n a d n o ps err o c s t n e m e c al p m e s el ,sio f etteC .eriomém ed » euqiman yd noitacolla’d « setid sétilibissop sed ertuo ne er ffo ++C . e li p e n u’ d e mr o f s u os s e ér é g t n os s e l l e ; e itr os as à ér é b il t e n oi t -cno f enu uo colb nu snad eértne’l à éuolla tse tne mecalpme’l tnod seuqitamotua seénnod sel • ; e m m arg orp u d eér u d al et u ot r u o p s i o f e n u é u ol la t se t n e me ca l p m e’l t n o d se u qi ta ts se é n n o d se l • : reugnitsid ed noisacco’l ue àjéd snova suoN e te led wen 8 La gestion dynamique : les opérateurs new et delete void raz (void *, int) ; int t[10] ; double z ; ..... raz (t, 10*sizeof(int)) ; raz (&z, sizeof (z)) ; // tableau à mettre à zéro // double à mettre à zéro : zar noitc no f erto n e d noitasilit u’d elp mexe nu icioV 157 8 - La gestion dynamique : les opérateurs new et delete
  • 185. . » s r u e t c ur t s n o c « s e d t n a d é ss o p s er u t c ur t s x u a u o s t e j b o x u a t n a u q i l p p a’ s , w e n r u e t a r - é p o’ l e d e i gr a l é e x a t n ys e n u e t s i x e l i ’ u q ) 3 1 er t i p a h c u d 2. 1 e h p a r g ar a p( s n or r e v s u o N 3 . e uq i t arp n e e és i l i t u t n e m e ra r ts e é t i l ib i ss op e t te C .s e t n a t s n o c s n o i ss e r p x e s e d er t ê t n e m er i o t a g i l b o t n e v i o d s er t u a s e l ; e u q n o c l e u q e r è i t n e noisserp xe en u ertê tuep noisne mid erèi merp al ,elaréné g erèi na m enu’D .)]01[ )*( epyt e t o n e s e p y t e l t n o d( sr e i t n e 0 1 e d x u a e l b a t s e d r u s r u et n i o p n u t i nr u o f ,sac ec snaD w en ]01 [ ]n [ e py t w en : e lp m e x e r ap ,s n o is n e m i d sr u e is u l p à u a el b a t n u r u o p t n e m e c a l p m e n u r e u o l l a r u o p é s i l i t u er t ê t u e p ,rueugir etuot nE 2 . 3 2 e rt i p a h c ud 4.6 ehpargarap ua snorrev el suon e mmoc ,cehcé’d sac ne tnem meré ffid retropmoc es e d à rednamed ed elbissop tnadnepec tse lI .tpmorretni’s emmargorp el ,noitpecxe enu retiart ruop ruem margorp el rap uvérp tse’n neir is euq zerrev suoV .32 ertipahc ua l i a t é d n e é i d u t é ts e s n oi t p e c x e s e d n o it s e g e d e m si n a c é m e C . e p yt e d n o it p e c x e e n u e m m o n n o’l e u q e c e hc n el cé d , ce hc é’ d sa c n e’ u q ti o vér p + + C e d e mr o n a L 1 w en w en co lla_dab wen se uqrameR . u ae lba t ec e d t ne m é lé r ei merp el r us ) ep yt ed sruojuot( ruetniop nu tatlusér ne tin -r u o f e ll e , iss u ér a n o it ar é p o’l is ; é u q i d n i ud stne mélé ruop eriassecén tnemecalp me’l srola euolla noitcurtsni etteC .)evitagén non( euqnocleuq erèitne noisserpxe enu engiséd ùo * epy t ep yt n n ]n[ epyt we n : e mr o f al e d e xa t n y s en u t ne me la g é etp ec ca ruetarépo’L .issuér a noitacolla’l euqsrol ,tnadnopserroc tne mecalp me’l rus ) ep y t ed( ruetniop nu tatlusér em moc tinruo f lI .euqnocleuq tne mulosba ep yt nu etnesérper ùo w en * ep y t ep yt epyt we n : is ni a es il it u’s w en )ednarépo lues nu à( erianu ruetarépo’L Syntaxe et rôle de new . snad )tubéd ed( esserda’l ecalp te serètcarac 001 ed uaelbat nu ruop eriassecén tne mecalpme’l euolla cda adc = new char[100] ; : n oi tc ur ts ni’ l char *adc ; : noitaralcéd al cevA 158 Exemple 2 Les tableaux et les pointeurs CHAPITRE 8
  • 186. .)! ++C ne elbasilitu sruojuot( collam ,C egagnal ud eussi noitacolla’d noitcnof al rap unetbo ruetniop nu ceva sac el tiares eC .1 . e te led te wen r ap s etr e f fo euqiman yd noitseg ed sétilibissop sec tnartsulli telp moc em margorp ed elpmexe nu icioV 8.3 Exemple .31 ertipahc ud 7 ehpargarap ua snorelrap suon tnod te ,stejbo’d xuaelbat ed sac el snad euq tneivretni’n iuq ,esserda ][ eteled emro f al ed ,eteled ed exatn ys ertua enu etsixe lI e uqrameR . wen r a p e u q t n e m ert u a u n e t b o r u e t ni o p n u u o » es s er d a e si a v u a m « e n u e t e l e d à ze ssi nr u o f s u o v • ; stejbo sniatrec ed sruetcurtsed sed te sruetcurtsnoc sed tini féd no’l euqsrol sesirp ertê tnorv -ed snoituacérp sed euq snorrev suon ; érébil àjéd tne mecalp me nu eteled rap zerébil suov • : euqsrol ini féd sap tne mulosba tse’n em margorp ud tnemetropmoc el euq neib zetoN 1 es serda ete led : ) wen rap éuolla tne mecalp me nu rus ruetniop nu ruelav e mmoc riova tnaved noisserpxe enu tnaté esserda( etnavius al tse eteled ruetarépo’l ed elleusu exatn ys a L adc = new char [100] ; : rap éuolla tnemecalp me’l ruop delete adc ; : te ad = new int ; : rap éuolla tnemecalp me’l ruop delete ad ; : tircé no ,1.8 ehpargarap ud selpmexe sel snad séérc stne mecalpme sel rerébil ruop ,isniA . eteled ruetar -épo’l esilitu no ,wen rap tnemelbalaérp éuolla tnemecalp me nu rerébil etiahuos no’l euqsro L 8.2 L’opérateur delete .stejbo xua évresér tse li ; esab ed sep yt xua sap euqilppa’s en li siaM .wen ruetarépo nu tne melagé etsixe lI avaJ n E 8 - La gestion dynamique : les opérateurs new et delete 159
  • 187. Les tableaux et les pointeurs CHAPITRE 8 #include <iostream> using namespace std ; main() { int *adi, *adibis ; int nb ; float * adf ; cout << "combien de valeurs : " ; cin >> nb ; // allocation d’un emplacement pour nb entiers dans lesquels // on place les carrés des nombres de 1 a nb adi = new int [nb] ; cout << "allocation de " << nb << " int en : " << adi << "n" ; for (int i=0 ; i<nb ; i++) *(adi+i) = (i+1)*(i+1) ; cout << "voici les carres des nombres de 1 a " << nb << " : n" ; for (adibis = adi ; adibis < adi+nb ; adibis++) cout << *adibis << " " ; cout << "n" ; // allocation d’un emplacement pour 30 floattants adf = new float [30] ; cout << "allocation de 30 float en : " << adf << "n" ; // libération des nb int delete adi ; cout << "liberation des " << nb << " int en : " << adi << "n" ; // ici, il serait dangereux d’utiliser les emplacements pointés par adibis // (comme, bien sur, ceux pointés par adi) adi = new int [50] ; cout << "allocation de 50 int en : " << adi << "n" ; delete adf ; cout << "liberation des 30 float en : " << adf << "n" ; adf = new float [10] ; cout << "allocation de 10 float en : " << adf << "n" ; } combien de valeurs : 7 allocation de 7 int en : 8861976 voici les carres des nombres de 1 a 7 : 1 4 9 16 25 36 49 allocation de 30 float en : 8862008 liberation des 7 int en : 8861976 allocation de 50 int en : 8862132 liberation des 30 float en : 8862008 allocation de 10 float en : 8862336 eteled te wen ed edia’l à euqimanyd noitseg ed elpmexE - n i o p e d e d i a’ l à u a e l b a t e c r es i li t u t n e m m o c s n ort n o m s u o N .)s a c e c s n a d er i a ss e c é n c n o d tse euqiman yd noitseg al à sruocer el( emmargorp ud ruetasilitu’l rap einruo f tse noisnemid al tnod sreitne’d uaelbat nu ruop tnemecalpme nu snouolla suon ,sp met reimerp nu snaD 160
  • 188. .noitatceffa’d ruetarépo nu’d ehcuag à ertîarappa tuep iuq esohc euqleuq engiséd iuq ,eulav tfel ed noitcartnoc al ed tneivorp emret eC .ruelav al reifidom tuep no tnod esohc euqleuq à ecneréfér al eulavl emmon no’uq snoleppaR .1 chose (&n) ; // appelle chose I chose (&p) ; // appelle chose II : euq etros ed ,+C ne elb -issop tse noitcnitsid etteC .neir tiaf ne’n II esohc euq sidnat ,esserda’l tioçer elle tnod eulavl al ed ruelav al eifidom I esohc euq riovérp neib sèrt tuep no ,te ffe nE .eéi fitsuj tse * tni tsnoc te * tni ertne noitcnitsid al ,secneré fér sel ruop tiasiudorp es iuq ec à elbalb mes noça f eD 1 void chose (int *) ; // chose I void chose (const int *) ; // chose II int n = 3 ; const p = 5 ; Exemple 3 void affiche (char *) ; // affiche I void affiche (double *) ; // affiche II char * ad1 ; void * ad ; ..... affiche (ad1) ; // appelle affiche I affiche (ad) ; // erreur : aucune conversion implicite possible à partir de void * Exemple 2 void affiche (char *) ; // affiche I void affiche (void *) ; // affiche II char * ad1 ; double * ad2 ; ..... affiche (ad1) ; // appelle affiche I affiche (ad2) ; // appelle affiche II, après conversion de ad2 en void * Exemple 1 : selpmexe sed iciov nE .ruet -niop ep yt ed stnemugra’d sac ua tnemelica f tnesilarénég es seértnocner selgèr se L .snoitcnof sed rini fédrus ed tiatte mrep suov ++C tnem moc 7 ertipahc ud 01 ehpargarap uv snova suoN 9 Pointeurs et surdéfinition de fonctions .) é si li t u s n o v a s u o n e u q i ul e c s n a d s a c el s a p ts e’ n i u q e c ,érébil tnemelbalaérp tnemecalpme nu’d noitasilituér al retatsnoc arruop no ,stne mennorivne sniatrec snad( setnadnopserroc sesserda sel sio f euqahc à tnahci ffa ne ,eriomém ecapse’d snoitarébil te snoitacolla sertua seuqleuq snoutce ffe suon ,etiusnE .)! uaelbat ed resil -itu snas stia f ertê up tneiarua sluclac sel euqsiup elocé’d elpmexe nu’d euq tiga’s en li( sruet 9 - Pointeurs et surdéfinition de fonctions 161
  • 189. .ruetniop emsilamro f el uo uaelbat e msila mrof el tnem meréf fidni resilitu ,noitcno f al ed noitini féd al snad ,tuep no ,éyolpme etêt-ne’l tios euq leuq ,edutibah’d e mmoc ,sruellia raP . n o it cn o f ert o n t ia ll ia v art l euq el ru s ua elb at ud e v it ce f f e n oi sn e m i d al releppar iul ed ni fa ,e mmargorp ud ruetcel el ruop euq têrétni’d a’n etêt-ne reimerp el snad erugi f iuq 01 el ,tia f nE .noitcno f al ed etêt-ne’l snad uaelbat ud noisne mid al rennoitne m sap en ed elbissop tia f à tuot tios li’uq dnerpmoc no ,snoitidnoc sec snaD .)secidni srueisulp à xuaelbat sel ruop emêm ed sulp ari ne’n li’uq snorrev suon( uaelbat ud tubéd ed esserda’l ed te gnar nos ed ritrap à ,euqnocleuq tnemélé nu’d esserda’l reni mretéd ed elbapac te ffe ne tse li ; ruetalip moc ua elbasnepsidni sap tse’n uaelbat ud etcaxe elliat al ed ecnassiannoc al ,trap ertua’D .)tnavius ua leppa nu’d regnahc tuep esserda ettec sulp ed( etnaleppa noitcno f al snad sruellia rap eésilaér tse esserda’l ici arvecer no tnod uaelbat ud erio mé m tnemecalp me’l ed noitavresér a L .teum tne mugra nu engiséd t euq tiaf el rap ei fitsuj es erutircé erèinred a L void fct (int t[10]) void fct (int * t) void fct (int t[]) : setnavius serèinam sed enu’l ed tircé tne mmeré ffidni ertê tuep tcf ed etêt-ne’L int t1[10], t2[10] : ..... fct(t1) ; .... fct(t2) ; : noitcno f ettec ed selbissop sleppa’d selpmexe xued icioV noitcnof enu’d tnemugra ne simsnart ecidni nu à uaelbat ed elpmexE void fct (int t[10]) { int i ; for (i=0 ; i<10 ; i++) t[i] =1 ; } .tnemugra ne esimsnart tnaté uaelbat ec ed esserda’l ,stnemélé 01 ed uaelbat nu’d stnemélé sel suot snad 1 ruelav al tem iuq noitcno f ed elpmexe nu icioV 10.1.1 Premier exemple : tableau de taille fixe 10.1 Cas des tableaux à un indice .seuqitarp selpmexe seuqleuq sno yoV .rei fidom al ed uo ruelav r u el r es il it u’ d ess i g a’s li’ u q ,st n e m él é s es r us s e ul u o v s n o it al u pi n a m s e l s et u ot r e u t c e f f e’ d te mrep iul iuq ec ,noitcno f al à uaelbat ud esserda’l )ed ruelav al( tnemelani f te msnart no ,noitcnof enu’d leppa’l ed fitce ffe tnemugra ne uaelbat nu’d mon el ecalp no’l euqsro L 162 10 Les tableaux transmis en argument Les tableaux et les pointeurs CHAPITRE 8
  • 190. . . . f i t c e f f e t n e m u gr a’ l e d r u e l a v a l e d e i p o c e n u’ u q , n o ç a f e t u o t e d , t s e ’ n e l l e u q a l , t c f s n a d t e d r u e l a v a l t n e m e t c er i d r e t n e m ér c n i’ d t i d r e t n i e l l e : t ê r é t n i’ d u e p t n e m e l ar é n é g a é t i l i b i s s o p e t t e C . er t ê’ l sr u o j u o t t n e v u e p u a e l b a t u d sr e i t n e s e l e u q sr o l a , e é i f i d o m er t ê s a p t u e p e n i u q t e d r u e l a v a l e u q t s e’ n e c , s a c e c s n a D . sr e i t n e s e d r u s t n a t s n o c r u e t n i o p n u t s e t c n o d ; r e i t n e n u r u s r u e t n i o p n u t s e t ts n o c c n o d ; r e i t n e n u t s e t t sno c * : is n i a e t èr p r e t n i’ s e ll E void fct (int * const t) : etêt-ne’l tcf r uop resilitu à res nep ze vuop suoV 2 .t nem - ugra ne uçer uaelbat u d sruelav sel rei fido m ed tcf s na d elbissop sulp srola tiares en lI . t n a t s n o c ) u a e l b a t n u r u s r u e t n i o p n u t i a f n e( u a e l b a t n u t s e ] [ t c n o d ; t n a ts n o c ts e ] [ t t n i : i s n i a e t èr pr e t n i ’ s void fct (const int t[]) : e t ê t - n e’ l , e m ê m e D . s t n a t s n o c s r e i t n e s e d r us r u e t n i op n u t s e t c n o d ; t n a t s n o c r e i t n e n u t s e t* c n o d ; t n a ts n o c ts e t * t n i : i s n i a e é t é r pr e t n i er t ê t i o d i c - e l l e c void fct (const int * t) : setêt-ne sec ed nu’l ceva tcf zessini féd suov is euq sap zeilbuo’N 1 se uqrameR int * p ; for (p=t ; p<t+10 ; p++) *p = 1 ; : sruetniop ed nosiarap moc ed sétilibissop sel snosilitu suon ùo te p ruetniop nu snad t esserda’l snoipocer suon elleuqal snad étilibissop erèinred enu ni fne icioV .eétnemércni ertê cnod tuep elle te eulavl enu neib cnod tse t ; uaelbat nu’d esserda’l ed eipoc enu etnesérper t rac emèlborp nucua esop en ++t noisserpxe’l ,erocne icI , for for for for (i=0 (i=0 (i=0 (i=0 ; ; ; ; i<10 i<10 i<10 i<10 ; ; ; ; i++) i++, i++) i++) t[i] = t++) *t *(t+i) t[i] = 1 = = 1 ; 1 ; 1 ; ; : )tni ep yt ed éralcéd été a i euq tnesoppus selle( stnedécérp setêt -ne siort sed leuqel etrop mi’n ed tnedommocca’s iuq tcf ed selbissop serutircé srueisulp icioV 10 - Les tableaux transmis en argument 163
  • 191. u a e l b a t u d n o is n e mi d e d n o c es al ert î a n n o c t n e m e l a g é t i o d l i ; t u b é d e d ess er d a n o s er tî a n n o c ed retnetnoc es sulp tuep en ruetalipmoc el ,secidni xued à uaelbat nu’d euqnocleuq tne m -élé nu’d esserda’l revuort ruop ,euq riov neib tua f li ,sio fetuoT .etêt-ne’l ed semro f sertua’d resilitu ,ecidni nu à uaelbat nu ruop tid snova suon euq ec ceva eigolana rap ,tiarruop no ,icI )sexif( snoisnemid xued à uaelbat nu’d tnemugra ne noissimsnart ed elpmexE void raun (int t[10][15]) { int i, j ; for (i=0 ; i<10 ; i++) for (j=0 ; j<15 ; j++) t[i][j] = 1 ; } : 51 te 01 snoisne mid ed uaelbat nu’d stnemélé sed nucahc snad 1 ruelav al ecalp iuq noitcno f enu’d elpmexe nu icioV 10.2.1 Premier exemple : tableau de taille fixe 10.2 Cas des tableaux à plusieurs indices main() { int t1[30], t2[15], t3[10] ; int s1, s2, s3 ; ..... s1 = som(t1, 30) ; s2 = som(t2, 15) + som(t3, 10) ; ..... } : noitcno f ettec ed sleppa’d selp mexe seuqleuq icioV elbairav elliat ed noisnemid enu à uaelbat nu rus tnalliavart noitcnoF int som (int t[],int nb) { int s = 0, i ; for (i=0 ; i<nb ; i++) s += t[i] ; return (s) ; } : euqnocleuq elliat ed sreitne’d uaelbat nu’d stne mélé sed em mos al eluclac iuq noitcno f enu ,elpmexe rap ,icioV .tne mugra ne elliat al erttemsnart ne iul ed noitidnoc à ,euqnocleuq noisne mid ed uaelbat nu ceva relliavart ed elbapac noitcno f enu resilaér ed elica f isnia tse lI .etcaxe elliat al ertîannoc ne’d nioseb sap a’n ruetalipmoc el ,noitcno f enu’d tne mugra ne tîarappa ecidni lues nu à uaelbat nu’uqsrol ,riov el ed snonev suon e mmoC 164 10.1.2 Second exemple : tableau de taille variable Les tableaux et les pointeurs CHAPITRE 8
  • 192. . ) r ei t n e n u ’ d el l i a t a l i ci t n a t é é t i n u ’ l ( s ét i n u 1+n ed ruetniop ec retne mércni’d ti ffus li tnavius el rus retniop ruop ,elanogaid al ed tnem - é l é n u e n g is é d r u e t n i o p n u , c n o d , i S .s t n e m é l é n r a p s ér a p és t n os el a n o g ai d a l e d s f it u c és n o c stne mélé xued euq ec ed etp moc unet snova suon ,icI .* tni ep yt ed ruetniop nu’d e mrof suos ,uaelbat ud tne mélé rei merp ud esserda’l ,tnemugra reimerp ne ,cnod tioçer noitcno f ertoN elbairav elliat ed érrac uaelbat nu rus tnalliavart noitcnoF void diag (int * p, int n) { int i ; for (i=0 ; i<n ; i++) { * p = 0 ; p += n+1 ; } } .éirporppa esserda’d luclac el tnautce ffe ne sruetniop sed rap suluov stnemélé sel resserda à etsisnoc emèlborp ec erduosér ed noça f enU .euqnocleuq elliat ed érrac uaelbat nu’d elanogaid al ed stne mélé sed nucahc snad 0 ruelav al ecalp iuq noitcno f enu erircé à snoihcrehc suon euq snosoppuS 10.2.2 Second exemple : tableau de dimensions variables .) elba c ilppa s ulp ts e’n t n e dé cérp e ms il a mr o f el leuqel snad te( selbairav snoisne mid ed uaelbat nu à ércasnoc tnavius elp mexe’l snad reuq -ové snolla suon euq se mèlborp seuqleuq siofetuot esop alec ; noitcno f al ed noitini féd al s n a d t e e t ê t- n e’l s n a d s i o f a l à , u a el b at e msi l a mr o f e l t e r u e t ni o p e m si l a mr o f e l r e g n al é m à ,ecidni nu à xuaelbat sel ruop tia f été a iuq ec ceva eigolana rap ,regnos tiarruop nO e uqrameR ! uaelbat ua éubirtta ecapse’l ed srohed ne ...1 sed tiarecalp noitcno f erton ,51 à erueiré fni tse noisne mid emèixued al tnod xuaelbat sed ceva ,tse sulp iuQ .tam ed stne mecalpme 042 sed sniatrec snad 1 ruelav al sio f 051 arecalp snoitcurt -sni sec ed noitucéxe’l ,ruetalip moc el rap inruof tios suon en citsongaid nucua’uq neib ,siaM int mat [12][20] ; ..... raun (mat) ; ..... : elp mexe tec snad em moc ,releppa’l sruojuot setrec snorruop suon ,tnem -ésicérp sulP .euvérp été a elle selleuqsel ruop sellec ed setneréf fid snoisnemid ed uaelbat nu ruop sulp tneivnoc en noitcno f ettec ,ésilitu etêt-ne’l tios euq leuq ,sio f ettec ,ehcnaver nE .)][][t tni( uar sap siam )]51[][t tni( uar ertê up tiarua noitcno f erton ed etêt-ne’l ,isniA .)2 ehpargarap el ze yover : eriomém ne sésopsid tnos stne mélé sel tnod erèina m al ed unet etpmoc eriassecén sap tnaté’n erèi merp al( 10 - Les tableaux transmis en argument 165
  • 193. tni e d t a tl us ér n u t n as si nr u o f ) te t a t l u s ér n u t n a s s i nr u o f ) tni elbuod te . ep yt ed ( st n e m u gr a x u e d à n o i t c n o f e n u r us r u e t ni o p n u ts e : euq c n o d ; ep y t sep yt ed( stnemugra xued à noitcno f enu tse )fda *( : e u q e i fi c é p s e ll E tni fda tni elbuod int (* adf) (double, int) ; : n o i t ar a l c é d et t e c z er é d is n o C 11.1 Paramétrage d’appel de fonctions .selp mexe xued iciov nE .setnasserétni sétilibissop sed ++C ne tner ffo seuqramer xued seC .)s t e j b o s el u d o m s e l s n a d t n or ets is b us sl i( s e nr e t x e t n os s n o it c n o f e d s m o n s e l e u q e c n er é f f i d e tt e c s i o f et u o t c e v a , x u a el b at e d s m o n s e l ruop tiassap es iuq ec à eugolana’d esohc euqleuq àl evuorter nO .noitcno f ettec ed esserda’l n e r u e t a li p m o c e l r a p t i u d art ts e )l u e s é y ol p m e( n oi t c n o f e n u’ d m o n el , + + C n e ,s ul p e D .esserda nos rinetnoc à erid-à-tse’c ,noitcnof enu rus ret -niop à eénitsed elbairav enu rini féd y tuep no ,ehcnaver nE .elbairav enu snad noitcno f enu’d mon el recalp ed elbissop sap tse’n li ,segagnal sertua sed trapulp al snad em moc ,++C nE 11 Utilisation de pointeurs sur des fonctions . e c i d n i n u’ d r u e l a v a l à sia m ,ruetni op nu à sulp n on ,sr ola tiareuqilppa’s 1+n ed noitatne mércni’ d e msinacé m e mê m e L .)n ed sulp ne( t ne m ugra ne einruo f ertê sr ola tiarve d )n*n( elliat al t nod nois - n e m i d e l u e s e n u à u a e l b a t n u t n ar a l c é d y n e er i r c é’s t n e m e l a g é t i arr u o p n o i t c n o f e t t e C 2 . e sr e v n i n o i s r e v n o c a l c e v a e m ê m e d s a p t i ar i n e’ n l I . n e l l i a t e d t e j b o n u’ d e s s er d a ’ l à n 0 1 e l l i a t e d t e j b o n u’ d e s s er d a’ l e d es s a p n o r a c , t n e m e n g i l a ’ d s e t n i ar t n o c s e d à e é i l es s er d a’ d n o i t a c i f i d o m e d e u qs ir n u c u a a y ’ n l i , i c I . * t n i n u n e i tr e v n o c ar e s l i’ u q ar e f g a i d r u o p e p y t o t or p n u ’ d e c n es é r p a l , t i a f n E .sr e i t n e s e d r us r u e t n i o p n o n t e sr e i t n e 0 1 e d s c o l b s e d r u s r u e t n i o p e p y t n u’ d s i a m , t e d es s er d a ’ l , s e tr e c , t s e t f i t c e f f e t n e m u gr a ’ l r O int t[30] [30] ; diag (t, 30) : i s n i a a r e t n e s é r p e s g a i d n oi t c n o f ert o n e d l e p p a n U 1 se uqrameR 166 Les tableaux et les pointeurs CHAPITRE 8
  • 194. .noitcno f enu’d esserda’l tne metcerid sap non te ,noitcno f enu’d esserda’l tnanetnoc ruetniop nu ici engiséd rac , erircé sap tuotrus tua f en li’uq neib zetoN f )x(f (*f) (x) : etnavius noça f al ed esserda’l uçer isnia n oi tc n o f al e d n o it i ni f é d a l e d ni es u A arua no tnod noitcno f al releppa’d elbissop ares li , . e p y t e d t at l u s é r n u tnassinru o f te ep yt ed tnemugra nu tnavecer noitcno f enu rus ruetniop nu cnod tse ; ep yt e d t a t l u s ér n u t n a s si nr u o f t e e p yt e d t n e m u gr a n u t n a v e c er n o it c n o f e n u c n o d ts e ; e p y t e d ts e : isnia retérpretni’s tuep noitaralcéd aS .elargétni’l rel -uclac à ehcrehc no tnod noitcno f al ed esserda’l à ici dnopserroc teum tnemugra reimerp e L g etni taolf taolf f taolf taolf )f*( taolf )taolf()f*( float integ ( float(*f)(float), ..... ) : er n e g e c e d et êt- n e n u sr ol a t i ar e d éss o p eémmon snoresoppus s u o n e u q n oi tc n o f e ll et e n U . eé n n o d e u qir é m u n e d o ht é m e n u t na v i u s e u q n o cl e u q n o it c n o f enu’d elargétni’l reluclac ed tnatte mrep noitcnof enu erircé snoitiahuos suon euq zesoppuS g etni 11.2 Fonctions transmises en argument .seuqitnedi ertê tneviod ruoter ed ruelav al ed iulec te stnemugra sed sep yt sel ici’uq eifingis iuq ec ,ep yt emêm ud tnem -esueruogir tnos sednarépo xued sel is euq elagél tse’n 1tcf = fda euq ellet noitatce ffa enU e uqrameR fct1 (5.35, 4) ; fct2 (5.35, 4) ; : s et n a vi us x u ed s ed e n u’l à etnelaviuqé cnod ares noitcurtsni ettec ,sac el tnaviuS .) te ( seéuqidni sruelav sel tnattem -snart iul ne , snad tnemelleutca erugi f esserda’l tnod noitcno f al elleppa ,te ffe ne ,ic-elleC 4 53.5 fda (* adf) (5.35, 4) ; : euq ellet noitcurtsni enu rap )em margorp ud noitucéxe’l ed li f ua reirav tuep eéleppa noitcnof al euq erid-à-tse’c( » elbairav noitcnof ed leppa « nu remmargorp ed elbissop tneived li ,snoit - i d n o c s e c s n a D . ) u o ( e t n a d n o ps err o c n oi t c n o f a l e d es s er d a’ l , s n a d , t n e c a l p s e l l E 2tcf 1t cf fda adf = fct1 ; adf = fct2 ; : s nes nu sr ol a t no se t na v i us s n o it at ce f f a s el int fct1 (double, int) ; int fct2 (double, int) ; : s t n a v i u s s e p y t ot or p s e l t n a y a s n o i t c n o f s e d t n o s 2tcf te 1tcf , elp m e xe rap ,iS 11 - Utilisation de pointeurs sur des fonctions 167
  • 195. Les tableaux et les pointeurs CHAPITRE 8 es tiarruop ellE .serèilucitrap sétluci ffid ed sap etnesérp en getni : is ni a r e t n es ér p noitcno f al ed noitasilitu’L 168 main() { float fct1(float), fct2(float) ; ..... res1 = integ (fct1, .....) ; ..... res2 = integ (fct2, .....) ; ..... }
  • 196. .niam noitcno f al à ertte msnart tuep no’l euq stne mugra sleutnevé sel ruop • ...senîahc-suos ed snoitcartxe ,nosiarap moc ,eipocer ,noitanétacnoc : euq slet seuq -issalc stnemetiart sel reutce f fe’d tnattemrep sdradnats snoitcno f ed erb mon niatrec nu rap • ; se ll e n no i tasr ev n o c s ei tro s-se ért ne s el t na si la ér s e do h té m s el rap • ; ) "ruojnob " euq sellet( setnatsnoc senîahc sel retnesérper ruop ruetalip moc el rap • : sio f al à eésilitu tse iuq ,C egagnal ud eétiréh ,senîahc sed noitatnesérper ed noitnev -n oc en u e ts i xe l i , tr ap e n u’ d , te f f e n E .s ed irb yh uep e uq le uq t n os ses o hc s el ,+ +C e g a gn al nE .enîahc euqahc ed etnaruoc rueugnol al ertîannoc ed ne yom el riovérp ,sulp ed ,tua f li te erètcarac rap erètcarac eésilaér tnemeriotagilbo tse snoitamrofni sellet ed noitalupinam a L .)erio mém ecalp ed etrep enu enîartne ,puoc emêm ud ,iuq ec te senîahc xua ela mixa m rueug -nol enu sio f al à esop mi iuq ec( exi f tne meriassecén tse elliat al tnod serètcarac ed xuaelbat sed rus relliavart ed eriassecén srola tse li ,snoitamro fni sellet ed retiart ruoP .enîahc ep yt l e t n u’ d s a p t n e s o ps i d e n ) dr a d n a ts l a cs a P u o n artr o F sl et ,s n ei c n a s u l p( s e g a g n a l s ert u a’ D .ep yt emê m ed elbairav ertua enu snad ep yt ec ed elbairav enu’d unetnoc el reré fsnart ed temrep noitatce ffa elp mis enu’uq snes ec ne ,elabolg erèinam enu’d seélupinam ertê tnevuep sellE .em margorp ud tne meluoréd ud li f ua ,rueugnol ne te unetnoc ne sio f al à ,reulové tnevuep iuq serètcarac ed setius sed riovecer à seénitsed tnos ep yt let nu’d selbairav se L .enîahc ep yt elbatirév nu’d tnesopsid )lacsaP obruT tnemenneicna ,cisaB lausiV ,avaJ( segagnal sniatreC Les chaînes de style C 9
  • 197. .G exennA’l snad tircéd tse C elyts ed senîahc ed noitalupinam ed snoitcnof sed elbmesne’L .1 "bonjour" : e mr o f al ed snoitaton sed suos ,)sem margorp sov snad zesiudortni sel suov euq udnetne-suos( » enîahc setnatsnoc « sel retnesérper ruop ruetalip moc el esilitu’uq noitnevnoc ettec tse’C 1.2 Cas des chaînes constantes . st et c o 1 + n e d t n e m e c a l p m e n u e r i o m é m n e e p u c c o s e r è t c a r a c n e d e n î a h c e n u , e l ar é n é g er è i n a m e n u’ d , e u q e i fi n gi s al e C .l u n e d o c e d er i a t n e m él p p us t et c o n u rap é n i mre t t n at é t u ot el ,)s e do c sr ue l e d n u ca hc à t ne més i cérp s ulp( ser èt car ac se s e d n u c -ahc à tnadnopserroc stetco’d etius enu rap eétnesérper tse serètcarac ed enîahc enu ,++C nE 1.1 La convention adoptée 1 Représentation des chaînes .)leppa are f y’n egarvuo’l ed ertipahc nucua( sp met rei merp nu snad sérongi ertê neib sèrt tnevuep sli te senîahc ed noitalupina m ed snoitcno f selapicnirp sel tnevircéd sli ,sehpargarap sertua xua tnauQ .erdnerp à snoituacérp sel euqidni iuq 01 ehpargarap ua’uq isnia ,senîahc ed noitalupinam ed snoitcno f sel rus selarénég snoitacidni seuqleuq ennod iuq 5 ehpargarap ua resserétni suov issua zevuop suov ,tnemelleutnevE .niam noitcno f al à stne m -ugra sed rinruo f ed erèinam al te serètcarac ed xuaelbat ed noitasilaitini’l ,sellennoitasrevnoc s e itr os s e ért n e s el , s e c n e u q és n o c s es t e s e nî a h c s e c e d n o it at n e s ér p er e d n o i t n e v - n o c a l t n et n e s ér p sl i : e g ar v u o’l e d e ti us a l s n a d s é si li t u si o fr a p t n or es i u q 4 t e 3 , 2 , 1 s e h p - ar g ara p se l s n i o m u a r ei d ut é’ d s n o d na m m oc er s u o v s u o n , C e l yt s e d s e n î a h c s e d r esi l it u’ d sa p ze ga si v ne’ n s u o v is e mê M .er ti p a hc ec s n a d re i d u t é s n ol la s u o n e u q C e l y ts e d se n îa h c s e l r us e ss a p mi’ l t n e m e l a t o t t n asi a f n e + + C er d n er p p a’ d e l bis s o p er è u g ts e’ n l i , e v i ti n i f é d n E .)gnirts ep yt ed sruelav sed ,sac nucua ne te( C el yts ed senîahc sed euq resilitu tuep en no ,niam noitcnof al à stne mugra sed ressap ruop • ; )...sem margorp xuaevuon ed emêm te( C el yts ed senîahc sel tnesilitu ++C se mmargorp ed erb mon nob • ; tnemerueirétlu’uq seéiduté tnores en iuq ruetaréti’d te ruenetnoc ed snoiton sel rus esoper noitasilitu ennob as • : siaM .gnirts essalc enu’d emro f al suos ,++C egagnal el snad tnemevidrat tiudortni » enîahc ep yt elbatirév « nu etsixe li ,trap ertua’D . n o it n e v n o c ettec tnavius seétnesérper senîahc sel rengiséd ruop » C el yts ed senîahc « ed snorelrap suoN 1 170 Les chaînes de style C CHAPITRE 9
  • 198. ad r b o n j o u r 0 .elcuob al ed sruoc ua ,rda ed ruelav al ed noitulové’l à tnednopserroc sehcèl f sertua sel ; "ruojnob" = rda : noitatce ffa’l ed noitucéxe’l sèrpa noitautis al à dnopserroc nielp tiart ne ehcèlf a L .enè monéhp ec tnartsulli améhcs nu icioV .xuaelbat sel ruop euq enèmonéhp emêm el àl evuorter no ; esserda nos sia m ,e mê m-elle enîahc al ed ruelav al sap non ,ruelav emmoc a ruojnob noitaton al adr = "bonjour" : n o it at c e f f a’l s n a d ,si a m s t n a d n o ps err o c st et c o’ d e ti us a l eri o m é m n e é ér c a r u e t a li p m o c el "bonjour" : etnatsnoc al enrecnoc iuq ec nE .)ser -ètcarac ed etius enu uo( erètcarac nu rus ruetniop nu ruop tnemecalpme’l tnemelpmis evresér char * adr ; : n oi tar al cé d a L senîahc sed noitatnesérper ed noitnevnoC bonjour #include <iostream> using namespace std ; main() { char * adr ; adr = "bonjour" ; while (*adr) { cout << *adr ; adr++ ; } } : sétiralucitrap xued sec tnartsulli e mmargorp nu icioV .e tn a d nops err oc eri o mé m e n o z a l r us ) r a h c ep y t ed stne mélé sed rus( ruetniop nu ne ruetalipmoc el rap etiudart ares noitaton ellet enu ,sulp eD 1 - Représentation des chaînes 171
  • 199. cin >> setw(LG_nom) >> nom >> setw(LG_prenom) >> prenom ; cout << "donnez votre nom et votre prénom : " ; ..... const int LG_nom = 20, LG_prenom = 20 ; char nom [LG_nom+1], prenom [LG_nom+1] ; : ) p i n a m o i e t ê t - n e r e i h c i f e l tr e i u q e r w t e s e d n o i t a s i l i t u’ l , n o i t - n e t t a( m o n ér p e l t e m o n e l er i l s n o i rr u o p s u o n t n e m m o c i c i o v , e l p m e x e r a P .s t o l f x u a é r c a s n o c er t i p a h c e l s n a d é i d u t é ar e s i u q w t e s » e u q ir t é m ar a p r u e t a l u p i n a m « u a t n a r - u o c er n e t o l f e l r u s s e u l s n o i t a mr o f n i s e d el l i a t a l r e t i m i l e d e l b a n n o s i a r ar e s l i , e n î a h c a l t n a l l i e u c c a u a e l b a t u d t n e m e dr o b é d t u o t r e t i v é r u o p , e u q i t ar p a l s n a D . s er è t c ar a c 9 1 e d s u l p r i n e t n o c s a p t i o d e n r u e t a s i l i t u’ l r a p i nr u o f m o n e l , i c i , e l p m e x e r a P . s er è t c ar a c 1 + n e d er i o m é m n e e g a k c o t s e l e u q i l p mi s er è t c ar a c n e d er u t c e l a l e u q n e i b z e t o N 2 .gnirts ep yt ed senîahc seiarv sel rus tnoresèp setniartnoc se mê m sec euq zetoN .enilteg edohtém al à tnaruocer ne étluci ffid ettec renruotnoc tne mmoc snorrev suon ,22 ertipahc ud 3.2 ehpargarap u A .engil ed ni f enu uo ecapse nu tnamre fner enîahc enu eril ed elbissop sap cnod tse’n li te C el yts ed senîahc sel ruop tuav euqramer etteC .sruet -arapés serètcarac sed rap seétimiléd tnos nic rus seul snoitamro fni sel euq snoleppaR 1 se uqrameR .serètcarac ed xuaelbat sed ésilitu tnemeuqissalc snova suon ,icI .reivalc ua seul senîahc sel rillieucca ruop stne mecalp me sed revresér ûd snova suoN C elyts ed senîahc ed erutircé te erutceL quelle est votre ville : Paris donnez votre nom et votre prénom : Dupont Yves bonjour cher Yves Dupont qui habitez à Paris #include <iostream> using namespace std ; main() { char nom [20], prenom [20], ville [25] ; cout << "quelle est votre ville : " ; cin >> ville ; cout << "donnez votre nom et votre prénom : " ; cin >> nom >> prenom ; cout << "bonjour cher " << prenom << " "<< nom << " qui habitez à " << ville ; } : emmargorp ed elpmexe tec ertno m el em moc C el yts ed senîahc xua tnessigralé’s sétil -ibissop seC .esab ed sep yt stneré ffid sed sruelav sed narcé’l à rehcif fa te reivalc ua eril tne m - moc uv àjéd snova suon ,sellennoitasrevnoc seitros-seértne xua ércasnoc ertipahc el snaD 172 2 Lecture et écriture de chaînes de style C Les chaînes de style C CHAPITRE 9
  • 200. : tn or es t ne m et i ci lpx e s és il ai ti n i n on ser èt car ac 21 s el ,s ac r ei nr ed e c s na d ,e uq s ap z ei lb uo’N char ch[20] = { ’b’,’o’,’n’,’j’,’o’,’u’,’r’,’0’ } : )0 éton – oréz edoc el sap tnattemo’n ne( serètcarac e d n o i t a r é m u n é e n u r a p e é s i l a é r h c e d n o i t as il ai t i n i e n u à t n el a vi u q é t n e m et i a fr a p ar es al e C char ch[20] = "bonjour" ; : er irc é z err u o p s u o v , is ni A . et n ats n oc e n î a h c e n u’ d e d i a’ l à s er è t c ar a c e d u a e l b a t er t o v r es il ai t i n i à es ir ot u a s u o v C , e h c n a v er n E .) " r u o jn o b " enîahc etnatsnoc al à ruetalip moc el rap eéubirtta esserda’l ed tiariga’s li ,ici( ruelav ertua enu reubirtta iul ed noitseuq sap cnod tse’n li ; eulavl enu sap tse’n ec ; hc uaelbat ua eéub -irtta a ruetalipmoc el euq esserda’l à dnopserroc iuq ruetniop etnatsnoc enu tse hc ,te ffe nE ch = "bonjour" ; : erneg ud noitatce ffa e n u t n a vir c é n e , h c s n a d e t n a ts n o c e n î a h c e n u r er é f s n art t n a t u a r u o p s a p z err u o p e n s u o v char ch[20] ; : elpmexe rap zeralcéd suov is ,sio fetuoT.ser -è t cara c e d x ua el ba t s e d s n a d C el y ts e d s e n îa h c se d re ca l p t n e m m o c r i o v e d s n o n e v s u o N 3.1 Initialisation de tableaux de caractères 3 Initialisation de tableaux par des chaînes char * ville = new char [20] ; ..... cin >> ville ; : i s n i a r e d é c or p u p s n o i r u a s u o n , e l l i v a l r u o p , e l p m e x e r a P . s t n e m e c a l p m e s e d t n e m e u q i m a n y d r e u o l l a t n e m e l a g é u p s n o ir u a s u o N . s e n î a h c s e l r e g n ar y r u o p s er è t c ar a c e d x u a e l b a t s e d és i l i t u s n o v a s u o n , i c I 4 .lun e d o c e d er è t c ar a c n u ’ d er t n o c n e r a l à’ u q s u j , e s s e r d a e t t e c e d r i t r a p à s é v u or t s e r è t c a r a c s e l s u o t t u o c t o l f e l r u s e i o v n e i u q < < r u e t ar é p o’ l à e s i m s n ar t t s e e ss e r d a n os , n o i t u c - é x e ’ l e d sr o L . " r u o j n o b " e n î a h c a l r u o p é vr es é r ts e t n e m e c a l p m e n u , n o i t a l i p m o c a l À cout << "bonjourn" ; : er n e g u d s n o i t c u r ts n i s e d s n a d s e t n a t s n o c s e n î a h c e d r u e l a v a l t n e m e v i t i u t n i é h c i f f a s n o i v a s u o n , i c i’ u q s uJ 3 . t o l f e l r u s e t p m o c n e s ir p s e r è t c a r a c e d e r b m o n e l t n a t i m i l n e , e u l n o i t a m r o f n i e n i a h c or p a l r u s e u q e t r o p e n e l l e ,s a c e c s n a d , t e ) g n i r t s e p y t e d u o C e l y t s e d( s e n î a h c s e l t n e m e u q i n u e nr e c n o c w t e s à e i nr u o f r u e l a v a l , t n e m er u e i r é t l u z e rr e v e l s u o v e m m o C 3 - Initialisation de tableaux par des chaînes 173
  • 201. #include <iostream> using namespace std ; main() { char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche" } ; int i ; cout << "donnez un entier entre 1 et 7 : " ; cin >> i ; cout << "le jour numéro " << i << " de la semaine est " << jour[i-1] ; } .) ni o l s u l p u e p n u s n or elr a p er s u o n t n o d , s % t a mr o f e d e d o c u a , e n î a h c e n u’ d egahci ffa’l ruop ,leppa tia f snova y suon( noitaralcéd ettec tna yolpme elp mexe nu icioV .senîahc 7 sec ed sesserda 7 sel ceva ruoj uaelbat ud noitasilaitini’l te eniames al ed sruoj 7 x u a t n a d n o ps err o c s et n at s n o c s e n î a h c 7 s e d n o it a ér c a l si o f a l à c n o d esi l a ér n o i t ar a l c é d e tt e C char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche" } ; : s n a d e m m oc ,sr u et n i o p e d u ae l ba t nu à resilarénég es tuep aleC .enîahc enu rus ruetniop nu à retce ffa ,elpmexe rap ,tiavuop no’l euq esserda enu ne ruetalipmoc el rap etiudart tiaté etnatsnoc enîahc enu’uq uv snova suoN 3.2 Initialisation de tableaux de pointeurs sur des chaînes ...wen rap éuolla enoz al ed unetn oc e l r e i f i d o m s n a s , h c r u e t n i o p u d r u e l a v a l r e i f i d o m à t n e i v er e l l e s i a m , e l a g é l t n e i v e d ch = "bonjour" : n o i t a t c e f f a’ l e u q n e i b ar e t o n n O . e t n a t s n o c e n î a h c e n u’ d e d i a’ l à r e s i l a i t i n i’ l e d é t i l i b is s o p a l e d s u l p es o p s i d e n n o char = ch = new ch[20] ; : t n e me u q i m a n y d é u ol la t n e me ca l p m e n u esi l it u n o’l i S e uqrameR .)ni f ed 0 ud unet etpmoc( serèt carac 8 ed ,egassem é mmon ,uaelbat nu evresér ic-elleC char message[] = "bonjour" ; : e uq ellet noitcurtsni enu erircé’d elbissop tse li ,noitasilaitini enu’d eéngapmocca tse elle’uqsrol ,noitaralcéd as ed srol uaelbat nu’d noisnemid al ed noissimo’l esirotua ++C em moc ,sulp eD . e t n a n ê g s ul p t n e m e tt e n ti ar es 0 er è t c ar a c u d n ois si m o’ l ,s a c e c s n a d : ) e u q it a m ot u a ess a l c e d u a el b at n u r u o p( s er i ot a é l a ti os • ; )! serètcarac 02 inruo f tiava no’l is fuas( evarg sap )ici( tiares en 0 erètcarac ud nois -simo’l ,sac ec snad ,euq tiov no : )euqitats essalc ed uaelbat nu ruop( oréz à sésilaitini tios • 174 Les chaînes de style C CHAPITRE 9
  • 202. -acé m ec erircéd ruop sio frap ésilitu erocne ednammoc ed engil al ed stnemugra’d emret el ù o’ d( e m m arg orp u d t ne m ec n al e d ed n a m mo c al à s eé ic o ssa sru el a v ed t i ga’s l i ,) x inU uo SOD slet( etxet edom ne tnannoitcno f stne mennorivne sel snaD .sérgétni uo seuqihp -ar g st i d st n e m e n n or i v n e s e d r u o p s u ne m e d se d na m m o c e d r i g a’s t ue p l I . t ne m e n n or i v n e’l e d d n e p é d s n o i t a mr o f ni s e c r i nr u o f r u o p r u et asi l it u’l r a p és il it u e msi n a c é m e L . t n e m e c n al nos ed srol em margorp ua sinruo f stnemugra sed sruelav sel rerépucér tuep niam noitcno f a L 4.1 Comment passer des arguments à un programme 4 Les arguments transmis à la fonction main jo u r m l m u a r e d r i c r e d i 0 0 u r 0 n d i 0 ch b o n j o .s n oi ta u tis x u e d s e l e l ut i p a c ér s èr p a - i c a m é h c s e L .) 1. 1 e h p ar g ar a p el s n a d r d a t i a s i a f e l e m m o c ( etnatsnoc enîahc enu tnangiséd xue ertne’d nucahc ,sruetniop tpes ed uaelbat nu à eria ffa snova suon ,icI .etnedécérp al ceva eudno fnoc ertê sap tiod en eétnesérp noitautis a L e uqrameR C elyts ed senîahc sed rus sruetniop ed uaelbat nu’d noitasilaitinI donnez un entier entre 1 et 7 : 6 le jour numéro 6 de la semaine est samedi 4 - Les arguments transmis à la fonction main 175
  • 203. #include <iostream> using namespace std ; main (int nbarg, char * argv[]) { int i ; cout << "mon nom de programme est : " << argv[0]<< "n" ; if (nbarg>1) for (i=1 ; i<nbarg ; i++) cout << "argument numéro " << i << " : " << argv[i] << "n" ; else cout << "pas d’argumentsn" ; } : )noisnetxe enu’d ivius te eriotrepér ed uo nimehc ed noitacidni enu’d édécérp ertê arruop li ,elp mexe rap ; uep euqleuq reré ffid arruop tatlusér ne éhci ffa em margorp ed mon el ,snoitatne mélp mi sel tnavius( etxet edo m ne tnemennorivne nu s n a d t ne m ec n al e d se t na d n o pserr oc se d n a m m o c s el er tê t n ei arr u o p e u q ec sar g n e ét o n s n o v a suon te ,MOCGI L tiam mon es emmargorp erton euq ésoppus snova suoN .noitucéxe’d selp - mexe siort ed éngapmocca tse lI .sétilibissop sec tnasilitu emmargorp ed elp mexe nu icioV .c te • ; )1gra enîahc al ed cnod tiariga’s li ,elpmexe erton snad( ertèmarap dnoces el ,]1[vgra esserda’l à • ; )tset enîahc al ed cnod tiariga’s li ,tnedécérp elpmexe erton snad( em margorp ud mon el erid-à-tse’c ,ertè marap reimerp el ,]0[vgra esserda’l à • ; sertè marap ed latot erbmon el ,grabn snad • : s n or d n ei t b o s u o n main (int nbarg, char * argv[]) ic-iulec rap niam noitcno f al ed etêt-ne’l tnaçalp mer ne ,isniA .sertèmarap sed nucahc à tnadnopserroc enîahc al tnangiséd r u et n i o p e u q a h c ,sr u e t ni o p e d u a e l b a t n u’ d ess er d a’ l ar es n i a m r a p u çer t n e m u gra dn o ces el • ; )er tè m ara p n u ruop emêm-iul etpmoc em margorp ud mon el( edna mmoc ed engil al snad sinruo f sertè mar -ap ed latot erbmon el aretnesérper li te tni ep yt ed ares niam rap uçer tnemugra reimerp el • : s e t n a vi us s n oi t n e v n o c s e l n ol es t i a f es ) e m èt s y s e l r a p e és il a ér( n i a m n oi t c n o f al à noissimsnart rue L .)secapse sed rap sérapés tnos sli ,e mmargorp ud tne mecnal ed edna m - moc enu snad sinruo f tnos sli’uqsrol( C el yts ed senîahc sed sruojuot tnos sertèmarap seC 4.2 Comment récupérer ces arguments dans la fonction main test arg1 arg2 arg3 : 3gra te 2gra ,1gra stnemugra sel tnatte msnart iul ne , tset ém mon em margorp ud noitucéxe’l ednamed no’l ùo elpmexe nu iciov nE .)emsin 176 Les chaînes de style C CHAPITRE 9
  • 204. ertê’d elbitpecsus( noitamro fni enu isnia tnecalp iuq snoitcno f sel setuot ,te ffe ne ; seuqsir slet ed ertnoc rinu mérp suov ed noça f enu’d tnadnepec zeresopsid suov ,tia f nE .zeiluov suov euq ec ed àled-ua tircé a elle’uq ertîannocer ed noitcno f al à te mrep en neir ,te ffe nE ! tiordne tec à ecalp ed tnem masi ffus ed resopsid ed uvérp riova li-t-arduaf erocnE .eipoc al eriaf es arved ùo tnemecalp me’l ed esserda’l te reipoc à enîahc al ed esserda’l )ypcrts ,ici( eul -uov noitcno f al à arinruo f no ,ertua nu à tne mecalp me nu’d enîahc enu reipocer ruop ,xueiM . * ra hc ep yt ed sruetniop xued )pmcrts ,ici( eénrecnoc noitcno f al à arttemsnart no ,senîahc xued rerapmoc ruop ,isniA .erètcarac rei merp nos rus ruetniop nu tnemésicérp sulp uo ,esserda nos tnemelues siam ,enîahc enu’d ruelav al ertte msnart siamaj cnod tuep en nO .noitatnesérper ed noitnevnoc enu tnemelp mis siam ,erèitne trap à ep yt nu sap eutitsnoc en C el yts ed enîahc a L 5.1 Ces fonctions travaillent toujours sur des adresses .01 ehpargarap el rus euq isnia ,ehpargarap ec rus liœ’d puoc nu sniom ua retej ed e mê m dnauq snolliesnoc suov suoN .)leppa sap aref y’n egarvuo’l ed etius al( nioseb ed sac ne tne merueirétlu eédroba ertê tnemelleutnevé tuep elle ; evitatluca f cnod etser stnavius sehpargarap sed eduté’L .sedoc xuaevuon ed erutircé’l snad éigélivirp ertê cnod arved li te ,elbai f sulp puocuaeb e mrof enu suos ,sétilibissop semêm sel arir ffo gnirts essalc ep yt el ,noitcudortni ne tid snova’l suon emmoC .C el yts ed senîahc ed noitalupinam ed snoitcno f sesuerb mon ed C ud étiréh a ++C 5 Généralités sur les fonctions portant sur des chaînes de style C ednammoc ed engil al ed stnemugra sed noitarépucér ed elpmexE on nom de programme est : C:Documents and SettingsclaudecbprojectConsoleApp46windowsDebug_BuildConsoleApp46.exe argument numéro 1 : donnees.dat argument numéro 2 : sortie.txt argument numéro 3 : 25 argument numéro 4 : septembre argument numéro 5 : 2006 mon nom de programme est : C:Documents and SettingsclaudecbprojectConsoleApp46 windowsDebug_BuildConsoleApp46.exe argument numéro 1 : parametre mon nom de programme est : C:Documents and SettingsclaudecbprojectConsoleApp46 windowsDebug_BuildConsoleApp46.exe pas d’arguments 5 - Généralités sur les fonctions portant sur des chaînes de style C 177
  • 205. : elpmexe tec ze yoV .spmet rei merp nu snad érongi ertê tuep ehpargarap eC .B .N 6.1 La fonction strcat 6 Les fonctions de concaténation de chaînes . ét l u c i f fi d s n as s er t u a x u a l e p p a eri a f ri o v -uop ed erttemrep suov tneiarved ,exenna’l euq isnia ,etiusne seinruof snoitacidni se L .)seésil - it u s u l p s e l t n os e c( ei p o c e d t e n o i t a n é t a c n o c e d s n o it c n o f s e l l i a t é d n e dr o b a’ d s n or e t n es ér p s u o v s u o n ,se n îa hc s el re l u pi n a m e d e ll er ut a n erè u g n oç a f e tt ec c e va res ira i li ma f s u o v r u o P . et n a t l u s ér e nî a h c a l e d r u e u g n o l al r e ti mi l ed te mrep enu’l tnod setnairav xued arevuort no ,erocne à L .)...urapsid a ni f ed 0 nos lues ,tia f ne( enîahc euq tnat ne etiurtéd cnod evuort es elleuqal ,erèi merp al ed ni f al à ednoces al t n a t u o j a n e e u n e t b o ti ar e s et n at l us ér e n î a h c al e u q t n e m er i ar ti br a t n a n e v n o c n e s ess er d a xued à tneti mil es snoitcno f sec ,tia f nE ! sesserda siort tne mugra ne riovecer cnod tneiarved sellE .sertua xued ed ritrap à enîahc ellevuon enu tneérc snoitcno f sellet ed ,iroirp A .sen -îahc xued ed tuob à tuob esi m ed erid-à-tse’c ,noitanétacnoc ed setid snoitcno f sed etsixe lI 5.3 Le cas des fonctions de concaténation . 5 ar d u a v strlen (adr) : n oi s s e r p x e ’ l char * adr = "salut" ; : c e v a , e m ê m e d ; 7 ar d u a v strlen ("bonjour") : n oi s s e r p x e ’ l , e l p m e x e r a P .rueugnol al snad etp moc ne sirp sap tnaté’n erètcarac ec ,lun edoc ed erètcarac rei merp ua’uqsuj eéuqidni esserda’l siuped sévuort serètcarac ed erbmon ua tnemellerutan tuot dnopserroc rueugnol etteC .tnemugra ne esserda’l simsnart a iul no tnod enîahc enu’d rueugnol al tatlusér ne tinruo f nelrts noitcno f a L 5.2 La fonction strlen .eénrecnoc esserda’l à séipoc tne mevitce ffe serètcarac ed erbmon el reti mil ed tnatte mrep eriatne mélppus tnemugra nu tnadéssop ertua’l ,elôrtnoc snas tnalliavart enu’l : setnairav xued tnedèssop eénnod esserda’d tnemecalp me nu à )euqnocleuq rueugnol enu’d 178 Les chaînes de style C CHAPITRE 9
  • 206. : n oi ta si li t u’ d e l p m e x e n u i ci o v n E .) tub( eévirra’d enîahc al à sénétacnoc tnores iuq ser -ètcarac ed erbmon el rus elôrtnoc nu ertuo ne tnar ffo ne tacrts à elbalbmes noçaf ed elliavart strncat (but, source, lgmax) // prototype dans cstring : isnia etnesérp es leppa’l tnod noitcno f etteC 6.2 La fonction strncat .re nétacn oc i ul à eitrap al ri ovecer y r u o p t n a s i f f u s t i os e n î a h c e r è i m e r p a l r u o p é vr e s ér t n e m e c a l p m e’ l e u q er i a s s e c é n ts e l I 2 .eéluoréd lam tse’s noitarépo’l euqsrol lun ruetniop el – ; )ruetniop etnatsnoc enu sruellia’d tse’c – eéi fidom été sap a’n elleuqal( 1hc ed ellec euq ertua’d neir tse’n esserda ettec ; eéluoréd neib tse’s noitarépo’l euqsrol ,tnemugra ne seinruof senîahc xued sed noitanétacnoc al à tnadnopserroc enîahc al ed esserda’l – : tatlusér ne tinruo f tacrts noitcno f a L 1 se uqrameR . ni f e d erè tc ara c e l éc a f fe ri o va ne sèrpa ,)tub( erèimerp al ed etius al à )ecruos( enîahc ednoces al eipocer noitcno f etteC strcat ( but, source ) // prototype dans cstring : isnia etnesérp es tacrts ed leppa’L . t n e m e l a it i n i e c a l p y n o ’ u q e n î a h c etnatsnoc al euq dnarg sulp tne mecalp me nu revresér ed te mrep erèimerp a L .2hc te 1hc sen -îahc xued sed enucahc ed )noitasilaitini ceva( snoitaralcéd xued sel ertne ecneré ffid al zetoN tacrts noitcnof aL avant : bonjour après : bonjour monsieur #include <iostream> #include <cstring> // pour strcat using namespace std ; main() { char ch1[50] = "bonjour" ; char * ch2 = " monsieur" ; cout << "avant : " << ch1 << "n" ; strcat (ch1, ch2) ; cout << "après : " << ch1 ; } 6 - Les fonctions de concaténation de chaînes 179
  • 207. . f it is op tse strcmp ("paris2", "paris10") : t e fi t a g é n t s e strcmp ("bonjour", "monsieur") : ) n o i t a t n e m él p mi’ l ti os e u q el l e u q( el p m e x e r a P . 2 e n î a h c < 1 e n î a h c is e vi ta g é n – ; )s erè tc ara c e d e ti us e mê m al tnemetcaxe tnenneitnoc senîahc xued sec is erid-à-tse’c( 2enîahc = 1enîahc is ellun – ; )s er èt c ar a c s e d e d o c e l r a p i n i f é d er dr o’ l ed snes ua ,2enîahc sèrpa evirra 1enîahc is erid-à-tse’c( 2enîahc > 1enîahc is evitisop – : t na té e m m oc ei n i f é d er è i t n e r u el a v e n u ti nr u o f e l l e t e , es s er d a’ l ti nr u o f i ul n o t n o d s e n î a h c x u e d er a p m o c strcmp ( chaîne1, chaîne2 ) // prototype dans cstring : n oi t c n o f a L • .edoc ruel rap sini féd serètcarac sed erdro’l tnasilitu ne senîahc xued rerapmoc tuep nO .spmet rei merp nu snad érongi ertê tuep ehpargarap eC .B .N 7 Les fonctions de comparaison de chaînes .2.4 noitces al à eétnesérp nelrts noitcnof al rap ardneitbo’s erèinred etteC .evuort y’s i u q e nî a h c al e d e t n ar u o c r u e u g n ol al t e e cir t p e c ér e n o z a l e d el at o t e ll i a t al ert n e e c n er -é ffid al tnaté e mmoc reipocer à serètcarac ed lamixa m erbmon ec arenimretéd no ,tnem meuq -érF .elani f enîahc al ed rueugnol al rus tne metcerid sap etrop en elôrtnoc el euq neib zetoN tacnrts noitcnof aL 180 avant : bonjour après : bonjour monsi #include <iostream> #include <cstring> // pour strncat using namespace std ; main() { char ch1[50] = "bonjour" ; char * ch2 = " monsieur" ; cout << "avant : " << ch1 << "n" ; strncat (ch1, ch2, 6) ; cout << "après : " << ch1 << "n" ; } Les chaînes de style C CHAPITRE 9
  • 208. #include <iostream> #include <cstring> // pour strncpy using namespace std ; main() { char ch1[20] = "xxxxxxxxxxxxxxxxxxx" ; char ch2[20] ; : snoitautis xued sel ertsulli tnavius elp mexe’L .sap ares el en li ,eriartnoc sac el snad ,siaM .éipocer tnemevitce ffe ares )0( ni f ed erètcarac nos ,elamixa m rueugnol ettec à erueiré fni tse ecruos enîahc al ed rueugnol al is ,euq neib zetoN .xamgl erèitne noisserpxe’l rap sés -icérp serètcarac ed erb mon ua eipocer al tnati mil ne ,ypcrts à eugolana erèinam ed edècorp strncpy ( but, source, lgmax ) // prototype dans cstring : no i tc n o f a L • . t u b e nî a h c al e d es s er d a’ l t a tl us ér e m m o c ti nr u o f n o i t c n o f et t e C . fitsep metni tnemesarcé’d eniep suos ,reipocer à enîahc al rillieucca ruop etnasi f fus tios tne mecalpme dnoces ud elliat al euq eriassecén tse li ,erocne à L .nitsed esserda’d tne mecalp me’l snad ecruos esserda’l à eéutis enîahc al eipocer strcpy ( but, source ) // prototype dans cstring : no i tc n o f a L • .s p m e t r ei m er p n u s n a d ér o n gi er t ê t u e p e h p ar g ar a p e C .B.N 8 Les fonctions de copie de chaînes .)s e u qi t é b a h p l a s er èt c ar a c sl u es s e l r u o p( s e l u cs u n i m t e s el u c s u j a m ert n e e c -neré ffid al ed etpmoc rinet snas sia m ,pmcnrts te pmcrts e mmoc tnemevitcepser tnelliavart stricmp ( chaîne1, chaîne2 ) strnicmp ( chaîne1, chaîne2, lgmax ) // prototype dans cstring // prototype dans cstring : s n o it c n o f x u e d , n i f n E • . or é z t u a v strncmp ("bonjour", "bon", 2) : e uq s i dn at fi ti sop ts e strncmp ("bonjour", "bon", 4) : e lp m e xe r aP .xamgl reitne’l rap séuqidni serètcarac ed la mixam erb mon ua nosiarapmoc al etimil elle siam ,pmcrts emmoc elliavart strncmp ( chaîne1, chaîne2, lgmax ) // prototype dans cstring : no i tc n o f a L • 8 - Les fonctions de copie de chaînes 181
  • 209. .se m m ar g or p se d t ni o p u a e si m e n n o b a l à eri u n t u e p e c n ass i a n n o c é m a l t n o d s i a m ,s e ét is u s n i o m s n oi t a u tis s e d t n a nr e c n o c noitamro fni’d stnemélpmoc seuqleuq ici icioV .setnaruoc sulp sel snoitautis xua séti mil se m - mos suon suon ,étralc ed icuos rap ,tnadnepeC .C el yts ed senîahc sel erèg ++C tnod elleic -i fitra erèinam al ed secneuqésnoc sed erb mon nob éni maxe snova suon ,ertipahc ec snaD 10 Quelques précautions à prendre avec les chaînes de style C .eénnoitne m enîahc-suos al ed etèlp moc ecnerrucco erèimerp al , enîahc snad ,ehcrehcer strstr ( chaîne, sous-chaîne ) // prototype dans cstring .énnoitne m erètcarac ud ecnerrucco erèinred al cnod tinruo f ellE .ni f al ed ritrap à eénrecnoc enîahc al tnarolpxe ne sia m ,rhcrts euq tnemetiart emêm el esilaér strrchr ( chaîne, caractère ) // prototype dans cstring .énnoitne m erètcarac el tîarappa ùo noitisop erèimerp al , enîahc snad ,ehcrehcer strchr ( chaîne, caractère ) // prototype dans cstring : selapicnirp sel icioV .eriartnoc sac el snad lun ruetniop el te t a t l u s ér e m m o c t n e s ,sè cc us e d sa c ne eé hcr e hc n oi ta mro f n i’l r us * r a h c -s i nr u o f se ll E .) e nî a h c-s u os sr o la eé m m o n( C e l yt s e d e nî a hc ert u a e n u’ d u o er èt car ac n u’ d C el yts ed enîahc enu snad ecnerrucco’l ed ehcrehcer ed seuqissalc snoitcno f sed evuort nO .spmet rei merp nu snad érongi ertê tuep ehpargarap eC epyt e d ru et ni op nu .B .N 9 Les fonctions de recherche dans une chaîne ypcnrts te ypcrts : senîahc ed eipocer ed snoitcnof seL 182 donnez un mot : bonjour bonjouxxxxxxxxxxxxx donnez un mot : bon bon } cout << "donnez un mot : " ; cin >> ch2 ; strncpy (ch1, ch2, 6) ; cout << ch1 << "n" ; Les chaînes de style C CHAPITRE 9
  • 210. .s u lu o v serè t cara c e d n ois se cc us a l ég n ar a li leuqel snad tne mecalp me nu’d esserda’l rap "ruojnob" noitaton al ecalp mer ruetalipmoc el char * adr = "bonjour" ; : euq ellet noitcurtsni enu snad ,euq uv snova suoN 10.2 Les risques de modification des chaînes constantes ! ni o l s èrt r e u ti s e s t ne m el l e u t ne v é arr u o p ni f e d oré z e l te se l bi si vér p u e p z ess a s erè tc ara c s e d ar e h ci f f a n o s ia M cout << adr+10 ; // affiche des caractères à partir de l’adresse adr+10 // tant qu’on n’a pas trouvé de zero de fin ! : eétpecca ares etnavius noitcurtsni’l char * adr = "bonjour" ; : c e v a , ni f n E .1hc esserda’d enîahc al ed srohed ne éutis tnemecalp me nu resarcé tiardneiv no : seuqihportsatac tnemetten tneiares sesohc sel strcat (ch1+10, ch2) ; : ce v a , e hc n a v er n E ! nif ed 0 emêm ud ritrap à eénétacnoc sruojuot ares 2hc euqsiup )rueisnom ruojnob ( laitini e mmargorp el ceva’uq tatlusér e mê m el ardneitbo no strcat (ch1+2, ch2) ; : r a p n o it c ur ts ni e m ê m et t e c s i o f et t e c e c al p m er n o’l is , t n e m es u e ir u c s ul P bonjoursieur : tnemelp mis srola tiarehci ffa emmargorp e L strcat (ch1, ch2+4) ; : rap strcat (ch1, ch2) ; : recalpmer ed elbissop tiaf à tuot tiares li ,1.5 ehpargarap ud em margorp ed elpmexe’l snad ,emê m eD .)2+rda ne tnaçnemmoc enîahc al ed rueugnol( 5 ruelav ruop tiarua elle : eétpecca tiares strlen (adr+2) : e u q e ll et n o iss er p x e e n u char * adr = "bonjour" ; : n o i t ar a l c é d et t e c c e v a , el p m e x e r a P . e nî a h c e d t u b é d e d es s er d a’ d e c i f f o eri a f sr u oj u ot t u e p * r a h c e p y t e d e s s e r d a etuot ,tia f nE .tubéd nos ruop uvérp tse’n elbarapmoc ed neir ,ehcnaver ne ; enîahc enu’d nif al ed noitatnesérper ed noitnevnoc enu tnemevitce ffe etsixe li ,uv snova’l suon em moC 10.1 Une chaîne de style C possède une vraie fin, mais pas de vrai début 10 - Quelques précautions à prendre avec les chaînes de style C 183
  • 211. .) t n a t s n o c e ts e r h c u a e l b a t u d u n e t n o c e l e u q r i o l u o v e d n os i ar e n u c u a s n o v a’ n s u o n( e t i c i l t n e m e t i a fr a p t s e *(ch + 3) = ’x’ ; : e u q e l l e t n o i t c ur t s n i e n u r a p ,hc e d st ne mélé sed n u’l ed n oitaci fido m etu ot ,reilucitrap nE .hc uaelbat ud serètcarac sr e i m er p s e d n o i t a s i l a i t i n i ’ l t n a ç a l p m er er u t i r c é ’ d é t i l i c a f e n u ’ u q t s e ’ n , i c i , e l l e u q a l ) ". . . " ( e é y o l p m e n o i t a t o n a l é r g l a m i c e c t e , e t n a t s n o c e n î a h c e d s a p t î a r a p p a ’ n l i char ch[20] = "bonjour" ; : euq ellet noitaralcéd enu snaD e uqrameR ... t ne m m e d éc ér p tir cé d s us se c -orp el rap eéi fidom revuort es neib sèrt tuep tuoc tol f ua esi msnart enîahc al ,snoitidnoc sec snad ; siof enu’uq reérc al en tnevuep sruetalipmoc sniatrec ,em margorp nu’d stne mecalpme srueisulp ne tîarappa )ruojnob( etnatsnoc e mê m ettec euqsrol ,tnadnepeC .esserda nos à sècca sap snova’n suon euqsiup elbissop erèug tse’n noitaci fidom as euq resnep tiarruop no ,icI cout << "bonjour" ; : euq ellet noitcurtsni enu snad tne melagé tîarappa enîahc etnatsnoc enu’uq snolangiS .)rda( stup euq ellet noitcurtsni enu tnatucéxe n e r e t a ts n o c e l , e l p m e x e r a p ,s n oirr u o p s u o N ! r u o j x o b u o r u o j n o x n e r u o j n o b e t n a t -snoc erton ed noitaci fido m al à tituoba no’l euq etros ed ,tnetpecca’l sruetalipmoc ed puoc -uaeb ,euqitarp nE .tnatsnoc ed esohc euqleuq ed noitacifidom al tidretni e mron al ,iroirp A *adr = ’x’ ; * (adr+2) = ’x’ ; /* bonjour va-t-il se transformer en xonjour ? */ /* bonjour va-t-il se transformer en boxjour ? */ : euq ellet noitatce ffa elanab enu rap serètcarac sec ed nu’l rei fido m ed etnet no’l is eriudorp es av iuq ec redna med es tuep no ,snoitidnoc sec snaD 184 Les chaînes de style C CHAPITRE 9
  • 212. . eru tc ur ts ep yt u d se ll ec e d se h corp sèr t tn os n oi ta si li t u n os t e n oi tar al cé d as e u q ecr a p e u q e i fi ts uj e s e n er ti p a h c ec s na d )e vi dr at( n o it at -nesérp as ,erocne à L .reitne ep yt ed reilucitrap sac nu’d tiga’s li ,noitaré muné ep yt ua tnauQ . ert -ipahc emêm nu snad eduté ruel ei fitsuj iuq tse’C .nisiov noitasilitu’d edom nu te enu mmoc exatn ys enu rap seéil tnetser selle ,snoinu te serutcurts ertne tnatsixe setnedivé secneré ffid sel érglaM .stneré ffid sep yt ed selbairav sed rap eriomém tnemecalpme emêm nu regatrap eriaf ed ne yom nu’d tiga’s lI .snoinu sed emmon li’uq ec rini féd ed temrep ++C ,trap ertua’D .essalc ed reilucitrap sac nu areutitsnoc elle’uq etros ed ,)sed -ohtém( serbmem snoitcno f ed eétod ertê tnemelagé tuep erutcurts ellet enu’uq snorrev suon te ++C ed .O.O.P ed sétilibissop sel snoredroba suon ,tnavius ertipahc el sèD .erutcurts al ed n i es u a m o n n os r a p s i a m , n o it is o p e d n oi t a ci d n i e n u r a p s u l p n o n ,si o f e tt e c , ar e f es ) p m a h c émmon( erutcurts al ed tne mélé euqahc à sècca’L .stneré ffid sep yt ed ertê tnavuop sruelav ed elbmesne nu mon lues nu suos rengiséd ed ertte mrep suon av ,elle à tnauq ,erutcurts a L .ecidni nu rap eéréper tnaté selle ertne’d enucahc ,ep yt emêm ed sruelav ed el b m es ne n u m o n l ues n u s u os r e n g isé d e d t ia tt e mre p u ae l ba t el t n e m m o c u v àj é d s n o va s u o N Les types structure, union et énumération 10
  • 213. .s u l p a r t î a r a p p a’ n é t ï u g i b m a e n u c u a ’ u q e tr o s e d , e p y t u d s e l b a ir a v s e l r u o p t e j b o’ d t e e p y t e l r u o p es s a l c e d ar e lr a p n o s i o f e t t e c s i a m ,s e ss a l c s e l r u o p ar e t s i x e n o i t c ni t s i d e m ê m a L . e p y t u d s e l b a ir a v s e d t i o s ,) e l è d o m( e p y t u d m o n e l t i os r e n g i s é d r u o p » er ut c ur t s « t o m e m ê m e l s n o r es i l i t u s u o n , ar e ts i x e ’ n é t ï u g i b m a e n u c u a e u qs r o l , t n e v u o S 2 . » e m y n o n a er u t c ur t s « e d e m r e t e l r a p n o i t a u t i s e t t e c t n e v u os e n g -iséd nO .ep yt ec ed selbaira v sertua’d etius al rap reralcé d à sap tia’n no’l euq ,rûs neib ,n oitidnoc à ,)gerne( ep yt ed mon el ertte mo’d elbiss op e mêm tse li ,sac reinred ec snaD struct enreg { int numero ; int qte ; float prix ; } art1, art2 ; : e l p m ex e te c s n a d e m m o c n o it c ur ts n i el u e s e n u s n a d e p y t e c e d s e l b a ir a v s e d n o i t ar a l c é d al t e er ut c urts e d e p y t ud noitini féd al repuorger ed elbissop tse li’uq zehcas ,édna mmocer uep tios ec euq neiB 1 se uqrameR .gerne ep yt ud 2tra te 1tra stne mecalpme xued evresér enreg art1, art2 ; : elb alb m es erè i na m eD . t n a tt o l f nu te sreitne xued rinetnoc à énitsed » gerne ep yt ed « 1tra émmon tnemecalpme nu evresér enreg art1 ; : e l p me x e r a P . t na d n o p -serroc ep yt ud selbairav sed reralcéd snovuop suon ,erutcurts ed ep yt let nu ini féd sio f enU .)xirp te etq ,oremun( erutcurts al tnautitsnoc sp mahc sed nucahc ed ep yt el te mon el esicérp li te gerne ici elleppa’s ep yt eC .erutcurts ettec à tnadnopserroc elbairav ed sap evresér en siam erutcurts ed )elèdom( epyt nu tini féd ic-elleC struct enreg { int numero ; int qte ; float prix ; } ; : noitaralcéd ettec droba’d tuot ze yoV 186 1 Déclaration d’une structure Les types structure, union et énumération CHAPITRE 10
  • 214. .)4 ert ipa hc ud 51 ehpargarap ud uaelbat el tnemelleutnevé ze yover( sesèhtnerap ed etissecén en sus -sed-ic snoisserpxe sed enucua’uq etros ed ,eévelé sèrt tse » . « ruetarépo’l ed étiroirp a L . 1 t ra e uqrameR erutcurts al ed oremun p mahc ud ruelav al ed etnemércni 1 art1.numero++ .2tra erutcurts al ed xirp pmahc ua eétce ffa ares iuq ruelav enu til cin >> art2.prix ; .1tra erutcurts al ed xirp pmahc ud ruelav al ehci ffa cout << art1.prix ; .1tra erutcurts al ed oremun pmahc ua 51 r ue la v al e tc e f fa art1.numero = 15 ; .ep yt ec ed seér -alcéd 2tra te 1tra selbairav sel te gerne erutcurts ep yt el tnasilitu selp mexe seuqleuq icioV .)sap sruellia’d tnanevretni’n emêm-iul elèdo m ed mon el( elèdom el s n a d i n i f é d é t é a li’ u q l e t p m a h c e d m o n u d i vi us ,) ( » t n i o p « r u e t a r é p o ’ l e d e r u t c u r t s el b a ir a v al e d m o n el er v i us t n as i a f n e e t o n es p m a h c n u’ d n oi t a n gi s é d a L . t n a d n o ps err o c ep yt ud elbairav elleuq etropmi’n em moc élupina m ertê tuep erutcurts enu’d pmahc euqahC . 2.1 Utilisation des champs d’une structure .erutcurts al ed elbmesne’l rus elabolg erèinam ed tnalliavart ne • ; sp mahc ses ed nucahc rus tnemelleudividni tnalliavart ne • : s er è i n a m x u e d e d er u t c ur ts e p y t e d el b air a v e n u r esi l it u t u e p n o , + + C n E 2 Utilisation d’une structure . é s i l i t u t n e m er ar t s e l i s i a m , + + C n e l a g é l e ts e r n o i t ar a l c é d e d er n e g e C struct enreg art1, art2 ; aL . tcur ts : erircé’s tnemeriotagilbo tiaved etnedécérp noitaralcéd tom ud iolpme’l tiatissecén erutcurts ep yt nu’d selbairav ed noitaralcéd al ,C nE C nE 187 2 - Utilisation d’une structure
  • 215. .)euqitamotua( seriotaéla uo )euqitats( oréz à sélaitini ,etnadnopser -roc erutcurts elbairav al ed noitacolla’d essalc al tnavius ,srola tnores stnauqnam spmahc sel ; sruelav seniatrec erttemo’d elbissop tse lI .selugriv sed rap seérapés sruelav ed etsil enu’d emro f al suos ,erocne àl ,etnesérp es spmahc stneré ffid sed noitpircsed al euq ze yov suoV enreg art1 = { 100, 285, 200 } ; : tnem medécérp ini féd ep yt el esilitu iuq noitcurtsni ettec snad em moc ,noitaralcéd as ed srol eésilaitini ertê tuep erutcurts enu ,uaelbat nu’d ratsni’l À . e ti u s e d is n i a t e ,s p m a h