Sei sulla pagina 1di 346
Haaver M, Derr, Paut J, Dare. C++ Fondamenti di programmazione APGEO cH Fondamenti di programmazione Titolo originale: C++ How co Progeam, Third Edition Avror: Harvey M, Deitel, Paul J. Deitel Published br aetangement ih theongyaal publishes, PRENTICE HALL, INC, 1 Pearson Eaueaton Compan Coprein® 2001-PRENTICE HALL, INC. Copyahe peredinone walsna © 2001~APOGEO sx Vise Papiniano 38 20125 Milano cel) Teofonos 02461920 (Slineeea) ~Fasc024815382 Ema eduoation@apogeonline..com URL www. apogeoniine,com ISBN 0-7303-670.8, ‘Traduzione di Angeio Magiioeco Impaginazione diMauniio Pieweet Rensione diLucaDiGaspero Reallzzazione edivonale di Spock s.a.s. di Augusto Vieo € Editor: Alberto Kester Thales Coperuinae progetto grafico: Enno Mareandal Responsabile dr proaazione: Viaano Zasns Ilstrazione in coperana: © SIS/Obtinsts “Tut iis sono nsecese a noma dlegge €3 nots dele convenaioniinternazionab, Nessuna parce dius fibro peo esseertorodota con ssterteleronie, meteACl alin searaawtarnassioe sens del Editors [Nome machi ca nel eto sono generalments depos 0 regs dale aspeave case produ Sommario PrerAzione Le scopo di queso libro Le seniont "Pensare um termi di ogg tico-ROM - La mtodeloga msgs on mae Uappendinene aervens i cola cocoons es teen a Word Wie a —- Meade © gi cng cn - Le prganimaone ovens ai ogee z Ete mag oe ane eagle superna eI eran di sueahanone = Everett Indice analineo = = Paneramuca del libeo — sw Capo. |: INTROGUZIONE: | COMPUTER, LA PROGRAMMAZIONE E C4 1. neraduaione ‘ 12 Che eoeé un compucer 3 13 La seutturs del computer 4 LA Leevolurione dev stem operat 5 SU pertonal compuce, + sem dsiburn e + stem cienlseree 6 LG J inguagas macchina, assembly ea alto livello — 6 17 WCeih Cos: un pod stom rnenn . 8 13 La libeena standard del Cr cae 9 19 Java, Inemnere il World Wide Web. 10 110. Ale finguagg ad alo velo 10 CH La progammanone suraais 112. Gh domen fondsmena di wn pce nbene Gon 113 Alun condom gnc su Cos fl aoa crt Cid Un progamma temple wala tna lines dso U15 Unto semphice progam dione de ourer tea N16 La'memons: cone ondamen : oo C7 Teal ms {a Pendere deco: gi opeaton rion ed pagina 113 Cermove onvemson per fe di musrmone eg pm de som 1120 enste meer d ogee rcnche onewate 8 ogee ¢ UML (Unified Modeling Language™) css 3 Intcodunone all aaline lla progeceanione orientate agli oggets (OAD) 36 Srona fh UML oe 37 (Che cos? UML? — 38 Ww Sosseaue serem di sucovalusmone 3 Risposce agi sec di aurovalueatione 40 Esercat Cavrrovo 2: Le srRuTTURe oy cowrmatce Tredunione nese . ii algocem: Lo psewdocodice Le stuesuce di conttllo La serutrura di selenone i a secure di selentone ieee a serveur terra ile Tipologe degl algonems di werstione: Iitraone concolaa 47 bun cont20%8 58 29. Tipolagie degli algortns versione Tterzrone contrtlats cds un valore sentinels : 60 2.10 Tipologe di algoramt ¢ adefinione todos Te erature i contall midis 5. 7 Gil operator di assegnamento 7 TE Gil operator di meremento ¢ decrement. Concer fondimentall dei cli contcollaa da varabill conenoee mcs 73 1G serutnea di eraione for 77 seeps di costrues for 8h a strutura di slenone switch 85 a sruttura weratva defile wes 3 Le werations break ¢ concinue cssrnenn 93 Gli opericon logis 95 2.20 Un ertorenpico: canfondere Feperaore i “alin = 98 con lopetacore di astegnamento = “ 2.21 Rieplogo det conezta fondamental dlls programmazione sururata.. 100 2.22 ensure in cexmum di ogper: come sacinduate fe clas) sn un prolema {progecto opzionlel. 106 Definmione del problema . 06 nals ¢ progetazione del stem Ho T ciagramm de cat uo . a Edenifiexione delle class dun sistema 12 {diagram deft cla ' 13, | diagrams degli ogger UG sere di aurovalusznone. uz Rispoateagl exerci di aucovaluczione 19 122 Esetsth (Certo1o 3: Le FUNZION. 3. Tatadunone, . 32. Ceomponena ei un programma in Cor ee nnene:) 33 Le fanzoni maremanche dela libcena standard » 34 Le funny a a vnc, 136 Sanus 3.5 La defimone di una Funaione 3.6 { prowupt di Funzione rena 37 fle di smestam0¢e wvwsono 3.8 La generauone di numen caval 3.9 I giochi d'azardo e la parla rseevaca coun 3.10 Le nformanion di memormarione BAL Le rgole di wilt + 3.12 Teanceto di ncorsone JUS Unalvo wenp di rcoson aan Hone 3.14 Ricorsione © werazione?.. aes 345 Letom che hanno uals i pmo va 3.16 Le funzion en linea. fe 3.17 enmenn et pag @ prance pr abs Bia Gite ges 8 pene : 3.19 Lopeore una di raaanon dls ope 320. Covering dle fnnon! . 321 Le fino geen 322 Penne m mm Inept opto 1 gem se 1 ag dele ns Condrene fee duro Apa ag cen dt suvaraone et: come Wenifcare gi xeribun di una case Capote 4: Gu as 41 hatoditone 420 Gham. 43° Come dicho un aay 444 Alc eempe ai aap : 45 pasagpe dian ay 4 un Rone 46 Gir agot d orinamenes eg nay. 4.7 Wedel dime, meine e mods con gi sow 43° Le neerche mama ners linee Bi 49° Ghiaray mulimeasoral 410° Renate n tra logge come Weta le oper A ue dass pat opr gram sequse. serena sutovauccone so Rowe ag crc sutoaaaione feet ee Er al ncoone Camraco 5: Puivterogt € sTRNGHE 5.1 Introduzione - 5.2 Come st dicharano e w «niilzzana » puntaton 137 un ia 151 Bs 37 i 164 168 170 cpt vn ITB “7 179 180 82 184 5.3 Gli operator di manypolanone dev puntaton 32h etiam pe eenmento con axgoment di pe puncaore 5.5 Pavilegt di acceso passggio det parame. 5.6. Lalgortmo di ordinamento a bolle con + punearon 5.7 Lanemenca des punratan 5.8 La cormintione es quntaton © aay 5.9 Gliarra di puncacon = B10 Un programma per mescolate disrbuire eet da gioco... S11 puneaton a funtione 5.12 Jatroduzione ala manipolanone di caratren © scringhe CCaratten e stinghe: concer fondamentali Ee funzion: di ibreia per le seringhe S53 Pence imeem a ogg le colaboranon ag ogee progeco opuonalel e rare BED I éiagrammi delle collaberazion: cone BE Riepiogo : = enone BUS sore on ree rll UM Lo : vee 36 Esereut a aucovaluaione. 320 Risponte agli eserems di aurorautanione. 322 Esercit 323 Sentone specie: costure il vostro computer 327 Ulan eect sur puncacst 332 sere sulls manipolinone di stnghe 336 Schone ypeesle erent amzan aula manipeanone singh 338 Un peogesto di manipolanione di stringhe comps 341 CCarrtoto 6; Le CLASS € 'ASTRAZIONE DH DAT veone 343 6a latodunione. 38 62 Come s defiasce una seruttura 3H 63 Come si accede at member una ew vo 345 Ga Limplementaione del po di daco Time come srucura 1346 65 Limplementaione del apo di daco Time come classe vn 348 GE La wiles alivello dicate ¢ Tacceso a1 membn di una else 356 67 La separanone di inerfccia e implementan0ne 387 68. Tconteollo dell'accesto a memba di una classe 381 6.9. Le Buran di acceso e di uci... 364 G10 Cinmalianione deg oggeen di una case coseucon 367 GAL Feoteructon e gl agoment di defaun 368 621 disruron on : 37 G13. Quande sone cian contrat e dssucori : 372 Gd Ltliazo der dace delle fzion: membro 373 GIS Un sowie ercore logo: restate un siferimento 2 un dato membro prvae . : 6.6 Caeegnamenco cra gers: la copia di dfaule membro a merbro 6.17 Ancom seh concerto di software rwlizabile . 6.18 Fens mci ogc: pogammanone deh dl emaoe Iprogero opsiomalel 384 Sormuno Inplenenanons sbi tnplmenon he Inplencnnon ed meso dds Conte Earn pape ferew oe Carrovo 7: Le CLASS! SECONOA PTE 71 Ineodunione 7.2. Gli oageese le inaions merbro corane 7.3 concexo di composione: oggetn che diventano mem di ale cls 74 Le Fannin le clas frend ; 75 I puncacore tis 7.6 —Lallerione diramca dela momar ah operator new dele 7.7 Vemcmbn save di una ese 74 Due concen amporanns astanone dr dau e oculament) dee infornanon Tepe di duo aeeato ey" 1 epe di dio are “ange 1 apo di dato aso “coc 79 Le das coneanere gf tetany 310 te da proey nen 7211 Pensate vn temas di ogg: Fimplomensone del Gash dl salons Iprogeto option ee Una panorama delimplemencnone Inplementsione del ssltre Ese di sutoaluraone Rspore agi seer dl surortabone Escer! Carrots 8: Lovenononc Of6u OFRTOH 81 Incednone 82 Cowshading dag open concert ondanene 83. Reteton: 84 Ls progeanone dae Rmon pero tom memo fo funzions Fiend? re 8.5 Coveoading dep open pelilO sven 86 Toveeadng deg opton una 27 oveeading deh operon bin 88 Progenanone dela dase Aap 25. Ganweon a ap dies £10 Propetanone dell te Sing EA Coveating dg orton * ¢ = tevenenlestanione 385 386 386 39s 395 396 1485 435 36 462 vn 3 44 467 467 468 Oe 976 476 a7 “489 490 502 vn Soxnuno 8.12 Progercazione della ase Date 303 Escres di sutovalutazione 508 Risposte agli exerci 2urovaluatone 508 509 Exerc (CaPrroLo 9 LeREDTARIETA, Py 92 93 O48 95 96 Eserens Risposteagh sere di stovalucaone sere (CaerT0L0 10: Le FUNZIONI VIRTUAL EL POUMORFSMO Introdusione. Le cla bate le class deewate 1 membr: protected... I ease der punraton a una clase base m puncaton a una case deriva liza delle Funston: membro Lversding di membr della clase base in una casse dene Ereditaners di po public, protected e private. Class base direte ¢ adie Usiiazo des cosrurori e des distrawon elle clas derwate Conversone amplicia di un oggero di una classe dena im oggero della caste base vo Tt ruolo delferedianed nllingegnena del sofware» Composaione ed eredianes ———— Le celine “uses 2" e "knows 2" : Progertauone delle class: Poin, Citcle e Cvlinde. Leredicanera nulla, Pensate im eemuni di oggete: come sfratare Veredtanet nel simuletore Ai ascensoce [progeto opeionale} i autoraluaaione TO.tInetodunione 10.2 Leamp di apo ele wseraxons swe 103 Le Rintom viral 104 Le clas base aseate ¢ le cast concrete = 10.5 polimotism semen 10.6 Progecezione in libro pag eleronied. 107 Laggunea di nuove classe it binding dinamico 10.8 V dateurcon vuln. 10.9 Leveditanets di incerta © di umplementatione 1010. Cinplemenanone i paimorsmo, fon wr « binding dinamico Eseret di auovslucazone Risposte agli esercat di autovaluczione Eserei Commo. I: Gu streaes or NPUT/oUTPUT DEL C+. a 2 Inuodunone. Gli sceam Soxmiano 1 fle di mestanone dl ene . ten og cer pnp 143 Comput otto oper di merincra alo am Use gt operon di nsenmentcaaons incase Loutou dl vaabld ap char” Loup can cant put 114 Linpat da scream, r Loperore aeration dlo seam Lefinnem membre gee getine Ale fram membre ie peck paack © ge HO ype 11.5 Linpuouput aan loa dacfaaom sais oun «wae 114 Tmumpolaon i sex Lede numen mt sao sca dc het ebb 1 premone de val mols mobile: preva © seprecnon Larpiezea de camps ctw idea's Tmanpolton dein dalfuene 117 Valo di sao dela foramen 1g dso del formattmone Git sean eds e+ pan dom bowpont La guste frie argh sera 7 I empimeno de amp Bil sei Le base der numer mens: wosidec, s0ss0ee, 1shex ¢ 1s:showbase Toument 2 virgola mobile es nownione scentifce ws:scienie fe torixed 1 contollo delle leere mauseate/miauscal 1suppercase aruvanone e fs distevstione de flag di formactasone: fags, Sewosfiags e cesevosfags 11.8 Talon di stato degl eron in ano scam 119 Meollegamenco di uno stream di output uno stem di npue sere di autovalus2ion@ ones Risposte agli esreas df aucovalaenione Eserers vs Asrenoice A: RIEPLOGO DEGLI OPERATOR Arpenoice B:Linsere of casarrent ASCII APPENOICE Cl STEMI D1 NUMERAZIONE Cut Introdunione C2 Usace 1 numer oxtl ed eradecamali pet abbreware » numer bina C3 La conversions der numer otal ed esadecimall in binac C4 La conversione da binano, atle © eetdecimale in decimale C5 La converione ds decimale a binano, orale o exadecimale C6 I mumen binarnegae: fs notanione vn complemento a due 397 397 599 599 or ‘02 602 603 03 66 os 608 609 509 610 610 6i2 614 615, 615 516 6I7 619 620 2 637 ar 640 62 642 63 4a Soxunio is Eeerex di aovautnone pone sr agh cron di sorione 67 Seon “te Aovenoice Dh C++ SU INTERNET 649 Da Rione : : as D2 Two m : eo D3 FAQ (nope ale domande pi comune 650 Ba complangess a os BS Compilon : — 51 Dé Sandal Tempae Lib 52 Tura : 652 ikea 6 FAQ 62 ° ‘rae ibe wernt os Sofware 3 655 Ioice aNAUTICO Prefazione Benvenut nel mondo del C+! Queso libra e stato seruta da un padre, Harvey ML. Deel, «eda s00 glo, Paul J. Devel. I padee ha progeammato elo snsegnaco la programmazione pee 38 anni, mente il figtia ha programmaro elo insegnato la programmazione pet 18. Il padre programma e nsegna grate allesperenaa macurata: il figlio, nvece, programms ¢ tnsegna grazie a uninesauribile sera di energi. Il padre punca all ciarer2, i igi alle prestanont Il padre cerca Veleganza el blir, Figo vuole sopratcurto sults: cancre 1, Insieme hanno eereato di reaizare un ibo che sperm possateerovare utile, com- pleto ¢ divertente Lo scopo di questo libro 1 Proto Harvey M, Der ha eno cor univer inoduc alla progammano- ne pe 20 an, puntando orate a aqgrae come sa pose rapa progam brava Ben soucuran, Moln de suo aegnamenn nguaréano 1 cones fonda tal della rogrammanione, con parca en salu efeace dele rare di Concollo¢ ala funmonali. Que rgomenn vengono presen anime di gues libs esttamence nel modo incu il Profesor Dee ia sempre propor rope In bas alla nox espernta, gi udena afontana ems presenta in es cpl nal tio rod in cn sfvonan + coe di Poel. C',comungue,unimporace di- tent gl stadena sono cstremumente mocvan dal fat che manne unparaea un ing gre che poranno atlizaremmedinamente quando lescranno unt affoneran- oil monde dl aor, Tuco queso sumenanoevlmeneil lar esis me net conon- tide Gro, nonesante ca motes da pare 1 sostro obietewo ers chiar: offer un teste sul Co» descinato at cors unwersan 3 livellonerodurvo, per quegl students che non hanno alcuna esperenza nell'ambito della programmazione, pur frnendo, allo stesso tempo, la compleveza ceria e pratcaecie- sa eadizonal corst aman di C++. Con questo proposito abbiamo sento » due volun C++ Fondament: ai propammacione © Cee Teewche avenzate di progummacione nelinsieme, uniopera asst comple: sa questo lingusge® Un smportante elemento eataternzante il eta # UML (Unified Modeling Language). eno srumento di rappresenszionegraliea dev ster che utilizzamo nel'nalis comple- £3, dalh definaione alimplemencazione, di un eiso compless di progetanone onencaa agli oggett. La noses sensazione & che» rea intoduta di programmazione tascuino + proget orienta ad oggets di portars pid vat, quindi vogliame raccomandare lo seudio 4 querto exo opnionale, perché migliorers sensibilmente 'spprocc alla progewoaione degli student del primo anne, Ess, nf, sveanno Popporeuni di navigate da subio i pid di 1000 ince i codice C+ sete anaizate artemtamente da revisor aczademics ¢ professions del setrore Pastazion sacle “Pe Als fine des prim sae cap det Captolo 9 overete una stone save svn di ogee eur scope & pesenaregeadualmente I progtmone ont ae rec ritan di UML UML og lo schema piu ula per appeenate cee Fewer orenas og ogo UML tun nguagg gc comple © SZ mune ura snr volamo preeare wnt un aeensene Pe fonsoalia ce anaame sewono pee guide lecore nella sua pr expen di aeons rats per Fappum 2 progsmmaron pencpant. Lo sadio queso aoe spgte pet cera capt fino alas implementaone Ce Meee aval agro on Serene, pecché& porta unespenems di pogrammsnione Se eonclade slo con Tania del odie Cvs comple Na prima cng cpr dal tex 6 eoncetrame ula metadlog“onteonl™ oa eee eee trogammanone sure peche gh ogee he cere Sa apo pute da pomton i codic sesrrato Opnena di guest aa ee ern cuore nea eran ern ogee na rina 2 Clnrslnor ls poganmarone nena ol ope undo UME Unis Beier aemete. Que cao tan lo copa ane scent 2 ipa ire atc oactat agi geen modo ale che ippanoumpregre da suo x concer rer eee oe gh ogetllanen a pare al proto 6. Nal sesone Feared oyger dt Cape | inseducamo «cone foramen fs cen ents nl son aaoghe de Cra dal 29 atoama qs se ontando un problema rorplesn con eee i popes one sal oagert (OOD, dall'ngleze Obyeee Onienced Design) ln quest sezons analizinmo ISR Rinne n pena che spin at dade, €erminano Fa st plement gi sro ade ecsar compres che dvranne Eine apo el mereane che dovanne seo Pr sta fnoon cone aaa. ua dacorn rengono pms gene conn ala propane ote weal ogguen in Cee. Nel seeont“Pensre in termi di oggecti” dei Capra 6, 7 « 9 ca pemcranonen Gre del ase one gh egg he emo pope tee oe cpr predet, Queso proget pi comple ed ete de bro, € no pense che pe se ae comers aespernesagnifeners 4 pogetazonee mpiemenszae, Cee a eee Reamer ines anorens che sn rprendame i Peer cee Styrene topes i handle crease oumron «infos e denarason ance, che conseono d vce ae jufclusane cole de fe, Gs pose rele so sli a Fre do dovann fone rea prabledelndst Tero sequela sandatd ANSI del C+ ence presence che mse fannie eee eee ae at nal eson petden Cov. Per see norman eagle bl ingeggo vs onmene constr anal i efement del vse a into dl cacumento ANSHISO 9895: 1950, "Ameren Neco Sera eumauon Syucmetogrmmng Langege C” elf American Neon SERGE tea 1 Wes 42nd Sc, New Yr, New Yr 10036, preg. e difer di, Prerazione sn Le sezioni “Pensare in termini di oggetti" Nel Capitola 2 mniziemo la prima fate di progerstione osiencata agli oggett (OOD) dst sumularore di ascensoreidentficando leclas che lo umplementeranno, Introduciame wale UML, com eas uso, dingrammu dele caste deg oggecs e concer di associaione molteplicit, composione, ola ecollegamento Nel Ceprtole 3 dererminiamo la maggtor parte degli ariburtnecessar alle class che abbiame sndividuaco. Conanuiamo inoere a introduree UML, con t diagrarnmy di sto © delle atta, insteme con » concec di evento e anione ¢ Ia lato correlaione at suddet diageammt Nel Capualo 4 decermyniamo la maggior pate delle operazion: (comportement delle class individuae. nveducimo snoltee + diagramms di sequenza di UML ei eonceto di messaggi Inviato 2 un opBetc™ Nel Capscolo 5 dererminiamo In maggtor parte delle collaborazions (interanion ta fogged) che servana a umplemencae il tems, rappresextandole anche con 1 dingramm elle collaborzzon: UML. A fine seione abbiama ineeto una bibiografia¢ un elenco di fisose in rete su UML, che mettono a diposiione ale alee cose le speciiche di UML 1.3 € matenali come turn, FAQ, aeveal ¢ software Nel Capueolo 6 uiiasamo il disgramma delle classi UML sviluppaco nelle sxons precedents per deveminae » file di imertnione C++ che definuranna le cass. Intern smo melee il concerto di bande un ogee «ne inziamo a scudire iemplemeneatone i Coe Nel Cepuolo 7 peesentiamo il codice C++ completo del programma di mulsone, sxtea 1000 linee di eodice, «lo analiza va decal. Il codice dena diettamente dalla ‘wogetcazione UML dele eons presdent € aene conso di ace le“buone abieudin di progeimnnione”che predichiama, ta ct ullaza di dats membro e funaione statac € const. Pariamo irate dellallocazione dinamca della memona, dell composizione ¢ dellinvermone er oggets pix mezzo degli handle, ed wnfine del problema del inclusion cucolaze de file che st pud evtare gra alle dichiarznion: ancipate. [Nel Csputolo 9 enroduciame il concerto di eredizusets nel progeamma presenate ne Capucolo 7. Suggetamo anche ulterior miglioramenn al codice, ma li lasciamo sgl su cdenti come eseteo, perce possono cimencars: con gli srament di progeazione eon cut svranno familiarazato nelle sean precedent. Spenamo sinceramente che questo progecto possa esserce unspecienss di studio st molance eutle per suudena e docent. Dz parte nostra abbiamo cerca di render ince procedimento di progetsnoce il pit geaduale possibile. [noe il programma che presen- frame utiliza diver nonionchiave dlls progeammanione, ta eu le clase. gi oases, incaprulamento, la vb, la componzione e 'erediatets. Vi saremo giau per fut comment le entichee sggerunent che vortete mine llindinaao deste1@destel..com. ww Prerazione I. CD-ROM «Tati progam di aempio sono contenu nel CD-ROM allegato al vlume. Cid con- seice an dacena di prepara le lenont ali scudenu di padroneggrere il linguaggo pis Spudamence, Gli esempr poston anche scaricare dal aco wn. destel.com o dal booksveabbinato a questo libra {mi. apogeonine .cos/educatiion/booksste). Per 1 le. ZIP accor utlitzate un programma di decompressione come KZIP (neep:/ 1 wew.pk¥are.con/), che one defile doveebbe cserare 1 sorgem dt WinZip http: /) ww wanzip.com/) oP sono in grado di cent la seuteura ongnaca delle dircroy. Vesta fevenite su una directory diswata (ad es. pphip3e_esampla) 4+ IICD-ROM contiene Micros Viual Coe 6 Inraductory Editon roftware s ratta di lun sofevace che consente ap studene di medicare, compilare ed elfertuare i debug. ting de programm in Cer inl i so web wnw.deatel .com cnriene un breve tue oral su Visual Ce 6 in formaco PDF consulrabile gratteamente La metodologia di insegnamento ene unampis vedi esemps, eee ¢proget cb prendono suse eeererciom tcc affono agi sade Ipsos di rsolvere problems cea Bene come nome dla progetanone de sofware. sendo sl impocan eee nictes de programms ed enando fuse di rerminologn compl 3 favor di Sip cans diet a couce su sat colsudato sue paaforme Cov pi die. Queto ibro conc Lapprendimento attraverso il codice I ibeo presenta una grande quanta di exempr basa sul codice. Ognt argomenco viene presenato nllambito di un programma Cex complet ¢ funsionant, seguico sempre da Tine 0 pi finest ehe moscano Touspu del programma io queswone, Viene quind usato ingaggio pee msegnare i inguaggo, el ear di quest programm ofre un expen 2a moleo se alla 110 esecunone fale su di un contpute. Laccesso al World Wide Web “Taw ilcosice presente nal libro st trova anche wa Interne. ibe, allindieao nttp:/ wwe. apogeonline..cox/education/Bo0ks:tte Il nosso coe silo e quello di seariare rue il edice, eseguendo por oge singolo programa via vit the apparent teo, Porte anche modifcare i codice degli esempy e vedere cosa svecedes trnpatande co a programimareprogeammando, Tuto quexto macenale ¢ prover da diet Gtaurore, quindi ucilzacloliberamence per studiae il C-+, ma son pubblicateneaicuna pare senza lesplicito permeso ds parte degli auror:€ della cass edicnce el booksteabbinato 2 queso. Obiettivi (gn capiclo ima con la presentaniane degli Obie. Gi seudent possono cost sapere tnranucpo cid che andranno ad apprenderee, la Fine dell letura del expieoto, potranno setfieate se hanna exggianto 9 meno quest abrec Paerazione w \codice e gli esemp Le Fania del Cov vngono presenta nelfambira di programms comple ¢Fumno- ‘ana Og programma & sept dale ummagin degli ouput che vengno prods, cou che gt studenn pornne uneuar dela cones dex nau. { propmm prea ‘anno da poche line di code exemp compos da vane cena di aghe, GH aden dowebbeoserearecu lode dal sto WebMeep:\ wn, apogeenlsne.con/edueatson/ Beste, expend pa og popu van he ue prom ao La programmazione orientata agli oggetti Sin dal prima capiole cerchiamo di comprendete insime in che cos conse [a pro: grammarione onencas agli oggets, anche se Canalizziamo in manies formale soltato « partie dal Capitolo 6, Net prime cingue captli, quid, nerodweiamo fx programmszio- re procedrale, ossa aalizzamo la componente C del Ce, ma inciamo ad abituate i lecore a “pensare an west di oggecti” con lo svluppo progresvo di un exso conereo, presentato net paragtaficonclusr di ciscun caputolo. A partie dal capiolo 6 vediamo ‘quali sono le miglone apportce dal Cs» ai Ce antroduersmo la programmatione ad ‘ogget dal punto di vista Formal, Figure e immagini 11 Fibro offre un'ampa waneea di grafic, rmmagin! & output di Ne r | immagin! & output di programma, Nelle 210m dedicae alle sree di concrole, per esempo, appaiono van diagrammy di asso molto cl [Nore dinar di Nusso non vengono presents come uno strumenco di silup ‘po, ma ricorrumo 2 una breve presentzione baste su quest diagrsmm per specifica le “ingole operation: di ogni seustra di contcollo C+ Consigli e suggerimenti 1 bro ofre mole suggerment nguatdant Ia progeammzsone, per autre gli student 2 concentaf: sug aspera pie importann dello svluppo di programm. Quest consigl Seago fn acento cama on bid ree Cli ¢ mena a puns, Obieswo efcrenss, Obieaeo pera, Ingegneria del spore SEZ] Buona sbiraine [33] cone pit mporane per chi nt 2 programmare a chines, liner to dele seuom Bons abit vengono presence dl euch pt tsar AF programm cian, compre pi acmente geil PBB] Erore pico Ta i der che afonano per apa vols un a ing conte fequenament gi sca! avon Le ston Enw' je ana i studena a evitare di commectere + piit comunt. ™ . = aesazione Callaudo e mesa a punto Quest sezion: fornucono consigl cies le ari di test € debugging det pro- sgrammi Cor, anche a livllo prevendivo. Obietevo efficiensa In base ala nostra esperensa, insegnate agli students come scrvere programm: chiar © comprenibili deve costewireobieawo pi mportant di quasas: corso down, dlls deeampossione finvonale e della progrimmanione onentata ali ogget 1.3. Lastruttura del computer Telascando le diferente dspecto ea van compute possamo considera acter se come composts di se unc lhe di seguro descr: 1. Unt snp. Riceve le informazion st dan che programm) da vane serif di Ig elemette a dispossuone dalle alte unt, in mado ds cnsendne I eaborarse. Leinformanion:son0 gneralmence mmesie nex compute arate la aera ei! mouse. in faure parce de dat potranno eee mes plan diteamentesl comps oppUre ascquisendo delle mmagin eramite lo scanner Uns di oupu Ina le eoerszons elaborate alle vane perfec di ouput dere dspontialexero, Aralmence, la maggior pare delle inforeation ono vate allo schermo, tampace scare wiliazate peril conerolo di alee peciferiche. 3. Memoria. Conse dats ¢ programm, cansentendone un pido acces dale com ponent di elaboratione La sua capsid &telanvarent bass, tatandos solamente {un depose cemporaneo di det. Conten le nfermasionmmessen precedents rel wie d input ele cendediponibilimmediaramence pet ldaboraone. Conn ne anche le nformsnion gis elaborate, in modo che Posto eters convo succes Stvament sulle un &i ouput. Viene anche deca memaraprimara 4. Unt erimescodogea (ALU). Ei cuore di exlola de computer Eecua addinoms, soicazionr, moluplcaone divsion. Prevee anche dei meceansms decstonall, che ontentono al computer di confrontae due dat presend in memons (ad esempio per Geterminare ei sono ugesl oppute m0) 5. Onna conal di elaborecione (CPU). Cooedina le operations e ha compra di super sone slle ale une, Ela CPU a decdere quand le formaziom: presena nelle uni inpucdebbano eseecasfeneem memora, quando a ALU debs caborare, quando "rsulan delfdaboranone debbano esteteconvogliaa vers le unt d ouput rernoouziowe: I COMFUTER La MROGRANMIAZIONE EL Coe 6. Unuct.di meortzsciane recandaria. Anche quests unit meron 1 daca diferenes dells memoria primariae uaunita di memonzamione 3 lungo tezmune ead ale cap cits. [programme dat! che non vengono utiliza dalle sere units vengono post rrormaimente su unica di memorizzanionssecondaree, come 1 ditch, Finehe non see ha nuovamentebzog. Laczesoa queste unit & mole pis lento di quell alla memora rman, mente il costo di un unit di memorztazione secondans © molto pi basso ‘di quelle della memonsa pauman, 1.4 Levoluzione dei sistemi operativi 1 prim computer erano in grado di swolgeresolanto unielaboraione per vata (ad esempio ‘alolare le paghe des dipendene: oppure fae le prevsins del tempo) dedicandos: ntera- mente 4 questo compico, Questa forma di elabarszione ¢ anche deta elaboraione batch -mnoutene il computer esegue un solo programma ala vole ed elabora 1 dan in eggvup- ‘pamena di programm dec butch fo for. In quest sstemi prinuc gluten consegns- ‘ano le prope schede perforate, contenent: dae program, agli operator del cene di ‘sleolo che deeevano come raggruppare leeluborszions ¢ quand mandle in eecuzio ne; + tempi di elaborsnone potevana vane da un minimo di alcune ore « dvets giorm, Jn seguit furono saventac + cosiddece sistent opera, lo scopo di tendere pi agevole sno der compucer | primi stem operatin gesvana Ia succestione det compat tmmess agli ueenei le eranstiont tra un compiro¢ Valeo, In questa made st recuperava ‘tempo necessano agli operaton per mandare in esecunone | comput uno dopo lo, © i conseguenss aumento ilcaica di lavoro che + computer potevano sosente, ‘Man mano che la potenza det compucer crescea, nsulto chao che elborszione bacch monoutente non consentwa di sfruniare pienamente le lora potenti. Si penso allora che «van procest potestero conde (i unlese share) le rsoise del computer pet uclizarlo al meglio. Quer idea & conaseiuta con sl name di mulupragnmmnacione esa prevede Ielsboratone simuleanea di dives corp sulla stesso computer. Le rors ven ono condivse ca divest compin, man mano che cascuno di est ne fa achista. Net prim sete muliprogramman gi rent inserwvano ancora 1 comput can leveecie she de perforate ¢ aspecavana anche divers glory per tcenere + sue [Negliann 60 alcungrupps industri esleune Universit sperimentarono una nue caegara di stem operat, dese di ipo tmehuring (in iglese“condivisione di ter po") Il mesharing & un caso parncolae di sstema sulaprogrammaro, wn cat gluten accedono al computer atcraverso det rermmuli (disposi: upiamente compost da uno schermo ¢ una aster). In un apico sistema cimesharing possono essere ezine © anche cznanaa di went che condividono nello stesso momento le sore del computer cecal UW compurer non soddisf simultancamence euce le richest degli atenc, ma esegue una piccola parte del computo di un utente, quindi passa 2 exzguict uns picola parte del compro di un alo urence e cos vs. La veer diesecusone rartavan &almenteelevata che il compurer puo corre sulla eiehiets di un dato utente diverse vole in un secondo. Per questo mouvo 1 programs: degli went: embravo eset eseguit tute simultaneamen- te. Un vaneaggo del nmesharing consist nel fatto che la richiesa di un ucente viene seadisfie qusstsantaneaments, mache nchiedere diverse ore come aceadeva in prece- den, 6 Cano. 1.5. [personal computer, i sistemi distribuiti ei sistemi client/server Nel 1977 a Apple Compuce cose «ese pope una aot etegona di computer + bass costo: pne compte, Mente gaan dling poueere un cal ter sage ana mnrana di ppasons, da alr empure:dtemer abssan- tc cco yet ote nua cpovess Nl 158) IBM, der mondiale el Sapo deltharvare, commercals i Pesoral Comper IBM. Nei gre di poc ep iipatonal comput: cvenne onnpeemt nana nde © oransastion: govern Qua compu uct, erano del ntti angle e sera pe cu per conde rele propre nfematont con gst, dope se verat su un echina es ese trpratl ss dcher. Ben pest cia posi di caller ree tres eomprer Gf ororgnimaine eam l ne teen o ren LAN, co re loa il ehedede Shine codec tom rb: abortion di unrganzeione non epi Irae ad una poston fsa, ma otevano ever dabei una eet Su og nado dis vce tpecenc un computer dove flows un paced avr, secondo ls compe tere ipecifea di quala dione alfincesno del orpanasone Soleanco una deena di ani 1 personal computer porenc come quelli odierm poreva- no costae milion di dolla. Le macchine pi poten dell auale generation di calolaro- t1 (dette werkstarion)offono delle prestazioni veramente inctedbii, Le informanons sono ‘stadave su set celemariche ad alta veloct, dove aleuni compucer det file server conser- ‘ano le informant comune a ete accedono rane eompucer de cient spar su ute rece Tali stems di elborzione prendono appunco il nome di ster elienterer. I sute- ‘mu operat pit ulizae ogg, come UNIX, -inax ¢ Microsoft Windows offrono comu- remente quese Funzionali IC eil Ces sone divenca i linguaggs di elecione per servere applicaziom quali sscem operanv, sutems di rece sistem distribu di apo client 1.6 I linguaggi macchina, assembly ead alto livello { programmator:poiono scvere Je srunont da fre esgutre ad un compurr in vast lingusge i programmanone, Alen: lnguage sone werpreta diretamente dr compw ter an chiedono de: pas incemed di rad.zione. Allo a ate conoam cena Ailingugg di programmanone divers che, per, posono essere caalogau in re grandi exegone 1. Lingua maceina 2. Linguaggasembly 3, Linguaggy ad alo lvelo Un compucer én grade di capitesoleanc il propa lingwagp muchins, Dobbsmna considera un po" come ssa lings natura in quanto & defn drace [sua progee tasone hardware In genre ingusggs macchinaconsscono di stinghe mumenche (ches fiducono infin 3 sequen di Oe 1) che oxdinano al compurer di segue sequente dt Ireraoouzions: tcouree, 1 eRocraAMAAZiONE E1L C+ 7 coperswion elementant. Linguaggr macchina dipendono dallarchicetura del computer st ‘ut sono definite sono assolutementeileggibil agli occhs di un estere umano. Se vlete Lins prova eezovs un Fammento di un programms in linguaggio macchina che somms lo ersordinanio alla pags bate ed otene come lato della somma I pags lords +1499s00419 1200274027 Con Facerescata popolanes des computer cis eese conto che conunuace a program- rare linguaggio macchina eta unloperatione decisamence novos lena e soggerta ad cron. Anaiche scevere stunghe aumenche che 1 computer potevano cape dieramente, programaraten cominciarone a far uto di ablrevianions an Lingus inglese, sera delle fpenaioni clement. Tali abbreviations costesiono la base det linguagenuseonb. Parle lelamentefurono siluppas: des progranine di raductone deta asembler che conveeuano + programm sce in linguaggyo assembly in linguaggie machina. Guardate come appare Is sees scnone del programms del sano sn linguaggio assembly LOAD PAGABASE 0D STRAOADINARTO STORE PAGALORDA Questo codice & pit chiaro per un essere umano ma, per conto, non é di nessun sugpilicao per un computer fincke non viene tadoro nel suo linguaggio macchina. LLuciizo de: computer aumenta sensibilmente dalinvenzione det linguaggy assembly, ima in defini es: nchidevano ugualmente un gran numero di istrunions per eegute il compo pit banale. Per velocazae la programsmazione furono alors vwentst« lnguager sud aio lie, net qual una angola werstione poreva eseguite compit:comples, Programn- my i radusione dete sompilor conertano pos «programm scr el linguaggio ad alto lvello in ingusggro macchina. I inguayg) ad alto lvelloconsentwano di srvere delle vseruzion che suonsvano allies come una fase inglese ordinana e che contenevano commun! operatort matemanc. Beco fa versione del programma di slano in un spotenco Finguaggyo ad alt livalo: pagaloréa = pagaBase + Straordinario ‘Come ini inguaggs ad ale lvello sano maleo pis cial mado di exprimers i tuna persona de ingusggy assembly 0 macchina, II Ce il Coe sono ta ingusgat ad ako livello pits uiizacal gem dogg. {La compilanone di un programma ad ale livello mn linguagao macchuna pub comun- aque richiedere un discreco tempo di elaborszione. Per ovvare a questo inconvenient Furono invent» cosiddet sazerpren, in grado di exeguie diretcamence + programm! scr i linguaggo ad ata livello senea daveri pama conveetite wn linguaggro eacchiaa Anche se programm: compilat sono piu veloc di quelli ncerpretan, gi inerprew sono ‘oko sizes in ambience siluppo in eu e necesar apportare continue modifiche x1 frogramm con gli internets evra, inf, di efferuare fequentemence Voperszione di ompilanione. Una voles rggianes la versione define di un programma, per, €pozibi- le create fa sua vesone compilata per ottenemme una versione piu ecient 8 Carrow 1 1.7 UCeil C++: un po’ di storia Cree evalusione aacurale del C, i quale a sua voles dscende da due inguagg, il BCPL ‘e118. TL BCPL fa svluppato nel 1967 da Marin Richards per serweresofoware det sistem ‘pers ecompilaton. Ken Thompion modell mole caratenstiche dl suo inguageyo 8 sulla base del BCPL e ulna il B per crear le prime versions del sstema operauvo UNIX reso + Bell Laborarones nel 1970 su un computer DEC POP-7. Sia il B che i) BCPL ano linguaga che non prevedevana np di daze: ogo dato Oceupava una peal di memo= nna ela eesponsabilca di vedere un dato come numero intero © numero resle rede Cura sul progremmator, Tinguaggio C x svilupp’ dal B gene a Dennis Ritchie pris 1 Bell Laboratones, «fa umplemenrao onginaranence su un computer DEC PDP-11 nel 1972. 11 C nprende ‘mola concet wil det Be del BCPL, em pi aggunge il concerto fondamencale di ipo di dato. ILC fu noc inmualmente come lingiaggio di sviluppa del tema operauvo UNIX, ‘Ogg: Is maggior parce der sistem operas sone acre 1m C elo in C+. Net due decent alle nose salle ¢ diveneato disponibile sulla maggior parte de compucer edt indie pendence dallhardware. Con una progetszione arenta potte senivere programms: io C che passono guare prancamente su qualia: po di compucer. Alla fine degli anes 70 il C1 evoluro in quello che ora ehiamam il*C radinona le 1 "C elassco”o il °C di Kernighan © Rites” Cusliao del C su divers pt di compucer (che possamo anche chiamare patafirme Jrerdwer) ha portico purtroppe anche alla cucolanone di mole sue variant. La maggior parce diese sono simi, ma spesso anche incomparibili. Cid era visto come un problema das programmaton, che avevano bisogno di serveresofeware porttbile su parechie pte taforme, A un certo punta a avert [a necesita di una versione standard del linguaggio. Nel 1983 wade Is luce la commussione ccenicr X3]11. che Faeeva expo alla commusione amencana per gli standasd X3, con Vobietavo disable una definnione del linguaggio chiara e ndipendente dal”hardware. Lo seandaed fe approvate nel 1989: oganreziione ANSI collabor® con Ferganmanione incernatonale per gli scandard (ISO) per sandaediz rare il C in cut il mondo. Ii documento congianto per Is definione dell standard fu pubbliara nel 1990 ed # noco come ANSI/ISO 9899:1990, Potete ordinate delle capi di (questo documento direcamente dal ANSI. La seconds editone del eso di Keanighan Ritchie, det 1988, rifle quesa versione devs: ANSI C. quests # fa versone del inguagavo utlizaes ogg) in cue il monde. Obierove porebilicd 1.1 MC sate sandardiscte, ¢ ndipendence dll hardware ed&liponbile sulla maggor parce de ster, peri leapplicazion sre nC posona ere spe eegure con gualce 9 addircura nessuna modifi, su gran parte des sstems extent TL Cer, come estensione del C, & sac svluppato da Bjarne Stoustrup agli nit degli ann '80 press i Bell Laborarones C+ offe tina sented fureionaia che “abblliscano” |, e, cos pi empoctant, lo tendono un oto strumenco per Ia pragammnacione orien= tata al ogger La comunu del software sta attaversando una svolunione. Scrveresoftwate in modo veloce, correo ed economico rimane uno degli obiera pi important, spectalmente [berRopuzione: | CoMPUTER, LA pROGRANMHONEENL Cos 5 cog che La domanda di sofeware nuovo ¢ potente& an crests, Gli agge sono extenze mente component software ruilizabili, modells sul mondo reale, Gli siluppaton di sofiwate st endono conto che una progctesione madulare © orintata agli oggets pun rendere + grup di peogeammazione molto pi produtes nepetto a veech mitodi, come ba programmanione struturaa. 1 programm onieneat agli oggett sono pi semplict da leggere, da correggere e da modifiare Sono ste siluppuc divers als linguagay onentae agli oggeca, fa cur citar Small, sviluppaco preso il PARC (Palo Alto Research Cente) di Xerox. Salle un linguaggso “pure” onencao agli oggect: mn parole povere in eso esstono soleanto ogget II C+ & un linguagsto ibnido:& possibile programmare im C+ nel veechio stile C, nel auoco stile nientate agi oggect, 9 1n encambs, Nell Serone 1-9 pateremo del nuovo linguagare che si basa su © e Cov: Java, 1.8 Lalibreria standard del C+ + 1 programma in Cees compongono di eau efsmion. Powe define un numero seit ‘80 di queste component, 2 seconds delle voste eaigenze. Tateata, molt programmatcr: preferacono afidars alla ness colleone di clasts e Foneions gi existent nella ibrers andird del Ces. In fin dei cant le due cose che eccotrono per pater programmace mado effcace m Co» sono il linguaggia Cov sesso ua uso orcimale delle caste delle funzion:dellslibrera standard, Nel corto del libro avremo modo di mcoatarne un gran numero, In commercio eroverte diver tat che parlano pi diffusameoce delle Funsions i ibrena dell ANSI C (present anche ael C++). Le libsene standard delle cass son0 generalmente fornice dat prodution: del compiltore. Divers! rendicon forniseono pot Tibeene di clase specializzate per altri scopt (ad es. per application: scientifiche © pet accesso 2 bas di da RS nde mein pera de prea? con Fara bochi Enuile esr Larue vole, Daves pil nist peas geen, Qua principe cone nuslians dl oftware ed be della pregramazioe arena gh egg nggnere del oftware 1.2 LEB Preganmando m Cox ox roveree a ylizaaregenerainte le rguent component clase fanztont dele Uibrera wandard del Cos, ele «fare che tree creat vet ness 2 nfine, classe furcrons di librnce nom uardard ma anpuantnte diffe I santaggio di ereare funzions¢ class propne sa el fatto che a 3 eastamence some funzionano © #1 po esaminae il loro codive zorgente. Gli wantagg. principal sono ls ‘quanta di tempo elo sforza che occarrona per pragetce, siluppari © mantenere Fog} ers Liwiliazo a case «fanzine della breve eanard al pon di code ric di vosro pugue pub muliaare ible prowaions des oir pregraram le brea andar ti exenstone rasta eres ponend parncolareanensone all fi 10 Camrose 1 bjeron prea rized clase insions della ibrera andar al paz dicodice wre di vse pugie pudwnonencare la portable de vextr programm la librena sandardé me Jiu ture le nplementasion: del Cre 1,9 Java, Internet e il World Wide Web Nel Maggio 1995 la Sun Microsystem, uno det leader nella produtione di workstanion UNIX edi stcumenci ed application’ di rete, annunci lo svluppo di un nuovo linguaggio Ai programmaione chiamato Java, Java e fondamencalmeace simile al C ed al Crs © sncorpora careeerstiche propre di alen linguaggi erent agi oggera. La Sun fornisce sratuitamente il eompilaore edi ofowate di svluppo di Java, la documentazione.cucoral ib wnnrazofecom. Java include libeene di alum programms dimostatst sl 30 las specslizzae per applicazion mulumediali,perapplicanion: dee peril mulchreading, Ia grafcs, accent a1 database ¢ la gestione dev sistem distribu Una dele cartcensche pis important di Java & estrema portibilc:& posibile senvte un programma mn Jv su un qualungue computer esegurlo su quasi aero Computer che suppor Ja, nom ampora a quale patforma es. apparengano (Is mag- {por pare dev sure setualmense& im grado di suppocae il linguaggo}. Questa crac Soca & alco grata dagh slupparon di sofort, in specal modo da colo che fino ad fra sono sar conret 8 scrvere versions diferent der prop programma seconds del Computer sul quale sarcbbera nat esegu Cid ha eostauto, ovismente, un aowevole soreco di tempo e di denao, ed moire ha scrapes finora | produton di sofvare dal produrre programm per le prcaforme meno difuse, Oggi le appiezvom: Java posseno Stee eegute su tut le version: pi comumt di Windows eu lve paaferme imperan- ts come le diverse vane di UNIX, Apple Macintosh e IBM OS/2 1.10 Altri linguaggi ad alto livello Sone cenanasinguagg ad a vel vluppa fine ad og. ma stato poe di sn hanno conosco una gende poplar, FORTRAN (FORmula TRANG) fu sap pato dal BM ca 1954 e 1957 per appicazion sence e techs he ciedes Ser lel matemacc: comple I FORTRAN ¢ ancora wills, specimen nel am bien seen {1COBOL (Common Busnes Onend Language fa pnt cel 1959 da cosracon di computer indasne ed organs govern saunter COBOL 2 ula pene Siplmente in appteauion camnece perl ua neesaca a manipolnon een te digrandi quanti di dan, Ad oggs. piu del 50% delle application: commercial sono sean in COBOL | acl progeeao pit © meno ne ses an del cl proiszr Nas With, sopra ptt eademe, oo a pesena pa difcmence nla prosima seu Ihernoouziowte:| COMPUTER, LA PROGRNAALZIONE EIL Coe u LI Laprogrammazione strutturata Nel corso deg ann 60 il mercaro del software ha conosciuro una nosevoe crt le com reste di software venivana erase generalmente in nrarda, «cost eccedevano di gran lunga * budgerprevisti e+ prodota fini non erano totalmente afidabil. Ci st accorse, dunque, che in crezione di sofsware era uativta decuamente pil complessa di quanco st pens va. Laravira di cerca di quegl ann port alfevoluione della programmazione sraturate ‘ua approccio disciplinaco alls sencura del softwar. ceaizzta con lo scopo di rendere » programms pls chiase pis semplicr da verifcar € corrggere. {I Capi 2 illuscers» prineps della progesmestione struturss, Net Capucoli 3, 4€ 5 vedremo degl exempt di frogeamms surura, Uso det rule pi tangibili di questa ncere ft fo svluppo del linguaggio di pro- igrmmazione Paseal ad opera oli Niklaue Wirth nel 1971. I Paseal, denomnato co in fonore al materatico def XVI! secolo Blac Paral, fe expresamente progetato per ins: {gna ls progiammnone stutcurta negli ambien aceademic, « diveane rapdamente i Tinguagaie di prograneatione pit uiliazato m molte Univers, Purtroppo il Pascal non posede mole delle carttensoche necessne nelle sppicztiom commereali ed indus li, quindi nom hs conoseato una gras popolanta al di fuor: dllambiente di Riceres. Ii finguaggio Ada Fa sviluppato nel ambice di un progero finanaaco dal Diparumento ai Diess degli Sat Unie (DoD) ca a fine degli ann 70 e Vino degli anne'80. {stems 4 conrolo comple pecsent pret i DSD ean eta viluppatt m numeroe linguagst di programmatione; il DoD, pero, er alla ncerca di un solo linguaggio capace di soddisha- re cute le sue enigence. Scegliendo come base alcune caruensiche del linguaggio Pascal, susviluppe un linguaggyo chiamaco Ada che, ne fa, eslea prttost ference dal Pascal) tn onote di Lady Ada Lovelace, figia del porta Lord Byron. Lady Lovelace, agi iam del XIX seco, scrte il primo “programm” pr caleolacore conoscuto, Eas avrebbe dowuro fanzionaresu diun calcolaore meccanico progetaro da Charles Babbage ansyucal engine ‘Una earaeensies degna di noca del linguaggio Ada il supporto al eosdderto malaasking, ‘oe Pezeeunione parlla di diverse ati. Gli len inguaggt ad al livello dws com fe, compres il C ¢ il Ces, canzentono invece a1 pragrammaton di eseguie una s0'8 sect alls vole 1.12 Gli elementi fondamentali di un tipico - ambiente C++ Gili ambiene di siluppe C+» generalmente sone format da diverse component: un am= biente di svluppo de programm, il linguaggo «la librena standard del C++ (un pico ambiente di siluppo &ilstato un Figuts 11), Pama di gungereall'seeusione, un programa Cre attravern set fst (Figura 11): erstaraimodiics, preprncenig, cmpilacione, inking (collegamiente), crctmenta eee Nel sept, es riferemo nelle notte mo sempre 'accenco sulla chiareze Buona abitudine b Scrvee i wos cadice Cv + modo semplie¢drea. In inglee queea praca vie- ne denorinasa KIS Ce2p vt senple nv compliarens la viz. Non forzae le carar- teri del lnguaggio per erearecodice comple ¢ bizzare Nel testa sncluderemo diverse note di questo pe per swear ad acquisre buone abieudins di peogrammatione, che % consentano di scrivere codice chiar, lepgibile © femaplice da tantenere e da correggere. Tusto cid che possiamadarvi& qualche linea fguda, con fs prance avilupperete sez‘ il vostro ale personae di programmazione. [Endenaereme oges tanto anche acum comunt eran di progeammazione,aleum proble mu relat alle prestgion (per servere programm pis veloc che uslzzano meno mer mona), aleune questions relate alla porabilc (perché vost programe possano esere esegurt sulla maggioe pate di sscems posibili),aleune problemauiche clave allo svilup- e del software (per scevere programm ben stucura eine, alcuns problem elacvt tla veiia der programms (per indinduare e correggere gli error evencualmence presen- 8. Abbbiamo gid deto che i Ce i Ces sone linguaggy orci ¢ che 1 programm set sa quest linguaggt possono exsere esegutt su una moltitudine di scems differenti. Lt iporaabilts perd «speuo un obieme dificil da raggningre. {I documento dello standard [ANSI C contiene una lungs lista di quesuons ealauve alla porabilita Istropuziowe:rconruTen, La PRogawsinazi0Ne E1L C++ 15 Obiecsve porabilis 13 La iver de compilators Ce Cv odes ratome informatics pone une ere di pro- Bina porablis pun diventare wn obiecv dificite da raggrngere Ill fro di silzzare il CiCes non garanace a parebilc di wn prerama: sexo ocorve une forco aggruntav per superare le diffrence ra stems eta compilaron. Crediamo a queito punto di seer pretentato un excursus stonco putas completa el Cre, da) suo albon fino dello standard ANSWISO. Teneve presente peo che c sono delle sorigliczre deli argomene: avar2au in cut non ci addentreremo. Se aete bisogn0 di dleseagl cen del Ce vt aaggenamo di leggere il dacumenco che definisce lo sandad. It documento ¢repersile sul web allindirazo hetp:!/uuw cygnus..con/mise/ap) Alla Fine del testo, Vappendice D clenea divers: sit web sll ergomento, Cisono diverse caraensuche del auovo C++ non cmpatbilicon lesue wmplementrion! mena recent, pet cus potrete uovare che alcuns program di questa libro non Funziona- ro su compilcon pi dara ey ceca EA) Legeee 1 manual relate all veraone del Co ce ate wilszando,Rifrteor pena ad ex perasicwrarn di wilizzareorrenamente eal mepi le nuove eararersuche de Cen Buona abiradine £3 6 Carrote 1 1.14. Un programma semplice: visualizzare una linea di testo 1.Ce+ usiiaes una notanone che pub sembrareperlomene eurosn at non adders. Comin- ceteme a scrwvere un programma che serve una linea di esto. W progeamma e il suo fourpur slo scherme sono mostra ia Figurs 1.2 11 Fig. 1.2: ti901_02.098 2 11 Un primo progratna in c++ 3 Fineiude 5 ant maint) 6: 7" cout <« “Weicone to Gt+!\n*: e @ —reeurn @; // andiea ehe 1 prapranna @ terminate con successo wo (a | Figura 12 Programma: a walla unariga dl te Per quanto semplice, questo programma illustra molte caractenstiche imporeane dl Cr+¥. Prendiamo in considestione ogni sua linea 1n decal, 17 Fig. 1.2: #491_02.¢p8 17 Un peame progranna in c++ Quese due ines sna ence con + caste che indicano dei reso dla lines un comment. | programmatoe insenseono der comments per dacamentre» loro programm, equind! aughorsne ls legibli. {commena stand anche le penone che hon han sno il programma legge epi. commenc: non hanno lun fein fae dt eeeunone: es sna aemplicemente ignore dal compilaore, che non genes sean codice oggeno resto a ei. (2 seconds fine di commen desave semplic tment loscopo del programa. Un commento che ina eon arate 1] det cme ‘mes linen gale, perce exmuna alt fine dell fines corente.E posible ube Anche +comment nella se del C. Ques iia con carte” erminsna con */¢ puso occupare anche divert linc. Buona abitudine 4 Be Coren prapamma nae Fer mane ee dena La linea Finciute una demon ofpropreceore, coe un simando dato al preprocesre Cx Le ince che tnmano con il exact # son eaborce dl preproeore prim che il prog venga “compl, 1 ine im etme dice al peprceore dudes ne progr conten te del fie sostrean.f, che tun fed! mtn che dense gi steam dips! ourpus, Queso Ale deve exeremclso im ogm programma che invade do oupue sul thermo ol ctv in nput dlls cers isan gl seem C+ I pagramina ih lutnonuzioxe:1 coueuTen, Ls mogRauss2ione C+ 7 Figura 1.2 unvia + date in output sullo scheemo, come vedremo presto. Palereme pid difusamence in seguro dl contenuto di Sestraan.n. Atensione: lo standard del Cx» piu recente india che rostrean. e ile di inesczvone in generale devono compare senas hs st dovrebbe quindi servete semplicemence Lostrean. Per quanto c: nguarda conc rnueremo a serwere 1 file di inestarone alla veechia mantra, anche perche la maggror paree de compilacon non suppora ance il nuovo stile. Nella Seuone 1.20 riprenderemo ‘questo primo esempio per vedere come appare mvece nel auove sil Errore upc 1.2 Secdimenncatediinderilile xestrean. 3m programma che meee din mpi alls rer 1 maim our sul schermo, il eomplatore wv xegnaler un erie La tinea ant maint) fa pare di cut» progesmmm in Coe. Le parentes che seguono maan indicano che # atta cdi un bloceo del programma detto foie. I prograsimn contengono wna pir Funaion, tuna delle qual deve necessramence chiamaes main. ll programma in Figura }.2 contene solranco una furmone. esecurione di un programma in Ce sniia dalla fuszione 8840, anche se essa non ® ls prima ad appanire ae iano. La pace chiave ant 9 snista dimasn Indica che maan eesucuisce un sumero intero, Spieghetemo in segur eid che significa ‘quando studiremo le Funai, nel Capitlo 3. er ara include semplcemente Ia parola chiave 2nt prima di main net vorsi programm, La perene graft opera 4 sina il cope di ognt Buntione mente a corespondente parenen graft chines) lo teorna. La ined cout << “Waueane to Ce+)\a"; indica al computer di visulizsce sulla schermo la songs di caraters compress tra Ia «opp di dopp apc. Tata la linea, compreso cout, apertor <, la srnga *We2coRe to Geetint, el punto ¢ gol () costeuise un'anrustone. Ognt stuzione deve termunace con un punto © wegola (dero percio trmmnetore di wrrucione) Le operaaios: di input! ouput in C++ sono effeuace per mento di renin (Fusi) di caraten. In questo modo, wando viene eseguia lisrunone precedente, viene invite il Ausso di carater elcome 0 Crs ero Iggero seam di eupue standard, jot cour, nocmalmente cones alo, schermo, Pasesmo di eou pil sn deraglto nel Capreolo Loperatore << viene detto epentore di omtrimento nelle ream. Durance Vesecuasone el programma il valorea dest del operatore (det operando des) viene snseeto sell sceam di ouput earatten del operande desto vengana generalmente vsualizea esata- mente come appaiono fia le cappie di dopp1 api. Notate pero che s earaters 1 non ‘vengono wsualizaan slo schesme. La bara rvescata(\) & denominatacarattere di ecape serve per indicae der caacten special. Quando 5 sneonees una bares eovecciats in une steings di earaten, il eaeattere che segue ls barra st combina a eisa per formare wna sequen di erage, La Sequenna di eseape \n igifin nuoea liner. Come riulate erie che indica I possasone covreae sullo shermo, 31 sposta allinivo dell lines success. Elenchiamo alee seuenze di esespe ia Figura 13 18 Carrow 1 Sequenzadiescape _ Deserizione we [Nuova lines, Position il cutsore dello schermo sulla niga sue: wt Tabulazione orzoncale. Spostail cursor sulla abulstione suc ie Caractere “3 capo" Positions il euesore alin della lines corrent, senaa avanzare di una rg \a Campanello. Emece un suono (beep u Barca invera, Usilizata per visulizate if earaeee di barez pice doppia, Usilizata per visulizar il eaattere di apice doppre Figura 1.3 Aleune oman sequenze d escape a Errore pico 13 Sein omer punto wigola al teroane dl unitucione commer wn rare di sine an, Cid gif che il compilatare non reaeea nconescerenzrcione Noralente ‘eompiletore wnaizsa anche wn menagga per aucare il prgranmarre a loclizare corrggers error. Gi ero dita vo volzion dele agole dl inguagre. it bengore wc ders error di compilacone oerrvt i fase di compilasion, perche ampasono per agpunte durant la compilation. Le linea return Q; // andica che i2 progranaa & terminate con sucesso ‘1 wova al termine di ogni funzione naan. La patola chiave return costussce uno der fang mem per weed una finzone. Nel norto cto, usata al termune di main, i vale ‘0 indica che il programma & rerminato con successo. Nel Capucolo 3 parleremo pi a fondo delle furziont « charremo le cagion) per cut insente quests itrunione. Per ora sncludetela ne: vos programm: sl ometete, gu aleuns sistem, potresteavere un avver- tumenco del compiacoe La pareoces graff chiusa } indica la fine di aan, Buona abitudine 15 ‘Mali pregramnator termina la vralizatrone di wa linen ditto con laren ‘ex muown linen (\n). Cid asia che iT enrore stro automaccemente su wna neo lines del seherme, Convencion dquo genere sono wise vie srurareirniizo del safer, oo deh obieevs eave dex prope comple & Buoua abioudine 1.6 CConsuenerentrare Viner corpo dela ane dun dato numero di pact riper ale pares graff che lo delmaaena n ques modo si gina b legibil dela zion. [eraopuziowe: | comPUTER, La OGRAMAZIONEEIL C+ 19 THe) Buon abitudine 17 is ‘Decidete une convencione pr i retro da applcareewilizatela modo uniform. Porc waezare arate di tbeactneper rental et, ma pole tabula ane tughz=t on fis Norv congas ci wciliszare 3 spas per eg fcelle di Nelcone to C++! pub cisere wausliztato in divers: modi, Per esempio il programas vn Figura 1.4 utiliza piu di unistrunone con gli operator di snseramento nella steam: i nsultza del programma & comuaque tdentco a quello di Figura 1.2. Cio aecade perche ‘gn: isrunione di msecamento nello seam riprende Is visualizzazione esatamente nel punto dove strutone precedence ha termina. La prima iazione visuliza Welcoee © uno spano, mente la seconds comuncis la vsalizaatone sulla ses lines subito dopo lo span. gene il Cr+ consent a programmaton di exprmes fe wtraon i divers Una singola sirunione pud vusualezare anche malt linee di csto ses ulizzano + ‘carats di nuova lines, come ra Figura 1.5. Per ogni sequenca (m il eursore viene posto: aco al'iniio della linea sueceswvs dello schermo, Se vole Ysusizate una lines ruoes bases che poniae due sequence di eseape nuove line consecutwamente, come in Figura pout ce “to ceria: return @; 1/ andiea ene il progranss @ termanato con suecesso 11 Fig. 1.42 t1g01 06-090 2 1) Vssuatizzazsone di una sinea con pad astruzion: + Sant maan() et 7 cout << *veteone 8 9 ° welcome to c+! 4d Figura [4 Vsualizanane dluna nga vlizzando due wtronon cou donee 11) ig. 1.88 t4901_85.099 2 11 Visuatizzaziene éi pil Linee con una sola istruzzone 3 Fane.uge <.ostrean.n> 5 ane aaan() cat 7" cout <« ‘Helcone\ntoimiages!\a 8 3 return 0; I/ andes che il programma e terminate con suecesso wo Figura 15 Viualzzanione di pghe ulizrando una rola werzzone cout (continua) 20 Canro.o 1 Welcome cert Figura 1S Vauallzzanone pl nghe uillzzando una sola wirunone cout, 1.15 Unaltro semplice programma: l'addizione di due numeri interi I nostro prossimo ezempio uliaes lo steam di inpuc ean e lopertare di emastone dill siren, >>. per acevere due numer inert digas dal wente ala tasters; succesvamente iT progeamma sornma quest due valor invis il sulaco 1m ourput eamnce cout. I pro- gamma e un evempro di ousput sono illustra an Figura 1.6 11 Fig. 1.8: f1gp1_@8.cp0 1 Programa oi adéizione dinclude ant mann) ant antegert, antegere, sua; 1/' diemarazione cout << “Enter first antegeria"; // prompt ein >> antegert 11 legge un aatero out << “Enter Secona wategerin"; 1) prompt 12 gun >> antager2; 11 lage us savers 12 sum = antegert + integer2s J assegnanento oi sun 14 cout <2 "Sum as * ce gun << endl; /) vasuaiizza sum 18 16 return a} // andica che 11 progranna @ tarmemato con successo Enter first anteger: - “a Enter second integer 2 Sun 23 117 Figura} Progammediadizone comment 11 Fig. 4.6: fiat 17 progranma di a indieano il nome del file € fo scope del programms, La dices al preprocesore sineiuge include il contenuto del file di nteseanione xostraan, nel programma. Intaopuuoxe: 1cOMPUTER, LAPoGRANMAZIONE EI Cr+ 2 Come abbiamo gis dexo ognt programms initia con la funtione naz. Il corpo di ‘ques fanzione& delimraco da ura coppit di parentest graff, La linea ant antegert, anteger2, sun; {7 dichuarszzone uns dirhiarssone Le pacole antager', antegar2 sum sono noms di vari: Una ‘anabile & una locaxone aelia memons del computer dove pub esace meman2sto un ‘lore, in modo da poter etre uilzzao dal programma. La rasta dichiarzione speci cx che le vanabili sntegert, integer? e sum sono di upo ant, il che significa che queste ‘arabilicontersanno salon di wpe mere. Per intro watendiamo un numero sen2a pare decrmale come 7, -11, 0 ¢ 31.914. Tate le vanabili devono essere dichiratespecfesndo iT loro nome e il po di dae che conterranno prima di poter essere ulizate nel prograr ‘ma, Pi varbili dello sesso upo st possono indicate n una aola ou pil dchiarazro ‘Avremmo pour servere re dichiaanions pet le nose ee vatabili mals solutione che abbiame adorrato & ceramente piu concis x Buona abineding ‘Aeuna progrommatan preferacone dichiarareeacuna varie una linea doen (Quer consencrne concente di aggrungee un preclo commento dopo apn: variable che ne decry i ei Pasleremo preso dei ups di date float (per | numer eal, eloé mumen che hanno tuna parte decimate, 2 es 34, 0.0, 1.19) ohar (pet: curate alfanumenes un vara bile di po enar pub consenere un solo cararere numenco.alfanummenco 0 speciale come sor) Obierve poreabilies bod UCow conente Tuliaco di rdeniforon di quale lughesze, ma ore autem amplemenecin ie abla una hnghezea manu, Perauncurare li porabli des programs vn constee uizeare identifcator! nom pis lnghi di 31 caauer, Rl] Buona wbitudine 110 IP) Sele mms di idenfctor che hanno wn ignificato evidence crruponde a sree ede code ‘auredocumencance per comprendare co che fil programma non ? ne ‘cesar commrentalaeceztvamente, 2 Carrroto 1 Le dicharaions di vanabili postono esete poste ovunque all'interno di una Faraone. Lunes resrione & che ls dichiranone eompats prima che lt varabile sa effecwamente utlizata ne! programma, Nel programma di Figura 1.6, per esempio, avtemmo pocuso sclaate ere dichiranions dente per le we vanabili, Le dicharanone nt antegerts sarebbe powues compari immediseamente paums della Linea ean >> antegert; ba dichnatione ant anteger2: sarebbe poruta companre immediaeamence prima dels lines ean >> antegee2; la dichiranone sarebbe potuta compatre ummediaamente pens dell lines un = intogert + anteger2; Bw Buona abitudine 1.12 EE) Lecrace pre wna linen sta pra diva dihiracine ce compare ad irmione cio vende le dchiarcsons pi sbi, mglionande a leggbiit del programa 8 Buona abiudine 1.13 ‘Se prefente pore te dicarasiom allnaz del fans, separate dalle wercion con tonto pls ine enor per ndicrechiaramnte ane delle dichiarazion Finzi delle eecions eeguibils Vissrutione . cout << “Enter first anteger\n*: 17 promot ‘evaiaa sll schermo la stinga Enter first amteger (det anche litera) ¢posiiona i cursor allinrno della ngs succesiva. Questo messaggio & derco prom perché chiede alfurence di intraprendere ur zzone specifica. Posiamo leggere questa sirunione in que- ‘0 modo: cout nceve la strnga di caratten "Enter first antegerin” Eisetunone can >> integert; 1 Legge un antero utilizes Tagen seream di put ein e Vaperatore di cacione dalle eso, >>, per ncevee un valoce dalla asters, Uciizzanda loperatore di esrazionedallo stream, can neve input al Musso di mpur stndaed, che comeide normalmence con la tasers. Possiamo leggere ques wuzione in questo modo: cin aesbuisee un vlore a zntegers IyTRODUZIONE: 1 COMPUTER, La MOGRANMAZIONE EL C+ 23 Quando wene ese Tstruione il computer attende che utente mmerca un valore dda ssiegnare a untegert, Lurene digital vale e por preme il tsto [no per wate il salore al compute, Eso viene por astgnato a antegert, Tuc «eferment succes 3 anteger nel programms usilizzeranna questo valor Gli cpgers straam ean ¢ cout consencono Lineeraniane fia Vutente eit compucee. Poxche questo upo di nteanione ricorda un dialgo, esta ene anche det elaboracione Listounone cout << ‘Enter second anteger\n*; 11 prompt vwsualiea le parole Enter second integer sulloschermo, posmionando po il cursore allies della aga successes Listrutione can >> anteger2: 11 aagge on inter _nceve un valore ger a vanabile sntegerg dalfurence Uistunone di sssegnamenta sum = antegert + anceger2; —_‘1/ assegnamento di. sum calcoa [a somos delle varabili integer © anteger? e asegna il esltato alla vanabile un, acisranda penttore di anggnamento = La maggior pare de caleol: viene eletwvata nelle sstruntons di asegnamente, Gli operators = e + sono dett: operators bindrsperche agnun di ext ha duc operandi, Nel cto dll operatre + ssn ono anteger’ e anteger?, Neleaso del operarare= invece1 due operandi sono sumeil valor dell'espressione antegert + integer2 Buona abitudine 114 Pancte del spss proma e dopo un opeatore binare, Inquest mado Coperatre wars ‘pic en, milionsndo a legge del programma Lisreuone cout ce “Sun as © ce sum ce andl; // visualizee sun vamvaita Ia sernga di caraten 0 it valore aumenco dell vanabile sun, ¢ufine il manpoleore ei sream end ("end line", ovvero Fine di lines). {I manipoacore end ava Im ousput un caratcere di muons lines (cocrapondence al eater \n vsto un precedenas) c soceesivaments, snus i! baer ai onrpne Sa alum stems. inBro, Voupur s accumula llneeeno dels macchins finché non ce 18 abbastanaa perche sis il caso di visulzzalo sullo sthermo: in quest cai end Fors eutto output aceumlao ad esse viualaaao in quel momen, Notate come Meerusione precedente ivi in ouspucvalon di up divers, Loperacore Ai snsermento nell stream “se” come inviaee ourpur cascun po di dro. Ses uiliza- ro pla operator im una sola wtraione dice anche che esi sono canestenate non & necessano scivere pi linee pee Neuspat di divert val. EE possibile adinturs effete 1 clef allineena delstunione di ouput. In questo ‘ato abbiame una combinaniene delle truion: precedent del po cout << "Sue as * << anteger! + integer? ¢e endl; + not che Ia vanabile sum non & pit necetsana Caretoto 1 Subito dopo eroviamo la patent graf chiuss } che yaforma il computer dela fine dell funione main, Una earattersties iiportance del Cs & che gli ucener possono rete tps di dato personaizan (lo vedremo nel Capitola 6), Inolre possono anche “ineynare"al Co+ come {ere input e Fourpur de oro nuov np di dco eran li operator << e >> (lo ved fo quando parleemo degli opertion sovraccanchi, nel Caprcolo §) 1.16 Lamemoria: concetti fondamentali {nom di varabili come sntagert, integer? e sum cornspondono a lazion specifiche nals memoria del computer. Ogoi varabile ha un nome, un eps. wna dimensone & un olor. Nel programma successive in Figura 1.6, quando viene esegura Ustrutione ein >> antegerts i valore dignato dal! wente viene posto nellsleezione di memora del computer che i compilacore ha peedisporto per fa vanabile xntegert. Supponsamo che tence dig it valore 45, {I computer porta tale valore nella locanione di untegert, come mostra lt Figua 13. wean [os | Figura 1.7 Locanone dimemara che mostra name ell valore dl unavarabie Quando s pone un valor i una locanione di memena, es0 mpsaze il valor che v ea contenuto in precedenaa, Tale valoe vive irrmediabilmente perdu. “Ternando al nostro programms, sappontamo che quando wene eiegut istrutione ein 2> anceperzi "urene unmet il valore 72. {computer pore le valore nella locaione rela anteger2 la memoria appari come in Figura 1.8. Notate come non sia necessro che te due locations siano adiacent. antegert | 4s aneeger2 | 72 Figura 118 Locanon di mamara dopo input des valon i due vara ‘Una volta ort vlon per Antegert e sntegerd, est sono somman ei rsulrato € pose nell vanabile sum. Listruzione sum = untegert + anteger2; che effeaua addiuone distugge anche un valore:suamo parlanda del valore che 8 erovava tn precedenta nella locazione di sum. Dopo il ealclo di sum la memona appare come sn Figura 1.9. Lisruzione non modifica maleun modo antegert e znteger2. I loro valon ebpuzione: COMMUTER, LA mOGRANAZIONE EL Co sono set utilizae ma non disruc: a lereur di un valore di memorta non & un procsesa dliseutevo, rr. 4 antegers | as | I f anager? | 72 Figura 19 Lecanonsdimemora dopa un ealcae, 1,17. I calcoli aritmetici La maggior parte det programms effessa cleo arxmecic. Gli operator: anime: $000 nepilogsa 19 Figura 1.10. Noce Fuso di van siboli special divers da quel wiliasaes in algebra: Laseruco (+) indics Ir malaplicantone, mente it szmbalo percentucle (3) & operat re modulo, che desceweremo fia breve. Gli operaton di Figura 1-10 sono eu bina, toe fognuno di esi prende due operandi ‘Operazione Operatore Espressione Espressione Che aritmetico algebriea che Addinione + fet 97 Sorersione = poe od Molupliestione + bm eet Dinisione ' elyeppuesay ox1Y Medilo % + med ras Figura 1.10 Operston antrmeves Laivuione mers (con mumeratore¢ denominatore ier) rexttusce un valore inter per es, Uespeesione 7 / 4 cesanussce 1, € 17 / 5 resttysee 3. la quest cas le parc: ‘eimai ono semplicemente scartae: she, cae, un ransemento¢ nom un arevndantenta In Crs & presente anche Foperarore mada, che restquace il resto di uvopersnione i divsione wera. Possamo uelazarlo solcanco con operandi intent, Lespesuone x ® ¥ rexeuisce testo octenuro dopo la divssone dix per y. Cosi 7 % 4 cesutunce 3 ¢ 1785 resuaizce 2. Coperacore modulo hs molt st intetesanc, per esempro nel determinate s¢ tun numero & muluplo di un alto, oppuce se & paz © dspan (la vedreme in segut). B Errore pico 1d Liilizze di con operand nan inten v dara wn errore di wnt Le espressions anemenche m C++ devona essere ammete st na sola fines: ncendia- smo che, per exempio, “a divso B” deve appane come a J by in modo tle che cosann, ‘arabili¢ operon apparano cute in ines. La netzione algebrics A a 6 Crmrois « nom @,m general, acceciile anche se sana in cxcolanone degl spect pacchets softwace che eupporrina notsinr: matemaiche complese Le parentest sono uilizate in C++ allo stesso mad in cu le wsereste im unlespressione algebcia normale. Per esempio, pet molapliare @ perf quansiia b * © s1 pub scavere: aren IU Cov prende in considersione gi operators presen in unlespressone algebeca 8 un ordine precio, secondo Is preredonze di cascun operatre. Vi sano mols: pune it comune fa le usuali precedence degli operators aigbriie quelle del linguaggio Ce | Glioperaon di expressions contenuce ta parents one presi in cnstderzione per pam: potere cot utlizae le parenes per forzare'ordinedicaleoo secondo le vosreegenze. Le parentst cesticuiscono seine mason ei precedence. ln presenza di patents! = lifer nene presan considetanione per prma | esptessione nelle parents pis ner. In seguro, vengono presen consderazone le aperazion: di meliplicaione di divisione «di modulo, Se in unlespressione ce ne sono parecchie, vengono ealeolatecosi come su trovano, J snstra a desea. Queste tre operation hanno lo sesso ordine di prece- dems, 3. Perulume eovvamo leaddiaton ele sortraion. Sein uiespensone ce ne sono paecchie, vengono calcolace cos come serovano, da simstraa desta, Anche sottaisonte addi ‘yon hanne le sessoordine di precedenas, Quando diciamo che gli operator sono applicatt da siustra a destea, cosh come st teorano, «cferamo alla cosiddeta aroctanvitt degli operon. Vedeemo che aleunt ope ator avocane da desea a suns, in Figura 1-11 trovamo un aepilogo delle regoe di precedensa. Espanderemo questa tabells man mano che incontetemo alen operaton. La lise complet2& contenura in appendice A. Pastas ara considerate aleune espresson, ala luce di quanco abbiamo deco sulle tegole di precedents. Ogai exepia mostra come radurre unlespressione algebrica nella sun equivalence in Ce U primo esempo & una media armenia di 5 term: atbrerdee Aig: m= Sebecedes Cor meine beetdres 5; Le parentes sono necesane perch¢ la divinone ha precedenta pit ala del’sddinone E'Vincera quanuch (a + b + © +0 + 6) che deve essere divs per 5, Se ometcamo le parences cid che abbiamo $+ + e+ +e / 5, che algebacamente signifi unalra aebrerded 1 prossimo esempo illusta Fequazione di una rena: Algebras yo me b Con yee Ke by Non c' bisogno dele parenses, Viene prima fa moltilicntone, perce ha precedenza pi ata delf'ddnione, Inereoouzione: | COMPUTER, LA PROGRAMAUZIONE EL C++ 7 Operatore ‘Operazione Ordine di valutazione (precederza) 0 Parentes Sono valucate per prime, Se le patences: sono ular, viene valucara prima Fesptesione al la coppia di patente: pit interna Sec sono di- verse coppie di parentesi “dello sess lvelo” 108 non nufcae, sono valucae da sistca a desta. “,Loppure® — Moluplicztione Sono valuate pet seconde, Se ce ne sono dver- Divisione Ss, sono valuete da sinists 2 dese, Module + oppure Addione Sono valucne per ultme. Se ce ne sono diverse, Soctraione sono valutawe de snsra a dest, Figura (11 Lapracedenaa degh operator arimencr Hesempro seguente eonciene operation di modulo, moluplicsions, dinsone, addi- Algebra: 2 pr why Gers ptr eater xy; Bs 1 2 e 3s | numer pom sat l'strunione indicano (ordine in uit Ce+ applica gli operator, \engono prema ia moluplicaione. ssedulo ela divasone, da sistas desta (che ls loco diretone di assoettione, petché hanno precedensa pata di addiione esotazio: ne. Quest lame sono applicae in seguto,anchesse da sinuta a dest, Non cutce le parencest mulple sono nidificace: ell exempio seguente ci sono due cope di parentes dll sero ivello ar ecretisee Per comprendee anche meglio leregole di precedenas degli operator constdenam il caleolo del valore di un polinaro di secondo grado yeatx tee drae Bs 1 og 4 3 Be | numen post sore Viserutione, ndicano Tordine i. cus il C++ applica gi operator. In Crs on dispostams divetamente di un operator espnente, per cx per eaeolare i valore dx al quadeacaabbismo sentcax*x. Introdurremo un Seguin lafunaione di libres ow (potent). che effeea i caeolo della Fanzine elevamentos Potenza: per comorender- ‘a appreno, per, necessxevemo di aleunsehiarments ela 21 tips di dato, per cw nn poctemmo discuterne prima del Caprlo 3. Suppontame che le vanabil a,b,c ex sano sate omalitate a zeguena valoo b=3,6=7 ex= 5. La Figura 112 illus Fordine mt cus Sone applica gli operat ne polinomo ui secondo grado L Pec magn: chiareszs postamo anche utilizar delle parents: nllscruione di ass. ‘gnameaco, anche se non sone realmente aecessare yrarxeea titan se; 28 Carro10 1 Pa 1 yearsesearsers 2 ie {Prima Is mokiplistone si asic) Paso 2 yeweegear ses: we eliplenan iss t uae 3 earsen +5-@ meme datas Pas yesee teen S55 @) eaten naan Pa 5 yeeser es =7 tina atiem) f Pao yen (Colina open mete 72 2 igora I-12 Ordine dl valutazone lun polimomve dl secondo grado. Buona shitudine 115 Proprio come nelle exprouians arsomenche. anche in Crd poibile rivere parents: yon nectar por rendere le preston pis ciare. Qua sono dete parents ido dant. Le parte eidondants atlizaana on genere per raggrappare ie oaoepreions presen sm wna cipresuoneeese, endendoa pi legge 1.18 Prendere decisioni: gli operatori relazionali e di uguaglianza In que seione weroducamo una sempice versione del cota 3, chee consent di incaprendere shoe sulla base dll vera o sts di tna end Sea condione odie, coe true (ver), ven segura lsusone thes eevee corpo del Conrutto £f-Alcotuane, neo i condone fae (6), (uanone 000 veh ee a Le condinom delle 2 pasono exer farmate co gt ota di nec «gh soeuion reeconal repilogea in Figur 1.13. Gl operon teleronalt hanno tut 10 froso lvelo di pecedenea taco da sina dest. Anche gt operon di ug flan asoeino da nr a dete hanno lo ex velo ds precden, che «peo pid FESo gull deg operon lemon, IeTRoOUZiONE: | COMPUTER, LA MROGRAAMIAZIONE FILCoe 2 ‘Operator relavianall Exemprodi Signifiato della ‘Operator aigebn anderd elazionali edi uguaglianza del candizione condizione in ediuguagianss C++ incre H+ Operator di ugnaglansa xery xeuguileay = iy xoon = uguileay Operators elssomals 5 > x>y xemaggore diy < « xsy — xemmorediy 2 x>=y xe maggore ougualea y s X<=y Ke minors ougusleay Figura 113 Glloparazon relzzonale i uguagianza, crore di nese TN Erorenpo? [Non canfondere operaare a anagoamnenea = con quello ugualisnca == Hl prime si legge “vende i aleve di Tondo "equa a” La eonfunone ru ques de ope ‘ars rappresenta uno deh crave psd da nivnduare programa Lesempio sequence ura se serunion 2 per confrontare due numer! mest dal Furence, Se a condinione di una qualsas delle &t viene soddisfaa, ene esgus fist ruone di oucpuc di ale 34.1 programma e we esempi di output sone peesenea in Figura 14 NNorace come il programma is Figura 1.14 us operations di eseraone dalle ereeam 2 cases per linpuc der due incen. Prima vene eto un valore nella varabile AUB « pos uh alto valoce nella varabile nund. II centro delle ssrumion if muglora la leggbilis de programms. Inoltre aorate come ognt istnaione 2 un Figura 1.14 ha una sols strnione fel propeo corpo. Nel Caprtolo 2 mosteremo come costrute delle: con pit istzion: al loro interno (ineludendole ture ea un pio di parents: geffe 4) 11 Fag. 1.042 #3901_14.690 1) Ushis2ze 8h astrazzan. af, 43 operators 1 rauazionais ¢ 6h eperators @s uguagusanza Finciude <1ostreaa.0> ant aain() ‘ Figura 1-14 Udlaxo degl operaton relzional di upuagiansa (eonana) 30 Curnow 1 8 ans ust, une; ° to cout << "Enter two antegers, and I will tell youte W ce "the relationships they satusty: © V2 ean >> aunt >> mum2;/ Legge ave xater v4 af mumt == mune 1s cout mune) 24 cout ce num ce as greater tan * << nun? << endl (J EL 2s Ny pesto nuseco # maggaore deli altro 26 t { punt = nun2 | 3 cout ee muni <<” 28 greater than or equa te" 1/ iL praise 3 11 umero @ aaggrore 9 uguste all-aitro 32 ee mune << endl; 34 return 8; // Andica che il progranna @ terminato con successo Enter. wa integers. and F wilt teil you othe relationships, they, satiety! $27 0 “a ig not equal to 7 3 ig Less: than’ 7 8-44 Lele tnan or equal 20 7. “Enter! two iqtagee, "and. Twill teldyou' sue Fedaohigs tne: saat 2825, enter-two integers) and’? with tei1: you ‘the relationships-they satisfy: 77 7 as equal to 7 7 a8 Less than on equal t0:7 7 as ‘greater ‘than or equal t0.7 Figura 14 Udlezo degh operstonrelasonall dlugvagianza. INTRODUZIONE: COMPUTER, LA PROGRMAIMAZIONE EL C=¥ 3 Buona abitudine 6.16 Ingerce wn enero proma dellaeacione nel corpo dw cotatro af sa per rendela magrormnce msl che per milion: la legible pragramna & w sone per linea vm an pr Errore pico LB ‘Semenerin punt evel ito dopo le parent dra dela condizone dw commas “EF conmpore, il pic dele vole un enor lee (anche enon dieu) I punts ergo Indica ce lirrsione contenuea nella 11 3 Fmucionesuota gun, on pric, non ene eg ml ipndentemente dl face la condicione a vere omens, Ink, raion dessata ad eer i cope delle £8 a roua ae di gute dap Viner cor po della sf peru vera exepunasonpre cndipendentemente dalla dando luego ad ti nkerae comportamenta erat. [orate P'silazo degli span in Figura 1.14. Normalmence il compilatene gnora gl pause caster di quova linea e di abulsnione. Quin potetesceglere I spazicurs lL consona alla vostepreferenze per le vorre eaaion, ponendole anche sup ighe-Aeten- tuone pero a non separate gli dentfeacct im pil par. BRN Errore upico 1.9 Se merce dl span aller di wn enefcaarecommeree wn ervore di sae (per eempia se eparte 9a3n mm). Buona abieudine 18 Gna wc nga po ere sudan up ince. Sel fate see conatencio- suet punta cu andare a capo, modo possbilmenteugrifatv: per exempro porere serminare nna linea dopo una wale ui ina di slemenc sparas da virgle,09- pure dopo un operate, nel cod una lunga eiprestoneartoneica, Rienrae le nee cea proms, m modo da acorgronaelpa echo che ron la cantenuazione di ena Lo schema in Figura 1.15 undica le precedence degl operator di cut abbiamo paraco 1 questo caproo: esi sono elencan in ardine decrescente di precedenza. Con Veccenone dalfoperacore di assegnamenco, = cut gli alti assoctano da sinistea 2 desta: quind sn uunaddione come x * y +2 il calealo pracede come se fase sera (x+ y) + 2. Nel eato dell espesione x = y = Besa viene exleolat come se Fosse scruta x = (Y= 0). che come ‘vedeeme assegna prim @'sy. quind asegna il sultato di ele assegnamento (8) 3 x A questo punto avete fro conoscenna con molte earncersiche important del C++, fin cu la wsusliezzione der dae sulloschermo, Vinput da eastea, ealcoli macemacr ed tun modo per prendere decison. Nel Capitolo 2 approfondiremo quests reeniche, ncro- ‘ducendo nella seo tempo la progeanamacione :raturats, Utiizzremo anche in modo pis conmapevole le tcniche di nent. Inole, vedremo come speifeare a vatare Fordine di ‘eecunone delle wtruniont owero, come specifeare il fuse di connelle Curnto 1 32 Operator’ ‘Associativca Tipo, oO sadx parenees tas wads molapliesevo * wads sddiewo ceo seads insenimentolestetione sy stream eee wads relanonale 1. sede i uguagianza Figura 115 Precedanci« ssocawwia degh operacon discus nara (See e Se dovere serivere untespressione contenente molt operator: vi conmiene far riferimento lo schon dele precedenze. In queno modo are ncuresza ce le peraions + Ineo rll adine acu saatepesende, Se non ricordateprianenel ree dona quate operator alae ke porenton per arse Varin dele. ete “ament cme ite on nepeavnelgebrie, Riodate che laent pect operon tome quel d aneguamento(), octane da dra a us 1.19 Le nuove convenzioni per i file di intestazione e gli spazi dei nomi Que seuone & deca a progremmacon ce nendon ulizaecompiston compa Skil on lo sandard ANSU/ISO. In eo sone spect mat som per mola ed Imesaunne del Gra compro S08 trea, La mag ane des uo Be dine. ne non een pi con Teseagene sh in Figur 116 sbbiamo ese I progers Pestaras angoanamentem Figur 12 19 modo da ede eonfome el usw fxm Pers fed reatone l edo tn cm poe uta te eranesee Gt Be Imes dls ven sanded Lanes 3 tsa fs nora sina per nom de fie nestone Lalinen 5 using namespace ata; indies che soame utiliazando lo spa dey nomi sone sta pensat per aiurare 1 programmacori a siluppace nuvi compo nena sofware senza generare conflict con component gia esstenc. Uno de problems che 4 ncontea quando s svluppano libre di classi & ce » om che 3 zelgono per class Faswion: posono essere sat git sect altrove dé qualcun altro. Gli spaat der nomi sono ucilizae per maneenere nom umvees pet agar nuove componente software de nome std: wna ecente carattensnea del Cee, Gli WvTRODUZIONE:: COMPUTER, LA PROGRANIMAZIONE E IL C= 3 11s Fig. 1.18: fi90118.¢p8 11 Usare 1 fide di intestazione nei nuovo stile 2 include cLostrean> 5 using nanespace std; 6 7 ant manne) an 3 cout << “Weleome to ce+!\n" 10 std::cout << "Welcome to Cr+¥ints 12 return 0; J{ andica ene i1 progranma e° terminato con sucesso Figura 1.16 Usareifledlintestane nel nuovo ile, (Opa: file di ncestaone, secondo lo standard del Ce, utilizes uno spanio der som chiamato std per garanateche tutte le carctenseiche dels brea standard non enerino canflreo con commponena sofware svilyppat da tere par. I programmaton ran dovicb bere uclizare 6t4 per definite auove ibrene di lass. Quests isrusione indica semplice mente che 51 sanno utilizando dei components sofoware dela Fbrera standard del Cov Se dovessimo defini: una nostalibrena di classi, potremmo porte le noscre class ¢ le rosere Funzion allo span des nomi deste, per render univora aspeto alle librene di clas di cur gl alt produtoe di sofware e alla ibrera sandard del C+ ‘Una volts snclus strutione using nanespace std; possiamo uilzzaredireamente Toggeco cout per nvare: val sul tresm di ouepus standard. Ses ulizzane due opi Iibrene di class che hanno component dat noms ident pud rears un conflica di nom. Ts questo caso occorrequalificae completamente il nome ehe si vuole uelizace, unendolo coa lo spanie det nomi a cu appartene, come nellserunione sequence: std:teout << “Welcome to Cer! \a"; 1 nome di cout qualificaro complesamence& sta cout. Se vogliamo uilizaresem- pre questa forma (in venta un po’ pesinee), non abbiamo bisogno di specifcare usang anespace std; nella linea 5 del programma, Lstrunione using ci consent di far uso dell forma abbreviaca per tur + nomi dela libres standard (o di qualsas spano de: fom s vogliascegler). Discuteremo pi im detaglio degli span der nom in seguro. Noo ‘ura gli ambiena di siluppo pero supportano 2 cut ogg le nuove convennont pec file di sacestxione. Questo il mono che e ha spneo 3 uiizzare ee! ibe il vecchio sl, anne ‘quando introduciamo le nuove earacenstiche dello standard. Chisrremo comungue in ign aceasione se utlizamo 9 meno quest nuove convention. 34 Cerrov0 1 1.20 Pensare in termini di oggetti le tecniche orientate agli oggettie UML (Unified Modeling Language™) In ques setone nitame i oso percorso di studio sulle eeiche di progetnione senate of ogg, Come vedieme, ese rflecono il modo nature di pentre probe fn mae di conepuena at program per compute Nev prim: cngue capil di questo volume araineeme la metoolog convenno- sale dels prograrmantone srutuc, perch gi opgen che teero sono compos da pie cored dal porsom di progrinms srururae. Opa eprint ark um teaone tonelussnmolaa “Penge aterm i oggent” ut preseneremo in modo gradu leeecche di rogammatione ent gh spec Hl nlite, in quer cton 2 culo di pmgern ad acquste una mene nena ig onget, per goer surare tmmedirmenc le noon di programmaaione event agi ogget ee cplorcemo nel Capicolo 6. Infine introdurremo gradualmente LiML (Unified Modeling Language), i Nine guuagi sandard pera progetauone i sem UML un lingaggo gris che conten {Calle persone cotnvale nun prope Cingegnen del software sats programmaron {cos ald appresemare love proget weer una nonone comer cat {n questa sexone wicoducame gi ogget,iluandone 1 conc fondamenal serminlopa rua Nal enon ecole “Pens scrm doger” alls Hine de promm gauro oywai prederime m ewadermone dane quetton git mana fhe ngurdane quero argoment, peck cecheremo di iolee un problema di med omplesth con le ceciche di progeeatone orn ag oger (OOD. dal'ingese Objet ‘Gnened Dena). In sowaneaatalaerna un probe progetercmo un sstema pet cooheria, dentine gi epgem newsn per h sua unplemcnamont, isteme on tproaraibureconporament,¢apesienda nolrellmedo cu all og incengranne teanrocumente prec auto farsion comeamenme. Tata severm pre he tbbaceimpare a store coe nent agi oggen nel linguggio Cow. Succse ieee, nce seins “Pansre meen di ogges® de Capucli 67 © 9 dcusreme Fimpemenrione im Cer del nuema progesate ne cal precdena Lo seatio di questo problema v1 preparers ad aftonsare » progect pis complessi del mondo reale. Se siete student i vosto docente non ha satennone di includere quese sexiont optional nel vorero corso vs consgliamo di studiace per conto vasto, perche trediamo che sz un progetto ecmolantee di dimensions non tascuraili per un prinet prance, All Fine svrete una buona conoscenza di base della progecanione onentsta ag ‘ogee ¢ de linguaggio UBIL « aveete una mugliore comprensione del codice senso 1 Cr perché avrete analizzato punto per punto un programma di certe dimension sersto lnmame dunque a incrodurte un po di rermunslogi Adesso guardater ntorno: do- wunque awvolgae il vostro sguardo li vedee: agg! Petsone, animal, prance, utemobli sere, palazn, computer e quant att. Gli uomunt pensano un cermin di oggeta. Abbiame Is eapacie di atrasone che etconsente di vedere de pixel (punts luminos) su uno scher- Inernonuzicie: 1 COMPUTER, ca pROGRAMAUTIONE EN C+ 35 smo come ogget, persone, sual o cote, piutoxo che comme puntns calor. Pessame pensire in cermin di spuage anziche di gravel di abbr i forest anzché di alben di case anaiché di mactom Possiame suddivdere gli oggets in due grandi caregone: ogee animate wnimae {pri sono im, si muovono e sntaprendone szion, al Contant second: una tora sgt mane sul volo, Tuesva enetsmbi i ep i agers hanao una cosa in comune: hanno Segli astride, come la dimensione, ls form, il colore& il peso. inolire hanno tue det comporcamenc: una pala cocla, rmbalea, st gonfia ost sgonfa: un bambino pange, dor ‘me, gattona, cammina e sate le palpebre: unauromebile acceler, fena e svoles: un ctugamano astorbe 'scqus, ii essen uae mparano delle cose sugl ager studiando oro atsibuts «exten: do « comporcamens. Oggets divers possono aver atribues e comportamend) molto sim Ui, Per esempio 5: puo fare un eonfeonto cs 1 bambins e gli adule, 0 es gl ester unsant gli scimpanze. Aucomobli autocarn e patans a rtelle hanno molto us comune La programmazone 2 ogget (OOF Object Oreated Programming) modell gli og secu software sulla base del oggetu del mondo real. Esa st awale del concerto dh ast Zone elaue, per cur oggett di sina determnaca classe (per e. [a classe delle auromobil) Fhanno le stese czranerwuche. Si aval por di relazion: di ereditarer,isingola¢ mulkpla) secondo le quali nuove class di ogge. sono dervae da clas este, ereditando le loro carateersuche ¢ estendendole con curetenisnche prope Ad essmpi, un oggerto della classe aucomobile decappotabile ha le sestecuatzrsiche di un opgeuo dels case auto mobile, mail suo reo 51 puo aprre e chaudere La programmanione a oggett cr di un modo pil: macuale ¢ inewevo di pensate al process della programmanione, madelland gli oggete del monde rese, oro attrib ¢ 1 loro compartment. La OOP models anche la comunicsnione ta gli ogget, Est com rtcano ea loco cramnce mesisggr, proprio come le persone (per es come un vergence che rece la eruppa sul’ Aten) La OOP smeapda dati aerioui) ele Fanon (i comportamenti m pacchers det eggs: + date le Funsions di un ogg:to Sono snumamente corrclzo. Gli ager hanno anche la propaee di tenerenaxote le nfirmazione. Cid significa che sebbene gli ogee possano sapere come comunicare er loro ateraverso imterfcce ben definite, non sempre hanno la posfiblii di concscere la sructura interna degli alte ogger » destagi di implementauione sono aaecorn all'iacezno di caseun oggett. E possible, inta, gunlare lun automobile senza sapere come funzions il motore, I ermustone e 1 deal degli alen sistem sstern. Vedsemo in seguito petché sascondere le nformaziont & di umportanea crucial per Is ereaione di sofware di buona quali Nel Ce negli alr dnguager procera, 'a programmazione tende 4 esare onensatt allacione, mente in Ce conde s etereortentaaagh ager. Ys Vt di peogeammae ne ela fincione. In Cre Tunits@ ln ele, da can eventualmente st ueanciave (read) cggert Le clase del Co> contengono mains dere nto J progiammaton: Cx concentrano sulla seateua di funsion, oe di grup di zone che efersano ual opersione completa. Un programma & coxituto da un insteme di fan- 2uoat. I dati sono imports anche in C, naturalmente, ma i concerto & che es sano 36 Canroto Jolanta un support ale sans da inraprenders. I verb presen ele specifche (decr- ‘uoni) di umn sistema guidano il programmatare C nel deermnare insieme di unions che ddevono lavorare insieme per implemencrl. (Chi programma in C++, svece, concencta Vattenzone sulla cesnone di auost apt di dco, ett claus, Una classe conuiene it dat che le funtion: deputate 2 mampolrl component di una case che sono dat sono det dats mera; lla sesso moda le Funzio- fu sono deve finztons membre 9 meta, Listnza di un po di dato predefinio come Ant deta varabile lo stesso mado Viseanza dun tipo di dato definito dal vente, came una clase, ¢ dete aggeza Il programmatore ucla 1 pi di daro predefiats come matton per la cortrmione det prop apr di data, Con questo approceia + peogrammasoai Cr+ t0n0 gutdae nel dererminare Vinsieme delle class necessare dat nomi presents nelle spevifiche dion sistema , dalle class 6 ereano pot gli agger che opereanno sn snerga per ample smencate i sistema. La relsione fra classed ogger pd extere nassunts nel mod seguen- te: proget edi sanno alle cate allo steszo modo in cut le class vnno agi ogget Infact, & possibile coscrurre parechie case partendo dallo stesso progetto e, allo stesso modo, possiamo istanziare parecchi oggetn da una tla ease.Le cass possono inolire presence rlanions con alee class per esempra, nella conceculizstione orienta agli coggect di una banca, la classe InpnegatoAlosportel 0 srebbe necessaramenteesere sm relasione con la classe Gh4ente, Tali celaniom: prendono il nome di sarc, Le class che eompongono un sofeware possona extere riuilzsae in un secondo mo- mento in alt stem. Sono in cicolazione det pacchera di component eliza che contengono per I'sppunco gruppt di classi covelae. Se c consentice un parsgone, cos ‘come gli agent: ummobiliactenfaczzano Ia parola“loesnione” per Tinfluenaa che ha sul ‘pez det fabbacan, 1n modo analogo noi enfaizramo uns sola parla pe Tinfluemes che sve sul Faruro del sofewace: “lato” Granesllaeenologi onentata agli ogee potremo scrivere la maggior parte del software fucaro sermplicemente combinando pact sandardizzae eiereambabil le clas pe 'p> punto. Lo scopo di questo corso € insegnarv a creare class ull erulizzabil, Ognt voles the st clea una nuova class, esa pud diventute potenanalmente un preolo pattimonie software, che puo esse ruiizato anche da tert per velocizare 0 miglorare fa qualict dal prope sofeware. Fd indubbio che quetea sis una gra bella pocenaai, 1.20.1 Introduzione all'analis!e alla progettazione ontentate agli oggetti (OOAD) {A questo punco del corso probablmence ate gi srt acum programms im Ce di mode dimensions, Provate or a pete ome ave crac il cade de vest program tin Moko probabilmente svete aceto il computer avetesmplicementecomniao + Aignare delle wenn vn sequena, Queto approcce pet, farnona salamente pe ple call pogets che co fret se i chedestero di eres il ema soewae ce conlla a sporll bancomacdiuna gros bane! Un progeso del gener ropp eso ecom- flo perches) poss afiontrio sedendow al computer cigtando untrimone dopo Fatt Ses vopiono solusionefficacoccorte segue un qualche procedimenc che sbi sexin modo chiro qual soo i tequsth del stems, per poersndere di concguenga un roger che lseddisi nel modo mighore. Ne eso dn programa compleso, qund Invtaoouzi0Ne: COMPUTER, cA PROGRAMNAZIONE EL C4 - 9 prima di senvere una sola stuntone di codie dovrete segure anteramente tale procedi- mento ¢ chiedere prevenenamente 'spprovatione del progetto ds parte de vote superio= 1, Tale procedimento, se seoko nelforvea onencaa agi oggera viene chiamato alia ¢ _progercioneorenata agli ogsei (OOAD, pet Object-Ontented Analyas and Design. ii svluppscon espera sanno che non ha umporcenss quanto semplice poss sembare tun progetto ma che # meglio impuegare un po' di tempo nellaralis e nella progetazione ‘Questo tempo é,1n un certo senso, tuparmae, perche expitaspsso che, aon efecusndo wulaccuraca anal e progecanone, st bandon! un approccio che st rwvela nadatco pet abbraceame un alto a meta dllimplementazione. “OOAD" é un ermine genenco che designs le dee gua dianalis e progertstione del sutema pot I solunione di un dao problema, | piecoli problems come quel che presenta= ‘ma net primi capitol: del nostro corzo non nchiedono, in fal, un procedimento croppo approfondicae la senvere la pseudocodice prima del codice wero ¢ propo sr pit che sufirente[Now: lo pseudocedice @ un mezzo che eiflerte in mado unformale il eodice di ‘ua programma: non ¢ un vero linguaggio di programmanione, ma serve come Flags per scrvere successivamente il codice,introdustemo questo cancect nel Capitolo 21. Questo approcew & senvalero adato a problem di piccole dimensions, ma col crescee dll di ‘mension ¢ det grupps di lavoro convieneutlizare » meted dela OOAD. Ideslmente un sgeuppo di lavoro deve rovare un accordo su un procedimenco di analis defi forml- ‘mente ¢ su ua modo uniforme per comunisene | nssltan . Eston divers procediment: OOAD, ma c@ un linguaggo grafico per comunicarne + rislta che sta conoscendo un Taego consenso: IME, acronimo inglese i Unified Modeling Language inguaggio units cexto per Ia modellazione di stems. UNL ® stata svilyppaco veo Ia ete degl sn 90, soto I guida tle di ere studion di ingegnena del sofware: Grad Booch, james Rembavgh and Ivar Jacobson. 1.20.2 Storia di UML gli anni ‘$0 sempre pit organinzanioncominciatono a weltsate Ia OOP per le loro applieaion,e dh conseguansa ni pretento la necenita di decdere un procedimento cond: ‘io pet s OOAD. Divers: seuiow di ingegnena del software, ea cur Booch, Rumbaugh « Jacobson, proposero individualmente des procediment dstne, ognuno det quali preve eva una nretione prope, o “Tnguaggs” an forma di diagraren grafic, che sews 3 presentare asleandelanalise della pogersione Nev prim anni "90 aniende diverse, ¢ persino seror divest di una stssa aziends, crilzzavano notation: e procediments diver. Per complicare le cose, tl aiende richie ‘ana strumena software che suppotasero «loro procedimens secifcr, ma daa ls diver- sit di procediment diver,» produton di sofware trovavane alquaee® dificil soddist- tele loro achiewe. Orviamence cea bsogno di sabilie uno stands Nel 1994 James Rumbaugh raggiunse Grady Booch presio la “Rational Sofeware CCorparatos” + due comincirone a lvorae all unifiazione det pracedimene di anal « svluppo che utlazavano comunemente.& lores uni poco dapo anche Ivae Jacobson, Nel 1996 questo gruppo defini ls prima versione di UML, ewvaleo alla comunica di pro- _grimmaton, a cus I grappo chiedeva anche un feedback. Pits meno nello sesso period> Forganizanione Objcr Management Group™ (OMG™) nvte a comunies a proporre un a Carrow 1 Finguago comune i appresneanione de stems, LOMG & urlorganizzszione no-profi che promuove lutliza dale cecniche orientate agli oggeta,caborande guide «specifche Dieta gruppr indus (ra cur HP, IBM, Microsoft, Oracle ¢ Rational Sofware) averae no gia compreso limportamaa di un inguaggie camune pe a rapprezentaione de ae, on reposts alla eehests di standard avanzaca dal! OMG, est! unicone Formando i onsario degli UL Parmes, propanendo la versione 1.1 di UML, LOMG gui pos tovamente Ia propos ¢ nel 1997 #1 assunse la rexponsabilia di definre © vedere le werian ¢fucure di UML, Nel 1999 FOMG ha definita la versione 1.3 di UML, che & Ia versione corrente nel momento tn cul quest esco sata eda, 1.20.3 Che cos’ UML? Unifed Medeling Languge # oF8 no degli schemw di reppresentaxione grafica pit uilizan per rppresentare + stem orientae al oggett: caso ft iat: uniticaro diverse notaxiony ‘he esstevano gi alla fine degli anni "80.1 progeroen s servona di queso linguaggro per rappresentre graicsmente» stems a cut lavorano, ‘Una delle caratenstiche pit nceressne i UML la sua flesibilid, UML &estendibile ed & indipendence das procedimenc di nals e peogetttione ulizaan. Chi utilis UML ¢ libero di siluppare stem servendos di divest procedimenc. cid che conta che pud fora esprmere le specifiche di tli sistem tame un iasieme standard di notions UML € un linguagg graico reco © compleso, Nell sen "Pensare an cxminy di cggert” ne presenceremo una versione rdotta ¢ sempliiat, e lx utlizeremo per into: dur alfargomenro dela progeeazione orentta agli oggec. Per una discussione pit com- pet su UML potete fie riferamento ai sto dell'OMG (hueprflwwnwamg.org) eal docu mento che concene le specifiche della veeuone 1.3 (hcpl/wnnwamp.oxplus). ‘Sono stat publican divert ibn su UML: il cexo di Maton Fowler Kendall Scott “UML Disilled’, seconds editione, mtroduce Ia versione 1.3 di UML in dectaglio, for- ‘endo ache dives esempy. Il esto di Booch, Rumbaugh ¢ jacobson "Unified Modeling Language User Guide” &savace de guid di riferimenco ad UML. Le weniche onenrate agli ogget sono molto diffuse ogg nellindussis de software, ¢ la sess sowe sea toceando oft ad UML. Il nortro obiervo aelle sexton: “Pensare termine di oggeti ¢msegnarei a pensar in rermini di ogget i piu velocemente possibile Dalla seuone “Pensare m cermunt di oggecs del Capitolo 2 comincerete ad applicare ‘queste ceenche ad un problema di dimensions non cascurabili Esperiame cealmente che potsaceerovae il progerto che proponama divezentee sumolance Esercizi di autovalutazione Lol Compleat fe eguens Fase 3) Lends che bs eo pola i peonal compurer& rata s by Fav pem computer imzodota nelle amends nelle nduste Gove il ©) Veompuer claborano 1 dat soci oneole di nse di turons deus 4) Les um logche principal di un eompurer sono ) Le we dss dh Tngungg dhe abba imtcodono sn gusto cao sono Ibernopuzione: COMPUTER, LA PROGRAMAIAZIONE EL Coe 39 9. pegramm he comennos gemini oval m npg rmacchina chiumano ) Ce nor principament come Hlinguagg cui taro eto stem operative 1) fngcaggo —__& ato wiloppto ds With per Vinsegnamento dell program: manne stutarat pele Unters. 4) 1 Diparamenco dels ifr degli Sti Unt slap il ingusggi Ada, con una funao- nals dee che contece a programmaton di spedieat pis di unas da segue a pail Compleat le seguent fermanon che nguaidano ambiente di siluppo Cos 29 program in Cv oo armament dpa als tors undo un pope by Inun ambiente d iluppo C++, prams dlls compilzione ven xguto un progiomms eno ou ‘combina Vetput prado dal complsor en le vane fantom bec er produrreunimmagineerguibi, an ‘caferace immagine esguiile dun programma in Ces dal dc alla ‘Compleae le sequent Fast 2) Oga programma in Cer comin dll fanaione 1b) 1 corpo di ons fansone ima con «teemna com 2) gn stone erm con 2) Lasequenes di escape \n presen Taare sucess dll wher 2) Ciruniene serve a ponder ele dcesions che spostail esate rll rigs Site qual dell seguenu fermion’ son vere. Pe aire, seat pete sono fle 8) Se un programms canuene det commen, durante eseeunone vert nla i exo chesegueil sep 11 1) Le sequent di scape (m mnara im output con cout, Fe sponte canoe alin dels rig success dll schermo 6) Tue vanbilidevono eer dihisrnte pra di pose etere uae 4) Opa saembile deve appartenere a un up di dato dererminato, © questo deve exere specific durante bw dichiastone ©) Cee consider i identieaor number c MuNDET come a sess vanbil Le dichinexon:pstono compacie quai avanquealfinteno di una funaione Coperatre modulo (¥) pub eter urate wlacon operand ines. 1) Glieperton animeue*,J,%, + = hanna st fo ses velo di precedena, 3) Un programms in C++ ger rasa ee lnce di ouput deve contenete te econ eheutiarans cout, Senvete una seraione in Ce> che fa id che segue 2) Dicharalevanabilie,theetanvarsable, q70984 number, uc dite 298 1b) Chiedealfucente di mettre un numero intro. mesaggo msusleeto devrebbe terminate con i segno di du puna (2) uno span, el cure dovebbe resare nls poszone sic dopo io spo. 6) Legge un mtr dalla asuers¢memonsa il vale nls varabile ters 208 4) Selsarabilerunber non eugualea7. vsualzes "La varanbide nunber non 6 uguete ©) Visalia su uns lines if metigge "Questo progr’ 4 stato sertete in cos" Canmtoxo 1 insane dc nee message “duesto programas 4 stato serstto an C47. U3 ‘pomaine termina dopo la pola progranea, 1) Visslansilmessiggi "auosto progeanaa & state scrista in Ct" ponendo opm pola su us ines diver. Ietnopuzione: COMPUTER, Ls ROGRANMIAZIONE EL C+ a 13 2) eto eeprocesore) linker loader 2)_masn. 8) parca gras aperta(D, pens graf chins (). punto vgol. d) carauete di nora lines perenne gma ne ete Senveteutrenone ou commen he fa bee spe: pee Fac tree pee ae heh ana tc 3 ie 3) Dichisralevanabis y,2erenu2t di npo ant fa diferent te lence mautol e minuscoe, er ide denis sone | cues ager arma 9B Nt ium ene mse min erin 2) Legge enter dallaasera cf mensonza nelle varabil xy. 0 Veo * frees aeee aero ce See ee o Mn ‘varabile result. Uh) Fults. Gli operator *, / €% hanno la stesa precedenaa menste gli vperston + e~ hanno Oe eee By Boao. /e fol ses pees mee . Bete renee eaten res Here puis oteastn nan patina diane ere } Ma aaeuen ae Serr Risposte agli esercizi di autovalutazione joys <= of progoxto @ « ss rusult << enh A. 3) Apple 6) ISM Personal Compute. «) programm. d) units di inpus. unit df ouput, eee mora, units smerny. una cenele di eaboriion, un di memonnzstione scondai. -Vlingusgr macchina,ingusggracem igang al lvl. emptor) UNIX.) Pave 5) mulesking a2 Carmmoto 1 1.8) Errore: il puncoe vga dope la paren ond chit, ella cotinone della $¢. Core one: limnaril punto wagls. Now: Inala quest cvre ce istaone di urput ene eepuam ogni caso 2eche se acondinine dla fell punroe mgol, Inf, viene cansdrao come unsruone ruts, ce uisnimone the non segue alcun compro, Puleremo di nuovo deFiruionewuota cl posite capvolo, 1) Brore: Lopersorereanionale=> Cortesone Al pono di» scrcred= 1.93) astaone: ) atibur.<) compartment d mull.) mestgg interfce. gcc tamento dle infermanion.h) noni) da membre; fanciom membro 0 mod ogg Esercizi 110 Prog ce indicate ses aes di hardware 0 soir: 2) cru 8) Complore Cos ©) Unid antmencolapes ALC) a) Preptecenrs Coe 2) Unis di inpuc ) Programmadivor 1.11. Per qua apn: prefenscesensere an programms inn linguaggoinipendene dlls smacchins, annche in uno dipendenc Per quali ragtons uf lnguagso dipendente dalla maeching ub reas pil spproprao per alcuny up di program? 112 Complete le seguenaafermazoas 2) Quale unit logia di un computer ace dae dl ern 8) Uprocedimeato con cuts indica al computer di eolrere un problema specifica & deo ©) Che ipo di tingsrago di progrmmazione wiles delle brevion di cermin ingles: 4) Qual eum loges del compurer che ova dau che sono sa eabor ale ane perfec fiche, modo che pasa exer alzan al eermo del comp «2 Qual Funia lope del computer che conser dat Qual Fanta login del computer che eftruaselel ) Qual & unt log del compucercepurata ns procets lope decsionali 1) A velo inguggs pit conventente pot ln crtura delle applicnony, te rman di veloc di semplie ¢ ') Luni linguaggio che un somparercomprendedirecamente i! 0 2D) Qual&unu logs del compute che condi e sara dicate alr ani 1613. Segue a che servono agent ogg a) ein 1) cour ©) cere 1.14 Perches progammanione oxen ag pga # cost importanteal glorne dogg? 115 Complete le eguenn afermanon 2) seroma a docurentare «programm ¢ 3 rended pi lepgbil 1b) Logg chew wala per wsuaizae dt slo schermo @ © Uslauaone C++ pe prendere ura dresione bast una condone apes 4) Nomalmente esl sonoefeutt dalle svar ©) Logg "iceve delet nip dala ass IvTRODUZIONE:1 COMPUTER, LA PROGRIMIALZIONE EL C+ “ 1.46 Sc until ironein Cov laine che he gue 2) Vals dmg “tana ane 8) Anson pents tle rbiice aera 6) female che pommel de call Grama ate, er 0, (ihe he canon un apa 4) Remeron now duoc meron adler ine be 1.17 Sabie cal fete sone ee ga ne ie, Comments bmn eee " aj Gli operator: del C++ associano da sinistea verso destra, 8 Quon st va aie andor ba 82896, 7, hr Nesccuaetotnuawena® © atrmone ett 4 "4 = "1 tun apc camped iranone di asepnmen 4) Unpesene anneal ne pre ve lene eed & one «Teper som abil ton sonora 47, 0802.2, 118 Complete le eguen afemanen 2) Qual operation armeriche hing lo te velo d pecedenza dels mallcaone! 1) Neto d parma maifcte, quale cop di paenten ene elas pet prima in sineapressione anemenca™ ©) Una lociione di memons dhe pub ontenee van divers in momen diver, durante Veseunone di un programm, cians, 1.19 Che cor vsltano le seguens. tution n Coe: Se waistanone non waalzn mall rupondete "nul. Peryporenx = 2ey * 2 eet sea ) eoug ce xt xt 2) cout ee exes 4) cout ee coe 28x) @ cout cent peers ecey en Deeney pies ere B) (reo eean eyes cen ey: 1) cout ten questo caso st pata di sagferrmeno del contol Le sravrrune Di contrat, 49 Net corso del anni'60 il mondo deinformaria ese conto che 'us9 inditerimunsco ddr easferiment di coneollo era la causs det gua pits comunt det gruppi di wore di ‘programmanione. Listrunione ala sbata ea la frmgerata gota, che pwd tere il eon reollo 2 una qualsas lea utuzione del programma, indipendentemente da dave quest ul tama sa localize, Implicnamente pagrannacione tratturana divenne snore di elim razione der goto, Bah ¢ Jocopim dimostrerono che qualsan prograonms pub esere nena in term di ee sole srmctre ai eonrll, wero wx teeminy di reeurasegezite, satura a eleztone © arucura di venzion. La seateura sequen & wmpliica in C4 I manana ai indica diverse il computer esegue le sruzions ina dopo Ista, nl'odine in cus le legge nel codice Il segmento di diagram di fluse my Figura 2.1 mosera una pica sae tura sequenaale che eferus de eacol nll ordine dato eagung) vere ai otle sotal + coral + grad Figura 21 Diagramna d fsso dalla svurura soquerzale Un diagramma di fusso rappresents yeaficamente un algorttmo o parte di sso. 1 dliagramim di asso contengono simboli dal signifiaro preciso, come rerangoli, ov cexrchiets¢ rombis quest simiboi sone conaess a Toro erate linge, dete line el flay Anche » diagramm: di flusso, come lo pseudocotice, servono a rappresentire « 3 svluppate gli algocim, anche se Ix maggioe parte de programmarori ha una spicese2 Dreferenca pe lo pseudacodice | agri di fluseo hanno la qualita di chair snche 3 livello visivo come aperano fe serutture di contella, ed & per questo moawvo che abbrimo sche di utilizar in ques libro CConsdestame il segmency di diagramms di Musso dell seeuturaSequenaile, n Figue e221. Ul retangole, deco anche nmbola di axione, indies qualia po di opereaione, come un alco 0 un inpuclourput Lelince di sto n igus indicano Vordine i eu Sono eeruate le epersz.a: prima rage wene sommaco Totel, quindi viene sommato 1 2 counter. Cer non lima i numero di azcn che st possonp ineludere in una srutiura sequential, Vedtemo presto che ovunque sa possbile porre uns sola anione. % anche possibile porte un inero blocco i axiom. 50 Cartoi02 Se un diagramima di fusso deve rappresentare un algoritmo complete, s1 usa porte alfentrata del diagramma un simbolo avalecon la parola Begin (v2); analogamente altuseea del diagramme st pone un ovale con la parola End (Fine). Se disegna sleanto tuna parte dell'slgorimo generalmente s1 sosucuscono gli oval con det cerchie, det anche sombeli di eouneon Fra sumboli pit umpowtanc di un diagramma di Russo teovieme senealco il robo, sderco anche smbolodeewinale, il quale indica the deve esere pres una decistone. Torne- remo a palare di quest simbolo nella seione seguence, IU Ces prevede ere ps di steutcure di conteolo che verrinno presencate in guetta ‘aprolo. La steurcura di selewone af compte un operazione soliano se una condiione & true (vera), mencre I salea sels condizione ¢ fase (fla), La strucura di seleuione 4#/ ‘else comple unloperatione se Ia condizione & true, mentte ne compre unalia se la condinione ¢ false. La struxura di seleione swatch compe us operazione scclea eta tuntinsieme di alkemnatwe, a secanda del valore di unespeesione. U coseruro 4 una srcura di selectone angola perche scegle © nora wna singola snione determunata. Hl costuto af /else ¢ una sructre a elecione dappus perché segle tuna wa due suiontalternacve. Il coseseto awiten e wna srununa di selesione multiple perche scgle uoa tra divere suion alternative In Ces extono tre cpr di steutture teratwe, while, do/while ¢ for, Per inci cognuna delle parole 4f, ose, switen, while edo é uns parole ern, co ¢ una parole riser, ileal compito & denotace una caracenstca ben precisa del linguageso di pro- _grimmazione. Non é possibile uliazare una paola ngervata come rdentifietor, per eemnpio pee i nome di una vanabile. La Figura 2.2 mostea'elenco compleco dele prsle erate del Con, Paroie rservate del CF Parole ruroare del Ce del Co auto break case char const contanve default do ouvie aise nun extern thoat tor gore a ant 009 register return short signed sazeot static struct switen typedet ——unaon unsigned vase volatile while Parle rare del Cosmo non de C asa boo caten cusses conse_east Geiete Gyramc_cast explicit false frauen aniine fnutable namespace new operator private protectea pubic reanterpret_cast steticcast tenpiate Unis throw true try typead typenane sang var wohaet Figura? Parole nservate d+ ‘LestaurTuae or conTRULLD 3 Errore comane 24 Set Tun certo sens il discoso 1 esursce quis Ce+ essono sotanto sete scucture di controll ovvero la stuteura sequenzal, sre up di scructure di sleuione © cre ps di steutcare di seraione. Qualitas programma & formato umieamente da quest, sacualoien- te in ture le possibli combination, a seconds dell algaciemo alls base del programms, ‘Come per hs srutura sequezae di Figura 2.1, vedremo che in un diageamaa di oso ‘ge serurcura di controll contiene due eerchieea, uno alfentata ¢ un alco allusea di sn, Le eturture ewe sole emeaue a wna sla nei senapliicane la senctaa de program: ‘i, perche basta conguangere le vane seraure eoveapponenda lenceata di una auscica daa precedence. xsulato di quest sovrappasmiont prende il nome di sequenced stue- ture di connolle. Baste we solo alto metodo per cllegare ef loro diverse suture di contolo: Ia malifes, wl ngeqeren el sore 2.1 (Qualia programas iv Coe 1 pa conrane a parr’ da ale ene ornare diconrlle (it, if/else, switen, while, dorwnite ¢ £07). combinandolem due posible madi, oovero mettendole tn sequeraa 0 mdificandle tena parla reas come ulanifctore commnctite wo erore a sa 2.5 Lastruttura di selezione if (Una stuteura di seletone serve a decidere quale one incraprendere ta diverse aleroa- ‘e posbii, Pe esempo, supportamo che il puneegt© mnimo per superae un esame st 60. Lo prewdocodice Se il voto dello studence’ maggire 0 ugusle a 0 Vinaliser"Promoco valu se la condizione "vow dello stadente maggiore 0 uguale a 6D" e verso fils, Sel condinione @ vera wene wsualazao "Promos € viene esegutsViseranione seguence Se Js conditione & fils, strunone di wausliasone viene sats, s1 passa direramente allstrutionesuccessta del programma. Avrere norco la spazicurs Ui enero (indentaaone) che abbiamo utilizar per ls seconds linea dela structra di selenone: 1 eal ¢opuionale, ‘a vogliamo incorgguirs a usarla perche evidenaa vsualmence I struttra di uh pro- sgramara serutursto. Quando converses il vostro pseudocodiee in codce Ce, i comp Tacorewynocea gi spots vuoe, fe rabulazion gh 2 capo der rent presene nel est del programms OS) psn pcannsine ion nn wae giv seam puns gg nna eben oan une serge le Lo pds pecan pa due m Cos ato ma af ( grade >= 60) cout = 68) cove ce “Passed” cise cout << “Failed ¥ arpa Boccata! “saps ‘Promasso Figura 24 Dagramma di fusso dela sutra diselenone doppia Wels, 5 Canto. 2 In Ces este operator condizoncle (7:) che dal punto di vista operauvo & moo simile al costutto i /eise. Loperatorecondinonale#I'unieo operarore rrnar del Cos, ‘Gt lavora su ee operandi. Operanl operatae forma una expresionecondizronale i ppomo operanda costusce Ia condizione, il secondo operando & i valore che astumers Tincera espressione se la eondinione vera, mente i temo ® il valore che asumers Viewers cespresione sla condinone ¢ fle. Osterate ques istrunione di autpue >= 607 “Passed” “Fatleo” }; cout << | gra Essa contiene unespresione conditional, il cut valore & “Passed” se la condinione grade >= 80 ¢ vers, mentre & "Failed" se ls conditione & falta. Come vedete un ‘operatore condinionale equivale a un costruto Af /eise. La precedenza dell operatore condizionalee basa, ed ¢ per questo che nell'espessione precedente abbiame dovuto rnsenre una coppis di parenes Il valote di unespressione conditional pud anche consere im azions da eseguice. Per etempso lespresione seguente grade >= 60 7 cout << “Passed” : cout << “Failed valeca “Segrada & maggiore 0 ugualea 6@allors cout << “Passed, smmmenn cout << Failed". Anche questa opcrazione avrebbe potuto essere effeuata in modo equvslene dda un costucto at/else, Vedremo pero che gli operators condionali pastono essere cclzzan in alcune stuaiont in cu! non e consenito Futian di costruta if /eLse. Tostute 3/0288 mlifcar servono a valurate una serie di cas et formano inserendo » 80) pou <= °8 at ( grade cout = 90} ese af { grace >= 80) cout << B; ese af | grade >* 70) out = 60) cout << F* ima aarutalmente le due forme sono equuisent, holt prefenscono la seconds, perch i nent non raggumge un lvello troppo maces: ses seglie fa puma forma, saveee, nelle tultume lines anne poco spino a disposzione per serivere le wstruions. © 5s ncerrom pono le linee andando 2 capo spud anche pegqorae li legsbilis del programma, a Obicenve erent 2.1 Un eoruna xf 12188 mulificata po vere mali pi veloce di wna vere di cru fr sequenst perhe uns vole eon la condizions vera, le alee soe eect a Objeriee offcwenes 2.2 Tn cazrat e190 mdi once wrifiare per prime lecondizions ele hana Imagine probabil dearer: n queso mado Fence sr pi nap, prch ygezione sce poma i esr Sf 0188. nonappena dora rove vppunio promt sondizione ver, La serucura di sdewone af prevede solanto uistruzione nel propee corpo Pe nelu- sere pis i una basta eacchuuderle wee era una coppra di parenes graffe({ ¢ ). Un tasteme di struziont racchiuse tra parentesgraffe stchiama rice compen. Al Ingeqneia de sfiware 2. Uniserzrone compote pa eer pasta ovunanes le goede ingungra perme di sererewiarucione angola Lesempio che segue contiene uisetione composa nell sexione ese di un eostru- oar ease: af ( grace >* 68) bout << “Passed. \0"; cout << “Fadled. tn; cout © “You must take thas course agazn.\n"; 36 Carmoto 2 In questo cato se grade & minore di 60 il programma exegue entrambe le wtrution: presenti nel corpo dells e188 ¢ visualizes Failed. You must take this course again: Nowe le parentesi che racchiudono le due wtrution: della ele. Queste sono di eserema umportana: infac se le omercesime Vistranone cout << "You aust taxe this course again. \n* s troverebbe al di Fuor del corpo della 01 8@ esarebbe eseguics comungue, indinendente rence dalla condizione verifiats da 4 B Errore comme 2.2 EEL Se dimeneare discover una o entrar le penta raf che delinacane pier ioe conipeneacammererere eon di at log Bl Buona abitudine 25 PL Sescmeresempre le paren graff ne coast e138 o ele aie rtre di coal saree meno probabitce di dimenaicarle quando sono ndipensabil. Ci pub eaptzar x pecralmente se aginget 1 recone tengo delle wraciom geet nelassole Af 0 ohs0 git enter, UW compilacore é in grado di segnalaw solo gli erton di sincasn presen nel codice del programma. Un errore logicainvecesnvelasoleanta durance lesecatone del programma, Un error logico fale termina immediatamente lescunione, mente un ettorelogica non fale consent al programma di poraze a termine il suo compice, ma + esultan proce saranno quasi ceramente erat, a Ingegneras del sftware 2.3 LEER Abba sce ponibite pore wnsrucione comport ounque ua prenie la praca i wnsercioneremplice ale rena mado pu porre unersione null soungie rt presente wnisracioneemplice Unttencione naa formate xeomplicomente da punta omg (2 A Errore comune 23 Seseriveze proto vegola dopo ln condizione cl un cna A commit un erare Iogico nt casa di un cosa 2 slecionerngol, enn ervere di sats nel ato di tun carat 1 telecine doppua (ela porcine 2 conten effravamente uae ‘1one nel suo coro) & Buone abieudine 2.6 EF) leu programmaton preferacona diguarembita le de parece graffed uniermsione campos, pra delle wsrucions eee. Ln queta mado eotana di dimensezme na 2 enmrambe, In questa stone abbiamo inetodara if concerto di wnutione compos. In usta sone composts pocete insnte anche delle dichiarzions, come accade pet esempto ne compo din. Un'steunione composta che cantene delle dichiaraion: prende il nome di LestmurTuns ov conTuoico 57 bloee. Generalmente m un bocce le dichisesnions precedono le wsrutions, ms ¢ possibile porle ovunguealierno del blecco,purche s1 rorino prem che le varabil sano effet vamente ulizaare Approfondiceme te carateensiche ds blocchy nel Capseolo 3: fino ad llora evrate di slzatli se non sono stetamente necesat (come 18 330). 2.7 Lastruttura iterativa while Uns suntan tents consent di eseguce nperutamente wn atione specifica fin ranco che une data condinone rimane vera, Listunone in pieudocadice Finch etre ancora cote da comprare cdevo comprare il prom aege edepernarlo dal itz escrve Vanione npesuts propria di una asidua sessone di shopping. Li candizione “a sono alee cove da compeare™ pub exter vers 0 fsa. Se e vera s elecus Topersniane “devo compre il prossimo oggerto e depennatl dalla lit". Lopers- done sire eseguita contouamente Finch la condizione rimarrs vera. Uisrunone conte rua nun cortruto while costtatsce il coepo del whie. Nacuralmente anche Iistrmione ‘ungolaprevsta dlla while puo essere sosacura da unistranone compost ‘A.un cere pnt f conditione divencer fla (nel nostro ato quando non et son pi ‘one ds comprarel: in guel momento l'keratione termina, ¢ Fesceusione del programma prosegue dalla prima yeumone che segue il coseraco whe, Enrore comune 24 Se operazione allintrna della whe non @ eed rendre la condone fla wn ere pts, an ilo fii, perch Uizertzte wo a ae mods di tena Exo comune 25 Fate arensione a manucole e mnuaol: re rivet WRAL al porta di whe commer tere nn erave di una, prche il Co» fo difienca re letnee sao e mice Tutte le paatererate del Co contengono joe lettre muse, Usilezramo wht 1a ua problema reale, per eereare la pruma porenza di? supenore 2 1000. Supponiamo di aver inmalizato la varabile itera procuct » 2. termine del costrato While, preduet conte il valore che samo cecando: ant precuct = 2; wnte ( product <= 1000 } product * 2 * product; I diagramms di Musso di Figura 2.5 most il fusso di concrllo del nosto program ma, Anche gut sone present solo det rerangoli ¢ un rombo. 1 diagramma visualizes chiaramente la aipetaione: Ia linea di Musso che parce dal rereangolororna sulla condinione, Finché esa ad un certo puncorisula fg A quel puso Il programma esce dal cosrutto wns ed eregue lstrunione sequence de iat. 58 Canto. 2 product = 2* product Figura 2.5 Diagramma di fuss dela srurura dieranone while, 2. La varabile viene por 64, 128, 256, 512 € ‘venta La puma volts che 5 enc in white il vale di prosuct moluplicara npewutamente per 2, assumendo » valor 4, 8,16, 3 1024. Quando progutt assume il valoe 1024 la coadiione product “<= 106 Gala: cio cermuna Titeanone, ei valoe finale di product resta 1024. Leseeunone del programma npzende dallstrurone che s rors subtco dopo il costruco whale 2.8 Tipologie degli algoritmi di iterazione: Viterazione controllata da un contatore Eastono diverse upologe di algortay che afureno le serurcure weranve. Nelle prossime sexsni ve ne mostretemo alcune, cercando di esolvere diverse varant di uno stesso problems, e 202i aleolo della media de vor ecevuc daglt sudenu di una ease, Ecco la definasone del nosto problema Uncle di dic students bt reece wn eae, Ate a diposcrne + vot di og stdene, ‘masa reals da 0 100. Deermeare la media det vee [La media der vor & uguale alls zomma des ve divso il numero del seudenel. Uslgortmo ai questo problema deve prevedere Tinpuc de! diet voc il ealealo effeave della media e Tourpue del newt, Scegliame di urate ancora una voles lo pscudocodice per fisare Vordine di esecu- ‘won delle vane operaaions Ci serie della wereztone conmallaa da wn conatore pet rieevere m input» deci vou, Questa eeenea Fuso di una varabile ders conzzore che control quante volte viene eseguco uninsteme di erunom. Nel nostro esempuo lt ipe- tiione germina quando il conttoresupeca il valore 10, perche vogliamo effecare input i solo 10 vox. Lalgorimo in pseudocode * un Figura 2.6, ei programma cornsponden- te & sn Figura 2.7. Nella prosuma sexione vedremo come sono siluppat gli algormt a preudocodice. La npetmione coneollaca d2 un concaore viene anche devtarperione df= a perché il numero di ripeazions & gf roto prima dln del el. Nelfalgorumo e: sono rierimens a un stale e3 un contarore, Un rele una vanabile che sere ad accumulate progressivamente Ia somma di una sere di valor. Un conzetore& ‘una varbile che serves efferuare un conteggio: im quetto cazo sak ule per concae i rumero de: vor g reevuet in inpuc in un dato momento, Una vanaile totale deve esere tnvtlizat a 2er0 prima di xsere utiliza, alemenc la somma finale includes il valore che 5 erova casualmence nella Yoesuowe di memona che le 2 staca assegnaa, Lesraurrune 01 cowmouio, 59 Finché il comatorereta minoreo ugnale diet Prenderedllinput i pros vor Aggewngere il sora a ote Aaguungere na al contatore Inmpotae il lore della media al rotae div dies Vinwalizere la media Figura 26 — Algontme im paaudocodice perrrclvare i probloma dala media da wot dr tuna clste con ikeranione coneroita da un conratore, 11 Fig. 2.7 #4g02,07.69 uedsa doa vota oi une classe 11 con Witerazioné controilata da un contatore ant maint) ' ant total, 11 gonna dex vot aradeCounter, // numero di vota somes orace, Hun average; J media aor vot 11 tase ax amzratizzazione rota = 0; 11 azzera il totaie gredecounter = 1 17 prepara i} cxelo 11 fase a4 exaborazione mise | grédecounter <= 18) ; Hy exeia 10 voite cout fe “Enter grade: *y 11 prompx input ein >> grade; 17 anput Ge. vote tora: * total + grade; 1/ agquunge il voto a1 totase gradeGountersgrageCounter+1;//ancrenenta il contatore 1) fase tormsnaie average = total | 10; 11 éivssione antera cout <« “Class average as * << average << endl return 0; // i programa & terminate van successo Figura 2.7 Programmam C++ con relaava butput perl problema dela media dai vos una case, soto con icerannone conrolaa da un contatore (conc) 60 Carrtox0 2 average is 81 Figura 2.7 Programmain C++ conrelanvo ouput per problema dalawada devon" una case, roo con Feeranione coneallaca da un coneatore, Teontaton sono inmualizat generlmente 3 zero 0 uno. a seconda di come siintende uslizal nor presenteremo esempr di enteambi * es. Exrre comme 26 Sediments di imsalizare wn contaareil ular del vos programma sara ait certamente erro, Quest un ergo di erore logis Bl Buona abieudine 27 LEP) Puzulisczte repre comtarone rol. THe] Buon sbieudine 2.8 SP) Dichirare apn vurabile mun lines divers. Se osservae, la media cleolaa dal nosto programma & un numero inceco La seals somma dei vou nel nostro esempro & 817, che divso 10 di 81.7, un sumero che ha una parte decimale, Nella prosama senone imparerema ad utilizare quero apo di numer ect valor. a virgola mobil Errore comune 27. eomtatore dwn ciclo assume un walore mage di | rape al ie walre waldo (per exe ea del congga da 1 a 10 i coneatore ae per ult il aloe 11 @ ‘ulisat i valore del canatore praise depo la fine de ele pore commenre In Figura 27, sels linea 25 viilizsasse gradeCounter annie 10 po il calcolo, i programma visualizzerebbe in output il vlore 74 2.9 Tipologie degli algoritmi di iterazione: Viterazione controllata da un valore sentinella Adesso proviamo a generalizzare il problema della media del pargeafo precedente, Beco ly Adefintaone del nostro auovo problema: Sercete wn programma che cael la media der von ei wn muoneo abies di studen il numer di fudenn vere deci volta per von dalluente durante Feecusone Le sraurrone prconrrouo 6 Nalesempio precedente sapevamo dallinnio che + vow in mp stebbero stan 10, Qu tnwece non abbiamo wea di quana saranno. Come puo deeerminare il programms q\ando Fermara nel richedere 1 vor an wnput? Uns soluione st serve di un valore spel, dete aloe mtmela, nalore reps. 0 flag il suo scopo & indieae fine delinpue der da. Durance Vesecurione Futente mimette suits vou che desidera, quindi scrive il valore sentinels, ndicando che 1 vost sono fini. Le werauons concolate da valon senninella sono npezsrns afin, perche pruma del Veseeutione non s1 pub sapere quante volee sata esegurt il ciclo. E chiro che occorre ‘scepliere il valore sencinellsn modo attento, perche non deve essere confuso con un voro ‘lide, Daro che 1 vor di un ese sono generalmente numeri non negatvpossiamo sceple: re=1 come valore senanella per il nosero problems. Casi utente pub smmertere per csemplo 'valon 95, 96, 74, 75, 89 e =1 durance l'esecunione, La media sara ealolata salranc su valor 95,96, 74, 75 89:1 non € un voto e quindi non eacrera nel compuco della media, @ Errore comune 2.8 [Now seglieze wn vnlrerentonela oe pub erere anc wn ealore legume di pat trai ds wn eror logco, ‘Adesso cerchiamo di rislvere il yaablema della media con una ceenica nota come dgfnzione arraveno pase di rafinamentotopedown (dalla in basso), che edi uns cer ucla per ecare programma ben stureuran, Cominetamo 2 rappesenrave in pscudacodice il tap, e108 livello pits leo, 0 generico Deweranare la medi de oe di una ela rela peru determina ame I ivello massime consise 19 una sola frase che indica il compico complesswo del programms ¢ in quero senzo é gid una rappresentaxione completa del progeamma, Pur- troppo diffcilmente neice a descnvere una quancia di deuagli sulficente a cavate in mode immediao il programma in Ces. E qui che comines i proces di affinamence: suddivdiama il cop im una zene di comput pis semplic ed elenchismoli el’ odine in cut vanno esegui. Il primo nafnemenr pub essere quest: Inetaiscare le vanabil Efrnare Ungar, la soma i eowtegpe det vot Galore e stuaiszare la media det woe: Qui abbiamo uclizatosoltanto une strutcura sequential, cic van pass sone esegur ‘andl ordine dato, une dope lal. Ingen de fia 24 (gn pase dafinamenta, nla i vel top, 2 una dcrtoe complica dell agora Fanuc vargstone ce 1 ha pated cn live un atrsriguard i elo de agli. Canrro1o2 Face ifenmento alulamo congo di ingeprer del sftwire per eymentarvs con ta vostra prima ridefinrone. Nel peossimo passo di raffinamenco, dobbiamo scabilie di ‘uali vaticbili abbiamo bisogno: occortono una varabile cae, un consatore des aumen git elaboran, una vansbile che assuma il valore di cascun voro durante Vinput © una vanabile che memorizn il valore della media. Vstrunone in pseudocodice h pps estere defini in izzare le varabili nsaliscare i trea zero Inculicare it comtsore a sro ‘Come avree notao s1 devono inmalizare solo total (coal) « cuter (contatore) pe sna che possano essere ulianater average (pot la mei) ¢ grade (per Finput del tente) non hanno bisogz di uninwzalizatione, petche + loro valon precedent saranno sovrazeit 3 Bineiude 6 7 ant wasnt) Bt 8 ant totes, 11 soaaa dex vot 10 gradecounter, // numero ds vots tamesss Hy rade; 11 un voto. 12 float average; // nunero eon punto aeesnaie per 2 meats 14 fase os anszuaLizzazsone 15 cota 16 gradecounter = 0; 18 I/ fase di exatorazione 19 cout < “Enter grade, =1 £0 ena) 20 can >> grades 2 22 wile { grade t= 1} a 23 totai = total + grad 2 gradecounter = gravecounter + 1; 25 cout << “Enter grace, «i to end: *, 26 ean >> grages Pn) 28 291 fase terminate 30 af ( gragecounter 1 0) 4 a average = stetic_caste float >/tetal) / graceGounters 2 cout << “Class average is " << setprecision| 2 ) 2 fe gatuostlagel aaeisfines | 08: :shoupoint ) a << average << endl; 3 36 alse a7 cout < “to grades were entered << endl: 2 38 return 8; // it programma & terminato con sucesso Enter grade, Enter grade, Enter’ grade Enter grage, Enter erage, = Enter grade, Figura 2.9 Progrmmamn C+ e retwo output per leacole dala meda de vou tuna clase con Tterazione controls do un vale senna continua) Lestavrrurs ocoxrnoa 65 Enter grade, -1 to end: @ Enter grade, -1 to end: a Enter grage, -1 to end: +1 Class average 1s 82.50 Figura 2.9 Programmain C+ > wralatwo ovipuc pari calcalo dalla meda de vou d tuna clase con Ticerazione conollta da un valore sentinel Notate struione composta in while. Senza le parenes graff le ultime ee wsrusion del corpo del ciclo s1 rtcoverebbero al di fuors del ciclo, Il computer interpreerebive {questo come: nile ( grade t+ -1 1 tora = totai + grade; gradeCounter = gradeCounter > cout << "Enter grade, <1 £0 end * ein >> grade; Se utente aon wnmere come voto ini il valore~1 sha un ciclo senas fine NotatePisteunione ean >> grades Listrmione che ls precede avvsa Putente che il programms ¢ in atts de valor im npc Ss Buona abitudine 2.10 LE) toute Fitente quando il programina nciede Finput di valor. Lavoue, deo anche romp, dovrebbe ndiareil ped isu chien gi eentua valor seca amet (come il walore xnerel). ae sn inn 21 BS as ceente anna cmnctt comma non rdf ao iene Anche le medie acemetche efferuate au valor inten producone spesso mamen eon pct deamali. Ques valor sono dest numen reali 9a vigols mobile, © #980 rpprese tau dal upo di dat float, La varabile average e dichiaraa come fLoat, in modo che Ia parte decile del cieola nan sia tones Tutavi Voperstione total / gradeCounter produce un intero, perché siz total che gradeCounter sone mumet intr. La diusione di due numer inter & una dixon mee, i eu le pares decimal vengo= no troncate comunque. Tale calcolo wene efferwaro prima dellssegnamento, per cul Ik parce decimale viene perduca prima di pote essere conserva in average. Pec efferare ln caleoio reale con valon inter dobbiame creae de valon temporanet a vgola mobile In Cos esute operator ear wnare, pensato apposeamence per questo. Lisruione average = statuc_caste float >( total | / gradeCounters include l'operacoce di cart static_oaste float >() che crea uns copia emporanes 19 igels mobile delfoperanda ta parent, aoe total, Queta € una convernone epics UU ssloreconservato in total # ancora inero, mente il calcolo adesso viene eles 13 un valores vugols mobile (a vesane temporanca feat di total) el inteo gradeCounter. 66 Caro. 2 U compilaore 9 calcolare il valore delle espression’soltanto se» apr degli operandi sono identi Per asscurare Fuguaglionss det tp. efera prevensvamente un operations deca promezione 0 conversane mpi, sugh operandi sleionad, Peresempro, un espe sione contenente valor ant © Float, tut» valor Ant sono promod 2 Float. Nel neuro emp il calolo viene effecuato dope la promezione di gradaCounter a float, e i faultato viene pos assepnato a average, Nel sepuito del captao parleremo di rat ip di ‘ito standaed e di come sono promost, Gli operandi cast sono disponibil per eu ips di dao. operate statae_cast st forma facendo seguire alla parola rserac statac_cast due parenses:angolan che ‘acchiudono il nome del npo di dato. operaore di este unara, coe prende un sole pperando, Nel Capcalo ' abbiamo wo operat bisan, gli operator: armetis, Il Ces prevede anche una versione unaria degli operaton pis (2) © meno (che servono a dared feyno 2 de valor numer, come =7 0 #5. Gi operon di case asoetano da desta 3 snistae, fa gli operaeon nat, sono gual che hanno precedents pit alta. La loro prevedenza & anche pits alta degli operator", ‘ma e pitt bassa di quella delle patente. Net nosteschemt di precedenza indichuamo Voperatore di case com Is noratione statze_easterp>() Le vanana di formataniene in Figura 2.9 sono discusse in decagio nel Capiolo 11 ‘gut ne diamo solanto des brow: cen. La chamaes s 8etprecisson(2) 10 rout << “Class average 1s * << setprecision( 2 ) ce setuosflegs(ios::#ixed } 19s: :shoupoane) ee average << endl; rodica che la vanabile average, di upo float, deve exerevisualnzata con una prersrone Ai due cfr, a desta del punto decimal: s area un swat del apo 92.37. La Fanzone chuumats &noca conte manpolatore di stream paranertazcs. | ptogeamm che usano que- see furnionr devono contener la seguente dicts al preprocessore: #inexude Orserate che end € un exempio di mumpolarore di stream non parsmentzzar, € 90n ha biogno del'inclusione del file di necsatione romanap.h. Se non st indica che prec stone uslizare, «valor un vrgola mobile sono inven output per defaule con se cife decimal, anche se c unleccarione 2 questa regola che vedeemo ta breve, 1 manipolatore di steam setaoflags(ios::#ixed | 408: :snowpoant) nellttu rioae precedence smposca due opzions di formserazione dell output, 108::fixed € 4208: sshowpoint. Le bse verucl () eeparano le diverse opzion: presents nella chiamata 43 setioflags: spiegheremo il significa di questa notzone nel Caprclo 5 del volume “Teemehe Avanzate. Lopeione 2082 fxd fa sche i alae in virgla motile sa mvc in couipu con una formation a vrgos fis: questa formatatone it conerappone alla note ine scene, che vedremo nel Capitalo 1. Lapzione 208: aRowposnt fora ls views liezzione del punco deeimale e degli eventual ero tempt, che nel cate di un nume= ro con parte decimale nulls, come 88,00. Tn mancanza di quesn opzione non sircbbero ‘wolase neil punt decimale ni due ren che lo seguona. Con a presidente formations iT valore vsalizste viene arerondate al numero di postions decimal indieato, ma in ‘memorail suo valoecimane inacerato, Peresemp valor 87.945 eG7.543 sone vsuaimac rspeteamente come 87.95 « 67:54 LestauTTuRe oI correo or TOL Errore comune 2.10 ‘Se wilizzate numer a vugola mobile non fae oppo damental precnane della lore rapprernccztone, 0 parte aere dex rulat scorrts, Inf la rappreventac ned wr numero a vgele mobile salle magear parce det compute, slate appre Boor abitudine 2.12 5 y A cana dels lor rappreentasone appronmmatiea, non apporaie verfcare gus liana di ve mers sega mobile: comune prt verfcare oe l lore aif Fuze valor aon 1a manore di wna piecole quant Sebbene 1 numer: a virgola mabile non sino ptenamente affidabili dal punto di vista della precinone, possono esere usc numerose applicaions, Per esempio, se consde ‘namo la remperseura del corpo umano, possiamo accontentare di una precisone a uns sola cilia decimale (37.0 gradi Celsus). Se legyamo 37.0 sul nostra termamet il valre ppotrebe essere an eats 36,9997658578242 Cia che conta & avere una buona precinone peril upo di spplicasone da sviluppare Anche la divisone produce spesso dex numer: a wrgolx mobile. Dividendo 10 pee 3 avremo 5.3333353... con una sere infin di 3 dapo il punco decimal. I! computer puo alloca solanco una quanc’ predefina di spazio per memonazaie un sumero, per cut Uapprossmazione, i eas come questa, © un farto mewtabil, 2.10 Tipologie di algoritmie ridefinizione top-down: le strutture di controllo nidificate Adesso provame a anaizare le definzioe di un alo problema. Uilzeremo di nuovo lo pseudocode «ls ridefinmione top-down per guingere a scvere il programma defi von Cer. Abbiarao sto che le stare dt cotta possono essere messin sequen tuna dopo Tala ln questo paegrafo parlremo delfunizo redo lernanvo di combinate le scueue di conella, s mdifecsone. ecow I definnione det problema: Un Calle enzo un core di preparazione per Faure di lence di smermediare moe Biliae. Lanno sora ao gran numero di scudene di questo core ha affonato Ueame finale Naruralment la direione det College wale conacereUandarnentocompleniv dell ar, pe 138 or chided server un programma di nepilogo des raul, Vi @ eats eonepnaa io lone (4 10 mudenn, en comspondenaa di agu nome trovate la ea | nel cto di promacione elt ‘fis 2 el co bocca 1 vostro programma doveebbe: | Bfeuaeeinpuc di cut i sul fivalon posi sono | 2). Per eichiedereogns voce succesive doveebbe visualizate un mesaggto. 2, Visualare un neplogo des ruta, che ndichi i numero di students promos bcc, 5, Seilnumere di seadene promoss super @ vsuliznare un messaggi che nda aumento della eee, ndo con attenione la definmione del problema ci vengono sponcanee le seguentt considerations 68 Curio? 1. programma deve claborare 10 nul. Poesiamo usilizare quand un ecleconerol= Inco da un contutore, ‘Ogni nsulksto& un numet, ¢ pub essere 0 2. Ogns vals che'l programma legge wa ruultato deve verfcae di quale vale a eracea. Net nosteo te erifcheremo sel valore 1: se non lo &, presumeremo che sa 2. Veseemo che conseguente comporta Questa assunzione in un ezerinio a fine capo. 5. Usiliseremo due conraton: una per gli studenc che hanno superato Fesame uno per agli studena bocei, 4. Al termine dll'inpu i programma deve decdere se sono sect promos pit di 8 stu dent, Procediama adeno con il merodo di nideFintone top-dosen I livlle massime (top) pu exer Analiszare + rulan degli exams derdee se 18 deve anna i rete E importance che questo livello contengs una rappresentanione completa de problema anche 3 un livello di detegfio minim. Valutsmo che sarsano necessat anche pareech livelit di ndefinmone prima di gungere al programma finale in Ces. La nostra prims ridefinione & questa: Incslizzare le vail ‘feruare Vinput dea diet von, consando le promacion ¢ le baceutare Visualiczare un nepileo det rsulan e decider aumentaré lt rete Come cape abbiamo ancora bisogno di un ultentoce lvelle di sdefinnaione, anche se 1a eappresentaztone del programma & gi completa, Facctamo mente locale sulle vribil ds utliazace:abbiamo bisogno di due comtaton, uno per le promouione uno per le baccia- ture, di un contatore per ciclo di una varabile che contenga di volta in vole valor sume dal utence. Listrusione in prcudocodice Inrsalissare le varesil ud enote eidfinta cos Inrslizcre le promossont 3 zero Incitizare le bocraure a 29 Unscalizsare il eonestore a 10 ‘Come vedete solo concazart¢ + total sono snmlizse, Lismuzione in preudacodice ‘fsuare lings de diec von, comand le promazions ele bacuture an eealti un aco che riceve i input alot draco gl ess, ano dope I'ero. Git prima i comunciare sappiamo che i valor! sono 19 tuto 10, pee cut possiame teanguillamente uciizzre un aco concrollae da coneatre.All'nterne de ciclo, must eso, cov smo una stuttura di seleione doppra, che determina caso por es0 te 3 catca di una romonione 6 di una boceicura e meremenm ii contatore corrupondence. La ridefinmone dallseunone precedence ¢dunquer Finch i comatore? minore 0 wguale a dct Efermare Vinpue del prota riulato Se lo srudente ¢naza promos “Aagungere una aia arable delle promestons Le staurrune 01 cowrnouio 6 aleranente ‘lggrongre wna als variable delle promo Aeguungere wna al sontatre Abbiaeno stent delle linee wuote per evidensise Ia srucuea di concolla 2¢/@1s: cost Fenda abbiamo migliorst Ia leggibilita dello prcudocodice. Visunone Vanalizare un mepileg der rules edecdere e aumentae la ree uo esere eidefieus cos Vimalizare il mumere di promestans Viralizzare Hl mumero di bocrseure Se sono sats proms pie di 8 sudens: Vimalizare “La res srt aumentaza La secenda rideinmione completa & in Figura 2.10, Come avrete notto, abbiamo cevidenaato on delle line vuove anche la srutura di controllo haze. Inesaliszare le promozions a zero Invsaiszare fe bocxaare a 20 Incsalizzare i comatore a wie Finché il contatore ’ munore 0 gual a diet Eferare inp del prong rnleate Se lo ede to promoso Taggoigee wt ala varabile delle promesions salem ggg Agguungee al cotctore sn lls varabile delle promaciont Viualizzare i munero di promosion: Viualisaare i memere di byceaeure Se-ono te promorn pic dB radene Vinalieare "La rea sar eumentata * Figura 10 Preudocodice delanain devrslau del earn ‘A queito punto abbiemo un livello di raffinamenco adeguaco per pote pasar a scr veel programa vero e proprio: porte vedeco in Figura 211 insieme con il suo eurpuc Nel programma sbbiamo sfucato una carateestca del C++ che consente di suzalizzare le-vanabli durante Is loro dichiarznone. Se un programma contene des ccd iterone, generalmence quest inilinzanions sono efletuateallinmo di ognt ciclo: in alen cast 51, tuoverebero an normal seraion: di assegramento Jy Fig. 2.315 #390211 -0n2 }y Anaissa der risultaty os un esaae Pincwuge