Sunteți pe pagina 1din 666
TOTUL DESPRE CCH Manualul fundamental de programare in C si C++ Dr. Kris Jamsa & Lars Klander Traducere de Eugen Dumitrescu Teora Titlul original: Jamsa's C/C++ Programmer's Bible Copyright © 2001, 1999 Teora ‘Toate drepturile asupra versiuni in limba romand apartin Editurii Teora, Reproducerea integrald sau parialé a textului sau a iustratilor din aveasta carte este posibila numai cu acordul prealabil scrs al Edituri Teora, Copyright © 1997 by Jamsa Press. All rights reserved. Except as permitted under the Copyright Act of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written permission of Jamsa Press, Teora Calea Mogilornr. 211, sector 2, Bucuresti Fax: 01/210.38.28 ‘e-mail: teora@teora.kappa.ro Teora - Cartea prin posts. CP 79-30, cod 72450 Bucuresti, Romania Tok: 01/282.14. 31 e-mait cpp@teora kappa.ro ‘Coperta: Gheorghe Popescu Tehnoredactare: Techno Media Director Editorial: Diana Rotary Pregedinte: Teodor RADUCANU NOT 4576 CAL C/C++, TOTUL DESPRE ISBN: 973-601-911-X Printed in Romania Cuprins Primele notiuni de C inwroducere in programa Creates unul filer sued ASCH Compilarea programulal'n C Erode de sintsx 5 Set sl pope ici 6 Completarea iovtntgiunibr propramohit. ‘Aigares ist peo line 2008 Clic rege mince wai Erle loge (bugs) Denvotares programa ‘Ture de ere Edtona de lepati Fierele aret Tocaizaesfigierlor ans Minima viezel de comple Comentares programelor. Iinbunattire inbiag eogral Mesajde de averizare ‘Consolu avertsmentcior conpiatrstal Fotoescomenaror en's exdeinsvicile dn program. Imports poginlor net svg Prezencaret varsbilelor ‘Anbultes de valor varasielor ‘ie varia ‘Declavarea mal maltorvtiabile de aceia! Comentarea varabllelor'a dedarares ‘te de ils a dcr varie Toiflizarea mai mulorsaribile in cool dclarajiel ‘loperea unor nume semiiatve de variable Girne chee se lmbejuui © Variable de tp int = Variabilele de tp chat Variablele de Up fost Virabilele de tp doubie ‘Abuitea de valor varabillor in ving mobil Modiicatori de tp ee Modilatorl de tp unsigned no Modiictorl de tip long {ies cmb nadir dip esied io Uilizarea unor valor mts Modificatonal de tp regter: odifcstoral de uo sh ea Omisiunea lu int din derail mediate Nodiletonl de up signed Opera de srbuire mutiplt [Atibuizea valont unel veriabile de un anumit tip Une varabile de lt tip. - Grearea sor tip prop. Antes de alot eect sa cal Suatile de depigre Precis ‘tibaitesghlincleioe §@ akor Caractere: RU RRRURERSEURSEEBESCOLOG Li 6 Torun Despre C/C++ Corrs 7 Prezentarea fun pin» 53. Tesaresvalrlr fn veguld mobil. . 110 Afisarea valorilor de tip int folosind funcia print. 54 ‘Buclarea infinita. -ut ‘Tiplnvea une! valor invegi octal sav hexatecimale 185 Testaes une atibui 2 ‘Afgarea vaoror de tip unsigned int folosind Funes pri. 36 Uilzares insiscintor ieise 13 Eee a eeior dete long foloind Ancqa pad 35 Hectares unor instucjivn de un anim numir de oa | it Afigatea valorilor de tip float folosind functia printf. 58 Partile optionale ale instructiunii for 15 aeeee valor dep char folosindfonch Prin 35 _eeremnarea valor in carol use laswuejivnl for = aed ‘Aare valor fn viguld mobil tn format exponenial =| &% Contra ineremene iaieo bud for uy? ‘Afjareavaloor th vigula mobil. G1 Uilizarea bulelor for cu valor dep car float ua ‘Aijatea unl gr de career folosind func rit 2 Bude vila : ity ‘Agata poinenilorfolosind func pi. 6} ‘Buda innit 10 Unlizarea semmului plus sau minus thalotea unel valor 64 Ulizarea viegulet thao bc for Ba Fomatsrea unel valor intr! folosindfuneia plat &% — Modiicareavalod wasabi de consol ince bull for a ‘Angaea numerelor Ine precedate de ro 6 Reperareauncs sau smal mulfor Instat flosind bia while aa Afra nul refx names loko cle ies 67 Panileunel bude wale 14 Fonmatarea valor in virgull mobi 176 —_‘Repetarea unetasattmal into insu’ wiitnd do 25 Fonmataea une leg exponentale 6 Insructiunea continve : 126 ‘Alnites Ia tanga leq $0 Inchterea bucle!flosind inseucianes break Fed idizarea combinata @ specifcatortior de forint Ti Ramificarea cy ato nstructnl got. 2128 Trees ul 9 de cartier pe in uicre 72 Testarea condor mukiple 19 ‘lgaea ston ear ilar === 7 testucienen break din soma 2 130 Caruceree escape ale Fanci print 72 Uillzten caval devs Insect Si a Detenminarea numinutl de earatere alate e pan % Uillznres valor rerurnate « p 32 Macroinstructiuni si constante Uulzareadiverul de spa ANSt TF Definea constaneor 132 Uiliaareacaiverull ANSF pentru a elbera cera 7% Bxtnderea macroinsruciinior s'@ consianeior BS Uilizareadrverull ANSI pent 3 aa colon pe eran 79 Aatbuirea de nome sonstaniclor # macronsiueinior Bi ites sve ANS! pene penne Coord S—Gileares ental preeinte IE 135 llarea opeajlor matematce pi Uilizarea constant predefiite “LINE 136 Geraint modulo . 82 Modiicaren numa earent l Tie 1” Precedenja gf asociaviates eperatonion | 83 Generares une! ero neconafonate. 135 rpc Sal ‘operatilor 8 Ale constane de prprocesor Bp atorl de inctementare fhregitarea datel gorel preprocesortl Mo ‘Gtratorul de desementare 8 Testarea compatibtai et ANSTC i Gpersia SAU pe bil 87 Testavex modula de lacs al compilvorlat (G++ sai ©. ie Opera pei 88 _Biminates define une macroinstrvuni saa uel consianie are persia SAU exelsiv pe bi ® Compara Inte mecroiastuiun unt is Gperatia de complementare pe bi 50 Direcvele pragma 5 cates unor oper valodior de vara. 51 Valonle prlicinte i macrotis 6 Speratoral condjonal al lmtajoat 12 Geates proprior here ant = _ iW Gperatonl sizeof al limbajulul © 193 Uhieaee avecuveor ninlude sau ainclide!Muedht us Shecutares deplasicl pe Di - 94 Textarea defn unui simbol. 19 Exectares net otal pe Ui 95 Proprocesarea insurer else : 150 Operator condional 96 Tesaren unor cond de preprocesor mai peice 13 Processes tears 57 Preprocesarea inacpunlorIelse gl les 132 Repreveares valor adevira fas. 58 _Defnwea macrolnsruejunior ga censantelor pe mai mle ii BS ‘Tebtatea unel condi cu if 59 Greares proprilor macroinsugiun 134 Tpstructnile simple tele compuse 400 Gilizavercirctendat anc virgo macroissuejani ated "Tetrea une egal : TOL Grearea macroinsveyonilor min st mak 156 Executarea tester celajonale | 102 Grearen macroinsvciuilr patrat seu 37 Utiarea operator 9 opie penirsvenarcaa Joud conc 103 Spal din deine macronsrucpunioe. 138 {sen crete SAU pet vse + dot cont 10, Giles parte . Fe Executes operaiet NU loge 105 Macroinayveyinile aa i Atibuirea rezultatului evaluarii unei condigit. 106 . a Dederarea varablelor in cadrl insuciurilor compose Sicurt Folosesindentirt penta inbundiies abi ee ra Uallzares testi extnse combina! CTRL BREAK irae anae 2 8 Torr pespre C/C++ Corrns_ 9 Stocarea nul gr de caractere tn limba C coceveevesesveeeesee 63 Rania min cs coscesccecetesenteitsatensviteets veseeree 9 Diferen itte'4 tA 16 Prennea paraoeicr : Fy circ ne ein onl dip rd cine 16) Uillurea paametton mall mm Determinaes lunging de cara TNE I66 —Decarié parameanior tn progiatice a € tal vei : Ra Gils ncefacenrects ces En “IQ Retmaten tel ator elo netic oe 2B opietes un r ce carci in al. 1. SUNS N16 jeiwucimer ewe ee. : z ‘Adhugatesconjinattl unui srl as : : {51@ —Prottpanie de fungi. Ts ‘ehugares sn caractere nu girs eee : SG Biel name 25 Frama great in aie 000° SA Barameui formal a : Se ‘nul de racer AE lvarea consti de mime. 0.0000 .200000000 : ane d Testarea identi a doud sir de aractere S13 opetie cue nu enue In| 200 0ST NUE 2 Ignorarea difereyel ene mahseule i minuscule clad se compar dou gud. 2 2.21 14 Pune care na ret [ss ee Gorvertitea cratetcor wou prin mahsele sa mse Laie eee aera aa ‘Sttneres pines spani'a unl caster ing SOCIOL lle se : Pa eeOD oa Retumeres ndexoll pra! apa cen ge 00000000.) rae eee aa 2 ea (Gisreautume! apa a unul carci mura gi 0000000000. 7a epee e EH eurarea index lime! pani dtr Hp Dacre anette tae conc rere fn penn : 180 ezolvaren confer dine mumec valor global w cele toe 236 ees fey yes Definien buna domentuoi de vaabitates vatableor ghobale 0000000001239 ska Se rel ee a iB reaps SBS ‘Aribuirea ono caster speciiaturl i LUI] evened moda alo parame cu apap vaiare 29 Ssroparareas coud gat de caracete 18s pola prin veering : # Compares primel n carcere din do 86 Ofinerea une! acese 2 apenas eieraac SS Ollltes adese! vane : ee ae eee 183 Mocificarea valor pamnetior Suny D6: ee ae ceric at gt oe eae 2H MisiBcarea vale ror acum parinc aes ce (Giles prime span aunt carat 150 Unite sve! lapel prin eer : 5 ‘Gealizatea unul subs Touran pr de caracare 19 ezenaresvarabiebrstce sss. 0000002 26 ‘Namiral de apart le una su 132 Iniialearea varabllorsatce Ta Sounerea indexule un subg’ 193 Uuliaresseevenel de apelarePascl TUES ‘Objineteauldmel apa «unut subsi 154 Heri covanuit che Pose : 29 ‘sigan unl ir speccstorul de format 195 _Serlerea unulexerpla de nba mies ¢00020. 07 30 Nergrea unl subgi inrun gr de caractete 196 | Cavinta chte cde! : paciceheeeae anne oloclrea unui subsi cu atl eee LUT? Returiiatea SU : 32 onverizea unel reprerentin ASCH numerice : 186 | Runcia recurs fact : : ar $fstrea nul Caras enim a stabil Gad ei lume 199 | Scetea nul ak exempl de tecusivie: | : : 34 ‘Testres unui earater pent a stabil acd exte liter, 300 | iguea vloor pea a ielege mal inc recive 35 ‘estres nul eaacter pena stabil dacd ene 0 valoare ASCII TUL | Resursivtates deca indice ‘eareaunul racer Ponu ¢ Sabi dac ete carer de conca Vint | Becta de atiare a ecursaan ‘Pearce ut saaccr Penis subi dec exe occ 383 Be'ce suns lene singe secure ‘esturea unul carer fna 8 sabi ded ate carat gif 3h | Biminsien ecualvd ‘Tesures unui earactr penis a sabi dacd ext majuscul sau inset 201252121105 | Hnemeres aruor exe Ronee 202000202 ‘estar unui Caactet pentna& sable poate har. TINIUII gs | RIRREuSNES Sue Sinan sno tails ‘estates ul eaacter entna sbi ea ete som de pancan gy | Banaaheree snate ‘Testares nul earacer penn a stall dock exe spat ala te ae era “Teotres nul earacter penn a stabil deel ese valoare exazccimail dep | Prevenica medic pare Gonvertiesunul earacter in mguseuld .- : 210 Urtiearen pointer aft de decarreasrattr de easctere Serve uaa mascot pnt pane SSeul cu exactere ASCH : diz | Rolosiea stvel per Serors cg formate ino wriablé’ de tip ir de carscere pees] gage ee eae Gares ini Gnrun sr de caraere TUNIIIIIIIIIAN | Qilfge vale SImboliarea srulor de caratere pent a cconomi spas, 00.0.2. ai | Patblele siatice expe, Iniiaiares unl gr de carscere : Bai carapace ac teal ‘Apelarea une fancy tn ima) de asamblare | Betumarea une! val dino func tn ina de ase 217 | Punci care nu retureazi valor. 218 | Punetille care nu utllzesx3 parame 410 Toru. pespre C/C++ Cures 14 cuvdanul chele auso.... 276 Sinusul unui unghie 329 Domeniul de valablliate 212.0. 277 Sirusolhipedbolie al una ung 330 Categorile de comeni in ¢ 278 Tangent nul ung Et Spay de nme 9 idenscasni 279 Tangentahiperboli Gnu ungh “332 YViabilates unt Idendeator. 22280 Implnitea sumerele inte 333 Doria 21 Eel eu Funeria exponen aa Funct cate accep un xi vriabil de parame 282 Valonreasbsolutd a expresilor Ya vieguid avoid, 355 Acceplares unl nUmdr varabil de parame 1285 Restilin vrgula mobi 336 Puncionarea macroiostucivollor asta, va_arg 9 en 234 Manta exponent una to i ig mobi 337 Crearea Faneqllor care sceepta parser $i pan mule 285 Call rezaatuui operajes x" 28. 138 atetul logacoml naar 339 Operatii de Ja tastatura lel ezukarulu i Togo 340 Cites nul caracter de la asttu. 256 Determinares valor maxine sh nine a ‘iuuren unul cuacte de tegre By Separarea une vale double in componente ine st real 32 Unllzarea uno butler de ina 356 Calclul rezutarul operat ne 313 ‘Aurbuiea intl dela tastatr unl sir de Caractere 1269 Galeullrezuiatulu operatil 10 a Combinarea macroinstruciulor gerchar gi putchar. 290 Generarea un nud aleator BS eeicanlk pechar al puclor $i Pasar valor alestoare nin anu eer 36 Cea unl caracteruslizdn! 0 inaeviesie decd Ba lamuresgeperwonil de numer lacae 4 Iotrarea cect de fa tastatrl fara afisaren earacereor + 293 Gaull rail pate 2 unei vals Unlzareaseeventeloreseape "\e' g'\ : 24 Tatareapersonalzat a eronlor matematice 38 fa tpn clrecte 3 Hainrodgcetea in bulfer a ciracerlor 286 ‘Fisiere, directoare si discuri Formatarea rapids a legion cu erin 297 Determinarea uni curente de cise 350 Formatares rapid inuior dela tastaturk 298 Selectarea ont cureme 31 Sererea un ede caracere 1299 Determinaten spall cisponibil pe disc 352 Togirea ma rapid a unul si de Carico folosindo inae/iesie deca 4300 Testrea'comprimar cu dblspace, 353 Cites sirurlor de earactere dela tastaturh 301 Chives informatio ain PAT 354 Tnteoducerea rapid unul sir de caractere de Ta tastatucd 302 Identiatorl scat 355 ‘Agar isi in elon. 303 Exccutares une! cln/srles absolve de setae 356 Stergerea ecranull 304 xecuterea operator /O eu disci pin BIOS | 357 tergerea pn la sei lintel cucente 305 Testavea seoubiliitunial de dischete 358 teers Ute ce 308 Deschiderea und fie cu fopen 359 zationarea corsoralsi penn ieiea pe dcras 307 Stetura ile 360 Determinarea pone! ladulu sa coloancl 308 Tnchiderea uni fier desc 361 Inserarea une! ln goale pe ecran 309 Gttea gl sericea iniormatilr in cr caracter eu catacer 362 Coplerea text de pe ean itn bulter 310 Poimenil de porigie al Un Tifer. 363 Screres unl text din bulfer int-o anumita posite de pe cca 3 arent cll 36h Decennisarea parses tuo de tt 030 385 Contoluleuloior eeranutu 313 Conversia igre | 2366 “seibuirea eulont de funda. 314 Ineatea floss din config sys 387 Stables clon de prim plan 'ellnd secon 315 alates operator UO et ee anv os i nivel iat cs Scabies clon de inal isn texackround 516 Indicator de fis. 369 Concoful intensiti extaal 317 Tabels cu hiperele de proces | 570 Determinarea modulul de text cient 318 Valen Irie al civ be proces an Deplasarestextuli de pe eran dela icaiela alta 319 —Tabela iterelr din sistem : an Delniea Unel fetes de text 1320 Afgorea tele cu fisirele din sistem 33 Odjineres incicatoror defer din 34 Functii matematice Scere unl Lei ormatate In fier 35 Folie valor abso nel expres de ip neg 321 Redenumirea fiterdlor 376 eas 322 lergerea unl se an Aas 4325, Detenminarea mock lui in eave in program poate acces un fier 378 ‘Meangens 32} Stbilea modula ce aces al un filet 59 Seimei sole & unl mune comple... 325 Objinerea unui consol mal bun asupra atibuielor de per 380 Rotunjres une valor eae ta vigult mobla 526 Testareaerorllor de ux 3a Cena ual ory [HER Determinareasienstani un fitee 382 {Cosi hiperbolte al a ang 338. Golirea unui ux 1 383 12 Toru pespre C/C++ Currins 13 Inchiderea tuturor fisierelor deschise intr-un singur pas. 384 Forjarea deschiderli una Sater in ee a ‘sau text, 4a Obj indo deter un fg Be Guerin de tex : “ a Crear al name de yer tempor led pip 386 | Stinea infor deter 2 200000 & Grace unt fume oe fer tporar uted it au TEP 3ay__Uidaaea nce pes pi 8 Geert nll ier teapot section 3eu "| Forres comers enna” roe os Eliminarea fisierelor temporare. ..... . 389 ‘Si intelegem de ce TEXTCOP nu poate copia fisiere binare 446 ‘lstaren ual gers omanda pa 390 Teames Sil ae ter & Giuayea un ie nota cu subecicete i mel SOL Uilleafoncil unget os Oe ered doe | ches culo ore dn fee Sotetees & Nininesrs opectfor vO'c ee 3h | Resmi oth fier pean ice cc So Sores uni fod care ulloera crscrl baclch in name decane Soi | Obtnces infomation cape indestol co er a Pieter pe ge REMARINIalisee me ‘Bp eau decors 3 Sgeres unul diese 37 Matrice, pointeri i structuri eBeres ual bee de doar Be | saree 453 Eccarottes und name de ee neg 3 Deduct ine ms & oars ol unl dicaoes eo | Youle user % Construirea unui nume de cale. . 401 | Gerinjele de stocare ale unei matrice 456 Descidere ql Inchderea uni fiir watad ang de aivel os 42 | Tngelenee yn mactee na & Gare ma er ‘3 | elemento eel aie Sa Brecoave opel decir e ere de vel os 404 | Cidates pan donercicurel alos of ‘aaron stp oe fice 403 | Galsredconstaniclor pen dere una mace fo ales runelor dene js pei Sper UO ca lve 406 | Tranameseaunel matics une fare a Speccaten moral de convetic tun instr de fe 407 | Dinnou despre wansmtcrca une! matics elie’ Rane ie efonaes pomerutl Ge tlt usin eck 408 | Dirac ce gu 8 mas ie Desthdetea fl mul Se 28 de fier 409 | Transnteres maviecor oud ist Foods servidllor DOS fe ler ae 10 | Determnares num de elem cae pot sae de © mate & hntcs al ort vel lea S11 | Dulerea modus de semorc huge pea mie mak is Shnsres dtl re unl fie edad ebnpu de bi 412 | Aegeres nse mauiceslmemcna date & ‘Stabilirea mircii datei si orei unui fisier. 413 ‘Matricele multidimensiorale . 7 Z . ‘ 468, Stable rel dal 1 rel lis la di ces areata 404 | Rindunte Weolosncie” rr rea srerea calor cavdn cu ewvdne 45 | Resetaren lemenlr unl imaiebidinensonae 5 Souilcues menstrual Slr 418 | Iniles Gementcor nice manic Ullnesecal at ene epee dite we ci dis. 4) | Bemis con nae we mi ios of ‘abies cout ber def : & 418 | Caves pinwco mucce cinerea as s locates unt btfer de iter 409 | Srveraies pine mace sementonait ah Cir tle deri witnd any. ‘20 | Injures el nattee macinersonte es Ghires gsulres seactualer 421 | Tansmiores une mata: bidinerionale uel ng % Gres latlor stat ca 22 | Taures manicclr mitment eect lhc” s Dope al teat Se der 1B | Sen eh copie Se Co ma lime oo Fovlvea valor url inate Se Ber L4H | Ondonarea pe indus danas pe Sloe ™ oS sore uma inator de fie bn fh 25 | Tiboun dearer a macice & Parajres ler 25 | Ghiunes Cans cd Boschdere unul let pei sco pata 1427 | Beonomsea meric ura nie Bloares contain faeces: 142s | Uttar RECS "o untune Unecuneneat i Uc abun ec kc > | Uateaes ane ace * es Ie drecenrte DOS “80 | Shucmnle dnp deb Ss Deschdere unl decor 200.7 431 | Vnaleares ua suet cp de Wi & hates une init ln det “432 | Invade valor al sevcurloe pe 2 ‘ Ue ere gent ee hc CSW Bs | Gis sel abn piano mac ts Redesigutses unl recor 4 | Ghaes bd rd Ger eu ferelor dicl 5 | Gallas hati bir % Determinarea pozitici curente in Este 436 Sortatea unei matrice 491 Descldecs tha ux pareja e ie 4 | Stoce prin eos bi ee Creare ual ger unig ineun aun doe 438 | Ultares sorta prin mada blo & ‘Crearea unui figier nou 439 Sortarea selectiva A904 Utlzses senior DOS penis actare fier 0 | ewes send secive 14 Torurpespre C/C++ Curzins_18 Somarea shell... 196 Regie 581 Uallzarea sont Shell 497 Regist indicator 552 Somtares rapid oss 498 Inurerupetle software. 0 =... 553 Uilizrea soni rapide 3000 {5 Uillzalea servcilor BIOS pevis accesil ia imprimanta 554 Probleme ou solute de sortareanierioate $00 Informatia CTRL*EREAK. 555, Sorares nei matice de srt de caracere 51 Posie efecte secuncare din DOS 536 (Glutarea intran sit de earaetere cu funcia find 502 Suspendarea temporaria unui program 557 (Glusarea nel valor eu funciaIsearch ‘ $03 Shine amuzim ou suncicle. 338 (Glutares into matrieesortath ca functia bseazch 30} Obgneres information specie de (ak 559 Sortarea une! matlce cu functa qsor. Ss Rdvesa de tamer pe dsc sere. 350 Determinarea aumacull de elemente ale matic. £2306 Aecesul si contolul aie de transfer pe dise 561 Sh ngelegem pointer ca adrese 3o7 Uilizres sercilor de astarura cin BIOS. 2562 Deierminares'adresei une variable eee 308 Otxinerea lise ca echipamente cin BIOS 563 Sr inelegem com tateaza compilatoral de C matricele ca pointe « 309. Gontolu Inrtor st fegilor pentru portal seal 30d Aplieares operatorutul adres’ ) unei matrice 319 | Recesul la servile DOS cu atonal functel dos. 505 Declares varabillor pointer. “BHT Obyinerea de lnformayi exinse despre ero tn DOS 506 Dereferenieea unul pointer « 312 Beteiminarea volumului de memone convenjionala BIOS 567 Uilizarea valor pointer svc. 1513 Constrirea pointerior far. : 568 Uillzarea pointenior cb patarctll neyo: 314 plies unet advese fa in segment si deplasament 509 ‘Aritmetes poinedllors. veers cc eso: oe 115. Determinarea memoril bere.» . 570 Trerementarea $1 decrementarea unui pointer... 316 Chirea valor reistalot segment 5a ‘Gombinarea unel refering fa un poimer cu Incrementares 57 (Gidarea printrun gir de earactere ulizind un pointer. $1 Gestionarea memorici Ualizaed functor care returneazi pointes a 519 tipurle de memorie 572 Cearea une! functs eae fturneaz4 un pointer 320 Enoria convengonail s. <2 53 Omatice de poled. «sv aye 521 Machets memoriel corventionale 374 YVigualizares une! matice de stu de caractere 522 ‘Acces ls memoria eanventonalé : 575 CGicarea print-o matcce de give de earacere 525 SSmjelegem de co Pal sistemul BOS sunt inte La ib 576 ‘Tratarea nel malrice gir de caracere c2 un pointer «= - 524 Prodcetea unei adrew din segmente si deplasamente 7 Vallzarea unui pointer [a un pointer la un gir de caraccre 525 Memovia expandatl pera 38 Declararea unel constante gir de caractereutlizind un pointer Fee ee emorel expandsie 9 Pointer de Upal void. vee e+ : 327 Memoria ext 380 (Crearea de pointer I func : : 1528 | Mogul weal modul provejt 381 Unlizatea unui pointer cite o functe a 529 ccesul la memoria extinsa 582 Uilzarea unl potter fa un polnter la un point 530 oma de memorie ina 583 sirucunie ae ce 53 Sivan 584 O suctud este un gablon penira decartile de vasabile 582 Diferte configura al vel 0.1.1 1585 Numete generle sl unet strict este numele struct. 333 Bewtminaresdimensfun crenie sve 2. 536 Dediararés unel variable structure in altmod 534 Ceteclul spades sel ca vanabila global sen”. 307 Skingelegem membrit structarll ae 535 Seboitea nel valor la un interval de memofie be Vigualzarea une srscuti me 336 | Goplerea unl interval de memorie in altal «cu... oe: 559 ileatea Sec Ale, 332i ul terra de meet nd ami ote 30 tea unetstnctul etre @ fancte ‘Compararea a dou nari de tp unsigned char ‘501 Moulficarea nel stractur in cadral une func: 339 {eCKmbates oteloraclacent din pride caractere 592 Rediecares pointesmembra vee 540 ‘Alocarea memoriehciramice .. ve 598 Formatul pointer>membr .. 20. 541 | Din now despre converte» : Ba Unlizarea nel stractunl far nume neneric « 542 Bierarea memorlel cind mu mai este necesara 595 Domeniul defini une! structurt 543 Alocarea memovelutlzind funciacatloe 596 Tnilalizarea une stUetUE Sat Bceeaean dee wee 597 “Hectuarea de operat 1/0 ou sructurt 545 - Gcolitea limiei de 6ckb a zone heap 598 Unlzarea une! stucturl imbrcate. 346” Nocarea memosel dn stv 599 Strutue eae contin matrlce "547 ‘Alocarea datelor de nar dimensinl 600 ‘Crearea unel matrice de souctue 548 Houliicarea clmensit llr unui bloc de memore alocat sot ; ia bk : : Servicii DOS si BIOS Yalldarea zoned heap’ 2000020000. 603, Servcil sitemului DOS . + 4549 Executarea nel vetlel rapide @ ont heap sot Senicile BIOS. . $50 | Completarea spayul liberal zonel heap 605 16 Torut pespre C/C++ Copens 17 ge ee aaa aceon Venera uel nt specteate «zone! heap : 625 | sare pops dumnewoasrecomenai now - eee Parcurperea iilor rend heap ss Sil | Afra Sil lor receme ee = Paematioeces Privind into anumita locatie de memore, A ES | ftea sume! ctracterelorredbeeste 10000005 7 eat Eediones Sold Ioamncae ces 0000000) iiag | Bie mel crate dee : ng Fomuile Peak rec ee S10 | Prevents wearecaal Von Pe See Accel a valor de pot 22120 EISEN an | Gitte enon fe dan ‘3 hrog ee tees : SCS AIAg2 | Binet tees ee se Modclele de memos 2221! nd SIGS | tates esr ge eee Bue 16 Modell de memory 20000002 HUEIIEEIE $24 | Glotesaparntor una Sibyl carl we ini agedce’ 220021 Neer Modell de memode ama 20000027 Gig | Area prmeioes ht ae unt neu seciccnte NOME 002000000 66P Modell de memorie meds 22.2 : ©7819 | Regina ie! de conor “ 2 & Modell de memore compact IIo | Ane ie an cg & Modelul de memorie large Sooonos 18S | Ate ited comand 7 Ten on See er Spcaaig ooo occ 8 | ted aire nad ema ac ae gis ooo Devemigares modell cara’ dé mend 20000 : ‘sre contra geen ts deConanal oa fees ye un pe * : 3 Data giora im cinoage compar do ia de cos. 72. SEIS Data loa cutee ca secunde de a 1/1/1970 621 | Set ator de € ins de comand 00 eae Conversa este ort in secu in ASCH 000 ITI Gaa | Se en es pie oo : gs Frees tomas orale vats: S23 | Uinaea cavantll chee vod prs a Riga a 000200 St tirzierea cu un anumit numar de milisecunde betes 624 tucrul cu numere in linia de comand... . . . . . 679 Dateminares dapat de procsas al programa ©01000000000000000012 6 | Vaone oe aaa a e oe Compares inte dowd val de imp. ener sc sscloLlcliol S28 | Vilar issue sua pra proces i de ese = biferes dae sub oma toe caisce : 17 | Glad destin Ree eam ry eo Cbtinetea ore ub forma una! de arciere : TINIIUGS | Gls une ance Bam 2°91, Poa Gres covometfl BIOS, SEEDS p | imi naman ita in pei a thea coe bea ee SUITES [aged Sata tn ite pe eames neat Intro ov ora merdaniial Grasawids (100101000 631 | Aidfogare uct nut e meee oso aoe & ‘binetea input ssemuta DOS. 02. 632 | Addupaesclomentclor i nec See = Shinetes cate stem, DOS =... : 183 | Spa propanatscuer : Sener ‘Fixarea orei sistemului DOS... .... . ee teens eee Bea Definirea funciilor care se executi la inchelerea programului . 689 Fret cel stmell DOS ees : ‘Conversia datel DOS in format UNIX soe ee . 936 | Instrumente de programare Uilizaea fuselor orare pentru a calcula difcrenjele de ori G7 L alte . o . . 690 Detorminares ful err caer SEARS CUIUIIIIIIIITIIIIG | iat oa iics sone “99 ‘irares fuselor orare cu functia tet 2000000000002 zi 682 | probleme eu compilarea figereior C3 OB). Le lon Unless ge med tes S| Cenerunut erases : HII Fraes inl de meal 2 ds cad rl progam TIE | Gexemal ane ges ee : 3 Chine infomator despre fusl ora ss Parte Sg | ap oblimatede biboesh js CONE és Firarea ore sstemulul tn secunde de la mieeal nop 161.1940 82 | Uulnareabisiotcclor penta a reduce impal de compile eee 8 Conversa date in secuce det mica nop 1011970 1+ Sg gig aise gene a ede ump de pi o Semis dit incite cag-focccocieeenii 2 | ge male E Sgt GGrearea unui sir de caractere formatat pentru dati i or G4 | Viaualizatea capacitor ecitoculul de leit 210! : Ss ‘pure e cca ale leularul ss : | Con ae ee 7 . Uzate seteloe de pus odin corde gh 02.000 Redirectarea intritilor si iesirilor gi procesarea liniei de comand Simpliicarea consul apicaiior co MAKE, (8 SEM! 7+ : foe ‘Afteptarca apisiri unci taste 7 . = 48 | learea unt filer spl MAKE aon : 303 Stites plete dea vile 221771 8 | ese ierlon eu perder ie Ak : BH Serlerea propriel fancjl pentru parol 6 | comentarea irtor at Fi : ny jos Souecared esi sores. Une de comand MARE.” : : ie edrecares ian 3000000000000" : fistendependeniclor mule Yiu ler ARE cee i Conainarearedectil inti ici + 653 | Regul explice gi impicte se comens Rate at Unllzarea constantelor stdout stdin» 654 | uillavea macrocomenailor Mage ASE Nae Operator pipe sss cee eres 1551655 | Mcrocomenal MARE predente : 3 no Ringille getchar sl putchar : eee vii21 G6 | ocean condljena eo HARE ar : Toa Nom inoted decane, 2000000000000 IIIT : Teaea nel macrcoment MAKE ; CIB Sime argue oun cava apes po eon 658 | luderen unr al Gee Nace MAKE : 38 18 Torut pespre C/C++ Currin _19 ‘ilizarea moxificatollor ée macrocomeni TM Generarea unet intrerureri en = Inchelerea 6 0 efoare a unt islet MAKE THIS Detectares eronometrul inten al Puna 22ST mo “70 Dezactivatea asi unel comenzi 6 — Boole ertice Gece rpuonolieconecsoceaece im Unies Rigierulal BUILTING MAK. 137 Taatarea eros cticen'c : DID rectaren prelucil stn de iepir is MAKE. TAS Un program mai complet de tatare a eros ctie, «0. 7% ‘Apelarea si modiiarea simuland a unel macrocometa 719 Restabiiveainirerupenlor deteriorte my DOS a BRecutarea comenzii make pentra mai multe ere dependent TaD Trsarea pentru CIRLSEREA : DIES as Uillzaredservicilor DOS in taiareaevofilor eile «+ 7% Limbajul C avansat reeea prorat! zara seed stl de snc m Deteminare prezejel coprocesg mena ya) Rutten.” : : uh Fasierul cryped si macrooomenzileIsype LU7aa | Actvarea gt dezacivares fungior insist ts Col video iret = ee TUB Apeltile rapide de fungi. : i Detecurea eronor de ims maemice 7A Raul pnt anomitees pane ic : iat ‘Aligarea mesajelor de eroare predefinte ul inva : Hal Delerminared nur vetstunt sitemiltl de opeiare 726 Himinarea incaedsitredundane 5 Be Portables 421 | Gompactatea coxula Soe zg Exeautares instru goto nelocall 2b | Gompactatea buclet 2° nes : ITs CObjinerea identiffeatorului de proces (PID), - 729 Indugia buclel reducia pute : : sid Invoarea neh comenal interne DOS RO Himinare subeaprsior mine a Uullzarea varabile plobale _psp « JBL Conversle standard C ou gy Ulstes mooitenesrta eotctn dea valor Ta | Gale pats pun de ban ale baie 0000000. 79 Uillaates tipurior enamerate 735 Tipunle fundamentale fay de pure derivate 62122000000. 390 Modul de utllzare a ipului enumerare 334 | Inhilizatonit " ren Ovaloare enumerate. 135 dkorul de legiturd me sey ‘ules une anumie vale pet tp emsineice 738 Declarali de proba : Lone BB Salvarea girefacerea repisiclor $31 Deosebirea dire declrai sf deficit erator Precentaea litelor dinamice « 738 Valonte I lvalue) aa Declararea unel structur list nln, 339 Valorie « value) : Eee CConstruires une! ste nine Ho Uitte cv cee ena eel segment mn 3 Uneremply simplu de ist inaayuid 741 Uilizat ex grid pointes far : eee “Trecerea prnto lst inlanqul 342 Pointer ronmaliay 3 eae Consirurea une! liste mai utile 343. Iastuctunle coprocesorulil maiematic 1.21. eat ‘Acugares unel init in lish Fai Declarayile de varable cu eded t paseil : Pe Sserea unl ini in is 1745 Prevenives direcvelor include ctculare : Boz “Afgarea unui director sortat 16 . Stergerea unl element diniro list 34) Introducere in C++ Utara isl able init {748 inuoducere in Cre poe a onseuice na dbl tani simple “2i9 Gum ctr Sires Sun in Co aenee : “B04 Nod>preceden:->urmator im exempht simp ce program in C= : ec i Sau Be) Bore geen eo8 gg Inserarea Un element fro lst duble niin el ee ae ete obielor cw ue 0000202 ee Procesele copil 753. Combinarea difenteortipua de valon x cout DEES B08 Utiizarea functor de tip spawn penzu un proces cop. “754 Aliarea valorlos hexaaecimale si octale : 809 Uilizarea altor functl spawnixe 755 Redirectarea Lest " Lato Uillzarea funeilor de tp spawn, 758 Daca preferay prin liad a alates funn de ip ex en om proces soni 357 Seiten isi fa cor : : ca Uullzarea alto fanctit exectox 758 nue pain cin a5 Uullzarea funcllor execexx 759, Flax en au utlizeae’ poined |. NEUSE ad Extinderle de program 760) Cum selecteszi cin cimpurile de dates. un 815 Iovcerupenie 761. Modal in eave Nuxusile 1/0 recunosctipurievalotior EEE a6 Inizeruperle in PG. : 762) brectuarea ieior cu dog, ut : a0 6 Uillzarea cuvancalui chee intirapt “783 |r in out, et og san inate as 00S las Determinarea uni vector de interupere JG! Derulaes iti cu fuse ne Hg Stbllrea unl vector de tnrerupere 2.755) Canina ti fosreembs 3 ne 820 ‘Acivarea si dezactivarea Intrerupeilot 766) Ces\cere prototipurt de incl... DUES sa Creare ura program simp «erupt 361) Gre Sdaupa nos cuvintecheie 01.7 : : 522 fotanquiteatnteruperior =...» 5 + aeceptd Uniuni anonime peer 823 20 Torun pespre C/C++ } Corns 24 Rezolvaea dome global de valabitae 224 ‘Furnizarea valorilor implicite ale parametrilor 825 Obiecte ‘Controlul dimensiunii iesirii la cout. . . eee 826 Oblectele pee eeeee Ulizarea lui setw pentru fixazea dimensiuni lui cout . 827 | Programarea orientati pe obiecte . is ‘Specificarea unui caracter de umplere pentru cout 828 De ce trebuie sa utilizim obiecte . . + 882 ‘Minit i despsa la sdnga agi cout 83 | Diviareaprogramelorn cblece 883 Controlu! numaralut de dive in virgula mobili afgate de cout 830 | Qblectele st dasele + 884 Afisarea valorilor in format fix sau stiingific . 831 Glasele C++ = 885 Restabilires modului implicit al lui cout 832 Incapsularea 886 ‘Stabilirea bazei pentru 1/0 933, | Polimorfismul (887 Declararea varlabilelor acolo unde sunt necesare .. » . ae 84 | Mogtenirea . . seneee 888 Plasarea valorilor implicite ale parametrilor in prototipul funcyilor .. . 835, Decizia intre clase si stracturi ... . 889 {lees operon pe i cot : Be | Grate unl model snp de cad 0 Bralusea ediel Ce cereroe es a7 lementaea nil program simply pestns Ceara une se Uulerescovinui ce conan 63 Sos | inte Sonronnci ue ne ene caret une Be ‘Utilizarea cuvantului chele enum in C++. 835 erat rezolutie a domeniului de valabilitate ||| | : Spajiul liber. . a : 340 Utilizarea sau omiterea numelui dasei in dec 4 ‘Nocarea memoril eh ew fir | Biche public ae 5 ‘Aocaren int motor marice. 1 Bia | Asunderea infra: 386 ‘estarea exisenjet spilt ber BS | Bichea private 997 Considerali despre spatiul din memoria heap’ Bi4 | Uilzarea etichetei protected: 598 Uullestea polntelor far a operstorail new = Big | Uinta deel pis pave | Eliperarce emote pentu spa hber 84g | Ge ascundem aot facem public 300 Reece Coe ates Sey | Mtodee publ sine deacon fui doing 901 a etek ag aie Gin Baa | Definirea functor clase tn afara csel ne? 902 ‘Atentie Ia obiectele ascunse 49 | Definites metocelor in Ixerlorl sin exteiorul clasclor | | 903 Chitra moda dsm «pamcton B50 | isan let ea egal pent Tuerl ea seferigele “B51 | lasanele obieet ache s'parajece coda Panel por retumna reteije SL] Acca la menbarcasas 908 Uullzarea cuvantulul chele inline 853 | Din nou despre operatonil de rezoyic global cod Utlizarea cuvantului chele asm 854 | laMtlates valor cae . eee Citrea unui caracter utilizand cin . 855, lizarea altel metode de initializare a valoriior casei Scere unl caracter cu cout». 85 | Menbilsleat deer ss ere 10 Serlerea nul program fit smpla £55 | Uizarendatelor mere stiice eect i eee aged 835 | Uilizareafonctilor mentee statce ‘Scricrea unei comenzi simple first 359 | Declaratiile functiilor membre a Scrierea unei comenzi first perfecjionate, 960} Utilizarea declaratillor de functil inline a4 “Testarea sfargitului de figier _ 861 | Cand se folosesc functille inline sau exterioare a Generar uel hal not cna me | Sas one. x8 Spectnchle penta ediatealepiiilor 86 | levenres untunilr snonime x Supraincicaea an 864 | Prezentarea functilor friend 2918 feces ior SG] Pees cerned a8 Supratnetearea funcilor nai dies ekernps . Svfurea ambigult la supratncsreare s 567 | Functii de clasi uzuale Ces Ine cu lini oiand en = £863 | Runt constructor ulster hi engine ines boc oe aise fc ego aaa 2 Modiicsrea contolull impli a opeiordil new : 570 | Ualzarea Rance constr on Stabila une! func handler pera new eu see handler 811 | Gind executa progamul o Rinjic consivcior 525, Determinarea une compilis in C++ : ‘672 | Uilizares functllor constucior eu paramet put Stuetutile in Cv aie 873 | Rezolvarea conllictelor de nume in funcjle constructor 93 Introducerea funcllor ca mmx al siractut U1s74 | Ulllzaea une! func constructor pent alocsres memoiei bs Bates se fing membre 3) Gch cove lc mene " on fea nel func membinsfara srver lone imple ale paremetior penta Gvsiucie ‘Tansiteres parameitilor cleo funcge membra Sr | Sipainctcaes finclincontridor ss 929 ‘Mal mule varlable ale aceleiag structuri 78 | Aflaea adrese! unei functl supratncarcate +930 al mull aie oe ce Rano mabe 8D | Ula finger continue ee scaers st Fuel elerte ov aceay ume de membre - “880 Rincile desactor : 32 1533 22 Toru pespre C/C++ CupRINs 23 Uilzarea unet functi destructor 934 Utizarea funcie pression 969 Xecestatea funcillor destructor : 935 Uallzares fancy il 590 ind invoed un program o fungje destaucor 936 Manipulator : 91 Uullzarea unei eppi a consiructorus 537. Ullaarea manipuiatotir penita a foxmata inte i isi. 992 Ualizaea consiuctonlor de tip explicit 538 O comparaye ire manipulator si functle membee . 593 Domeniul de valsbitate al unei clase 939 Greares propor fureit de inserare 998 Clase imbvicate sss [940 Supraindirearea operator de extragere Bn 595, Clasele locale an : 541 Ali modaliate de a supratncirea “operatorui de Inserare pent Cout << 386 Rezolvares confliccelor de mime ale membyior si parametor ‘42 Crearea proptilor furell de extagere «e+e +esersev en 7 Crearea unel matice Ge variabile cast : 543 Unexemplu de extssor 538 Constructors matice de dase 9H Grearea propridor furetd manipulator 599 Suprsincircarea unul operator «2. 945 Crearea manipulatonbr fra paramett 1000 {Ceeaea uel func operator mene 546 Utlizares parametior cu manipulator 1001 Suprainesrearea operatorul plus 547 Vediea bibliowect de clase de taxa 3002 SuprsineSrearea operacorufsisemn minus. : 348 Deschiderea unui fger ux 3003, Supmsincivearea opersorioe de Incremeniare prefix s! posix $49 Inchideres unui fister ox pies U2 ao08 Supmineitearea operstonlor de decrementae prefix 31 posix, 950 Chizea gt sexovea dateor in thine fiere 4005 52 recapitulin restieile Ia supraincirearea unl operator»... 951 Testaren sti une operat ca fiqiere 1006 Uilkarea funclor fiend pent supreincarcarea Operator 952 Unlizarea mai mullor opera cu iirc fx - 1007 Kestrel ls suprainciccarea operator cu funcil fiend» 953 Efecruarea unel opera de coplere binart 1008, Dallzaea une! hingii fiend pentru supraincircarea opetatorior +¥ yi = 984 Casa sueambut "=. " 22009 Motive pentru supraineirearce operstoior cu funci fepd 955. Un exemplu simp de sreambut : “1010 Supraincarearea operatorulul new, - 956 Clea datelor binre uilizind funcia read 1011 Suprsincireatea operatorului delete : 957 Seierea datelor binaveuillizin funcia write 1012, Supraincirearea operatonlor new si deleie pent matic 11958 Uillzarea funeyet membra geount 1013, Suprainedretrea operatoralai ce matrice 11959 Uizatea funculor get suprainetreite 1014 Supssincarcarea operatorulul apel de funcie © 960. Uilieatea mevodel getine, 1013 Supraincarearea operatorului pointer > 561 Deteatarea sfrstut de fier S018 Supralnelrearea operatorului viguld, 962 Vallzaea fanctet ignore ni? ‘Abouacizatea sen. 963 Ualizates funcet peek 1018 ‘Alocates unul poinicr lao dasa 964 | Uallzaea functei puback Lino Ellminarea unui pointer Ia 0 clas : 965 Determinarea poate, curente dina fx "4020 Eliuinares spat alb care precede o iirare 966 | Control indiatorual de fisier Tux « : 1021 Bibioteclle de ase. 957 Uilizarea neyo sek gt seek pent soaesaleator 1022 Plast definijle clasclor dimmeavoastl in ister sntet 1968 Manevrarea poze ndiestoruul de filers evs 1023, Utiizares eavancului chet inline ca functile membre ale casei 969 Determinarea stan cirente unui fox de inirae/iegine «. 1024 Inijalizarea unet matrce de clase : 570 | lasele de mattce de iirare-eire 1025 Disruzetea une matice de clase 971 | Hhuguile de tp ir de caractere 1026, Crearea unor matrice de dase inializate . 572 | Uillasics caset Bustcan pent ssierea uni gr de caractve {1027 Inilalizarea une! matrce cu un constructor Gu mal mute argumente [913 clase oststzeam. ss 1028, CGrearea uel mateice inifializate sau crearea nel matrice neinljalizae 574 + Uillzwes former supisincarcae pentru isistream £1028 erul ep matricele de 975 | Ullizaes funeiet pesunt cu matige de tepie 21030 ‘Gum manevreazt memoria maticele de dase 976 | Manevrarea Muito: matrce ca funeile membre din os 1031 ‘Godt din interioul unel clase poate fi modicat 577 Ualizareaclasel sustieam 1032 Stoearea de tp stale 578 | ectarea accesulualeator cu o matice fix - + 1033 . Uilizces manipulator eu fluxurile mattce : 1034 VO in cH Uilizare unul operstor de inserare petsonalizat cu fixe matiice 1035 Sincronizares operailor de W/O uilizind sco 979 Uillaarea operatonler de extagere personalize fuxure matice 1036 Fluxurle de 1/0 din Co accord 530 | Uilizatea maticelor dinamice cy fluxutile de 1/0 1037 Fluyunle de iesire din Co ‘81 | Viltaea pent formatareafluxurilor matrice 1038 fuxurlle de intare din Coe 2. a 982 Manila cn ease 109 flzarea membrlor dase! los pentrs formatarcaieyicior 3 iniiior 983 | lnvocarea unui oblee de cite ale 1 Tncctoare Ge fomasare ae SE | elomarca compile depe oda tol Stergeresindicatoaelor de foimat 985. Si recapitulim functle fiend... 1042 Uilzaea funciel se supratnedecate 986 | Deelararea casei cior c fiend 1043 Examinarea indicatorelor de format curente 37 | Akcexempla de clas friend 1044 Pouiionarea tutor indieatoarelor 598 Blninares necesita instrucinié cass mume_clasa 1045 24 Torut pespre C/C++ CUPRINS 25 esicjorarea access nel ase end 1046 pl st arncimo pave civefsream na Conde de vane ctl fend 185 | i peatndeh boas Hoe fale ae pe prced se apa sao 13 ‘Mostenire $i polimorfism Converse claselor not eee orpig | Conrttea dlr fia coms Hs Gabe de bcs cle dee 1968 | bien net dase act dase, tg ‘Derivarea unei clase . . 1050, Utilizarea functiilor friend pentru conversii 1107 Datars we ie ji “1030 | Gn dscnndn dct pen mse sa ead aca He Calesrea embry de pl preted S62 ree erin df aporocced © 1053 | Functii generice ji gabloane sat ulres open ple 8 pat SBE | jetoonee Ee Ncsunves prt oe oO oss. | Bienes gion sip ne egentes ot S10 | Rite geen : cant Sens mall sgl : Wey | Euler teepal mal aie pa. og Oriente crue asic deb Tose | itnule deopre Slee ce cep wal ip anes 3 Seaers crcl cie ic bach cs pra. 1039 | sopmenceeurs espicds une hneiigenece Mie Rese tawcor f mopences utp 1060 | techie supe fenton gonerce Me caret mae tne cee cite cle de bad Suite | Gitte unefhiett ence Ht Case ce mitcio dune dnc cae de bazh cle dete {od | tienes ure fut! Ener de snare pie eo oe Ad Cera etd desde nope contactor 1063 | tres lel eee pens compares nel mae Ht Gel ce constocor al net case mone oct | Gre ptm sitios. ne Sasie ic permet congecttior das Ge bisk 186 | bale cfg cic pie fe Deda de ses gcse comae 108 | Etacestrence as Dieses icraibg de scoes cu case erate wey |i pee : He Panes station cacie do bask soos 3 | Genres wel Shope cdo pur pie’ as Chl de bettie ss . Joe) | Genres ural monipacr paranoia’ Hy GBS flees mute Fier 190 | Genesee et ons Garrone dan degiad oi devin o dad ron Uletea penbelor de pl protein dive dere itz | Tratarea excepfilor i portabilitatea tipurilor Definirea datelor statice ale unel case 1073 | tratarea exceptilor . 1126 Inifializarea unei date membre de tip static 1074 Forma de baza a tratarii exceptiilor 27 ‘Accesul direct la o dati membra de tip static. . 1075, Scrierea unui manipulaor de excepyii panel 1128 Datele membre de tip static private 1076 Instrucjiunea throw 1129 ‘Fungylile membre de tip static. 1077 Excephiile sunt spectics tipurilor 1130 ‘Resslul dec lao funchie publicd sealed 21. 1078 cw fone din cad blocual try it Utilizarea tipurllor speciale ca pant ide clasi 1079 nto funcyie 1132 eee rea tom | Glna'se ence! nsouctunen ech na ipa sgusercace toot | Gilares st moter aogunt ec au sng Boc ey Het ae ete de isan inc ir ios fone | GuEnes Spence te uspesue teu cope a perth clase pot fi recursivi 1a Gatarea ‘tuturor excepiiilor dintr-un singur bloc try. 1136 Pomel farce cxcephlor gcc encopior ene sig BO SHB eae oui isd ai pt oes) Eliciacrcate exes tare ere ee ape ibs Legare la compilare gi legare la execuyie- 1085 | Relansarea unet excepfl 1139 Pointer Ja clase 1087 Aplicawii ale tratarii exceptiilor . 1140 Foote acl poles ou das ee (010000207 1088 | theses ssgumerly ke se coe i Contec Ge mune te cas Se bata cle dete 108 | Bare eetlor cy spmentele inp ale frctr ie nce vitae : . to | Ryuscride nolstet soptneleres foeior = ie ‘Mostenirea ee virtual ns Crearea funciiilor de conversie 1144 Pcl uae sunt eee hinges rove pai pir ponabt por ne Implementarea polimorfismului 10 | Rane de converse operons Supainchiea a 146 ee ra poe ite Re ncu reen es ocae td Soecacoenes eee 1035 | Uathefen opestonihi consent ia Uilizarea functilcr virwale’ ||: £1096 | Utlizarea operatorului dynamic. cast 149 sane gine eps cen leas exes tovr |) Gallercs operator eer ea ed ‘Gum alegem ine legarea la compilare i legarea la executie 1098 | Cilizarea operatorutui static_east 1151 ‘tenets de progam eet ln execute 1 | Samespace ne ene on tats i a Se eae Min SMBS cascia eis naneapace a 26 Torus pesris C/C++ Currys 27 Laliara insrujunt using co namespace 1154 Contanerele secveniae ale bblotc standard degabloane - 10207 Ioentifeaes opal tn umpol ri 1133 | Devce am ula insrugiunea using namespace sales ° rs tals open eld per ie pin ep le HSE | Gainer sociive si ibe andr! oe 8 Chase ope ero ; Savini cheie moibie | SUHS8 Un exempide tert mn Ualzarea covanull cele mutable io ih, 135 San ate wp de i dae ese a bible on ‘Observa n lepatua cu cuvantulchele muta Heo | “sancard de gabloane : : Prezenareaupall bool de date TIGL | aleput de tron bcc anc de biane in Utara pul de ate Bool = Hee | Goncetele« xu ‘Crearea unui exemplu de clasi reutilizabilit ‘Algona © acy area 116g | Ueaeaaiuiexeinpi de algosn al bite re a ad ‘Definirea caractersticilor tiputul sir de caractere igi. | Deseret algormior cuprng ts ioteca standard de yabloane fd Soe Seater HGS | Saiireaalgormulul generate er inves i cls sa HEG Algor rndom-shaile sve 20100. ya ee pies Utilizarea algoritmului partial_sort_copy 1222 Stites functor de stibuire penis clas gis Ties | Gia lore aril : a Supraincarenrea operator «pent a coneatena Obie sn nee | Agora merge, ooo see is Blinc wl de ear car ut ole i “Hiro | sim a vat Supraincircarea Operator relational : econ : Detrminarea dinenstni un obec ia «200.1 SH17a | Ulan nai emp dnp progam cs veo a (Conversa ‘unul obiect sini tn-o matice de caracere |” irs | Qccmparle ve vet ol mai un Ualizerea obicoll simu ca matice de caractere ini | opine cee age ia Demonsraea objec sr LHR | wiser 2p ee ee ee eee Sinedl Componentele generice ale ‘containerului jist 1231 ‘iidcet unet cane Orr pen a Ge quik {178 | Consrurea unut obiect de tpul lis: 1232 Utlanrea unel dase Cre penrua re o list dub nliquck ue | ¢ un bet de aE Membr ase! eu liste dul inane tip | Mpemes obieceor ath BB Ponce redmurmutar fl receprecetons He. ualizarea funqillor membre remove a eimpty © hee 1235, Prone eager poesia aa ‘Traversarea obiectulul Lst. 1236 Soda kas Hes | Tut sls chaz ence merere i SF faserdtle intr-un contatser secvential slit, 1238 ie memorate 1 dase! isiior inline an net at ia Funct Ge gtegere a clase listelorinengte sy 20200000. HES | consi deg es Ee Raaset ser ndinfuits a ondine a 1186 | Unizarea funciilor membre erase i clear” 1241 ‘Afgacs tel Inte in rd iene - es ‘Utilizarea operatorului de matrice [] cu © coada 1282 ‘Afgaealstel inne fn ordie inves ite3. | Uilasre operant de mate Be eel ne | ier ee een ue Siuplementarer unl program snap cae foioaje casa incor inka 99 | anevtes dine Be Genter ue! cte gence iat ba Hot | Obs may ne 26 verbo che pe coe | Meera wen pein nancies clo ip as Ualzafes daselor generce oo isl de ciraciere 1194 | onoler dimers cont! una obiet map ie Uilizateactaselor generice co lis double 1195 | Tousen ine 129 Utlzaea classe generic co stuck 1196. | Unexempl' sips AIP parecjondt sdse kel penetee = TBE | tntroducere in programarea in Windows Uilzares dbtecrelor ew Fonsi de memorize’ 1199. | nvodoere im programarea WINS? a Scrierea une! func pena Geerina lunges bie 1b | Mie i panel tea Wisi: i Biblioteca standard de sabloane 1 Mesajele core z a Prezetarea bblotec de gabloane eandacd 201 | Componente Windows wis Feeer ea wnte Dialed de pblcane sandard 1p | Fests tesco pa isi pl 1 Cleanse Hibs | Geng unl om ens ‘3 alates unul exeripa de container tio | hte resuada ° 1s Prezenatea consineelor bilotec standard de sabioane 120s. | ents Windows Containerele de avansare si containerele reversibile 1206 | Definirea tipurlor de identiicacri Windows. 1260 28 Torur psspre C/C++ Cupnins _29 ied antet generic... votes 1261 | Lista eonyinututl una fiie resus Ponceoaoondoodaoeeeet Gd lo ag aeperich tase | Gulases func enuneeacrceyper eu fice de eur BS reat nese pein poate parse Windows 1.51263 | nctreatearesurselor in progtom a fsuresouree 1318 Deal despre propa generic Lea Fungja winmain + BEES 1255 | Casete de dialog Greazeaferesuelor 212120202101 5 1266 | Casetele de dialog.» Funetiacrestewindoe © : 1267 | Definiceatipurlor de caete de dialog, : Funeiashowindow. 200000000 II Be 1268 | ilizarea tastaturt cu eatetele de dialog Funoia eaisterdass 0020. es +1112 | componentele gablonuioi de cascts de talog Mal multe cespre mesa - eee 200 reece ural elopemar cee elas Lillzzea funetie ranslatemessage penis precrarea medaetor +1271 | Componentele defritel casetel de dialog. Uillzarea functetdspatchmessage penta prelucrarea mesaelor 1272 | Defttres comoalele da eerie oe tog Componentele unui program Windows simplu Link | flares macocomenct dager pen aio ic de dio, ‘pal LectsT. 1274 | ucla de messje a cast! de dislog © ‘Tipul BWORD. 1275 | Mal multe despre maniplarea contoaelor. lasele predefinice din Windows. - 1276 | Macrocomands crestedclog Uallaarea claselor predefnite penicu s crea fereasis srap | 1277 | Rineps meneaisiontaan ‘Windows tite un mesa) WMLCREATE cand eroeazaofereassd TNT [> Petition tpn a tmenepioc ty cascade diy Sule feresreor gf contoalelor ferveciicssc1279 | Uuzarea funcil lads penini'a crea o case de dal tip Createaferesuelr fu stl extnse ae fevecesecss01280 | Rispunsual fa seleeileublsatorf in caseia isa = Bliminarea ferestrelor . . es ee : CITB | nchiderea easeiel de dilog 7 Puncia APL registerlasiex a noni selesiose™ ea informatilr tn fereassi i Seipop. Taspunsul a everimenile generate de mo {GHEE all emmmrope pea lzen pops Liidad | Bpuatillaseenimeicle generate Rungile callback. : 1285 | Grea butoanelor mouse ula Funda messagebox. HOIST +11511285 | asponsul la evenimentcle dela tsi unchia messagebeep Br) Tv Fea tasteor virtale Mesaje 1 meniuri Utlznes mest wm keydowe ® Din nou despre messje e+ 128s | Frarea st estabiltea timpului de dubiu dic al mouse Fluxul mesaelor. a eosee Bre 1289 | Invesarea butoanelor mause-ult. ‘ Componente scar SG 1290. Determinarea acionall woe este de Ge tiator Fun SAE 3 1291" Burele de derulare See : 1292 | Difertele tipuri de bare de denilare 1293 | Ullzarea Fineyiel showserollbar 1294 | Poattia 9 intervalul unel bare de denilare 1295 | Mesajele barei de denulace Funetia posimessge Fonctia Sendmessage ©. Utlizarea funciel eepiymessage Mesaje de interceptare Uillzrea func! setwindowshoocen : 1296 | Obinerea eongurajet arene & bare de erate Rings extwiadower ior | Derlses commun txestehs Tiputle de mento 000.00 : 1298 | Mesa Wat sizes Situcara mentutlor tp | esl war 2 2! area uml meni is fiend esr 2 Fe te mesaje pentru bari de derlare carat de program Scipio popup ql metutem : Soot | Aten rata Datel de dre ‘Adkugarea unui ment in feeasra apa 1302 | Uitates funeies serfs Sctimbares menturor naplicaic 1503 ‘Mesajele generate de meniu ferererrarers . . . ... 1304 | Gestionarea memoriei in Windows Fungyia loadment os esses cosas srs101305 | Modelul de memorie WIN32, . a 21358, Uilizarea fancied modifies | : 11306 | Memoria plobal gt ocala 200000 DUES : 1339 Uilzarea Func enablemenultem peniry a conta mente iar | Nemons fea OC eed : Be Urs frei ppendnens pet eandre maken 0000000000000. 9 Bina degre mo iip eee Uilarea func deleemenu penny a pege selec dn mei 182) | Mectes unt blo detmemori in ines icp iba 2: 52 Uilizarea ancolelor de meniu ca tstele de acelerare « 310 cil obrelo es schinba em ins ee heap 1363 Grearea une tabele de aceelerare simpli sss serves 0000000000001 Stl B epeetrarer otal pee eee 1363 Siractrafiperful de resuse a B12 | Gilizarea func globalec : an 11865 ezenged allo 2 “1313 | Uszarea functor globilloc si gobalhandie, | 11366 Resurscle zl secrscs1BH > ctesares memoriel caleultorultl” cn peers i30) Irelrearea'n program a iabeldior de gr ca fu loads. 1315 J Grearea unui heap intun proces o 5 ee 1368 30 Toru pespre C/C++ Currys 31 Laas fn ep pen pean pocslr spe de memore 1369. Pericolele funcyel reatede. seoognicada <2 ‘estates dmetstonl meri agate dn ap Sse ie | Uimeer bnelel rence eee SE ise lo men via BR Gulzaea func enforce Ss Papa de get mee mann TIE EBRD Aas de feo mule or eeatiacniaea, 0020020000002 ws Bigcfe cetmemoce vital. an Bi efsies cascterelor unl cspoat SS Elberarea menor iis : SOUCIIIITIIIIIIO ARE Ges tet etme pen ana of) ‘Gestionarea paginilor de memorie virtual ||| waveeee . 1375 Unlizarea functiei getsystemmetrics k . oo Mae foeres conta! de dspodi lune ese inc : ie Procese fire de execitle Stearescontextdor de deposi 3% : ited Groues onal proces, 22S eee tee ns Blocuri de bitmap, metafigiere si pictograme ‘Teinarea prosaeloe 102000 UII EHS Obtneres wu tater defects dn cnt de spon 31 Ennio pin proces cop Be crtactn bimapJogondent de doponiv.s iB ‘Ae peal eu rocsse cop : SITE Slap inependeatbe sponte : Ss Fhlnce proce cop Sasa 50000005 : CIIIIUBR Glen Blodanor sua, : ao ies File de exec BSL Mijares blocuor bump SS raaca neces clon. 18 Peclcees ocuror his Bil : ie Gnd ns webuie erat un fies 000000 S00EIEIEIESESIISISIS csi ples caus model a unt depraghi anne ia ‘Crearea unul fir simp... 660s v eee ee ete ed s cic.et 1385 Utillzarea functiel setdlibits + 1438 Stsalzave ans tu. SUES SSS STS Slide in pon ae ii pe i ipa ata Pag efechal de dstemal Ge openre i Geares fal 2000000000000 Ber Mectarce tae Oe Secrets de SEE IE Be Gemelli, 000 SOS ees al onli pey hale pce casei |= Be Gromersret Seufielor exo, HEIN : ue Gebdonates pull de peace 2 a. : 1550s inci fines arn ie Sesvonares putt Ge prelocrae a lor ipl |. SUB Reogtamete no ao ia Ponca gustan Boh Gata ogra : Ss Sesiondted cepa netsite B82 Getter but Stem dni esis St ‘Tomine for Ulnes fineye sessioninaect te Detemsare deiicaei 1 al af as proces Ditlaes fone bacieon TNE otic dnl de spee pom ite ‘Bees Refit adage pei indica iar pi gt sas Nelle de pronate-- Chasele de prostate Windows Intrari/iesiri in Windows ‘Modiicarea dasei de priate a un proces ayile de intare/iesire (1/0) eu igiere n Windows 1450 Stblires une! prio relative pentru un fi Challe as wanster,rcursele, dspostivele fistercle i Sbpncres nivel de pear Sacre ieee Objinerea contextului unui hr stele pentru deschiderea fsierelor 1452 Uullzarea functelsretefile cu diferveclspozitve 145. trerspera ql euares exec fier. Uilzesldentiicnonlor de Mier SDSS aS Sinaoseareshelor Din nou despre pineal de fier : : TOI ' Beni ide ii i de cris Cates tobe wrt pent Stes fin ©L2SSITIIIIEE oe eae uel secu ciice ee |i fneet eae gona cre ne cons is Uulaarea une! secunt exis simple Inchidereafientiiss : HU ‘Utllizares funcylei waitforsingleobject pentru sincronizarea a doui fire Partajarea datelor arin maparea fisierelor =... . vee wee MBE Uillaresfunchel watformulipeabjeus penru snronzareafrelor mip pure unl fr memona vial. : He (tear une! exclude selproce Wop revit de ie nx pl en 0.0020) He! ‘Un exemplu de utilizare a ‘Snel ‘excluderi reciproce Deschiderea unui obiect de mapare figier denumit . . . 7 M462 Utbtressemafoatelor,--- 2 abit de gle. ae Me: ‘urea un procesor de cvenimen’ snp Sbjnees 9 schinea atibtin de ger 22.7 ie Obfocrea imensunl nl ger ans Sas Interfata cu dispozitivele grafice (Obfncre marca de mpl unui ier 222.7 aan Loe Ce est inet eu dlpozivele gale GA. Stare drecoardor Ms Motel ull ines cu dspodtives alice Sbrnere gstabares dizer cent SUIS Contec de disposi hers tecoare window de i ne 1s (lzares comextcor de diipoaty private feces diecual on ie ‘nga extn pees ligerelo aan : Tas bere unl contit de dispouki pro east tees eens tebe IE Sie eres una context de epocti petra o imprint ftrgerea Ise" oe Sa Uulizarea lui createcompatbledc pentru crearea unui context de dispozitiv de memarle Unllzares funcye! indfrse petra localizarea figerelor, «2012010005 347 92 Torutpespre C/C++ lizarea functietfindnextile 7 Inchiderea identiicatoruui de clvtare cu findclose ‘Glutares aubutelor eu functile nail Uilizarea functiet searchpath in locul func find penira ciuti. ‘Objinetea nel cdi de acces temporare lentes Sera eempoe Prezentarea funcietcreatenamedpipe Conectarea unl canal de wansfer ‘Apelarea unul canal de wansfer nominal Deconecuares unul canal de wansfer nominal Procesatea asincrond ~ F Unlizarea inudtlor 3 iesirlorasincrone: Structure overly Optic de UE asincc ei un ice kena de ispcky Gorele ‘Stabiliea unor cofe mal joase sau mal rieate ‘uncia getlasterror, Formatarea mesajelor de eroare cu formatmessage | ‘Operajt de VO asincrone cu un obiect kernel de evenianent Uilizarea fungjei waitformukpleabjects cu operat de 1/0 asinerone Prezentarea porturllor de intrare/lesre de completare Uillzarea operatilor de 1/0 eu alend pentra procesist Operajile de /O ou alert’ functioneazt mumai tn Win Unlizarea funciilor readfleex $1 witefleex. - Ulizarea unc! rutine eallbzce de inchetere Ulizarea unui program cu inririegl cu alert dows NT. 1475 1476 477 hae 479 1480 1481 1482 S14s3, wet 1485, 486 87 ad Ses) 1490 ¥491 492 aarict S94 295 1496 t4g7 198 S99 1500 Prustexe nopiont De C33 InTRODUCERE in PROGRAMARE Programele de calculator, cunoscute gi sub numele de software, sunt constitute dints-o serie de instructiuni pe care le executd calculatorul. Cand creat un program, trebuie si specifiy, Instrucjiunile pe care calculatorul ebuie s& le execute pentru a realiza operafile dort. Procesul de definie a instruciunilor pe care le executi calculatorul este numit programare. Cénd creati un progran, instruciunile se pistreazd inu-un fier ASCH al cirui sume congine, de obicei, extensia C pentru un program C si extensia CFP pentau un program Cr+, De ‘exemplu, dacd aj creat un program care realizeazi starl de plat, putet si denumififigerul «are confine instrucjunile sta.c, Csi C++ sunt doar doua din mulitudinea de limbaje de Drogramare. Multi programatori folosesc limbaje de programare ca BASIC, PASCAL $i FORTRAN, Fiecate linba} de programare are facili specifice gi proprille puncte forte (dat si slabiciuni). Oricum, limbajele de programare existé pentns a ne permite si definim Instrucjiunile pe care vrem si le execute ealculatorul lastrugtiunite pe care le executi un calculator sunt de fapt grapurl de 1 gi0 (cif binare) care ‘eprezint® semnale eleczonice procuse in interiorul calculatorului Pentns a programa primele calculatoare Gn anli 1940-1950), progeamatori webuiau si injeleagt modl in care calculatorul interpreta diferitele combinayi de 0 1, deoarece programatori scriau toate programele folosind fre binare. Cum programele deveneats din ce in ce mai mati, acest ‘mod de lucru a devent foarte incomod pentru programatort, De aceea cercetatont al creat limbaje de programare care permit exprimarea instructunilor calculator into form mal accesibila omului, Duod ce programatoril scriau instrucjunile intrun fisler (numit fisier urs), un al doiles program (aumit compilaton), convertea instriciiunle limbajulai de programate in sirile de 1 si 0 Ccunoscute sub numele de cod masind), pe cate le putea ingelege calculatorul. Fipierele dumneavoastri cu extensia EXE sau COM conjin codul masina (sirur de 1 $i 0) pe care calculatorul il va executa, Figura 1 ilustreazi procesul de compilare @ unui fisiersursi in urma cdruia se obyine un program executabil, i void mainvoid) 8 { printt ' 1 ) g é flename.c filename.exe Figura 1: Un compilaor convertese instructiunile din cod sursa in cod masinal Dupa ce ai creat un fisier sursi, rulaji un compillator pentru a convert instructnile intun format pe care calculatorul poate sil execute, Daca, de exemply,utlizali produsu Turbo r+ Lite™ al firmet Borland (inclus pe discul CD-ROM care insojeste aceasta carte), vel apela compilatorul cx optiunea Compile to OB/ din meniul Compile (ceea ce inseamna a da lnsimigfunes de compilare a Aisierului sursi). Urmitoarele capitole va indicd pasit pe care Uebuie sici executaji pantry a crea $12 compila un progam in. 34 Torut Despre C/CH+ CIC 2. Crearea unui rigicn sunsé ASCH ial i ind creat un progam, insrucunile pe care dri se exes calelatoal ebb laste | {urn fier numit fer sur Daca nu folosit Turbo Cr ate sa un compilter editor | petformant, uebuie st vi ces Fierce programulu! folosnd un edtor ASCH, cam at fr, programl EDIT pe cate oer sistemul de operate DOS. Na pute crea programe folosind | un procesor de text (cum ar fi Microsoft Word" sau Corel WordPerfect’). Dup3 cum stiti, © procesoarele de text va permits format documentele,aliniind marine, srindearacere Exive sau subliind texto sl aya mal deporte. Perea a realiza toate sceste opera, | procetoarele de text inoue caractere speciale in interior documeneler. Ou toate ci teste carctxe alt sens pent procesoral de tex, ele vor deity complatorul care | onverteste figierl sursi in cod masini 9 aceastt confine va cara econ, Cand vi crea | fisierl sur, asigurapevdc& af dat un nme care dscre cu acuratetefancjia programul De exemplu, ar trebul si denumiqi figierul sursi pentns un program de gestiune gestiune.c, — iar fxler rsh pent ua joe jotbalc Dac, pe de alti parte, folosti un compilator care include un editor intern, va puteyi crea programele in cadrul acestu editor, De exemplu, daci folositi Turbo Cr+ Lie, vei crea un | ‘ot fisier program cu optiunea New din meniul File, Pentru a crea primul dumneavoastra program cu ajutoral produsului Turbo C++ Lite, webvie si executay! urmatorii pag 1. Selectati meniul File, opfiunes New. Turbo C++ Lite va crea fisensl noname00.ropramul durmeavoasth care conjine eroatea, precum 0 Scurti deseiete a greeli, Folosi editorul pentru a crea figierulsintaxac, care conjine eroare de || Sstax, fn trmitoral exemple, programulol ii ipsese ghilimelele de inchidere a mesajului Total despre C/G: printé("Zotul despre C/Ct+); 96 _Torut prspns /G+ 4 Pruuete nomunt pe C_ 37 cand compiay! acest program, compilatorul va afisa un mesa} de eroure sintactick atuncl Gat Gralnest linia & In fungje de compllatoral dumneavoasrs, mesajul de eroare va ifort back ula! Turbo C++ Zt, ecranul Gumneavoasti va aig urmatoarele mesaje de Error sintaxa.c 5: Unterminated string or character constant in ‘function main grron sintexa-e 6: Function call missing ) in function main() Ente sintaxale €: Statement missing ; in function main() dumoeavous inarucilereepecven program, Dupl drecva ‘intilni o instructiune de genul: ms ee eee ee esas progam aCe are rea a aves one snl nrc Scat veil impiqi tn mci pari care sunt mai simply de injeles pent dumneavoasted Gi pentru Cla ctw ete propa. Gil de tun pe cae do ie rece sro grup de inscia (pomal pnp pent compan oo Bans, deomsos compton de Cv inp insulin dod eto cl ‘Kiss pap selec un spinon ei avec postin ite cmt eee src ear hoe! pa 7 progam fein sac cle oan neonate en pu ure ale D Acldtest ple sna! if Penra ciel Sec uebule set perce tue nde pupal esc Gu toate ca in codul sues sintasa.c exist doar o eroare, compilatorul de C va afisa tet neste de eroare. Lipsa ghilimeleior de inchidere provoacd o serie de erctl tn cascadi in ‘Cadral compilist (0 eroare duce la alta). Pentni a corecta erorile de sintaxa din programele dumneavoastri, urmattpasi indica ral Joss 1, Notayi-vi: uml linel lec! eror st adfugatio secur descriere 2, Balaji Bigierul sursi muténd cursorul la prima linie indicaté de compitator. 3, In figierul sur’, corectat eroarea si muti cursorul la urmatoarea linie, Cele mai mute ‘ediigare afigeazi numirul de ordine al liniel curente, pentru a va ajuta s& localiza linile din fiser. fn cazl figierubi sintaa.c city fgterul sl adiugat ghilimelee lips Salva fisteul pe disc sifolostcomplatoral pentru al compila. Dupt ce al coreciat eroarea, compilatonil v2 crea Fiseral inzaxa exe. Peniru a executa sintaxa.exe selecati meniul Run, opfunea Run, Pro- famul va rua gi va produce reaultaul de mai js: ‘Totul despre C/CH+ cr CoMmPLETAREA INSTRUCTIUNILOR PROGRAMULUI Dap cm a vi, program primal fol in propa primal. fla nsnes rin peta a un mes pecan Unit propam i, Jeno elon ele i ose tl auch prinpencu a Taisen Tome introns Sea nae sslele Ge dee 9 tie | rogram ‘ 5 Srructuna unul program riPic in © 1 sursi primud.g care conginea urmatoazele instrucivnk In sectiunea 2, ati creat (Patmcieaatzetaiolns z % Observati caracterul spatiu din interional n iu : i shoe Serg Saari eto ths op Scns cali eee pone cemretoreeerinne a we ane fo inceste insiuciuni sunt similare cu cele pe cae le vet int in maortatea programeor fa Ci tnate cazur, un figier sursd in C webule sf inceapl cu una sau mai multe instragiuel Sinciude:Instuejiunea include cere compllatorului de C s3 foloseascd conjinurul un seit fyler In cazal figicrului primal, insruciunea include cere compilatorulu! si Rigusasel un Bisier denumit sia‘. Figierele pe care le speciic insuctionea #include out fijere ASCII, care confin cod surst in C, Pup tipi sau vizualza conjimutul orci fe, stad pasi indica in capitol 13 Pierce pe eare le apelai cu odiectva #include hice! ay extensia ) sunt denumite fislere include sau fvere antet Cele mal rte dine fsrcle ante conuia insirciuni pe care programele dumneavoas le folosesc tn mad STL dar wey tnvaje mal tid In aceast cate gi despre alte utlizit ale fierelor ane ‘Gad indica complatoraloi de C si includ conyinutul unui Bixler, ne mat trebule Si sce AFISAREA IESIRII PE O LINIE NOUA “Cele mat multe dintre programele antetic sat mess) 2 cena anterloare au aflst mesajul Totul despre C/C++ pe ecranul ‘monkorului dumneavoasii, Pe misurd ce programele vor devenl mai complexe, probabil 98 Torut pespre C/C++ ‘acd au ii cere fact atfel, pring/va continua si afiyeze rezultatul pe linia curentd, Seopul tumitorulal program, o_linfa.c, este si aflgeze rezultatul pe dow linié succesive, reaultat aes sta este linia unu. Aceasta este linia a doua. ¢: Cand dotii ca prini/si inceapiafisarea pe o linie noul, tebule si include un caract special, nie nowdi C\n), in interioral textului pe care prini/urmeaza si aigeze. Cand printf intiineste caracterul \n, va avansa corsorul la inceputul lini uematoare. Programul de mal jos, dowa_lin., foloseste caracterullinle nous pentnu a afisa linia a doua de text pe 0 nowt ‘Atunel cdnd compila gl executati progratnul dowa_tin.c, pe eeranul dumneavoastr se va asa: ta este linia unu. Aceasta este linia a doua. c:\> Multe dintre programele aceste! clr folosesc caracterul lie noua. Practic,ecare program pe cate il vel scrie va folos caractertlinie noua in nul sau mal multe locus 8 Crace oirerenya INTRE MINUSCULE $IMAJUSCULE ‘Atunct cind vi sere programele, nu tebuie f italic C consider literele mar gi cele mick ca flind dferte. De regula, cele mai multe comenzi C folosesc minuscule, cele mal multe Constante C sunt scrise in intregime cu majuscule, iar cele mat multe vatiable folosese un famesice de ltere mari si mic, Programele in C folosesc mai ales Inerele mic, Deoasece | CCAnd compilai si executafi programu! @inie.c, ecranul dumneavoastl va afisa Prawexs wopiunt pe C_39 maton. program, emajusc foloseste itera M in numele Main Gn loc de main, fompllarea use va inenea 6 succes yicidia! “void Main (void) t ) CCind veri compila programul ermajusc.c, compilatorul Turbo C++ Lite va afiga urmitorul mes Linker error: Undefined symbol main in module TURBO_C\COS.ASH print# ("Acest program nu.va £1 compilat.” Mesajul relatv lipsit de sens pe care compilatonil Turbo C++ Liteilafigeazd este rezultatal sctleriicuvantulu Mainew majuscula M, In acest caz, pentru a corecta eroarea,trebule pur fi ‘Smmplu 88 inlocuig, Mais ca mais, Dupi ce afi efectuat inlocuitea, recompilay si executati progr 4 . SEES Enorité LoGICE (BUGS) seb Samadi fn seqiunea 4, af iavitt cd dact incileat una dintre cegulilelimbajul C, compiatorul va afin un mesa) de ereare de sintaxa, lag programul nu se va compila. Pe misuri ce programele domneavocstti vor deveni mai complexe, vor aparea situa tn care programnul Ee compileazi cu sucecs, dar ny executd corectfunctia pe care Fat dato. De exempiu, si presupunem ci dori cr urmitorul program, o_lintec, si afieze rezaltatul pe dovt lini, “Winclude eid wain (void) printé("Aceasta este linia unu.");_ print£("Aceasta este linia a doua.” Deoarece acest program nt inca nico regull de sintaxi a linbajlui C, programul se va compile cu succes. Torus, cand vet! executa program, el nu va alga rezultaul pe dou lini, cil va afiga pe o singur lic, 25a cum se vede mai jos Aoeasta este Lina unu, Aceasta este linia a dova en\> Cd programul durnnsavoastd nu lucreaz’ aga cum af fi dont, inseam’ cl el congine eror fogice, nurnte gi bugs. Cand programele dumneavoasirs conn ero logice cle vor apatea inmod sigun), tebuie sf incereatl s4 descopenii i sf corectayl cauza ero, Procestl de {nlfturse a esorlor logic dintr-un program ese numit depanare, Vi iavija mab Grau in faceast carte diferte‘ehnicl pe care le pote flosi pentru a localiza erolle logice din rogramul dumneavosstd, Petry fnceput, totus, cea mai bund cale de a localiza astfel de Zor este tptrcea tne! copila programului si examinarea Iu inte cu inte, pan cind vet Toeliza eronrea, Exarinarea program linie eu line se mumeste desk cheking. in cezul programulul olive. aceastd vericare ar tebui iv arate cl prima instruciune prini/na fonjne caracterullinie noua (\n), 40 Torut pespre C/C++ 10) Dezvoutares PRogRaMuLuI ‘Atundl cand creayl programe, executati de obicel aceias pay La Inceput, vet uuliza un editor pentru a crea figerul Sursi, Dupa aceea, veti compila progeamul. Dac programul confine erori sintactice, tebuie si edita figeral sursi si si corectatt erorle. Dupa ce progeamul este compilat cu succes, veti incerca si rulayi programul. Daci programul se fexecutd cu succes gl reaizeazi ceea ce era previzut, Inseam ch aj terminat de realizat progeamul, Pe de alti parte, daci prograrmul nu lucteazi cum v-ai fi asteptat, tebuie si Verifical linie cu linie codul sursa pentru a localiza eroarea logicl (asa cum am vizut tn sectiunea 9). Dup& ce corectal eroarea, ebule si compilayi din now codul sursi penisu 8 ‘rea un nov Risier executabil, Apot pute testa noul program pent a vi asigura ci el rea- Jizeazi sarcina aga cum ayi dori. Figura 10 ilustreazi procesul de dezvoltare a programulu FA] moe Taio ze oc, nu Figura 10 Procesul de deavoliare a programului 1100 Tieurne ve risiene ‘Atunel cind creajl un program tn C, vi plasay insuctiunlle taurun figler sursi care are fextensia C, Daci programul se compileaga cu succes, compilatorul va erea un figier ‘executabil, cu extensia EAE. Aga cum af cit in Sectunea 3, multe programe uullzeaza hgiere ‘antet (cu extensia H), care Contin instrucjiuni utllzate ‘in mod curent. Dac examina continutul directorului dumneavoastri dupa ce ati compilat un program, veti gist unul sau ‘mai multe fisiere cu extensia OB). Acestefisiere, denumitefigire obiec, conn Insirucjiun| sub form de sinuri de 0 $11, pe cate e injelege calculatorul. Totus, nu puteti executa aceste fisiere obiect, deoarece conginutul lor nu este chiar complet. Complitoral de C pune Is dspoae rune (cut a prin, cae realize opera frecent uilzate reduc nominal de lnncun pe cae ele le inode rogram, Dupi ce complatonleximinea sak program el creazl un Exe bie Fetal prosramalul print; complatra vaca un fier oblet denuml pmb. up sce, un program denim edo de eur lca program exeaab ph Coubinsres Inutugiunlor progsms! infer! cblect i fungile pe cae te deine emplatorl (cum ar pring. De cele mal multe of atin cod pel omypond peri a vi cram ira su, acest va pela nto automat earl de eg dak Programa sa compiat cu suces igura 11 dueeszi proce de compliare derealares Fephtor ona propa Prasteue NofIUNIDEC 41 Saas uate ea oi canoe, OY, pa POE on has rareine | >< oy puna a a ta Epirorut De LesaTuR! In secjiunea 11, afi invajat ci atunci cdnd compilati un program in C, un al doilea program, denumit editor de lege, combina insrvepunile programs domnesvoastl cd rtnele predefnite (pe care le Serine compiator, pent convert files obit ntoun program executable fl ain cazul proces de compare, n cursl cima se po detec ero de Sintaxa,procesal de eitare&legiturtor post, de asemenea, si inincase ero. Silvan de exeinplu urmatorl program, nu_printe, cae floseste, tn mod eronat, print in loc de Prin Winclude “void main (void) eee Regaturitor’) d 2 Pentru ci programul n4_print.cau incalci nici o reguld de sintaxd a limbajului C, programul va fi compilat cu succes, rezultind un fisier de tip OJ. Tous, din cana incinaeianit print nedefinite, editorul de legitusi Turbo C+ Lite va afiga urmatorul mesaj de eroare: Exror: Function ‘print’ should have a prototype in function main() Deoarece compilatonil de C nu define nici o functie denumitl print, editorul de legitual nu poate crea programul 2xecutabil nu_printexe, insi va afiga miesajul de eroate de mai sus, Pentru a corecta eroarea, edita figerul inlocuind print cu prin si recompilayi program, Figineve anteT Op eies Fiecaze program prezentat In cadmul acestei Cini foloseste una sau mai multe insruetiuni include penisu a cere compilatorului de C si foloseasca insirucyiunile incluse inesun fisier 4antet. Un fsier antet este un fisier ASCH, al cArui continut if puteti imprima sau afiga pe ecranul dumneavoast, Dacd examinati director eare contine compilatorul dumneavasti (Girectorul cite tn cazul compilatorului Turbo Cr+ Lio al femet Borland), vet intalni un subditector denumit include, Subdirectorul include conjine figierele antet ale compila- 42 Torut puspre C/C++ torului, Faceté-vi timp acum pent a localiza figierele antet ale compiltonulul dumnea- ‘vous, Poate i arfibine chiar si tipi conjinutul unui iter des uizat, cum a fh sidio.b Tn interiral acestal fiir, vet intl insteuytun in limbajul C. Cand compilaonulTalnete oinstruciune *includein program, cl compileaza codul din fiserl anet ca gi cura a cts ‘continatul fier antet in Bier sues Fgierele antet contin defini frecvent utlzate si fumizeazi compilatorulutinformati relesitoare la funcile sale, cam ar fi prinif Decca | data, probabil Gh vet infelege mai greu continutol unui fijer antet, Pe misuri ce vl vel | experiments in C $i C+4, va recomandim $4 tipi o copie aflecrulfsier ante pe cate i | folosit $1 si] examina. Fslerele antet contin infcemapi preioase gl vi furnlzeaz® tehnic de | programare caze Va vor face si devenit un programator mai bun | 14 Locatizarea FigieRELOR ANTET I {In secjunea 13, a invatat cf atuncicind compllatorul de C intdlneste o directv #hnchude, adaugi conjinutul fiserului antet la progeamul dumneavoasiri ca si cum Lay fl seis th | interior figierul sur. In funcyie de complatorul cu care Jucrap, parame dumnes- voastri de media trebuie s contin o intrare INCLUDE care sf indice compilatorulut numele Subdifectorului cu fsterele antet. Daci, atunei cind compila! un program, compilatoral aligeazl un mesa) de eroare,averizand cl nu poate deschide un anumitfigeranet, verficai ‘mal inti subdirectorl care contin fgiteleantet ale compilatoruti dumneavoase, pent 2 vi asigura cl ace! figer exist. Dac itn sir, daji comanda SET Ia promptul DOS, aga cum Se vede mal jos ¢:\>SET (COMSPEC=C: \DOS \COMMAND . COM. ‘Daci parametsi dumneavoastri de mediu au contin o intrare INCLUDE, verificati documen- tajia care insoteste compilatorul dumneavoastrA pentru a determina daci este necesara o astfel de intrare. De obicei, in procesul de instalare a compilatorulul, va fi introdusd tn fisieral auscexec.bat 0 comand’ SET care asociazi variabilel INCLUDE subdirectorul care confine figierele antet, ca mai jos SET INCLUDE=C: \BORLANDC\INCLUDE fn cazul in care compilatorul dumneavoasted foloseste vatiabila INCLUDE si fisierul autoexec.bat nu defineste aceasta intrare, putefi si o creati dumneavoastri, plasind-o fislerul autoexec.bat Observatie: Programul Turbo Cr+ Lite va cuta fisirele antet numat in interiorut Subdinectoruls!sattnclude, 15 9 Maries virezei ve compiare (Tes ‘Atunci ctnd compilaji un fiser sursi, compilatorul de C ereew2 unul sau mai multe fisiere temporare care exist numai cit timp lucreaz3 compilatorul si editorul de legituri. In functie de compilator, puteyi utliza variabila de media TEMP pentni a indica local unde $8 fie plasate aceste isle temporaze, Daci folositi un calculator cu mai multe hard- Iuportanya PaGiNLOR Pe misuri ce vet) parcurge sectiunile acestel clini, veti tntllni vartabile si funcii al ciror ‘nume incepe cu un caracter de subliniere (), cum ar fi _dos_getdrive sau _cbmod, De obicei, vefi utiliza asemenea variabile si functii numal in mediul DOS, Daci scrieti programe care se vor executa sub DOS, Windows, Macintosh, UNIX sau alte sisteme de operare, at trebui si aveti guj cind folosti aceste funcil, deoarece este posibil ca ele si nu fie disponibile in celealte sisteme. De aceea, pentru a muta programele din DOS in alt sistem de operare, va nevole si mai lucraf la program, Unele funcgii pot avea dou’ implementiris luna care incepe cu in caracter de subliniere (_comod), lar una fara Ccomod), Ca rexel, folosijfunctia sau variabila care nu utlizeazi caracterul de sublinieze (in acest caz, chmod). 22 = Caracrerut Puncr $i vIRGULA Exeminand diferite programe scrise in C, veji vedea ci este folosit foarte mult caracterul puunct gi virguld (). Acestearacter are o impostanfl deosebitd in cadrullimbajului C. Asa eum St, ua program este o lish de instructuni pe care dori si le execute calculator, Cand Speciicati aceste instructiuni in C, folosi caracterul punct si virgula pentru a separa 0 instructune de ata, Pe mAsur8 ce programele vor deveni mai complexe, veti vedea cf sunt situa in care 0 instruefiune nu incape pe o singuri linie, Arunci cand compilatorul ‘exainineazi programul, el uilizex2’ puncnul si virgula pentru a distinge o Insirucjiune de ‘urmitoarea, Sintaxa limbajulul C stabileste utlizarea caracterului punct si virgula. Dack omieti acest caracter, va aplirea o eroare de sintaxi gi programul nu se va compila cu succes. Prastete NOPUNIDE CAT PREZENTAREA VAPIABILELOR Pentns a realiza lucrurl foositoae, programele trebuie si stocheze informatia, cum ar un document pe care l edits in mai multe sesiuni de hucru cu calculatorul, inun fiser in memoria intern, Dups cum sti, de fecare dati cand nulaj un program, sistemul de operare incared instruciunile programulul ia memoria calculatorulul. Pe masuri ce programul reazi, el stocheaza valet in locafii de memorle, De exemplu, si presupunem ci avefi un program care tipdreste un document, De fiecare dati cAnd rulajt programul, el va afi un mnesa) care vi cere numec fisierului gi numarul de copli pe care dott si le tipasit. Cand. Serie aceaste informatit, programul pistreaz’ valorile pe care levayl introdus in anumite locayii de memorie. Penta a ajuta programul sX giseasci locajia de memorie unde au fost plasate datele, flecare locate de memorie are o adresd unicl, cum ar fi locaia 0, 1, 2,3 saga fhai departe, Deoarece pot fi milioane de asemenea adrese, inerea evidenjei flecrel loca poate deveni foarte diel, Pentru a simplifica stocarea informatiei, programele definese bariabile, Acestea sunt rigte nume pe care programul le asociazi cu anumite locatil din mmemorie, Asa cum indicz $1 cuvantul variabili, valoarea pe care programul o pisteazi in aceste locaii se poate modifica ln cursul execuiei prograrmulu, Fiecare variabili este de un anumit sip, cate prezinti calculatorulul cat de multi memorie necesiti datele pe care variabila le pistreazd gi ce operatii poate indeplini programul cu aceste date. in exemple! anterior, programul care tipdreste un document ar tebui si uilizeze 0 variabila denumiti nume_fister (care pistrexzi numele figirului pe care dont Sil tipasigd gi una denumité rr_copi (care pistresri numirul de copil pe care dori si le tiparigD, In intesiorul proaramului, vi vet refer [a variable dup numele lor. De accea, ar tuebui si dati nume sermnificaive flecirei variabile. In interioral programelor in C, vet deciara de obicei variabilele imediat dup main, iain de instrucjunile programulu, ca ral jos - locul variabilelor prints ("Totul despre C/C++") Fay EATS Unmatorul program va arata cum ar tebul si decluraj wet vasibile Inteegt (variabite ease pistrezaii numere intregi, cum ar 1, 2st 3) // Varsta utilizatorului in ani int greutate: // Greutatea utilizatorului in kg int inaltime; // Inaltimea utilizatorului in cn // Bite instrvctiuni vor fi scrise aici ) Fiecare variabilé este de un anumit Up, care defineste canttatea de memorie de care aro nevoie vatiabila, ca si operate pe care programul le poate indeplinl cu aceste date, Pentru a declara 6 variabilaIntreaga, programele n C utlizea24 ipul int. Dupa ce declarai o variabilt (coea ce inseamn’ si indicayi programului numele variabilei gi ipul eD, putey s auibuit acestei variabile 0 valoave (eu alte cuvinte, puteti sl stocajlinformayie tn ea). int varsta; 48 Torut pssprs C/C#+ 24 = Arrisuinca DE VALOR! VARIABILELOR © variabili este un nume pe care programul dumneavoaste’ il asoc c ‘memorie, Dupl ce declaajto variabili intr-un program, Ti putetiatrbut o valoare. in C se atribuie o valoare unei variable utiizand semnul egal (=), denumit operator de atribuire. Unmitorul program deciark tei varibile de tipul int si apoi atribuie fiecirei variabile 0 int verste; // Varata utilizatorului in ani i // Greutatea utilizatorului in kg // inaltines utilizatoreius sn cn | yarsta = 41; // Atstbuirea varstei utitizatorului greurate = 75; // Atribuirea greutatii utilizatorulut “inaltine = 180; // Atribuirea inaltinii utilizatorului 7] site Anateustiuni ale’ programs 25 Tipurite variasiLecon Ce ‘Atunci cind declarai varabile int-un program, tebule si indica compilatorulul numele gi tupul vasiabilel, Un up defineste mullimea de valosi pe care variabila poate si fe pistteze, ca si setul de opera pe care programul poate si le realizeze cu aceste date. Limbajul C accept patru tipuri de bazi, Fiecare dintre ele apare in tabelul 25 Numele tipulul _Caracteristici char isieai un singurcaace cin wh ele de RAE int Peal muere nse, cum 1,243, psn name nepte at Pissed mumere el in omat cium nn prec a cum ar fi 3,14 sau ~54,1343, doube seek mumere ele noma il i a db rete (care este mult mai exact decitformatul cu simpla precile). Ve tiliza double penina numere foarte mati sa foarte mic Tabelut 25 Cele patra tipunt de bazd accepiate de limbajul €. Pe parcursul cil, aceste tpuri sunt examinate fa deta, Cele mat multe dint secyiunle ‘aj vor liza una sau mai multe varabile din acest tpl de bazi CG A DE ACELASI TIP ‘Asa cum afi invita in secjiunea 24, atunci cind dectarat o varidbilt nt-un program, trebuie ‘4 indicat compilatorulul numele si tipul varabile Urmatoarele instrucjiuni dectara wei variable de pul int 26 = DEcLARAREAMAIMULTOR VARIABILE | (int vaste Prustexe NopUNTDEC 48 int varstay z ARES int greutate; | int dnaltine; Atuncl clnd declarati vaiabile de acelas tip, imbaul C vi a Sb, lina Cv pene sf nin nunele "ainllo: pe ast mat mule lid vig ca epstote suelo ea intivarsta, greu-ate," inaltine! es eyed float salariu, ‘taxe; ee COMENTAREA VAPABILELOR LA DECLARARE In programele nC, coment ape ex cae cet neeagh mal bine program Aint ind alge aumele variate, cebuie Sve gen seesea ek deo ey pe eat ova psa varabla De exenpl conden omaionns Seren ink vateta, (greutate,) inaltine; ant x,y, 2 Ambele decaraicreeaz& uel variable de tpul int In prima declarale, vi pus 2 pul tnt. fn prima declare, v8 pute! face o idee at vriabila prin simpla examinare & numelu en alsa de uizaren plasind despre cum este uti ‘nul nume semnificaiv, putep, de asemnent toducet expl r pute, 12, 81 introduceti expla suplimentar un comentariv in vecinitateafiecirel declaraii de varibll, ca mal os 7) Wareta’ wtiiizatoruiad in’ anil? // Greutatea utilizatorului in kg + // Inaltinea utilizatorului in cm int greutate; [int inaltine; ATRIBUIREA DE VALOR! LA DECLARAREA VARIABILELOR Dup& ce declarati o variabilé inten program, puteyiutliza operatorul de atribudire al imbajului C (semrysl egaD pentru a avibul o valoare variabile, Limbajul © vA penmite sd strbuiti o valoace vasialilet chiar in cadrul declarajie. Procesul prin cate. se ‘ariabilei prima sa valoaze este numnt de programstoniinifializarea variabllel, Ur lasirictiuni, de exemplu, deciari si inializeaza trei variable de ipul int Fiae\varsta = 41} “0077 Varstatiiizatoraiul “Gn ani! [ABE greutate = 75: // Greutates utilizatorulul in kg pint inaltine = 180; // Tnaltimea utilizatorului in om IiTALIZAREA MAI MULTOR VARIABILE IN CURSUL DECLARATIE! Corer Ia secunea 26, a invatat i Limbajul Cv petite declary doud sau ms le variable ‘pe aceeasi linie, ca mai jas: . = bie (Ene vane Ge ates i} | | 80 Torut Despre C/C++ Peanece nomunr De C_ 81 [Atunci cénd declaratimai multe variable pe aceeas! lite, limbajul C vi permite sinalizat tana sau mal mule dint ele Variasicece De vip Int © vant exe un mune pe cae complain! de Ci ascent ca una a mai mute lem de memorie, tunel cred Jesh vb nun pogam webue at ser tfeagriea sume pul ne! vale pets gel de vais pe ce vata pot ees & Seu de opera pe caepogramulle pete excsa supa dae, Complsten aac ook le biel 16 bi ocr) pena 4 pss valor de tpul tm Vase de oo tase ak tne valon tn inrvl cn: 3276 9767, Fgura 3 aes crs Ca ene "alae ip umd faseg in raj Seen {in acest exemplu, se vor inijaliza variabilele varstast inal, iar varabila greutaterimine neinigalzad 30 = Aecerza uNor NUME SEMNIFICATIVE DE VARIABILE ‘Auundl clind daciarat vale in programal damneavoast’, rebule si alegeyi nume semnificative, ‘are deseriu modul de uilzae al variabil Put utliza 0 combina de litte mar st mick. Aga cunt ‘a viz in secunca 8, compilatoeul de C face deosebire irre liesele man si cele mic. De aceea, acd lege un nume de vasabialcinuit din ltere mt gi mic, rebuie sf folosi ntoleauna Acceasi combinate, Penis inceput, probabil ci vi vef limita la folosvea lierelor mic, peniu cX in acest mod reduce posbltateaeratioe provenite din felasrea unui amestec de litere mari smi, Trebuie si-i daji un mume unic flecirei variable pe care o declaratitntun program. fn general, putei utiliza un numae nelimitat de caractere in numele unei variable, Numnele variabilelor pot confine © combinatie de litere, numere sau caractere de subliniere C), dat ‘numele trebule si inceap’ numai cu o liter’ sau un caracter de subliniere (). Unniitorl fragment de cod prezintd elteva nume valide de variabile 2 ——_ Hi Bit do sem 15 biti de date Figura 32 Reprezentarea in Ca unes valor init Valorie de tip int sunt cumere intregi. He nu au o parte frac\ionarl, aga eum au numerele feale Geprezentate in viegulé mobili). Dact dati o valoare reali une variable de tip int, , Pur si simplu vor ignora partea fracjionari, Dac fi daqi unel atunci va aparea © multe compilatoare de ¢, vatabile de tip into valoare in afara intervalului dintce ~32768 y intervalulul dintee 31 32767, siuatie de depasire (overflow), iar valoarea atribuiti va fi eronatd i 7/ Nunele inceput cu cazacter de E| VaRABILELe DE TP CHAR O variables un nme Limbajul C are citeva cuvime cheie predefinite, care au 0 semnificaie special’ pent compilatc Un cuviintchete este un cuvant care are Injles penizu compilator, fk ca dumneavoasira si dat acest ingeles. De exemplu, float, st $6 char sant cuvine cheie. Numele de variable na pa} utliza aceste cwvinte cheie, Seciunea 31 prezintl cuvintele chee ale limbajutal C 310 Conrete cere acecimensucurC Limbajul de programare C defineste clteva euvinte chele cate au un injeles special pent ‘compilator, Cand alegeti numele variabilelor (Sau creati proprile dumneavoastra functi, uuiizayl aceste cuvinte chele, Tabelul 31 listeazi cuvintele chee ale limbajului C. pe te compo de Hascalca Una sa a ite oe dermal cn: detrs ovat intra poyam,webre peaieng wet ‘nei eT! vatablespecice ger te vals pee vrais Boone pes © fl de open po care prota le pose exec aces dae unbahe Gg loa chorpent api valon de tip crates Compl de cces ie soe pang a sed pent a pista vance ip char © val de ap cbarpone rks cee Sats cpiteinae a8 1. Hg an con ses th Coes 1 octet chy Cuvintele chee ale imbajulul ¢ ‘auto default ‘float regisier” suet volatile ii): break do per return, switch bile case double goto short typedef 7 bit de date char else Y signed union Bitde sem const ‘enum int sizeof vnsigned | Figura 33 Reprezentarec in Ca unei valori de ipebar. continue __extern on satic void Tabelul 31 Lista cuvintelor cheie ale linbajului C. $2 Torut Despre C/C++ s2_Torupssmee C/C++ oa cele dou modalay 1 auibulovaloae une vase dep charini-una din el a aoe Fecal, Pina modal contin acodes Valo ASH coresp Groare carat, De exempt, lira Aare valoarea ASCU 65: ES eee ae ‘A doua modaltate este cea in care programul folseyeo constant dip cracer care apate fhure dou sposroud ©: “Sirurlles 34 Variaswete ve TP FLOAT ee aed ‘cme Aunescand dec oui rn fore, eb est % oat iru a past lori reale in vitgulé mobili (numere negative i poritive care wales reeceiperpeos cate at a iro 52. Arpieuinea cHiLimeLeLon $i Wal AALTOR CARACTERE ind luca variable de tip char sau cu sn de caractere, pot spitea statin cave webuie St _urbull nei vatabie valourea de glimele sau de aposrof, De exempi, cn sae famsas C+ Programmer’ Bible, webuie i oli de dou’ ei aposwofl in sl de cascore, in asemenca cain rebuie si plas inainea caracerlut apost caracienl backslash (\),c2 mals “char apoatro® = 1\''; nie : cchas ghilinede = '\" = “ae in afari de caracterul aposvof, putet uta in programul damneavoastra gl alte caractere speciale, prezentate in tabelul 52. Pentru a face aceasta, plasatisimbolul caracteruluiimediat ‘dupa caracterul backslash, fn toate aceste cazuri vebule si folosiy lterele miei pentru a reprezenta caracterul special Carncter Semaificatie \a Caracter ASCH de atenjionare w Backspace v ‘Avans hale \w Linie nous \ Retur de car ‘ Primete nopiunt pe C63 caracter Semaificatie Ve “Tabulator orlzontal w ‘Tatulator vertical w Badkslash V Apostof ww Ghilimele v Semmulintebii wan Valoare ASCI in octal xnnn \Valoare ASCII in hexazecimal _lxnnn__Valoare ASGU in hexazecimal Tabetut 52 Caracierde escape definite in C. PREZENTAREA FUNCTIEI PRINTF Mai multe dine sectunile acestel cisyi au folosit funcyia prinif pentru a afiga mesaje pe feeran, Cind program. dumneavoastra foloseste print, datele pe care viet si le aligati reptezints parameirit sau argumentele funcjel printf. Usmitoarea instruciiune foloseste functia prinyf pentru ¢ afiga pe ecran mesajul Totul despre C/Ce*: BHinte (onotul, despee c/cH4") In acest caz, ginal de caractere (lterele care apar intre cele dou ghilimele) constinuie Singurul argument al functiet pringf CAnd programul dumneavoastri incepe si lucreze cu vatiable, poate ca vep dot si foloshi printf penteu aafisa valoarea flecicei variabile, Funcila Dru aceepti mai malji paramete, Primul parame trebuie si ie intotdeauna un git de Caractere. Parametti care urmeaz primulus gir de caractere pot i numere, variabile, expresil (cade exemplu 315) sau chiar ate scusi de caractere. Atunci cand dori ca prinifsi afigeze © valoare sau 0 varicbild, tebuie si includet informatia despre tipul variable to primul parametru, Pe lng’ caracere, in primul parametra putetl si introduceti speificatori de Jormat, cave aratl furctei prinifcum si afgeze cellalji paramets. Un specificator de Format ‘ste reprezentat prin semnul de procent (96) urmat de o liter’, De exemplu, pentra a afiza 0 Valoare Inireagd, vei fulusi %ad Gl specifics valorile zecimale), De asemenes, pentr’ a tipi ‘0 valoate in virguld mobili, putejlfolosi 9f Unndtoarele instuciiuni ilustreaza uitilzarea specifcatorlor de formar in cadrul funcyel pringh printt("varste utilizatorului este #d\n", varsta); peinté ("Impozitul pe vanzari este d\n", pret * 0.07): Print? ("Varsta utilizatorului: td greutate: Sd inaltime: d\n", vareta, grestate, inaltine fs ob Dupi cum vee, puefi sf introduce in cadrul peimulu parametr al hui prinyfunul sau mat ‘ulti specificator de format, Observal ci a weia instruciiune continua pe randul urmitor. Chad instuciiunea dumneavoasted nu Incape pe 0 singurd line, incercai 88 gasii un }oc bun pentru a rupe tindul (cum ar fi imediat dup virgula) sl indentayi Cragett spre interiorul pagini) linia urmatoare. Scopul indentirli este imbundtatrea aspectulul vizval al programa- Riidumncavoastd, astelincat cel care va citeste programul si deduca mai usor c8 respectiva linle 0 continua pe cea de mal sus. Mai multe dintre capitolele urmatoare explici in detalit dlferit specificatori de format al functtel pring 64 Toru pespre C/C++ 54 Arisanca vALORILOR DE TIP INT FOLOSIND FUNCTIA PRINTF Funcia prinf pemnite uilzarea unor specieatori de format care furnizeaz’ informa despre dpusle pacamechor (cum arf nt loa, char 9 aga mal depart). Pent a aja saree de tip tat eu pring se folosete speciiatrul de format Sed. Uratorul program, Tout eloeqe specilcatorl de format Sd penta a aga val vasablle de tip Int ef (PValoatea| zecinal “valoare, veloare); eibdeladenea! 2 eee ae ae eee oi SELSEEg stetats 285 este 277, ootan Valoarea zecimala ie imala 255 este FF in hexa; AFISAREA vALor Is RILOR DE TIP UNS FOLOSIND FUNCT PRIVTE NT ‘Atunci cind compilayt si executayt programul inioutc, pe ecran se afigeazi urmaton rezultat: Varsta utilizatorulul: 41 greutate: 75 inaltime: 160 i plus 2 egal 3 c:\> | Observatte: Multe compilatoare tratcazd specificatorul de format%t ca find tdentic cud. acid vrei sd creapi un program nou, ulizats totus speciftcatont Xd, pentru ci specifica | tonul%t este wn specificator moslentt teste posibil ca viitoarele compilatoare nu fl accept, 55 TipArinea uel VALOR INTREG! OCTALE j SAU HEXAZECIMALE Truncjia prin permite uilizarea unor spacificater de Format care farnizeatinformapi espre dpurile parameuillr (cam ar fi in, float, cBar si apa mal depavte), In funcie de propramul dumneavoastr, poate, la un moment dt, vet dri si ais o valoaretnteagh Scud Gn baza 8) sau hexazecimala in buza 16) Caraceral % (itera 0, nu cifa 0) ee Specifcatorl care Indl fundjel prin si aigeze valoaea in format octal, [atin mo Sra, speciicators ox gi HX indlckfunciet prin sk aligeze valoare in format hexaze Gal Diferenjaintre fox gi 4X este i cel din um afigeazA valoarea hexazecimall cd tnajuscule, Unaitorul program, oct betc, usireazd utlizarea speciicatollr de format 9 9% #042000 ca unsigned su 42000, cn ine eave ‘unei end com raul Afiseaza 42000 ca uw “Miseaza 42000 ca ps Ln 66 _Torut pespre C/C++ Pree nopum pe C_ 67 Pretul este 525.750000 Inpozitul pe vanzari este 31.544999 o> Dupi cum puteti vedea. in mod prestabilit, specificatorul de format #fnu ofer% decit 0 formatare simpli a iesii. Mai multe secjluni din acest capitol vor prezenta insi diferte modaliiti de a formata fesirea utlizand functia primi. 57 AriganeA VALORILOR DE TIP LONG INT FOLOSIND FUNCTIA PRINTF Se ee eee tara wer ssa de tra ox at si ef Pa a i spa AFISAREA VALORILOR DE TIP CHAR FOLOSIND FUNCTIA PRINTF ‘Asa. cum ati tovifat, furctia prim permite utlizarea unor specificatori de format care furnizeazi informayii despre tipurile parameuilor (cum ar fi tnt, float, char si aga mal ‘departe). Pentru a alga valorile de tip chareu Fancia printf trebuie sk folosii specifiatocul format he Umit program, har ou flee spcintorl deforma peta pe ecran litera A: sce $a\n", un_mition); a\a", uh_mition) : ‘Atuncé cine vel compila gi executa programul long_int.¢ pe ecranul dummneavoasta va aligat urmatoral rezultat: Un milion este 1000000 Un milion este 16960 Dupa cum vedet, progremul chay_out.c va afiya itera A utllzand constanta de tip caracter ‘a'sivaloarea ASCII 65, tune’ cind vet compla sl exectta programul ebaroue, pe ecran cl dumpeavoastra va fi afigat urmatorul rezultat: | Litera este a 58 —Arisanca vALORILOR DE TIP FLOAT | itera aes A e FOLOSIND FUNCTIA PRINTF \> ga cum atti, Fanci prinyf pee uzares nr spect de format ere fe cam a i, ac rl i a Sr eae eee cgay faut one pu bul los peter Serr re ee eo feat lege Special da fret pn St le ie Vs wb ‘Wnclude/Zstdio n> AFISAREA VALORILOR IN VIRGULA MOBILA IN FORMAT EXPCNENTIAL ‘Asa cum ati invajat, functia pringf permite utlizarea unor specificatori de format care fumizeaza informayll despre tipurle parametilor (eum ar fi int, float, char si aga mal depart), In sectiunea 5, att invijat cé putegi alga valor in virgula mobild prin utlizarea speciicatorului de format 4 In funcyie de cerinjele progeaaautu, este posibil saga valor: folosind formatul exponenjia. Pentru 2 alga valor\ in visgula mobilaint-un format exponential, folosit specfcatonul de format 9e sau %E. Diferenta dintre Me si of este ch specticatonil de format 92 indici functiei printf si foloseasca majuscula E in desire Urmitorul program, expout.c foloseste ambi specificator! de format exponential pentn a alla pe ecran valor in vzgul mobili 4 4 oe ae oad Ne 4 ‘Acunct cand veri compila gi executa programul long into, pe ecranul dumneavoastrd va afisat urmatorul rezultat 68 Torun pespre C/C++ Prowete noprunt DEC _ 69 Winclide ” sid main (void) aS, ‘ " char titiu[255] SiR (RSHa GEOG wats AeA PARE Rae) © Eiele (rasta corcuie: gore We\e", 2 SpE + raze sonal cand vet compa gi execata programul expo pe eeranul dumneavoasrl va f alisat urmatonul rezultat: Aria corcului este 1.2585840+01 hria corcului este 1,2585845+01 c:\> ad Zam vedey, tn mod presabit,specficatorde format se si WE mi fer 2 & Du co opll a tesa. ai multe sceuni din acest capital vor prezenta Insi dente todaltag de a formata lesrea wtlzaind functia printf 61 Arisanea vALORILOR IN VIRGULA MOBILA Tn sen 5, a Tat, olesind spectintna de format Wf pate nda func te ent eae avg mobld ty format ena De averenes In secures 60 9 Prin ols pecieatnt el penis «aga Val in igus mobil in fom ta fe mod say, func pra accept speticator de forma 9 6, ud Seen elicatot gg HG, pif alee Formal sau Oe asi oct lf Cina folost spe Tar tal convenabla, Urnatorl progam, rg.mobc, Hasuesth ulzarea specfcatoruli de Format 48 2 "Totul despre C/Ct+"; print€ ("umole acestei carti este s\n", tith f is Aun! ind comps. exeeu progam sou pe eon va Baya umaton Numele acestei cirti este Tot despre c/ct+ AriganeA POINTERILOR FOLOSIND FUNCTIA PRINTF KGIAG: Aga cum a Sava, functia prin perme ulzares unorspecicator d thuscrs hues canes Apurle araeer (eam ar ft, lows oar aya mal Sp) tins de ees, ck aaa ceo age pe tafe progam dinner Coast o-asoclat ‘une loa de memore, PE mlsiHt Ce COmpIEMTates progr Sees va cee ee po cy nee de mene unite potutor), Cind hence, poe apres necator cde eon Pei aa aceastt adres cu func prin folost spectictorl de format. U ogra, re ‘ MET ES 234 este afisat in formatul, « es 1234) 7 a caro ea tativalo ‘ te afisat in formatul ¢g\n" prints (*adresa valorii variabilei este sp\n’, évaloare) ; 1 0,00001234 Anne cn comply excel propnmul poe eral unneavous af at sAruneh end compa ql exeoutat progremul org_wb< pe ecran va f fig urmiton eau: Mumarul 0.1234 este afisat in formatul 0.1234 Nunary 9,0000i234 este aficat in formatul 1,2340-05 c:\> Mirena valorii variabilei este FFr¢ ‘nei eind uulizal specficatorl de format 9p, valoarea pointerului gi formatul utiliza mat %p, valoarea pointerul 51 formatul wulizat de ‘rin diferi de la un sistem de operare la atul, Capitolul Pointe” va explica in detaliu 62 — Arisarea uNuI SiR DE CARACTERE FOLOSIND FUNCTIA PRINTF Un gir de caracere ese 0 secventi cae conte zero sau fal multe vac, Capital ‘Srvsle! a oferd mai multe amanunte ta legit eu acest subiect) na Sn cele mi amie opera execute In programe este afgares girls de caractere, Age Su Rrra cous prin permite utlizare unr specicaton de formar care furnizcaa He revit lesore purl prametor (um ar int, loa, char aya ma dopa) ecw aan girde earacere eu foncfa pring tzebue Si flosit specificatorul de format és, Urmiton rogaine. ublizes2s specicatora de format %s peri aalisan fir e-caracee | UriLizaREA SEMNJLU! PLUS SAU MINUS INAINTEA UNE! VALORI ‘Asa cum afi favijat, functia pringf permite utilizar Gif pe care o plasayi dup % precizea2i numirul minim de caractere pe care prinifil foloseste pentru a afisa ovaloare intreagi. Dacd, de exemplu, speciicati 45d sl valoarea pe care vrej si o afizati este 10, printfva intcoduce tei spari libere insite de valoare, Rejineti i valoarea precizeaz numirul minim de caractere pe care il va avea iestea. Dact valoatea pe care dort so afisagi are mai multe caractere decit ati precizat, prini/va folosi numul de caractere necesar pens afisarea corecti a valori AFISAREA NUMERELOR INTREGI PRECEDATE DE ZERO LOM OEM NE Inseciunea 65, invita cum s formato vatoareineag plstnd mum de lr rk imeiat dupi Sein specifeatorl de formate Duck valarea tinea pe care © agesod ‘ring/n are nevore de numaral de caractere pe care e-al special, va intoduce Un tuna Corespunztor de spat Lbereinanten valor, fn funcie de scopul progamulss demnea. Yeast, poute ci vet dod ca rink inttoducl zeous raiten vals In le de spat es af onli lage ec esa eon eda ip speciicatorul de fom nse de rural de cre do, Unto program, ere ped dosteszd acest procedeu pees “void main (void) [Ant vaicare = 5; | printe (*so1a\n", vatoare) | Prince Choza\n, valoare)) | prince (Hoaa\n, valeurs) i printf ("S04d\n", valoare) ; ) [Munci cind compilai si executayi programul zero_padl.c, pe ectan vor aplirea urmitoarele: 5 05 005. ‘005, o> AFISAREA UNUI PREFIX INAINTEA VALORILOR OCTALE $1 HEXAZECIMALE (CLG 67. In secjunea 85, a fvigat cum se foloseytespectcatoml de format so penn a fia valk foctale i specificatorul de ‘ormat #9 6X pentns a afiga Valorie hexazecimale, Atunci cdnd programul dumneavoastrare la ieyre asfel de valor, poate cA vel dor ea valorile octal si fie precedate de zero (de exemplu 0777), iar cele hexazecimale de Ox (de exemple OXF, 72_Toru pape Cr Pruwets nope C_73 entra indica func prinyfst adauge prefitul pov unet valor ocale sau bexazecimale, plsaicaacteral #imediat dupa #in speciicatorul de format. Uematon program, oc_ bes FonWaTAREA UNEIIESIRI EXPONENTALE Co a a Pca in peta de ona nei Pa In seeyiunea 68, sti valoare in virgula moti Sh afigeze valorile in vig formatarea a cum sf ols specieatonl de format entra formata o Folosind ohne sm defrmae, pec nc! pny 08 mobil, i format exponengia. Urmiverl program, Sp pn nel ijl exponent Roen ee. Frc Pisieiide: ste $#x in hexazecinal\n", sl execu propramul exp fine, ecramsl domneavonset va aya Valoarea ecimala 255 este 0377 in octal Valocrea Zecimala 255 este Oxff in hexezecimal Valeerea secimala 255 este OxtF in hexazecinal ene 68 — Formaranca vaconiorin vincuta mosua KQRORES in sequea 65, a tovtat cum sk formats o valor inteagdplasind mumirul dort de ce dnt dup sn specsorl Ge format at Poosind otic sila, feta prinfek emit sf formata i valose in vingld mobil, tunel cind formato vaoaze fa vigil rE, prelza doua valor. Prima valoare indict Funct prinsf mumarul minim de Caractere pe cate vies le alia A dav valoae comunic func printfnunel de ce fe cate dont sf le ageze la dceapta punctlul zecimal, Urmston program, ere ft ilustzeazd modul de formatace a valorilor in virgula mobil folosind prinyf ALINIEREA LA STANGA A IESIRI Atunci cand afigati un text utiliz’ind formatar a ds Specticatorul de format. Uematorul program, alin_sig¢ llustreaz enw a alinia la stdnga un text “Swilisea enna [Pisitde 74 Torus pespre C/C++ 71 Uruizarca comainara a ‘SPECIFICATORILOR DE FORMAT Multe dintre capitolele acestei secjiuni au prezentat diferij specificatori de format, Vor aparea gi staat in care vett dor si folosi avantajele a doi sau mai mul specificatos De fexemplu, pute si donii si afigay o valoare hexazeckmla aliniati la stinga, precedatd de caracteri in acest ca, pur imply plas cae specfcator init dp vemnul (or speeificatori de format ‘unc! cind vet compil gi vet executa programul fot fn, ecranul va aia Aliniere stanga ou sen +5 ee 72 = TrecereA unul sin DE CARACTERE PE LINIA URMATOARE cand programul dumneavoasr floseste func prin poate apirea stain care ung Ge catacere nu Incape pe ua singut Hind, In asemenes ocazi, pur 9 simply plas un Caracer backslash CO la fit line, clea ce va face ca texul sh contoue pe lina Cunitore, cum se ara ml jos: ae (JAGR Cane este! foarte Lung si pentzs ca sate ROR jain esiSnespeipecestogisaiaints 3 bservate: Dac tec teil pe nia urmatoar, mu include sai la fnceputl ink nk ‘aeons compllatoral eo include acess tierra utc 73 > Arisanea SIRURILOR NEAR $1 FAR CCapitolul ,Memoria* explicd in detaliu pointert naar gi far. Pe scurt, pointeli near si far repreaintd acresele vasiablelor in interiorul zonel de memorie alocate programulul. Progr: ‘mele care ruleaza in cadrul sistemelor de operare mai vechi, cum ar fi MS-DOS, folosest pointeii far pentrs a mari zona de memorie in care programul poate si pastreze informata, ‘Atunci cénd programul foloseste pointer! far pentru seferizea vatlabilelor de tp sir, poate fapizea situja in care veil dori sé afisayiconfinural srululfolosind pring insi, aga cum veh ‘avija In capitolul .Fungille", compilatorul va genera o eroare dac& transmiteti un pointe: ‘fare foneyi care asteapti o adresi near, Dacl dons afigti unui gr far (al cinui incepy. ‘ste indicat de un pointer a) folosind functia prin trebule 81 anunjatifunctia cd folosiq ux pointer far. Pentru a face aceasta, plasaio majuseuld F (pentru far) imediat dupa % is Specificatorul de format, cum se aratd in continuare: Pramete nopium DE C_78 inte ("EE S\i Pent el speiicatorl Ws nc pinay un pine far, apelarea fun ete core In od sda, put plas o maja Vin speatcaorl de fooat pe nda fancier ch easly gna, Dar cata anc rin pep tn md presi at near species de forma 59 cal esa feu, Unto progr 8. ne fe, idusiteazd uulizarea specticatonor #HF3 gt 4Nsin cadrul funcyel pringf " espre c/cttts otul despre Observatte: Visual Cor nu face disinciiaintre pointeriifar simear. Daca incercaf sd compilat programulnear fare subViswal Crs, compilatonil ta retuna ¢ eroare, Pentne 4 actualiza automat programul dumneavoastd acfel inedt sa ruleze sub Visual Cre includet itera ante windef.b in program. ‘ CARACTERELE ESCAPE ALE FUNCTIEI PRINTE Clin sr cu gust decractr, pte liza cazctere specie cum a Bebo tl, reur de cits arans de ffnd € deine nal multe caraeoeencape (enseee precede snl exape bac) pont a fcla ncledere caso specu a vol sruon, be exp mle de propane resent Ses cae jot erate ine nov (i) pent ca ei da ee anceps pe na urnatoaee cum se poate vedea mai jos: i ele ‘ones Tabelul 74 prezind lists caracterelor escape pe care le puteyi utliza in eadrul siruilor de caraccete (si dect in ieitle create eu functia pring). fe Casectey och De NENe #eixalilcs{le] INH Noll MBB AHI BBEAINESUn nM enrISae Na ‘Caracter ASGIT de atenjionare w Backspace v ‘vans hate \w nie now Remus de ear v Tabulator orizontal w ‘Tabulator verical, (cominuare) renee Pk 76_ Toru pespre C/C++ PRIMELE NOTTUNIDE C77 mn (Giinetias cos aS Caracter escape. jemuificatte | yeld main(voig) v Bacilash Pressiaata( . Apestot v Ghitmele v Senne Mn Valoa ASCII in octal ann Valoare ASCH ia henszecinal Tabelul 74 Caracterele scape definite tn C. it umneavoastri poate sa Uruizarea oniveRuLul o€ oisroziriv ANSI ez Hite doe sete prezenatede-a ungl acest lr sau eet pe larga mache tel prod a fonnaa rez la apace. In aah spectentontor eos ek Sica nun de ie as att eit incl eo hearse saa soul gas hep ea n/n unseat a specRceat ey ty wl ofe special de format cae Ay aducl eased tae a ei load Reg cul sa alere ince lsh niches scene oe el los pute sre acest peri floind veloc enn Sa ee 75 Dererminarca nuMaRULU!I OE CARACTERE AFISATE DE PRINTF “st ul dumneavoase execut farmate sfisiat, apts in are vet do su nual de carat pe cele aa une brnih ‘ia cin cco fe format % ‘va atribui unei variabile (in urma unui transfer prin pointer) suma total ttenacrdr cafe loa abet Und progam, mcr, send lara specie tort de format a 7 fare DOS, instalajidhiverul ANSI prin plasatea ‘ne init in fislerul ony (vezt exemplul de mal os), apol reincheny seca i Dupi ce af instalat deiverul ANSI, programul poste sctie secver cH BGR ar gv oY fe escape folosind pringf cert, Deed pe eleatonl cu care vl compa pregramele raat Windows 9, sdigarea avers ANSI isterlconfigsys sca interfer cperaie ds Windoos 9s Uruizarea orivenucut ANSI PENTAUA ELDENA ECRaNUL [er] Gh dine cele mai obismite opera pe care le va efectua un program la TInceputul Eg cate oy te SH elbereze ecraru. Din picate, biblioteca run-ume C ns congo feniru a face aceasta, utlizai driver ANSI, cum 3-2 $f apoi invocari urm’toarea secventa escapes sanul va alga urmatoarele: ‘Atunci cand vejl compila s{ executa programul nr_ert.c, eeranul va alia urmit ‘Totul despre c/c++ Prima suma 5 A doua suna 35 c:\> 76 == Unuizarea vatoni RETURNATE Son pent & determint In sess 75 af iat cums felosee specifica! de format on penta determin mor canter partes Sin Fost pata ena ne tn de moda pn ceva pe nga nc Prine aa one ria Jn ps, hd pri eit excrete rum tal de ict pe seh acl pride o een, va ena conga EOF (cre a8 ct fv inci’ srl iierulu, Urmtorul program, pri c foloseye valoa 4 se asgura cl functa prini/s-aexecuat cu Succes: 78 Torut pespre C/C++ 79 Unuzarca riverutur ANSI penrau C/C+ AAFISA CULORI PE ECRAN In multe dint capitolele'acestel cna fost flosittfreevent functia printf pentru a alga 0 ieste. Des fancta prinffofers speciicat de format puterici, na va ofera si mifoacele de 2 afi iefiea in Calon, Dacd ins folosit drverul ANSI, prezentat in secfhunes 77, pute fotos secventele escape prezentate fa tabelil 79 pent 2 aia isiea in culo Secventiiescape __Culloare sc{30m ‘Negra ~ culoare de prim-plan sein Rogu ~ culoare de primplan Bscf32 ‘Verde ~ culoare de prim-plan Bscl33m Portocaliu ~ evloare de prim-plan Albstns~ culoare de prim-plan Cian ~ culoare de prim-plan Alb ~culosre de prim-plan sel 40m [Negru ~ culoare de fundal Bsctstm Rog ~ culoste de fundal sd2m Verde ~ culoare de fundal Bsel43m Portals ~ euloare de fundal scfm Albasiru ~ culoare de fundal BcldSm ‘Magenta ~ culoare de fundal Bscl46ms Glan - culoare de funda Bsc 7m Alb ~ culoate de fundal Tabelul 79 Secvonjele escape ANSI pentru stabilirea culorilor de ecran. LUrmitoarca insirucjune prinffealecteasi culoarea de fond sllstnw peinee O Cae {in mod similar, urmitoacea instruciune printf selecteazil un text rogu pe un fundal alb prints @\033 (47a\033(3in") 7 eee fn exempll precedent, prinif sate dovt secvenje escape. Driverul ANSI permite spect catea culonilor de ecran prin separarea cu punc i vggul(), ca mai jos prince (A033 (a7a/3im') Prumene nopunt De C_79 Uruzanea opvenucur ANSI perau = POZITIONAREA CURSORULU! ESS Aga cur aj Tnvatat, driverul ANSI acceptd secvenje escape care permit stergerea ecranului 1 afigarea textului in cuori {a plus, driverul ANSI dispune de secvente escape care p. plasarea cursoralui la o pozitie specified pe rind gi coloana, asfel cl putet alia iesizea numiti locate de pe ecran, Tabelul 80 aratl secventele escape ale driverulus ANSI pent poritionarea cursoruli Scoventi escape _Functie empl clay Posijoneazi cursoral la rindul x gieoloana y —_-Hsc{10.2557 scl ‘Mut cursor eu x rinduri mal sus E14 Esch ‘Muti cursorul cu x rind nai jos Bf 2B BC ‘Muti corsorul y coloane la dreapta Bsf106 sly Mut cursor y coloane la sings Bsf10D Boel Stocheaz’ pozia curent a cursorulu BS E(u pozija curenti a cursorulu sel Bscl2) Is mut cursor Iz pola home Bxe/2} fs Storge pind la sfiesitullinie curente Esl. Tabelut 80 Secvenjele escape ale drivenului ANSI pentru pozifionarea Cursorul Chiar si in cele mai simple programe, vei efectua operat aritmetice cum ar fi adunarea, sciderea, inmultiea siu impirtirea. Pentru a realiza aceste oper folasit operatorit desist in tabelul 8. REALIZAREA OPERATIILOR MATEMATICE DE BAZA INC Operator Functie + Adunare - seldere : fnmaiee L impatie Tabelul 81 Operajile matomatice de baxd in 6 UUrmitorul program, math.c,ilustreaza utilizarea operatorlor de baz din C: ‘include ‘ void main (void) ( Ant secunde_pe_ora; float media; ‘secunde pe ora = 60 * 60; media = (5+ 10+ 15 + 20) / 4; so. Tonnomnm c/ces Pease nomunt De C_ 81 acd limbalul C ae efeetua rezultatulexpresiel ar 21 erate de la stnga la dreapta (adunarea inaintea inmultci), De hae Ee 0 Daca C ar efectua mai 7 nt inmulirea, eezultanal arf ‘Atunci cind compilayi si executai programul matb.¢, pe ecranul durmnevoastrl va aflgat ‘urmatoarea iesire: Mumarul de secunde intr-o ora es Media nunerelor 5, 10, 15 si 20 Numarul de secunde in‘48 minute este 2880 c:\> 3600 Pentru a evita problemele cat ce i jh a af < =p recedentacperatorior Precedents operworioe decane ae ‘nti, Tabelul 85 slustreazt precedenfa operatorilor in ¢ Precedenta operatoriior (in online descrescatoare) (Oma = Siena eee aan 82 Orcnaronut moouo ta seclunea , af TnvBjat 8 C folosesteearacterl slash () ca operator penira impirie. fn Uncle aplicai, probabil cl etl avea nevoie de restl unei impisgii de numere integl. In asemenca cazvti, folositl opratorul modulo rest). Urnitorul program, modulo. lustreazi HH kay rmodil in care se utlizeaz’ acest operator: as & . 1 8k ae tein feel eo ce = ee Tabetut 83 Procedenja cperaiorilor in G aligatd urmatoarea iesire: 10 impartit 1a 3 egal 3 rest 1 c:\> 83> Precevena siASOCIATIVITATEA OPERATORILOA? In sectiunea 81, a inviat ci limbajl Cfoloseste urmatoni operator: semnul plus penis nate, emo minus) pene eter, aes ) per inmate eater! da © penins impisjre, auincl cind programul dumneavoastr folosese aceqi operator ia interionul unot expres artmetice, este necesar si injelegetprecedenja operatorilor in G, Care specfchordinea in cae se efecuea24 operailearismetice, De exempl, i considera vamaoarea expres Forzarea onDIn OPERA TILOR Gereg ‘5c ale in sectnea 83, C efectoeaad in C eteteazl open dint expresiebizinduse pe bsceden flea operator in interior expresi In mule sasua; meen a ee ‘abil limbajul C nu este cea pe care o dori care 0 e exemplu, 5H considerim urmatoar @prese~ scopul ei ind calcularea medieia tel valor” COMER 7 OSs as oe ER 82__Torur pespre C/C++ ‘ack media valoilr 5, 105115 ar fi calcul corect,rezutatul ar tebul si fle 10. Dar dart Maen Insbajol C38 evalueze exprsia precedent, el va atibui varibllel media valoarea 20, cca mal os media 's/5/410 415.7 37 “=5 410+ 5; ae 15+ 5; = 20; ‘ 4 cat tpn seine 63, Ye ack examina abel de precede operation, pe cate peeing st Deck examina a Deal nbey © 0) af o recede sa mare = vee or a Pin umat, sep neie de o mallee pein cis ore tek epee sp cn ve expres, os fs SE pain neon paanczelrinanes att opera, DAC "ode oo re nse sna lv cel ia ere, (ee uo Has) 713: 8 fs = (a5 35) / 3: % = (30) 735 i030) ‘ media Limba! ¢ execu opened neronpratzcor bane pe rene prec timbahl ¢ eeron ack expres conine mai mile expres cal multe seul de ee et ¢ excel int peri din paantzee eae ninco ale Exempt de mat os: (B+ 3)! #2) - 7a) #2) = 3 sozui tat 85. OperaroRut DE INCREMENTARE cementren at ne open efecat cl mal Heeveit t programe ote 2 ala Ua a ope emp uaa ste ree alae Ya vara wariebila + 1; eae omoce operate de incementare sun. it de ecvent, inal C ofet 0 nate Decree opr, ren vail din poe, Seria ear de ee pesca pe ten lovee opertoe deincrentare pea a Tamer variable oray LUnnatorul program, 0.la_100., uilizeazi operatorul de incrementare pent & Up valorie de la Ola 100: Prawete oyun De C_ 83 Haneiude : t void main void) 2 pe (i “int val = 0; while (val <= 100) ¢ ‘ printe("sd\n", val); si vats a ) Lnbajul ¢ prevede dou forme peru operator de inrementare: forma peg forma ‘pasf, Ambele instrucjuni care trmeaz’ incrementeaz’ variabila fotal ca 1 Dbotales 4 “Htotal; Prima instuiune folosete opertorul de incromentare posi, iat a dova instaciune, person de incromertare prefix. Nu trbule st confundah cei dt operat, decarecs lbsjl Ci rtened in nod diet, Atm cn wiles: operstonsl de inerementare post, Imbel va utiliza matin valoarea variables apo va efecua operaia de incrementare incella car, cindwilzaj operator de icrementare pret, mba Gva Increment ma intl valoaea variable! apot va liz vanabl, Pent ntelege mai bine diferent dntre operatorl de incremeniae preix 9 cel posts, cbservai alent Uemator program, repost, cae vilizeara aml operator ‘Winlude Dyed main(void) ee ey int val = 1; Printé("Utilizarea postfix 4d\n", val++) ; Printé("Valoarea dupa increnentare 44\n", val); ivabin Ly oN ee prints ("Ucilizarea prefix td\n", t+val); Printé("Valoarea dupa incrementare 4d\n", val); lati si executati programul pre post. pe ecranul dumnevoastrl va fish urmatoarea iesie Utitizarea postfix 1 Valoarea dupa incrementare 2 Utilizarea prefix 2 Valoarea dupa incromentare 2 Dupl cum vedet, cin se utlizeazt operator poss, limbajul C uilzeazd mai tnt ‘alarea variable, tlgindvaloarea 1, apolinerementesi vanabila, objinné 2, Aton cin Usizateperatora profi, linbajl C icrementeaaX mai init vacabla, obindnd 2, apok sByeazhvaloarea inerementat ej. 94 Torun Despre C/C++ 86 Opcratorut DE DECREMENTARE Gen ‘Aga cumn de multe rivet dorsi incremental valoaea unel variable, la el de frecvent vet Gait sd decrementati cu 1 valoarea curenti a unei variable, e& sal jos: (Wana varieniial eoarece operaile de decrementare sunt atat de frecvente, mbajel C oferd o note preset pentru acest opera, demuitdaperator de decrementare, Urmitoares fSt\c- fone folosete operatorl Ge decrementare pentnt a scidea 1 dia valoarea variable: Prumete Noprunt DE C85 Dip cm ved, cnt se wane pet poss ai 6 eh lin cs ta naw po lin an lla operator rei, imbafl C decrementeazA ma inl varabla, obndnd 0, apoi afiseaza valoarea decrementata deja. a ee ee OPeRATIA SAU PE BIT! Pe maur ce complensteaprogramelor d a lor dumnesvoase va cree vei observa cl put ‘nil peformaniele nol program su seduce consul de memos ulzand epee {eb Opel pest operat arse apt una mal mob dma vere fot cette sno vac cub ue eo avant otra (pe (1) al linbahik €. Opersiorl SaU pe bt esaminesa heared do valor S obine o aula valor cx rezlat De exemp presen ei do varie tao 3 4 al cor ba sunt respowt 0000001 Toate vieate 7, yam adtam malas poms SAU Bebe ca 91 in cazul operatorulvi de ineremeniare, limbajul © prevede dowd forme ents Spetatorul de decfementar: forma prefs forma posix, Ambe instruction care urteaek ddecrementeaza variabila total cu 1: oe 3 o0g00022, ‘ 4 0000100 ions > - Prima instruitune foloseste operator de decrementare prsiix, iar a doua folosese 0000111, ar elds decreetare pref. Nu webuie si confunda cei dot operstos, deoaree See i watered tn mod died. Atuneicind vilizss operator de decrementae ree aaj C va ullea ma ini valorea variable! si apoi va festa opeala de ‘Gecrementare. in al doilea caz, cand utilizayi operatorul de decrementare prefix, limbajul C dere ee atin valonrea variable apo va vilza vara, Pen a inelege ma Tine Gtfeene dine operator de decrementare prefix gi cel postfix, studi urmatord, program, post pre, ce vtlizeazd abil operator SS HERETO Se In valoarea 3, bipli 0 si 1 ik k i i bil 09.1 valores um ro cela bi au valoarea eo, val binul 2 are valoarea Unu, iar ceilalji, zero, Rezultatul aplicirii col va sek a ea, al spliloperailSaU pe bia avea lores unde cae dat cd apare unt nt-na de cele Coos vlen al nace Gi relat ate aloare in pnt bil, 19.2, Union prewar ‘modul de utilizare a operatorului SAU pe biti: eae “Lasse sa\nry 2.12) aiasea nator, 1 12) Peinte('dze | 127 este sd\n", 120 | an; Adizarea prefix $a\n ‘Atuncl cdnd compilayi $. executati programul bit sau. aes Geiee supa decreneatare ©a\9" plat $ executai programul bit sau.c, pe ecranul monitors dumnea- Yeasirl se va ais oval): ‘Atunel cand compila st executati programal post pre.c, pe ecranul dumnevoastl afiga urmatorul rezultat Utilizarea postfix 1 Valoarea dupa decrenentare 0 Utilizarea prefix 0 Valoarea dupa decrenentare 0 86 Toru pespre C/C++ Pruaete Nopiun DEC _ BT x 88 Opcraziasiresiq! ; x Rezulat yu cum am mai pus tn secunea 87, ve vedes ck putin performaniele nul prosram Fg ° ° Ae a area Gonsumul’de merore uilizind operat pe bit. Operajile pe bit sont 1 se eee pled uma sav mal multor bi nwo valore. Atuoe cind webuie FP 0 i aaa cee bic bi, pte foes avantjeleoperatondu [pe bial inbajulus © 1 : : {(@), Operatocal $e bi examinea2i fiecare bit din doua valor gi obtine o a weia valoare ca fezulter, De exemplu, s8 presupunem ch dow variabile au valorile 5 417, ai crot bit sunt fespectiv 00000101 4100000111. Operatonal fpe bifireturnea2a valoarea 5, aya cum se vede smal joss Tabetut 89 Bitul rezultat prin operajia SAU exchustv pe bift. 8% prespunem ck do varie au valor 57, coo a varie au vali 57, al eltor bi sunt outottt Opera a0 exclu pe bi ened valor aga csc voce ool 5 90000101, 5 oo00201, 7 ooo00111 7 oooo331 5 00000201 2 00000010 Unmatonul program, bit.saux.g, iustreax3 utlizates operatorului SAU exclusiv pe bip Winctude ‘Daci ambii biti din cei dof rermeni au valoarea 1, atunci aplicarea operatorulu $1 pe bift va puibul valoarea 1 bitull corespunedtor al rezultatului. Dack cel puyin unul dintte cei dol ail values 1D evespncor al eh Oo a vacaen © bad fp pllRetes : Ca a ee Tea cues naai me ed [| Yd main wos 5 ey cccepuniton arena In mito popem Bis Peet ae rez va eine operant pe SUE ue ae eS ai Gaicr ear RRSP OTe n Printe(\0 +1 este #d\n", 02); ‘i Hepside aealeite : Sen pe male. MSU eee : : Bopanna sac ee ee a £0); Bans Nai 2828 dee ay Ns ‘ : ee eu! : Ac cong sees gama sauce _ printf("1 & 2 este ’d\n", 1 @ 2); afisa urmiitorul rezultat: : 127 este td\n", 15/6 12717 0+ 0 este o O* 1 ester 1+ 1 este o 1* 2 este 3 15 9127 este 132 cp, print£("15 Ve ‘Avunci cand compilay yi executayi prograrmul bf s.¢, pe eeranul monitonutui dumneavoesti Se va afisa urmvitorul reaulta Oreraqia DE COMPLEMENTARE PE BITI Dep a ns, ope pe sant ope csp usa a me | ool nd weboe oman vlc Best, pel peat _ escenario cnptnenerpnin) slime Opes copia iin nro es Gp “opener pe il ates ira om veel Yaonea wn celor care comin zero, De exemplh, si presapunem cio valabls le tree var 5 Ops eomonennepe ia aa, pcm oh 350013 Ho 22ic0d0 89 Openagia sau Exclusiv PE BIT! e Dupii cum aiinvijat deja, operate pe bi suns opera care se apc uruia sat mai mul biffdinuo valoare. Atund cind tebule si manipulaio valoare bit cu bit, pot aparea sit ncare tebuie si apelati la avantajele operarorulul SAU exclusive bist (*), care analizet bigi'a dowd valod si stabilese bij rezultarolui conform tabelet de adevar prezentae tabelul 89. 98 _Torur pespre C/C++ Primete NOTIUNI DEC 89 Dupa cum vedef, bit care contineau unu in valoarea iniiald devin zero, iar cei care ccontineau 2er0 devin unt in valoazea rezultatA. Urmitoral program, bit inv.c, dustreaz ‘modul de utilizare a operatorului complementare pe bi ees Hey 2 Peng male seman colo oe mtn : ced Pa len xaete mons oi ae Sa et eg i re a a valoarea este mai mici decit 60, instructiunea atribuie vasi eoeel o , inswuctiunea atribuie variabilel calficatio valosrea R, “Atunci cind compilai si executati programul bit_énv.c, pe ectanul dumneavoast’ se va afia ‘urmitoarea lesire: EF complementat este FFOO > Inseucunea ete smd umatoareninstucane fale Heguneeay S83) peter, line " Unnitoareainstrucune printf aigeazt tests! puncajul: B= ‘Punctaj td /Rezuitat’¥s\n" 91 = Apticarea unor operat VALORILOR DE VARIABILE rune cn efecsuy opera arimetceintr-un progam, ve} vedea ch adesea abu une ‘ufabve serukanl une expres eave include valowea cireath a varablet respective, aja {um se ponte vedea in instructive urmitoae: ul un rezultat conditional unet cadeul programulu, Operarorut sizeor AL umBAsuLul C (Corer) Ging propramal deciar8o vriabli,compiatorl de C lock memorie pen stocara Valo Tatabll, Gnd sere! programe care execu opera de intrareesire cu fete sa alock tmemorie pent liste daamic, vei gsi convenabil i afta canttatea de memrie alocatt _é program pentns o snumiti variabild. Operatorul C sizeof retumeazi numarul de bit i unel variablle sau unui tip, Uri i tool un! arab t tip, Urmitoral program, sizeofic, exemplifich folosirea une end fos oferatorul condional condijonal penta aati ‘labile, pute reduce url insncunor ete ain Pena eazule In cate opera de atrbulre acialzea2S o varlabill eu sezulatl une pera asupra valor curencea variable, imbajl C dpune de o nota prescurtali penty a ret opera Pe sco se plaeati operat ih fia person de abue ‘Ubpatoaele lesrucfunl sont echivalente cu cele rel de mai sus Dupi cum vei invita, instruciunea ‘false din C examineazi o condive gi executa un set de ‘operat dach este adeviratl lun alt set de operati daci este fals. In mod similar, mba ne la dispoziie operatoral condivonal, care examineaza o condiie gi returneazi o valoare acd este adevizath gala dacl este falsi,Formarul operatonulul condijional este urmitoru! he 90 Torun Despre C/C* Prustene NopUN DEC 91 ‘illzt g de sistrmul hardware, esrea cezital la execunared fn fonce de compilatorl “Pea —= printe(*sulljunsigned) depiasst ia dzeapta de 2 ori este! ¢u\n" nee como fara: Dac fol eomplaconl Turbo Co Le, wa Naa ea ‘wuval, w yal > 2); aE aero Varisbila de tip int foloseste 2 octet! peeaee (Ad stupa) ‘aeplnant. Un’ ctenen te Zor! sete SE / VarHIPHit do, ip Eloat foleseste 4 octets watcval S624 5 ai ee! Vaiabile de tip double foloseste 8 octet! printé("Ad (otgned) deplasat 1a dreapta de 2 ori este s4\n", Varidbila de tip unsigned foloseste 2 octeti gee vals val >>\2) 7 eS z saa Variabila de tip long folose c:\> Q4 — Execuranea DePLASARiI PE BIT! wes Cana lucrai ca valor la vel de bit, vei enecuta de bce! deplaset pe bil Bs a Onno can a nal senna i, fe Ia singe (Spr ce sal semnity Ws) Pore (ana Staten depastior pb, bal C oft dot operator de nls PoP Ba a plooera i rcapia >) ul care depasea bil an) Un operate a june flosesteoperatorl de deplasrela stings pentru a depass valerie wasabllel flag doud pou spre s ExecuTanea UNE! ROTATI PE BIT! inezcune 94 a nvjat um sil operat Cd de a iy Cin hc pre ede sgh ¢ roduc vrou fh il ee the pec incapacity cep dee Techn naman ct cin nae lope ne si doriti pur si simplu 58 rotiyi biji in loc si deplasati la stinga sau la dreapta. Ci: ra Sinica tsa aa oa a put seen tp ee capnaes a ponte spe sang Choa isp dept, el a flag = flag << 27 Spee ie a pre sings, compllatrulC serie zeus in poi bia eeu ma ca baie. In scm, cand pls vase spre dren yslouren Fs OS Ct Buti er patel ma somalia depind de pul varblel Dac as on ee 1 et plae la rept. nd, ack vara este dep signed ae cone opera ea variablt unsigned, © floss valoarea 1 dack valonrea ete oR) ne at declare pov Cranatonl roy, dir. utreazs mel de willed Sratitor de deplasaze la dreapta gia stanga pe bit include ‘> 2)? 3 “guvall = 655357, | STIR Telete (cnsigned) deplasat 1a, stanga de 2 ori eats © Paa\nn, w yal, oval <<.2)) ind deplasativaloile 5 : Vaclabila contor speaficl numnul de rotapi pe cate le efectucaak valoarea. Urriton program, roi, iluswez2% utlizarea functor rots rom (isdiade , ; void main (void) | ve unsigned val = 1) prince tau rotit Ln dreapta,o data eate tala", v _eotr(val, 1))7 Se weleds Pringe(*tu rotit la dreapea de doua ort Peeves 20) val = 655347 PEinig(vsu Cott la stange de_doua ort este #u\n roti (val, 2))i sy fe tu\n", val, { a val, 92 Torutpespre C/C++ ‘Atunct cind compilayi si executayl programul rotitc, pe ecran se vor afiga urmitoarete 1 rotit 1a dreapta o data este 32768 5 rotit 1a dreapta de doua ori este 16385 65534 rotit 1a stanga de doua ori este 65531 cp Observatie: multe compilatoare de C furnizeazs si functile_Irotl $i_Irotr, care rotesc la tanga sau la dreapta valort fniregi de tpl unsigned long. 96 — Opcraroni conpiTiONAL! ‘Toate programele prezentate pn acum in aceasti carte au inceput executia cu prima instrucfiane din matn $i apoi au continuat in ordine, cu instruciunile urmatoare. Pe masuri ce programele devin mai complexe, pot apirca situa in care programul si necesite efectuarea unul anumit set de instrucjiuni dack o condipe este adevarat jar daci nu este adevarati, probabil, executarea altor instrucioni, De exemplu, sar putea ca programul ‘dunmneavoastti si necesite executarea unorinstructiuni diferte pentru flecare din zleie sip- timanil, Cand un program executi (sau nu) anumite instrucjuni in funcile de © anumita conde, se sptine c& programul realizeaz’ 0 procesare conditional. Pentru a realiza 0 pprocesare condjional, programul evaluea2i o conditie returnand un rezultat adevarat sau fals. De exemplu, conditia Asidat este lunt este oni adevarati, oft falsi. Pentru a ajuta pro- sramele si efectueze procesarea conditional, limbajul C dispune de instruciunile f sfelse 5 switch, Cateva dine capitolele care urmeazi vor analiza aceste insiruciiuni in detali, 97 — Procesarea reraTivA ‘Toate programele prezentate pint acum tn aceastl carte giau executatinstruciunile doar 0 singurl dati, Uneori, este necesar ca programele si execute sau nu un set de instrueiunt ia functie de rezultatul unei condi, Pe misuri ce programele dumneavoastri devin mai ‘complexe, pot aplrea situa in care un program si repete acelasi set de instructiuni de un lanumit nui de oft sau pani cind se indeplineste o anumita condijie. De exemplu, dack sctieti un program care caleuleaA calificatvele studenglor, programul trebuie si urmeze seclagi pegl pentru ficeare student din grup, In mod similar, dack un program afigex2% conti paral unui fists, programul va cht gl vaafig fecare line a fgierulu pana cdnd programel va ‘ntl simbolul de sfacgit de fisier. Atoncl cind programele repetd una sau mai multe ins- truetiuni pan’ cind este indepliaitl o condiie dat, se spune c& programul execu o proce- sare ierativd. O teocere @ programulus prin insructiunile care se repeti se numeste ierafie Pentru a vi ajuta s& realizafio procesare iterativa,limbajul C dispune de instruc funile or, twhilesi do-wbile. Unele capitole din aceasti carte vor analiza acesteinstructunt in deta 98 ReprezentaREA VALORILOR ADEVARAT $I FALS CCiteva dintre secilunile prezentate tn acest capitol au analizat sructurile conditionale § iterative ale limbajuluiC, care executl un set de insiructuni daca o condiie ete adevarat ji, eventual, alt set de instrucuni daci acea condijie este falsi. Cind iucraji cu structur condifionale i trative, este Imporant $4 inelegeti cum reprezint limbajul C valorie fals 9 adevarat, Limbajul C interpreteaza orice valoare diferii de 0 ca adevatat, iar valoatea 0 ca fils, De aces, urmatoarea condive va fl invotdeauna evaluati ca adevaraté Prosexe nopunrpe C_ 93 Multi programatori neexperimentai fg sciu condiile de test aga (G8 (okpesaie = RT Fv eeaN aR ‘acl cand dort tesa! duct o condi exe adevra, sce, pr mpl, expres Inst re paraes cama ys nn SHS A0eHa sop se Cind expresia este evaluati Ia 0 valoare dlferid de 0 (adevira), atunci fadevarat), atunci C execu instrucjunile care urmecza imediat dupd conditie, Cand expresia este evaluatd ca 0 fas), C ‘nu va executa instruciiunile care urmeazi imediat dupa concitie. Operatenl care hucreazd ca valor adeviat gi fls se numesc operatori booleent, Rezultatul une! expresii booleene este fntotdeauna adevirat sau fls TESTAREA UNE! CONDITI CU IF Pemasurd ce programele dumneavoastri vor deve le r ni mal complexe, ele vor efectua adesea un ‘anumit set de instructiunatunci cind o conde este adevirata si un alt sez de instnacioni ‘tunel cind acea condite este falsi. Cand programul damneavoasta trebule Si execute 0 afl de procesare concljonsla, vet! uuliza intructiunea ff Formatul acestel instuctunl este: (iE (eondi ties Soe instructiune; : condita pe ao cvaluee insist parse par 2 stadia, su fas Ane cnd coma exe areal, t's tae aaa at ece imei ip ove De ext unites nstecane eee te ‘la nave ee mse eat cr Da emia ese soe earns ecw cnr contacts pga encase rin va ona ncaa ner pra ine cre wea ed Srsochoes ears vate oe ins et ene [eee Saas Dee ore are oe es Analtine = 195; oe IsTRUCTIUNILE SIMPLE $/ CELE COMPUSE Cand programul dumnexvoastrd efectueaza o procesare concliional, uneosi se inimpli ca rogramul si execute una sat: mai multe instruciuinl daca 0 conde este adevsret eventual, alte insuetiun’ dae este fls8. De asemenea, tunel cind progratmul dumnex voasta efecrueazl o procesare teratvl, uneod el va repeta 0 singurd insrueiane, alter el 2 tepeta citeva instruct, In cadrul procesisilor iterative sat: condijionale, limbajl © consent istractnie cs find simple su compuse, O ftnciune spi exe o sng uciune, Cum ar fi aceea prin care se atribuie o valoare nel variable sau se apeleaz 94 _Torutpespre C/C++ Sancta pringf Urmatoarea insirciune ifapeleszi o instruciune simp (Prins) tune! clind condita este adevirat 4£” (conditie) " printe(‘conditia Pe de alth pare, 0 instructiune compusd este alctuitk din dova sau mai multe instruction ndluse inte acolade, Unmatorul exemplu de utlizare a instruct (feontine o instruciune 9 adevarata\n"): Seo BUEN (Cand propramul dumneavoast®i ebuie si efectueze mai multe lnstructiuni porn de la 0 Snumfei conditie sau atunci cind webuie Si repete citeva insructiunl, ve utiliza © Fnstzuciune compasi, plasind aceste Insruciuni tote acoade, 101 | Tesranea une eGauiTart pe musurl ce programele dumneavoasti vor deveni mal complexe, va apltea necestates ae eee Gas baluaten Une! varabe cao antmité conde penis a stabil ce instructs oe cor in connate. Acese decal pot 6 inplemenate cy instucinile {fst Wich Aes cum a) inva in seepunea 9, format une instruc este ‘anstructiuney — ae canada Cele mai mule instuciuni ffvor testa dack valoarea unel variable ese egal cu anus ‘Salone speeitcats De exemplu, urmatoaeainscjune estar dac vanilla varasse saloarea 21 Se vazeeel 2) ABRUEBSE UNS feb Pentru a testa o egalitte, imbajl C wilzesz8 semnul egal dublu (==), Atundi elnd troducelin program o ase de textare, uz semacl egal dubs Ceo) fe Joc de seul are suarlu (oy ne eae limbaul i utlizeazA pent operaia de atibuie, ga eum vel Gia secjunea 112, doc ilaas eperatord de ature (=) fn leul semnalul ep {bla compllatorl va considera conciva ea find corect din punt de vedere saci, dat din picate, nu va testa daca variabila are acea valoare. ‘in schimb, va atribui acea valoare varie, COlbservatie: fn func de nivel de avertizare stabi pnins compilatoral duonneavoasr, Sessa h ifea on mesa) cares senmaleserealizarea wie obeats de atrouie ileal tests condi. ‘Asa com programele dumacavoasr rebuie si testeze uneoro conde de egalat, tot at SE armed cateodaad sf testeze 0 anumil negate. Limbajl C utllzea28sibotl Prantete NoTUNT DE C95 pentru a testa o inegalitate, Usmitoarea instruetune testeaz dict vari siferiti de 21 une testeaz dict varabila varsta este if (wareta i= 21) © Anstructiune ‘amitorl program ep. inegcuilizeazd teste deegaltate (=~) si cele de Inala (+ | Hinciude ‘ a void main (void) ; int varsta 75, . 18 (varste == 21) "prints (varete utiiizatorulul este 22\n") SE (vareta {= 21) [eee trates veil daatoniler aulosee’g1\04) Sf Gnaitine == 75) Prince "Gnaltinen wtilizatoruins este 75\n! Af (Analtime != 75) ti . “printé("Inaltinea utilizatorului nu este 75\n’ ) reeneaecom ‘tunel cd compilat si executai acest program, pe monitor va apirea urmitorul rezultat: Varsta utilizatorului este 21 Inaltimea utilizatorului este 75 a> Fenin a Injelege modul de utizare 2 opertontor de egaliate side ingalta, prea. nodiend valde variable inant wares nt Excouranea reeTe.on neLaqionaLe Fe misuri ce progranele dumneavousts vor deveni mai complexe, vei ave 1 teal da ovalosrexte mal mate, ich ta mare sau eal se acd teal mid sea al vaste Pentu a aja eazy aceasta bsp come un Se operator: toma Tabs 102 pein la operator lajona sibel Operator Functie ‘Operatoral mai mare decar Operatonul mai mic decat Operatorul mat mare sau egal ex e Operatonul mat mic sau egal cx Tabelut 102 Operator relational ai imbajulut C, 96 Torur pespre C/C++ Prumeir noprunt pe C_97 Urmitoarea instructune (futlizeax’ operatorul © mai mare sau egal cu =) pentru a tests acd vatiabila varsta este mai mare decat 20: Uslizatoral are un caine sau dacd utlizatonal are un calculator, In eazuile cénd vies testa dc una dintre cele dou condi este adevirati (od daci sunt adevarate amdndoua), puteyi i folositi operatorul SAU iogic. Limbajul C reprezint’ operatonil SAU logic prin dua hare verteale (11D, asa cum se vede mai jos 4 ((utilizatorul_are_caine) || (utilizatorui_are_calculator)) ( ) / Instructiuni 103 9 Uruizarca oreratorutui siLocic Ges PENTRU TESTAREA A DOUA CONDITI sees 39 ari con suit sche piso conde ran sere al gene Sant ver deel camps ea op ty Eccl nna ernie ee ad a er cee camara cane nce a ey siti on pet gil Tags don case, com vo (Gain == /dainatien)) > nd compilatonl de ¢ intlneste o instructiune ifeare uilizeazd operatorul SAU ogic (I), eralueaza cele dous conciti de la stinga spre dreapsa, Dac examinati parantezele, veqi observa cd instniciunea ifde mal sus are forma urmatoate: Lf (conaitie) s in acest exemplu particular, este compusi de fapt din dout condi conectate cu operator SAU gi: (utidteatora! 02a caine) (i) Gtlidzatoruillaze eulater) Pentcu afi adevirat ccondiia relizaté cu operatonul SAU fogic, webule ca numai una dintre condi si fie evaluati ca adeviraté. Daci vreuna dintee ele este adeviratd (sau amindoul sunt adevirate), condifa rezultatd este evaluat ca adeviratl. Dacd ambele conditt sunt evaluate ca false, tune. condiiarezultatl este fals. Eeseapaent Gre enesese nee oe Cin mo an re palaces ok spl dnt co eh a re Mule seciuni prezentte in aceasta carte uilzeaz’ operatorul SAU iogle (I 1). De fecare kta, condyle vor fi plasate inte paranteze pentru a se asigura evaluarea exptesilor a 0 precedent’ corecti a operatorilor. rea RCRD Observatte: 53 mu confimdajioperatorul SAU logte (1) cu operaiorul SAU pe bit (1) | Operatorul SAU logte eatueaza coud express booleene (car pot avea valoarea adevintt {au fal) penira a produce un rezulat adewrat sau fate. fn sebimb, operatoralSAU pe bit, nanipuleaza bil (care au valoarea 1 sa 0). Execuranca ovenapiei Nu LoGtc OREE108) ind programut dumneavoastel ulizeaz’ insteuctiunea if pentru a executa o procesare sondiional, insiruciunea fevalueazio expreste cae va produce un rezultat adeviet sat fs In fanetie de necestale programulus dumneavoastes, pot apicea situa in cae st ait execuria unul set de instrciunicind condita este evaluat ca falsi. De exemplu, ot presupunem ci dori ca program si testeze dack uliatorlaze un cine. Dacd utzon p28 are un cline, progrumul trebuie $4 afgeze un mesaj case Hspune utzon sq fmpere un dalmajian, Dac utilizatdrul are un eine, programul nu trebule st facd ite Joonci cid dosti ca programml si execute una sau mai multe istucjun! th eazul Unel adi evaluate ca fas, veg utiliza operator NU foie pe care Cl reprezin’ folosind ‘enol exclanvs (D, Si aalizim urmatoarea inatucine if ey q in eT Pena 8 adevin con a Pee a coma ecules cli sh ae cen rt rae ie era ae fals) pentru a produce un rezultat adevarat sau. fais, in schimb, operatorul $1 pe bij, i ee 104 = Unuzarea oreraTorutui sau Loaic PENTRU TESTAREA A DOUA CONDITI E tn scunea 9, iva cum se llaezt insctines peri es cone at opram, Pe misuri ce programele dumneavoasti vor deveni mai complexe, poate cv Pecrrnulte condi. De excmplu, poste vel dori ca insrucinea if sf tsteze did if (I utilizatomul are caine) printf ("Trebuie Sa cumparati un dalmatian\n") ; 98 Torun pespre C/C++ DEcLARAREA VARIABILELOR IN CADRUL INSTRUCTIUNILOR COMPUSE In secyunea 100, ai vizut care este diferena dine insirictunile simple gi cele compuse [Asa cum aj inva, ostrucine compusd este alcula din una sau mai multe instractiuni incadrate de acolade (1). Urmvitorul exemplu de buctt wbile (care va ci linile dintun filer sie va afiga cu majuscle) conjine o instructiune compusi: Condile are contin operatoral NU lgte spun in ese ct stuncicind o contite nu este Sevan (eu alte euvinte, condita este evalua ca fal, rebuie si se execute insiruchit Tile on inseuctunileeompuse), In multe dinue seciunle prezentate fn aceast carte spar ‘condi care contin operator NU logic 106 = Armisuines nezutraruLut evaLuAR UNE! CONDIT! itera seus din aces cpl vau preset dete cond cue unt erate void main (void) ‘ va = 10 int varsta = 107 int utlizatorui are caine = 0, // 0 Af (varsta == 30) ce inte ("cain Te (iueiiizatorul_are caine) printé(*Cumpara un dalmatten\n eee een fale oe printé ("Grive: ) pentru dumneavoasira sau alt ctor vig indenarea pen av deed seama ce ese sac Side omempl ee sunt insasce compose Indenare ex pt ea ‘mai usor de injeles upd cum pute veda, indenarea face ca pimul program sie mult mai usor dei Praustene Nopmowr DE C101 Uruizarea restanu extinse A COMBINATIE! CTRL+BREAK ‘Atondicind crea programe care utlizeazi bude de tipul for, while sau do pentaa itera in ‘mediul DOS, pot apitea stuati in care va tebui sf folosij combinatia de taste CTRL*BREAK pentru a termina un pregram care a iniratint-o bucld infin. In mod prestablit, medial DOS vetifck daca fost asatd combinajia CTRLYBREAK hip fecare score pe ectan, pe dise sau la imprimamtd stu atunet cn citeste un caracter de la tastaturd. Dach prograail dumneavoastré nu execttd nil o operate de acest gen in cadrul buclei pe eare dott sto fntrerupeti, nu vey! puree utiliza comanda CTRL*BREAK pentru a termina execuia progra ‘uli, Totus, ulizand comands BREAK a mediului DOS, pute nari numavul operailos Lo sfirstul citora DOS veriick daci a aparut o intrare CTRLYBREAK. Aceaste verihears suphimentard este denumiti de programatosi testare extinsd a combinajiet CTRL*BREAK ‘Umuitoarea comand BREAK activezzi testarea extinsi a combinatiel CTRL*UREAK: c:\> BREAK ON Daci doritica medial DCS s8 activeze automat testarea extinsi a combinatiei CTRL*BREAK ‘mediat dup’ pomirea sistemului, plasati o intrare BREAK=ON in fisientl dumneavoastca ‘configs. Deoarece meciu! DOS efectueazi mai multe testti ale combinayied CTRL* BREAK. Performanjele generale ae sistemului dumneavoasiri vor descreste pujin. Tosi, cand ve Sar putea si considera cl posibiltatea de a inchela un, performanyeloe, TESTAREA VALORILOR IN VIRGULA MOBILA chews ceptole prezentats fa aceasls tot valoreavarblelo De exempla, ines E (vazeea == 21) a cjiune au folosit instruciunile ifs} wbile penta a ‘urmitoarele insiniciuni testeaz4 edteva vatiabile “// Instructiuns (if (inaltime > 173) (Uf Ansteuctiuni ind ucray eu valor in vrgld mobil, rebut sf precaut la testaea valor variable, De fsempl, umdtosrea ins sine esteaz8valoarea ue! valabile mumil imposis ems 4 (lapozit! vans 1] tnetractiunt == 0.065) ‘nsectianea 51, at invijat despre precizia valonilor in virgutd mobild si despre fapel cd un eulator rebuie si reprezintevaloaile in virguld mobil uulizénd un numa precient de big xe imposibil pentns calculatorul dumneavoastri s& seprezinte exact orice valoare In ext i reprezinte valoarea 0.065 ca lnsuuetiunil precedente, de exemplu, calculatorul poste 10649999, Prin urmare,insiuctiunea ifnu va fi niciodaté evaluati ca adevea event 0 asemenea efoate in programele dumaeaveastr, aguld mobila exacte, ci imervale acceptabile de valor, Penura a nu tebule Si tesayi valor! in ‘ca mai jos: PRIMELE NOTIUNEDE C103 102 Toru. Despre C/C++ n OUP instructiund oe idan Mh s Ls ES oa cee ace CCompilatorul de C va efectus mal ima expresia conyinutt intre paranteze, atribuind valoarea 100 variable punctaj, Apoi el va compara valoarea pe care ajiaribult-o varlabilel punctaj cx constania MAX. Dac scoateyi parantezele, ca mal jos, se va atribul o al valoare sl testul va fi iferit: 4110 Buctanea ineinirA o 4 aim a ovat, nsrucpucile for, while gt do tobe vA permits tepetat una Sau el TE ee dada conda dat In func de program dunes a programal faci o bucae Infinit, De exempl, Un propam ce ea esl dea inrun ettor cleat ar rel a ieze a comin, Peasy detects sae Gommenvonird st fepete coninuu © Duc, pur mpl pass afc fel de Ot intesiorul Duce, ca mal os: i100 il paranteze, compiltorl de Ctestesz dct valoaea 100 este egal cu constanta MAX, daca este a5 atibue valoarea 1 Gdevirad) varibllel pucta. Dac vloarea MAX exe tall ci 109, insiruciuneaatibuievaloarea 0 Cals) valabilel pct, De cle mai muke oi, ve iia testarea rerittuli une! atribui atunci cn vet dois tesa valoarea pe care o retumeaza o functie (cum ar fi fopensau getchar), ca in exemplul de mai jos: fae (pointer sister = copant‘conereisys%y =") =e Nuun) 907 t Af instructiuns ae umneavonsr 5 Tune end lla ovaloate der de O pene a oil proqgamul dumneavcet Ae eat ele pute ef consana pesira » inbunia bites aa erepe exempt, put ul eonstata FOREVER, com se vee majo aaaeiael TORE hte (FOREVER waite GQ) fee i Penta a crea o bucld pentru reaciorul nuclear din exemplul precedent, purett proceda in fel urmator UriizaREA INSTRUCTIUNILOR IF-IF-ELSE ‘Auunc cSind uilizati instructiunl ifele, o eroare logic perfidd va poate face probleme daci ‘iu tineyi seama citei insiruciuni if corespunde flecare ele, De exemplu, si considera uunnltorul fragment de cod: Gdezine TOPIRE 0 oe Puncta} test = 1007 f [emlsicatiy corent = pt) | Af (puncta}_test >= 90) (0 Af (ealificativ curent == ia) _) eprint ("Un alt a pentru un student cu « 412 Tesranca une ATRIBUII Dupi cum af inva, limba C wilizesed semnl egal et operator de arbre st semen tal dublu C=) ca test al egal, aga cu se vede in exemplul de mai js: Liicativ a\n"); panetad = if (puncta == i007 Lo printt("trebuia sa fi muncit mai mlt\n"); pee rete ees ena de de mats ps naacyne abe lores 109 ree unt Inigo eu nape ane splines Pe ota elle ised dn ran oh a opr dose ee ora ie (ipunctag "=" 100)"== aso Ap Ged : rma insteuciune ¢ftesteaza'dach punctajul la test al unui student a fost mai mare sau epal £290, Dac e aga, oa doua instrucjiune fftesteazi daci studentul are deja califcativul Ag acest ca, afigeazi un mesa), Bazindu-vd pe indentare, vai agtepta ca instruciunea elsesi-sh aliyeze mesajul daci punctajul la tes a fost mai mic decat 90. Din picate, nu acesta este rmodol in care fragmentul de cod prelucreazi condiile. Atunct end plasai o instruciune dein cadrul programolui, acest elseva fl asociat cu cea mai apropiat instrucyiune ifeare nu ae axociat un else Cu toate ¢& punciajl la tes al studentulu a fost 100, fragmentul de cod ‘emai sus ar putea alga mesajul care spune studentului ci trebuia si fi muneit mai mult, Co | ale cuvinte fragmentul executt insiructiunile de mal jos: 104 Torur pespre C/C++ ie QuReaiibeat 32190) if (calificativ curent == 'A') peice ("tn a2oa ponteu un student cu caiifieativ Xo"): else : printe(Trebuia sa fi muncit mai mult\n"); Peni a evita asociarea insruciiunil eke cu 0 instrucilune if nepouivit, plasayt a doua instrucjiune ifintre acolade, formdnd o instrucjiune compusd, aga cum se vede mai jos: ie (punctadltet 5 90) ‘ Ae (calificativ_corent == 'A') prints (Un ale K pentru un student cu calificativ A\n"); Pe alse prince ("trebuia £4 muncit mai muit\n") ; 114 © Erectuarca unon instruction! DE UN ANUMIT NUMAR DE ORI Una diate operaile pe care programele dumneavoasci te vor efectua freevent exe Re es unset de iesrucpuni de un anu und de of, De exemplo, poate cl ve dos Sialooag! punciaj la test pentny 30 de student sf determina care sunt cele mal mais ‘ele mai tie valod inion set de 100 de cota a bus sau chiar si pune calculator Gini de wei or un sunet. Pent a ajuta programele dumneavoasri si repete una sau mal fhulte instrugjuni de un anumit numar de of, limbajul C prevede ofert intrutiunea for Sintaxa instuciunis for este urmitoarea: Hoxi(iloaze start Genditle Tnstructon ‘Atunci cind programul repeti (cclea23) instrucyiuni de un anumit numis de oF, vet Flos, Gc obleei o varablla donunith sartabil de conuvol, care indicd de cite or ti efectuat aceste insiricluni Insttuctiunea forcontine patru sectuni, Seeyunea valoare.startatribuie varia fei de contol © valoare inifial, care, de cele mai multe of, este 0 sau 1. Sectiunea Condiie. farsit testeaz’, de obicei, valoacea variabilei de control pentru a stabil dact programul a execurat instritiunile de atdtea ori cit s-a dort, Secyunea valoare_ increment Edauga, de obicei, valoarea 1 la vaslabila de control de ficcare dati cind se executi Enstructioile. In sfigit, a patra secjlune a insiucilunilforeste reprezentath de instractiunea sau Instefiunile pe care don sf le repetat, Deoarece programul dumneavoastra efect- fazi in mod repeat instruclunes sau instruciunile specificate (Ge tntoarce Ia inceputul instrucfinid, iastructiunea for este de multe ori denomitd bueld for. SA luim de exempta Uurmitoarea instrucgne for, cave va afiga pe ecran numerele de la Ia 10: Ly contor <= 10; contor++) d\n", contor) ; for (contor “print? ( Inexemplul precedent, color ese varabla de contol «bude. Mal inl, instuciune fr Hiule valores I aces! variable, dupa cite testeaatimediat dact valoarea variable ontor ate mal ich sa egal ca 10 (conic frst abucle). Dac vaiablacontoraeo Pewee nopiunt De C108 alate ma mie su jal 10, bul forva fea inediat umdoarea insti, xe, in exempll dat, este printf Dupt ce prorat a efctattnrdcunes Drink bala Jor executd expresia specificati in sectiunea valoare increment, in cazul de fata, bucla for inrementene value valet conor cb pa bea Joe wsedt cone Sire Dal valouenvatablel conor cae val ct nu Gpi.cs 1, ook eeeaee ee “Geos ian es oases alae valet contr ete apo a al depane:Dupl ce priate esos 10, secnes salar eronen erexe vloues amor edo 1h oe bene fo tfetena ese eeiil de tea va obsens ch vlere varie comer ae fc alka eg ct 10 panel bac va i propancl seem eg thu prelurre ney cu pina islne er ect dupd bes Pentru a injelege mal bine structura buclel for, s& consider urmitonal program, fast fore: include <étdio A> void main (void! t : Ant contor; for (contor = 1; contor <= 5; contor++) printe ("8d ", contor); Printé("\nIncepe a dova bucla\n"); for (contor = 1; contor <= 10; contor++) printe("’d ", contor); PEint£("\nincepe a treia bucla\n" for (contor = 100; contor <= 5; contort+) Printé("td ", contor); Day Acad emo eco ee prog, eel dna er a tases PST ses ES Ingepe's'teela becls a Dupi cn pute ve, pis bul frase nme de I 5. dua bu for tijeucl mines de nl 10 Atl orale lo veo. Deckert tole wo eden ch oa sint leprae OO vena sonsl te Gnd Insc fortesteandvalote, tu va tad ineua con de del bucla nu se va executs. Ha de ss a ‘Toute exemplele prezentate in aceastisecjiune au utizato singurd instructiune in bucla for Daci tebuie si repetaj mai multe instrucluni, plasaiinstrcjiunile ince acolade, formand o Instructiune compusd, ca mai jos Stor (i = 4; 2 0; is4) fet J/ Xnstructiuns }