Vous êtes sur la page 1sur 246
Learn C++ Today! Your You +The bonus Turbo C++ compiler to team C+ programming without spent snuncreds of dollars on difficult-to-use profess 5 + An accessible — not intimidating — introduetion to object-onented programming from expert author Marty Rinenart ‘+ Rast results with this nands-on-programming method ~ just type, eck, and learn how to program in C++! + Chapters that present programming concepts and techniques in snanageable sections * A fully integrated leaming too! -there’s no need to buy anything else! top source for learming C-++ and object-oriented programming techniques! 2 * Compete source code on disk so you can use the programs you developed in the book Series Editor Tom Swan is an intemational acclaimed programming author. A former editor for PC Techniques, and forner columnist for PC World anid Dr. Dobb's Journal, Tom brings a wealth of programming and teaching experience to begimmng programmers, Euitata cu sprijinal Ministerului Cercetiii gi Tennotogier Martin L. Rinehart Sa invatam €t* pas cu pas Traducere: Tudor Balanescu ia Candea Gheorghe Marian ny EDITURA TEHNICA Bucuresti, 1997 8c us Ee ~ HWOINOD NLONN ALT pees eee ‘VRMLLyOTIE « ~ soar 7 ayasta UIEWDSOP ES € ‘nynuesoud varoonpostt 7 ‘Iwoupa “VeRIVUNOGNG 8 TaN] 30 VAULT aNY NOD oo yous vam AWINSATU TG VSNOUOMILSNI seen INILOMALSNI 3A 9O1E ss : "WERE ee se am UM IS9 2) ALVA pee 9 snag ye a0 39s UP vee +40 INTEVEPT VZANEO ‘TO, sensu wary, mor eens 3 WN “LITO IVIANALSIS VARY TVISNI “Syd (10 SVd "+9 NVLYANI YS 7 ings 30 3184 Lyo coor AUNIYO I$ INdODs 7 meme) EEA IS T sutidn3 U6 NES! ‘sls 9'Z9 seioersn neo L6eycTe ea 2p wnat eng vasuvony 3a 16400) ‘yaaa ¥UIS BU SEDER, inv is Lnvaniany #P6S9LBL« rr rei poo seuptsoy"usoanang C& Tareq faseid Bid ‘YOINHaL VaNLida Ezy ‘uuaipe arewezor uns ups Tatsanewacse afsradaxp aT, 11661 YOINHSL WUNLIGA © AUB1KE0-) pousosn suit “ouy “apunpuo.m S¥00G OA Aq S661 GAAS iene, re wate Thrers gh he ae Cupans vu ‘Sa invatim G++ pas cu pas yo Sti pas cps 5 Casetele de dialog sunt mostenitonreecassteor. 109 CE ESTE MOSTENIREA? se ~ : 110 Clase de baza gt case dervvare aa ‘Senerea coracteretr.. PROGRAMAREA CASETELOR DE EXPANDARE. Derivarea unei clase. SCRIETI 0 CLASA DE MESALE... ‘Despre supralncareae... . Scnetea casei message de baz ‘Addngarea de Mesa}e non Obie mesage de coud ‘dee rnc. REZUMAT. cs ‘Stergerea central SISTEMATIZARE 6 Mai mute caste de dialog: stilt de tuera cu fiir protect. PRELUCRAREA COMENZILOR UTILIZATOR. Terathia comencitr. ‘Actualizacea cu caractere spa6t, ‘Un aume permanent. ' REZUMAT yess a et ee 4 Crearea unui obiect de tip box. Lap ecdacneatta esha ART VES NS STRUCTURLE ORGANZA TOARE pnbeRaMet APEEANT see ce cintnen a ea = g Sar amsoas leer Scaeeaeeeais congirne Uhtt Cagete e DIAL SG VES : Pheatea bedcesone Be COWENZH wr nan seawat ci 7Un editor pentru o singuri linie CITIREA CODURILOR TASTELOR, ict do while Construivea fsteruli KEYDEFS H... PREGATIRE PENTRU SCRIEREA UNEI CLASE. Metoaa Draw. Depanavea FOLOSIREA OBIECTELOR DE TIP BOX euloeioe tor easete de marge, sedating pen REZUMAT “EVN ai AOTRINATAD VINATUALS 06z ~ vor te “+ ageip9 ap taMTUNS WasIANSUCD 66¢ Lut awit nes pqyZiA psosurio WADE, eS ise ue ~ “myosin VaeVSY TAR . siz a we zi lee ae = oe" ot ca & on ose Eo co ae 4 van ay 19440 TUNE wus pa ssn tay ap 1592} 2919 sie ~ imi ap sopindiiB vaseqedived CY ee Way LOOKS BOIS OT ue “Lynn 2 ne us enn “aut sje vanes oe ~ z us ~ pst wane ne ze Saivavo aa vayveasNt we we" He SLLINLLNYTNI AISIT ag YSVTO $9 Hes irae waseyy ie" ——~ usa te fos nna 2.5e9 foun aHe22 use waa ep set 7 wen s0sino ans warafiag ez “gard INNA VaUVSISV ba s MoaNaLo vv Vana IS zee ‘aria nh, ore tes we ie : é we Seer Yaw MALNAd DoTvIa dQ IALaSWO WARVSNVT ewe coer ro puymoutted oe “yx 40229164] BOAT 6 ue MOTRELIVEVD varwninianivzans ove ‘acigipunquy fesou! enouny am LWWNZTE ee ~ fora un eae : ; ‘MISSI IO TZNINOD oe “women EY ARIAT WAS /EV YSN TTPO “>> XT BND 1OLISAYES VTS TALAGEONI VT LIVE nee cae ‘soupy SULy AD area ZL saan “LNVANO HINA VENROWSLS vs eugas wr TUBANO 1 oee ~~ bynes “adeoup 2 sug4n9 OREN ise SANYUDS LOL ae IaySiay VaWVLNNGD ven INWAND NM BASE IVATOSUND YREYSYTEIC ue ‘imap 9p sUy|axa T2uSAWO IINYOSUND VONYAS NIGTINWLLOVEVD TOWLE BOVASIOVE te ~ - cu ereuy “out 9p tmya4ONTPS oP omy 8 se ev a3a ue 95 WaSEICaQ 102 ~ - LWANZL 660" earonorstawupoy ae as “ -sojpionoesea wares w6e erent rojetemw raewsto1g i co ~ sypsereit vaounei0NS s6t"~ PALSY 19ND VRIVNOISNAWNICR: ioe YOTRUALOVUV VRSIONCOWLNT we “sojansauoy waumynop 18 vanese|dap "ea reMorsuoREpay TT a rears mynpotd@ nes Sst! ymDOW 5022S wr Wr said edna Sed 419 WETRAUI ES 14 Utilizarea multi-fisierelor ‘Comenzile de satvare Immplementarea fancte DESCHIDEREA FISIERELOR.... ( functe de deschidere GGestionarea caacterelor Tab... Deschidorea mui-fiierelor. EDITORUL TINY RESTRUCTURAT /ASEZAREA IN CASCADA A FERESTRELOR CONTINAND FISIERE, O'STIVA DE OBIECTE DE REZUMAT on 15 Coneluzit OSTENIRE UETILA SUPRAINCARCAREA OPERATORILOR.... ALTS EACILITAT) ALE LMBAIULUI C1 Van CConeeptul ae tempt $1 Operator wrgul. Instractunea got euchetele program CAUTARE SI INLOCUTRE, UTILIZAREA MOUSE-ULUI Frere nnn Jnveren pened REUSE DESPRE GUI. Portarenedtrual Tiny it-0 GUL Me, OWL g bibiteat eels... REZUMAT... TOTAL, “TIP FILE WINDOW tara exceptilor au 41s 415 416 420 420 426 423 433 ast 480 447 Introducere Deoarece exist mult prea mult. ‘As doris comentez modu’ in care putel! obfine edt mai multe din aceasth carte. S31 a5 do si va dau o mica indicate pentru a recompensa perseverenta de care dats dovada. in primul rind, aceasta carte se bazeazi pe tucrul efectiv ia calet ecunosedind o alté modalitate de a stip un I stcat precum C+ st scrte prinul program “Hello, World!” Apot vi putet face an pian }0 pain pe ora. Daci att putea acorda aceste crt: dou ore in fiecare Sa va dau o indicat: un oaspete cu care am petercut de curind week-end-ul ne-a rachete, L acest joe trebt iti dect ce am ‘Am sens un program si a mers mune, dar este sigur ca fost deoarece arati o verstune complet claborati a rutin de asemenea foarte distractiv. Va fi necesar 58 stil MOS NINA nes usORUIOE]Y “Dd MuRuad sole areayos 4 UL ayo 6 9s Joa. "INOsEN Foupul BA steam aIs=ay nots0yst audsop eA9> aIe9 apo 9 6 wal BA pon aIZ'S1dHO smu “sean 9 injondeo wy ‘ysins mumosd wauOjsueN e RINNEM AWD, UP ‘sed no Sed v1 RENTS Me 2 ‘Sa invatim C++ pas cu pas SCOPURI SI CERINTE C+ sa deavoltat din C, um limbaj iventat sistemeior de operare, C++ a adus multe imbundt important este suportul pentru programarea cbiectoie reprezint2, pe bund dreptate, chia tutus efor’ ‘V-atdecis sf deveniti unul dintre cunoscatori limbayuiut C+ gt OOP profestonele (programatorii C++ ci bani) sau din motwe personale (programele C++ se exeouth foarte repece! acd vrett $8 invatatt CH ay > un PC 386 sau un calculator > dor sau trei megabytes disp: > experientiinte > 0 motivate serioast de a invata CH Si contea7l dack va place si butonatt calculator ru programarea componentelor re perscane de toate fe calculatoare Pet ae ajung cu grou (a an 386 de 25 MHz su je, Nu pentru fiecare, dar sepet, cartea nu ce dorese sf invere C++ Este chiar 0 carte CAT ESTE DE GREU? ercat svat CHE ga am reusit. Am witat si am lucrat ca A acestea sunt APL. limbaye de asamblan De fiecare 4: pparcurs toate codu cfte 0 carte, am (Ct si tncercam si lucrez ceva. Ni ‘Am inceecat si m& géndesc la greselile pe care le faceam. Daci folosesti Borland “er trebuie sh apelezi la C=* printrumt set ae facilitat: vizuale de ce, dar descurgjatoare, prin Widows APL si cu a feet de eles jin sine tn subieet de studiv. Nu se pot aboraa toate © ‘A rezuttat evident c¥ webuie si invat un st dati, Am eoborat la Turbo (C++ pentru DOS pentru a putea serie programe simple s1 8 ma preocupa numas de C+ ma am ales o tem de care em osupam de mat multi vreme, una care se tncra ma 1d fext decat in Windows, 5 m-am apucat si o rezolv ia C+ mors 3 Medial de dezvoltare Turbo C+ integrat (IDE) nu a necesitat multé invatatura Ma ajutat mai mutt decdt ma intarazat in munca, chiar pentre un prim proiect. Lucrand as cu pas mi-am pus lucrarea ia punct. La sf wm deja destul despre C++ 51 OOP ce si-mi dau seama e8 ar trebui 5-0 reseriu, dar astani tot oe se poate astepta de la 0 prima lucrare Astfel em reser's ceea ce am invatat si am jest din cursd. Toate nowunile strani fu ma vost meu deter, Ca ma sport ers eee mune i Heca piacere. ‘Am descoperit deus tucruri, ambele complet evidente, Primul, daci inven C++ mu trebuie si incerci s& inven simuitan Windows API i diferte alte lucruri complexe. fn at ing, OOP si C++ sunt cele dou fete ale unei monezi. OOP (programarea ese greut de explicat, dar este evidentd atu In proiecte reale. in ace moment nu mai sunt necesare explicatii teoretice. SA INVATAM C++ PAS CU PAS Seria hrvatd .. pas ew pas! a fost boteza ‘Serie & invata” Tom Swan, editoral seriet a dezvoltat metoda: serie o dati, invati pentru fotdeauna, Att mai procedat, probabil, in mod aseméndtor. La bce ati bagat man burnar sath cou grijs. Nu avet rect de programare moajul C++ pentru a implementa acest provect, in acest fel nu va fi necesar sine oprim velt fi folosit a doua sau a treia card acest procedeu, nu va mat fi de loc 0 notune now — va devento tehnicd pentru a vi rezolva o problema ‘2p sovigeow rast ostp poy ad wS-FEITy, go atebere froURsIp ¥ a1doo o Heme evanosva % :yaeouun uno yap Hepsooud aIFTOLL BRASH & NADUDA, ‘aqeang 9p 22499 utp aJorfos no guys are 16 yzvaUHA ‘mea 630 winaaud ‘sed no sed aapaacud ap asi 1S0}O] HiOA BUTOD o3seRe op ErEYE UF ‘riven an -9] aveo od “ajpgne Four a1oayqns wy} wieyas 26 EP PCE EEE EEE PEE EEE PEL VovOon-EEeEEEeeeEE EEE EEE EEE a ‘unuiow wip rzwewod pupioa}9s 1pO9p pIdes Feu sep “oIINzas vj20e HautigO 6.1449 pusecte Yo gpjid op Bye rion vey “au FtuMoUDDD nMUDd MED 9s IBsosNs =ISO9y ara}apuy ad eater a BS liaind mes eon Hama ory “2ovuyan 1ToIaP aire ySwBpe UAB ys998 ap 3}20N, eee TTT = POP ‘ese mu “erayasip aeidoo Hry "Sots my oteNy atngast LIRZNANP AISaoy rE Hes reece eet eee Oc eee ee SNE EERE EEE ee eee wv we sHputjas [96 neasa 2109 24 y juaprAs uy ateoos w nuuad axoo! nujed 1S0|03 104 aunioas erseaDe m9 pUFdoo ALIIOL ININWALSIS VANVIVLSNI ++ imfiequay exeP euid rand ferur ps unvosnous plays o-HOP 1} §v-1uI area 2d waLiRD axso BISLEY ‘ese “BRsvONVSULLND FP 2d Hisbay Bs ewajgoud aund as nu eyseaor nun top 2u vuMvaprOIU "SOLS WY np "449 mynfequut) (2 nijeiap areoayy a9S0]0F Mt yoatauC ‘yijoraxe aingaa ga injmusarord ary tied auuesrocust reus a}20 9€ wNUDDUOD wa 26 2994 “ray avy aqe22u28 urd rau 920 18 aan ‘aypid woj9y WON wo vjaDe SO IABAdHE eb HRD MISES Wh acostp od aums ayoxduuoe gins afasei “Sm fap 1583 nian #8 ynsed B) tiquns pups 9 ImBUUsT| 2d ‘vod “neg) “eynoaxe 1 pictur ‘ridaoxa 2 ‘ureoud 9p sons In 7 +59 GRAM EST ‘Bedrno ea +0 HEN eS ° 6 SA invatim Crt pas cu pas ATENTE, Bee Pree ee ee Ae INSTALL. Nu vi mutati pe A: mati pasii indicat g1 mu vet avea (eau pe alti unitate de 3,5") si inteoauceti “inst probleme. ee ee Lucreaz’ inet calculatorul dumneavoastra? Bine. lati ce face el. in pramul rina creeazi directorul \TCLITE. Apoi creeazi ter subdirectoare \ICLITE\BIN, \TCLITEMNCLUDE si \TCLITEIB. Subdirectorul BIN va contine executabilele (ca ‘Acestea vor fi dezarhivate din BIN.ZIP. ‘Subdirectorul INCLUDE se umple cu fisiere din INCLUDE.ZIP. Va contine toate fisietele standard .H. Daca nu stiti ce face un fisier 1 (de ta Header fii finssttt o€ pana va sfirgial cic va zi ‘Subdirectorul LIB construrt din LIB ZIP pastreaza codut biblioteci. In C++ nu se exeouti mimic je matematice s.2. din biblioteca. Dac instalarea decurge corect, TCLite mu vi va priveste bibliotecile, Puteli sé le 1 uitat, dar nu poteti luca ira ele are) 91 figterele belp. Nu s-a instalat totul ‘Toate listngur inci pe discheti.. CHPO2.ZIP contine toate listingurile cotespunzitoare caprtolufui 2 $.2.m.d, Daca dispuneti de mutt spajia pe hard di in ditector (au folositi \TCLITE) si copiats CHP* ZIP de pe dischetd, Dac spatiui este ssuficient de mare puteti dezarhiva toate listmgurile chias acum. ferele aferente capriolului 2 Incep cu 02 s.amd. Al doilea ingul 5-2, este 05-02.CPP, (Listingul 5. 1). Listingul OSTEWIN.CPP este TEWDN.CEP 51 90 aft. a sfargitul ti cd ele exist. Panett discheta deoparte st lueran dupa listingurile tpSrite tn carve. Este ceea ce as face dac& as fi in tocul dumneavoasta. Verificarea instalarii TCLite Mut vin directorul TCLite si creat ur figier batch care arat in TCBAT @echo off YICLITENBINITC %1 %2.%3 e445 A sainvayim or - Z Pe uri executa figteral batch eu TC ( lectafs cu mouse-tt Options/Envi he ca in figura 1-1 nTCLite fete ae Fig, 1-2. Selo FeLi Oaata obtinute aceste sein seiectati OK. Apoi alegeti Op aceste select permanente. siSave pentru a face JeUraLa| BEM sep “4-3 UONEIBA ‘OL. nqeiwaia Pig * ‘andaxe 20d 98 HU 48 31 HID aUNaLY mound ap aumos 16 ataroemo 18 (9m 8 66 jour BINA Uy LOPEA "C66 8 OL Sod wap a] US A109 23 ap fequay umn ap a10N30 MeaAe IOHPUNRABOE “UNG 2uaAaD AlBMYJos 9p a]9uu9}gos0 aoare09C] “10 Ba. 9d jqquod no YUP 0 anu auied areoat 1 ojes ojoqwounusut * arerado ap mnusarsis eo‘) MPH Pur ‘nluaoap un edeorde ap d 30} 1 atvo BAN "INprEDIMIS HTLGUYS w asks reo 0 ‘OI! "Ty SULAGE uelig 9p ysuss “eBonduoy BuuwucaBoug 2 ay, woHgnd ws Ue (oe © ar seIndod tow foo areurEzBoId ap ynfaquiy, amuarep v2 neq aug} oles ajLMIESEN Ip Eun a1S2 YS!OUGD ws vasEyDaION ‘9uiaun vo0e Up axzunstiud op 49) 8 9 ynfen miseaoe ios i aug 8 oO 2 njnfequiy je ei9g WO Imouoyst no adoout Wo ‘sto yo toa “YIEAape vases vy} spoon Bs Luompapiau tiaiuns g> nas sonsBo9q] yI}UeX ‘pouoIst Rantgadsiod FINS C) +49 ININCVEWN WZSN39D° ‘aunioes eaveoxtuurn no Henuquod 1S (XIV Hfesgae nes yingy>qa GeI90}98) HOH “aWIQ, w Bye a8 99 $9) 39 dng e 5 WEAN EST Beans sea 555 wiBTEn eS 8 10 ‘Sainvatam Cre pas cu pas Fi sateen Ors Pee Heer eee eee eee Ce Hee A apirut o problem# mare 0 dati cu evoluta software-iun suoorta programarca orientate obiocte. Aceasta a fost eviden ip BCPL. Al Bjarne Stroustrup rnunct de vedere alae Biame Stroustrup, specialist in stinta caleulatosreior care programa la Bi amare a fut C va fi denunmits D sa P se ccupa de probleme care dupa plrerea Ini se abordau mai bine folosind te si spund) programare orientate pe obiete. A tuat 0 dec numelur K&R C a fost o loviturd puternict. Smediat dup fuoces ~s-8 hola 9d adauge caractenstict OOP ‘baju C nu in uorarea tur mugurii floriior. Probabil datonité existentet implementatilor erau foarte _compatibi or cere numai modificért Utilizarea pe scara largh si compatibilitatea sa re reprezentat calea spre urmitorut stadiu, mutt mat formal, a Recunoscane utiizarea crescinda. @ fimbayutur C ~ | asupra standatcului de facto care a evoluat in mo institutul Amertean Nasional de Standarde (Amer ‘ards Institute) a Tnsdremat Comtetul de Lambaye de Progremare (Progra Language Committee) X3JL1 de a adopts un standard riguros pe care ski urmeze 1 ani de munci stovitoate 5 controverse fimbayal C de 9 Stroustrup a fal CFRONT. Aci orice posesor a moment ce CER lar peste tot unde se ‘oamenti nu mas pot pe obieate decit de a unteliger Crs jn care a fixat cet \gor de mntrodus, Rezaltatal a fost ANSI C, {in anul 1988. C+ este un limba) excelent pentru programator profestonisti 1 pentru amator: gf pentru oament care vor si invete C++ pe care le-am fcut eu, tnoescdnd sé Invat C++ 0 dati cu xe sorespondent UNIX s-au rispandit de fa surse programarea Windows s1 0 astfel inclt ne vom putea concentra pe fnvatarea scrierit de programe in C++ onentate pe cobiccte. ‘Vorn folost metoda propusi de editorul serie! Tom Swan, care va pune ta roducett parle omise 51 pe urmi agreyelile pe care le facets Veti lucra ta un proveet nuit Mic vvedea cum conceptele OOP su implementate in C+ gi cum se hucreazi cu ele in sistemete reale. Vett vedea et ccomports limbayut C++ din punet de vedere practi, st nu teoretie se up 2jetduioxo tigmeaxo #8 resnponu) ‘pide Up aured taaey wove] uo} WED urind WOURS BWA AS 18 nes 9 ajofequny arasap annanpa oury 9p 21 ‘anmuaaal 9p a ‘runsjanaisin 9p 2099 dn ap aur omdKs 100 BA na A ws908 ‘nda ‘Seid m9 Bo wsuEKP HAA, 1 9p sndoxd wre-ou tuna wench jonnsu o Has9s Bs jonnsur 0 HaU9s 2s eu TD Uy BoreURBIBOM y SaDang sgqvan B| HlaeaLy +44, muorel\dus0D HBeapuy ian “varewrsBord mntiag un 94 "GBC, uN ad pices oIs9 44D “SMOPUEAL Thupou yergduau 9190 nu ames Ioetox! 294 nud naw ynyEIeyare “HOL SOA Muore(dwos Iq “HRN IHL 44-9 esnpeIs aye 1S cI JeUOSIPg +49 inynfequs pou vounision aqs> AWIOL “slout stovesejass wip eon ‘suwOY 9p PUP}LOG JaULly ajasnpard ases0}0} JEUOSIEG rnfony e0e aby Ys yes Met 19 nu "Sodus | Ys op $e ‘swPgEI Have teu gC seid eA youd “BHBOGE sap tvaiBe nu vovdl “> * yoUOIST simussnoU PAW oO OY wT aK yaidwoa +49 arewmaBoud ap weiss un “S179, ceo wwey “carowdond adoaty 9 niuod siseSoid Wy B ANUa x91 ap soup wn wunapaonoy tind You HEA win wee EN jodwio> as ateo if pides susvos “aim Gos aso aio omnamyuOD aMNq ronSLImoRAND No Snag aLs80y 189) ap foukpe UN {say wareBinoswd BEND suKbao lan YeaUALOsE OG aermser wwe 7 3m Bed ne wed 775 UREA eS a 14 8 invatim C++ pae cu pas FUNCTI incepe cur serierea unei fumcfil C++. De ce si incepem cu o funetie? este sorts ou functii, Dack examinatt coal C++. remy le obiectelor $a alfor structuri de date sunt serise de asemenea este in mod corect cod depinde de definitie) le C++ cum doriti. Exceptia consti in in aga fel incdt compilatorat CH sa functi. (De fapt, defini in C+, dar daca acesta Cuo singurd excepfie puteti denumi fu aceea of trebwie si aveu o funetie aumit “ma stie unde si inceapi. Cel mai scriem) are o singura fanctie ‘Acestea sunt elementele de defini a functie ‘Vom examina pe fiecare in parte, incepans cu tipul functer. Tipul functiei Tiputfunctet se refer la valoarea pe care furctia o retumeazi, De exeip th DOS, vloarea pe creo etumeazi un program este disponiild pent fiserete batch fing vaionrea ERRORLEVEL. Funct mam ( (ot explica smediat extent parantezelor) retumeazi o DOS, Dac un program DOS se tari se folosese pentru & tipte de fister batch (pe lot SOMEFILE.BAT - a sample batcn file Frxup i.cee 81.187 TP ERRORLEVEL 1 GOTO screwy ~ {continue vark neve) sceewup ECHO Something wens wrong - not fixed up! Se presupune c& FIXUP este un program care cites dup ce organizeaza cite ceva serie un figter (LST) de impr mal valoarea zero catre DOS, dar daca apare vreo eroa retuma valoarea |. Aceasti comporta ‘re program 5 feral batch care exeout’ programul program Cr+, funotia sa main () va returna valoarea 22:0 daci totul decurge normal sau va returna | la orice tip de eroare, Functia main () este © functie intreaga din moment ce returneaza vatori intregt Pe masura ce seriem mat multe programe vom serie multime de vaiori di ‘ream. Unul din functia nu returneazit 2 Spune “Hello World" ~ ‘ int Ce este un nume? faptal c4 0 funetie te ° combinatie ce $2 de litere, 10 cifte 9 caracterut de s Este corect: 52 de fi cele minmscule. Un “A” Numete fu pentru a cet ideatificator Tati doud fragmente de program eare fae invoice_cotal = invoice euptotan + taxes + snippang eds mls + agiog Din primal exempiu retese exact ce face adundnd taxele $1 transportul fa subtotal. Al doi despre ce este vorba. 128 facture total di met ua indicus Muite eran nu deesebese rm folosit: aceste ccaractere aac ele ou ultd clar din context, ca in cazu cele mat calculate ¢ parti | caiculate ( part? | peant | pact2 | 2489 2014 op gaurd w} 20an v ap TIE wang {safeiuy HY (Q usu wop asauinu Q “(.uonouny area, es 108 ap ankaaros ga amo wrRLIEsSid ANION yo 38 eo Simgruoremateo Te 2 npoo 294 w nau 2a} 2469 jnijeds vy anauad ‘azoqueed am Nd 2s BO jauezed 1018908 eu 18 szoummsed an yee, ‘muewow vj euasep won 1goud 99k BA Hy 6x2 qreyo ‘o6ze WUT juTeW aET nydwoxo un gqe] orazaneed yu <0poo> (Ovrew ya op press yrs fpa "pimese 8 ap utind Ter sonpomur 98 [ASP 1891 1S yoys0ds 2s non] sooy “unaUIEING TAsHKD Me Qupmr ger ‘erioury njawus yzeo uy -() ur rovouny yinowesed azesaprston uoyrdesuy toyed 3 yjeuresed cexeqemered> UTew qT Jongun joj uae Byere nsBoU wusun4 “aM axES9p IEE “yuaj2ox9 wresSoud mun e9u9149¢ yrunDd 1S ypider vazsanpomU 30% YORE wseaoy njruoups 590 owed jautoxe ap vo “pyfduuo [ape 489 aumMOs yEqeUBA 9p aun asos0}03 wHEABOad uN MOS PU ‘snpasnus ap PuBWOPUY vj ais v9Id Mu eaareONP azoasiapun |MIaOeI09 BuSaOnS Apog 70084 TeaoaqngeotoatT is ee tun amigo w ninuad sew a 190 FOU sep IYOHA TU [SU] yz0ces uoqeayquap] Un-smp dised yj area ayuiano esedas ‘pe nantiod ‘no 1 zapaaaud ino eke “atoosi9puin assI2BIED aseSo}0} LoTEUTABK ‘gHswOAaUKuNp fn a}99 m9 uous ma BS ase 1a TouMID Hf +40 JOye|EdUIOD ENSEOARUNIMD fopun ndeauy ap ssaraeIeD HISOIOF TIN sonea4tU9P suny jydosd ninead aroosiapon araroeIe BoUDUIOSE inj op aun ward P nsIuad Jof9UunM as09siapuN ndaoKy faony 0 me BS oUIg fins quoqeuresBoxd 9p 1a 286 uy vumeenron 2} 1198 nu pupa wuigd uo: vine nquad «suze ‘9p “Dse60I0 9IE| “2H ‘9p sa1ge1e9 un FEnepe ‘puBLIOg, ALM "+43 aUTOSTS x ‘0 sep “Injtuopaysap! yrandsouy vj atoossapUN |Ms3}OHIeD ( brewms )quiad | zeus jartnoTe] | fpod”yzedox Jautad ( Rood aaedex jaqernoTes ¢ vorzoqporzur jautsd ( worsonpozauT | exeTHoTe> ‘ofaom ad snsap w0}05 Hien 2} “eu, 1S (qed, “11d, 1A ontoLUMES To atIML ME odes ap opfaRE FOU (gazed) gerd L eared | aqeraoTes a T oAPHON OW, unas Beira wed o40 WHEN ES oF 18 ‘Sa invatim C+ pas cu pas estatenents> jane care succede parametrii une: definitii de functie este ‘cod ata tn felul urmator: ant maint) serie cod folosiné un [at un exempl int main() 1 < statements > aca vret sit economisiti hatte end imprimati codul ata alt exemplu: int main|) { < statements > ¢ © vett luerat la Alinratete ajuta ta aprecta pentru prima dati ci alteeva. Pate renunta cu total int main() Este un stil neelegant, Pe de alta parte, sunt unii care prefer’ ca aeoladcle si dreptul instructrunilor. Fatéo varranté care ar putea fi un stil reust: int main Q) = statements > ‘Am spus c& “ar putea f", i adoptati pe de-a intregul, Nu accasti carte, Dupa ce alt ficut-o 2 Spune “Hello Wortd” ~ 19 necesare, Dar fiti conseeveati ~ unut din scopusile principale este de a sone programe le. (© mstructune de tip bloc nu face practic nimic. Tine doar un manunchi de alte ‘mpreund, Dupé cum vom vedea, este un lucru foarte util, dar pentre 8h abordim snstructiunile care fac propriv-zis ceva. Prima pe care o vor este instructtunea de revenite. INSTRUCTIUNEA DE REVENIRE Instructiunea de revenire trimite 0 valoare inapot ccurenté. Totodata termina functia curenta, reiuind proces rerupt de furtcha precedent INDICATE structtunea de revenire mi fncheie propri veti vedea c& pot avea loc oper 1, Dar momentan puteti jgnora aceste compl et care a apelat functia punetut in care 2 fost in tmp co mayoritatea fumctilor se executi de alte functi, main () este apelaté de sistem! de operare cin shel, ca 31 comenzile DOS sau Program Manager din ructrunea de revenire din main() transferdcontrolul programuh apelant 91 retumeaz4 0 vaioare. Tat modu obignuut ae a res din main () end tol a decars bine: return 0) Ce reprezinti caracterut aul C+ acest caracter chee o mstrucbne diferité de mstructiunea de bloc. Pe msurd. ce Introduceti punt 51 virgul la sfaxgitl fiecdre inst ‘rebui si acceptat toate mesajele de eroare pe care vi le va trimite Fara acest caracter compi structuunea curentl. x! se, mati un prograin complet care nu face namie 1c, et semmaleaza sistemului DOS ef a executat programnul ant main() i return ang yprewaUeD nD pod ap Hy} auIs ¥ 408 ap IMsap aisy “IERUANOD EIEy 2P Doo Fay |EUDUIOD ap Ung TAS uM HEAR fn YEW aS YIU uy soynseiuatu0® 'asay] aresotep auwa}goxd nae ule 18 G20 ow ajuancas vroasape Tenia We “oued Bye ap aq “YsRIUAUWIOD oyIMtH Calc wane agaoK a poo ap ziteaoas o FO HEpOFOM sugld wE-uI Nu exDUIBISOUd Zp He ap OF a ‘BUSONS jetaae pea j/ fo /4 S80WNa ON 4) uaNaez 2389 mM wp “poo 9p soxuy] jmooyfi 1 fureqeWo2 vouDUIaSe aD whoa gerses ex sua / Jy 8843 09 eTanos3 oxoM st stUa yy 1g uEMaer powoout 231003 ays aoartoap aoe} 0 mu IweUN Jep now feu InN M90] SSO HANG |p 50 eva cn SuOMMS oN Sazodex jy -g usner (GuruaveT 403 aeat sar) 7 wexBoxd exerduoo ysaty 29 }/ (jure aut ezey ‘wexfoud jpTI0M ‘OTTSH 843 97 dn Suryzon 02.08 S667 ‘s¥00g SOT ‘azeueuTYY “7 uTaZER ‘ABDOL 4d UTeOT 30 2 yerdey wosy stduexe Burmuexbord vst sTuL ‘en vaysonposnu nn ‘a rensed as0g & Po v8 ‘innytaisod samen HPUL BIRJO BA ‘Bnop 3029 ¥ yWOIP ¥poULlONN roM sIMUI yS9 d:BITEIeD ~ MHBMIGUIOD no FUIULID 25 ~ 4j — aHBUIQUIOD o 19 Adoni 2d op weyuawog eee Eee eee eee eee eee eee eee iz “iPHBNA CTH, 8uneS Z Bs adzouy ip uxnaez (Buyuawer z0g asnt 8.93) 17 wezio2¢ syeyaro> 38273 Imo // — (juTeH aut youaxe waa Wye] a nwajq, “unpow yop 1SigJs Hj Bud BUND 95 8, atr9eIe 8 300 95 aponuowad +H) Uy +49 HeJUaWIOD, ‘Boop no adooup “suns 2-20 2amp m8 | pO unio sztudins veaw nue nnuad yeu eiBoad vormsofoyy “imurexBord 2005 29 unds eA axe Am ‘seIuoWOD eAaID uNLM~pE ES oWIEAOIM ap KaIDLIOS daa e ap IaV.LNAWOD ‘adngoand pa gs oingant nu 1S ones lusts ae arou0 ap 18 89 “aN"TDLL @P WeAlozad aise axed “MSHS B ARELIOSUION SOG ang azeuumrar Bs aso risip Buouam ByeO} wreaUIse Je “wunZo1d un gareau SOC PUES “midutaxs ac] Zamlwod ap ympoD 2onf 2 SLLVOION Beane Sed 9 WENT ES @ 2 Sa invita G++ pas cu pas ‘exist comentasii trebuie si retei adeseori serierea ccdulus, in cazul in care doresti si stabilegt sau s& imbundtitest ceva. ‘aid coxtul examninat, insopit de comentarii rezonabile a” This 49 a pregzanming exampie from Chapter 2 of Learn Ct Today Martin L. Rhanenart, IDG Books, 1995 We'ze working up to the Hells, World! program, nere. ” int main() // our first complete progren return 0; // xeports NO ERRORS to the 05 Comentarile care identificd aceastd carte pot parea putin stupide, ymfind seama cl ele sunt tipnte in acest caz. Este adevarat, dar gindit-vi de ce adiugatt comentari Probabil se vor introduce int-un fisier program st vor fi executate. Cineva care out are accast& carte va da peste fisier si se va mira de ce este acolo, In acest content, ccomentarile sunt exact ceea ce cititorul ar dors sti. Folositi intotdeauna multe comentari! INCLUDEREA CODULUI DE BIBLIOTECA La tncepunul acestui capitol v-am promis c% vom serie um program care va. spune ‘series. Ceea ce nam mentionat este c& atit CH cat $1 C ‘nu au comenai de mtrare sau tesire. ‘Nu exist comenzt care si ciieascl tastatura sau mouse-ul. Nu exist comands s3 ‘comenzi care si citeasca san Sh sere pe discurt sau pe alte nevore de ajutor. fut C an evitat tention de alt parte inseamna ci trebwie si fumizati un paciet de functit care s& manipuleze complexitatea hardware-ului, Multe multumini prietenilor ae la XII. comitetul care a dezvoltat standardul ANSI peat IC, pentru fapiul cf au standardizat funetile de baz& de intrare si resire s1 sunt disponibile in forma stancara ajelor C gi CH lat pentru aceste functii este ictus in fisterele 1B) furnizate in acest caz de TCLite si furizate ‘eu alte medih C+ pure s& comunie! compilatorulun C+ aceste A. 2 Spune “ollo World!” 23 antet, Mai inti, si aruncain 0 privire ta functa pe Folosirea printf() 2 afiga mesayul “Hello, World! pe eoran, functia printf), cea tat ‘character steing” }: care va imprima mesajul “Hello, Wi printf! “Helle, Wort: CH pune La dispozit pe 0 sigur nie repreznt pond) prezentai este un bun exemu de fs nico valoare. Tipul et este void. We care execut ceva dar nu reburneazit ‘Suntem aproape gata si scriem programul complet, dar compilatorul nu stie de Lunde vine printf{) si daca il folosim corect. joueusodxo e azeinasnoe ap uewodun eu n29 patted insti aya0d so4,I019 aE ng disoo vy ap arvoue 2p afesout 2 waxy 98 “RINEISE 9p jntuEsONd uizarcor 0 o1vo gIEvOOE pUISOIO 449 ays9 1mo4, s51p 2 ovum Hane mu HERONS puta aIs@ ISAO ‘nas eya}dtuoo ifan |p sea ad osip ad op nydiuoxo un no "yeOUos ew wiind eurajqoud enioge wos “wesBrd ‘sojaiuromg ‘aingan Jo “npoo winDeKe 1S VsevLNd3Xx3 18 YNLYOAT 3d VANVLIGS “VSN dod sou ‘99 vareupo "eareduloo “wasponpostut | BIE em oureiBoad ey aBunfe-rian ‘sorguun qnyoudes n> puydeouy “pugs « auod feu afequay) EIS “2}PuRG oMMBIBONE 1308 BS Jom eaNd aIs9 NU 44 ynfequay uj ‘youn vase ezyqeas woe-u xmyor i Shin) ap yrysop winap um sanaved wry 80 943 09 SuoMME ON Sz0doz // {9 usNgO2 (gIBTSON “OT IONy 13aEExE wexBoxd exetduos 3523 2no ¢/ (jure aUE SonrouTs erou ‘uezfoxd jptzom ‘orteH eu3 63 an BuTAI0N 8r,2N *g66t 'svoog gat ‘gzeuuToy -7 urazeH iAEDOL 449 uxeeT 70 Z xeqdeup woxy sréuaxe BuTuexBord w ct STUL :nujsou maynurefoud w ysz-ncadoad wnooxo 18 varrtstuod o| onam Won PUD “amOVEULN wounas Uf 1010} WOX [E9189 ot yoidweD umBOAd ye) “aaUATE AE I 1 iPLOA yduiog mueBoud enos nid J0sacau a9 90 YOUNES InjnweaBoud earejquiesy viwanoasuos no asus sky ap ouine His0}04 \s0]95 10d 98 aug 3p J>] &] ossanHdaKd osnf 28980}0f eUOSL J "958100 9p TnyTLUaSIs ps0 9p o1ouunN Sansa aie asasojog amr ‘ajnosmunU! ayy “ejnosniew axon ay 1 Joyivaavos yrvauuioguos 96 ayinase sofazauesed 101 spntoury sanguaisy injotunu jounf uy uorenuayap vo autnose ezarwered eceazi|nn 28 TOTALS mUax9 2p {9 -soYsamp S950 UL OKIE U9 HUNDg “GOL TONNELLITON 289 8208 BH TDL rulag “PrepueIs axapmoun ap aaKsy 9p insD}aHIP wip auTAaxd apmou OY ot4 spnyouroa eT7s spnToUTE 289 us UXEIUNS yorEHy ardoD 0 "dy use yay gre wing “iouSip num zarepnyour 9489200 ‘21s9 sossooudaid wanoaltp gerizn FU La 2p '20e) 8 pag “ysins UKE ‘96 pape ‘ounye 189S0}0) 25 "9P -oyeysciutad auds po stz-ntadoud 2 ‘op anpyeudiou yums payssoy “BSuNe FUDHSLY UE Bsefc oN wf aN “ossaeidard rzuoxu09 ayn Wel ZISIXg “enSEOAEauTUIND ojauTEATOI aysoo" muocuoouy & nnuad PIEPUDR 1a wayrpour ap ead (Sef He yO BAnIpUED sOUS! ‘yems ators ap 2ins H'OIGLS Basepnjouy % “TIPVON OH, SUS Z ‘Beno wed +49 weienal ES ve 26 8 invatim C+ pas cu nas Editoare ‘TCLite vine cu un editor multifisier inclus. Este un editor bun pentru programe miei, Daca va aduceti aminte de produsul Sidekick al fine’ Borland sau de mai vechiul procesot de texte Word! cum este Windows 3.x permite executia TCLite preferat tn att sesiune DOS. A s ENTE Dac’ folosti sesiuni DOS simultane, muluple, TCLite va fi pelt, Nu va st c& figterul pe care ia deschis 8 fost modifieat in alti sesiune DOS in timp ce nu il veaea. ‘TCLite nu are de unde si gtie de a dour sesit tuebuie si inchideti fisterul ‘mai bund este prob rogram HELLO.CPP, Lite pentrua corecta eror Introducerea programului Pentru a inieauce programat i ul 2-1. executatr urmatori past World!" © 2 % PAS CU PAS. DOS sau lansati o sesiune DOS. sete drectorul \ICLITE. \TCLITE. i editorul preferat, introduce o copie alistmgulvi 2-1 5 salvati-o intr-un fister purait HELLO.CPP. ‘TCLite executind TC.EXE. ideti HELLO.CPP. Dact ati executat paso! 4 igterat roduceti figierul acum, 2 Spune Listing 2-4: HELLO:CPP // HBLLO.CP-Sampie Hello, Woria! program // Copyrignt 1995, martan'L. Rinehart ‘This is a programming exanpie from Chapter 2 of _Meaen C++ Tocay_, Wartin L. RinenaFt, 10G Books, 1995 We! ze woreung up to the Hello, World! program, nexe HineLuge int main() // cur first compete program priat#( “dello, Nord!” 1; return 0; // reports NO BARORS to the OS /Jena of HELLO.CEP '$0d yumi ae ane puDg oI eT A ipo | peccainong speatienenvd beau aiNOLD rege vt asee-ersunoIN9 manaoberanao ear zsh eg yore mB) DSU y's osANY ‘0g cum: 93 hy "Boo Je aun, ‘9 ug us eran si ‘ed psa 219 uno Sov zy Bul som ¢ ies oan] a Teno ung aise 18 ere wesBaud rnswonwaun TaiPON OTH, Bands Z 8d "SOG Inuege Yeas—> rajdwos yeinoaye ws jou na 1D “PURLIOG BaP 449 eonpard au ps 200 eBay Hof He woocy ayeqnoaxe 18 1uMe69] ap o1eyIpe ‘osejidWIOD 9p waIBUpS 18 9g “RaxeyJoUWioD WPI yO rasoa yt anus Bw as Ja TOTTI 2 Bd wgemnoexe wesoud un-nus npoo wiuucysuEn Bs HERaxe WINS ANALY HpHEMOD aISOG HRS BE 1 Bop 15990 MP jad yaoun-) nes as vse Haan In oyup ap giaseo o ap renown ti, “enseauay if fiosyde eswaoe ep ap Bed no aed +49 wHEAUI ES % 30 Sa invatim C+ pas eu pas Listingal 2-2 prezinté. codul imbundtitt. Puteti sterge codui existent st citi read02-02.CPP din subdirectorul SAMPLES sau putett folosi HELLO.CPP asa cum este SUGESTIE Folositi programul existent fn loe de codul din SAMPLES ont de céte ort puten ‘Veit face economie de timp si toute schimbarile ficute se vor pistra. Fotositi SAMPLES ccénd nu aveti altéiesire Ca in cazut tuturor imbunatitirilor, de acum in colo vet introduce numa lnile eu wgrosete, Pentru cazu de fa listngul este complet, dar va vom prezenta 0 parte suficientl din cod pentru a vi permite sh observati care sunt modificirle si adaugrile, Listing 2-2: HELLO.CPP // HELLO,CPP ~~ Sample Hello, World! program 17 Copyrigat 1995, Marcin b. Ranenart ” ‘his is a pregranming exanple Crom Chapter 2 of Lbearn Cr+ Todey_, Martin L. Rinenart, TDG Books, 1995 fie're working up to the Hello, tierld! program, nore! ” #include #inelude int main( J/ oar fixes complete proaram princé( "Hello, World!" ) geten(); return 0; // reports NO ERRORS to the OS 11 end of HBLLO.CPP snd of BEMOCPR t+FD gi vedeti ce se intémpla ‘va arfla ecrane! DOS. Apisatt “ace am dont de fapt. Dupii ce ati fu Daca totul este in ordi coricare tasth gt se revin 2 Spune “Hallo World!" 3 Ce se intfnpl acd ati uitat sf introducen fisterele antet 1 dowd caractere / inainte de iclucie? Punen #include pentru a © transforma in 10 casetd cu mesaju! c& aver erori. De obicer va anunta c& getei() ar pe care il vor analiza in detaliu mai térzm, sa csle invéjate. i) $1 getch(), eu REZUMAT 1 untrodus si executat primul program in C++ Cu aceasti ocazie att we de iucrart despre limbajul C+ gi fact ceva despre TCLite IDE. are program in C+ are 0 este ex paranteze s1 c& parantezele ructune de revenire pentru a returna o valoare null ‘operare DOS. Aceasta este valoarea care poate fi testa cind ERRORLEVEL revine in programul baten din DOS. fe asemenea, alte apelur de functe ca mnstructum. Puneriile apetate funetie care sere pe ecran st getch{) care citeste un caracter de la tastaturt mys Weajade “asEd eI ‘982 190g, soreuresBoud yo ¥iuap!62 ARKAKRARRAAAAAZ nsuco wos Bede eed +1 wnEA ES Ea 34 Si invite C++ pao cu pas hu se agteapti sf stability recordunt e prod vets cunoaste C+ sufic ‘Nu aga procedeazi insd si programatori rapiz. cco lenesi, cto exceptie la care ma voi refers, Programat ciiteva rindun dintr-o data, A programa repede inseamnd a programa putin, Parcurgind aceasti carte, veti tub nu Seriu mat de cod este ‘chiar mas mutt, es, Cu toate acestea ven descoperr ca TEd vi se va rind pind cing au v-at) ru dumneavoastea,§ ccelor 100-de- 4 pornim, PREGATIREA 3.Sadosonam cascte_” 35 Listing 34: T.cPP. 11 9.03P dnt maini ect routine return 0; 1) end of T.CPP nungett og de corn Success, asa cum se arati in Fig. 3-L Fig. 1, Compioe reat ‘yoorougig up a ut ap Bjostos op cue v] 1€ tupjade ys inqauy a “Iojazoseo v axeUesap ap wnpadoid vIOAZ—p ¥ Rag ‘e019 0 munuad ypore nf toa asa IS ap winpadoud poo wasn pour EYOAZAP 98 YO zodOas9p Ne, “UEIDE ed ares Jonas nluts azouocap 26 ¥S tnd If 40% “nyaWAxe 2p 2191890 2. > unqe Boe 9} BS wind an 2aIGO Un aito <2) 199 Bporate O, ‘960}9 19/908 9JOPOTSUL Up BUN 1uDAap BA BINPIOOLd FISBOOY toa soyeuzin ynjonice.> Uy "wase ad aresno purpuasap ‘amworeredaid areuresBaxd ooey toa judeo ysoOe Oy H'OINOO ILLONNA 3L1V ‘eroureaGoud ap wiyonde o0 gs ereB wroquns wawow ysa9e Uy “ssa0ong nfosaw ap 1 a4LamI02 no Joum, goep MPS pices onwOS sOHeINOTEO ru gs vjdurgiy ay200 2g “nqautei99 v arerpsox 120 vo eLdIEAL, 95 HOE DUN Io puess9 vopaA Han “Gs-HND HIB ial wos nN, ssa0ang pundsys ys mgaa we apdweg inorep wep wasease oC Yaze dtudo wadax 8 ned now p Gd-vy Hosea if vazeox onuy BsBIDP UY AVEC “dD L roe aint ion “sag espa "aBassayy ensearay ‘ausoy9 fro Ouloo yzvareaes ap 18 mound rains 19 0 BRBBIDOIOD IMIOW ‘antOre 1919p © 70 “auanoe aise aug ne animes wuswatay“9BHSSOWY BAST=IRS © pupar sang Kec yoep Yo aisa soup ru 18 sop "wSIaN 3S 1 is _tueuoou worep wa WR sau apa sets ay EU Ho} B yMPOD moO UME WRIDN] “watHOID YEA 360} nseangy Up aPBO19 9p INLESAPAL vein “compas yaood|- any © ‘myemjaop pane ap ‘avonguun #29 y ovo arn a ‘BiaSED BLEEP BSE 1 garosgo as wna wie “aBessopy ERSTAIEY UL axeOHe ap esau Ut ‘reyidwos nsqwad G4 s9f¥ NOU UEP Ase a8 roUOriNRN 40 30 BUS 9 urnaez Oeren erg puranoz 302-440" // ddd ee Guns Inuzdoad 1s0}0j “asip a4 mat) Z-¢ wun eau poyY “RDYWEEP: © ys IS AIBOR © LUDO ‘os801198 o]ousa}gOUE mutta wanBIU99000 BA fe ayannayy ugepce 8 Sipue® ea ys sigan “arearsoW eUILd 2 ap sss00ng" 3us3978— ‘Sedna sed sap WHEAT ES 9 ‘Sd invitém C++ pas eu pas 39 3.88 deseniim cascto fate intr-un tablow bend, ceea ce Pe pagina CONIO.H toate fi ji, Acestea sunt evidentiate prin culoarea fermatii suplimentare aniet CONIOH a & PAS GU PAS Folositi T.CPP-ul existent sau deschidet: 0 now fereastrt T.CPP 51 citi ia ea (03-03.CPP din subdirectoral SAMPLES. ude Listing 3-3: T.CPP ‘ 1/ 2.02? == vest routine fereastra arataté in Fig. 33. Daci fereastra de help mu umple ecranul, Incercat: i comutat i de dou eu mouse-il pe Jos, pentru a evidentia ‘ysPaoe Jojarasea wareuasap ad2auy WOA pi alos ¥ HUM H’OINOD up (iain “Yauowase ap ‘ap até da 9p aqueisuoa au2s 8 AWD FOILS UP 4oja19}9e129 BA1BL9g sioaa youp woo oye 8 varoour Hang o|ouny sop tieind mes aE us Iq nb908 Eas w somng (0 #8 1 °ZHilg ad nswape HE apse “nSos) ese nied sou iq ria 89 aex00) 20 “rp}d-4ULid ned eyrDajes vaswoIno PUA 15 Pu mjoo iy ain BA IEC] TANSEGIE UE EZBE2MIOD 9s NyEpUNY. 1S ARE soIsaae @ arinaaxa i$ unpHai ap areype “arejdwios nad now Wp fyso19} puES FUR angle rs99e M9 o11OS 26 Of0OU! LUNdE 3p UEIDD od ta1I0S 204d) 389) 9p IyruNquRe soAgrIMdsAI09 UO |R-oKKg BrWOIDS (jagepeA} wi}uN] seg JO DU // 9 unger oC ee yaxaeaxes (Qurew aur SenTOUTE ursner 3003 -~ a60°4 aor Bune vane gdb nm je, RAMSEY “QRS DUISO|eY NAL Ap TINGE ee seton 2188 ImU}dNo BAddHe soUO MAMUEG jEIEPO|Ms MOIEOIBD wIaAD uBIQjHIOD est ]Helannar ‘oseouDs uyziyase naguad 3 {S96D 280 r19DUy 0 pAyD u oy B9EG “auld 3p vaxey!98) ‘und 2s-npurgasoop °{71 2] g 8) ap 990 ad w2ealqnp ¢sz BI URC gZi arainanNY avo ad armiqese ap Fea wesond wm a9 — -yowvay pol th WHOI'SHOTOD wanoax um amp eats ad ap apap atk ASATAYS Iscioesipans up WOD'SYOTOS |nwesBard Heynoexs 1992]98 g¢z 2199 seo} wapaA B nung MNO 18 anjme|eUL varENSUONEE “parvo(nd pnjout 1x9} ap ayawnal aI Op sjarngune een wos senio2 feA) ¥BRA wes suntow o a9 JeyLo|Na vaIoqe dxd59p puxgion Icey act ‘ota sores wea 24) Ws toorord un #9 na earaflare amu W409 967 9}90 UIP sof Hiaynd © 219 nifiou ues tin ad gle 389, Jojyoino eaieBapy HOINOD Howry ane 1S arenunuos uy uegzyN Bg “RSueAE wo 90 yinsyu ad edLOEIU BA unutjuoo audsep 23pm rew wizauy tion 90 ganspiu ad ray) ESRAge YO SaaiwaUIE, TAjeIUaUINOOD t-HheAM¥D 1S o}@ OMNULP BAT juny ap PIs INZBA HE 29 BEP O “HOINGD butuuoxs vA a5 "Bs varOeNNS 4 uno “Jude No EAaD HaDey Bs axa goep “arecaaN) | apundsBIw NMUaK! “UMNO ‘Sei ne wed 4D WEEN ES oF 2 Sainvatim Cr+ pas cu pas se numeste argument! funchiei. Nu stiu de ce sa deoarece iment au are un argument, Argumentete sunt Listing 3-8: T.CPP 1 T.CPP = test routine #inciude int maint) eextattr| 239, é NOTA Aji folotapostoafe penta delimit o costanl de ip caracter aga eu este 3.88 desenm casote 43 ‘Unmatoarea pozitie pe ecran dupa coloana 1, rndul | este coloana 2, rindul | file pe ecran avanscazi pe orzontalé pang la coloana 80, rinaul J, Unnitoarea devine coloana i, rindul 2 ‘examinat cocumentabia pentru putch(), afi vizut od accepté ca acum i-am dat caractere, care nu sunt le. primut argument stabileste eoordonata x ‘vzualiind ecranul ca un grafic x-y) 1 al doilea coordonata y Tn modul text standard coordonaia x poate fi coioana 1 pana ta coloana 80 Cootdonata y poate fi linia numdrul 1 pnd ia 25, seu | pand la $0 pentru monstoare je VGA. (Standardul EGA mat vechi suporta 43 de lini, mu $0 ~ vom folos acest iver i eteva minute.) Listingul 36 prezintatrei apelun gotox resute eb mstruetium puteh() Listing 3-6: T.CPP. J) B.C —- test routine Hinclude sentourg euranor as03 -- aann // dao 1 :2-¢ nuns | | | sojarworeinayea yuIso}a} & andsOW 99 epRELIA LIP Reap 90 ParrOMA o — sorUOL 20 150d ad s021A9I2 ‘Dd Un ssajoy ws earunied en QD wainu yaeaeye ageo “ppc 18 reUION eDprA yNpOL! 21 ‘Vion El rendgs wxayes ap cu “urmoud WA BA oumIsion BUA S908 of Hein Feu BA pep Hap orate vy Bpou mox OS/eP On uaaTMS // (99 yepourxe3 £( ase#9 yepouaxe aquoyeaygea runs lugs aise SEF “= pou JORIaUTEL 19 68 10D Pine 2h 389 089 “pror0o 0g so}00 POW! OSE. ££ w0109 9g EID FOU 98) = op aIseo¥ “F9 InpoL RU ojotuesBoud 299} ¥ AVA a5960}05 as ndsauo9 2jafean “one wei90 Na aoc re Seon “Pug apis unpues ap InMaewnu eeaqe3S, 1wes2e vjeuoserp ad sivoqgoo ys arngant SHAE IS gd. tuatsy, uw ()KXOWE ja 2:99 “TamgIMZas KoA tan 2yseoe we miued 6+Im3) op ‘yesea umUBeEp EST Bedrno Sed vo UeTEAGT BS w 46 ‘8 invatam C++ pas cu pas Scrierea functiei de pornire mngul 3-8 am mutat cee tel fumette numiti startup(). fn m: ing startup() este de tip void, deoarece nu returneazl o ropriile functii, ave griji s& apard inaunte ce Listing 3-0: T.CPP 11 B.cPP ~- test routine #include void startup() ‘ tontmode( C4350 ); geten (1: recur 0; Wend of T.CPP ‘SUGESTIE Metoda rapidi de a construi propria copie de Listing 3-8 este de a thia cele lini detucru din main() s1 de a te wntroduee in main()-ul de mat sus. AdBgatt ayo ape 2 Seen cascte a7 de satu) In man si addugat restu de cea startin) penta a 0 face 0 unctie comet din marile avantaye ale programelor C+ fat de cele mai vechi serise th C — se pot testa o multime de eron stupide de cdtre compilator. Pretul pentra acest avanta} este dublaren efort functier startup() de la pozitia sa de deasupra fui mau Listing 3.9: T.CPP. // T.G2P -- test routine Hneiuds svaxtep() goto: puten gate pute soto Baten! * 10. 8 45 gatent). sajose9 unt uw 10 suDs ‘no pugdaouy ‘asa}oese9 ido wp YeRLIOG 17 ae PrORAWOD feu! apENFEPOUE O “LNaUIEIEd ep FTN] areuasop 9p wiry 2 1 arzuasap op rorioumy 3d ojouuouis[o “Jel0US8 zn ap 219609 19 ‘dss sojarep wasy.gEIS uy WsUOD aUTIN ayaseo jeun ealali9g “use oc pase 0 erwouasap Arvo Dun a9 2105 WA 0 9809 a oxouy Hung “UIE Up wee 1 ameod ales afouny Budd aus w AN roWUURL UINoe daIseOUTD "pqvan| ap now wip land 24 ‘ase990 mIep ac "RoW WP 6y.44ND HesEde i FnsuNy eere|ZOp no eA DMPA gaya go 5uS // 1 Qa98aT9 4 ee jazaeanea Hoses Jepowsxes (ianazese toe (urew aut FQanaaeqe pron, eenToUTy pusanoz asea ~~ 4an“d // dd OL :0}-¢ Busty (01-€ Bans] wep 9s Ques naywad wex| oop no raw09 18 “yaunod ion yo pupundnsaud “noun 9p es wit] wy wiesysop wreansBaxu YW amo poo ezauun 9 (fidsoDe nes) FadeasE 25 nu “inewrered ap .cmoroxd un wae Ys ingen Je dru, YO eunds yA 1] ayaudo 96 jetwoo “aumustoa wisveae ad GHD ‘supeags op arewsn ‘Quem my wsdnswop 9p yeu eg “08 de 9p UN BUSSOAS aayd 30 Du // 1 tQsseate 4 ey )xaaeaxe3, #( osero yepounxes ? ()anazeas prea, fp uxngaz cy ‘ayoses UipUESOP ESE Sed no eed 19 WRTBAT BS 50 ‘Siinvatim C+ pas cu pas © 38 desenam cascte 5 feta poraer!S1 == bottom center border /6I == left-poteom coxner re folositi culorile, dupa veti vedea cind vor serie functii, [at un exemplu de apel al functie, pe care o pute numi Box_draw): // 62 48 yell Dox_araw( 5, fon cyan, 23 1 wnite on piue 45, 18, Jot", 62. 231; Comentariu nu inseamna, bineinfeles, nimic penta compilatorul C++. dat tl cand parte integranti din apetui de funche atunci cfind se folosese valont ipsa lut, pot fi far vatoare, NOTA In SAMPLES am dat alt program, CHARS.EXE, pe car ‘a vizualiza toate caracterele setul ASCII extins ile IBM fol regitsi toate caracterele necesare desenitil de casete in aD. Parametrii care cuprind toate aceste argumente se pot scr in felul urrpltor: void pox_draw( ant 1ft, int top, int rgt, int atm, char* border, int outline ciz, int contents.cir j Ce fnseamnd chare? lnseamnt c8 pul parametrui este un pornter fa o mulime de caractere, (Fars “+” arf doar un singr caracter.) Un se de earactere fn C++ est un tablou de caractere. Parantezele drepte sunt utilizate pentru mdicii de tablour: si primul efement al uru blow este numerotat cu 0, ft un tabiou ce earactere /* chax* porder == an array of 8 characters = Left-top comer == top center rigat-top comer rigat side Porderf4] == rignt—pettom corner Dorderi71 == left side ” (in C++ dou’ semne egal inscamnnd “este egal cu”.) Parametrul contur se specific’ ca un pointer la caractere. Se poate folosi in functia voastré fie ca pointer, fie ca tabl Jn acest program il vom foiosi ca Tnainte de a seme program gotoxy) 31 putend din T.CPP cu TNu teceti eu vederea direc ‘STDIO.H pentru a folosi printf(). nevote de fisierul antet Listing 3-11: T.CPP BASSO casa Jnl POmanasanasasaaaasnansasannsasanasasaessanaaassnatt ty T.CPP ~~ test routine Hinelace FincLuce vora startup(); int main) startup); a, 2 ds prant€( “write the center” ), gotoxy( 1, 307 print? ( “write the botton” ) geten(}, return 0, void staztup[) textmode | C4350 1; textatte! 23 17 carser(); J) ana of T.CRP tf geques ua 9922m, | saurad ( x7e7squequoo qur ‘ayoTeurqane qr ‘zopz0q_zeUD vue 3ut '38z aur /doy qut '351 ut )mmxp” KOT PrOA, tg aanges #)uoa86 fC ez 129 ‘ulyorf 4a ‘at ‘sy ‘gs +S mess ioe syonateas [purew qu iH te ()dnazeas pros ( ajo" sausquoo gut ‘aroTeurtane aur ‘zepzoc yzeuD feng aut /96x qut /do3 guE '33T WUT )awap og Proa e-ornoo> epnTauTy @paTsUT# suranox as03 = agora // ddo'L ere Bune ‘Qwen"v09 erauny gzeojade ares (Qureu up tamuy) ayengpe ojoqourn@ae ‘vouawose op “weFY sHouny ep wiiuyen w1 I$ cHeIEIZap Bi HeSMEpe wsoUIEIeC gre E1-€ InBORSYT ‘erere]99p vou v nsuad ‘nina x8 yound teBnepe i inmatsy & yndaouy ap vEiZ0d UL 90m sso}0y wo 1 reo ad yayureed 6 siequowniae wingpe WOR tody Jo8 Jape WEIS Inu fe Sns UBS jn}}os Uy BIONaT WANE ‘wo 9p 1Sed ap Sy 0 Hiepen gs ingout ae sunIston TaseaRE tH g4snD tested HOE ee eee eee eee eee eee eee eee eeeeeeeeee Sao 50 BLS 77 +o aoeaTs) Hee 1x3ae3K03 +f gg€69 1enomxea (Qonszeae pros Qnexp ea pros ’9 ummaer “(yuo 3e6 *yongzegs (urea aut }dnaze3s pros exp xog Pron epnToUTy sEnToUTy ee Eee ee eee eee Cece ere eeeree ddd" ie Buns “wun eunns o-nuy gpurgna gw e ap s2so|ay 0 area ad pooopnasd ap (© asa EXeaDY “a]Pas {Qgumuad ayymuauios tno vapor can injmurEiBoue vasoUDs v} aSimle won Puy. 28 “Syaae UapUOSOD ESE ‘Sedrro sed +49 uieigna FS 54 Sa invatimn C+ nas cu pas gotoxy( 4, 30; print?( “erite tne cotton” J; voia startup () textmoast C4350 1; textattrt 23); curser ()7 // eng of T.CEP Faceti aceste modifica: si incercati din nou Ctri+P9, Ar trebut s& obf fnainte ~ tet comentarii pure in stinga sus. Daca apisati Aitt#9 doar Success”) dit nu a fost fo le mesaje va tr un parametru ‘ecare din acestea va spune bbox_draw(), Daca credeatt cf ati rezolvat 0 ‘eroare. Acum retevém faptut c& lucra cu acesti parametn, Coltul din stanga sus ‘webu! s& stabilim culoarea (atl aceste adaugan. Listing 3-14: T.CPP void pox_drawi int 1ft, int top, ant rgt, ant ptm. cnar* porder, int outline clr, ant contents cir } voi startup), J/ set the outline color sextater( outline els). // write the top line gatoxy( 1ft, top ); puten( borae=T01 ), 3 Sa dosenim casete 7 cu contextul necesar, pentru a putea face modificdrile ia propria cope. INDIGATIE CirHF9 in aceasta variant, vets avea un singur caracter de colt aga cum arati fig. 3-5. ig, 35 Apa Com sting a Centru sus Acum sunteti pregatit sf desena o ine din coltul stinga sus cdtre coltul dreapta sus. Dac va aducets aminte e2 putch() avanseazi cursorul, va dati seama c& tot ce aveft ( uioagoq ova oatam, )3qutad Ho“ 1xo208 ( .zeaues ax egtam, j39urad 12/7 )hxor08 esd 4¢ (ruxepseq pusand , (asx > + yorrum eps agt- p et { to1sopz0q. ywoane H doa "337 1/arox0B surt do9 ou3 eaTam *¢ aysTeurrano j2a3e}%83 Z0TOD BUTTINC a 788 // i ‘yanazeys pros f{ ayoTequesuco gut ‘aTo“eurtane aur ‘zepzoq azRuD vmag aut ‘362 qur ‘dey qur ‘337 AUT |MBIE™Kod PYOA, da 9)-e Buns ss =p aims ares ¢]-¢ Busy ej Hosen tsfeuNOs 220} op voumiod (22042590) e 8 Jaye auW 99 wing ntze ps0 puws tt6010} (© BS Inqan Je foop "ylverOUs teu atiesodo onmuIG FIJdWNOD PAINE IOS 4+ BULIO, ona yf iteTet vert pune 7 feet au +H °D tana oa UMS YUN Bop aTasRONBULIP “yLqeLEA o ef 1 Rope soreIada IssOW mRUALIAIOUI 2p 1 I+ vups ‘ios © nawuad ()yaind ysojog wre ess BURNS B ‘eseD BLSSSP ESE ye agt sp aur ‘eevouun uno ednp “yretit aztoqua o 18 ese ayeod as 1 “eqeUEA BsRIaap 2s pupa founy "ung epovout o yiuizasdan yearn 98 aTe> UL [0] UL AA YO 880 TIGA eM 3190 9 eA ayzo}arzjoap 96 YS nusoTE o> ap mu] enop mes wun ly sjaurpiqoud gyozas 16 elEquUEA you ‘Liam © ap suinU sIseae Hyso}0y BS HHENUTUDS ata] feuowpen uns Bony nxwvad Joo eliqeuE souR idlnsap auiu Brayard 35 JojayIqeLEA BarELOFEW nNUAg ‘sumtjanaastr eise2oy “ajauinu xf jndy 280p AqeIS (Quand wid aatgese un urzonpasjar 30 eIep an ap varzod wpolpar rps “yjgEizea © valD wiaInd ‘ep)zod wuruuaIep au e RUE ( \tusspz0q juoand ( auBea ge g0u ex,em ) eTTum Popopmasd ty 29% BS UAHA 39 HIP] xeu30 943 ue ( ) oT Tes [240 gong 0 a1es ap BTENZn wporeL ase eIseaDY ‘20}q eaUMToNASUE jonas eUMeapION B> ( ) errun . Dar exist’ $1 0 metod mai bund, Creand un sir care are parten rnijlooie putcn( border iO) }; | preasambiat, si printf() pentru sevierea fiecdrei lime de mijloc, in acest scop | artrebut s8 privim mat atent sirurile. (/ write the top Line int i 2 lfe + is wnilet i< roe) patent border andi cconstantd de tip sir de caractere — ca de exemplu “abede” — C++ ul girulul, Este caracteral zero, sau nul. C+, ca gi iC inainte,folosestesirul in format termmat cu zero, in operatile de manrpulere printi() sore caractere pana ayunge la zero, ‘Dacii am fi inceput cu un sir de caractere spabu, am putea folost serie numa! corest de caractere spabu, mserdnd un caracter nul fn eapatul drept. Inta un exemplu patch( border(2] }; gotory( t, 2); printf( ‘write the center* }; // blanks ig a Leng atzing of blank characters Dupa cum rezuits din lstingul 3. linia de sus este completa. Fig. 3-7 ara , mai avet! nevore doar de o funetie pute! inia de sus complet blanks'5} = 0 /) pune an zero in caracteral € print#( blanks}; /f impramé 5 cazactere spatiu suTT Goa ara eatan , | areTeestan: sazeaxea yoroD euTTINe Bua Tes / ‘squmques qut ‘3778 a aut /384 quT 4 squeTg eI ‘too}ffur waned rujuad (\punsd 1 ()Kxeno 9 uns Qgud iS Oxo ajuntody a ‘MuoyguL aas9 ingaIzeyY “2UDO}OD Og POAT | YOW aD ENISEaIa] aDaRBO—p “nifEds aIaI2EAD Og stznpwer enop ed e123 -83¥0 Bunt oaze03 Ere tn ease eisoz¥, ‘ata, 0 3 ‘2d 8 mua vesesiodsicy nFopaRR, reetene 1B8P, 4.0084 = []3e03 seus fu Ime BOMp Jnun “o}dyUF UNA evoNweU BoBC ‘Wenovaztau0s 2} jn0 19 Oe mg BEE yquuea najad \dwo “saroese sng foul op aiorep nijeds esoyoese9 9p nojqe} inun eosinysuCD 0000110 fe auruin ixgsuazoudou Jeon uns MPS £6 “TOQD0TI0 19 ~ .2, 1910-26 roMu “sajainjaung “se miu roNwFNoqeD UE 20 duu Ut 2. un ge BA 26 waleoyes are ame JoroRIeD UN 16 UBLoEIED waloUase ap aIS9.¥, Uf] 4 es — 2, WL WO — agwonsodte id a1BO}eA 6 PEBOUBIEe 9s 1 J9}oUNE9 INU vio eee 4 ast uns (qoute; no zvaqosoumnu as nojqe fe uewofe IMU Yo jIqeqoxd zen ie aneseUIAU 9p Inpow yefuetep eA HOEK] ‘edna sed Hp UREA ES 08 62 ‘Sd invatdm C++ pas cu pas gotonyi ift, t Buten{ border ant. = Lect wnilet . ¢ egt | poten poraert11 ); putent boraar(21 4; J/ construzeste Linsa centralé planis[0] = border (71; = rot - leer Planks{ i ] = porder[3]; blanket isi] = 0 U/ serie Unia centrala gotoxy (itt, top+l ); printé( blanke }7 gotoxy( ty 3.47 Print é( "weste the poten" 7 Cénid_mtroducets aceste ‘mainQ. Celelalte modificéri ‘seotiumea centralé de cod. i asigurab-va c& imbaliza blanks{} deasupra lut jocuiese gotexy() st printf), care erau inlocuitort pentra partea dreapt a ecranulut ‘Aceasta se datoreazt in mod special pentra ‘Trebwe sf trecets de la versiunea cu prunti() Ceca ce inseaminé adtiugarea literei“o” la printf), asa cum se ara n listingu Listing 3-18: T.CPP 1) wexte the center lanes gotoxy( Aft, toptl } eprante( blanks }, gotoxyi ty 3 yy 3 $8 desondm casete 63 Cu aceste medi a castes se va smprma in ct contural vor aprea rea specificaté loavea definita Acurt vom inlocui acele funetii gotoxy( $i eprint) puse pentru testares printr-o buclé numa loi necesar pentru case. Listingul 2.(9 prezinté bucla aga cum dorim si fie. Inroduceti acest linii de cod |#F9, Mat trebuie introdus& doar Tima inferioar si caseta este gata Listing 3-19: T.CPP // guila tne center Line bianes[o} = pordert7) a= rat - lft; blanks! i | = border!3] planks| is2 | = 0; // weite the center Lines ke top + ly wnile( i < bem ) c gotoxy( 18, gotoxy! 1. 2) BYLREE! "write tne pottom’ ), Daci va aduceti aminte 4 [iniile now mtroduse din 3-19 iniocuiese functille gotoxy(} s1 printf), pus pentru testare, abtmety cea mai mare parte a casetel, Fig. 3.8 Casta a ina sipencar 9 nerstae seus rere ( at ‘yaeauui wund Ban n1s9s 0 atUa ad ‘Otinjos 0 asa 20 9 oUmL}9RAISU “190140 ap HD | auovarpuos> 1 at Ju eUIOg “S9ALOe ‘RAIoza4 aYso wULa}GOLE Ao pou “myRUMUED vaswOIND UL injnques ee106403§ ‘oo 259 aes INLD 6 BL Jot ese id ages 2 mnouresed (Qaimarers pron 38 yas apnOsaP ESE 4 (yl zopzeg puagna ‘ od £( {s]zepzxeq)qoand ? (382 > tetra reap et zepzoq )yoand +351 )A¥0908 eUrT woaze 949 eaTaK // “¢ syuerq paaueads FOr 'ag1 1ax0308, (na > 7 petrun t+ ays seurr z84489 943 35am // dd 202-€ Buns ‘unstoa uss2a phurzand Qz-¢ |NBUEISTT 'e no ANNU anIeOF SuOMES BS MgAN Aw BD "PAU “rearoza ws wuyqo:d wand 4W0p His1w09S, "BUD eno v HerE|D—p [-¥S ood BA MU AOEYLdUOD “oN ais0 1 160¢] = yan 1 ad reo enop swieoap tie go uIEUMAS Ae |MIOWYdWION “LERYIpOU BARI JNPOD wIdoD HE POE “autSo|og smuod 2p 2jararsere9 2 15 ()AxoI08 lisoey ys wwop singasy — sejuus a9S9 jnso901q “BIROUEdNS {2p jndnaB vidoo &v “suru vonp uj se vou ouso10) ef sof suyis umuios jasooeses Mesos i Sof eRUpIS Up Iifoa Fieuortez0g “1 ‘Svand eva 20 95 BISUADY "BIBOLAZUI Av op owen F COBO tunfuts eRngoe ws neozeoM yoru jn a4BOLIAJUI [9] Beans eT og waEAUT BS ro Sata ce pas nas and tne other punct de vegere al folost aceste operator ‘Opusui operatonalus = este '= sau “nt este egal”.Vom ‘urmator: Af { out.ineele ‘4 convents_cir) color an the center; (Va tet central). Li entra obti sa substituim 0 instructiune CH real pentra “cotoreaza nd aceasti instructune if eu un al doilea apel box_draw), Listing 3-24: T.CPP. /) weite the bottom line gotoxy( 1ft, btm 1; puteh{ boraox/6! a= uftei? wnile i < rgt } puten( border (51); puten! border té} ); // repaant the center Af (outline ele {= contents clr } pox_araw{ 1fttl, topti, Fgt-i, ptm-t, : ", contents cz, contents_clr) void startup() buie si facem este s& piotim 0 a doua ca: NOTA Un program recursiv este acela care se a pentru a colora cor 3 88 desenam casete or ce programul sé nu se autoapeteze la nesfarsit. In acest caz, la al doilea apet cete dou cculort sunt egale, dect nu va mai fi un a teilea apel Dacé introduceti aceste addugi: s1 apasatt Ctri#F9. vets abjine o casetit complet. ‘in dowd cuton, fo fig, 3-10 puteti vedea caseta, Fig. 3:10, Coscia est complet st vi felictat. At creat prima functie C+ uf. SISTEMATIZARE Tnainte de a continua, si ne referim la cateva chestrunt pe care fe-am n intotdeauna bine s& privim critie ceea ce am Picut avunel end ni se pare cf at verifiednd daci ceva cumva a rimas in aer. Testare Mat intai, em creat numat 0 casetd. Aceasta nu dovedeste cA rutina noastra va functiona corect in toate cazurile, Nu incepeti prin a apelaeutina cu o mani, sau chiar ou ‘un morman de date de intrare, Incepeti prin a gandi ol 18nd, caseta noustri de test nepotrviti? Existi dow ‘ochi. Una este aceca cd am fol program fri s-o stim vreodati, Am folos ‘coincide cu fondul ecvanulut ~cvea ce este 0 alta problem potential’, Danareye prea fc [perisvueta = Urlexueta = lo]eueta fuypapt = (Jeyuera Butzredes // f(279sauaquoo ‘aToTsquequCO *, sauna "t-a62 ‘tedoa ‘T4377 Inez" Koa ("34a saueaueo =) ATS eUTTARO y JT segues oua quTeder // ddd" :¢2-¢ Bunsi7 qoyppow szqoer09 1 399 1} 308 9 Nd surzara gc ynsunsy 1 op aivooy ap vowUsedY UU ‘ur ne doazaoop “ang ap 1ge TeuOrigUNY & MINOR BURA eUSOIOF BOUND. 1a raed [Jsyunyg vasisojoy o> axerepisuCD UE YeH| UID MU AmB oe nijeds es0}0ese9 no eesezienjoy ‘>]aiisal jeoyoads ne 1 ay "ezeauot}ouny 24 aun asaqe Bo euNISE 5 equooduu ayoy ais +2 Ul 20uy es wind ‘{)aeIp” og tuNoadd “ajemuaUEpUT (eayssoe ontp vumann JeapA nes) LORIE OLDS 96 MU PUY JouTU ap o7OKeq (ate eurrano )aaseaxea ZoTOD suTTaNO ava 205 1352 3 9 woag exe suoros prTeq “aequec-aeT o3 setayooTS oye ‘seque-doy ‘xeusoo ayequdoa exe sieuo zens09 ROGLOS NaEHOS ONY GROTY NERDS BLOG OF 09 NOA AT STEVE ONIN “SYON E AE S109 P SI XOE NOWININ “NE#HOS NTHOIM 2 ISNA SHLYRIGHOOD | a7o7squsquoo aut ‘aTo"eurano guy ‘zepz0q_ zeus vung 3ur ‘36x ut ‘doa quy '937 gut Jmean soa pt0a Pe eee eee eee eee eee dao 2-0 Buns ‘as00e vofgoly en nu (jojoous Jor ap trBUnRe BAaTeo 9p ai ‘out HD 1S Hiqevord) wisone numeosd pea ares 190 asp tu Rnopugwe & upd 9p aye) “2faisay rensLoWap nv 29 N99 no MUOJUOD “2H BS ainGaL at 18 nsony 1s998 Zauoxiuau nu tep "Sof 9 v30 (08 BUI J8p TepIO aIS9 NON UI Wp wou a1f eUDED 10d BD O9uN Hany “PGE wip ‘sof ap “eS wourRvew vy sojaeses vareUAsap aIS0 Uf “seAope-1N) arEELUMa0p uy SLIDSUY 104 0 18 aHiAIISAN © APP HOBOS 10K 6 NEUES i yoefap wo win eaynd up oyso00 Bo aIsapanop 96 1 mideeup wp simu ye yB2BND9 up suso}0o) gxy nauad pURSay, ata OBS yoBOLLSHU wOseD “EXE Mi oye 9s amo B) RAopesn g 09 mesp X09 #9 3} Iicwaxo 9p vo “aunt aye ezeojade area a[ounns eo sist uOL2 ap u © no qmumifose omougesons sn “ju cu LoTeA vy 18 WON e) ‘aqezrUTy atau 9p a1aHep nna Bo Uns y dayne S91 S990 NC “HOME afaque HE aIBUOpIOOD nae soatoo arbesoyay 23199 Ip areoayy MOA Bo WA-KEINBISE wIstEDe EIeP ap 1H Ise9 ye uN HE|MyY 9 ‘aiaseD UIBLOSED ws E ‘ed no Sea 520 RTE RS 8 zo ‘Sa invatam C++ pas cu pas NOTA imbajul C+ operatorul ~ retumewzi o valoare, ta fel ea si operatorul + ‘Vatoarea ret .ceasta permite serietea anor atribuici mul ea valorit zero tuturor Variabilelor peo simgura (Cfnd veti mtroduce liniile actualizate din listingul 3-23, veti vedea c& problema este ezolvat Acest cod nu este reentrant —nu poate fi apetatatune: cid 0 alti copie asa exe folosité. Ori de ete ori o rutin’ modified datele globale. ea nu este reentrant. O versiunea generala ar face © cope tocala a tabloulu: de caractere spatia $1 ar opera terior modificarileasupra copie ovale Jn cazul de fap am procedat mai scurt sf mai rapid dec procedeaza o ratind cu ca nu pute fos: aceasts met cape o components sistemul mult. - vom extrage codul din ister permanent care face parte dia sistemut nostru REZUMAT Daca ati parcurs cartea cu atent program nebanal in C++, Ati seris ‘Am inceput ou finetii de mtrareviesie pen sterge ectanvl, textatt() pentru a stabil se va permite apetarea textmode() le deca constantele numerice Se, Astfel acestes devin, 2.98 desondm casete BSidesonimessete |Apoi ali sors 51 apelat propriile functii din main(). Ati inceput cu functiastartup() functia dox_draw(). care 0 vet! folosi tarmator. Dac& pana acum ne: procedurii de cesenare a casetelor, in capitolul urmétor vom include aceasta logic iin-un cadru ortentat pe obiect fog aut #03 UT ogy aut ‘zTsTeupTane aut f[gpz9pze¢ xeuo 7 oq Gy ap Wage wun EEBIO F sed no eds79 uisiam ‘o wiaaal eS aL 78 Pointeri la structuri nen box: /1 use pox cere Listing 4-3: T.CPP prezinta un program la structure” 17 7.0PP == test rousane struct pox int ift, top, rgt char borae © masa) b= now box; Dt contents_ciz: ‘Sa invita C++ pas cu pas 31 executati din now pro 4:Crearea unut object do tip box. oe 73 poise = p>top = po>rgt = pobtm = eelete return {ena of T.CPP Fig. 4.2. Fereastra de examinare atrage a 0 a ATENTE sew anayar 2083 © unuad axfosojay a5 ,oun19M 2jeuinu no gumions © op 90) ut 'Koq ayauint no 9.0 WANE BIR; ED tats" equem09 wrrane ey [gyz8p30q 220 fugq “382 ‘G03 "337 3Uy nijot BRO 2789.49 Uy 449) ‘SHI HP un-nutud eoyspour 3p tmolmg “ammnoexe azepey W JO wi Ludo BA as ‘aud ygoap ray roun jeadaup w) easuido pices 12 SUSSONS ‘ns eur Bo 1exy aud tan grem 38 gp 35 HS 80} © avocuaatUy ap jm ‘ray Pasou ea axe a1Sod ypueG o enIasG0 ‘9p vounefonusut ad yruosino PEK 96 axsoqiqeis 98 gsi puysedy um 2) 1d) 308199 9p yaPareN Poe 2d (ao w OR a aS GST BORED do" 30 pus // tg wmaex fg s2eT3y tt + asta Beg = SP TA apy aur fot = mec ip © 262e-¢ E = doae-a sted Mog MeO = @ yom paver aur dd OL ire Buns anak eiejuewlidins exeuedeg ‘sed nd Sed +45 WETeAUI ES 08 a2 ‘SB invltim C++ pas cu pas la definite, cat ta structure mdividuate, Sintaxa programului este aceeast pentru ia diferd dar crim ou mstante te 0 variable tp box in fel mite obiecie. Ca st in cazul ine 0 serie de mesaye, de gen rLft is mot accessible in function main() Astfel ajungem ia o diferenté important intre structur 3 elase. gii de acces la membri Toj: memoet unei structurt sunt care are acces la variabila sau pointerul acelei structur. In caz c& lft este membru aj unet structurt de tip box. orice avea acces la bili, daci b este variabil de tip box sau b->IR cai b este po Cele de mai sus nu sunt valabile pentru clase. Tol membn unei clase sunt temibri privat (private), ceea ce inseamnd c& numal furcttle membre ale une /ea acces ia datele membru. (Imediat vom ajunge si la cade exemp Acces cu unul din trex cuvinte chee, dintre care dows sunt Private 31 publ, cain exemplul urmator: struct my_streer public type? menbt; typed menb2; class ny.clace private: ‘typel ment; type? meme2 ‘membrii structurié sau mmdante, din moment ce ~ gcrearea un object de tip box 8 cle sunt tipul de acces im fexemplul urmétor unei clase ) se d& aceeasi permistune de acces ca une structuri: class my_class public ‘typel memot type? memo? : Putetifolost ambele cuvints chee in cadrul unei singure clase sau structur: cuass my_class private type? priv_membt ; type? pravmemn2 ; public: typel pub_menbl: Eye? pub_memb2; ingul 4-4 intro clasé total ret fn class st adugatt apoi 4-5 am convertit structure di ccuvantul chet calificatorul public: access la inceputulfistex de membr, Listing 4-5: T.CPP J -T.cRR -- test routine clase box public: Ent L&C, top, ret, Dem char porder!3] ; int outline clr, contente_clz; int main() box* b = new box polfe postop peoegt = 45; pespem = 15 joury enemeoap FPUD ase (LanyonNS nes) asela run BTUYZap sun eremjoaq, wadeasp er eueotes © // ‘(9/¢ jenom<-dg -exdeaup soe wsoidap ap ued « giunsip 0 18 x elumtp 0 B1EE9 BS on sy “(x0q) ‘aseo im99190 aye MAQUESLHaqup BD azNgEAT BF apIO}BA ap apudop steOd “eauUase 2d “‘QmBIP X0g ep 18 HIS0}o} IOWA snfIsap a190 2yeod QaseIp wPOIOWY dq en9tep 1) goncme. dep ()m0zp-a xoq meu = da xog fa xoq ‘anoou ajsa0e axe ammo ysE 0 EZFOULIN “sjaLasEO (JanoUI = HeSE}dep 8 1€ (ozisor - sjouorsuowmpa: ‘(rasp ~ tleuasop ys HAS Bo uloundnsard og | (eezsqeurexed>) seta :maquiour erouny 2p atisejoap 0 asd msR20y ‘muquiotu 3jgiouny yoo 18 aauiLd ereoap as nuqurow ajorep (eIdvofoiuy aritpen o axsa wo poo 18) ipest ULkd ‘eoorseUe ep you auDs yod as mugwaW! yHHouny IS oTEp 2p ajstiexe|oap “KKey 2 ‘Be nu vot 480g 50 pus 7 0 umaex fy + ag eo ~ apxe-a = wopte se oq dn ap FaIGO Wan waIBaID F ‘sed no Sea a9 tapleaa BS 36 SA Invatim C++ 998 cu pas provedurale, deciaratia Iti parte a programa, ‘membru ale unei clase si si B vad membru. este atribuiti: clasor sale (sau structurii) prin operatorul de rezolutie a ‘In al coilea rand, datele t functile membru ale clases din corp ‘membru nu sunt precedate de o variabili obiect sau ex ‘SA seriem, de exemplu, 0 versiune foarte sim and functa icati a metodei box::move(). void pox::moveal int xdist, int yAist Lift = lft + xaies, gt = rot + xaiss top © top + ydist; btm = btm + ydise, Sintaxa “box::move()” prezinti operatorul de re: obiecte, ca de exemplu un cursor de menu, care sf aib& de asemenea metoda ar putea fi definté ca box::mov. clasa face parte functia J] g08 pox p's members }1 // uses box e's members membru speciale repr fiat de sintaxa de mat sus. Atat cet s1 destructor ‘4 Crearea tnut oblect de tip box ra constructor si destructor Majoritatea claselor au efte o functie constructor 51 multe clase au cate o funetie aestructor. Constructorul se apeleszi atunct cand se cteeaz’ un obiect mou, rar destructorul atunci cdnd se sterge. Functia constructor are dou alribufiicaracter le datetor membru ale obi {fn primul rnd constructoru rind va aloca spatiu Fanctia destructor are o atributie generalé. Ba elibereazA spatiul alocat de fix necesar pentru membri, cur sunt top gi It din exemplul cu box priveste ccodutw le claset (sau structurii). Nu é se poate si nu poate retuna vreo valoare. Iatd 0 /{ deciaration in class cefinitior class box private amt top. 1ft, public oxi int 16, int ep, ..-1s JJ aefinution of nox constructor function box: :pox( int LE, int tp, --. } aft = 1£ top = tp; Clasa box pe care am definit-o de creat nic lor la datete mem! constructor. fel oe date de fungime wale abjectalur de tip e113 dog soeds: saqeootte// #(3a)0urZas mauesTata Lo 'y93 axeua t yxog: sx 2: ))x0q~ 2 aroUS / )x0m sorrand erara yeu ogeatad xoa ss#79 annum ug me ea ‘iurzaxd nydtuoxo ruoypaui7 “nis Jaov aBson v op mjnsoyonsysoq_yeDofe nods wy pH wt ws 1A putudn ws eo nuads waoye wend wry “aveyse309 -raasto np un eu a sesooou 1 18 ate td 09 up, sendnnsU09 were me “gosv> op soFoNAIS9p sHutNY O 9p SIOADU TIRAOPH No 2YS9 NU MABSOU InyAWIOND Uy pareep sf xeq 2 uBUN daweats // ° xq #04 TsagT-26x = uaprm 161 = doa BL = aT ses aq guy 'g1 gut yxog: :2000 vorgoung zoaonsasuce oq Jo uoraTuTgan // eunguey ‘uapta aur fos tagy toa aur ‘sqeatzd xoq sse1> WOEaTUTZeD ssero ET UOyRUIETOD // snyduoxo un totioury wuyop yzeoseid 2s “90190 9g] sorotunsuca erjoury ednp ze}pouu! soranaasap Jap UW 18 nsOIOF sISO oUIMU Soy sorona3eap // soonz3su0a // " Inso}2eI60 ap yopedard o1s0 go injmydey wrdaoxe ja98 2189 Jo}ONASP tOxfENY >/>wNN ‘x0q snun wauurigy nye HS aINgaAR 140 aN 9 Uo (S0}0Y wand © are> ad “ApH “niquUatW RIP o PrBD9IN IO}ONI|SUOD CHUN ‘no ‘woronjsuo9 toriouny sjauun Sth agT-aBx = ygpem 183 = doa O3T = agT ‘ aq aut “31 qt )xoq: :xoq vora0ung zoasnaasuos xoq Jo uoTaTHTsa // " 0 se) fag guy eaT aur j200, rortand feseuey ‘apt aut for fag ‘doa aur seaeatad xog eset UOTATUTZep sseTo UT uoTaETETDap // njmoaiqo wazva19 v| ateojeA waseode azasouou a6 BS 1 azajnof¥D os BS SDS vaNE waInd nd o4 Bs aingan JOYON.ASAD my 1 ateAud uns ajaroa4qo 2 ()x0a~ (00) dq que gt 3ur)x0g errand 68 ‘Oi dH op FoHIGO MUA eSIEDIOD ‘50073 600 re WEAN ES 8 90 Sa lnvatam G++ pas cu pas ceLete tities Apelarea constructorului si destructorulul Suntetr neribditort sd aplicati ce ati invijat? Aveti ribdare doar un minut $i ne © clas de casete care sh fucd exact asta. Acesta este ul ‘care ne vor refer Operatorii mew $i cer constructor s1 respect lunde a creat nout obi Tati un exemple: box* pp = new pox: //box weed, Selete =p: (repel La box: :boxe() /Yopet 1a box: :~pox() ‘infeles si un alt mod de a crea o casetd. Aceasta const focut unut pomt box (sau 0 variabila de alta clasa sau le constructor $i destructor. Constructorul este ay forul este apelat cfnd ea rese in afara domentuh. ‘Nu am vorbit inci. de dome void my_fune(} int i; df 4 exista aici // 4 mu mai @usta aici fn acest exempiu, variabila teste punetul unde este declarata 51 pnd la sf obiect au acelasi timp de vata void my_func (} box b; // D exista aici W/ peste utilizat 4 Crearea unui oblect de tip box. in 1 J) b nu mai exista aici deduce ond sunt apelat constructorul i destructorul ‘atunct cénd variabila object (sau vanabi ful functiet. Tata void my_fune JJ apel la constzuetorul nox: :box() // pucilizet aics j apel La destructorul box: :box{) box Dt mod constant pe parca pentru dumneavoastré o a dova natur’. SCRIEM O CLASA NUMITA BOX tA bon, ale care obiecte sunt casete. Cassia este 0 tor contemporan, Casetele inconyoari fiser,.mesayele help $1 aproape orice insti submultime mori din posi turmator, putem si folosim easeta ca pe 0 ‘ep Jo]Lquow Jojoummu ofe ayPpIMOSaId tum dn (ep eporour #8 rrroranssay fru waigeces unasa este nu yO FUNLUE BA YS aINKaN IMP “sO}INNgUOD UH aUIg wt {ua tisvasy “FeueYO NqUed azorOEReD op fMJoIsaA ut a1aIwsED KO IKI HOA aelduI0 1798908 9505005 POU Wy aqeaLud vousLe}7eze> ne Lase|9 sQUAW ~ EURPUNOE ‘AAW Mo pAcizaygion 1s BsEID ap axNuyop wIsvEde HooNPOTLT "3a0 EMBL 39 POS /7 fg uangea (aren aay ‘Aquo Buraees Joy auyjurew / (exp pros xoa- : £( aTo"woo aur ‘zroT3no 9uY bad 422u9 faq aur ‘ax gut “a3 aur (37 wy) xo errand faqo"sauequos “zTsTeurrane aut xeproq zeu9 doa ‘ast aut fegeatad xoa eset yxoveury “7 UrareR “gg6T 3uBTZAdeD / Serapptaedeo Sutmopurm zoaspa Aurt-gao°NINBL // dd 'NIMAL 2-6 BURST J 9189 4p I Poind WHOA “uaumIed Joj20v ajounu pursojegey “(ABP Koa emumsdiay wom, 66g ap TS THN BOTETIO 480° NIMEE 30 PUR // fi #9 uanaez ) (Quvew axe Aquo Surase3 103 auyTurem // areuoury “1 urazeH ‘g66T qUBTxAdOD /, sovartyaudeo Burnopurm zoapa AuTE-aao"NGMED // ee eee dd O'NIMAL *9-7 Buns] “auwiod ap ynajayas waa lun iste nu ‘now yajduuoo ois “aa NIMAL Suysy'| csp ad wauutoods un mo wodaouy eg {A “aydurexo op ‘emseray op area] ajaseio sro apni ‘mupooy aysigupiqisod votsyaads Jo, ax ajasa}oe3e.) IONS 2ses010} of area ad afasotSg rwmUsp LO, “RAPED UN 9p BIOARLE RAAB LOA fe Insojonysu0g ‘oyonsuos noun taunt ysiz Alidosd wonesx9 vy wHO9aN1 BS (EE 2 ap a1onou wane reUs faa puraLIO EqiUodsip 4 ex Osean eporaur sep “ase wywar0 aI puPD tourYE IAB | BAT jansy “Qmeup niduiaxe ap erede a¥tod msoronnsuoD “aporaur JOy|NWW faut vaswarD eUNBSPICH Heaipouy “soroRSueD uy snd oingan co axds—p wrziD9p to Tiog UF viRy Iéng SuSSONS ee ei eee ‘mpnrosonsysuos © Op ap 2382 My “aUSeHRy YorBOUO wang eIMMTISUOD o|>1—st> 150d © ay FS aINqaN ISHS, ured 0 ats 9s Qn BO" “TeIa809 B oN 2150019} NOU UIP BUBsEP EA xy seazay Up aumod ronsaaay yy “aueuaseper YOU PUR “ULI od ap BnNSvAIay szauesopar os YS ays BOR [ES aiNgan sow) 9 ap ¥7Rq Op atunsony ‘Sup up “weassx8 0 rs0 y waseD vUDsDp d]ase Op JOTDNNSUCO Nake IML sed 89 8609 ulema eg we 94 SB invita C+* pes cu pas aft = 16) // aava meaber = parameter vaiue Pentru a serte constructorul, am putea serie opt declarail separate de atvibute, ca: border (71 = prér 17) © bucti va face totugi mai succint aceste atribuiri, Bucta for este perfect adaptats acestui seop, Sintaxa ei este: for ( ; Ca sin cazul bucter declaratia de bloc, ie pentru aceast instractiune este stfel: for { ; : contne toate actiunile de mitilizare. O actune tipicé este creates atribuirea uner valor unt contr de Duc, Fata una pe care 0 vom folosiadeseor: for ( int i = 0; ; } cstatemante> cat continu, chenar: n> este o expresie logicd, Atat ump cit conditia este adevirutl, teraua A mal Jos una pe care o vom foiost lin atribuirea celor opt caractere de for (ant = 0) i <8) cena actions ) este orice doriti si se execute ta sfargital fiecdrei iteratii a buctes. fn ‘mod tipic se foloseste pentru merementarea unui contor. ceea ce vom face 51 no: for ( int b=; ie) ise) 4 Grearea unul obiect de tip box. 95 entra 0 simpla aribuire nu avem nevoie de o declaratie de bloc. O iastractine este suficient for ( int i= 9; ; epnrouTe axeveupy “7 urazeN ‘s¢6T TUBTTAdos // svayTignde> surmoputm z077pE AUpL—aao"muE // dd O'NIMAL :0}-p Burst] nua vara tana ese “,Qsemx09, (849109 plOn + © GAYAVYC KOG Up [Joep x0q pnproo1d of € ‘Ol-P tmnt randy eI a6 LiMo we 4 dd NVC KOM uP fweIg mojo axeeHrzunEsaI00 9} z immdsou et tiapan © ame ad “sDmIOUlg Svan sve Soe ro oq Hy BS YOO TU WaswwID ‘Qsveup eporout zaio & nud tresooeu uns rbd ONE) 3p 1S 94 isoIog “9 we PUBUOHE spiyouy ® Ruad ¢asa1y Gesede ‘ausexoy ore 18 astyDsop quns BEC ued 93 tiesecy “C4 no wropugwE od a-tieplyasap ‘azar eno n> SUSaONS EINES dd NIMALL dd0'AVUGXOE 0 ‘Rpo.aUI owaIO w nayUag (JaweIN KOQ BN Up 96 56 Anewsaad vlan A upiays pow una yezyyeas Qasesp por ago"NInay Zo PUD // ep 03 Suyqaou // y () #oq = ts arog fatoTuos = zTS"squeqU0D zTTane = z1o7eUy Lane Ue) apie = Uf) Zepzeq bas vig stig tau) ros a3 = 362 Gq = doa 31 = agT (apse gut ‘aToTano aut 3px, Teus ‘sel Bed 339 wien ¢g 36 98 Sa invatim C+ pas cu pas U/ repaint the center if ( outline.clr '= content_cly Lima cu un singur punct $1 virguld (ar putea apirea si ia sfirsitl precedente) este o instructine nul If cores fie urmat de o snstuctiune. tar pu muctune completa, din punct de vedere sintacte ile de cod care vor completa actiunea de pictare a centrlut até codul care execu acest luer. Listing 4-14: TEWIN.CPP fsbesstwn ik Plossl jrcesO GMS SISEMSSISENEISESSEIOBSSISOBSSISOESSIOED // xepaint the center if ( outline. clr ‘= contents_ciz 1 cextattr( contents_ely | int i, 71 for (x top; a < ptm ite for (js att potent 8 jy 3} retry tH ¢/ repairing olanks(} dreapté, Pe masur& ce j se incrementeazil, se inscric un blank prin putch(), culoarea corespuncitoare V8 putet verifealinile de program prin AIt+F9, Pentru a face 0 testare seniast trebuie si facett un program, care si creeze un box $1 care si apeleze ulter ‘box_draw(). Jn acest scop vom adiuga céte ceva ta siniaxa, pe care am discuta ‘Ati viaut cd pute crea un obieet aga cum crest 0 variabild pentru ‘metuse. De exempi: int ay cnar ¢: Je ant if enae cr box bi ¢9 NexOTMOTTEA euTZeDH njdusoxo un gay a1 Jojuojne vansojog "HERLOR} poo 2924 eyse908 YoED ‘=}0E}SU0D dj440N0 INYap Had RA “OSEHO MES 08: ‘279 waa “(Jopounxay1s0j0j we puED apap aweYsUOD ep njdwoxa un INZEA WY 4o|yoIno easuyaq ~ euyepy ‘amuresoud ap vounir yzvamén Ya “EOpOA 198 wuno ydnp “soaIOap “sosepoNdaLK BANU we o eonpouut v ep aizeI0 yuNg Oo aortas roa'y yna0sin2 papsy osm ‘onesie SRL BRL HT } {nr tor” .V555 NVIAVIDO" ? inoaxe @ mudd ff Hespd 18 pjong wn 9p erty od ‘euoitizod ‘Ioo109 yzeauitjauny yo SUIAUOD Hea 99 BANG “Lf ND ‘Sed nD Sek 9 NES WED 0 19 waIRUNWTENE ayo axBuEdoD ‘0}9;909 “o1woxtsoqo aiso (aeup uy vamBuasep ‘eapen tian uno yng. “()meAD epoyant ofvo8 ap ‘sana ums 9[9 29 EMSEEI 2d “SIeWOpIAE POD ep ‘eBimazed v runtiod gy tts0}0y “a4se pnop atzo as ised ams ag, IN} PaPOA tian, “MIEIBOU ‘8A g4 1 “a10y 0 ap yreiade ais9 wyseaoe pou ‘guHagnS: 18 sud no sud exyur wa Lf Bo Imaey uy xsu0 thuaragiq “aay no xeHy nutEsROxd a8snaved 10 $4 1819.4 IY mnuow 91g < OWH- 1g < NTO, Mp ares ap vr wy aBmnared v nqued :4 efop usojoy wy oo ewwaunuodxa w rumad punq or7N90 0 esuL a}Sy “eURdop poo Wz 09 WWelWOUE wip “giWOBUENS ap IRIE aso nui poo Imsaae vareUEdSC] eoseuedeq Blop 804 ‘SasTV esede es aingan SOd Inueiso ezyyenzra v nasog “vase wuasep BA ynutesBoud 1 GaN IMUISUOD ¥] BD asOISY NOP T9 NapEdoId ISe}oae UTSOIOS JaISY FRO “dd MVAXOM 4 Iq}UodsIp 23s amo NaUad azarae ap mals sea sd ra wibionl eg oor soz siinaincrmscume | 8 ________Siimalam cv pss et 4Crearea unui obiect do tip box 103, #ineLuae : char bianks{] = // 80 space chazs voia draw): void moveto( int new 1ft, int new top); define WHITE BLACK 7 fdofina YELLOW CYAN 62 Youd box: moveto( ant new lft, ant new_top ) fefine WHITE BLUE 23 i : rgt = ngt + new ift - 1ft; lft 2 new_iee; class box 3 pin = ptm + new_top - top; f/raintine for testing ony top = new_top; ant man() | } i 11 ena of PENIN.CEE return 0; ‘Aga cum rezuita di 13, acesta nu este numai mat ao ficare numar de culoare folosit. Sé | a procedeu pentru a adauga mai multe easete (box-ur). Fe TENT ‘Majoritatea unititilor de gestiune a memoriei presupun ci DOS respect, Desenarea mai multor casete | care unitate de gestiune a memoriet credea c mii 640K. Dac velr muta casetele foarte mult, va trebut si tele ecranulu, Listing 4-4: TEWIN.CPP Listing 4-15: TEWIN.CPP. class box, i / mainiine for testing only 1 i ant main private | Hee int 1ft, top, rgt, btm | cextattr| WHITE BLACK ) chart poeder; | cirsce() int outline cir, contents lz ae box Bf 1, 5, 45, 15, puplic | YELLOW CYAN, WHITE BLUE); boxt int 1f, int tp, ant rt, int pt int out_cir, int con_clr p.noveto( 5, 8) b.deaw(} eC a0Tg aTHM ouTToRE 29 RYAD MOTIA auTze0E LMOWIE STH oUTFaRE szey> eords og // = ()svueta zeuD epntoury arousury “1 uramey "Geet WBTIAdOD // serstrroedes Burmoputa soatps Autd-aao'NIMab // yuco no jno foun ye ans eugs [RE pup “mctano ac TRIES co dum wry mse ewsede pup oo un no sojsarese ® afonponut 9p Tau Pow Wn 62008 aIeOUpS BAA von & jareuop1009 purianuod “ojassioeseD ISeB ¥ NAIL S} aymutoae ore ‘ion S008 29uy ‘SOG ty PareurexBoxd uw, o0ey Yaynd 0 area ad rou azeoH'8090 Iw 2}29 9 eujbsew ap unsis najued suyapy “ORRUPWASE UAAD ‘SAP 's Heosoouy {o}eseo yop ofoUlg|N Bj ojo azjUE ajo} MEQUUIYDS UH Bo 1PA30SG0 INV “me (ST '02 'T MOL 9 xom #( wowreasram )23723309 Qutea 307 Ayuo Buraee3 403 ourqurew // ddO'NIMAL '9}-p BuNsT] Ijclusoxo un guurzard 9|-p m-Bunsy] “ayeey 94 BUDsep 2} 8 ap 16 Bese ‘ay99G0 oA YEW NALD v Op vjooB ase BIASED B|LAIIP duNigo v ap poUs IE ti ‘we.09 94 oj2009 9p 308 un vaseuee=d) s+ “Big ‘aur wounisien grurzard ¢-p wily (zee nu ‘onsie @-mnogy iy) IMRAN nsnie atesecue sjase9 vfautigo Ys moon se “GaN dese Poe Eo EES eee eee eee Hee Hee eee eee fo uxngex sor [ed Gh Sp yo51G0 Hah WOHEOD F sed TO 30d v0 Elen es vor 106 ‘SA invatim C++ pas cu pas feerine SiNcLE fcefine DOUBLE foefine SING OUD foetine DOUB_SING (/ mainline for testing only ant main() textattr! WHITE_ELACK } elzacr|) pox b( 1, 5, 45, 15, SINGLE, YELLGW_CYAN, WHITE BLUE}, b.araw() bemoveto( 5, Bemoveto( 10,'10 1 para D.movetot 15, 12 1 p.araw{}; 8) bearaw()s box ¢( 10, 2, 20, 18, DOUBLE, WHITE BLUE, YELLOW CYAN ), c.azew (hs ox d( 30, 1, 40, 15, SING _poun, WHITE_BLUE, YELLOW_CYAN avarawt); return 0; Incercati acests siruri de frontier in programut durmneavoastri. Veh) vecea c& ele samplifica utilizarea diferitelorsirun de margine. INDICATIE ‘Am denumit stiful cu lini simple verticale si linit duble ortzontale SING_DOUB. Contrariu sau este DOUB_SING, bineinteles, Dar niciodaté nu am mai taraiu ce reprezinti fiecare. Dac aveti o idee mat bund, folositio. Figura 4-6 prezinta esantioane pentru diferite contururt de caset, F ‘4 Grearea nut obiect de tip box: 107 Fig. 4-8. Oierte conturun de casete i bine, ne-am distrat destul s1 am fnvajat sf #definum constante case ne fac codul ‘mar ugor de citit ($1 mai usor de antrodus). Suntem gata s& pormum mai departs. Pentru stiinta dumneavoastri versiunea mea de TEWIN din acest moment se aflé tn Subdirectoral SAMPLES\ ca O6TEWIN.CPP. REZUMAT ‘Afi construt © clask de casete st tor o vom pune la treab ca baz Aw ficut joey s7aIOMNOoUy BS BsMID OLD In Ws euesBosd wo-a} areo od vs ‘BS Umno ang ps ingan vA BoreIp ap Rese O BojeIp ap afaraseo nnuod At yn nawwed on equauOdwOD UNS sI9}OSK.) “mIASHD ap ES ‘wzeq op asey9 ul wloK 2008 IS0}O} < ()azviaaugja49p 9p 18 (9) Bs2IP0 9p UOHIodo '80j0} << Tiealap 1S pana ap uOrSKUSp audsop wna 209 2p fos9 soyHOIONASUOD KoUNEIEG ays rieaLiop 18 ¢zeq 9p uoroRsuoR atdsap BEAL ‘Ononnd 6 Orso surg 1s0}05 << ‘aqeAlop 1$ ereg ap aseio audsap vivawl sojasejo CeMtUa}sOU ISO}Og. < jon "asooe ind 4 spago IoYsIED 0 — vaNIUD|SOU Pinsojoy “BoyeIp op arese9 ap eso o imujsuoD ‘veusorSour :0ergo ad greaL0 vareuNaoud uy aydaou0 Sormiaynd Tew fa ANLYP MUN WINN usd 1WsOd Wor “sO}PUUIN jyoaide: 9 Zoimp ap a4 jnsunoAl Ad UBISKOD Pou! UI 10} ad 15005 WH 0005 YA NU AP “araiuoutg “Ae 9 ayound war v nuuod gsi vauoUiAS inomd v ramon gy 18 £.] HIS0j03 Hy “YexoasOoU PF 10s200daud-earnaanIp HO an #8 doo} ataroq pursoyoy “umposaid uy axeweiSoud audsap 1901 NE feu! NU a}VAIGO aIsB98 puBD Youre Ht }98P JuNS aro Ur injaooyg aAeURSSP suns 10J9}9889 9]9.18oyTH9}S$0Ur JUN ZopeIp op aJo}9seD 410 Sd invatm C++ pas cu pas CE ESTE MOSTENIREA? ‘Atunci cfnd o class o mosteneste pe alta, incorporeazA toate datele membre g1 lasele noastre de casete de dialog, de exemplu, vor . aceasta fnseamnd de fapt cl vor avea acces (a metoda drav() pe care am ca $1 acces la datele membre de care depinde draw), dialog. ‘Clasa de bazi it transfera De exemplu, vom afiga mesaje, da ialog de bazi. Message va afisa un reda contolut programutul care tanseazi di apisarea uneta dintre aceste taste. Message va trebui s& alba o indi any key Mostenind o clasi de bazi si adaugind aceste procedee vom obtine obiecte care fac exact coea ce dorm. Le vom folosic fi componente de baz ale de programare C+, de indaté ce le vom face si meargi. Subclase gi alte denumiri neinspirate Nu exista jin ceea ce priveste m ‘termenul nefericit de selor denvate. De fapt, clas denvata mosteneste t late 51 cod, de fa clasa de baz 51 apor ii adaugh unit prop Datele $1 metodete claser derivate sunt extensi ale datelor 1 metodelor clase de baza. Din pacate, terminologia standard referitoare la obiecte foloseste termenul de “subolasa’” pentru o clasé derivata. Eu nu folosesc acest termien pentru cA este complet _gresit, O clasi derivaté este 0 extensie 51 nu o submultime @ clasei de baza. subelasa, «5 Casetole de dialog sunt mostenitoarele casetelor 444 Termenut de “subciasi” nu va mai ape in aceasta carte, Nu vi recot {olositi daci nu vrett ou tot dinadinsul s& inducetilumea in eroare PROGRAMAREA CASETELOR DE EXPANDARE peste alte lucruri de pe ect peste altceva nu este ceea ce fnsemna de fap funetia soute Si se incl se expandeazl acoperi ceea ce se afd pe ect precedent. Cece ce ne dorim este © clas de expandare derivati din clasa box. Va sti si se deseneze singurd, asa cum fac casetele, dar va fi 54 destul de Tnteleaptd pentru a salva 51a reface coranul, Derivarea unei clase si class < derived class name > taxa de derivare a unet clase dintr-alta este destul de simp < base clase nane > /1 noi dave si metoae i cl 0 clasi derivati mosteneste toate datele si metodele clase! de baz, Si repetati vreunul dintre membrii claser de baz’, Sérind peste ar patea arta definitia claset expandabi class popup | box private: ‘enax* screen save_puffer public // constructor, destructor si alte metode set et de baz (dacd aceasta are SK cream peu (2a "14 jeseq 2 atzep (> fed xeuo ‘ed auy ‘1d aut jatzep uy B9 “gHeaUO wseID ‘IEAM 12 18 ygD Weg ap wse}9 rauad yer 2p tinuoo stouresed fio} azysus ‘aingan 29 BA90 SIND JEP “IaseID OP EXEIMIS UL Lore NOW SIUNTU aIS> AN] “(gzmg 9p Mase nied atonee aise uno vée ‘eps0qno x8 wsonuoys ‘2[ayeuops0N ez ‘yeseo © nnuod ujaUered 3p B10ADU YOAL WOK 29 quOWU: Hoyonysuos nyuad yyowereg borsnasap 6 vorsansuo “$e TERS ADU angen ose “OTEALIOp 1ase]9 IOYOTURSUOD ap JUL cies emBiy uy wewazasd imeynzar ouitao eynoaxa 2989 ¥zeq ap IMIOIOALISIOD, ‘weifoxd imsooe varne ey] ‘ado go pus // £( ,x\u\goqonzquo2 apzop up, )squTado , (agzeps sarz0p 4( y2\e\soqonzqsu00 optg uty )zauTZ> ¢()xo83t9 Owen 257 on {sojeyeseo sjareamusiBour une Bopp ap ejeveerD F “ arzep, Fran osea : atzop eseto oong eeeto epnroery aa0+3 // dd Ls Buns “GEHINO no j-eynoaxe 1 j-eanposuy ‘asp 94 eye ‘epee ‘nou jnox no qs0 impor "wjuazasd ajunue 1f-Bs apD0p 204 Nu so} FIOHONAISHIO-) ‘IUALOP ESe[o 9p 18 BzBQ 9p YSeTO ap NIduIs ajdwena uN ULzaud 1-< jnBUNSIT Lz qewyooz an gt HOW //,eTX\, = 258 ue Teuroe = Ef Tease // |, £\, = 25a ‘preojwun ajpmmpou wp 1p Paina 2e (JZ preusn9ez axvoyoA) ode Jaroeze9 un taxa 9qq avy saroeseo — yp, < Tei00 soivere> — 000, cos users niguad ofeiusszexoq mos 9fe0 aso eavowse ap 150;0) toma qua < Usisyooq pee =< ond qqnop =, < ond oifus~\ « < < < oupnou— i uns ayer advaso aisjoeibo wADIB:) ‘advosa 1d ndzoUL ap yeuws un BD 19 “YaReID woyp ylaxdsonN Jee No pUBdooN) edease auajoeseD w=UD Hl saan 2p po 59 mI ameD yseysyoNg Sp ajaroei nes vamos BoteD Zo wna “amoeaKD 9p qHEEsUOD O-nbY MoE onpoatur ond 9} nu are 9d axpoezto nod pup ska ae2s9 aaraien “anor 3p ys uy adore 242790100 150105 ron 2}9 un outgo ® naueg Beano Sed s<9 RET ES a Apelul de functie constructor pentru clasa de baz apare dup parame ‘oerivate, precedat de doui puncte, Pa mel ai claser derivate saa ‘expresii care sl folosease numai acet parametr si constante, geteni) | retura 8 eo( dnt pt, int 92) | bi = ply b2 = p2; INOICATIE | 7 cprinté{ “in pase constructor\n\r* } Gariv:tderiv( int pi, int p2, int p3 ): page (pl, p2) ai = p3y eprint £( ‘in deriv constructor\m\x" 17 1/ ene of t-cpp inte-un punct de Listing 5.2: TPP | beeen Be OPPS EnE eee ean eee eee Af ep eb. #ineiuae ea eat class base | private int bl, bay puoiic dervatt este mostenitonrea unein de bead ait de ase( int pl, int 2); dervat class domy pase Destructori de baza si derivati Atunei cand stergeti un ‘vazut. Dac stengeti un obiect cordinea inversit a public: constructorilor. Se vor executa cestructorul clasei derivate, daci exist, si apot doriv( int pt, dnt p2, int p23}; gu! 5-3 adaug’ destructori care preziti secventa in mod clar uv s1apoi folositi CrrI#P9 pentru testare (punctul de intrerupere trebute eliminat), int maint) i Listing $3: T.CPP deriv a 4, 2, cop 7 (ond jyqerad no rey pris 11 iaadoy)9 ysauTIa oRODEY. = 7340 70D sastaoo mead yovacipas gsaupe puoresedo 18 aroriuasaaxep ap jnsoseiodc) VE) BEOSTIE // € (qexad0), 1usgnd iy) ezesetze // Caad0, 1yoand +8008. = 7369 42049 duno 9q.-H8 wp *.¥ "NT Um RoyPUT M9 “stoaxe You “NG 29Rj 16 39 2009 ~ ,ATEY» 418 um ands goxpi fo fay 8908 9p JotOd da ap EUGEUEA © y SpuyA vA loa act wadge¥. = ado yzeuD :eiemioap ieniasqg “auseind 0 89 aupuyd y jod azaiuanyorop ap mmioeiado #8 seIpe jsa}e!I¢0 eqUTOd UR = 005 TOT eserpe |Bys9 0037 // eog ynruggstao sezeztTTa0 // edka7Cao dra op grrqetzea 0 488 003 // oor af Cao sqwaywalyg9 jnpoo ery myMIaIGO ‘salpe a189 19a1gO uN AMES mMMZa|UIOd YaILO[EA JVO{GO UN ALyED seIUIOd Un 9709 24272) msotes9dg) o8Igo Un aids Jered un ays9 J9 IPeIgO UN AIS NU! OO} "ZED ISAOW AE ‘oo aaaTap og Tarnzoqured eazettyan / hy Cao mau = 005 .adAa™Ceo ong oy yw nad andsouoa 2389 [gj oro}oigo tidnse nu 8 rojasaupe excnse wea fap yrsortiod) ‘puvsiadure "ysaupe mmojerado awasoiog Atop (nysaiqo sim} ama war ‘aaa 30 bas 7 #( 93\W\apsep Supfor3eep, ) 3quTzd> (Oarzep-1 taper a Tojaases Bjareayas Soul TUS Bale ap wiaIaSED S #( «x\w\zoronxsu0s atzep ur, ) gautzd> ted'= tp ( a "1d ) aseq ff e@ aur ‘zd aur qd aur jarzep::atzep t £C a\t\oseq Suyfoz3s0py )squpzdo > [31 seg c ‘ 4) .z\wgoronrzeu09 9¢eg UT, )FuTIa> fea = za ia = te ( e8 aur Td aut jeseq: -aeea fo wznaex £Qu0206 te ssetep 6c ' 'T }p arzap !Qaa8a79 Oureu 3ur “ed aur ‘ee aur” ftp aut reseapad svg atxep seero 40) esa S(2@ aay ‘ta 3eT josea :orrana fee ‘a aut qed esva sse19 asoruess opntouyy ‘on 418 ‘SA invatim C++ pas cu pas Pentru un pomter putett folost operatorul de dereferentiere, * pentru a vi referi la comt putetifoiosi operatorul adres, d, pentru a adresa variabi lati un mod de ao face: any_type var: any_eype* ptr ptr = evar; + fte var apeleaza #1) pte ja fel £2) ava apeleaza £2(} cu un pointer la any_type £2) por ji// la fel vunet clase exeoutat, exempiul nostra, La ape! derivate apeleazi ambil destructori), destructora| Abia dupa aceea se executi destructorul clasei de baz. estructoritor(sterg derivate este prin Oclasa popup st-cu destructor claselor de i, s8 adiugim clasa popup la TEWIN. vo! cere safe ia indemana in caz de nev 4 prezint&codul adiuget la TEWIN.CPP. Dein wet prinerpale, sub definitia clases box. Adauga nil clase popup se Listing 5-4: TEWIN.CPP // TOHIN.CPP-Tiny Eéitor windowing capabilities class popup © pox public: popup( ant Lf, ant tp, ant rt, ant ot, ant out_elr, ant con ole); popup ( (7 mainline for tasting only ant maza) ~ 5 Cosotelo de dialog sunt mostenitoarelo casetolor 119 bextatte( WHITE_BLACK ); eurser() box bi 1, 5, 45, 15, SINGLE, YELLOW_CYAM, WETTE_BLUE } bidraw(h, Demoveto( $, 8 ); d.araw Dimovetei 10, 10 }; o-erawi p.movetot 15, 12 1; b.craw(); Dox e( 10, 1. 20, 15, BOOB: WAITE BLUE, YELLOW_¢! coraw(]? pox di 30, 4, 40, 15, SING_DOUB, AITE_BLUE, YELLOM_CYAN Popup pa( 3, 5, 35, 10, DOUB SING, WHYTE_BLACK, WHITE BLACK } ; return 0, 2 popup( ant 1f, ant tp, ant rt, ant ot, ant out_elt, ant con_clr ) box( 12, tp, Fe, Bt, pear, out_clz, con_cle } PopUp eprint ( “\n\xbuilding popup” popup :: ~popap() oprint£( “\n\rdeleting popup” ); // end of TEWIN.CPP Si se expandeze este cA este de ajuns si apel expanctim caseta 39 UE /32 qT “ey quT ‘FT qUT yandoa o7Tamd xoq oFtand © dhdod sero i dd NIMAL 39-9 Buns) ‘9S mtunsy wy Bre oF wo We 2y}Gnd atayD MURAND HefNypY “RASeOAPaLTEIN nynwesfond epider earewedap oj sorpuco ¥Bunj alieraxo EIseay. ‘ged yjuayioapeu o-nuIp ByESE] ypo.aut o puylade ‘onmzea tie ero ad vee" 60 10H9 Bniad tea ‘ayeAtsG nies ao4|qnd EO oyfdxa pow UE ‘|}UAL9p 9]asvjo VoNBApIONLL PoYLSOds TAA woe “ooe O-u BS JUD “INAsadd" v Azad ‘ap myugano sumo Homd ‘ayeaud ose yoydam sade 9p pow 29 weoWwOU wICL SLVOIGNT uy aieatd nese}29p o8eg 2189 Bs20y feeder] wi2d // ose oyeatzd -atzep eseto sayeausd nguae na Y2e9 29 vse ULUTOP 1 o1so wanNeMuOYY “cHPALC UIE 296g UIP 9FWALLG dy op LLIqUISYY “ANOP wse}o ty gM | dg ap acusen yutaap BS as0a SEIS MIP aF]GNd dy AP LAqWAUE HO RO 29H LISEIOW eseq orrand atiep sseto {9p aly ¥S ESeoABOMUIND ojapoyeUT Bo Lop Han “iSrUO) “atTUTS HISeEDE aD WIPE Uy ‘Qsyuoru0s ‘yentad ojapoyour wade vannd se 1$ ongna iy eaind se Oaseap ¥pOy vamnd zw FyEyeIo seI “uaNyUOD BUEseP vaHN AB HABE UIP LUD, ‘ymurnafoud “mgd prion uy Qavesp-xog anazlu, Ure FO (erans“a3709 nzqued Tez eT // “MUNAgETGO wPorem UTP wIETOde ‘eqeATAG // ~ 1 (Qraans™a1 op: s00g pros | fat ops "3 003 jeura eqse amos // (Qurew qr !Qeaqne"ayop pron #0 Taans~ar-ep pron SyeAT 24, OR} ep pron vorrené cog esero :njdaxa un Bey “auuyNAgNS 10 afdoxd wsaD0U O09 x9}dUUOD FPoIOUI o no oR # Bp HoAD pUBD LOUIE [H JONSOIOY axse 408) IS9OW ‘98e19 1Sera|agH |RUPRO UIp EPOIOAL BIE O-!UIP TEMA SFEALLA gpOHOH O wjade aI omg 3 003 iegseeoe coe] egeod nu /y Qurew aut 4 “ Qusom prea reaearad 993 sseT> wv suns {3 no wo 1 vo eas “aeatad aps amp ‘ast wporour yO ands BA 328019 Op TESOL “STRALIOD loseyo (e aeALU LquaUT UIAap (paysazoud 1$ a1eAUG “ortqnd) ¥zeq ap raser> naquiota 10} oui ty] 2zeq ap asero toun vazwostexsour s950 mReluop ge 0 PUD ‘oun ss998 ap JOJURAdaAp ear taxed LAIA|gOLA nynunedoud maga suis un rownu puesngpe to aise guna wa0 S000 a1s8 NU QHWEIPOq Bo ands ga a1e019 ap INFEST SESE EE Eee EE EE EEE eee eee ee eee eee Ce ’9 umnae, 4 owls aura yowre” aura ‘ours nod ‘ot ‘ge 'g ‘¢ ind andoa Ree eee ree eee ee ee ere ee eee eee eee -ee-eee eee ‘dc NIMEL 5-5 BuNSTI atta 2380 99 aswoss y pation G49 tespde QueuL 1 £-¢ nunsy] wp yum RRO a}20 Heingpy “sunle ap v9 29 101 advoude mds wy ver “aoyejeseD ojaseoMusisou TNs Boyeip op ajpiaseO F | Sedna sed v3 WEEALI eS ‘ar 422 SA invatim Cr+ pas cu pas, gnaz* ard int out_elr, ant conelr ~pepup(, sa expand aga cum alt spe aceasta, tot ce avem de ficut este si salva ecranu dinaintea expa Exist dowd locun unde se poate face aceasta. Putem salva ecranul la rularea constructoruiut, sau fl putem salva chiar tnamte de a desena expandarea, Eu vot face salvarea in constructor. Tineti minte cH aceasta vil daci am intentions Si schimibam amplasarea casetei dupa ralarea constructor Listing 6-7: TEWIN.CPP i: popupi int 1f, int tp, int rt, int Bt, nar’ pede, int out_elr, int con_clr 1 boxt 1f, tp, Fo. pt, par. outclr, cones ) Popup Ant bufsize = (egt-1ft+d)* (btm-top+t)*27 screen save_buf = new char { pufeize 17 gattext( 1ft, top, xgt, bem, screen save_puf ); popup :: “popup! puttext( ift, top, rat, bem, screen_save buf }; delete sereen_save_bufy 1/ end of TENIN.COP produsulut Primul lucru pe care trebuie sit facem este si cal tampon de care avem nevoie pentru salvarea esranulul, Aceasta este = new | 1; este © varabilii de tip corespunzitor. este orice tip v puttext() reface textul din zona tampon, scriind te in a folosi gettext() si putiext de mod text, In cor went. Se presupune ca v preluat sextul cu gettext() trebuie s preluat textul cu gettext() trebure sd fie su ‘webuie s& plaseze text Dac veti fol asamblare care va de a parist aceasti sectiune, vom face 0 experienta cu 0 eroar INDICATE Senet apetuilegetex() cu gif. Copii linia cu apeiul gettext si inlocuitiapot “got” ou “put” pentru a obtine un apel puttexi() caro se potrvoste perfect cu apelul gettext). Nu reintroduce argumentele cect daca bateli foarte rapid $1 foarte corect st xea #( SQ1e"BLIEM ‘WexoMOTTAX ‘gIONES ‘ST SP "ST 1a x0m Oasest {C xowIeaLaHy )as.eoK83 Quren 3ut Ayu burase3 tog eutrutew // dd NIMAL :6-5 Buns “ease aoe aod a8 tna sam 6-5 1s8unsr ‘dndoe eqeuNa oun vm nod suo nu rns 6p, wi TajaI@seD eIsIwoHLNVSOUN UNE BOVE wp oyeIeEED F ou} 2 ound soe Iseuedw ap aRUTeU] ‘enGnar mode ws Geary “8 ery kdwuoD eand poipou psa08 n3 ye (ended #( xTo"uoo aur ‘27Tano aur i é “xpxa 209 aq sur ‘ax aur ‘da guy gur pT aur Jdndod sorTand (grameaes"uves23 .x8uD "peaoeaoza xoG orTund — dndod sseto sttetae ( Goa7mou aut ‘agT MOU 9up Jogonom pron HOmexp proa 1 Oxoa~ 1{ xq27Woo aut ’ay73n0 aur Ap1G 009 faq guy ‘ax aun aa Sut ‘ST aur jog Poyrand fxTp"sauequos 'zT>TeapTano gut fzepieq «aEU> fusa ‘362 ‘doa ‘agt 3uT speasegoza xoa ssero eee eee eee Cee ‘das NIMAL 18-3 BUST] wa prooioad nOWIPOW! 180} Ne ‘ayBALG op HOpURUTY “ejLRoLsIpoM BEI ges INBUNST] “yurg}goud o nezzg reus ezne> ‘anand gop equaTyas Tos. “YOR UugDe Bs af0A9U 59 ‘naquoqu um e2se HZ0q 29 TOSeI> iv oreo ‘ayeauop JOjeS6j> soma 2) dadod ese mp aimwid eteoyoads go ns 2g "eujgomdwajozar enaqued yupano nfs un JBOp ‘vexuapIase9 Te 1 Wo “aso tasooe [ete exe TP pajoroid dn 9p ruguow up “2jeaua an, ugMeasyp owe oe perseiord x ap mnsoooe eameaupoeds ‘OUOd Fe 9D 2 ‘Sed No Sed +45 Uielenul pg ao 426, Sa invatam C++ pas cu pas Prin deplasarea pounter CConfundi caracterele cu bytes de atribute vi 4 Intdmplat sé se afle dincoto oe sry eeranutt Sper cd Tntelegeti ci acest tip de greseall poate calculatorutur dumneavoastr SE sedpim do acest +1 suplimentar gi sine apucim si const dialog pentculos pentru sindtatea { octat ce | PROGRAMAREA UNEI CLASE DE DIALOG | +5 Casetele de dialog sunt mostenitoarele casetelor 12 Folosirea fisierelor antet Este la fel de bunii ca si onteare pee INDIGATIE Limbajal C gi sistemut de operare UNE impart o mostenire comuas, C a fost fere, pot apirea onunde intr-un fisier sursi, dest Tneeputul suzual’, Extensia .H este fotositi lucru ceca ce este $i obiceru inte fisierele -H standard irectorul \TCLITE tn acest scop. Fipierele antet care fue parte din sistem sunt plasate in directors! INCLUDE\ Sintaxa de specificare a tocate’ fis et este aceasta, Aixectorul sistem INCLUDE directoru] de lueru Hnelude / rl. mtpxrs ourz07§ ee ant arrHe serzepe 29 NGO MOTE ouTEOy 1 SOWTE STEM OvTS0Dg UTE “7 UTR TOR soaspa futy z03 zepe0u GutHopt pou mt aveanpou 24 Ws eaysooe ¥9 nutiad axegisuondQ, ges BPO) ‘sour Long op axespde O no wyye-nUL BUN-sTUIp Jo8n axes a6 “ajansazay anos HUyap ¥ NWS nugwoW 9p suunu inuN vaISYAOL oper B nguad ‘njdwoxe op “yUsto1Ns r9!Go op arse wawefuRE SIV “eAdeaND ‘np enswaray uy eieoseysop 95 ysIns mnjNpod wadnse OUND 20 dt “wun UL EIEN 96 ND Ee ofara WzluEAHO on “HBOUd HENUMALL PUB E-NIMSE 30 PUS // atu “1 utaseq ‘S661 qUtaKdoo // g0aypa AUTg aog zepeau BUTMORUTA — H“NIMEE // NIALL 201-9 Buns {(281P 90 ddO‘01-S0 3018 oars) Q-5 mBunsy ut apo os wind REND “Y LAISY ap IHS: shx9 NE TO—p “TOM IMHO vo wadaouy 2g -suI9 op 9p misono JOA wsuns azet8y ayMUL TEMA 99 USWOUL HIP “TUE 494 oye os sms as018y op vandnepe TOFRTOSED B|SIBOHUBTEDU INE BOVE AP OPHWTED S ‘sed no Sed +5 wisienu eS q 7 ‘82h 130 ficefine DOUBLE “p= |=! define SING DoUs ", Heefine DOUE_SING * class nex i protected: int 1£t, top, ret, ptm; chart border; int outline clz, contents clr; public: ox( ant If, ant tp, int rt, ant pt, char brar[ ant out_cir, int con_clr }, pox () + youd draw(); void moveto( int new lft, ant new top ); class popup ‘ protected: enaz* screen_save_puf; Public pox public: Popup( ant lf, ant tp, ant xt, ant bt cnar* bear, ARE out_clz, int aon slr ) ~popep 0), eH ” U/ ena of TENIN.Y Listing 6-12: TEWIN.CPP (/ TEWIN.CPP =~ Tiny Eaitor wanaouing capa (7 Copyeagnt 1995, Martin L, Runenart #incinae include “TWIN.” ghar Blanks(] = // 80 caractere spatiu anuemmam pilitics 6 Casetele de dialog sunt mostenitoarele casetelor 131 /) pentru testare ‘cftorva duzini de mesaje de eroare acd reusiti de la prima incereare, testatt 51 ceea ce urmeazi, Adi mod a Hinejude gi incercan din now Ctr!#F9. Introducerea unt 1v, ca acest “x”, este sufictent stergere a caracter /arezotva probleme! Adaugarea clasei de dialog Fiinaed fisierele sunt acum structurate att pentn fisier surs& principal, putem continua cu adaugarea clasei de dialog, Clase © caseti expandabila cu pentru a crea alte clase, cum ar fi un dialog de mesaje sau un dialog da/mu. rebutes& adaugim definitia ciasei dialog fist lun tip comun de frontier pentru casetole mele de dialog, aga incait am omis acesth parametri. Listing 5-13: TEWIN.H 7 Copyrignt 1995, Martin L. Rinenart 59 // Ha cyan on cyan define DIAG_OUT_CLR *( wao"uno"avra )aaaaxea fg) (very = 1+ 1-32) = cers aut *(Ta} yustaas = usta aur + Qmeze tC 1aa ‘eras: )Adoms At + (raayestzis zeus meu = eTaTa ( wis" Noo"ovra ‘wo und “owra ‘gnonrs “34 ‘a2 “3 ‘31 )dndod (Ca gar ‘az aur (dq aur ‘gt aur ‘qa3 sxe )BoTeqp! iborerp rqne eave usos08 9yeTep Hf gadTenesusaros ‘ugg ‘bz ‘doy /9yT Faxeaana 1) dnaoda: tanded 9 winger Huo338 ftp ene7e0 + Q)ue305 Cot “se 's 'e " Burgeen, )Borerp Meu = Tp sore +P Queyes ea mean“ fC wo" MOTISK ‘01H SAH ‘and ONIS ‘ST ‘ay ‘7 ‘ot 1 xoa SUNIMGL, SPOTOUTE epntouTy eBnToUTs greueury “1 urasen ‘s661 auBeztdeg / setatttaedes Butvoputm zortg duty, ~~ 4a0°NINSL /! EoeP yerade ayso. nu Lie} op jnsypS yo wA-RHUIIY ~EAsD wSE ISK nia op maontpe d tun wreifoud ap mpoUt Joupe vouIUG Up 10s " 14) sorerp- fC aq amy fax any ‘ay aur ‘gr omy ‘ra3 zen )oOTeED sorted foray zeae rpeaoeaoad } dnded oftand | Borer seeTo harlot wahoo ovra sutgeny ATONIS @UT3=Py weho uo satue tH // €9 eer TOTRIaSeD SAIBOHLBISOW Tue Bojelp ap ayeIABeD # ‘Seana Sea ro WEAN BB ar 134 Silinvitim 62+ pas cu pas gotomy( Lestlee, tp 1: ~~ vepmnte( title }, 1 dialog: :~dialog() celete title; Af ena of TEWEN.CPP er Funct mtegratl strien()furnizeaza langimes wnat sir exeluzdnd caracterul mull 1, “abede” are lungumea 5. Cand mul gol, care trebure imparnt ia 2 penin: ‘5 Casetole de dialog sunt mostonitoarele casetelor 435 scest program va da um rezaltat ut pentru 0 caset® insuficrent de tea fntotdeauna fie si creati o casett destul rmayorvatea, nu toate). Ar fi pldcut pemmite acest lucru, putem aloc: rgumentele furnizate sunt attibuite pparametrilor in ordinea tn care sunt serise, Dac’ este furnizat un singur argument, prim ru primeste aceasti valoare — celorlaitor parametri li se atribute valor Acesta este coordonatele dupa redefinit pentru coordonate TEWINH. Faceti modificarea definitiet de clasi in Listing 6-18: TEWIN.H cuass diaieg ~ public popup £( 9 eyo joo3 pron 1( F aUF )ooy PTOA euoraoung ony go xted v exEyDeP // epnrowte aes 1) aa Les Bun sndtuaxo un uuzand ou (1p o¢ yg 98 nu 0p “nou oxaasny eH) ZS uN euD de ap yn 31 Sym dn op awownav un oy aydavor ys om aay o was Ng “oNEAMDUEEINS 2p nICUAS nidwax un unoioom e818 “ACV, “YOPUE NESOU InIyPOA B| wDoswOH 90 2S axeospouresdns o1dseg “oury wate w 9p rnpow ap aapeay BHM pied ‘yonuupind yonsuoise9 o aise wiseaoy “InouTesed ap mes alat oun sidne wiodo areod oun nuts un no axoUny o go BULLE any am ne FEGOR 8 vasedo ap UNA woazoaroutns 189 (. seaoe wzypeal WA aufuttad am ty pow aisa afeseul ap axyseou raseja ¥ RUESIL oHSLIDIOEIEO C) {orese 20.10 azooe Zomyp ap mesayy “ou ay ‘SAA ay ‘SundspE nun eaUHLC e| guES Pas) EEE eee eee eee eee eee eee eee eee ar JOFRISSED SPAIBOMUSISOM UNE BOTRIp BP wIaIASED F Hm 0°75 Bi TP azetep #0 uo3@6 *( ,Burasen, )Boveip meu = tp .Sorey £t)49396 /Qmexp-» scene HnEE Stent nstnsenassS=eaanaseeanaianani ‘Seae sed Fp wTER aS oer 4a Si ivitin G+ pas cu pas 7 4 Cozetoe do dog sunt mostanitaroeeasetolor fe int main() | ai aceste teinici mai generate. Listmngu! 5-18 prezinta programul T.CPP din exemplui ‘ de ma sus modifica! pentru a se putea urmést modu! in care finctonears aceass | tenet elescr (2 isting 5:18: T.CPP fool 2 1/ eatt the int version a fool *b!'); // call the cnar version 1 tcp seten(); Hinctude return 0; ee > // cactace a pair of fo0 functions oid foot ant i}; 11 aesine vous £o0( ant it, ant 42) the £00 functions void foo( int i) Ceprinte( “\n\rine function here” }; j void foo( enaz ©) (Ceprinté( “\n\rchar function here”); + ene of t.epp La executarea acester fan apel. CH reuseste aceasta ch C+ atribure nume proprit vedere logic, accasta se face astfel ine mesayul core lor de functii pe care te voi fool int 1}; void foot cnar e } Bineintetes of acestea nu sun pentru va putea face o idee. Continuind si tuerafi cu C++, veti invita destal ea si dese nume modificate. Nu fe modificati in ac ‘mecanismul de modificare si nu exist nict o garantie ed vinzit schimba metoda de modificare de la 0 versiune de: i de supraincdrcare se citi pe care \-am folo u numit name mang 1/ compilat ca vice. (1 | SPU comp ine max eieser() /} call tne int version // call the 2 ant version i/ cefine the foo functions void foe, int a n\zInt function nere” 17 | eprantf( "\n\rfwo ant funetion here" ); i/ ena of t.cpp Listing 5-19: TEWIN.CPP // TaWIN.H -- wincowing neader for Tiny Editer Do sw naiqoun es Ba 2S nl ale> aiwofea 20% Nord wy aID9u) coy 9 PUR laLod noo} vf EKA euaIZEIED Op joriyzod wa sZt gO yan ‘BUSONS snpos es fade op soyquouanzevayaxoyétoo "y791 resaoe BSED Ro wpe Ue DUD RIED AsEESY| 9p 8 asa ap eID o MNSUOD 8989 06 mans po aso HRAASGO 9] BS GEN Ise Ie paw aumusian wre ¢-¢ ernLy “onta09 or May Aue ssoxd,, mds ea za amo -,aBESS9N., Iman no “PIA Bojeip ap fesaus um sug Wak ‘UAHOsd IBsoOe vaRENOOKD BY aa" RIMBL FO PUB // +( ,anurguos 03 Aey Aue ssord, )zsutxdo 1 ( Tome 15-352 )Axon05 Own ary ara )aaaraxea (4 s6essen 4, )SoTeHP ()eSesson: -obeccon f9T9T} a3e7ep ()Borerp.::60Texp eo e8eese8 wou = su 41 # (M0308 Fywexp'p eee 02-¢ Bunsry “02-$ INBugsy} wy aeuszasd runs opsRoL} POA ‘aund tan #6 ays a8essour yruoiannsuoD rad “oBossous raaigo un if aso ¥ nauad Bojerp ap 199,q0 un ‘qunpus esypour wediouud UH Uf Ag NIAVAL. }ebessom Tésu ,7eu }aSessou Strand Borerp otrand ~ abesseu sse1o 10 no 9} fe vf yaa 0 wt 2p spud 29 ynaudew 948098 NO IE seIELD |p a sTaNKp pow uy mun jruaysuen vo “2jduMis sod areo assooud 9foun ‘ue ZrSYy un-suy ayuYDpasd O1DeUL LOYAUDLH sojpouend varsojoy naved prspuris Epo}aW o SIX op apjumd pow an wumu or “es woqureM 2 18-89 “+45 ‘snupe aise toured ap piqetzea aywn un asa ut afea aaD°NIMRL 3° DUD // £( ,enupqucs 03 Fey Aue ssaxd, )33u5249 ‘Townq ‘g¢-a6x )Axo308 (wipTamipyra )s3gean09 oury7dra: reBeesoe pron ‘osurrars ft réem )squtads £¢ ero Noo OIG \ayaeaKea // #( gftdozquaq)ador ‘24337 )4x0208 1 obessen , }S0TeP )eBessou: :asessau ( + ( [Bea 420 feTa¥3 82972. ()Soreyp=: bore TP dd NIMEL *2-3 Bun ‘uRoY!pow aisso0 wUizaid y7-¢ nuns] ‘BesseM ucRONASUOD UIP inofivssauu “tiouny 10} euidoad us “afesous ap scypANStHOS| stz nurdoud yawasiye ame 9799 sep “gd NIMAL. Up tmowend yey aBessou injauojenasuce v 21 unde Ring ‘OA mHouy v9 aMUYap WS eyeE|Oop oy Ys aTMGaN “HOjEA EzvauUMIAL NU ATWO La}eay ‘dn un Bate BS aingeu wiouny s4ejor99 aIEO], “UofeA PusMAAL Oru yod MH 9/30} aieHeFap nos ojsneseyzap ul dn un mgLne oTEod 26 4 nu Jo}aNAISOP 18 JOFNNNSUED 30} 2 S fl RIMAGE 30 pue ' fQeupr ers prow rogearad ( PSsw .xeu> jesesscer ‘oFtama oTeTp otTand = ebessou seeto HENIMaL :€7-5 6unsrT LTNINAL wip o80ssou roses exiuyyap uy on TovaISERS sjarwoNasiBoU pane Boje ap SIesEO F ‘Bana Bed URNS wi sa ae invatam C++ pas cu pas MB stata Co pa 7 ‘in TEWIN.CPP 5: adiugass dan pel as foment re i Am folosit acest operator de sine stititor cexpresii cu alti operatori $1 operanzis array 1 ise 1 =, e. El poate fi insi combina in In acest caz, element este increment variabila este folosita in evaluarea expres Operatorul de premorementare fac vaniabila in expresie. Acesta este un exert array! atribuic 0 valoare oarecare s1 apoi vanabita ior de postincrementare deoarece ti abia dup folosice, lerementarea sabia apor foloseste Hie oy fn acest caz, « este incrementat Sapo se atrbue © valoare elementuta arrayfi) inorementate, ind + inaintea unei variabile (#+i) este imerementati ver izatl in expresie. Folosind operatorul ++ dup numele stupa ce aceasta este folosi evaluarea expreste, SPREE eee ote ‘girile la TBWIN_CPP. Noii construetori folosese peratonut de preincrementare pent fica rindul pe care ‘mesaj. (Adiugirile extensi existent), Listing 6-26: TEWIN.CPP ee Ressage* ns © new message( "This 1s = sample message.” geten{); 147 5 casetele de dialog sunt mostenitoaralo casctolor eten() fo = now nessage( “thie ie a sample” eworLine message.” ); geton() aesete ms; goten (); me © new message( “mas 18 a sample" ‘enree-Line message", "beang tested." ); geten 0; gelete ae; geten(); return 0; message: :message( cnar* magl } dialogt " Message " gotony{ ift+2, 17 vextaert 0) eprint£( msg tap_tine i): nessage: :aessage( chaz* magi, char mag?) Gialog( " Massage " ) ant neg_row = top+(btm-top) /2 - 2; gotoxy(1ft+2, msg_zow }; 7) textater( DIAG GON CLR); eprantt( magi ); gotoxy( afte, +tasg_row )) cprants( mag?) tap Line) message: :message( char* magl, chart mag2, chart msg? } diatog( " Message" ) “ane msg_row = top+(btm-top)/2 ~ 1; gotoxy(1ft+2, msg_row ), -y20q ap aytuntiow no andsouy Uy “outdea ws9ge UL ++ audsap ayn Wi ivwnzae ‘ouysaf unioyeup x) ics tnoep oP puoon a mt 9p re wos ou 2a ty 89 mae FH “sifoad poe 2h 99 api aS MU FEC NEP poo Nporom HAUS mu BS aia v we pau poo tm wuneoprom us 8 08 J “ung Sun no TT unas Hoy ps9 MN yay cew arg 8-5 ne axeuaWiesout-oud 29 dunn uy "Mos BSUE ‘Inj pouedrurw opunose sseyuoIWaIDUI-ISod Mo LUNKO] YO IIRO v-S WHE “ZPD 38902 -osurmara At = gy doeung) doa > 988% )BoteTe ( Ben yxeuo "pen ze \ebeocsurieheasae BREE EE EEE eo ee eee eee eee eee Hee eHeeea or TOIRIESED a STBOPUAASOU uns Boye a eIsyesEO S ‘nutp (num rare euey -ywinzes 1S no ‘rejo TwUl YF 10d yeouqan 2p ries) areyuotuaraur-3sod ‘Sato aed ao a 150, SS invatam C+ pas cu pas pentru a adiuga carsctere retum si line feed. iclusiv caractere octale si hexazecimale, pot fi serise in Am fotostt caractere escay Afi vdzut cl $1 aie caracte acest mod. Al folosit finctia gettext), ae fecran gi a-1 salva in propna dumneavoastré zona tampon de caractere. A ‘complementara puttext() pentru operatianea inversa, ‘Am aruncat 0 scurti prvire la o au funetif inverse unut Fath de cal foperatorului delete asupra unk pointer sau adresd, Am vazut cum fu el este de Pentru a erea zone fami tr-0 declaraie ca “myvar = new char[size]” Operaiorul complementar aefete dntr-o asd destructor a eliberat memoria alocat Pe masurd.ce munca noastri a cevenit mai complex an unic intro combinatie de fisiere antet .CPP 51 .H. Defi +efne au trecut in figeral H ‘Am folost funtilestrienQ) pentru a face o copie a sirius, Aceste STRINGH. ‘At folosit parametti imp Mai multe casete de dialog; stilul de lucru cu fisiere proiect focazie vor trece de ia programul cu maltiple, sub cont cat de accesibil este realizatl de Borland IDE, Inacest ‘in primal rnd vom considera proces casete de dialog 51 asteptarea unui A prelua de care 58 ridice problem apisat-. tuner se 5 bund ‘dg0°L “2019 on 219 BS SLOBIONd 3udS3G “yoafoud) yoatoud gayuunu “asoKéy oyu Yew no wos “ad ais andurs un ap 201 ul ‘Sul, imyrsoupa oye sins fat ons BS Magan PA “TzAIAWOD ap [nOse9010 pou! 3S 2790} munod ysins en ms ‘mou 0 puEBnEpY ‘eSe08 ep atiizodsip one nquad 1 3S9}oy 1 210d uty [m 09 FZusWIOD ap insosan0ud ‘ynu rey “Au, [RUCUpA wy PUA UN TWO!W Lor eqUNK]S WON MU JEP “I2ueI0D op ass aye 18 BZN ® ANUSd (JpusoNsosn wHoMNY qyWUNgIU! WON 3OLIDHN, aisooe ap pdndoaid as nu (uresBo1d We 9010 iy piawEU, 9s wOIsO9e oI], “] EAIGOHEA vy OtOBU! POW Japosoeul YoU BIBLOOSE BiayO aeardaoiadM FS IngaN BA ()puo~sosn oHiaUT ‘oiuDAQOS BarRSUR}29p nAHLIAM 1949 9p [eFPUIOUOD TauN FaYaIo0se ap 1S 1ZUBLHOD ap aluanoos 1aun vastuyap ap winge wa 96 Hf at}eulquioD vyseooe Exdaorerut va ()puto™sasn a evaquygeporome: o-aauqp ner me orzuMNnD oxDeurpom; ) at :a9p! varwouguuin gdnp ‘osans ove up if rzuowOD vnjord v nauEd ‘eusMNy ~SCATE sousyih 2punxe YSU wing "RIMIEISE) ef ap sop UIAOM a|{ZESWOD “LINDE ESHOS Te ‘aise ino eS "gpuPWIOD o 2210p pugD (}puisiesn euNTopRCL wad eA nsONP ‘yumyoduat afejueAe BU moury varezinng Quate8 rayede renp uryzian gs omg ane} YIM ‘jwod zed 95 1a BinpaDOIG O-Ht QoIaH corsaudes wasapNIoUT (yus208 uxmea ()pusraeen aut ru yous opepnosip wauaKtIOg 109 ap sosas0ud Up ‘jus apo yun no esus adoouy wos 10 9p ojosins s1voy szayuouoyduut ys Maan se FONSLFOS 12 IZuewoo ap Bo!UN Bsns BS} ore areiBig no run op wns TBoeip bp SyoSES ayaT TENS 8nou 1 9p puenoud 3190 toe! (uhyaperseen YzuauNe> 9p aoiss {199 tzeuto> ap alRSINs “ap ys90% wl punIsE at BEOKUA -asn0t n> THD Ly B FINABASIE PpIMITOD 9910 5noM! ¥} 90 YeaW09 ehadd tattle jniosooeud “yO o1S0 uodutE DUD BeRCy sojse eames op yzeatotoeDy Iniosaaoig aoreziI4N «ZuD;H0N enisk! w Hood MESH v uOdwe oUoZ YevactIAN Yeuguioe op ingosa2ord “panoe ais nu ss rot 9p ajasins co Fou rus ap sye10428 un no S00 ajrzuw09 lower9u9) Bqye Bs pups 17 UaAd9s s15908 mnfjonaisurasoew) euinu soun e aisioose ap if | A995 Joun B SUIU\ap ap te ‘9p stiwurquios jeporoeu) 1Zu9WH09 IIK9 wouDUINEe ap vaINd sy snagdte 1u9p, 29 pinseur od “zm~SE ¥ aD "PPL 3¢1 “oUpS ap rey nes Jom unesquIp into Y vamnd se aj¢cuaw: 1 9p [IgE eaU0 Uy areaxO aus arDISy alsaOW “JOS ‘AHO aySO MU JOYEIBUSE 9p [opIse UN YOR ‘uauio> ap soes9ua8 mmynuresBosd wareat9, I 3S AON] Bp pou Soy “SIDE 9p aNBOUAH azueWioD ciONIaxd 0p a ‘A injeuopa fe tzueWI09 ap yruosadasd “Anoe aIS9 EZUAULOD 2p s0yEIOUDB uN BEC] mow e| ap = sev] ap < oundongsurousew on sto 9p L916 UN-INP ‘izuewoa ap soyeious8 wieiFoid un vi ap ‘onvopeuuin wouIps0 vy 9Sins ayn Fe Up aftzuaWIOD Enaid ateod tzuDWOD ap WoRSYOS 10sB9010 Jo}ZuaWoD e1yseI9} aay oe] ersaoe Brwpe ps 16 UIARL Bs BHULLod ruHgE ATED gf © wostoxd 100 sep ‘Ku, jmIoUps uy PxoUs EAMonAS Wwoyjauo> ayS99v 210} wENEPE 1A My 1p rauswIoD wrpN|SEd eearua8 20 jonuod 9) Oxf un 8] 9p aeHD nes JOIsY, une 'BS JOP 9p vauotiase op y Jy “a}se] op aljeuIguios mes aasel foun ¥ auusBAE BIAS id BSUEIAOP Uesna 9} BS OTE TUE BIUDADAYY O RD AIRY sAUDADAE BZEEIOGLODK \yopolonu mAsvoD WaInd YS voueuIAse ap oNgeL] arENIpe ep mnInsad01d HW JRIYO JOVEryEIN JO[!ZuaWOS WepundseI ys sigan “pus foUMLAd uy YOLVZITILN YOTIZNANOD VANVEON Tad 20 rot Becrna eed aap uawienar eS zh 184 Se eee ae tn tg ‘SUGESTIE ste api ect oman xen CPPeste pli vase amemat net TE ME ee ee sire eee eee incepeti eu figierut din Listing 6-1 Listing 6-1; TE.CPP. Hes Aiea ee sere III HUI CMI 1) Te.CPP~Tiny Baitor // Copyright 1995, Martin 1. Rinenart. Uf starsxt TE.cbP liza aict obiectele Vom adauga deci IM creat pfni acum, avem nevoie de TEWIN.H, ca tn Listing 6-2, Listing 6-2: TE.CPP SSS V7 TE.CEP-Piny Editor // Copyrigat 1995, Martin L, Rinenar= Winclude “rEMEN.E* Wf sfarsit 7E.cer SEE EEECEP SEP eEr eo eae EE EEE Pe Hee ‘Vom muts apo: Asigurati-vi ci _main( eu am mai sters un commente ie 1am redus cu nn ni Listing 6-3: TE.CPP Sit a Wr ft at REE (/ TE.CPP-Piny Editor // Copyrignt 1995, Martin L, Rinenast #incluae ~PEwiN a" ime main() ‘emia multe casete co dtal do tueru eu fisiere project 155 galore ms; geteni) recur 0) , 1/ staceit TE.CEP Dack apisati Ctrl4F9 in fereastra TE.CPP in acest moment, vett ootine 0 rmultime de erori cu should have a prototype" Toate provin de la funetile SNCONTO. Addugati dect include in TE,CPP st incereati Ce+F9 in n04, “Aeum veti aven efor ta editarea de Jegituri, ety mesajul "undefined symbol” ‘Toate sunt provocate de functille membre ale classior. Problema este et editorut de fepiturs nu sie unde 3B gaseaslaceste simbolur.( Cateutstomeleastea au memorte credeti?) “Tot ce ttebuie si facem este si ered un fiter proiect. Va trebut si uvformém fonui TCLite despre figierele CPP care vor face parte din acest provect. 3 Fapt, preprocesorul este cel care compi Figierele sncluse ( le coptazi, pe masuri ce Pentru a constru! un provec, procedal & PAS GU PAS, L pen. 2. log Load Proyect File. Extensia PRI va fi adtvgat automat la name. 3, Va aparea fereastra Pr 6-1. Cheile de infr-o fereastri contro! cum ar fi Ins si Dei, au aicr semni Waten, “4, Apdsati Ins pentru atansa_ Add Item (adaugarea unui fisterin protect) inter, Acumn TE.CPP face parte din protect. Enter pentru a adiiuga 51 pe TEWIN.CPP aati Cancel pentru a termina actunea Add Item sta fereastra Project List, fe de acum definit, Ine trebui si fanetioneze ea 51 paid a Fgieruiut TE.CPP; ea apeleazi alte func EWINEL “eum asvaoe ut WoA ansazey ayseoe ut a9auv09p “ArIEIAdo ‘waseanay 2010 By zpuumirs tt BlivulquIos no Ituosino urgeidep es enuuid ou ypeosea rnp oje0 sei yBupIs wayred ut gpeoses wp Ge-3] avo Wy RaUEpJO uw) “ANsaIDy IaMDAY spuIN WaWoaL < ad dWaal < HNIMEL < ddONIMEL << ada < upto isvo0e um “ojareoypwan ad 2j-tigpiyosap*Enseaiay C-19IU NaN we Te DUES ‘2yvas9 nou 9799 od uma aseares umn e| op iapayIpow sno IV) 2180} 9d 9p ‘uaseasay “oafoug unseaiay WeaWDEL go BUS // axeweupy “1 wrazen ‘ge6t 3UBTSAEeD // s0aqpe Auyy, ut ropeoy zossesx4 puemios -— H-axoae // my Wz dayanoa © HIGNOAL 19:84) Un ap 18 3TONAN ap Goan aTSa898 // ArevOUTY °T ETAxeH /gger BUByshdoo // s0aFPa Auyy nagued TeusweD ep Zose0GRd -EaO-CMOEL // ddDGWOAL “9 BURST vwpdoaul A eee Eo eee 2-2 ee Pee eo eee a eaI0Hd Baersy nS MAOH] Sp INS Baye 9p Byesw aw ND “(org Btensrp) wimasoae BIEDE o hh tauaWoD ap jn10s900% ‘ol NBs 59K jnuBe 9p suNdSEE UN WUT}qO BS LEP DUD ‘210Aat BOAR WiOA MDH] yS39 aC] “aI FOUN jade ynwero1g ‘ou"s0K ps9 ne un) muquiow grep o wHSnEpe gs sep ‘oessaLW wsero T] INO Ure tnd ese 1s 2182 env ()“Sundsps un a02een IP op wyaseo we YS" EPOTOUI 0 UIBOLO VS O;S9 9I9 wip Buf) “—Al ‘Boye ep sojarase> nog v siofoe ao qumjads Pazosnde 18 Bopeip ap r949809 ANVTadY¥ INWVYDONd V1 ON AVS SAA ININSNOdSVY VANSLIWSNVYL Wor a} azeo ad owysax ln uIMOe WANG ion} yS30e nydusts ews e0wj vay uN PRA TIN -sa018y ayn eu no aroarONd Kato w nIALAC Hus BS sINgeA, HAE SoC] Sormp ap ojoiases efingpe © anuad pow "31 Pimed eouweg +8 Gis ($8 5859 WBA Re 158 SB invatam Ch pas eu pas ig. 6-2.Fere ‘isierin coud cascade, Dupa ce fe asezati aga cutn dor aranjeze mereu asa. Sa adaygzm acum functia user_« tx Option | Save pentru ca TCLite s& le tn fisieru! TECMD.H (Listing 6-6) Listing 6-6: TECMD.H 47 TeckD.H -- Fisier anvet pentru eaitoruini Tiny 4) Copyrignt 1995, Martin L. Rinenars Ant user_emd()7 i sfareit TECHD.K Procesorul de conenzi al Dupé addugarea prototipului, adugati definitia in TECMD.CPP (Listing 6-7). Listing 6-7: TECMD.CPP {/ ‘TRCMD.CEP -- procesor ae comenz’ pentru Tiny Editor// Copyright 1995, Wartin 1. Rinenaet include include *“TECMD.3" int user_end() return geteh(); ¢ sfarsit TECWD.CPP 6 Mar multe cazete do dialog; stlul de lucru cu figiere provect SiMa1 multe easete do dialog: stil de Wor cu Tevere proveet _____ 469. Iu procesor de comenz. Pet Listing 6-8: TE.CPP. Ee ee } TE.CPP -- Tiny Bditer// Copyright 1995, Ranenart fincLuce #incLuce “TWIN. #include *TECHD.z" Martin b. ant main(! Schimbati singuri toate apelurile getch() din TE.CPP in apelurr ia Funeria uuser_emd(). (Putett utiliza funcha search /replace a ediorulut, pe care o lansatt ci CurFFQ. A). Clind veli aplsa CiritF9, toate modulele pe compilate automat s1 programul se va executa exet ca p Putem serie acum 0 funchie care si intoarca comanda yes-or-no, Verificarea raspunsului utilizator Y sau N Comanda yes-or-no este un bun exemplu despre cum trebuie procedat mogjul C++ foloseste ‘YValoarea zero este considerata falsa (false); 0 valoarea logica adevirat (true). Valor urmeazii dupa cuvintete chere if sau wi Jat efteva exemple: terpretate in acest fel. 1) reewitatus compararii va fi 0 sau Wy edevarat, cans 4 egal cu top JV vm ingesmaa diferit ce AE ia < top if ii == top) if (i= topl. 4 adica niciodata 2) potaeauna y/ excl infant waite (i) eouspasazd e9 Ter eT // aus ZT Te T] wom ‘estes 359 // vauepeserd 289 vo Tex eT estes yuns eT TS 380 TT yeqe eoep ‘naa east ze) fee7ey 9as9 T2 Beep ‘2073 Wi ens sass cy nes T] Roe ‘enza o380 eri ta peyez nes onz3 eoTSOT woreoTen er 27 eo weundnserd ws er eerey nee onzq eozfor // wexeoTea ¥F TT Bo weundnsoad eR /7 tat cease a sf ts g aase e eowp evexeAepe J) (eg) WE Ie ==) € aqse G 1 mee @ 9989 Bou enerenepe // if ==) || {z= BF ‘arenes quns ojozoqueed rt axojdivos reus ysaicxe ap wourplo eyoydxe w nad opezt a eid “yreewun axe 2f2|0UIOXD UL euoifejes 18 198 worfor eyaesex ix) gorbor vEasuacerp || (pre) worBet ergouncuos ae 9p atx0s1D =i no ese == ‘uoreiado varigs ardsap weosip rou BS “ese ap fou nes sok jnsimdser msq wos peo cunonn vsTes ease cf eTatpuos> [ZED // este omtgonrasut> (ez eragpuns ) aT tet eta 3puoor) gT syapauan ae ynze9 th ‘80 “esncwioe runifongsur Hezipnn ‘o22!>0s¥ op winBas waseade equInGas ¥ HAE, vores one cz atazouca> THES // vere Vor aeid areitg nd masa] a [AIRS Bowwip ap syases ay ENS // pues eqnvexe es peageae Sie01 | // paexenope saso // pues winoexe 9s veges” eIsc2 // | este | seunraonzasut> { } JT Tur sipuusdx> 18 porveno pe apace rxe1 we pulLIOs Yo pals z 20 gi 20110 amfisou y 40% atzodns wasvene od wzeaze9 as axvo ayoureBoud sep 13 9 on polfo] vasBojea dgvoudiawn Bs sieind wunzeo ‘oz 2189 1 BOE inUoU aT ts 2 | WORD osx aIsa (Ij ) wIsaIdKS 449) UL “DHhAND aMfe A> “SroAuD 16 nn porRoj warwoyes puucysuen [3 3ou Yor@or eaeBou ays9 | oTEIDdC) feotigeristessD totes i eerroqwuan id 2 AEONT vwrese BISE// “(ont 19 <> gore taut ) aes eereoqmun x no ngont reerase ease // ‘ x si 1) at eezoauimn no nsont TeeTEoR 9289 // watt ee eee eee ere eee eee eee Sedna wet TID MaBTeN ES oar ‘Sa invatim C++ pas cu pas // MECHD.H -- Fisier antet pencru procesorus de comenzi al editorusui Tiny J! Copyragnt 1995, Martin L. Rinenart faefine TRUE 1 define FALSE O ant user_ena() int ym_end()y “/_ séarsit TECMD.E care se giseste. Mai le de acest tip eare o contine, SUGESTIE uitati cd Alt+1 comuta la fereastra cu fi folositi Ait+0 si 0 sé obtinet o lists eu toate fer Adaugati noua funetie yn_emd() in Listing 6-10: TECMD.CPP Jf TECMD.CEF ~~ procesor de ccmenzi, pentru editorul Tiny ¢/ coyprignt 1995, Martin L. Rinenart#ineluee #inciude "TECMD.H* int user_end| return geten() int ynena() tT at multe cosote de dialog; stiul de ivory cufisiere protect 163, int retvaly waile (TRUE } ew): eer) dE ics 'y! retval = TRUE) reas: elee £f (eos tn! || == IN) « retval = FALSE; break 2 retura retval; } // sfersit TBCMD.CPP ff stersit_meomcry ant ya_endl) waile 1 TRUE) I; observati c& nu mai este necesar’ variabila ‘multor instructiunt return m lor ide coreet la apitsarea ane agua cf yn_omd oe 2 testa fimctia vnc cum utilizim clasa message (Cu oN 30 985, ISOTHRD ( cou yaeuo ‘Tem yzeqo )owselt rowe0n, Qecrr or #( qos )3aupado £( wa"Noo" pera 2338303 // £( 7 (dog-wag) edoa ‘z493T )Ax0905 ( onzraues 0a fox Aue 9074, £Cteana ‘g¢nabs 140208 (wary via 1as3eaxea (Qeuyy dra: :e6essen pron dda NIMaL :¢1-9 Bunsr] (1-9 Sans) QdONIMAL 1 ound wporoar 16 sorpansuos ayyiowy uinoe uRPEMEPE US fy azeluns omMU no dToMe FISH 18 isef yooigo up) “@Bvesour wsU msundsps esyd wor area ‘ainfurs “auinu 9p pxepe Uf “aueoreMEase 2y!HO] uns aessau 18 Soy oe WRIMES STeTe58 7) “ EQeuprapa pra requagad 1( peu _reyo ‘qhsu yzeuD ‘pose ye 4( gbew yzeus ‘TBew yzeu! 1{ Tew azeus you"eek ieue aur :OFTERe, boreyp optand © ou"ees soeT> (Qserara pron, eaeatad (fim .a0us ‘28su .zeuo ‘eau .ZBYo jesessew ( Gheu Gxeuo ‘isu (reno jasesnow ‘( TOs .aeys jeGusseu sorrondiGoreyp spiand abessou seers earn ae Se ree eee HINIMAL :Zi-9 Buns\T 24 BS Jo} J WOA tow 9092809q] “tI lar ure axe ula aaoe 1 ‘9p ynsunlser outta pgeadsooe 2109.0) ON/S3A SOWIG 3G 3L3SV9 INN VININYLSNOD 98 Ngo Ann aFeAN 9 ‘uretap four Hoven “Yoexo9 geeasony (puns UX wiouny Bo tisapyst0s pure) (ysto wnseasey UF areéye ‘atod rvoypur WS 90 sane He nu “EAEtoduray ypqueA o B1Pa) “elqsiten zoreoreA eA v nNUEd L343 18 at] Wnop ¥ od vaxwoEND L100 B MAEM J ftso}Og (yeas wha ‘duoa aay ‘aMoyes -sisoasn 6 yuqeueso smuocoyGaonpon nes A ese URS ((a1pe) ANAL owe axon ap psseoHy sarwoqeR zo HeIAISE Bas iota Poe ar ay sero PaNESD wa 3F 1 mu su y en sau QgN9) lee ‘Opto ade nad Opus ios Se apundsaioa F niiod pote} Bus 0 no e90) afossou poo tue 18 soured ‘sen iseoe nnusd ( .@bessou suyt-oma, rds ver erty yebessau sex = su F()puomaasn ‘su 8237p !Opuomes Hu *sBwenom ou/e0k © at ETtiie HeSeesow meu =su woBessou P(pusraeen es HSE EEE Pee tee cree rH EPH Eee ee eeePe eerie e Eee ‘ada #ti-9 Bupsry or "aieid SseIBy no ruBA| BD THInE TBOISIp Bp SywSES syn TENS Deana Sed ip aA ed +40 WBlENaL Bg Poh 165 SA Invatin C++ pas cu pas int nag_zow = top+(btm-top) /2 ~ 4; gotoxy( 1ft+2, msq_zow }; 71 texcattz( DIRG_CON CLR); oprinté( megi )y gotoxy( 1et+2, +4mag_zow )7 eprint é( msa2)7 tiptine(); y yes_no::yes_no( chaz* magi, caar* meg2, char meg?) + ‘aialog! or No") int msg row = tops (btm gotomy( Lft+2, msg_zow 11 bextattr( DIAG CON_CLR }+ oprint#( mest )7 Wands gotoxy( 1ft+2, tmsg_zow }) eprint£( msg? ); gotomy( 1ft+2, tmsg_row )7 oprintt( msg’); tip_tine(): wold yas_no: tip tine() textattr( DIAG TIP_cuR }; gotoxy( rat-i¢, bem-1 eprints( "answer ¥ or NY); Uf starsit TeWIN.cee | | ‘Mai multe casete ae dialog: care se ferestroie care apa. de tuonu cu figare protect 467, “ohie is a sample yes/no message." } ya_ordt) deiete yar ‘sor end) = new yes n0( oe ‘This is a sample” eworLine yoa/n0." 07 serena, delete yar user_cnd() = ner vos n0( - “This is a sample" tehree-iine yeo/ao", Tbelng tested.” 1s user_cnd i); delete yn; user_end) ; recurn 0; // starsat TE.CPP ‘Cand executati programul, avett obiecte cu o linie de mesaj, cu dowa sau cu tret eazk $1 asteapti rdspunsul dumneavoastré, Figura 6-3 aratd prima dintre la "message" eu refer ci ati facut fotut Listing 6-14: TE.CPP vser_ena(}; yas no* me = new yes_no( Fig, 69. Un ctiedt yes_ne cu © sngura tine de mesa (ypmo7ae8n aK 239782 erqoung ep tede mm ezoae ES TOFE // ; «peasy Suteq, ou/d0k SuTT-SCTEI a eae 2-8 Fore // eraoung op Tede un sx096 #5 Pee 7 ,:0u/sek OUsT-OMIa “oqaues © St Stub. JourseA wou = uk eran op rece sp savas os Fore 17 1( ,-pbessou oussex 2 St STL : a younseA meu = UA ,ou sak (ypasmaeen ado 91-9 BuNsTT ‘ba yruoyezetin purge rourae gppd ap 382419 © vingpe wos ()puio“sesn IZNAWOS 30 inmnsosa90ud vasvonyay voep of Nano sundsps He BOUP 0 « ‘naseojes earssoo & nnved armor) ‘sek “Tasoea wasesoo © NS imeresoud rode iiemnox “(8:4 tie yoep 1 ou HS mea man vomido wutud ey “det tna), 21019, yunyos 25902 1 op gaenane) owmeat pa sane “OTe fain) vay © FIVIZNG 9} aren o [Faved aioiSiy no naDh| Sb TRS TSORRIP OH Bposed SHinUl Te ‘udoud vs vjaqe) ze wse}2 amoal SYnuorepcaos gzeaso 2} arvo od winjoquuis ap ajeiaqe ap reuausorap XO] IMUAWOG “Bs VsvI> axs9 "pow ap auML MUN je Jowxs TW NOU Gj -aseIO aye UIP aonap! ow NO EMEB) 0 o-nimp sHouny op owinw up ‘omzay{p veIdavoo yuns (ous Yow El ‘lzyip asei9 uy au 290 no Muy EHO 10d Wo HapOK ys INNA LE anu un 19 smnd yp Sy “sre aug void aed nu ys aioumu EDU fast 5 aep9p wm ew 9005 (PU HneaIooU WHTOANOEL apa Inga) 90 ap topos nu PoECL S40" NIMay 30 Due // i !Q)puo"ax = one, a0 4 sensue, )33etado Tana ‘pt-abs )Ax0305 £7 wien owid 129323289 (Qeuprara: rosa pros sanyo soeds og // = [Jexmrq zeus aw amore epatouTe wH'NINGE. SPRIOUTRCH"ONIMIS> SpnrouTy ‘ < ‘arises op é anuad— s < ewe nnusd— p< aerizn feu 2130 Uap BAdIeD mE “y4 no adaou) IwULIOG 9p AOVEDHZLoedS Up] a6 up reus0y 9p JoyLiowenyroeds iruzume Ao 1289 ay ¥s amas, JO|LLO}EA yRuRUM, ‘works ap Bsl[ 0 op Jeuusn reTEMHOS 2p 1S um wow vo raxd (ued erioung "Bupwepay v)a1s0 axeo rue iniady ap aioury uy “eye ns wan Bore daind HPOIGLS Uy Ye a8 area (uLsG tn eTHEIE|D9p op EIB “ETOINOD InseISy. 1 spnog ase totiomy etese}o9p yo wwarewL aq "RIOUR! He-9| IoU ate 38 orasnpoid 2oyroads susoy arent 9p rouny sanmu oiasojo} wo rnunyde “ay Hfejaoweawoude wy (nnd wioury 299) ood 29 wa39 0 20H (pd enDUMA SUNALY, v vr war Luan} eaep atiouny wiseaoY’ “aARIRULLO} nfe no uwI90 2d armiye op vaeoE ayS2 =H aseyeusi0y no aresuy ge 190) Jeu om : $801 wo noo un zany wwe goug "at uae ‘Ise faisaoe wammojea 289% te > mi hued omer 88 FA 9S te Bo BuMRasi, irons : Mace RUE BY apn war ap auume me Ns 2 EIS NY seuned 1 09 99 Hane age Ene ey IWS BLET019 =p veumionas sneer “witpuod pstns a3s9 oto F octA I SES OP toto an wiuaiag ‘Hs fut =p moar 9 201g tun dey 9p ase (C ant maan() unsagnea char ¢7 eprint? ( "\n\z press a key (BSC exits) \n\z” ); ae epee \a\rt, od wnite (cf 27), // 27 == ESC return 0; // ond of XEYS.CPP PEeEHe/ (eal ek ORES PP ee eee Cana vett execute acest program vet vedea vatoarea intreag corespunzitoare ficcires tase apisate, Dacd. aplsali taste speciale cum ar fi sigeata sting sau sigeta fd pumou 8 ddQ'SKED] InureBoud pueanooxa ese msH—9" OOH WIN "SE oan andes ajnce ended ayes typ # ui won ES fp miemquios wai aye H'SAAGASY Ininualsy eesin.gsuoD ‘(1e¢ Parworea wane va a1e>) AMOI ET BUEISTIOD cans 0 fms sees pd 9 24g su 4DD JU HL SE ge meos we an Jv uh tue pe ad) wD! wend 8ON8 A) da SA Base 8a NUNUMA ETA TB ub came 02 ose) dew © aso armenieadoa -eogrpow inyrmmesfoud ajayennzau atewtazesd uns ¢-, wINB UL oo aD Sha THTAROTOTS TORTERESS // 9 urngaz saute ff uz ay 31 STEN 12 Maa\h Day} FauTado FQwoses 4 962 = 9 (21) 3F (wore = 2 £4 gnu, (at¥e 07 28a) Fox F ssozdu\, ) saursdo eae {9 quT peuBreun (yore 3uT WrorNod ePnTOUTE qaevaury “1 urazeH ‘se6T 346134d00 // eaesede // goroqse3 ZOTTIOTeA BeRBUTAGS nIqQUed ZeaTTTIN - gaD"SKDt PELE EEE Pe Eee eee reece eee eee eee eee eee dd0°SASM | 2-2 BURST ar aS HINTON UNL imjmureddoud v gUEUBA eROU eIUZeud Z-/ nBuNSIT “(JuoIAB ap SIMON aMmorEA ©-1ou no ppunzuoo 2s nu ea “ewoqqo4d O NU Ey aWeBOId Uy ISO}Y Homnd o a1COreA sey “957 Pinungo easeoyea wy Heumpe i RED O Kou QuoIa’ Helade FU“ ezeauimor Ovors8 ame uy eciomys Wg "ISH) 2p axiomquioD nes BASE 20U0 nneE ‘oanwy anvoyea 0 gare vn ses aouow ain Yop Sz 9p Ure Loe yewDUND ao = pnojog w1 2p 199 "Beam aso 0 eat to are 20 stauny © a2 1 eopen on (op) domnoyen ad Puasa eimaunaep uy oA. tog moon feo esvont azo auelp eure wsts my nie Nn Vinay sjoun wunse Es pavjog wuss “Get mu z a1 1 nMusaTEDS IDC a 0 us! 28 “s-TY HesEde FoRp JEP ‘gp sowores yZeouMEA “ans op ais oe 2 up « mse “dion acy arse Hose, pugs ee aroyea emus 9 yavoumos ojon “Bee TRLLD ro 9p yreurguuo ra ‘Zy “14 afeuoNDumy aa a Es =I ‘esp aro od 05; fv yRuEsInpo9 jv BUNS area DIY He ode rear fora. tides en WE no LSE] “T yBUEDS |npOD TED Ws 1 SNS-AEURIE [ny sof wt sas ap «8 exdazp v} eSuBIs of 9p wyEyocatmN 1509 B fda9'SASDU STS wes yaad myowEAONG WaRRTIRN “LL Bh © 0 ° ot tor oot 85 iB norases © maaueanss) eaeey 0 sheen sro Hinciuae “TECMD.CEP" nt user_cud( ant c= geten() ie (to) return 256 + geten(); else ‘Ga aceste modifica, cind vorn executa programiul se va face 0 pat iade taste apdsate. De abia acum vom trece Ia alcatuirea clase Construirea clasei string_field Aceasta este o clasi foarte utla pentru 2 ‘mai folosi fisieral TECMD.CPP asa i fe salvati (Options | Save) daci vret s& pstrati ‘cum introducett in fisieral TEWIN.H. in member clasei au semnificatie evidenté. ferestre cu texte sursa. Nu vom. Listing 7-10 : TEWIN.H private: void tip_line() clase string field protecte: ant row, col ant wadth; enart str; ant cloc; public string field metring_! vosa adit eo, ante, onart 5); im /f starsit TENIN.# +3661 au 2 RUTODUEN-Y "RIEL // HUNIANAL Imseisy ty std are-o) ng -wuyoporoeus 10u zeANgpe ap epqettes uy oyereuna suns a 8 uaso9 ad Fee jndwugD wp sued oF} I Imjede mp szaoeugo op imax mis & eds aqmsap Hingpe Bs ado aL atsxegs 77 +p uangex Mw ipson ‘OTT, "g ‘orgs prevr Sutzas Hf '(Qaosat> © sora axrim ) r3a83%03 yurew qr AHOOADAL4 spaToUTS SENINEE, epOTOUTE eH -OLNOD> epnrouty ameuewry “7 stazeM ‘g651 aubtahdoo / ao3"pE AUTI=ag0°H // ddo'aL zis Buns pjoty Buns ws8I9 2 wsOM E ‘huuadl sesaoou imouns B BSNpaL asa. ZI-{ InSuNs Up vauiIsiDA “fare ~L yun 9p oysaiod 0 are Qucys epolayy “Wetwow see my oTkATY soe A yeLONOMASAGh yOY!POW Bidod WwEARYsUEN ys NSIS P| lA WORD ES ENgaN ye sino Ws pueiizer iy we-ou yep “yy puLay e] tuSADN Y ap 09 0 2d WrELOAY BS OUNG 3804 YY “R-aILIOG soOp wwIdoo 18 @ aldoo o nowy LIE MU ZoFINSUOS WH YD HPAIESGQ, @g0°NINL yTETeIS // f(x) sautdo (nous: wwroty Burags prom (Qptets buraas~: prot Buus: feans v(syustaae = apt 10 = Teo (s sseuo‘x aut /o suy)preqy Burge: :press Burzas {Cwid ary wid )z9363%03 (Qourt era: :0u7 eek pros dd NIMALT-Z Buns 4d NIALL 8B Mgpe W208 90 ajoporau eyuraud |=) ynBunse] upise a patj-Bumns joaxgo un und v antod ()ureus enouny ode wayan oan ‘QsR0ys wpovour jnioronnsap ‘maoronsysuo> wae waLi9s BS “es a (Ca mawarp vy esefdop Ba 95 rues savatps eso wept wor) wasspe dey 99 wa09) BS 0 316919 (Omoys aroury © vouauiase ap iuaay “pmppuR monsuoc) as uy raosino Fzvazr|e90] 2079 Ege, JWSEId 2189 pun FOIpLN ou 109 18 or eps exzaEIBD 9p yous 2189 aroU ap po ands at API FIEDuONUIOD, us pzvasiye 20 oer ‘Sra ene S Aue TOROS unc Beds Sed sag UneTBAUT eS var 186 ‘S& Invatim C+ pas cu pas foefine REITE_SLACK 7 faefine YELOW_CYAN faetine MHITE_ALOE fassine OTAG_OOT_CLR #apfine DIAG_CON CLA daefine DIRGIPIE CLA foefine SINGLE define DOUBLE faefine SING DOUB #oefine DOUB_SING daofine STR_CLR Ox7F // ab stralucttor pe alb Yoefine GOHOME gotoxy (col, row) + ‘Dupa cum vedefi, macroinstructmea GOHOME se extinde ta un apel ce funetie Dack executat programu! (CirH+F9), vet! obtine un object stnng_field in partea din stinga sus, cam ca in Figura 7-3. ig. 7-3 Prottpa obictuta tng Feld fe caractere propru-zis este de culoare alba strlucitoare pe un fons all este de fapt © aunt cle gri in modul text, dar este eu toate acestea CONTROLUL CURSORULUI fn modul text, cursorul este controlat de componentele video. Cand seriem ‘nte-un anumit loc pe ecran, noi modifica de fapt un earacter din memoria video. De Un oitor pentru o singura nie 187 Miscarea cursorului S& fneepem prin a mugea cursorul. Cénd functia sho Listing 7-14:TEWIN.CPP EA et ee eee void string flair :snow() conome cextattr (STA_CLA 1: for (int . = 0; 2 < waatny i++) puten(* cOHOME, epeantfi str dy CORON; {4 sfarsit TBWIN.CeP Seer eS znd la apisarea tastelor vvorn implementa Mai bine zis, aproape primele dou! Mai curstl editarii avem nevoie ce 0 cale ‘Avem nevote deo metoda de tip publ edit_do(). Dup& cum 0 si vedet lucreaza cu obiecte string_ fie! 117-15 prezinti cele douil metode no1 adaugate i Listing 7-15:TEWIN.CPP Eee biating Toe ee Or eee void string_fieLa: :snow() coHOME textattriste_cir 1: for (int i= 0; 4 ¢ miata; t+) pute "7 GoHOME: cprint£i str); wydeoap er ntqede un tmynaosino © axeqnu 9p POD // asrz39 e188 p 7 & aseo bpm) yoatae :ebe wes vse yoy wountjonqsul founye “pun tuna Sanu nueused wn as aseo Qop” ups utnoaud axiciny 0 weNe E>ecy < suorionzzeuT> arnezep < sunpysazasury < euntionzasut> ase | cerrapszeay ) uoatas 89 Ya janysur exes seanoexe tounge ‘ebugas eyesgs c1se1 2607 2 EDED vtreanoaxa tounge ‘eqdesap eeebys e1ee3 3503 © EoUP ‘+sggngoxe Tounqe ‘96g e262} 7603 © OEP fasea 0 qesede we 2D edn 60 wea evasony omv9 aureoud waUS RS LILOP puBD YOIAAS wOURI}SRAEA! GO}0} MOA, Oop pe repost vasotos w eIesoORU “YoUINS HULU FOC 9p uninins foun tidnse aniazd 0 umounie Bs uno “osy wase} BsEE WOA puRD yUEE eine od wipe was ta pray Banas ypaygo ‘sunisi9x BsEENE EINOAXD WOR PUP aaa ateaege /7 4g aanzex 'Qarpe 35 POmous “35 DION ‘OTTO, “ ‘OT ) Js Brats bursa (x0sz79 ( a01egurum |aaaesxe2 (yerew aut 4» W°ORILy apnTouTs h BORINELy SEOTSETH ——— SSS eer ‘id euniGuia’S ajued loupe UNL o0ro) gt imomey Es ese Bxo3 08 2 < BOTD) FT wow aT ese dd °NIMAL02-2 INBUNST meapioy augur uosito oreo us “gung ML FUELEA o BwuzaKd OC 9. ap injnas a.UrBseA ap OFooUIP \JOUEA e] 1 waPEAS YS MES WAMEDE y TuDIOYS $ tuosano wsudap v najuad ‘apo% as win gang 18 eBunfe awod juosng 2019 2389 afyzod ws mou EASt3a04) Sao MENGE FOTSTS ATOROST arnezep (nox ‘ooqos+ )Axon05 Moms 2205 byesze '( nox ‘s0TD=~ ) AxoI08 ‘ome eT 2mxo frees ter ‘Sa eins SHURE IES OC enaq = suopst 98g 2800 {pmo )_uaaqas festex = suop"st 3uy (pws qut )op"aepe::prery Gurzis UT ddO'NIMAL ‘6b-1 Gunsr7 ‘ideorp waeaBus tiesyae nu ‘eououase acy IK utp soxoRIeD mapas wast Imaenqe "( Ga44ND ) wneIneL urRiBead asso syMeDXe thea pI a een EEE Eee Eee ee eee eee ree eee eee Qd0°NIMSL TOTETE 4TeTegS 7 seuop"st usnqex 1 satnegep tenz3 = sucp st OS ese (pw) weatas feetes = suop ey aur (pup aut jopTarpersptet“burz3e qT dd NIVEL 8 /-2 Buns am av asus sueaay, sand Sea RES Wie 198 apisare a butonului de mouse, (Selectarea poate fi flcu spr fatatud, wlliind Tab dupa selectere, apisati Enter). ao setae aespre © setursortype)” vei descopes ret ferment snteresant cerul antet CONIO HE: % _NOCURSOR . 5 TNORMALCURSOR cursor standard, adied lintuta de subliniere 3 -BOLIDCURSOR cursor in forma de depth Dezactivarea cursorului © interfaté utilizator profesionala, cursorul (sau purctu! de inserare fn modut nd prezenta sa nu este necesari. Prezenta c: {in casetele de dialog cu care afi lucrat pand acum v-a deranyat probabil de mutt ca pe mine Pana acum ascunderea curso ddorim ins& ca acesta 38-51 modifi ‘modui supraseriere. Donim de in fisterul TE.CPP. func ii nt a fost totus: © necesitate. De data aceasta nstunea cmd comutém de la modul mserare Ix mai strict asupra sa compan. in programarea onientat ‘Sd incepem prin a adauga 0 procedura ce stabileste culoarea de fond a ecranutui face si dispard cursorul. Inainte de 2 va ardta cum s& procedati, imaginati-va c8 vret) sd rezolvatt aceasti problema flra ajutorul meu. De unde vets afla cum sii controlaty ccursorul Va veti gindi, desigu | | | | i if i ofertprn somanda Help. Testa | enatie. Probabil ca vet sorte $2 ection ait prt teeta vee 7 programulut din fereastra de procedura urmtoare: SUGESTIE Ferestrele de documentare HELP sunt la fel ca celelaite. Dect, cu F6 trecem de la co fereastra deschisd fa alta, Cu FS alegem fntre o afigare pe tot ecranul 51 una pe ecran nonmal. Cu. Ait¥O afigiim toate ferestree, PAS CU PAS electaft progratnul din fereastra de documentare coat jn zona temparari de stocare (clipboard) nt (Project | Close) nett apisat ARES pin dispar toate de pe 1 Cénd ati gisit termenul “CONIO.H” in index, apasab Enter (Sau apisapt de dow 2. eden ecranul din Figura 7-4 3. fl tein ondine alfabe 4 stim namete functies, Din fe orn alege tna al carei nume promite si ne dued la terme Singural nume care pare potrwvit este “ setcursortype( afigat cu caraetere mai stivestoare). Dotalit despre aceasta aparea 6 ‘unteae wipo0s ap atioans Bs up wun saxBow RreUOHpIOD asaidxa Q H49 sioIade 1s99]c4N09 “youopypuoo mscyeiedo kzyRA WA “ImRuOSIND BaLEDDIeS eHIOWS 2 2p pO 4 gonpOMUT “azeEUpe ap uepOUs ayansoray op ruse Hain gowp MUIE|qo1d ONE Y WA HNL, Enya soap wiayaud ro, yuenious opadas sUIAap If 398% op JcsiN9 Up) “AIBIASU |APOW Uy OREN 8 ‘esaoeu awaape-ntt losiod ng “ug ulag aaygu 8 Stexpse/ *€ NosundON ) 9445208mno208™ Et “Yzoeat0 *C ante armen )saaex03 (Qdng223¢ pron fg uanaez, {tu ipraomorrei sor) 32 pre !Qdngze39 Gurew aay 'Qéeqz039 pron GE'OROSE, sDaTouTR wANTUEL, oDn7DUry <#*oINo> sparoury TawusuTY “7 wrazen ‘e661 UBEZAdeo // 3038pE AUTIMaa9"3 7 ddO'3L12-2 Bunsry ‘sus mrkm aBunsip aybod as 949 ‘34 ean otso go pateandise sep “puey ap azwoyna ntioBaty ga Ul aresov00 StBaules fede Hsaey “Ay, mooIONG nopyosap 5 ymuEioo NOU Llp Isap HeRieng nsosina Bredsyp Bud [Z= jrBuas] jaduosinojae 9 Boe) 109 UES BowaUA na “so] 1p 8d niteds 497 wed yedndO Me 4 LT 8 ANT, impote sejodte ‘PUTCO Hisojoy ¥S toad) avezzjnn scp ¢ 1 5 Hum AN “apuna9s op OF wes ezamp eS ingan Je sns HBL! ap aINBIedO oreo, 4B Wooey 16 ymunuo8 welaNs gam ison O/B aman ep uss tax, ajoo fm gs wn BEAU HA eANDaKD Qainarers afoury 0 a aE Hage IBS BAL Seema bea a9 wien Re ‘361 198 ‘Sd invatam C++ pas cu pas NOTA Operatorii unart accepta un operand. Operator precum disjuncta logic este singurut operator tert lati céteva exemple de operator ternar: sales tax = is_taxapie > iratetant! . 0, snart = (Fanrenneit>72) ? "tee snarc" "sweatsnurt” peincé{ ena page 7 SEW_PACE NEWLINE ); alices_tea party - tocay “never jam today" "jan!" in fiecare caz, operatorul conditional evalueazi doua din cele tret expresii. Se porneste cu conditia, adica expresia care precede semnut de intrebare, Daca este Prin adugarea unor spat citeste mat usor. in acelagi scop p ‘Near fi rau si discutim acum si despre prioritatea operatorilor. Ca 31 i limoaje de programare, in C-++ inmultirea are priontate fags de adunare alte ae ptcta: ‘J max Intai se face proausus ius v si cy 17 apot se aguna a (/ 1a fel ca in cazul anterior, epatiile #/ sunt doar pentrs cititozul unan // aatorita parantezelor, mai intai se 11 fee acunarea a= t tetas Asa cum se ‘in mayontatea limbajclor de programare, parantszele se fe ate imibaje, cu © tabeld de 77n editor pentru o singura tino 199 sauea_tax = ig_taxanie 7 (ratetamt) sales tax = is caxaple ? rate * am 0; fata de operatorul rent pentru om. doar pian ali 5 operatic sor codul obiest produs de compilator, deci nu ezitat si le fotosit parantezele indi rului, Folositi fird ezitare parantezele si nu veli avea niciodata surprize cu ordinea do evatuare, Asociativitatea specifica ordines de evatuare. fn exemptul urmiltor. asociateitatea ‘operatorulin plus este nereievant Aceastt ins rezaltatul este ari ine face exact ce ne asteptiim si facd: adund pe b cu ¢ si i a. Intrucdt semnul = limajele de programare.) ‘SE Iufim acum un exemplu in care asociativitatea este relevant: a= fool) + ber; Deoarece nu avem ia indemind definite color dout funeti, mu putem fi sigur operanzt foo{) 51 bar). (S& globald st c& bar() dubleazi aceeast variabil jar c& dacd asociativitatea este important, programy! trebuie sens mat tmpl = bar; 71 qupteaz’ glop_var tmp? = foo(} yf $mevamenteaz’ gios_var a = tap. + tmp? gp yeoqpur reqeawers a By = 2 ZeUS 303908 ene 3/7 usp avewers Tawrad ‘1a, le = 9 zeuo soage 1Sejaae me runnyonyst ajaxeoygwm 1S upypew 9) 2uN Nf anuIp arspsese9 rut ‘a1F0 dnp wBnepe MoTEsLNOD asaioap eIseaOy “areIDesKO as¥S ate (hesDFoAC WORD "IRUKS nes) jmioyooa ‘unzeo afequie uj “ar2joeIE> 2p sI8 nun wSOUPR aAs9 B In} BorBOTwA LMTED aque uj “UNpu® 2} 219 uy [RpoU aise HU BOD aIsooe anu unduis exeqoez¢9 {/ ap ats un et sequtod un aqse e // W2RRMRy = B4TPUD azeqoere9 ep zoqoea un 9359 © j/ * ythxmay = [Je zEu0 | apoyo Wo Sonuap! uns tunoRAsH ajasEOIBU, “uesooeu ayuouLja waa PISEAR? jo RAO urg any wigaty wos 4oadse 15008 3p (up-20 ni sop “areunsauteaans 16 past YOTSYALOVUYS VSNSONIGOULNI +40 somes reaprape un anap e ap FOADH FONE OD ap O|LINUONY FEMS wE Imjound 24 tsquns wa sony wnoy coed Wy 180 © YO 88H Ey 18 thio Ba ws otonot ay pags teiRoad 3S yrnez9p '¢ gosunsartos” — womancrwacn” ¢ pousur jedfazosnoqas fepow eutt = spow eur ze 98% SEN SePo aetmo // aeora ox ‘0TD++ }Ax0206 Wye + Tee) > oa e680 dd TNIMALE2-2 Bust) excusing ININPOW e nes amiss Mino eo Wwa|og repo Inpous any joat09 wnvs09 as uno Paps tio, Iminutsisoud Owouss eng pop 1g ‘sixdngo 2u mony yssoe 2p sop “ageuneadunesdns 1 poup eu: Soup BS oingan “areuuuia ey “szaucyzod pes 299 JPaIg0 asTIQ “aio122190 axe NEE opsoHEA BiNBa! 0 Lztalefns poo say ( aosungon”) edzazosanoy08~ (pwo"zesn yop "arpe » susp « euop; ) strum « soeesoarros oe Jodiazon zones Onrperseroe bans ston fea er G2 aut “a3 aur “gy qupjmoassneg cxesvccreatne Tapem sas8 ESTWE // !mn¥s = spow"sut que Sede eze20€329 2p op // > Usxwerd zeus MEP 9162. r-, nBUN any uOHIpHIDD MnsOYEecO ainwesord wazau9s v) uruanar ys “annosy | | | | Foard eee eee | RES Ged 5 aoa Be Purem refer orice element din vector eu un pointer sau cu un indice c= atl); Wc este wt (/ ¢ este ce asenenca ‘a! em ale’ c= tatty; (1c este ‘x 1/2 este ce asemenca “x fn unete cazuri este ms este mai potrivits. Cu eétva | | | Wf ete. | | | 8 ne ocupa de modul supraimprimare, deoarece este mar sumplu, El poate fi programat foarte sims nd referitea cu mdici, E necesar inst <8 ne ‘ccupim de tri lucrur ce apar cfd utilizatoru! apaséo tas Supraimprimarea caracterelor in primut rand, nout earact rind, caracterul trebuie pu ceursorul, va trebui pus intr-un de pe ecran, din memorie, In al doilea l webuie si actualizam izarea cursoruiui pune in discutie doud cazur. Clind afisam caracterul pe fonctia putch() cursorul este automat avansat pe urmitoarea pozitie, exact une Tot ce aver de ficut este si adiugiim ' la variabila cloc. Dar daca suntem la in afara cdmpulu. Nu vom modifica le, dar simt si dowd eron, Adiugati-ie TEWIN.CPP. Listing 7-24:TEWIN.CPP ee ER EEE Ere eb eE ree Pe PHP HEE aefauLe Af ( ana moce ) ; Uf code tk eles // overstrike sts? cloc-ecl ; = cna; Puteh( ena); Af (Clee < col + width = 2) 7n editor pentru singura tinie eloct+; wise goroxy| elec, row); 1 retuen is_aone; J) efarsit fisier TEWIN.CeP Una din oront este urmétoarea: mstrucfiunile ce urmeazi dup cuvantul chere pul eso. iad a aie get sting 5 en ulna Cel Vsimtle cu carat aie ‘ fe ° anti. Executatt programiul gi apasati cit ' Rue a nla des cra ste ccorsorul a avansai? La mine asa s-a intdmplat eu ce sa intimplat. ‘asit? Problema este inainte de cuvantul def te or Ace 2 fox un exmpl tpe numa hat na os probleme deme 9 Listing 7-25:TEWIN.CPP __Histing 725:TEWINCPP case INS. (7 creat case 22 sefcursortype( Insmode ? IUUNORMBLCORSOR © _SOLTDCURSOR J peeak: default 42 ( (ema < 256) 6 (cncd>=32) ) Af ¢ ins moce } J) code tk aise // supraimprinare 1 moz ‘901 5Axoz0b 440079 C= unpre + 02 > 20TD ) gt (pup dyoane fw = | TeD-9019 1238, #( nox ‘9075 ) Axo306 #449079 ( t-ugpraetos > 90 ) at Pdr ygauado E( woz ‘p07 )Axoj06 aesecut qnrdeds easemnooruy// fpup = dty ntjeds un gzeasest // 1 ¢ @r yszeus sur erexesur ep zoqured // ‘Too-soqo+z3e = dt ,z0uD { apou sur) 3 { Azemcomay 99 t9g2 > pur 1 5t arnerep dd2'NIMBL:22-2 Buns soon © aporou cur cnp meng 9j © go" su Bouse “asoMU pow B arBeHRJRU EaTEd IEOA?Ap BO ADDN 95 “dE )NIMAL wae Y JOA 29 1 cane ery UST -93]9P 9439 O-A aq YUN a 9019 a6 areata ws aan ‘anes a autioung 9p vaae eA injode * 199p waInd wo, “Tera ‘an uosuy pugs) “Bnop no nes yuouin®e sojereyger ye sieyau mapune nayuod esd wad 1 BA PaIouGta WNEpE won O18 8 n HEHFOLNS rung “eIALN ats9 MU MZON) 389 moe YB BrSaULIN jRuoSINS 16 291 wuqeusEA 29 Bound “anseoN _apuid wa a8 ‘Wse}dp rrgoH Y eA nu (Em Pupdooiit “ES wp 2favaroereD azeo vIdvarp | wesEIdap ps aina; {Worms WH ROE “pags Fourtzd Uy wyPai{dwOD IeUF uli 9189 oan 4ojasa20BIe9 eoeiasuy ;poU ap 94 Bs muowiow 3 “arouse oe am futerdns injnpow ‘nis 16 sates arenttaeydat 0 no tap JOupo un juaow ise th wioay ‘ann a 9 pegs orapw sins aa sop a SU. Bus al aoa wo NoUNNG LIN Mm Pale etna “PtHP 2 slepHEpweNs wun ep uanesaoou 1 uponop v njdUeKD weoy “S soansoap “our runtionnsu ¥9 gz 4 Palsonpomue wud andy SEE eee Se eee ee eee 360 °NIMBE TATARSTSTS TaaTeRgIe feuop"st uznzer 1 woz ‘2072 1 Axo306 #( Tesreuou 3et ‘e yzeuD)szeUS"suT pTOK Bay H{ oz ‘705 )4Ko308 © aKOKOD suTs8OR (1 = uapta + r09"> D079 § gt estugsep 232803 e7e0TMD © // 4X0 HID HLS UTODE +1 pmo tuoang >So PMO = | Tescv0Ts 124s HINIMEL92-2 BuRSIT * 50 “anil GunBuis © niqued s0ype UN ‘Sadins sed +95 uiglea eg 206 Sa Invikim C++ pes cu pas return is_aone; voud ans_cnars( chart s, ant nears ) J] snsereazd nenare spatii 7] wor £1 paeraute nenars din areapta 7] ncnaze <= strlen (s) 7] ncnars =1 prin Lipes = 1) // andick ultimut caracter :/[copreazd caracterols exstente Ja arespta while ( pa > pl) wpa // ample locus gol cu spatii (/ sfaesxtus TENIN.CR? Se incepe dect cu crearea unui pointer ip o¢ va indica pozifia din str unde va avea loc inserarea. Inserarea va fi facut prin apetul func ins_chars(), Funetia ins_chars() are patru imstruetiuns. Prima in indice ultima caracter din sir. A doua face ca pounterul pl si indice caracterul ce va {nlocut pe cel indicat de p2. ‘cu cei de la pi st apot desereste ar se bazeazi pe un mic truc: chart all = "apece"; steleni all | —- 5 char* mua = allt2; mud indica pe Wf printt tipareste pe U/ stebeni =3 exemplu: // % are rolul ce spatiu aici: a fost folosit gentry a se /1 distinge max pine pozitia spatiilor cnar* all = "aocae" sil indies cnar* ip = alltl; indict ans_chars! ip) 2}; ff ip anaics 1 geet all indicé ™ | | 71Un edttor pentra o singura ie 207 insorare sunt de acelasi typ. Punett un punct de char *p si executatt pas cu pas programul \HF7 peniru a observa valorie tuturor vanabilelor. Felicitin, At dus editorul de linie dincolo de cele mat part ale ‘eum ar fi deplasarea eussorutut 1 prin construirea unui obiect steng_field, care este de fapt un izat mnstructiunea do prima ieratie se fa de formatare ofenite ae tioony BS ywop aingany ‘arDjseN Hailes ps ¢ngas NU tndsau0> jonsut wud > 2p00)/ yo5. 1 08 3p fy IaH 39) we axl IY 98 ound » Hound ea “ureBoud mseoe eammnooKD Uf xa p00 // (sxeuou gut‘ yzeup) sreusTep PTOA fo uamgex + (3e09*4.88,0\4) UTE Hzigiasea) seus Te 2 y630R0TE,=3803 y aut 18h,0\y) F30TE (Gee3) ereu Top pBzepoGE y=35e) “(ase3 Ft3s09" (vurew 3uz | (tesawuou 3ur!s 4289) sreus TEP pron epnroury ‘dd 9‘ 3-8 BURST = rrr areweifiod 9p oye vue iajduroo ai rugs aoiang 208in9 sueAy 0) eowdsyoeR ataRIng y90s89) ac] aLeBIII§ NPR WOA jodeDIs99" Uf a 210 SA nvatam C++ pas cu pas, — SUGESTE EEE SUGESe reer Ere eee Prin comentariul // code tk autorut desemneaza locurile di i fin program in care va trebut lence sk mat sve suction, Ete pute robb ex acest cur apard 51 in alte contexte, aga inet locurile in care el apare pot fi utilizénd comanda Find a editoareior cu care iuerat i. ee eee Ere ree ere Pentru a face caracterele s& apa ca find sterse, trebute i deplasattcaracterele e Ia dreapta fa stinga si apoi si adaugdm spati fa caparul din stings, atl incat sf pistrim lungimea mitalé siruli. Incercat acum singurt serie instructianile care fac acest cru, Exist muite feluri in care putem face acest luer Eu am procedat cain ul 8-2. Listing 8-2: T.CPP ee void del charsichar* s,2at ncnars) 1 // sterge caractera din ospatul stang all 3 us, adaugana // acolasi mmar de spatii in capatul crept J/ nonars trapuie sf fie < stzien(s) // vatoarea amplicits a luz nonars este 1 cast piss; chart p2=s + nenars; waite ( *p2) spiee = ton; while ( pixp2 ) ‘pie = ineavoustré sunt rezonabile, ati facut o testare corn Prin testare complet na fa posibile. Acest Iueru nici nu ar fi re ‘am testat fiecare caz.in parte. racter din tang al sirutut este un astfel de ca. daca Functia tucreaz8 corect intr-o astfel de situatie N aceasti categorie: testele nu ar aduce De pild, stergerea unui car pentru del_chars(), Vedeti mi Nu ar avea rost s& consider elemente nor despre comport aac ss Fxaminindu-vé instructiunile, putefi face un taventar al cazurilor considerate, Pentru cele scrse de mine, acestea sunt: > stergerea unm caracter (apel cu un argument); re (apel Cu dowd argumente), ncorecte, dar acestea nu sunt necesare. Am inclus wn comentariy prin ea Jhumaru! eargeterelor sterse Si fie mai mic saa egal cu lungimea tala a § ‘Anumiti programatori ar introduce si mstructuni care s& corespu ; ‘mai mare deci lon: Se argumenteazi cA prin aceast mai sigurd. Poate au drepiate dar not vor lisa programulut apelant sarcina ica validitatea argumentelor. O fu wale programuli apelant, situate care nu contribute la sigurant Dupi ce afi testat complet _aceasti fun adauge ‘TEWIN.CPP, impreund cu un case DEL prototip pentru del_chars() in TEWIN.H, ox7F // culoare straiucitoare gotoxy{ col, row): saetine faefine sTR_CLE GoHOME void ans_chars{ enar* ¢, int nenars=1)? voac del_chara( chart s, int nenars“1), funcpet in TEWIN.CPP $1 sortett instru igul 84 Adiugatt_apot actiunea case DEL, setcursortype( instode 7 ES" MORMALCURSOR: _SOLTDCURSOR) ; case DEL case 7: //Ctel+c j/ copiaseaza restul sirulu de caractere ov un spatas us ngosano preouoT}tzodex ts ezeusTsee2 // | ()9e-20T24438) seus TP surge eT naeds un n rata tngsez ean // panes (19 < v0T=) at (resorts) 3t Lesa 9ee> pyeo3g oz“20TD) AxoI08 yaurzdo 2709) 40308 1s weeestzeas // Taaosane gzveuortzo: ‘{99-soTo4a3¢) xeyS 700 ebueas eT nrgede un ao tarnats Thagex ezeaseTdep // pEraIO// 1 9500 ‘tag 26eD dd NIMAL ‘8-8 Bunst] ‘powasyoeg foysey vase vj MLIOP wiiesedo urezEyEAN Ho OL {yo Qos upe etoury uw) WEEE aSYE ee Now ud sg am ad muoud pian ys nes LMS Kear lace soareoap “gIauns Feu aise oped fase axese ‘aoedeyoeg Wastl no 20K} 9s muon] sede EuMEEpIOM deoidy “Yep etnyH yeISE wey IRD ad |RuaI9BIED ANRIAdO sHIeOR wIOBIONE ys ojtuuod 17-ou exseaoy “mmtosino earureUIp ymiaioeIED 1 aBsaRs Barna 3p BIOA% luamnfis ro soso op yeoIpun anjnupyoew wareBieas euoHLaydust fe 20 yng, inindosend ‘mojo vonpoud 9s eH JOC] tayse, vasespCe “weiBoId ys098 HiRINOGXD PUL Sao NiMay TATAGSTeT [RaTeReg= 77 Lo tds ( 2atd } otras sebeda = 44tde (ts) orn iszeqoursezd yreu9 feotd .aeuo + e350 exeuou car © Baty! (e)ustz3s => etz ys @ vezeotes // ay erese // adezp tmgedeo ur tryede op zeumu teereoe // wénepe vs ‘s tnt Te Suess tnaedeo uyp ezeqoere obzexe // fezeuou gut’e .xeup) szeus Tp pros arnegap fawoxe F(mox ‘20TD )AxoRab f4aas )gqurzdo “(nox 'T09 )Aaxo308 Tnsoeano pzeouct}zzodaz 7 ezeostseex // s(tossoorssz3@ ) saeue"tep eBuese et // we ‘Su ob MUST wre RUN ay ‘sedis sed 45 ween BS ae 24 ‘Sd invatim ++ pas eu pas DEPLASAREA CURSORULUI PESTE UN CUVANT ‘Sammy Mitenel, Are numai SOK si dispune de editoate sunt de zeci sau suvant”, Asta nu inseamnd ch d lus Sammy este ares rhumai cE nu se potriveste cu ideile mele despre ce ar tt Urmatorul cuvant la dreapta Cand dati comanda de deplasare a cursor fapt prin asta? Dacit ci ispunsul e simpht: do Da albe. itilizez aceeast definitie pentru ambele capete ale ui ia de parcurgere. Pe de alti parte, re dreapta, cursorul se va dep! ceriorul unuia ( se deplaseazé citre dreapta pan set peste toate caracterelealbe. lege cl in ambele sensuri de pareurgere cursorul se va opti da 2 de mine pentr a gist se gqunge yeeputul 8 Alte functi ale editorulus de 218 return “ere; / We Depiasarea nu este ally sau word right le Fac 1 word, zn) 51 mox Listing 8-6: TEWIN.H void ins chars (shart s,ant nc chart left_vord(cnaz* left, oner® nore); chart raght_word[cnar* nere) ; Listing 8-7: TEWIN.CPP case BKSE Af | chocdeol 5 // muta restul siruiui ca un spativ 4a stanga cel_cnarsistr + cle - col) reafiseaza 92 repozitioneazi cursor fexey 4zeuo /959T 47EUD )PIOW"AZET «HEU arnezep, 2 (woz !o079) Axoao6 fTopsaas—domDoTo ‘(qen-poToias '38 )pXOH |zeT=do. TEU Mon aT Taa9 ese we T ese pyeoza 4 ‘01D |Axo308 "(roo-c0asz36 }pxON qubTZuds, aeu9 Mowe Tusa ese> See 5 eee, dd NIL 8-8 BURST (gal 8 1g) $06 n9 sed aveanoaxe tad azeuEKap ino ayausay ook BS 6 dd 1 eHSHg NOU UMMUY eHoUNY axsaTe ToUNM BS NE nu pep sy uw op RS Sup BA BS Ue yO BaD NIMES THTROTETS THyTesEyS sereu uxmex a 8 ae FONG TUS | | | | | | fexeu-— umnex (exeuy |) 3t (ee > oxeus ) otras yuszno qre Tazeqoeseo s3sed eDer3 // (zecoxouy) ertun eystxe eqse02 goep ‘guezno TmaueAND UIP Oset // b (aye ease nu eres ze30e7e9 Tatad eys° cf 'zeaentyeds) rrOgy TATAACO wrOzuOD ezEaTONT ‘eqdeoxp eads aueano un toTu eaS1xe mu you Zt6 UTP (TRU TET woquteurp Teo) zaq0ere TRETyTA eT THzEGUTd soTeOLUT aye seaoexe tnd gdnp aerge qIe seqExeD op qTTeZIP TeIETeD ToMTIG eyTeO ‘gre aeyoure0 |p 47zegyp Teq0ezE0 un od UTFe oF FORT gre zoy0ETED |p 7Tzexqp soqexKo mroqeurn eqnes ‘qe Zeq0ure> UN ed BIg 9 BOR wadvesp utp qusano myzoqeuin Te Sueys Tayedeo eaNED wadeosp UTp thynauean Te Suegs Tayedeo w3nD 4/ (Cexow sz0vo )puonauots yeu arnesep fyeoxg, '( nox "pore )Axo305 ixye-dostoo = 20T> ( Tos-s0ta4a98 )pxowgubez = do yzeuD Moni ne BseS ait 39 oreo Hox 190791440306 336] s2urrdo (wo2" 7091 AKO205 8 24 ‘Sa nvatim C+ pas cu pas gaseste capac stang a) cuvantuiss din stanga Gspatal stang al cwantulas cusent, cina cursorel asta in antersorah cuvantuius Gar nu ia Gapecul seang gaseste capatul stang al cuvantuius anterior sina cursorul este la inceputul cuvani gertonut ente vepatul ruuz sau pe spatiile un qwans” este sn gir ce ceractere conseost diferite de caracterele albe. “we Atontie: simu do caracte! tore op care Iverats treme sf centina cel putin dova caractere! fe a Fresupunon ca lucran cu cogil ASCIT coe ( spatau=32, 39 te cocul pentrs primui caracte: care nu este alb) ” If exit i at Left ena Af ( Leet-enera) return lefts // move ona chaz lett, here-- U1 3€ at space, fina non-space wnile ( *here<33) AE ( leftesners) return left; I) fina next apace while ( there>32) Af ( Leftesneray return left // retarneaza caracterel anterior diferat ae spatiu return ++nere; (/ sfarsitul fisierwini TEIN.CEE rebul acim sme penn salt peste cuvinte, Testa i 1 alte functi ale editonilut de nie a §TERGEREA UNUI CUVANT re de a vorbi de implementare tebwie si decidem ce vrem si impiementim, te pilda, edd cursor este la. ineeputul cuvdntulu 31 dat comand de stergere a unos evant este cla cf va disprea cuvdntu! din dreapta cursora Co se iitémplé inst cu caracterele albe de la sfitstul cuvantuiui? Si ee se jotimplt cénd corsorul este Ja mijlocal cuvantului? Dar daca este pe caracterelealbe dite ewinte? fe intrebai nu a Faspunsuri nice; total este 0 probienid de converte, fat o dar pe care eu mo Vot adapta in cele ee urmesz: cind cursoral place mat molt Dorese de asemenea ca la stergerea cuvaintult ta dreapta iu, Putem astfel si stergem foarte operatry mat ‘cuvintelor vor ramane separate printr-un Sin ‘efnd datt comanc care a fost cursorui se va lipi de nou, Ati mat putea de asemenes si mat teste la eapanat din stinga al campului? ‘Dumneavoastri decideti toate aceste | te si facd ceea ce ple dack provedat asa jie tratarea cazulut delete-word in metoda case 1 UK case CTRL ARROW: cnar® cp-Left_vord (str, str+cloc-col) + cLocsep-stetaols gotexy(atec, row! break ease 20 J] "3-7 stezge euvansul gnart opl=str + cloc - col; chart op2erignt_vord (cP) eel_cnare (apt , cat) ‘8 Ate functi ate oditorutut deine 0 gotoxyi--ctac, row | break: case 4: If cerLsD case RI_ARRW: LE (eloccicoitaeth=L)) ‘gotoxy(+teLec, row) + break: a Cu aceste completiri,editorul nostra de line rspunde rezonabi ‘chet de deplasare de genul cetor din Worcstar. Suntem gata sé-l punen 1 coment $i REZUMAT Cin am inceput eapitoiul, aveam un obiect string_fi La slr program de testare si am di care poate sterge orice nur spre testarea completa, Am addugat apor o fun ccaractere §1 am testat. Funetia aceasta @ fost fotos Backspace Dupa stergere, am cot att in sensu efe dreapta, cit si etre sténga. V-am preze Ja implementarea comencilor pentru cheile Del si 1 adiuga comenzt i so}onasvo ‘ado upp seO0e 1 2919 9P 121 twos ou nonnsap pugo rounge vaya 10A 97] “atta{G0ud wAane ndaIgo whx20d wevaLISTAIU MOI YS 18 ]O9 IS AIPHGHUER wos 7 “prey Bun Weniaae For yaqveseys | + )Soterp Bura35~ v(1a3 qseuo ‘ptz yzeuo)Sorere Surzae orrand 1:38 ypreys Suraas imoa™ gs! T0038 aur veseatsd Soreyp oyrand “Borer Burays sseTo HENIMAL 1-6 Guns 1 WIP 25819 fapSBOE CHNAIJOD YHUZALC 1-5 jour od 251203 289 2 109 ase Rorep wlases o awso BoyeIp” Buns yo=Igo wy HENIAG, soi 1yBuuns y29)G0 un 2u ‘BUH IJ BA BoyREp avesK 10}AIINIGO BSED BEP ase op WALOS | 1 EDU JOSE Ise ep pAYpUEYS 4 soups vareuvdap peOsn ew 39 ‘njraisy au 2p si9su9 12m ROOT WL UNSOIOJ BF H—pN pu Ba oe du 198 gS Yos 9p auuy a4 B| 9p 8 puetiOg, B1 ap 120 axl BSE] 10, THA4 nos ajoureafioud oye tay “aud BU aD 2d 2200 ap 2189 2 nuoanfe no ze0p uaiSi4 INNA INTSWAN V3ULLID NULNAd SOWIG 3G 1313SV9 VIUVSNVI a TONS EID tusdoa 1S 1009 0H ‘Sonpau zunisuoup vy supaigt a yo wre}sIOD ua9iqo aIB paisaiosd da ap ayayep ¥} S9DDe nA HOI OA, "BerEANaR yrPo} FZEouOPIOOS az (Jur ‘albouny eaUTUSUALATP aq “atuseseu ajajzaigo 6 Nouns alufoury InnysuED WX RICAN, 16 uiapryosop gs os0 ea |msonguaysoréy rman afouIN Soqeip ap ewaseo o vax9 wayne ‘pay BuL Qasoiag 18 094 aun young wso}o,, ‘asap argjeau Ondo no ngsou jmuresoud uu] Qsvafi ny in wepayasog < ‘Qyoazis non wyayseA < out ‘sfopad aicsap wRiEaMy suivarsol no wewaumutadss| < Insoynte no ean y-es 18 Quodoy my jesoyafe no sa4 insoyeiado jrucynle no saBoyMt BuO] IS NOYs iyo pug pazajoue dn op agep wsanoe ¥ nquac 2}1gNd dn 2p gpojaU O uNSOIOg Foeip Burns 3X9} LOPAIOISY BAIBID, 228 SA ivitim Cr+ pas cul pas Listing 9-2: TEWIN.CPP string dialog:: string dialog(enar* fla, cnart tt), ‘dialog (tel) ; sf_coln2 + let; 2fzow-3 + top; sfinew string field(sf_col, sf_row, £1d); 3£-Danaw ( st pedi); string dialog: :~string dialog () gelete sf; voig ing chars( chart s, int nchars) ‘Vedeti cum constructorul pentru string dialog pozitioneaza obiectal strng_fiekd ng. Dupii crearea object ru operat de editare. Listing 9-3: TE.CPP. // 18.C22-— Tiny Editor 17 Copycight 1995, Martin L. Rinensrt Hineiude < CONTO.H> Finciuae “TENTN.E* #inciude "TECHD.B* vous startup (), int main() startuo(): 2 Citra figorsior text 2r strang_dialogt sc-new string dialog( Teese. £2 "open File delete sa; return 0; yors startup () etattr (WECTE BLUE); curser ()7 setcursortype (NOCURSOR) + 17 sfarsitut iui TE.CEP fe sfarsntny ud Ter dialog ar trebui sa se deruleze exact ‘agupra numelui de Fister resire (cum ar fi Enter) care incneie ‘unui sir. Este exact ce dorim, dar mai este un mic detali ‘Funelie mann() mu cunoaste care este rezultatul operat de editare, Este nevore si preiudim de la obiectut string_dialog starea finalé a variable str, care este membru al biectului sf S& facem deci in aga fel meat programul principal s8 ne furnzeze aceasté i fact acest probleme apar dar veh ‘constata cd nu merge. Adaugati-l in TE.CPP si uri Giada Tc. dee arate int main) startup ()) steing.dialog* samnew string diaiogi Frese. FL1 w open File "i: // test: raportenze nunele figzerulus gotoxy (2,1); opzant® (ea->ef->stz) ; getch(); coiete sai return 0, SEE E PEE e ee rere Ere ee eer eee cee eee y burmese ssero ee HNIMaLL 8-6 Bunsry TENINGL tp pay 8 soSingpy “tuo 39908 208} sojarcaigo ued es play srotoooe ws Hojmp Buus ross eyed gS pray 69 luaRuoD Je-9U1 ENO} mun yp Udoxd uquiaUr B] jnseac" eIoqseo" YpIOgE | BsB;O KNW uaand ap [BP ale> BseID YIg'Sa00eUI Je [ape axed suguoU uns areo sojeseI “BsH[o wre no (pudLs) ,gueraLA, PULL vO BseID 0 EIBID9p aleIng “punasdty ezvazon} 95019 enop 2199 yo injruorE|;dUoS auNdS wo, ‘wos wasveoe wep 9p “esta |e HugUDU! InuN ParessoNe raquo o¥oUN O pk fur BO JQ B| 9oRH vaING WHE IS9q"ASIND AU RINT) EISPADE +3) jmIOH “wunauduay szaiony Bs 2u y Buus sjajs0190 {po 28/9 aumoF a1s9 OU UnON, oresHOREINAIE bacypulUreay “ploy Bunns rosoj0, Lquuous | S909 6 mut AIP 129 ‘189 foyep” Buns ymtoargo wiseaae wep ap :ayuIeU IRU 3p u>9 IOI 9189 tUNY 2p BApSEOU ‘uio}gaig “sOFPIA=Iq0 InzED Wy YepuEWODD: LEMEEPIORU! aISD So9de ap Lek IS39 EEE SEE ee ee ee ee ree eee Pry ua38 + (0) Tease~ps) gsuezds (UT 14x0306 eTT3 Stuy azodax “2603 / eee eee eee eee cece dao'L 8 Buns Po eee ee EES ee eee eee eee eee eee eee eee (sxeuou gut ‘2, a6u5 |ereuS eet proa usecge usmaez (QTeas: ScTep Burge, zeuD QSorenp burzas~:: Borer Bursye “QTeasy zu (Seterp Bura3e~ H(7aaq seu ‘DTZ, zeyD 16oTeTE BUTZas ortand 35. prety Bura3e ‘ox 38/700" JS Ut exeatad Borer orang :Borerp Eurzas ssero HINIMaLi-6 Buns infrow mo go wos390 ‘wysPIOe a T’ALL arsaS0yop no EWI {6 jHBUUAs" | op inttos 9-6 1 yop] ieee (eas afouny 0 Reatd 6 “proomma msvaneaareen are (jas tou one 270) Bmp uadodsap wo A, “aso ‘ddoNIMAL UIP Ofeas 8 altycuos 9p a]uora wpurzand 1-6 varity ps2mn as s4g0 rege ddo"NIMAL 39°6 Sunsry oe Par TOES BOND 6 ‘Sedno sed 045 ween oS ae 230 88 invltim C+ pas cu pas feaend clase string dialog: protected int row, co; ant wadt cnar* str: int checs | DESCHIDEREA UNUI FISIER de up text, TEST FIL. [até ce cor Sa incepem cu un mic ant sdit_doi int ona) partriage in pear tree pubsic: | tle doves String field( int c, int x, cnar¥ sy; | French nens ~strang_field calling piras | Gianond rings woud edit Acoast linie este cheia: itera dumneavoastra in acelasi catalog cu proiectele ficute in C++ 9 stream n deschide, haidels si aruncdm o privire asupra Fister isiere si stream-uri in cee feiend clase string_dialog | ‘de gent printf) au fost miocutte cu re C++ are la baz conceptal stream (flux). ‘cu eventualé formatare, Oper jerarhii de clase, declarate in figicrul erie programe ca cele ingul 9.9 (este Aceasta arati compilatorulu 8 obi ia field, ca $1 ye donim in aceasti situate le string dialog pot accesa membrii Listing £9: T1.CPP. Hinciude | ant maza() chaz name [J=" Martin Rinehart"; cout <<"\n' > temp; return 0; £6 poubte = aur fs axore fo rey Qurew ur > juuoresado 16 1n09 Bed no wed 345 urebenta eg MoS trvagion Gt pes cu pas, unsigned w; Jong 1; elrser() eprint ("\n\r size of char eprint#("\n\r size of snort is eprint ("\n\z size of ant ae eprintf ("\n\r size of signed is epzintf("\n\r size of unsigned is epzantf("\n\z eize ef long 38 gaten(); return 0; LLungimile tpurilor sunt date fn bytes. Un char are | pyte, un int are 2 var un tong, are 4. Figura 9-3 prezint& aceste fungimt pentru TCLite, Fig. 9-3. Marin ale spurring! tn TCL ‘SUGESTIE Motivul peniru care sizeof() este mclus in limba) este pentru ca dumneavoastra ‘él folositi pentru a serie cod portabil care si acopere mai multe platforme hardware, ‘Am utilizat cuvintele chete signed st unsigned ca modifc car. Efe pot fi utilizate ca sinonime pentru unsigned CCuvintele cnete ong si short pot fi ce asemenea utilizate ca mnodiieatr int, cain acest exemplu: snort ant sty // tip intreg sourt // tap intreg scurt tong 1: // tip Untreg Lung song ant // tip intreg Lung Dupa cum am poate fi folosit cu tip folosese numat char, 1 long pentru programele pentru calculatoare pe 9 Citiroa figierelor text 8 iLL... £.. 1. SEs Qalsaaaaanauande ondeueusbssusbususssbSesSnsess ~ Cum sa dofinim un pointer in definitia tiputui FILE apare io linie pe care apar doi pointeri, Si incepem cu Astersscul (*) poate fi iacent cu numele tipului saa ou 8 ctum procedeaz cei mat ‘ogramatori C) cnaz* cpp_styter vo Styles Mpornter aeciarat In stilus C++ Wacelasi luca, dar in stilel C Ambele pozii ale asteriscului sunt corecte in C gi C++, diferent este doar de stil Puteti ce asemenea si declarati mar multe varabile de un singur tip pe o Tinie carl, e2, 03s ant ik, 12) 33; (/ trex variapile ae tip caracter // trei variabile ae tip intreg Dar dac& dectarim doi pomteri? Putem proceda th oricare din este dou stilt: char? cpl, * cp; char “epi, *cp2, //doa pointert de tip caracter // acelasi lueru, in stilul veena ‘Dac omitet! asteriscul, variabila nu mai este pointer: char* cpl, €2; // ¢2 este o varianila ae tip caracter, 1/ na este pointer , cpi este pointer 1/ ci este o variabild ce tip caracter, 7/ cpt este un pointer onar cl, *epir a, a TENTIE ‘Nu uit sf nctudeasterscul act dort un pomter. Epe usor 58 rest st Sb serieti char* ep/.cp2 pentru declararea a dot pointer: de tip caracter. Fara asterise, a ddoua variabild este de tip caracter, nu un pointer de tip caracter, chiar daca numete variabiler sugereazi acest ter Definirea de tipuri (Cu typedef asociem un nume now unut bp. SS presupunem c& seret un program pentru pilotarea navelor si lucrati cu distamle masurate in mile. Puteti defini an tip Distance: typedef unsigned char Distance: Programete devin astfe! mai usor de inetes: gaeueape “7 etareN *s 203103 EEE Ee eeee ee eee eeee eee eeee eee eeee ee eee Cee ere ce erEeP ener ddoRL 2-6 Busy sattiod imum worBoyea presiye ojs9 arwutap nud go yma AE epNIoLiy EanoaND ‘nou va1apan na Hoon nN “EY op asopwysap o MUZaNd z1-6 1 nsoisy mugayes gs woua pupo epyid op vide ‘2ypod 28 wisnaoy “arsyp s8ofoo8 v] ANT SUSIONS ‘io yum ase otros 95 es now soH$yf un ya19 aIs9* ‘hu Bysa0e pugo exunyis wy {onu wazeoyes saznoyn ()uadly ‘ean9 nuyuod asyp ad ap 49184) nun eaLapHyDs9p | exetaos naqued exeptusseD ‘a4a3 zetsT2 FC yity feuBas ) ued: TFsINO yaTIE smlade no apiyosap Won jf a1Sis wSoow UL MEADS BS BOUDLA MDA BA PLE SaTaTO naqued ezeprunsep ‘axey aeTsTa // Cady 3 yusdOs OT EgUT ITE uTTs"3803, =9ueus [zeus ‘un op fade uN-nULG siyasep y va Joy un (gpp|duiod v1] nad djopy eaRWawRdOp E01 ly NO mS axeuig aumiSy naqvad asd 2, 18 (Sia) avouIDs naqUeRt Impoyy hu wayworeA ay GY wowa|S uN v| AoWOd um oy reHNZAY BD ae ve ‘amsedo 8p pour in 1 sorSy ap aumu un aiuoumBue eo are (uadoy KomoHIgHE| ap woung crouuiG yourBoue tn "jon 2pRYDSOP tos ta oygeUMdsar0D yooigo un-nu: otieiedo mseaoe vinsdeD BIOK! 18998 apitout ¥ 9p sxuENy Tuy opiyosap 2 uid sdzouy wo, px=) tea oeoy won) wos vp vio “a4 tovans inun eidise yreaisdo ams ‘paysonoud ‘Boep aug yeu 350} 1 se go paso a2 9 8 ONES tiqusew B] Sag0e Hany “LuMTNS suNs dh S998 9p aiaqqeiTEA, jab © PHSIe vamNID v| ulLIeR ws -aNEBaId mseeoe ECG, 42164 nun eauopiyaseg weuquiog y syP0d wSDOV ‘afuyaporopu dup ny y aveod einer mseaoe poyeoM fisa jntmeiond “oreU guOH| Bulg HPO puEAE gapadAi No au TUV FULL Ro wunw (euysps) wnUFEpaxDew op youre. uSaOnS #4 qutoa snutog snd ap 2qqeima woe wsE|DOP WEAN sautoa fpxoosA UT fpxoos x 4uT aonz3e sepeds2 pour aoe ut euyap ayn, rad areut gion) no dou aus suImu Joun warwatqn yreaIaBNs duodxo NMA auew"geeTe seus wes // ousugeeT,touD iTnzeo uy Te PO// xeqoeaee dra // ap zeaured un 0368 gue 36eT// roursig. eyo zepedia geyo 303 pumeasur Sutzag // zi au tbuTZag «7eyD Tepedhy wieus gumeasor utz3$ // _pappo row wuvoigrusas 20 a nynosuioise @ 2xoUNs 2p 44.5 IMS a4e9 UL AIdWOND UN axss dn smUN wasKULFaCT seounyetg wT peubrsun zovedsa “2oueSiC] smn eH Hiequuryos Ws 2189 230] yj tuseonvauump muesBord mdepe 7 BS atMqan, 99 8999 70, ‘fotueysyp ga wureas Cat Bs aIN¢aN “ULNA ap HeUEdaP EA DUBS + sbutureues7serpu sourasra eperoatsy Seq qu souvaeTd ie Ber ope aI S ‘Sed ns Bea oD UHETRAN BS od 238, ‘$8 invatim C+ pas cu pas #ineiuae #include voia startup (); ant man (} " startup} string dialog’ se=new string dialog! eget £1 "open File "i PILE infile= fopen(sd->sval(), "xt": 11 vans: raporteaza pointersl ae #isier " sa~raval (), angle); Af (infile) Eelosa(infile) ; return 0; Cina executatt acest program, ar trebu pentru vanabila FILE®. Executa program exist, cum ar fi "\noisuenfil, Cu un figier inexistent, pointeral va fi zero. AFISAREA UNUI FISIER fereastrd pe @ memore Pentru a afisa fii napa in ea cea mat mare linte din fisier. Avem nevoie $1 eo cuing penta ci 0 registrate dintr-o dati. Zona tampon este destul de simplu de creat ade cite tee, aga cd nu va fi prea are 2Citrea figierelortoxt 238 Functia fgets () Funeia de ctie este fgets). Ea este apelati ate: foetine MRX_CHARS 1024 chaz inbufT MAK CHARS |; fgets{ inpuf, MAM_CHARS, rgument(inbuf, de mau sus} este zona tampon care va fl accesati de cltre In DOS, inreaist carriage retum-linefee Coalalti exceptic se refera la sfarpitul de fisier. Dac fisirut a fost ia fyets() nu are nici-un efect. ( Putefi desigur reciti datele din * (rewind) fie repos fisier) Crearea unei casete pentru afisaj Ceca ce urmeazi este mat gren de expl Drezunta partea de incepult a unui program care citet decit de utilizat, Listungul 9-3 i afigeazi text Listingul 9-13: TE.CPP 7B.CEE-~ Tiny Editor rignt 1995, Martin L. Rinenarc Ha8tHF vad 3,upTaGg w (eresutis 31 Healy ‘OTeasceps puedos @pOTOUTH ‘ sDNTOUTS sPnToUrR Beara sed +49 WRRAMT eS ove diatog* snow sans: ant row; SA invita Gr pas cu pas wile (Ite0f (inline) ) gots (input gotoxy (27,2 eprant# (nb MAX CHARS, 2nfile); geton t+ Geiete snow fils FoLeselinilels saturn 97 Executali acest program. S-ar situafia de eroare pe care o vedet in Fig 8 ucreze exeetent. Ar fi posibil 964. 8 Citireafigterelor text 243 SUGESTIE Puteti utiliza F3 pentru a deschide si edita TEST.PIL. Este foarte convenat veti descoperi cu aceasti ocazie 9 mic eroare fn TCLite. Chiar dacd nu um celelaite fisiere, cind veti executa din nou programul va aplirea caseta de dialog cu {intrebarea “Source modified”. Raspundeti No $1 contunuat. Pentru a preven o astfel de eroare,trebuie si ne ocupim putin de zona tampon din fister. Ne vom asigura ca fgets) pune intr-adevar ceva in aceasta zon inie apare dublati deoarece nu a fost scris mimic in zona tampon, asfel c& imstructnea de afigare a folosit vechea valoare a zone) Putem pune un zero pe prima poritie a zonet $1 vom testa daca el a fost modificat. Listingul 9-15 araté cum se procedeazi. Listing 9-15: TE.CPP / afisarea flsieruiui Gialog’ snow fil=new dialog sc->eva(}, 15, 3, 75, 2302 int rawe4, sinbuf=0; unihe (!fe0€ (infite)) fgotsiinpuf, MAX CHARS, infile); Af (input) 1 gotoxy 117, row) printf linbuf) ; *inpuf0; geten); ‘ultima line adaugat Pot si revin excelent exempl aceste exerci de citire din ‘enype jmyeuue vege 3exesur inraTewtue steumy sonpeayer as // ‘foppe-Teurueaoxde-reurue3xXeUc-peppE feppe = TeuTue yeuc-purzeTIe ToUTUSaxcuc-BurzerKe = TewTue“aKetc-Deppe {BurgeTAS = Texrus aeade-nappe (poppe yTewque “Burystxs yTeurue )TeaTue"azesut pros syiTRAp TEL ywoweuc~TeUTUE™ ETT ‘(reurue wou-TeuTee ye2t3 ,ToMTUE Tewrue“asrd rewrite freurue™qxeu jreuTue yeurue ron33¢ 208 9 To Eenp gevoinn ai0> (aniogyy gy fou soem un euniugiyy aanp 31st Yet aromored ansed angie yasvaay “acura aso Ezearon aIe> Joveurerford wordy ssa yoodsp wood Woue=¥OO4 IG BINGE axe EU] Hfyooq7etya ) errum Iye0g” yxauc-yood”stuy ~ yood™eTya ff etasac-voog e793 )33uTz4 HH fe 09 food 38273 = Hood stu3 «x00 | yood"3e273 ,x000 )seT973 ptoa “st O-AUIp JoysRD Jom ofA wc frougne 2249 rerata eu 400d yxoU ¥00 yoos soars © wipre 48 no yIe; “fe Paap yZeeULIN aseD yeaUOWD aaey, P92 vayBaUdOI ND aqUaWA;A ap BSI O 21D ¥ aynjugjyy esr] anagii 20 16 81) wp nu goed sOfORKo3 Bae [nqeceu “enzo wee unde BUS 127 aLlininy1N) 31sr 30 ysv19 ‘S000 1608 29 Fegan qoanp andoau wie Foe] “2UTyecoU no aakeSIEyS 28 a ie or TOisIO FMD S ‘sedrno sed +49 wipienay eS wwe 246. ‘$4 invatim C+ pas cu pas ‘Aceste pat instrchium) insereaza un element now intro list dubiu inlantat Inserarea se face mult mai repede decét dacK animalele ar fi fost inregistrateintr-un vector, [até cum arf araat progranul in acest ea: animal animals! ANTVALS]; int Jast_animal; void insert_animal| int existing, animal* added ) LE ( last_animal < MAX ANIMALS for { int i ~ Last_animal: i > existang; i--! aninale[irilmanamais(il: alee... // exeare: nu mat existe aninale! _ copiaza aate din noul 1s animelus existent inserarea uni animat implic® mutarea tuturor animalelor care tablouta, cu at aceasti operate coasumd timp. far dacé animalele sunt in vector in ordine afabetica, nseraea antilopet 9 va dura mai mult cect inserarea zebrc Din contra, operatia cu lista inkiniuité se des depinde de 0 limiti. predefinitt de genul MAX_/ sufctenté memone RAM, dar aceastécarint. © val Alte liste inlantuite Exist. o operaie care se face mut mai rapid fn eazul lementutus de pe o pozitie dati n, int-un vector, gsifea celut de al 500-lea anmal face influ urmator animais ($001 499 de animal Spee exempt, 2mm Di element, Aceasti legiturd ar putes si indies distanid mai mare, sirind dect peste me element precedent st unmitor se pistreazi, Folosing 0 astfel de iegiturd peste 25 de element accelerail. 9 Citireafsiereior text 267 Dar pe misurd ce sstemul de eit sistem de legit devine mai complex, se mdzete necesar pent sabiliea acest: exif det vn comromis de care tebe Hac Liste inlantuite si editoare de text Structura de umplementarea unt ith este una dintre cele mat des folosite pentea EP FE- EH -PPe Here See eH PPE Foare freevent apare necesitatea de a muta un stergere 0 putettgindi ca 9 mutare @linilor ster (inboard) Inserarea unui grup de aa TTgaL a12a555 // StUET eMTyTN e358 FISeEDE // OsTS oe Gu\, == dove, 21 fpeuetsakeadous, 7605 (peg /ax03] Adore ‘[pewet] ze nousaxeR *(qan)worzgssueT aue serianesd-quou femaaaxeuc_aozd fxeuc-ourT eaze=xeu fourt seaze-aard (eury zeage) z7 (eq yreus fourr"zeaye sowsTmem )ouyTuow: seteypme AH-TEESy,, conToUTE OPATOUTE epn Tours ATeUUTE “T UTETER ‘EST AUBTAAdoD // sonypa Auty ‘sesso poqetexottz —-eayTiese // dd USA 2-6 Buns Jnuoyonnsuoo ‘ortomy ws wood 18 gg", 19 OU SUU0D £1-6 ‘autuoU jnsoyonaysuOD fame aseia vaun jnjoa veInosep ue nu y> sop “ore tou LNsONy ay EEE EEE eee Per eo a Het oP Seer wersan 3763" // eurt peoy wmngex) ()eu;TY seUTTeE + Qetrzuom (53 sauna )ettsuen rortand fount Treay ‘Our eeu yeuFTESE torre ax03 OTIS ‘"peapeaosd erzmeu seers + + genta Sq yzeu ‘eurD ease seuTTwou )ouFTuDH fqxea yeu igmeuy ‘A028 .urTson jrortand pyzqwem yey // suTTWom 3onzas ameuouns “7 uTiaea ‘g66T aubtxhdoo // zoaTps Mtg ‘S9SSETO DeIwTOs-STES A TEEM // HWTIsaL 791-6 Buns] spruygop salvar yieiefoaq, “asejo.-zNOP dd" WSL UH HEVSAL wen yowe s9x6y now uneagw, uns soyase}9 murzaid 91-6 mBunst “sseo;RIN 8 WIP KOT ep o1UY] O aTgD aTeo9y ar 919199190) sojeyoaigo erijuyeq co axfodieys ‘aygwuows “ese ad tian, Bunjueyyy eysyy o-sUY INN}XE} eaINI ‘armupa ap ininseoaxd e gzeita ap uuo|qosd pund nu es to apadar ap suororgns 20nj 2s arfesodo wusvoon i sBrgp ewapow sjasvore|roqe> ad “TIOY,eP 210H| © by vaznserdop oso anne ap indsaon no onto! as mu area afeiodo wanBiNS hia Yea) Loja BOHR Bens Sed 339 ETE ES are 250 ‘Sa invatim C++ pas cu pas Constructorut memline(0 are dow irt, selectate prin instructiunes else a acestei instructiuni se executi cand argumental aftr. ft creati o linse goalé ce va fi utlizata ca inceput ‘Urmeaza un mic test pentru dumneavoastré: // tn constructor am scras prev = next ~ NULL: text prey = next = text ~ NULL, latorul despre a doua forma? Putefi binui ce va spune com confirmati-vA banutala, pointer, dar au putei face at Mesayul de eroare se re sau far, in fumetie de mod h po probleme eu acest luoru acum, Clin vei trece pe alte sisteme C++, multi memone, car va trebut si vi alee Cealaté parte a constractorutar me: Prima data ia valon point semlineintre care a fost plasat copia intr-un now e suficrent fie findoi vor indica zona mbuf. Este necesar si 2 Citirea figtereior text 21 Destructorul Memline in pacate, nu putem ined si testim constructorul. S& continvdm cu destructorut care va fi tot in TEFIL.CPP. Un timp nu vom folosi aceasta dar ea este tingul 9- Listing 9-18: TEFIL.CPP " pemline: ~memline () : delete text; af (prev) prev->next=next; if (next) next->prav=prev: // sfareitul iui TEFIL.CE Destructorul sterge vectorul text gi apoi reface legiturile la obiectele memline Constructorul si destructorul memtfile Pentru a este prezentat strul un object memifile, aver nevoie de 0 finete constructor. El tingul 9-19, Listingul 9-19: TEFIL.CPP menfile: :menfile( FILE tf) text_filestt; head line=new menLine (NULL, """) ; menline* curlinesnead_line; char anbuF[1024); *input=0; rowand(t£) )boreTsburz3s nousve ,SoTe yp bLTsI= Qurew aut Isweuo" sat) gnqvt_ eyo 2201 SHvHD Ie eUIzeDe “(yangze3s prom vpnroury aonrourg epn7SuTy cWerigis > eonTouTe ‘ eDnToUTy spnrouTg axeweuny “T uTazeN ‘cee: qUbrzKdos /y sorqpa Auty ==ga0"3b // ddo'au :02°6 Guns ‘dsp SIMDsIp WOA puyD 1oIe Weso! OA “axsadeN opunoNASUN so! 1 Ingan vA Tore vo ayS=yuIUTTaI au unMTONLAsUr © TONE BAR so}ONRSDP a ‘aatoadsal ‘aygiesedo weazityn area sjaumford wy sede AU wieledo foun oe amtiuemaydun ap ‘yMTHP 9190 ad FEINOLIO azeurEBOSE UE Wino BEI au suNKioNASHH ASEAN (oui 1UBIND IOBIQO UIAED 199190 INON, fa 7991go FOU un ZERAIO By H{ gnaut ‘eurtano Jeusrmew meu = surrane smysvane a1s9 ezeg 9p vauiionnsey ND 9p enEIOd ‘amsaig} ayn Hy BA ep “tun SunURIU aes] pUEZHTAN MyGMAS axreoy a0R os "us uf Jovy WSejaae BSE WOR 16 RUPE HOA PIN ues900U 9189 nu Bo aqPOM SHES EISESDY "yMINASOHL SoIpu BS |-npUEDR rusqurod gzeacyyerusves wijotny icky ap ep “Zuaq foun e asBuIgogal ap ‘0 wzeale8ns afowN FFOIGLS Ws BMUEP avioung rye 0 ays> purmar wrjwadC) 1uose ap gsins wiseaor unum eneaades vod ‘sue oun veuezt|g “eKNY YoduWe, wUOZ PuRAE eaIENODXD UMYOL eA HA] YONEDA! 380) 8 ammo j99 sp "sg BoM BA dra & anes nua go [IqUGOIg “ToersoWE 36-8 ‘aun 9p tesodo yop s9j90 ynanuUoD “yrugors uodure) wuor wsMUIS O EIA W ‘ostp 2c op YON we2ae 2903 Hound se nw dey aq ind es uSeIS iy se “equemUaaL atusONd HoL0s i Gnqut) toduae} euCZ OK ysHYaUL eauaMAse ap ISO} W aaisy up ao ado-ThgaL THT TOaTETeIS /7 ' (Qerrsmoe: our ruer + ((orss73xe9) 3003 )) OT FHM fomsnaury, «(gnqut ‘euyTzno yeuTTueu AoUSSUTTINO dyesza HH (gnausei) 3+ S(orsy ame ‘yzoT /Enauz) S985 ee Wa oiaay eID S eIno Sed v5 EEA ES za 254, S&invatam C++ pas cu pas "test fil " "open File“). FILEY anfile= fopan{ so~>sval( anti. PEint£("\a Couson't open fine"): menfilet sfenew menfile( infile), feunee| infile); gelete nf; return 07 care apeleazi constructorul memfi aici, CAnd veh executa programul (Ctrl+F' wnte, Dupa ce att furnizat m at vel crede ci nu a ficut absolut ni ‘Acum va treoui si-! executati eu ajutorul depanat ccomanda Inspect. Urmati procedura urmatoare: 2 PAS CU PAS le aceastl dati folosina 1. Poritionatt cursorul pe "si apdsati F4 pentru a executa sma Ia aceastl linic, (Apisat wou. (Vrem sat dup ce am recut de 2 ceasela Data Inspect. Se va derula 0 ceasetd cu eticheta" Inspecting Putett veilea valoarea dvs. vor fi probabil diferti ‘acum Ia object pe care sa poi ca in Figura 9-5. 9 Citrea fisocolor text ‘ de ai me, pointer next, care ebuie st aba valorea NULL. me, . sb valoaea NULL, Pr avs. TEST.FIL ar trebur si fie afisatt acolo unde este textul " partr oe lg. 9-5. Observare von obit cule fn rp esta Pentru a testa acest cod mat onvingitor, continuatt ca mai jos: ® PAS CU PAS a caseta Inspecting rmatoarea inrogistrave dumneayoastrai, : schimbandu-se pe masurit ce druia o alt caseti Inspecting... doar c& aceasta va inspecta obiectul Trageti de bara de tity a acestei not casete Inspecting prev din a doua easeta Inspecting. uo rouge naysou rareifout syeuiosd eurusey vernd v Rud '§ lp Ciuxa enouny azdsap anus ap asap semnosip ary {f S200e ap mou foun wautsofOg Wud ewA;GOx | [nseo0e np ouIn|qoud naw We ame 9a Sopp wse9 9 waning wid yndsout voooey pone “NAR Sea HS we aso UREN RS Afisarea fisierelor text ‘Tiny, in care vom face afigarea pe ects Incepiind cu acest capitol, veh timp invatand, de veeme ce acum v-au fost expuse multe din bajutut C= ins lucrun not, precum: a, dar nu definirea, nume folosirea de operator’ de atribuire compusi in C++ Fecunoasterea |-valorilor Asadar, s8 incepem! ‘vom pistra deoarece este scurt gi descrte sufictent sco are dowd componente: mjoart fisiere text 10 Afigarea figiorolor text 259 Ae Atgerea Figlorolortext 0g de derulare st disparitie, vom constata cf ele sunt exact obiectele necesare pentra afisarea figieruiui nostra (de fapt, afisares fist D S& Incepem ca 'u un figier antet care confine definitia claset. Se adaugi defi ini 10-1 in fisterul TEFIL.H, (Dacd se incearei si se compileze acest fier, cu Alt+F9 de pilda, comanda va fi ignorata) a clasei de ferestre de fisier Listing 10-1:TEFIL.H /( TEPTL.W file-related classes Tiny Haitor /¢ Copyrignt 1995 Marcin b, Ranenart class file_win:public dialog protected: ‘memfile* men £41; meniine* top_line: memline* cur Lin int curx, cury: // pozitia rellativa in fereastra int ins_mode; public: file win (char* file name,FILEY tf); * procodaia de definitia claser dialog, problema ar fi rezolvati, Ar fi suficient s& adiugim lina #incinde TEWIN.H: vor face acest ferul cu extensia CPP. ‘A doua eroare, pe linia memline *top_line; © si mat mteresantd. De data aceasta, compilatorut nu ste ce este memline. Este adevi ar uita ceva scoperi cine este memline, dar nu procedeaz’ se poate atunct ri sau clas i (AU NINE SPOTONTA sontauyy SH*OTQES> BPRTSUTE aorrpa Aurg sessets pozeTs2 OTE ado" Usa! ? dd Waal: OF Buns Sojep tojarsaiqo wantnnsuos wed diy URNS aforEA Wp wun 1o1U FAdaode MU WP Foy 1m|90IGO WIP HAN a} YevaAUOP [J “dd” HAML % WEnepe yroronnsuos murzasd C+] ‘owauunae naulad Lojea ayeoipur Isog ne Tyswade ere aC] “>8%q raseo pruoroniasuo> vy jade un 2a%j 9s BALIEP iNjnsoIOMAsLOO © anu PWG UL (oo -a91 "tor ‘aeua ‘stuaesea (aeua Aproeds “sTu2 AyTosds)ATzept :atzaD ‘unuod sey ud ojuoyen wzeez1yNA ‘Bnow © MsRsUoD BS WINE HNLIOG, “BSA (eur sta sseq noua eseq ‘l9s mend aseq ese 2. Igo un nnsuCD w napad yO yuLasUY LISeZOY (ov'gageuyua Teuotado “t=tourua Teuoqade ‘aeui Aytoeds “stu1 Altoedsiesea: :esea maorpuuin 3s0§ © [n9PI20 Joqoruystoo jifuyep 380} Ne uno UMMA! eu YS “2198 1 vintEd POAT UA UIAL 2]y rase}9.|muosoNsUOD ‘areuorido aiuounize no © 8 ap aqureuy “puny ured on Busvere) 40184 309/40 INUN eosINASUOD “yntoyonunsuoa wets BS “UN ay INDAIGO ATULJaP Wwe 99 FANCY ‘10D 1upama aI80 Jf BO HIodoDsep 119A, BUSSONS bigqsoo8 sian yseI> 0 axSeujap 26 aBS BIA 28 joy 1 27004 ,A|IG,,"VoTIaWase ap SUNG Epil ap wore areod Mn Borer oFtend Um otis SeeTS soutien 88810 forrsmem 62819) azeuoury “1 urazen gs6t a¥5tsAdoD // xoaqpa AUT, /SeSseT> PeqeTE2 OTS —- W'ITSRL// Holga:2-01 6unsr ~ = 7m surruou // , sttgueu // exeoayuan STHTUTT eTTaysod guns wRDe // supTuew sseT9 fer tymom es0T> oti9s won ‘(nie ys igen eA 5 WIA Eq, ye 18) aswyo ums aurjwaw 16 aiyuiou vo ImuoreyLauios wrgWOEU oueusseto> sser9 we pie) Jojauerey BareByy OF Sens Sod UREA ES 08% 262 ‘SA Invatim C++ pas cu pas mem £ilennew momfile(t#); f120_win::-£11e win() c re ‘homiine: meine (memlane*after_tine, chax*txt) ES ee ie cee era ee ee ee Antetul specified erearea unui object file_win utilizind dona argumente: un ume de figier st un figier de np FILE. Acest object contine un subobiect ai ciase: base, creat cu constructorul I ferestres ae dialog tar dimensrunile acesteia sunt mat mart dec&t cele_umy ‘Dupii crearea acestui subot popup care este la rindul si inseamna transformarea figierului de pe dise intr-o lista inlantuit Destructoral va fi seris atunes cAnd vom vorbi despre comenzi de genul exit sau ‘quit. Acum ne ocupam dear de crearea obiectelorfile_win 51 vom face cateva teste, Teste cu obiecte ferestre de figier Listingul 10-4 prezint& nou! fisier TE.CPP in care se construieste un object file_win (dupa creare se face o paul). Incercati AItSF9 s1 vedett daca puteti si ‘mesajele de eroare Listing 10-4: TE.CPP 40 Afisarea fisierolor text ane ‘SUGESTIE ‘Un simbol nedefinit fnseamnd eéteodaté o simpli omistune @ umes dect cel mai adesea inseamnd af uitat si mctudets un fister antet. Nu vd pierd alte erori pani nu metucey toate fisierele antet, Uitdnd wn singurfiser antet vet provoca co multime de ero Cw TEFIL.A inctus, programul poate fi executat si va fi afigati o fereastxa mare sumiiaré cu cea din Figura 10-1 Af (infile) Suntem sigar pe directia bund, dar nu sunt ined multumit de rezultat, Va trebur si facem céteva imbunat Sa facem sa arate profesional Sa incepem prin a recunoaste litlu de fereastrA. $3 facem lucrurile ea mete fig yea incepand chiar a Un titlu mai bun Dack vi ustati la ferestrole fisier ale TCLite vetr vedea ste scl centru, cu liters mart, Existi de asemenea cdte un singur spatiu la ambele capete Sa faver 51 noi la fl U((QTenecopay esters ty noumeT aya «xeHS ATO 90m 2H GROG. 2UTONTE Ta-singd,ennrouTs er maxuorerntooTh eon Tou e0n Tou ewrornos> 8pm qrevouny “1 urazeH ‘5661 WY8TIAH0D, Z0a7pS AUN, Gd9°AL// ‘dda 9°01 Buns 480 HL 90 Pue /? tyez umgex { (G24) zedanoyadoy (44D do,tTeaeaed9) 203 {Go ,xeuD yawm exeayt Uiaep oTexeaTT 23803 UNDP // c-wotesex) 5 ep ays Thou // paneeneete oex09 oupuzey of we oTncex3 9x0708 eqesoate vosaed esegoz es // fquet] eyo aeuaqea ,zEU2 ‘getau-gau= wep 3uF 10=¢ee £(gqut+) yeas aeua z03008 now EnAzqUy JRTNEFS B ETFAn Beare wzwrdos// games yoy © Terstr Texts // freon (ze<(tem) ) FF tone > npaeds ep atxesyp xegezes ThegTn exqe> ‘yodear // (raaeceqe) Tye ayexess eT ep pusdeous // ¢ (rau) woprasetauazert teoona (ze (TE nyaeds op aFx05TP Tua ed waneo// (rey) oT rus FRTRETS // qnandeowy no eqsouzod os // tgmenetam ‘Tyqede op OatzOx5p // erexeaoeren eT Txe2UTOd // fede "Tq ¥xeHO tntaeds op 47z075p ZeqDeres TmTATA vt ‘argeas ep aysegyp xeaneseo Tmutsd ep oguyeuT nyaeds um wonEpE os PTesase aeopsepeu tarngxeg e 8740s o wT zeqUTOG um soTEOIUT 4/ y (ax0g aqatuo)oxqoTgTy Ace 4xeu3 4 (osungoN™} eaAazosznoaes (98013 “(aq eaLTHN) T9385C03 ()anqzeae pron dd" 9-01 Buns SI] apan as wino We “ga"aL wt UesBordgns soon wEENEpO YS WO! oO nAuEg ‘ayTO] 86 FUNWOD o| PS avo 2215 = ras J0TeI6TB EOTERY OF Beas Bad TS WRBATT ES 9% 266 file_wint fwenew file win(title, infile); delete title; gaten(): fclose {infile) © data introduse aceste mstructiuni, s& executam programul si si vedem rezultatul. Veti fi de acord carati ceva mai profesional Figierele text au nevoie de propriile for culori $i chenare As operates de et desenare a margi dialog din pre: ine dac& am putea s8 schimbaim culoarea ferestrei cu una mat potrvité we de text. Ar trebui de asemenea si putem alege difer 3 ferestret, pentru a distinge ferestrele noastre de alte ferestre de care, Mar exact, nu am Si dim un exempla de schi are impact asupra programelor deja serise: /ée#inivie vecne: woud foo(} ant lel; int i282; i} Gefinitie noua, cao mai mare flexibilitare: void foolint il=L, int 12=2) ori) mbunitaterte Sa Invatim C++ pas eu pas 40 Afigarea fisierelor text SA presupunem mai inti c& am imbunatatt fereastra de di optronall sdaug’ stiluri de desenare a chenarutu ‘Vom avea nevoie de aceste Iucruri in constructor! i cutoare, Listing 10-7: TEFIL.CPP Ete) Listing 10-8:TEWINH J) Wi wmite on cyan Black on cyan define DIAG_CON_CLR 62 Pdefine DIAG TIF_CLR 40 } {fax yellow on unite ine FILE, WIM OUE CUR 136 fee // waite on black fidefine FILE WIM_CON CLR 7 define SINGLE Haefine DOUSLE Prin urmare dialog pentru ‘include param: Listing 10-9:TEWIN.H class dialog:puplic popup protected: char’ title public ialog(cnart ttl, “ne igeiS, int tp=8, int rtx65, int bt=15, char* brde=SINGLE, int oc=DIAG_OUT_CLR, int cceDIAG_CON_CLR) dialog) 2s WBUEIS %| uSPIdap ayeod 9s BISED:2 vorwsye vs pf pupae “upei9p ap aizas nu gs) ode 91106 wo, "wese9 u oy Pewadiqe “IttoAD015 8 eBlugas spaapes Imaxe) vapoa nox pugo sown yo unis UNS, uaISId NIG INTNLXaL VauvSI4 go tpued an paseaiey uy sOIey ‘prseaiey wyswO9e UL Wwawioul q BojeIp wseIo asaso4ay aso JoiSyy wip rnyraxoy waresye ap 1S wednde au. ‘sureioidgns a1reyojo Bicnse yoedult Un 90 weed aiso um ay SoqEIp ap enseaLR iSes08 1D Teraea)gauras £183 ‘o0Ta+3T)Aacou08 {(20)a99paxe3 fey wora-T+at~aa)=0073 ue next: ‘are pondere mick in ansamblul_tutaror _ dar trebuie sf fim atenti si nu sini le prin care trecem de la o fime ta alta dincolo de stats sunt de fapt urmatorele: ig(cl->next) elecl->next; else Instructiunea break termind un cielu care trecea Sunt sigur c& ati recunoseut si modul in care programatorii_ scriu prescurtat preferand linia: LE (el-> next! Timer ie (el-snext'= NOLL). ne FOWStoptl; rowsDt; rowr+) snow_Line(xow, cl->texty: if (el->next) ciscl-snext; break; le din figier. Trebute s& mai rami uurmétoare sar peste aceastt contrar apar probleme cénd stergeti toat alfel ti ith se pretde. Instr dupa ca mat exist altele nemline* cl=startiine; | i€ (fel-sprevi —// 4a Incepatul ima mentite t i Af (cl->next) (7 Gaca are cel putin o Linie eizcl-snext so.Afisarea {nal doiles rind, shaw_allQ ar putea fi apelatS pentru aafigao Tinie goal. esas des nsteuotiunea [iet-snexe)) (/ ta starsit (let-stext) se Ati recunoseut din now £ (tet-rtext) . in loc LE jel-ptext==NULL) alte fucrury de Ricut: trebuie sa retinem ce finte este Listing 10-42: TEFIL.CPP _bisting 1042: TEFILCPR #ilewin::-filewin() ds th void fie wins:show_all(menLine* startline) online ci-startline; At (1et-oprev) « Af (ci-snext) eleci->nexts y top_Linesely textattx (FILE WIN COM_CLR) text) ee (cl-snext)) return} for (int rowatop+l; rowsntm; cows) show line (zow, ol->text) 7 Af (cl->next) ‘eleci-onext; (238 .zeuo ‘nox 3ut)euTT nous: suta"eTTs PTO, ado Waae-0F Buns Bs 89 Sumy void aiso |mxe} HAWN Nl ROEP WINOE WpGadnU! ay ~LHUEIS axne> areseidap SOF NE AM o]eIK) a1s0d 16 [MUL ajanXa} aYsed HBS we UAWOUT 38308 Ul ‘nucianu ap naif oureoad au2s e e) ‘© du 1Sejo0e uy 2189 sep ‘eaI0p eA 29 9HN a1DOd aIsq| “O-TIAdE vam THOUNY eA ad azaonT FS axzjade forioury onuad ¥iuUajau uLad fade uP) “wULazaL wud sojaquoundie v auominsuRs 9p “reWUOUN|aNs wstuBDON UN BERAZTUINS +43) ‘98 nit auotune eLsqeumea ([oWw ynogy Uwe dN> ve) AS ad orunu 298 nu Te rugwow men vsaupe ae ap arse v3) lund ysrusuen 9189 ea “otjoung 9p Jace ul ‘pauiyos quoumnde uiaap " yeuea 0 pUED, “orjoung wiseooe ul yjeoo} 9 vO. pUWULeSY Sy “TuyeUIERed un 9 4s BligeUEA ‘euoT-vet=u6T FRUDTHa 52738 umaez (zeuot => Wet) 37 (a3s;uetaascueT aut nga wourSuny wyeysnfe ays 8 sapoeIvo Ise TMU Wea XS} UL Ise seqDEIPD S29" YEP ‘ou roume mnmnaté juygdeD ap ofoouyp 2189 IWSGe Y, WA 90 DUI ‘Bugis ane 0g axe B pESEIGOP you “ERSVOIAY LWSEIKaP ISO} v asso no ssmIoEIED 9p 2 enseaisy “ore 2989 3 ‘magumu eutiuos seu, (9SH}9 fe SNOUT Now TuqUIBLI UA “Ze; N apeco9 o 3s Hf inns vouNBuN) WPDKEDAA BS ATOAAL 9 “Ney @UNUOD LEME P>EC] VION ovjouny WSeaa08 ty Wines TuNAonISUT JOM ‘areyygos) mueureifosd touSWSUE sopLaULG v pjoUns areysdsa) ura 199 furngex (ras, 1) at ang] ap oTaHtu wore nu “PEE ais0 B91 in aasa yruté wawno nu FORD ‘ap jos tHoUE Bs Fore HF INgAH eA sep (oa pugs vj axa dadod e} ‘2p o-uaxsow aze> BojeIp wse]o x] ap yatorSou oso yt "yas 9p) aIaL e waquow un aise 3] eyqeUEA ‘Tor}ouNy yoUIEIEG UNS AIS KE MOK 2k fcxasygaurxao Fimo 14331) Axox05 juts ‘sumoy nenyjonusar ojazeeyyum ad wzvazog as eHauny JoLO|UE zw WL HSB ainBuls joun earesyy -aremiiv09) ty minasIp wos 0 wise0e 9g “(JauMoYS ap apureap Ce Moys Broun (pe,aeuo “SUT "ae5ge yeuT Tom) eur Tweur FeurTuoH « tereera sete ae "Peay 26|aISTEY STEEN OF ‘Bede sed 279 ween eS we 274, Sa invitim C+ pas cu pas de (teen) returns int lea = etrlen( str) 4#( len <= ichar ) stregtr+lena: Len=Len-lenaz; Ant toobigelen>twidy char save; if ( toobig ) « savest (strslwid) ; *(streiwia): > gotoxy( ft eprinté( st: if ( toobig ) *(atrelwid) ssaver , nemline::memline( memline* after_line, chart txt) $tergerea ecranului Ultima rutina suport pe care o construim este una care va stetge ecranul. (La zare a rutine! shaw_all() vom serie intro fercastri goald si nu va fi nevoie ‘de niet © operatic de stergers. Dar vom utiliza show all) 3t ins depiasdim fereastra in sus sau In jos; de data asta e necesara stergerea ecran ‘Rutina aceasta este interesanté doar sub urmtorul aspect: cur sd testim rutina clear() daci ea lucreazi asupra unel ferestre care este deja curat!? incat si steargi un caracter din partea creapta & reapta va dispirea tre Listing 10-14:TEFIL.CPP void file win::clear() Ar trebut si (Dacd nu, seri 40 Afigarea fisirelor text i wid] =0; E rowstoptl; rowchtmy rowel ) gotoxy{ 1ft+1, row) eprimt£( blanks 7 > Banke (Iwide2]=* * meniline::menline( menline* after_Line, chax* txt) ‘un comentariu care si VA reaminteasca si facet testarea) area rutinelor de afigare ‘c& avem cutine care func! puter grest orrednd, ‘Mai intdi si compietim figterul TEFIL.H, ca in listingul 10-15. Listing 10-18:TEFIL.H Listing OMSSTEFIH /) TRPIL.H ~~ £ile-related classes, Tiny Editor () Copyrigne 1995, Martin L. Rinehart define TRUE 1 define FALSE 0 class menfile: Glass menline: class file wn:public dialog protected: int curx, cury: ant ine mode; public filewin| chart file name, PILE* tf ) // pozitia velativa @ cursorulu eazH, 58 le addug’im definitilor de clase s1 vim rutine pe care le-am testat, dar ‘continuare. La urma urmer suntem oament $i )aype Pros xesT> pton {x38 .zeyo ‘mox guT jeurT "MOU DTOA ffeuptageas sSuTTusn) TT=E"MCUS Pras Qerwmerts- (3a .zarg ‘eumreTys wae0 UT OTT “Syrand epoursur 30 mqngoemno ® RATaRTOZ ETaTZOd (/ — :AERD “HAND FUT sqUTG ,zeUD spTwT "aRuoT UT supTisns .surruau eurt-doa jeutTueur reTy-wom yor rw paqoeiozd Bore oFtond:uwwerys sseTo HAL Z-0r BURST dd TAL seo wiiruya 2) ony BA mu (pa wpeqaus mndsou) B “AHTOY, npour nana, ruosina ISoIO} woA 6 OC (qsmrangSuryCaip 991g un ws mesin> ps 9109 =n 0 no wadaout B¢"/qIZLAU NOU Usp 998} [+P Ap WOLELAISOM 16 WAA® BS WANA tape 29 nq TU Feu HopOA Bs sNBisop gan BA MaOsIn> HosEIdap YS 18 gzwopanoud wana we ‘ose fOsUH 19 BIOUlL UIOA NOU UIC] Ingosino wa0e} eS $n uns azesejCep ap 2jauntrY iNinyosYNs va"vsv1d4a0 Iuosimo evaseidop a1 9/00 9p 18 urpdnoo au zs wHaynd “eulg E20 29 ajeunns yo BrzouCD wf sunfe Hw pu “PIA Jay uM 1S Hes ‘ums aids jruesce zimiap PUR 2s 20 numguun gs Hieoiaauy “aagpZ0d wore asL2p 4g ayeod vq Tensaiay & (Buy}O;s) arejuap ap einsedo Yea; soyRIOIwy eaTeaHY OF sei 2p yor utp ajuuy ayer yawoUY nu ( SurTsaeas seurtusw )TTe hous! FUNeTIs Pron, temmerq oe ep QuewTerrssr mee et ry 1( surTpesuc-oTrs "wou ) Tre THOUS tana=opou" sy fomfanoesemn> ( #45 togesxueta>ds sexuetgeao zen) 303 # [7g] zeus mon=ssueTs ¢T-AET-A82=PTAT Foaxeyot £033 }eTyymew meu-aT]s "wow ( wIOTNOORIA-wIZE /WIOTWNO"NIN"HIT ‘angc"oNrs "Oe ‘sd (2 ig 'sumrore] )BoreTe U Ea seara ‘ouOUOT Hy yxouD jutOT Es ENOTES dd71431'9F-01 Buns (91-01 1 iognd yoqu sory 3598 134) jotnsuod rows BF gpedap 1M a8 7 “papaieid uweTHs seeto puotzs et ysuau sseT> urTMaN axa jaeuo ‘supp esse yourresu | aust x02 jreu9 ‘ayou, ‘nead yautTae: yotrand une qrzquee 7303 // ‘urtweu aonzas ‘Sede Sed vp WHEAT eS oe 278 ‘Sa lavatam Cr+ pas cu pas void show_cursor()7 Listing 10-48:TEFIL,CPP void file win: :eait() »_wins tshow_cursor() setcursortype (insmode 7 _NORMALCURSOR:_SOLIDCURSOR) | memline: :menline( menline* after_line, chart txt Cu aceste modifictr, totul este aproape gata. La sfarsit, adiugaty un apet 1a (Gn constructorul file_win) pentru a exersa show_cursor(). Veli constata cum cursort cursorul hardware dupi ultima senere, adi ‘Ar fi mai bine si-I gisim in coltu) din stnga sus, nu-i asa? Pentru asta, si seriem 0 metodi go() care pozitionez§ cursorul, Deoarece multe operatii depind de Jocul in care se afl cursorul, vom cere metoder si tind minte unde [-a plasat, in apelurite ta functra goQ) vor at sus va avea coondonatele (1 in coordonate absolute. Listing 10-49:TEFIL.CPP void £lle_win: renow_curser(} setcursortype ins jnode ? NORMALCURSOR : SOLTDCUASOR| void file win::go(int x, int y) euryey gotomy( Lftex, topey)s menline :: memline( nenlinevafter Line, char’ txt! 278 E destul ce simpiu, nus: asa? Adfugatt acum figieval antet TEFIL.H. Adaugatt urmatoarete doug edit() din constructor 1 total va fi cum ati dorit: goth. cur_Line=top_Line: 2 Ficut-o deja? Foarte bine, pentru ci de acum facoio am sé profit de faptul c& aft devemt programator C+ si nu VA voi mai da liste. chiar pen flac. SUGESTIE ‘Viss-a untimplat si vi izbiti de ceva pe care credeat al reusit sit duce la capa? Uitat-va prin im am facut eu anumite lueruri. Nu e prea convenal acest Jucru, fn felul acesta va veti da seama care sunt fucrurile pe care le cole pe care doar att crezut ca le siti Dac $i dumneavoastri sunteti ca mine, atunei eursorul acela care pilpaie fericit in cottul sau ma indearmnd si apa ‘Siivad ce se Intdmpl Construirea structurii de editare De fapt, accasta structurd este aproape gata. F care am construit object! cca aceeasi comanda s% fie 0 corn! fente doar in figierul TECMD. pperspectivi, vor putea sa mtroducem preferinfefe utilizatorula, rma aeesel adapta, Listing 10-20:EDITCMDS.H J/ SOUTCHMS.# -- comenzi de editare’in Tiny Editor 7/ Copyright 1995, Martin L. Rinehart + caosungo”}o4zaz08xn0396 #(Q)puDTaTpe) oR aTPe=eHOD (ouopi) oTrHR tapres=ouop 307 ) soszno7wous: ()aype:uqererts pron dd" 133122-01 Buns aac un FaISOOE v asesE|29p o pe esfouny 18 epmyouty eanoauIp WONOSL rmustdy ub O} cee nae Opesmae aT t « sgou exn0z sarnegep tax woswno wan9e7 Hemi ese tmomee cE @seo tay wosuao wxmaex somo ese tanTwoseno uxnaex Han esto somey an #8°> saxka wmaex :08a eee> 2 (oy aoagne foperrsesnes 305 Opworarpe 355 SEE EP eee eee Cee eee eee eee eee Cee e eee eee = eas sojeiy eeseEUY OF FQupgeGegse wars. (ypeotzeen jet st" SQRDLTORWODNTOUT HE (H SEECKIN. OPNTOUTH SHCONDEE. 9PRTOETH Somos? spntoeth ddo"aWoaL = 12-0F Bunsr) ‘wigpaddud ys win rere au 12-01 mays] vosooy "HSAIOASY a a4 yom aU vatesede 81 “H'SCWOLIGE puEUIOD 0 “axe nu WoWOUDY 15298 . a¥Sauo 88) doas imsaoe 190190 2p S908 aan sxotUN mnque “tou rzuswo> Hioanpanut 99 wanszE (ON) 6661 1 uRa (LIxa Fuuresm ere) goo] tI 9p susuNU JopZUeWOD INLINE We E> HeAsssqO WSGHDDEGE 3755555 // poor axTwosunD sursepe ay -oseno suT30pe i coor Coot NcTwosEnD suTIoPH Toot an” ¥osuns exyseps seer JON 9u759P¢ ooo, SIXE OuT30PH | 282 SA invatam Cr+ pas cu pas int €ilewin: edit do(int ema) i int done=FALSE; switch (ond) ‘ case EXIT: ‘ done= TRUE; break: ) ? return done; y void file win: :snow_cursor() Insinte do a exeouta acest program, trebwe st imeiuden TECMD.H 9) "Hig TEPILACPP. Trepuve de asemenes 38 soneft un prototp a ILE. Eu am adiugat-o ca o metods propre (private), dup cel SUGESTIE lase, dar acest Iueru face c2 ugoar field intr-o sectme clase whatever protected! data member 1: gata menoer 2: puslic whacever () private: private mecnod ate.; methods (go, nore) 40 Afigareafigiorelor text 283 fo afisarea figigelortext 28 ispunde corespunziitor het de pe tastatura, El ti decat Ese. La lui EXIT; aceasta fntoarce NOP sau 0 cor rindul seu, rutina edi Deplasarea cursorului Dupa pregitirea ficut8, este usor acum si readucem Funetia edit_emd() CURSOR_DN dacd apasatt sigeata ou vi tiebuie ficut este 58 favatim functia edit_do() si se comporte corespur inainte de a trece mai departe, si adiugim rutina de depanare msg() in figieru! TEFIL.CPP. (Listingul 10-23) Listing 10-23:TEFIL.CPP j/ TEPTL.cPP -- file related classes, Tiny Bditor 1/ Copyright 1995, Mertin b. Rinenart Wsnecude include #incluae Hincluae sincludo include include void msg(chaz* debug) 11 mesaj de depanare eprint£ (debug) : gotoxy(, yI7 ne ayniao ajtiaiedo vo pugundnsead wayeas vA 16 Ano 18 sano apoqiquuwa wzyjeraDe vA (eAou! ens uy eTurT o azesetden ay200u eOueae PT EueoToo o exese{dsp shencut S00 UT orurT @ ezesvTdan j/ +11 “ayanam weadeep BT pueoTaS © arEswrdse / +{0 ‘qyeqou rpntoma ‘hyod op eigy LnpUg! nes aMeo}o9 ap Jwo!sJoads apwunU UN No easesE}dap ORS WS a:KD sep ‘Qo no aavorguewase wun W2LIOs Bs Wa {wos ot ep “(1)0198) juero9 Jp tansox9y fe pups juin add wequns EoECE sor ‘ansasay ye pugr you idoud vaseseidap 2) aoast In WY “epmuosason kd uss go ee 30 ley 91 A OY BS BIJ X4IND wieUIqUIOD 18 ago eIEaBES 1 pjofesou st9s nes au ad vn eyo aunds.are> fesour un Tiersen Bs nyuis auaoy oop visi adioi$ wa dou jnzv7) ‘1ow won) ES WEIdERSP 2U 90 BF BA NG YOSUND 38% [nz | Pare eT feuop uanaex toyeeza fu) Bae Fan ese> teeexa {(qamop x08m94) 65 ? smaxosuns 2629 trveaa 1 amag-oten GDR 98% (pup) uoqtae fasta = sop 30 (pus avpjopaypar: uTATeTTS et dd aL 77-01 Buns ‘ausvou ehye v djowoumnBse _o aIso wpanise wwiadaous 95 IS BIOUNY ISOIOF WOA “199i09 asiUI ou YS aingan ate ap non} mag ‘NCWOS: ‘Oo Iporop BA 3g yWeunze eo wpUISUEN ‘u9s wg "wareutedap vu! fon 20 arerejoap preseoau a GA ging Smee ety WREST TS az rer TOTSIBISy BaDBEY OF Sedna sed 245 WRIEAUL eS Raa Listing 10-25:TEFIL.CPP void file winssgolint x. int y) void file win::move(int dx, int dy) « 7* Programil care o apelesza trepuie sa asigure ca deplasarea se face in limitele ferestred, ” curnesdxy carysedy; gotoxy(Lfttcurs, tepteury) ) nonLine: :menline(nemline* after_line. cnar’ oxt: fn functie sa fotosit operatorul de airibuire +=. Bl are urmitoarea s xe yi are acelag)efeet ea xexiys 1ce atribuiri com t& complet, uti cu setidere, im Shift+FT 51 serict + emamcemone | 40 Afigarea figioralor text Listing 10-26:TEFILCPP void file win::move(int dx, int oy} cuzy-=ay? Gotoxytiftecurx, toptcury) : int ile wins ite top Lin Af/1cur_Line-sprev) ‘return TRUE; else return (four_Line->prev->prev) > int £ilewim: ris bot_tine() if(1cur Line) return TRUE; else return(feur_Line-onext) ; menline* after_line, char? txt) corespunzitoare in TEFIL.H. Ble pot fi ene vor ajuta st Listing 10-27:TEFILH 7) 9EPIL.N -- file related classes, Tiny Editor 7) Copyrignt 1995, Martin L. Rinenact fae€ine TRUE i #dafine FALSE ° faefine AT_TOP WIND (ouryze1) define AF_BTA_WIND ((tepecury) ==(bta-L)) ‘define AT_LFT WIND (curses) define AP_RC?_WIND ((1Etecure) == (rgt-1)) class m ects #(0 ‘t-)enow CONIMTEaTaNT) FF tar wosund ese « syeaza 1 AQBT2 Tose) Sem, eero Ho *t) enon (anti 29-2) HaTwosun eseo preeza F(8UrT gos 124) 85u sere #(queaqoq soparn 32.) S8u ast (t "o) ano Hyeouc-suprmanoseury—ano tontererani) 3 i oeuprmaorst;) at No-MOsunD 28> dd NaaLOC-OL:BUNSTT MPULI “ejdeaup B18 wBumys B vareseicap 1S ‘watozas gs rey “ysesocou BIMoNASEHU! WAT HpUA {PUG ALOU PO BEE TN. nig yosand S525 trywoza ' #(yfla T10398q) Seu, este HndOE 324) Seu (Oeurt domes) 35 <————— eae YEO) sO|sIRIGy PBIESIIY OF fr tayesow taeac-oupy"anseouyT snd (qurw-aou"aet) 27 ran"wosuno 9985 freeza remeieeuop sna 2500 dd UL 262-01 BUNS ex tp dO YOSAND tees Herdw09 ws HD9P Howw-N_ gen WIR BS Haz [BNSWDIRg a ErVOQOD MJOSIND UEND wOPOA Tian HS XH, foo meade eisey esede ursand “runrjaniasut aisooe yeSinepe tie 99 exngy JOR 2569 £(,90TT com 384) Sau , eete ‘ f(y wosgoq ROpEEA 3eq) Batt 4(r 10) ence ouFE ano fgxoue-eury (qesw seas) 37 , (Qsupr gee sti) 3F NETWOSEAD Ss¥S ‘dd W3L82-0) Buns 82-01 mBansy{ ay erre 08 wana w6e (OPPS MP NE YOSAND Ieso uinzinas ES olngody, jsoF uw] (tuoSmD sénfoy WARN ys EOUAIA 3 ‘Sedna sed +79 weleAul eS 290 Sa invatim C++ pas cu pas if (Achar=+0) mag("at Left"); else mag("seroll left"); ? break; cage NOP, 1 corespunziitoare a ec loc si mai facem alte teste acum, mai Putem apor si facem o testare comy tal editorulul se intvevede. lar dumneavoastré. ati devenit programator C++ REZUMAT {in acest capitol ne-am concentrat mat fitarea unor lueruri not, Asa vom face st de acum incoto. Scopul nostru a fost de a crea o fereastré de ceaseta de dialog 1 am adugat un obiect memfite per It pe programarea in CH deci pe Drept fereastra am ayea un fil isier de pe disc’ | ferestrei sa fie mat viz | este exact ce ne trebuia 40 Aigarea Figterolor text afecta progr ‘Am pus $19 compu a a opers ccomplexa) 109 3) ‘ansvou Jojpureord aneziay uy sep ‘ouy tS ingan se ve uiind jag "Hae -yamgs payed wip apy “eideasp waned utp a aseé ajareorguu ayospdr nu ns trex TLOUIONL J90e ‘ps o1ao 20 aunds ou 9 eHow "IMRISe) ap weIOWs aIs0 YOL SOTA PavednuRtuy aiivoronr ow some aut aor nowaTan oe err ese TH nous aT OTe 218 MONI LA LTV NOW AT LTV owA sjaloukuuaN AFSgACAG Wy quloose —“ouyopy wandaNp fo “inieanquioo aysoee eZ v ANDY “I ‘ome aura “peafesya]y erleuIquIOD no tes: eu! 2p EpeAOP FUP BF ingan VA “I}eUIguIOD J03sa9” vas meuos ap qwo1agiper ‘omoyer ‘eae EP Custos viiouny “Treads sys wHeUIqIOD foc sonny} BaseoWguN ap ywoD Hou BS oINgaN “ as betlaogy “To Bs oyiz9 nu “phunsojord ‘gON venidop y syeod essa! no pHUareAlyoe aIs2 Cui 9) Sa}HIMD NO “SHOAL ig vuREIquUIED “PoUoLSUSMEPAL $ ‘SOC BASPOID I 9N"]D4, RalsPaKay v| 9p aoa as cast ND Te led ueind a RarESYe IS yNUEIDe 10} Od tonsaiay vases aU MUIOD BIMTHS Ca [eASY ‘MIO Fansainy wadnsw [Hesodo aRy 96 oTes ye Ie ‘SUSEONS ‘dON® varesedy iauesedo varoioyou zzvez\yeauies (057 yllls BeRULquio® no MASwALaJ BUOISUOUUIpal aInd “HaRyYS sOJaIse) inzoaNfe Wo eNSEEr} ‘ymur Hagng “rintido ap eu9s 0 vorpur 8A ‘9jafesou! nisDs as aiea ad veo “cxso359s 3aLS3u34 [ANN VANVNOISNAWIGSY 6, ens earerriep WF Bareseop "warwncrsTaUpeN Ty Toionsai9y GST TUSp IS arese|dap walSUCISVeWIpSU yb usp imjos ouny 104 91.96 WHOA 99 dun UL BaRsOe 2-29 sunsjonsuy 1 wna rf vo 41 25}0 jnUUO4pI val sn ure aoqayeynzas easeyeMLOg A:nuad QpuLIDS WZ ‘anyelownua tundn vaio ¥ nued uinud vzt eu Wo eIEPOIO | (uinoe ued astias sojauresBoud (© gisi¥a) fansaiay w omEsEydop sod weBugpe YS voUUIESe ap vaInd 79 atmuvdop 2S05 nw axesye ap o[fiauTy BORD vOpDA WOA pad BXSEaLRY WSDe YS 3959 AND=IqO AOP.QSI1oJ BIAB[NAIp 18 varesedap ‘vaievuorsuoUNpayy 294 4 invatim Cr+ pas cu pas In acces situate este Alt=Tab, prin care se trece de Is un program la atu, Probleme cu {getch() nu Se datoreaz deci une neglijente a firme: Borland. Revenind ia cheile de mai sus, ele au fost obtinute cu programul nostru KEYS. Si continuim prin’ adaugarca utor definitii de mesaje pentru le relatve la ferestre. Programarea mesajelor Listing 11-1 contine cea ca am addugat eu ta EDITCMDS.H pentru comenzile ce depiasare 51 dimensionare, Dac dort, putes sereio versiane propre Listing 11-4; EDITCMDS.H eee lei 1 PIT OMS EEE ee renee eee eee eee //SDETCMDS.H-- definixea comenzilor de editare in Tiny Bditor 7/ Copysigat 1995, Martin L. Rinesart # define Exit i000 # define Nop 1999 4 dofine cuRsoR_UP 100% # Sofine CURSOR_DN 1002 # define CURSORLP 1903 4 define CURSOR_RT 004 # define wmN_wove_vP s901 # cefine WIN_MOVE DN i902 4 define WiN_NOVE_LE 1903 # define WIN_MOVE_aT 1908 § define WIN_SIZE_UP 191. 4 define WIN_STZE_DN isn @ define WIN SIZE LF 113 4 aefine WIN_STZE RT apna // sfareatul 12 SDITCHDS.it PHEHE heh ieee em Se ee cesta, yom transmit redimensionarea ferest ‘Avem nevore dk jn care deplasim sau redit funetie de nivet mai inal, ea lanseazA rutineie de lueru corespunzatore celor dou stitt (moduri) de tuoru, Comutatorul se implementeaz’ direct. cu gjatorut uni tip ‘enuumerativ. Procedand ca mai jos, 4 Rodimensionarea, deplasarea si dorularea forestrelor 295 fdefine NORMAL 0 fdefine WINMODE 1 ant in_mode= J/ NORMAL sau WHN_MODE definim cele doi modurt de juera prin numerele Os 1. Puteam Tasi si procedim $1 aga: enum mode : normal, winmode) mode inmoce=... | // normal sau winmoce Prin constructia enum, a fost creat un tip de date now, numit mode. Bi are dowd valori, desemmate prin numele normal $1 winmode, c&rora compilatorul le asociazi yalorile 0 s1 respectiv 1, Aceste nume pot fi initializate de programator, ca in cexemplut enum cays | sate6, sun, monsl, tues, wed, thur, fri}; Compilatorul adaugé | la fiecare trecere fa un element now din list, dect vom aves: sat=6, sun—7, mon—=1, twes==2, s1 aga mar departe, Exist doula argumente in favoarea tiputilor enumerative a2 o tratare mai abstracts nu trebute sf ne preoeupim rogramul bazindu-ne pe termeni de date nou. El este de fapt ut exemplu, enum mode | normal ,winmode); node in_modesnormal nous in_node=winmode: 17 corect Wf corect mode in_made=a node innode=i-L #7 mu facet asa! 17 miei asa | Unui din cele mai dragute tucruri despre tipurile enumerative este cé ele pot fi completate cu valor not, ca th acest exemplu: enum mode | normal, winnede, otnermoae): //otnermode este 0 node in_mociesnormal Hose an mace=winnoae; node in_mode=otnermode: // acum 8) aceasta este corecta eC aris Nay unger BOTT LIY 8se2 faq 7eErs"NIM uanaet ROW ST Ly ase ACTHAOH NIA umg9a MOEY aT aTy 26v0 NOEAON"NIN uanaez nomad 3803 ta BAOR NEN wanaex MoMEyan 2209 ROQAOH NEY wanaer AOMENTES eso faT snonira wana NORA 98e0 (pup og ts | ()pmoTasenapas 307 Qpumure gue sa0M umnaez 3THE3Op, 2! Q)pusmure ammaer epouurns=pou~ur gama see0 ‘gx woguno usna0a TELS ese NOME UE ese> aT -Wosuag umaer SUT Bseo wouay a1 eee emqmwosung uzn302 TIED 9889 wom ng 2389 ‘isc sinsanay eareyniap iE earesejdop wareucTeuompou Ty TOIaRSAID, eaTe|map TE wasese|op "SaIBUSEUBUIpON TP aqrwosung uanaex TMD @5vo uousy an 2882) surg uangoz 38H o5eD sopusatas :()pus"zesne ut (Qpuorureté gut + Qepowyym usnge4 pour UTM es¥o | Qpas-ureqd tusner rTeuxou esro fepowmer iesias (Q)pumaype aut 3 umsex sete *QusaeBigge uxagoz for) 3t s(yuo39B=9 set (Qewomxesn aE fqemzoueapouur spot ffepou"wrm ‘Teuzou } spam amas wATSGHOLIGE. spnrourE NE SUBGAMY. eoNTOUTH gy aero <1 pus naaued epes > ‘<7 puods 31 Jopse st195 awwod teiduaR nz) #Q Rewa™zeya0ue-oD “stasTzeuzoueon. (orous"zoyjoue ) 3 esto ()etus"op Txeaszeue) JT sns yeu ep qntduexs stx0s pp pow STE un // SQawus"zeuaoue-op este #Q)stur-teuue-op feoTowsTzeqzou) 37 (Ostusrep (aeno2eum) 34 ssreyst un ep 3eumn asta an Qe ep vere e(yeruaop. (aeaoyeun) 31 vere 31 oumraonmyout7/ syaluiana aise Imupano pap 3 ountionnsui o 19 “prow at wunzeo naea usfunsip 3 aA YS PUL nud UW] “()azte UK ny areas woe sd “puor prseoot ()aosang nous? feEW STTs proA 6 Bsmt uy Faupsas 2p "Ae “pe GUTETS . (ie yore auy jesze"upR eT TIS pToa fouop umngex f(t gye2teuTM, !NOTEZTS"NIN seo syed f(te!oyaatemure, S0"RRISTRIN 2809 breox L(o/tyeztea NLWTBLIS-NIN 3829 Syeeza (o't-jozteTurs, AV a2rs7NIM 8822 ddo1431 oH} Buns] i] yraeyizau Tesoyd 1g vA a16> vormde nu aszo) juaumnfie imwi4g “vo}ges ydaup ayories are juss wip (94) YeULO} op Jojtiowapioeds |nd0} up ajaquownfire Fawarest (jpmuds “Qu (0 ,p3 281 Zomoue 04g, 'znaano} zzuT2ds : ssgncane 72u9 fu aur joog prom :2us891 ap euod € ery ‘auoWeUs Up 416 unNUY aTeyeUNIOS no 30s wy “EIEN aHROY Y BA 9 FOILS. © wayuion w uUd Wodsoul Bg ‘smoIyZuNds9109 ojaluowiNEse n9 “OD po Ut ‘sveov urpjede BS 1ode 1 nuony seo" YOR] BS axe PUNNI O WLIOS BS WEIN Toe TOIaRSEID| ealeep (© vaseseldop walELOBUUIpeN Th ‘Sedna sei 279 welenni oS ‘08 302 ‘54 inva Cr+ pas cu pas 41 Redimensionares, doplasarea gi derularea ferestrelor ae < cod pentru cond 2> g else if < cond > I NOTA else < cod pentru cazul in caze nimic de mai sus m este edevarat> Pentru a evita ambiguitatea, eise este considerat ca foc care fl precede $i care nu are asoctat un alt else (regula e vi C+4), fncercatt sf serieti o instructiune if mai complicat Lf < cond b> < cod pentra cond 1> else if < cond 2> ‘< cod pentrs cond 2> else 1 < cond 3> 1d regula de asociere a tut else. Vet Bliminati apot parantezele { $i | ‘vedea ef totul se va reduce la. constructi Cu idiomut elseif, testul asupra dimensiunilor se reduce la: if ( do) uw verifica caca mai peate fi marita a dreepta else if ( dx01 “ veritica daci mai poate fi marita in jos else “ vorifica qaca mai poate fi marite in sus Retineti cf aceasti constructie Iucreazit pe cazuri disjunete dou ete dou. Dacd avem dx°0 si dy>0, nu se executi mici unul din cazurile //verifica daca mat poate fi mirita ..Dar cum mesajul WIN_SIZE_xxx se refers la 0 singurd directie, vom. fapela pe win_size() pentru a modifica fereastra doar pe o singuré directie Ingineria programarii orientate pe cbiecte (OO software engineering) mu recomanda utilizarea vanabilelor globale. Asta nu trebute si ne impiedice sa le wtilizém pentru mari care sunt int-adevar globale. in cazal nostru de pilda, ar fio grescalli de protectare si nu utilizim o variabilé giobalé pentru a exprima ltimea ecranutui Vom presupune c& rutina startup() stabileste ct ecranul are $0 de lini (w revent imediat asupra acestui lucru). Vom rezerva ultima line pentru a fi utilizats ca lime de stare, deci ramén 49 de linii pentru editare, Latimea ecranului este presupusa a fi de 80 de caractere. Pentru a evita 0 anumitd neconcordanta programele Borland de afigare pe ecran, nu vom serie pe ultima coloan’ ‘geet maximum 79 caractere). Mas adiugati dou linii in fisieru) TEFIL.CPP, ca in listingut 11-5, Listing 11-8: TEFIL.CPP. |) TEPTL.cpp-clase relative la fisiere, Tiny Editor // Copyrignt 1995, Martin L. Rinenart incluse Hincluae Hinelade fincluge "TSO. Hinclade "TEWIN finclade “TEPID. #inciude "EDrToMps.#" int screen widtn=79; int screen_neignt=49; voad msgicnar™ debug) Putem serie acum instruct verse, functia win_s1z2() 1 pentru a verifica dimenstunea ferestre. in prima ‘doar comentari: void file win: win_size( int dx, inr dy) J! verifies dimensiunea; dacs nu este coracta, se iese din 11 funetie 11 restaureaza ecranu 1) redimensioneaza si reface fereastra ‘Mun yz 2p ayn Your nv axed o(2:3S019} n9 owIgord BAKE TAA H8 yeDAID su] guoduioD as MuLIde YzvaINE}SAI aze2 ofuntjannysu “raNsa1a] PRULIPU BqWIYIS 98 nodgsy1V ND ‘exeuoIsuaUpayfazese|dep jnpow LU ng "Jonro9 greaiony [9 yeIsus ul BO wIESUCD N: (osama nous: rut STyy Broa 39 90D ‘xvoD eIaszo /) *()mexD (Qsutedar: uerstrs pros (Q)3uredsz fon IG ip a+ az vxaswoxes ooezar 1s eZvouCTSUeUTpEA / {# (gnqT Baws waer98 "99/38: 'do9 ‘33 1) 39I9NE nuexo9 ezeernessar // famgea (eesdoa-waqi 31 ne'ur eevesosoya// oom) 1) ost furnjex ; (ausrewruoesce we na) 3 Sot ue easpzeu (7 (och) a ext ete me 3gT-362) 37 woueas of ezvoxosoum // (g>xp) 31 eere uINIS H twapprwensse ee fa) 3 eadeoxp wt aaseam // (00) 3 ETP ser as ‘wapez0o ese mu ROP ‘eauuTsuaurp esTgITeA // (Ap ut ‘xp aut jezte"eTa:rutaretys proa ggo-aESst ast. eauncid ea @ mop (host up ova 0 HMSO" wo Boao ap aun Sy won 16 nrziny Few niquod yrysey YSU Use| WO, Tupi ys 1S wupsoSorus ws 1goap wong mu :tuntjonunsut pxyevozeg sovgex 7s ezesuotsueuTpex // qnuexse exvameysez // rumaez (z == dean) 3T conte) // et (quBteq-meaos <= ug) 37 ens ur ozexosont // ernqez sot ur oxtzeu // (sf) 31 ests unaax (eo == 3T - 383) aT peters ef exezosoTu // (oop ) 37 este (ugpta"usezae == 3631 31 (oow ) at ‘e7a5un3 1/ Ep aset 96 ‘v209109 e389 nu OED feeuNTsusUTP EOTzTTOA // eadeoup vt exzeu // (Ko aut toe qr JezTe"uRR: EEATSTTE TOA ‘apmudop roy Tuezo9 ezwemessez // (ose ) at este (oom ) yt este (wow ) aT ene ut erexosore (QMP ) // sot ur eatzem // wots ey exez0eoTu // eadeexo et extaem // eyaoumy UTP // eset 9s ‘wyDeq09 ease TH EO~p FesUNTSUDNTP eOTETTEA // (Ko aut 'xp aur yaztsTurmrataTeTTs pron, “(queaoay seziynin asa 31 9sj0 musoxps) $upquauioo ut asnds ajeo oR} BS axke LunslansIsUl ap BaLeLIOs ND lode MAELO ‘Sedo sed v9 WEAN ES oe 306 Sa invatim C++ pas cu pas Sa discutim mai intdi a doua problem’. Ea este provocat de tipul adapt al calculatorului pe care lucrati, Cu adaptoare EGA put lar cu adaptoare VGA (saul mai pune) cu 25 sau $0 ccurent fn care lucratt poate fi o i, dar © 0 problem pe cal deoarece adaptoarele EGA sunt din ce in ce may rare INDICATE nul si. lucreze pe caleulatoare Daca simplu este si dumneavoastr’ suporté mat multe. xt poate fi selectat chiar de la inceput, addugéind o linte Ja rutina tingul 11-7. Listing 11-7: TE.CPP void startup() textmode (04350) ; setcursortype( NOCURSOR) INDICATE ulte informatit despr ‘apot selectatt "conto. ifr pentre a pentru CONIOH vedea indexul de termen selectati"textmode™ Cu ecranul in modul jos de un numa 8 vvarful {41 Redimensionarea, doplasarea gi derularea forestrolor 307 afigat fereastra, Tot ce avem de juni corecte dup ce am restaurat sunt imensionare trebuie si Listing 11-8: TEFIL.CPP // vestaureaza ecranul puttext( ift, top, rgt, stm, screen_save_puf) ; JJ redimensioneaza si reface fereastra rgte-ax; pemredys repaint () void file win: :repaint() gettext arew() 2 ft, top, zg, ptm, sereen_save_pat) 7) goa marginile ‘Acum totul este aproape gata, cu excepfia rutinei repaint(). Dacd mai facem si ementata complet. CPP ¢1 si mai aruncim o privire ta construstorul clases diatog. V am fi ficut o rutin’ separa pptuts-0 folosim acum. Ar fi fost chiar foarte interesants& numim aceastritina draw(). Si explicim acest tueru Mar multe clase dintro terarhie pot avea rutinc cu acciast nume, si zicem dran(), Pentru a selecta expliet una din ele, se foloseste operator de resoiute "" ex mai jos: 1/ araw() in clasa diatog (7 draw() in clase box 71 ambiguitate? ‘uns op 1BFe seIYD uns ne yLaMsony sec] “(yuredas ULM 2qL wip ujode aise (ye Mogs sopy faysaoe v YELZEA BuIA o MHUtRaRd {]-1] BUNS" yeeyody ay vs © Sts wre “autoi9} UHC] MXOY uNBEYFRa2 1 eulajgoud yeajozas ute 20 wang, ydvarge vige) uma wsera uy azesy8 op. Bs aingeay ‘Qawip:Soyeip rounnu sti Herat) gaurads 4G0a 20794951) Axo208 (a1-our rane) asaeysea locooras 3 es tuera-teazT-a6z1=0078 war Navara jdoraqs=ueT3 4ur (mea: x00 (Ommrp::soTeTp pte dd O'NIMAL :01-FL Bunsr7 {ep “noe no jurzaxd 0 aro ad wareajozes Tpoep SOUnyy wu AED aoRy RaItC iY "pula;goud yaseaoe 1 wipajazar vs amqan ya snts9¢y jauncnsoud 30%; ()awesp::BoIwIp yo TALIS tuusedoasop ys reynfe B-ou Bi ap inzeo uy ;reunuma vermuresBoud yo eSE FnNy WOJo asm waId BIR “vIn soambo9p ‘Qnveap: Borep 108 rade a1so wunoy “now aig “Qaesp pewojade “u asooy “Ioa109 ye Oy BS yn ‘ea00 erent v4 a5 ‘sxouorsuexpas jap wllajau ou ()asesp yporoUr 2109 o| tax sues 1o3p ty Tory ‘qn sms enIssnoes afsiouny tazeD a nea BoyeIp wy arsinoa) Feds 1805 oy ae masaoe ‘Qwveap:Rorep uy Qrsemp 3 peas iin MAP Yy We Foe Ooseap:Royeyp 2 jade Jun oso uanoe sequyos as jade anysooe ynsuos “(vwIp:ojemp ad puesinepyy ata. oe ToIanSaiey eaibiruap We Baleseidap eoreuoreueWijpou Ty shen saare09 109 “HNN e1p::x09 #) jade nat yesp:Sojup asad T{TSSe ,28yD) ebessew: 'ebesco ecerara) gaupads \d03o072+43 1) Ax0305 To7SUTTANO) 7398323, #2) (woTa—T+a3T-aB4) =D0T3 Yt Hua Ta)ueTsaUTA aT 2 (ymexp 200 (mea: :SoTerp prea eT9T3 on9Tep (QS0rere-: sworeTD mex // epeasu ur tuntzonzasuy sasTu oveanu 2603 ne Tote ap // i070 | f(a. ‘etata) Adozas +{Taayueraas)zeua meuzoratay (99 ‘90 "zpaq'3¢ ‘ar "dy “gr panded [9 qUT ‘90 gut ‘ap3q .zem0 faq aur '33 aur vay aur ‘st aur | [aa yz0uo )SoTeyp: s6oreTp ddO'NIMAL ‘6+ Busty “ayreaap "mut B8e 16 Yl ouiAap J “op IRagwatH aunep jx INOUE “gplid ac] rosea LO}IOWaUE au Ad sof NoWeIed sjeuuNN HiequIySS sul ieidloo pug “Forap ToemI9 ypoeu prow o-nUy FojeIp ias¥io nsoTONASLOD WIP aIeIMUE IsOJ NB LA|HPIN azauos ap aiumionasen 6-11 mas Ma aypurna mioyoxs © ned efnrozes 9p yiuorBIedo MHsOIO} REP BD Sol\aUIg ‘ueap rer a 8 sya Lose 8 Wze9 9p eo UL TINE GE "op ojouinW no Epoweu © eased mu yowy na eser9 pny seus gM a¢ yruCIeHAAKOD TeIEN=B Uy “xoq ese} wpOTpU ME}RINS I BA "NOG MBS dndod asa & ypojal o~l oI80 EoeD ‘FofIp Loses EPORE ¥| [eee UN 1 kA “FoRIP tsv}9 ® eporoar o-nuy a9 injade woEC,“slinjozar 2p moyzi8do a950}0} 9s nu FORD TAY ‘eratotes BS Qwto yporeut 9 an¢ jmsonoCOD -yoqur a9 ne arty ERAN 32 YDERS 90N4 |MICTE| 2]9 Sed no Sed 70 WRAL BS B08 310. ‘Sa invitam C++ pas cu pas Listing 14-14: TEFIL.CPP. void filewin::repaint() gettext! Lit, top, rt, stm, screen_savepufl axes 14 Aialeg box Awidergt-LEt-1; shom_all (topline) + Incercati aceasta variant gi vedeti ce de a apetu acoperita de fereast unde a fost. Dack fereastra se micsoreaza di Listing 11-12: TEFIL.CPP void file win::repaint () gettext’ 1ft, top. rat, btm. scresn_save_put) éraw() 1 J) dates pox Lwidergt-Lft-1; snow all (top_tine! ig (ounciwia) ‘curxeLwil; i€ [curyobtm-top-1! cuxy- cur_line-cur_Line-prev gotoxylifttcurx. toprcury) ‘Acum comenzile de redimensionare a ferestrei lucreaza corect. SA Iucram sila implementarea comenzilor de depiasare. ea 1 teditinacusditoinostry Deplasarea ferestrei Asa cuim am procedat in cazul comenzilor de dimenstonare a ferestre, putem rece in file_win, 0 nou’ metod® numiti win_movel), care rsounde de deplaserea ferestret. Spre deossbire de dimensionare, deplasares tn destul de simplu deoarece au fost aeja analizate si dep ispuns la fike_wane do() apartindnd figerutui TEFIL.CPP care apeteaz noua metodi, Listingut 11-13: TEFIL.CPP case WIN_MOvE_LF: win nove ( case WIN_MOVE_RT: win_move( 1, 007 break; case WIN_NOW win_move case WIN_MOVE_Dw: win_move( 0, break; 1 Listingui 11-14 (de pe disc fot care trebure adugata la TEFIL.CPP. 15.CPP) araté noua metoda win_move() (pans “ouiSreur piseaoe auqe> insosmo aump uo oynu aavdsa atye ung $ vouowiase 9p ungAss I od 91801 tuuod arpsise op) aL EA sUO9 8 ap ature Poo 3s908 YaFduIo9 Tes} oINgan WHEY “wo 2jLy FOHOP aD ‘27o}98t9 WUOIsUaNED IS BSEIKED Whe 10d As uIAs”aIL aseIa JeEMEPE poo sage n>) eee Coe (Ap say Gp aut reLTS UiMi Wem OTT Dron )auredex tap = ng 1k 2s doa tmp = 362 tp 24 33T xoq Sore ous quyedex pue cacm // 4 ghereaveusaxos tung /8z '60q ‘351 )axeaand ueexos ou2 oxoasex // ( yuspeq wees == wad) 3F mop ease // tomoz (tes doa) aE (o>) # an ease // (app weezos w= 382) 37 ’ WBA oaom // ( 0 < xP) FF B8TO femaez Cte Agr) aE ageT enow // (0 > MD) FF usexos 943 UT 30H SF Onom oua FT TKS // ( 8p ay om qUT jeacumurNsweNeTT pros aa 14 S-LE nBunsry (Ap AUT op GUT JeaTeTUTM! HOP STTS pTOA ‘ «osu 6 A Sep ‘apm PR TeAoM, for )gauTaae > (5p wey fap guy jenou apa rmpa"erTs pros seuop uznaez ed UaaL PH mBUNSTT te ‘iow jauoyjpa ne BUBIPS F ‘Sedna sed +49 WiRIeAUT eS ‘aie 314 ‘Sd invitim Cr+ pas cu pas Atingerea marginilor ‘TEFIL.CPP. LUstingul 11-16: TEFIL.CPP. _Lstingul 1446: TEFILCPP case CURSOR_UP: i€ ( IAT_TOP_WEND 1 car_iine = cur_line-vprev move! 9, “1 } cise if ( s_top_line } mag( sat BOE" } else win_scroli( 0, -1)7 break: case CURSOR_DN Af ( He_por tine } ( ia_pm WIND 1 ear_lino = eur_ine-snext move( , 1 win_seroll( 0, 107 tise ; msq( ‘at BOF 1ine” ); Case CURSOR AT: Af ( ME_RGT_WIND 4 Ealiténd cu editorul nostru a torul ars win_seroll( 1, 0); case CORSORLF AE ( IAT_UET_WEND ) novel “L, 0); eise if 1 lenar == 0) mmsgi ‘at left” ) else win_seroll( -1, 007 break: Listingul 11-17: TEFIL.CPP gotoxy( Lftreur, toprcury 11 void file sis « if (ae > 0) msg( “scrolling right”); iwin.seroll( int @x, int éy )7 a de a micsora fereastra rea mesajelor de defilare. Pant cexisti nici o cale de a genera mesaje de amex ( eumnauerut regert Tnazestgs er) gt prawurupresd Trenous wesnoypwan aise poo-opnasd j@ réno1 aingon “ioumNE BeINdsIp (oma ‘van © eny aftzam oqpod a6 auedop op 3p9 volslz9A t naluad veg) 1298 ap puna (E> siody ‘ouyap amwo o90}9. S108 a1 a oep Brewonse8 nyduns y ws axeauoput easwooy “uns 24 vfop o189 (amjuars © 2189 a1eo ‘otowour wip sunday 391 Go SofaiNtaUG) J018 utp in Boep wats Bs inca wa ‘rfid © SOF Uy aBsoUs v op oMUMEUY ~uCTRY #6 SABA Ho wadoour Pg udbd 18 dnBa ‘moedsou ynumap ad xeRsou 16 vaysooe od a|-infaya“siuzoud oye Nene Boep sepa} "Sej90e Uy epadod ron ng “mjmuatsy jrundeouy wy aroUr w naavad dQ 41D» teandeout of aBiow v nuued MOH! wxDZION aw TOL MIs Tru Inne ts trandlaouy e1 afunfe w 9p epdmpepour asdsap 16 aunds aieod 2s avon) 1¢8}o08 nH ‘srdecoe waeun adwaute rns ucRig 8 dy nuned auieatias 20 dn ty ‘S4e1YEP Ap ay19!\dxa IZUaWIOD creer 9 auotjdxa s0oj-zuewoo & arfesaprsuo Hun ate|yop v1 roMsAjaL |mIROL ‘smposio poo Nou Iniseoe Bids 2) ronson 2 rourp23 9p al}ziaut0g “wioalp nayed a[a0 aqeo} uy sagas na azaqLJap as YS aiNqan way FERS eee 1 Axnpedoa ‘emno+33t )AK0305 eade-eeyT zo = Supt zo 1 C aexde-ourt doa ) tte AouE o> Ap yy sere #( Kmosdoa ‘zn94931 )Arog08 ‘(guouc-eupyana = apt ano rm RS TE #( aouc-oupt doa )TTe "mows ) (0 < 4p) gr aeTe £( Amos ‘wano+agT )Axo06 eC eury doy }TTe "nous aed ee 1" Axnoedos “emno4a51 )AxO30B !Ceurrdoa ) rremous frsawuot Coemig ( fp ar /xp aut )ppozoe"wrAs sueMeTEs prow dd O42. 61-LE in6unsi] rumuwan ex woe umnoy “eidasp 18 eBay (dn porttosse, Bu 0S A> /) seTe *( gunop Burttoz3e, Bet Fo < 4p} at ote « £( kxnoedoq. "sm9+33T )6x0308 (a> xp 1 33 este 1( Aanpedoa ‘mmno4331 )Ax0305 4 Court doa. }TTe"AoUs feexemoT > fo Aceasta poate fi, de asemenca, s felul urmitor: AE | 'feondt [| cond) >. ‘este ignorat - expresia are valoarea ccontiniind or (\) are valoarea true atunei tntreaga ‘operand nu este evaluat. [n ambeie acd al _Aceasta inseamna cf urmatorul text este corect: Af { (toonal) && {1eond2) ) ... /f testeaza sf. de fisier 17 daca ca este deasupra este adeverat, atunci atribui variable’ bot_! Listingul 11-20: TEFIL.CPP void Eilewin::show_all( memline* startline | 41 Ealtand cu editorul nostra “eens ender nent at emLi a2 ¢ = startlines at start of menfile Bf ( cloonext 1// has 1 or more Lines cl = ci-pnext, top_line = ct textattr( FILE_WIN_COMCLR } enear(): 48 ( (etootent) || (etonext) ) // at at ona for ( int row = toptly row < ptm; row } showlinel xow, el-ptext }1 42 ( el>next ) Af ¢ (row) < pem 1 ci = cl-snext, bot Line = ety (/ scesta merge: iff el-nexe ) af (rows) = ptm) G1 = cl-snext, [i acesta mu merge: AE 1 cl-onext if 1 Crowd! < ptm} eh = cl-snext ‘dO TIGL Us pouny ETOT gogo euyzonq ZIOT —_-NaBa~O9 SUFFODE ror —_anpa“o9 euFz9pH POOL sa wOsuND SUTFePE (Qaurraoyst aut (pus aut jop-a¢pe aut eyeatxd Tes aUiI04 KOR UUEAANUL BS HIGedeD LY BS dIOKOU yy eA yours osaiewUNguA! ES asa10p “ody ‘yjenjoe voumsiey “Cou 3081 ‘SITIO ee 2205709 uznaex tna™TuG9 9fe> faoe-op uxna0x Fanpa"TMLD @se0) ‘mqaTop uangex RODE seo tanpa7o9 uxaox ranog 9803 eT wosuND wxn3ez cma =se> MORNIN 95%) dd OWOSL ‘22-44 nBuAST 2] aedngpe ain sojaqsea varesea TO6T aft HAGNIM 31739PH FTOT OE OD eurzePH SEH CECE Cee e era ere err -eP PEPE EP eee Pree bee Taisou jmioNpe nS PUBS Th SWOLIGS ‘42-14 NBUNSIT ‘reso 98 wun B&e HSCWOLIGE 1d wiadaouy “dp no Baelseus 1) “aumdap Few WOALOUT B ‘umewan uns A vy9s v naued L447) 18 eHpadsut © nnad pa yaTY Jo}FZHOWOD easEZy uy atsqeusauo> sojafesour 9350 18 Bjdunts rows 9950 UCB tins Gf umionascr vutlad up) pags myer mp pelo atszaese sxverg este eax@ue-T9 = 19 Cue > (tHM03) > 57 & axeuero ad 25 vaseace easaqto TazcqeTpates exeztesp // ppeoag sere axeuc-19 = To (wig > (rin02) ae Caxeue-t9 ) 35 e6xeu RU eRSEaoR // NOP B 29 vaaD aysases as 191 “2p90% radu 3-4) jMsoreTicwoD “BaIE}UD Beans Sod UATE BS oe Listingul 11-24: TEFIL.CPP void filewin:rmovet int ax. oy} /* Calling routine MUST ensure that the result of move is within the window! gotomyi iftteurx, toptcury int file win::is top_line() ‘ return ie_top_line( curline }; int ile. wint:ie top line( memLine* ml ) t weturn ( Imloprey ) || ( Iml->prev-oprev J; ? Ant Elle wins +is_bot_line() c xeturn is pot_Line( curling )7 y Ant file_wintris bot_Line(meniine* mt) « return ( imi) || ( tmi->next 1; nenbine::menline( memiine* after_ting. char* txt 1 Cet Nene ne ens au versiunii eu un paremetru, topibottom si fie programate 0 . aeeste ar putea si nu dea acclast i. de eroare, test oF (jp, ca ce! s bot line(), operandul sting este evaluat. Dack are valoarea tue ‘of are valoarea true 1 operandul drept nu mat este evaluat, Aceasta poate fi o sursi de erori, Pe de alté parte, asa cum aratl acest exemplv, se poate exploata acest avantay pentru a obtine reat ‘i considerim urmatoarele: // presupunem ca mL este null (fisier viel wetuzn fim} ||. 7) mi exte false, astfei ca Imi este Crue a 411 Editind cu editoral nostra 11 Baltind eu odtoranoptry ae 4/ evaluarea se opreste deoarace |] este true J/ presupunem ca ml mu este mull (0 linie text j geturn (int) [| ( unl-saext 17 // mi este true, astfel ca Imi este false 71 ml->next este evaluat Acum suntem pregitity pentru a adauga net of nt case fn file_win::edit_do() din TEFIL.CPP. Listingut 11-25 arata aceste modi Listingul 11-25: TEFIL.CPP. case CURSOR LF: Af | (ARLLPTLWOD 5 neve -1, 0) Af | lonar == 0) msg( Yat left” ) euse win.scroll( -1, 91; break: case Go_RcUP: ‘ Af ( 14s top_Line(top_tine) ) win_scroll( 1); alee mag( “top snowing” )7 break; ? ‘case Go_PapM: Lf ( tis bot_tine(bot_1ine) ) win_soroll( 1); ele meg{ “bottom showing” )) break; eae GO_BOF: msg( “going bof” ); break; y cose GO_f0F: taoxd<-oup {ano = eapT ano (#47 (asp > t fo = 7 U5 ) 203 eat doa se uomE sv dn oUFT Ino ORE // trreoza bere tagxG<-oup{-do3 = oust dor ( aszdcneutT 403 ) 37 (4359p fezts6d > geqp fo = astp ) 203 (@tayssod 37) Bed ouo da ouyT doa stove // , (tos worserpp ) 37 faeyp 3ur ft-doq-uaq = ezts8d 3eF be unop eBed «=r fan oBed mx T= WOFI00S5D 4/ (norqesz3p ur i Trors"urA::uTATeTTS pros ‘dU 2-4 InBunsry dd TAB UP ‘nou nujuad (jiods) euadep sunisi8A 0 yuUiZaIdaY 4: svonuisazep aluroasuos na BUINaT BS 91800 FIUDADAY| Uh “oss aun rLeIoUs! f eessN aise BIbauH aumtido o afore v ap oje Lantus eaBosd wwe ounny “Zayyvo? 980 yfuosin9 woundnsaId Bg “Y ins (uy aseS no yatsy mun aye 1 "yeSye op BI ‘aur 0} wInWu ure aniedap 2p 19 n> 9 2apyo3 waynd ‘sn ae> wy ‘out doa B| ap sugstidap uv ep waIvOjeA no aUII~IND WARSMfe (OUNY ‘uedop ap 199 wautas ys arnqon, gS 9p adwoude U0} Ind fe) wreidwos jan uz ajoquie Ip tnze9 ynop waAy ‘van noaxa v muted yuafyayur ap qua!ayns “Cjjoros ULM naned YunISte% Lot afeianies aun warmioqyje Bj moda Ys uno "eysOO" HoRy BS PZHaUOHTUDNID 20 vBQ0 a1dsap afesoUU 2p Blut] ad aysnqou apimodes vUN}gO as BS aiNgaN poo wa0w PZRa|NI 98 PUB) {Ap auy Sp aay )pToaoe Wem! uEOTTE prom ‘ £( dim eBedy )Beu = WOP30OZFP ) ZF eaTo ( gunop Bed, ) Sour unop BureS //( T = worseayp ) 3 an anges // ( T- ( worazeayp guy )TToxDe"upA: rwTATeTTF POW, ( Armo+doq “xano+93T )Axo08 dd WSL 92-11 nBURSTT dada, ‘uwnoe yugd op vounus mse v nuaued waind winoy (-oimsooe wy ‘Banu anawered un Noung “nqsureed un no uu 8 sas we now 1S wa aHauNg BNOU © ¥ZEEIOd? NADd OD IS {NDA~OD Ase squmrid ‘Soot mnjade. n> JOR" OO 18 JOU OD 289 ajiunuide ye|MUTS wy sreaaq flay Your dont oseo ‘ teoaq £( ,309 Buyos, )Seu 1 ae ‘SOW [HIGHTpO HS PUBIPA VF wedno wed s0 UreTEAUT eS ee 326 ‘Sd invatim C+ pas cu pas LE ( dixection == 1) 11 move top_iine down one page (if possible) for { dist = 07 dist < pgsize; distes ) AE ( top Line->next ) top_line = tep_line->next; else d /imove cur_line down as far a top_line [if possible) for (int d= 0; i < dist; int) S€ ( cur_Line-smext } cur_line = cur_line-snext: else « oury ~= dist-i; breaks > y show_all{ top_line }; gotoxy( Iftecure, toproury }7 void filewinttwinseroll( int de, ant dy Cu acest cod, tasténd PgUp sau PaDn. veltavea un comportament corect. Acum putem continua cu Cir'+PgUp/PgDn (sau oriee alte combina de taste se aleg pentru 2 genera mesajele GO_EOF/BOF). inate de a trece mai departe si organizim putin coal seis. Att observat cf fiecore apel ia punem acest gotoxy jow_all() este apoi urmat de gotoxy()? Si ). Si urmm pasii de mai jos & PAS CU PAS sférsitul funetier show. 2. Stergeti apelul gotoxy! yi€ditind cueditorutnosty aH fin versiunex cu doi parameter a ‘Accasté operatie reduce figierui meu EXE cu mai mult de 100 ae bytes. Mar ‘ns& este simplificarea codulut, cu co care fl vom face si in mcgorarea costurilor de t INDICATE isunerd ‘uneort un earacter bizar ca element al chenarulu: uneia sau alteia dintve jog? Aceasta poate si apard ca urmare a unet erort in TCLite. Pentru a 12 problema, se compileaz2 separat cu AltF9 1 apot se construteste fisierul i eroarea atuncn avett 0 eroare in PaDn. vet f aD (sau orice case GO_BOF din edit_do(). Listingul 11-28:TEFIL.CPP eave CO_S0F: “cur Line = mem_€ile-rhoad_Line; 4€ ( cur_Line->next ) ‘our line = cur_1ine-onext; cure © cary = 1) sbow_all( curline }; break JOX OD. (Carzigy ew emosip wos 0 .ep "UAHolgNSw uo EzvaIsaY Wu Wey oq) “a sued eiseoR jr 8 9 jun 1S aE] © pUBUEILOD “pia sousy un seasay wy poo ass nea opp Ade 7 teuprano © oupt trea ( weryyvaxeajgoag; + otrun = saur, gnaut ‘suprsno) ourrme aew = eurpanS vgnqute, 9 ay #( erys7axe9 ‘yeoT “Raut” | e803 op See ECE CeCe Cece P Peer ee ‘uisoU [RIGHTS ne PUES FF sangan, are \qede> YF wos flax yung eye 2010 18 29 nu rung 1wotwuIrsBog “18 feavpuemosezou eTe // imdaap nun 9} nV “axajdwea teu © tisy RGLNIE OLDS ¥ nuUad 9199F9 aISOOR ti (33 ypurwos = srqury ‘(yeotuanaut wud feuttpesu = aujTamo .eUurrusH es TAN) Seppe mpE = ay T EEE 133 = eT HT axes (33 vetig JoTtzuou: serrauou dd WAAL 62-11 BUSaone fe = pm a rs ust IsUOUIIP vo f 18 Z Inguae ¥ 9p wyepuEMIODDION 9160 | = Axa © xno. aeainees teereae // "y= kana ete 0/7 no omvajeat quns wyouy wSe eBUpIs Bf IdEasp BL ‘Wedns eed +0 weieAUL eS ‘ee am gisit o eroare in grupul de mst deja? Daca s la stanga. Tot ce trebuie facut se referi la o simpli a Si invatim C++ pas cu pas ‘curt va fi setati Jao valoare cu case Go_BOF, LE ( iour_tine-smext ) // at notton? done! topline = cur_line = men_file-tail_line; int pgsize = ptm - top -17 int backup = 4) // start at last line I] find the top of the page while ( (backup < pgsize) se (cop_Line->prev) ) top_line = top_line->prev: baciup++: ? 11 position to the end of the last Line curs = strien( cur line->text ) + 1; // scroll right, if need be Ant toofar = curx ~ (zgt-1ft-1); Af ( toofar > 0) « char = toofary cure = xgt-1ft-1; > cury = backup < pgs 2 backup-1: pgeizey show_all( top Line }; izeazi GO_BOF end ecranul {4 Editénd cu editorul nostra ETSeeaseseeeeeeeeeeeeenE™y 11 Baltind eu eden nest Listngul 11-31 aratd modificarea facut tn optune case GO_BOF TEFIL-CPP. jstingul 11-91: TEFIL.CPP ease GO_a0F cor_Line > mem_file-sheaq_line if | cuz_line-snexe | urine = cur_line-snext; Cu aceste comenzi adaugs manevrare a ecran ymutarea modul de afigare ecran total COMUTAREA AFISARII PE TOT ECRANUL iny din nou, dar aw acceptati fisierul implicit ygram mas lung, TEWIN.CPP este un bun ‘i utilizati F5 pentru a comuta in modal ecran 12 noastra sarcind in acest capitol. Pentru fogic Si un set de eoordonate clasei TEFIL-H. Acesta ind se comuta Listingul 11-92: TEFIL.CPP SPIL.H-~file-reiated clases, Tiny Editor pyright 1995, Martin b. Rinenaxt fdefine TRUE 1 Hdefine FALSE 0 HdeEine AT TOP_WIND ( cury == 1 (eopteury) == (btm) ) 4003 Ca Ban 40N ese ‘SETI Iman] w 09 Ga"TLAAL Ws asworgeEMdsoH09 runyjdo toun wareSnepe # o90n end “Opus” eyj6 wl smponu! rnfesaw ny 2! Q)puomuTm azngaz epOUTUTA = SpouUT SeaTERD 9080 tramyos"w1000% wnaex 264 #89 HoaT0p emma NOSE TIO 9605 ‘da QWOAL *PE-LE mBuNsTy ‘Pnow o eénmpe & mnuod ‘gdyGWOAL wp Opus uw e toe? ai SAO NIN euTzEDe Tost —-NSENDS"HTODOL SuTTOPE TOT sos 05 surzep# W'SGWO.IG3 ¢e-H4 InbuneT Fesan now ysaoe gaurzaxd ¢¢ “11 mBuns'y “HrSCVOLIGg w ofvsow tou vEngpe v und now wip a ‘Sutipad iansasey wane UW BLfe 9s varssoe Boop £ uisnfe 2 op wioasu wud stiaigord ajeun sonpe siowan Iss9y "4 1862 tere IMPoU uIP eMMUIOD HOA pup IDuTIE sea04d YP BSIOAUI HOA, x 9A WOA (PURILOG] MeS RAUL B =f ep “OWI |, BueUeR aIs9 ¢4) cq uIpsede pu TUCLIEN wae HoBloTe BE “(nm sourn £( 7m seuyTwou Jeurp~dor-st sur Qsurttaeast Sus (pup aut )oD"atp= aut syeaTad “eps503 prom qurader proa 29EUTA DIOR UorqoerTp GUT )TTOxOsTUTA TOA Ap aut “xp qut Jozrs7utm pron Ap qut to ur joncaTuTA pron, ECA aut ¢ aur yenow proa E( a8 ,qeu ‘sox qur )eurT MoUs Broa £( sur[aanys yeuttuow )TTe-Nous proa Qupretts~ C33 qanrg ‘owe esa ezeu UM TES orrana taygreavs 13627save ‘dox"eaes ‘azT"eaee 3Uy fopowwoozs3-T123 337 fepoursuy any worgeD07 ZosznD eaTaeTOT AOpUT sy {Azo ‘emo UT sxueTS yxeuD fowt 'zeuoT aut feuryans ,eurtasn eurtsoq , ‘eutT"doa yeuTTwsu Sys wow eT tswan pegoeqoza Sorerp orrand uywTotty sswro. euryusu sseT5 STHyuoU SSeTO auByeu"weesos mug 7IME SUTTODE apy users gow"TIng ouTyepy 1 ao Tas owryops 1 aaT Ting europe act ‘aysiu IOH|BS HS PURPA DP SeaTig wed m5 WRIA ES eee 334 case TOGGLE SCREEN: « msg( “toggling screen” }7 break > case WIN_MOVE_LET win_nove ( breas: “oy Cu aceste adaosuri itroduse, se poate testa noul cod obtimut. Linia de mesaye vva raporta intentia de a comuta ecranul cénd se apasa FS sau orice ait tasta se alege. ‘Acum ‘constructorut! vvaloarea false. ‘TEFIL.CPP. 1-36 prezint& Listingul 41-96: TEFIL.CPP Filewon::filewin( cnax* filename, FILES cf) dialog( filename, 5, 2, 75, 20. SING_DOUB, FILE_WIN OUI CLR, FLTF_WEN.CON_CLR > “nen dile = new nemgilei tf}, jenar = 0 did = rgt - lft ~ 1; blanks = new char!81); for ( cnar* cp=blanks; op < blanks+80; per), Repeiee: blanks(ail = 0 curx = cury = 0; Sns_mode = TRUE ‘f£ull_acreen_mode = FALSE; show all! men_file->head line } got, 1: cur_Mine = top_Line: ediE(); Apoi se adaugi nova metodi toggie_soreent prezint aceasta metadii adaugatd in TEFIL.CPP. Di Saint copa cuee 1 I | 1 {1 Ealtand cu edltorul neste aa sehimbd apelul la msg() din edit_do() cw un apel la fin este arftatd in listing) ia mtrodusd (aceasta Listingul 41-37:TEFIL.CPP gotoxy’ Lftteure, topteury ), void file_win:rtoggle_full_sereen() t JJ restore the screen puttemt( lft, top, rat, btm, sereen_save_buf ); if ( ful1_screen mode ) // switch to part screen itt = save_1sty top = save top; gt = save_gt; bim = save btm Sf ( cure > (xge-18t-1) ) ours = rgt-ft-1) Af ( cury > (btm-top-1) ) cury = bem-top-17 e // switch to full screen save_ift = ft) save_top = top, nave eat save_btm Le = ruLL_uer; top = FULL TOP; gt = FULL ROT; btm = FULL_BIM; 1] resize the screen buffer delete screen save buf; screen save buf = new chart (egt-Les1) * (otm-topst) * 2 17 repaint (}y full_screen_moda = Ifull_screen mode; ? file_win::is_top_tine() “E10 WK 9p 7p UN SLRS WHE BO Ul pop vBrwoye 6 azaiasul ye uno UL] UOHPO BIBAUL LOA KE +5 ipans rex aysadse squmie oxdsap amit eM EIBAN, WOA JOHEUUAM FONE Up ‘uBo|tatsd yso08 op youl ean we NN yiAH|NeH auINqUAE O ean AMIN LIED ‘ee “orwoyea 0 sarwon = }eIAdO FO jmMaRy SO soytod nn vaysea e nayuod iS un Yo ymaday woypson v mnEd HEIN) uy usmreroduioa 38990 2 ‘varvojwA Dupo rounye pL 1B] ervatode (apy) pu Is ( sustysoujod wey} v ap POW EU IeWEIEA =p 1 1 Ojjorosuua aywnizoupeadns optioury wzyNn evoy00f05 ayygzts 9p innivatop v auLges 2D 4 Oweip aqiiouny ae : ‘a;sou WoupE nS BURP YF 39 5 "2 [Apous ‘amouadns aueioa a1re IS YOA Up Faxz0aH aud eISHaDY “HOINOD Ws EUYED ‘Qapounrxar poostzyus eoury qw2yjnn we 9p O¢ Ro [Npour surge v NBL ai# awepusdopur jenynus aquetiea anu) ofunsIp ¥ naued (jutat foros jw09 ulp eung owUigau ynutigo wy ‘rou 2x24 9p tie ge nnuod (jaw aqruuad orjaury gaseaay “atm120s69 ap unur$ outiuos 99 woduaey vuCZ 108 9189 “HOICLS Ws RUUD CfutAds eT (Couedop tear asa wos 90 Bunsen ad axeioumus HSeADe B] UMPOW 2 14, eBngpe WA) ~opLMpoN vammSOIOS Wane Ww> JAD’ GINOALL ws a1 ny +449 aparoiunsouna 16 1ieoqu we-au wesedo aissoe aieor puynuouto|dusy ‘sronut #61990) uesoa 2 FeULON jHPoU B Op laNsAIa| ¥ aseIMWOD 9p etiBsodo sHPORUI We (EU. Uf Jes 3eI9p}su0a 1) wy “ann =p suoqdxa sojezvawoo vareRogpe ef 3nooa une “SreuaUHO| joes a1sa0e ND ‘suosye 2p roMs2:9} o]aM wy mHTIOSIND FaLEANUL ej suds Bo "WEP WAWOU UO 1 -aiuy 0 nes Ojo o ayo no LAME MY aTUed axmIIOR ASEADY “HARSYE waseyLfop lode 1§ rarjsasoj earesujdop 1einepe ure ‘exeuoIsuaUNpal 2p viiviade BsLI95 ¥IEPE) stsaloeie9 aye GieoMpoN! 30 yansqU ed YAN si}pUOD 2p qeuenuos supe sa WSO) W BO TUNG RoUStA.aeIR PISPaRE 1 vansaiaj jouNper ninuad atiouny © WOLDS US ys05 © BUNS PUNY “InjnaosInD vaxeOStUE oynuuzod 18 Joréy un ways “zaede area jhucHpe “jonidne yso90 andoouy we PLE iwwnzay ued dun 41 sowaresfoxd ap oaganygy “wnoe yuE andes tie 3D e999 od aatou a ap are 94 eo sxmpo ap tiguoy wonEPe LoFRMA rafenseD Uy [HH TU>K=p v 9p FRAT 94 ois0 Awl], msoupg “ywAprEUES TRIKE Raed “Teo UeISe 16 YeuION aILMPOR sayy gmaioa os (gsvaye lava mes) ¢ a4 PuRSpe “sMponUE poO 16908 ND SeaTo Bea sD UIRTEAUT BS see din memorse. Inamte am adlugat faciltatea de 2 muta $i freasia gam lutat eu text care defleszi ca rdspuns la comenc de Pallp gt Pan ca pe mutarea eursorlu si suprata ‘Vom constrat am introdus-o $1 pe pe conceptul de union, pe cativa opk considera o sut ‘mare parte a timpului va fi alocata ‘Spre deosebire de primete caps cere si programati singut si s& verificati apot c si copiati ceea ce eu am scris. Este timpul, nu-t asa, si probat eat sunten de unt programatori. wvelul bitilor 51 von for loon, dar cea mar 42 Ealtare cu Tiny Ealtor caracterelor introduse atun Atunei cfind prose string field, am decis 8 e general. Aceasta ne~a oft suplimentar, De asemenea, sim problemele suplimen progres sigur, dar acui care apar odath cu un cod un fort este mai supramprimare. Cum mod le programata est un mod. 88 pen suntem Transmiterea unui mesaj i avem nevore de un mesa care s& mareheze modul mserare. Listingul 12-1 nou! mesaj addugat in EDIFCMDS.H, prez Listing 12-4: EDITOMDS.H fidefine Go_EOF 1014 plain_emd() cu, Listing 12-2: TECMD.CPP atuen TOGSLE_INSER?; 1 rede muowfuun e| s2y>21"9 9p 1ode UN IS SAO" MLOVUVHD thoes “Tesout tnun waIcyKUsueH, Uy SUD Je asOpURxD FISTDE wN199}9 E OP afe ssn ‘UL RRS A. REGEOS FIDNOE eFe> 1: ( ,axeeur SurtB60n, ) 56 SMUSNI”ETOOR eseD poe How GON 2529 ddA 24 BURSHT euoridacay 2980 nagsou ynesow yo gaere are woud €-2| 1OBUNSYT “AdTHAAL UIP OOP pe s jo 0 sonpoxjur waynd ‘UyoLyipout soa" wySoL BYU dn 2600 our fugmigs s1990n w=n38z tog e800 We “OuPS Kul] Ad BleIpa cr Fedo wed 9 wR ES ig 342 pda EHP eee eee Peco edit_emdQ. © solutie mai caracterul, Avem un intseg, cu 64K val tucrim cu editoru! Tiny, patem s& presupunem c3 niciodat nu vom fi aproape de 64K comenzi difente, Experimentand cu union Un tip un situatia noastra, fel care ins este ula penteu jorie fn dowd sau mat multe struct two_chars char cL Aceasta defineste 0 siructuri care contine doi bytes. Bineinfeles un intreg, ne Un tip union poate aefim dot bytes de memorie care pot fi two_cnars t ant at regi comen byte sau altuia al acestet comenzi. ‘Sd incercm un typ union jn T.CPP. Listingut 12-2 (total nou, deet nu se afla pe ise) prezinta cum Iuereaz un unton Listing 12-6:7.CPP, #imeluce eteuct two_chars enar cl, enar 62 Si invitim Crt pas cu pas 42 Edare cu Tiny Editor Apbateare cu Tiny Fetter ag two_onare to; | ant a ant maan() cnars_int cu; ' suprapune aceasta stn (reg. Aceasta permite adresarea unui cuvant de memorie ca un intreg sau ca bytes individuali. De exemplu cli = 4) // stribuize pentru intregut cuvant atribuire pentru primi eyte ei.te.c2 = 2 // atribuire pentru 21 coilea oyte Bytes in RAM ot 09 pool {in exempiul nostru: oor fnteegul 258 tes, serind byte-ut mat potin sem conventie. Acesta este modul de afisare al multor depe | de bytes. Normal aceasta Ja stinga este 0 pura re atunei end ne arata P cat caloulatorul este reprezentatea interna in fede un 9p slonou © yep arwoqgoas und re i dn op soreorea ‘urnyar wap 16 peagtas Few 20 A-a1Ka tH PpueUtoD arusueN wap BALSA oA, © BRYO ax BseaOy "MUS 9p Img 9 AIK mud ad -ApUAADXS anog lw sour jo T9149 Up Hig 0} 1 9€ weBQUOR}Z0d tEPIOAE EnOP afoo aunup AIEOLC) Let no ovquess // satxo = 29'93°TS Imwe:Sod ut aunque vozeoxguuin eoseouy ‘urarexa nes ingune P99 “arejquiese 9p varmusBo16 naqUsd 9 ehuazarg “dao 1 Bo wes 1B Haas poup ntq op tmnaé ad Tata g TarqeoTETUMeS Teu ToD ezeouDsEN // /S400K9 27 =o Boa am “ai fig woseur¥ nauad tng 9p umn ad pe wesedo way eauoUs® ap tama yom Te aTzeDqgtmues Tea Teo T-8yiq —= a // feet = 9 sadeaip ano axeynuy wad Bout Jon ye aneounmDs rows fo> joy WHOL viaing “Faw IRN Te 180 ena wy a6 un 200m Rad BRUES e} 24eHI 2p |nloyEIDIO (74) Asaaonueo weg FenBu2 Pa (ace s3eqtnees) vbutas er T27G gL ezEesETdeD // | HoT = 7 Hyuaqe6 HC great vqorpa to leet | py ©t 7 DUE PE ST TOBE OTT H\H\Q)aITICD 1) x08a79) tose = t feo quY seus Our ut ‘e-t1 mnBunsy wy dd’ nicimaxs no tptowtiadxe BE “Sulg 9p Jey FI BEVALONT esnidO voFe) “HINzAL nynaMAL ‘vamwoyea yenodes & lode 16 S9}q lop Fo}29 OBA yHngiAIe E MAIsOU ynIBULEX reauoo ¥zE7 fo op atjeoor 0 erereasa} pmuunad yo wrauncnsand) YAY wh FLUNG amu mun re aiorjums utjnd wu rarkq und aurapou exvoseooud =HNUTY YON EE oe OUP Kany ns oneupa GP ‘Sedins sed v+9 WRENN ES ‘Sd invatam Cr+ pas cu pas ant 4 = Ox7FOO + 12; {/ ¢ este eniar 12 generale ca ct eviti. dependent Programarea la nivel de byte Acum si pnem aceasta idee i jncdt plain_emd() va returma un mesaj compus, ineluzénd o valoare de cand este tastat un caracter, Listing 12-8: TECMD.CPP int piaia_omd(} int ¢ = user_cmd Le ( (e >= * 1) Ba fe < 256) ) return ¢ + 0x7F00; sniten (6) case ESC: return EXE? ‘Aici am combinat o valoare de tp char pusé in byte-ul mar putin ser vvaloarea Ox7P pusi in byte-ul cel mat semnificativ principal, Codul asocrat este pus proces tvita variante case pentru fiecare valoare posibil& a caracterului care poate fi tastat. INDIGATIE Peer Instructiunea ste recomandati cind ave valor individuale, precum ‘comenzi. Trevuie si fol if si else if atunci end vreti sa testati valor ox7F00 ) use_char( end ); return FALSE; // not cone ant cone = FALSE; case EXIT; Listingut 12-10 arata corpul metoder use_char() care va raporta, dacl sa tuerat ntentia de a inseta sau supraina ta un caracter, Listing 1240 : TEFIL.CPP yoad file win: :use_char( ant ena ) enar ¢ = ond; // drops hagh bits of ena 3 (ans_node } : eprantf( a, “Insert ‘to’, ¢), msg m ); sprantf( m, “Overstrike “to"", ©) msgi , voia file win::win move( int ax, int ay } Adiugali o declarate pentru use_char() in det 1( axeagourr”mne )uetsye = uot “( axegc-ourT amo )298" ped = gxeac-sury ano (et < (xeuot + sano) ) oTrum (axeac-ourf ano jusyzas = ue 3uT & )6su » "w ) yaursds pip go 64a yBry sdozo € pap aut 1 zeusTesn ait ycvatede as Qs ped “aeaxop 28 wosine PaFEMU UN “apuMNe 28 2 Ye as wisaoe you eurun] WaMHJI94 aloo yuUK BOLO} yiULAS lwdaou Ys wma stiouny wseooe pueay Jojeia}9ee9 eorewudwyesdng 1 wredui09 0 ales ad Sxa1 ap © ojarayoere> rarewauues Pee eee eee EEE eee ee Ce eee eee ere EEE 2a9°NIMAL 30 BUS 77 tage nou uangex 238 8qeT=p ue pro es go PrE 398 // oan (es cana ease SGT) xp a 7 “oIpy Aa no arePa eh fuey 4 a3sTaeu = do yxeu5 Bute mou ey Jo pus oua TITS MUETG // F(x 'aenou )Adozas Surzas pro eus ur Adeo // 1 + wes"UEs ava + UOT IzeyO MoU = age NeW yzEUO Surz3s roSuot ‘meu e 932820 // 2: (238 )uetaas = ust aur (.s38 yzeu> )=ys"bed yxeu0 dd NIMEL :LE-Z) Buns “dd NIAVAL #1 WHBnppE aise aves wriouny wrEsE [1-Zt HHBUNS!T njopow vdnp gxvjadv oy ys (ays ped vo wuopOduM 916% exeq0e129 9p ITS yTe UN UNDE WeRe// wexectyyan exee // #{ Suraas"suos | sas" ped = Gutais” sus Suyaye"ouos eeveztq Tan ee // sbuqz3s7eu0s .7eUs sjejist vlade tian 0 go aundnsard sung wou eIsuooe Ab yeBnepe WE “ed NIAVAL 1 imuSiEys 2p goatoyiqiq 0 efep aM ed wtfoun 2} ‘aspjoene9 9D 0} law 99 pd] :239}08280 9p IUOIOUMS JeO di ap UOT o FeRSaID 25 “HK Imsagys yanp varous ogtusad sv-s nu poup yawns ou) 3 varouTIsdumEIaNS a19yowse ep sojuun|S eosepUNXg Bed no sed +45 wiRTEnUI eS aE 350. ‘Sd invitim G++ pas cu pas Af (cure = rgt-ét-1) 1] scro1i one right putea (0 )) *(car_line-dtext + lenar + cure = 1) = er extremitatea dreapt a ecrant trebuie si supraimprimati corect. Listingut dreaptl, ste inserata in use_char() din TEFIL.CPP. Listing 12-43: TEFIL.CPP. (cure o> rgt-ift-L | scroll one lonart+; snow all( top_line }; CHEESE ebb be eee Sb e ee eeea ‘Aceastd cale de a defila spre dreapta imi astfel c& supraimprimarea care urmeazi este de fapt re rmarginea dreapti. Aceasta ingemni c& nu este necesar nici un alt cod special Saltul la inceput(Home) si sfarsit(End) Pe cand testam programul m-as fi dorit si pot fol iceputu! si respectry Ja sfarsitul Mai degraba decat si astepti a adiuga comen ‘mare masurd, acest cod luereazi, incercati si implementati cu propriile ‘arati implementarea mea pentru defilare cAtre marginea lastele Home gt End 42 Edtare cu Tiny Editor & PAS GUPAS ———— mesaj in EDITCMDS.H = winedit_doQ, din sa() pentru a verifica ce ati ficut pang acum edit_do() dacd este foarte simpiu, metodA separati a clases file_win dack sunt mai multe lini sursd, 4 ti peste acest pas, Cu toate acestea, eu pariez c& cei care ‘Yor implementa comenzite mat repede care mesajele risound corespunzitor la apisdrile tastelor Home impiementati comenzile. Pentru Home este mai simp facett griji in legiturd cu trecerea dincolo ae marginea din inainte de a va uita {a implementarea cedit_do() eu am pus dumneavoastra este le. A dumneavoastr’ Listing 12-14: TEFIL.CPP case GO_KOME: cure = 1; Af (Aonar = 0) gotony ( 1fts1, topteury ) ‘ECT oTTezas7urm ( (aupt qoq UT 300 ST) naga7o9 s¢29 ‘do WIL ‘Zeb Gunsry (Qop"yparsura ayy uy ase aqjou wuorzard (1-7) InBunsy] “OBsw rarioung wosz0r wodaot “ales aysaoe ¥7eai TUMAL sti “2rsoryzundssi09 NOL ‘anod 09 wanaea an94 9860 ‘uaa wane snags @seo feow Iga vanes HE THE 98e> SreupTAMIE Taq uxng0x HUD oeTe // tasne esto pemucT7aa uxnyes "9 RHO seo ‘Tad 882 fa woseng uxna9x Taig 9829 TORI ay See da9OWOAL :9h-21 Busey injrusié1y pupusirede ()pur Tost NEGUS TIONOL eutsepy veor mut izaa sursere fot _awon aed 5590 260: weHOTAgYaLisa SuTs=PR 3e0t Beso "Gud ourgepF zeot auaico oursepe ror SHON 09 SuTsePH SH Cee ee ESSERE Hote EE raed W'SGWOLIGa ‘s-z+ Suns tee Re ORES A ne wreua Zh H’SGWO.LICA % ‘ajanype arvoryzundsoson ajafesous wurzaid 5-2) ‘euresfioxd 9] @ ap aquteuy “ZuSUO9 40}s008 BaNENE| sosato vydeay mjruosino vélugis usp osama qns ap yrsz@yacaws ~ ja, AAAA "umnoe 2oquoua|dus 9] Bs neatA ase od uoSsap$ ap Lunjoy Ase Ng, YOTSYSLOVEVS VaeFONSLS ‘pyjsefuan$ no wpnuquod ys “ueUsduTERdns es woInd g> Woy spas ap a2ajIp 49198309 [m1 fal W200 B9bid BA NU BBC, sueys 3 EUR neds Y@mepe (ns ped ‘onpoid (Coury doa ) Tre TAcus (y+ meno = wets = aeuot /ptwT = x70 cere £( Kanosdos ‘erno4331 )Axo306 (ptat > 2m) at fy + seuoT - wets = xno /( anenc-eurt ano jusqaze = uote aur fyee3g *¢ eupt doa ) tre nous 19 = aeuDT sete i ‘Bedi sed s30 WEARS 354 ‘38 invltim C++ pas cu pas msi “pottom snow: age DEL_CHAR: msq( “del char”); case DEL_PREV_CHAR: mag( “del prev chaz” ) break; ‘case DEL_WORD "mag “del nora break; ease DEL,_LINE: msg{ “del Lin break: case 6O_HONE, cae pregatitt pe implementarea sterger Stergerea sub cursor Stergerea caracterulut de sib cur sterge un caracter din text (de fapt se coptazi pestea (© pozitie la stanga) gt apot se adaugl un spatin ta sf aceasta-t to. Binet Putem sim 42 Editare eu Tiny Editor 355 din TEWIN.CPp, ‘edit_do() din TEFIL.CPP, Listing 12-48: TEFIL.CPP case DEL_CHAR ant slen = strlen( cur_tine->taxt } ; 42 ( (enax + curx) <"elen ) chart ep = cur_Line->text + lonar ¥ cure - 1; el_onars( ep eprint£( cp}: gotoxy( 1Fttourx, 11 aelete one cna topteury ). msg( “nore tk” ); Cu aceasta functie vom fi capal continuém prin a sterge dupa sfars stergem caractere jn interioral textulut, S& textul Desi, de fapt nu este adevarat, dorim ca po: i cursorulur s4 apar dupa caracterul “Wn, pe care apisarea tastei Del (sau CirH+G) jl sterge. © fimette su le cerute, utilizina un cod foarte simpl 2-19 prezinté modificarile adaugate ingul 12-20 prezinti textul sursé al Sd introducen declaratia cat_next_tex Listing 12-19: TEFIL.CPP case DEL CHAR? Ant sien = strien/ cur_Ltine->text ); Fi (lenar + curs) <="slen | aexc-ouTT is = do yzeuo Gano + xeoT) ) st (wore © JUOTIS = uste sur 1 ( gxeac-outr (Qzeus Tem: wer STTs prox See EEe SEES eee Coase ea eee sear * Qe" Top aH 1ag eee PEE EEE eee EEE EEC EE dd0WSL 1271 Buns nu wap “oxvsaoou alirouny 230) opiand voutowase af “o1sBi016 mnuad ss0p oovdsyoeg yre: ung ereO asi298 wap ULDAYy oUt néooe aauip aud 99 Imiosino enw ¥ nnuad 1S aresosur UP (nsoioese9 aBuars & nud sovdsyoug mse) LzLen meosiad syruinuy injmuosino ees uIp injnsay2eWe9 ea1aB01§ “soudsyong wise pi 109 oured 0 wuLI0) & Jetoet9 um ediox$ ys 18 (Rideasp Beads lode “pug oBrow gs wayeHTq}sod Koaw ys atngan “un faaeThou = axe3¢eupp ano fgxeac-ourT ano s30Tep axea s eur ano operdex // Fano ‘do )Kdoaq© + ( axeg-axeuc_suTT do) 9x99 8 ,9UFT 3x0u UT Adoo // or (wots < te ) ortun ixano + ZeuDT =F aut iuopeszgsT nou = do ge ( axeacceurfans )uetsas = urs aut popeou Jt ‘pus Se TEE xuETa // 1H ameaccourt ano ‘396 heu yore : ye} quezmno ut Adon // Hf qyuoqe"axarsamoysevor lass mow = =ySTHOU ¥ZRHO "Cynenceanoucreupt iano Joorays = woTe at Wet osarsnactien zeggng butzas neu 366 // fusngex ( sxoucourr ano] ) 3t 300 9e POTTED FT 3TK // gosmo 03 ano ouTT quezzno sped fe puoKeg $t z08zN2 31 “SUTT yueta ‘eurt queszno 30 pu our susrane 30 area 09 @UTT axOH MSZ IeHG FERTUEREDUOD O3xey exou geo: UTA TTF prOA ‘dado WAAL 102-21 Buns 38] 4xeu 20 4437 )Ax0306 (a> jxaurzda do is3euo Tap o( kxnaydoq "x BUD Bu ex8TEP // * 7s "Soup Ful BS areas ZT ‘Ben Sed v5 WIETEAUL ES ee 998 358 ‘Sa invatim C++ pas cu pas + lonar + care = 3) del_cnars( cp }; // delate one char epeinet( op ) gotoxy( 1ftrourx, toptoury ); alse eat _next_text(), delete cur_linepnext; show_all( top_line ) void file win::use_charé ant onc areeeeeceemE—mSE Evident textul de program prezentat ca ‘este de fant ‘grupul de mstructiumt cate apa wea case DEL_CHAR. Cand veut testa aceste 1 va trebui si observati aceeagi comportare c3 Je efectuarea acestora ‘otugi acum vom avea o sarciné incredi ind vom implementa factiuniie cerute de stergerea unui caracter inapot. Pur si simpl von muta cat ‘poi apelim dei_char(). ygul 12-23. prezantt ‘winscedit_o() a TEFIL.CPP. Listing 12-23: TEFIL.CPP Misting 12-28: TEFILCPP case DEL PRI HAR: Af ( cure > 1) gotony( Lfttcare, topteury ) ol_cnaz() + else msg( “nore tk”): oa merge Executati programul cu aceste modificiti 51 vett fi satisPicut vi ‘Acum trebute si rezotviim eazul ea stag a ferest ‘este cf exiti 0 cale de a rezolva foarte elegant ac ste complicate, a 42 Editare cu Tiny Editor Daca sunte! a defilat cdtre dreapt coloand ta stinga trebuie si ct saul nd jul. Deplasarea la sfirsit scenes se dreapta. Operatia poate fi daca poritia curenta nu este mazginea stinga depiasare q stergere Gerilare o pozitie stings deplasare ciese: daca nu aste prima Linte a toxtuaus trecerea 1a sfirsitul Linie Ceventuss defilare) altées namic Acum si simp! 1 de stergere, si fac pa testa, de exemplu, TCLite vett vedea ck o (Ciri+A sau Cirl+sigeatt stinga), daca este introdusa la conduce fa pozitionasea cursoruiu la sfarsitu! cele: precedente. Apo! and am END, am sons deja textul sursi pentru a pozitiona Intro funetie separati. Pentru c& suntem aici, putem face acelagt lucru pentru te sursi de la GO_HOME. Facdnd toate acestea, observa c& programarea acestor actiuni se face Listing 12:24: TEFIL.CPP ease GO_HOME: ge_nons() ; =-Aano (1 < Aamo) ay Burnous gt ‘oust snotaexd 30 DUB 03 OB // _ fuser *( surtdoa ) re nous =-2eu3t (0< xewt) at gO UesaDS 46 JT '4z9T TrOsDe // (r< smo) ge Ag0T 98 30u Fr '30T ouo azrus // Oates sutAoTEs prow SEECEEE EE Eee Eee Hee eee HEE ree epee eee eee eee eee ‘adOUsSL 127-21 Gunsry END ) IT Hy xeuot - wets = 200 e( axeaceurp ano justa3s = wots 9uT ()pus0B: tum erts pros £( gary doy ) Tre Hous fo = 2Bu0T pero + ¢ Ranoydoy /T4agt ) Axca06 Co e= zeuT ) 3F fy = emo (QewTob: eter rs BrOA ‘dd 97-21 Bune pasos tango sseo Bed no eed +39 GRATES Oe 362 Si invitim C++ pas cu pas cur_line = cux_Line->prev; ge_and() return; J] go to end of previous line, if there 1s one Lf ( His top LineQ) ) gur_line = top_line = top_line->prev; ge_Bna() nee ! vote Files nt rgo_pome() Funetia back_up() este mere, dar nu a un moment dat, cu o instru st adevarate. e isi SUGESTIE Metode ca back_upQ sunt simpiu de tun moment dat, fnlocutt restul func posiblitate, _ i Posibilitae, = Segun stngd sau Crs. Mute eto de te hfe dopa ve a eh sc stir margines a 7 eee aor nto backup) [a margins sting atone aa 0 arfta astfel: 1 se apeleazi. ‘Acum, avand mplementats ope ybleme stergerea la stinga cursorut rastei Backspace. Odati ce att de ft supra de deplasare. putem pi mplementarea este simp! 42 Edltare cu Tiny Ealtor 363 Implementarea mea este 0 mostri de simplitate. Pute: gist satisficdtoan aceastl var comportarea fa marginea stings, Scopul urmarit mu este accia de a serie un editor dupa gustt meu, ci este aceta dere serie un editor conform cu preferintele dumneavoastra, “ Listing 12-28:TEFIL.CPP case DEL_ | CHAR backup ael_Saes Adaugati orice alte a& asupra comportar Backspace. Daci at ceuviint odati, dont: pentru a obt fa dorita, Howratvat ic cind cursorul este fa Inceputal fisnerului $i tastai Stergerea cuvantului curent rama aigortmal pentru string_feld, am gant asupea a etc, Putem re text sursi dgja sens. De fapt stergerea unut euvént ar fi foarte sim pane problema de a rispunde la aceasti comanda pentru situatile cfd cursoral se i sau dupa acesta a corect va fi nevore si cunoastom cind cursorul se afl in inseamna in once pozitie inclusty ‘Am adugat dowd functi membre ale Iut TERIL.CPP. Cum se poate vedea din listingut 12-29, acestea sunt is cold, vstrien() raporteaza strlen) pentru partea vizibil a fi spatile de ta sfirgit su Bindindu-ma la acestea cénd utilizez edit Listing 12-29:TEFIL.CPP int filew :tis_pot_line( memlane* mi return | mi) || f tmiconext 1; x 208 VOreULCAP InDsIp 9p varoBuoy$ vj a20N ayeod 2s ajuiand ap s0}Ls0foNS arRUaU uy adeauy nur gam 28 waiaBioxs pup pnyout exe - 1 Kanoedog ‘2004331 ) Axo308 (axexc-ourp ano ‘Aanosdoa Joury acus SC te-ge ‘16 Jexeus" rep : (18 )pzowaustx = ze yseuo TomanoseuoTsaKe3<-OuFT ano w pe jaeus fywoag *Qxeus ep fo= (1 = emo 4 aeuor + axogcourT ano )y wuepa Burtees; tae eq Aew iea0u // sore Leesa ( Qeuyraed et ) gt (Otes"er ) at rovoN1gq eceo Pee SEE EEE EEC eee eee eee eee eee dd WAL OFF Bunsry sof wurazqoud purty 96 ‘SuoyoE109 op yAuTE UY maya YO JORSe undso102 ( yuan Uy] PUgUAIEOUOD “szaI8 21S p uiofiay$ ys Hinged uiowuns “eporow aysooe od ou-npupzeg, ‘areur re soyoese9 tin pllgeD Revaseydop as iode 16 Qudjas vijoung Eze mn. uu exe} HTN © areD od CUO? Uy ‘eIMYsBCe P}AvOID 8] NOS“ aisod NUL 208 Isa tariouny & pRoaio vaxeziAM UU “(Oost eHouNy (akes sueu geortuTe @TTs PToA t= i (ze => dow) 99 (9. < &) ) OTM -use56 yew 2( 8 juste =u aut Qvetme (ooedsearun Susrres; BurpaToxe) TeneTA // (8 exeu uetryea:sutweTts aut b{ axegg-ouyt ane }ueTsQea < (cn + qeuoT) wzNzeZ - i ' Ores et: reme ets aut easSiegs ©) a4 BS NUS W¥Od MAOSIND “2I19}4p auta}qoud Enop WaBanstcy mausieys 2] ap najeds ojaraIouIeD eUCZ UL HYPE 98 |ryOSINO PUES OUNIE sae Tou Aull na SieHps cb ‘Bedn sec 49 wievenaT eS ‘Si tavatam C++ pas cu pas 368 resupunem 68 get mat cursor Hine i us. Apo, Sh presupun a dpi tie singra tine again esas 3 in oblema, iar apoi sa discutim despre aceasta. Listing 12-31: TEFIL.CPP Listing 1290: TERI _case DEL_LINE: "ae ( He_bot dine’) ) // sotton of £526? Af (cur_line = topline) top line = cur Line->next: cur_Line = cur_line-pnext: Gelato car_lina->prevs Qtse if ( cor_jine '@ top_Line ) ‘pea £31e->tail_line = cur_line = cur_line>prevs aaiete cuz tine >next eury--: else if ( cuz_line->prev } 7 mem_file->tail_line = cur_line = cur_line>prev; delete our line->next: top_line = cur_line; snow_all( top_line + ngul 12-31 ( treilea sunt aproave simpls? (Eu ou art i gs putut, Cel putin ow lturct end cartea va fi in drum spre publicare.) $2 Editare cu Tiny Editor ne Erori si depanare Pu merg, mi lor Wateh sau Inspect. Adeseort, ceea ce ‘dupa ce afi aflat ce este eronat, Uneor destula' munca pl De exer despre mem_file>tail_line atunci cénd am seris varianta originalai a textului sursi de mai sus, Am observat 0 1 care s-au tvit tunes cand am apasat Ctr“PgDn pentru a merge la sférsitul fisierulun Bincinteles c& am petrecut destul timp pentru a fixa locul implicat de apasarea stelor Ctri+PgDn. Cand am decis c& problema poate file am investigat acet text sursi, ‘unt scurt cod, aga cum ccum merge st aveti astfel 0 imagine mai bun’ asupra nd apare, Totust nu veti avea 0 certitudine depling. te de a scric aceasta carte, am seris versiunea 1,0 pentru e: Cina am conceput manuscrisul, am scrts textele sursi ale programeior, ut ce am invitat din scnerea acestei ve mand citeva’ din lucrurile necorespunzitoare). Textul programeior nu este perfect, dar este un c: re cel mai bun stil de progeamare st exemple de programe care si ilustreze acele piri din C+ pe care fe-am invatat. mai fac greseli. Marele avantaj pe care-{ am este Imi deptasez 51 s& le fixer, asa incét le pot rezoiva. Mergem mergeti direct [a inceputul sectunii urmatcare impreuni ct Si vedeti o eroare? incercati-o pe aceasta. Exccutati-va programul. HPS pentru a ingusta fereastra orzontal in foeul unde o line nu ineape in fereastra. Det ait ca extrema dreapta a lime sé fie dupa marginea dteapti a feresirer. Acum stergeti un caracter in aveasth line, Observat ce se tngade-oupT ano = aury ane aurt7éoa se wore G8 dn euTT ano 3080 weoxa {aarde-sutT doy = eutT doz sis Capade-surT 803 1 93 | sea6%p fezr8bd > erp “0 = 36TP_) 20 (arayssed 34) obed ous dn auyy "doa woee Opens" waa as voysea 289 [o198" tim wzeajade wSOOR YO BOPIA HOA “JOT OO [tfesaw wanes v ud af ys amngayy "ysans ymIxo} nN, ous 2g TIO lun udo tian va ‘uo anus rew ap sof uy enous uvsede POR ‘2p (maISsys woKy9A pROSIND uM vALOSQO HOA DUR Ip wueze UL AUN nO une owns “ddd tode Heseay “I918y 29m] B nud of ny EyBOHRS UO aM up wa90 jada ayn Hew gdng ‘ammo HE UL MeO BS sMpUOD ISOF UE ZISEODE HUNG IwOyIPoUN vIngaR PUBS 729 joaroo anogy Bs Aino ntd vareywoUsDL9aq “DUBS 9p RuOIeOIpu 3Ea,}PoW! nga nu tinzeD ayfe|a}90 TEASE ‘vuried qns 989 eyse909 18 sou Tounyn 2 oyso wasaiag azz j20x9 2 “BIcuNS 9p 2 ue Rauad varoawes 2p “ANTT "TEM ttied vorBo} uo ynop ap wayueA wy ¥y sv apaop sof yeu Injnuosina eadnse=ap ap Bi 9p jmnSIEJs Woop Sol Teetaoe 7803 © onearewas we ama ad Toiipa AULT Brea Zt jada 2p HO 21 unio yoo tag yd wy ms apn yzeasasozN 95 1 14a, wud siow wy ay 8 epacox Yeu He eANpUNIe aBuN IPA sfioxd t s1019 Hoar ys Hea nu youd gmseaqe fo 1 amwo|FIpoUl BASED weoNy 30 BANC singonmy 2A inp “werpeu EEE tere jest SEH eee eee ff eury dog) TTETROUS quouc-SurT XRD 829789 Poaxey axou 3E9 fy pxnordoy Temnosaay 140208 pp geenccnurt ane 'Asaovdon JOTT AOUE gorwesoue ovo career // #{ do }82850718 aeaceatytane = 100 denaae = 4xoye-2uTT 200 (zeus top: eH eTTZ PTOS dd WARLZETE GUNS LL mp Qroys"Tep vrfoury wiurzesd ns 0 BaAw MOA 20 MI TE founy v giiatsiswoo vexezy[sn 79 UNG yop # Bry seio9 od 3x1 wALIOS 200 sdap ap efiouny wari onpii09 2u1 (Jeuy|_ mous “mous BHOUN 190 ve aingan ny “ENSE=IEY ezapisuoo ur pum) 2 ago 11299 G3OPISUOD aI 1¢ ayED aIs9 MI "SOV veut nD sbxoxe 08 9280 8 // erarzed ef ap erurT ersoeez // #(do j3aunxdo igo eyseaaty “1080 ISH Hoa 0 TI09gICaU aoNpOIE 88 ‘Bed nd Ged 445 WRTEAT ES a Si invitam C++ pas cu pas 42 Eolttare eu Tiny Editor wo testi toptine>prev-prev. Aceast va ven valoare mil uct end sunt i egomn sb ete stal de vmorl co: for (ie dy ic 5; abe ff AE ( waatever | go_something: breax: fa 5, mstructiunea pas de iterate rea, Variable castor, va contorza pai | ta 5. Cand an top se opreste. Aceasta variabild este merementath dura ‘Aceastd comportare poate fi inconsistent cu folosirea mstruct Blocut de deasupra este echivalent cu un for (in 4y.2 <5) (7 doop tena 4 LE ( whatever go_something: else Gb // END INCREMENTED Dacd plirisirea corpului de instruc ‘cu break, atunct varial testul din loop, valoare a variabilei contor, veti obtine un alt te ‘modificare: ant ts for (a=17 2 < ithe // START TNCRES 3 { nnatever + go_somethingy ease breaks am acest exemplu vanabila contor este incrementati inainte de a testa condina activa break. in cazut nostru acesta a fost testul pe care-I doream, Scviind ia acest fel textul . putem decrementa variabila dist, indiferent ae modi de parasire al instructwnii loop, Notati aceasti mici diferent: for (i= ar i <5; it+) // END INCREMENTED for (in Ly ate <5; ) // START oECREMENTED In cazut unes sncrem loop, 2 dupa aceea, apoi 3 1a fi 2 fa prima trocere pr termmnares instructiunii loop. Acestea produc evident o diferenti de 1 paraseste instructunea apelin | prezintd o versiume corectata pe sfasit, vatoarea prima trecete prin In ca Listing 12-33: TEFIL.CPP Eee a eee af { direction == -1 5 // pack bop Line up ene page (if possibie) Af ( Teop_iine-sprev ) return; for ( dist = 0; distt+ < pgsize; ) Af ( top_1ine-prev->prev ) S0p_Line = top_line-prev; break: as much as top_tine a < dist; itt) ™ cur_tine-sprev; >prev->prev. Am adiugat un test eeput pentru a fi sigur: c&/mu suntem intr-un fgier vid. (Daed x->prev mult sau mai putin aleator - Joop incrementarea tu dist la + ¢ eury dog ) Tre nous feereust 3ubtz uo [Toss // ( teagt-a62 a zn) gt £( Ranosdoy ‘xxn04931 )Axon06 ¢( axeae-sutT mo ‘Kanosdeq )euyT nous (26 (T= xno + aout + qxe3¢-eurT ano © gd9 ‘t= ver + smegc-eurt ano 4 Zdo sxeuo ) 203 fC axexcosry ans justaas = uot #( axeagoupy ano Jaye ped = axese-oury ans (Co. se [etetissengeury ano ) st ( spow'sur ) gt eR<-OUFT aN )uOTZRe = UOT ( axmaccoury uno }age" ped = axeae- supe ano (wer < (sever + xno) ) ersun arene Sees empese Steer Pu 30 sata ity edozp // ipm = 9 eu (pu aur )gevoTasn: :um"aTps pros TT oo dda ve-et Bun ‘wuanstxo erjotiy utp ByEn| oys9 LIN|SAOE v ayed yumg Oo ED BOP U ywOM AISA “dd TWILL, 73 utesdns w nnuod HIE WeIUNS ody “aye our ways Bev wedz9 n9 pugdoouy sfasoyo0 a (Oss ped Te "Bu BoE] Suny Yew axe! op A$ uN ap oor ae Tops Muy wo eae eH saoutadumeséns 83090 // azay vourbien aburze es eoep /eadeexD extTT3S> rerysaray vous. rs Sueseeur sqyarod ® naqued aezoeze0 un nd aeseTdoD z { pow yzesut ) aysayas edup 9980 eoxqz0z07 voep TRITS apUT xa (.xeus™esn pron rervursduyexdos ts exezseut naqued eothor 3359 eysee0W ereurzdureadas eynoexe gaysexey veutbzen aburye of eoep ‘eadeaap exeTTIOD qrertgs edn vase eextzezez eoep TAATS OOUTANS // reading aagued eox607 exeuradurexdns #p veazed // ay3Ts daoo () 800 // { epow 3z96uT ) gt QxeuDTesn pTos ancy ap puusos 0 wine axe aroury BSE quad eumonns RzIFIN WOR me ‘3yNOSOUND jugiesul eesequoweyduyy idusteacins odo “(uamay TS) J9NU cu Npow! Bh SUYSLOVEVO 30 VaNVeaSNI jonzisur wareumuz23 Zap soquoD TaLJQeUeA 9FE HOTBA Huaas pupo rouNty spioqe ap Janse Joun wxdnse pind aproap ew ins goufduul ek! aieo atreiFosd misOs YS 280u! FUNKEPIO] a} 18000 2p ‘erTS Sed TD WiPIEAUT ES a : av Séinvitim C++ pas cupae | 42£dllare eu Tiny Editor i ars putan (c ' i negi “Honéle Eater s(cur_jine-ptext + lonar + cure - 1) = Eee eeeeesnsa CeCe CeeCePesee CeCe Ceeeseesee eee se otirplt acestea.) ‘Cand testati acest program pute insera orice earacter &u excephia curacterelor ‘Acu dorth 8 ve newline Inserarea caracterelor newline mematine este Sunt cel a caracteral newline (corespunzind Ecranul este reafigat avaind c: Enter sau Return). Putem sé transmitem ca o chete pe care si o pr , sau c@ 0 comanda. © vor alege pe (e persoane utlizarea tas in modul supraimprimare, Eu le trate pe améndoul 1a mpartigesc aceeast opine ment i orice alti abordare. Enter, urmat acestt pas} PAS CUPAS 1. Adiugati un mesaj DO_ENTER in EDITCMDS.H, Al meu este intzoaus 104i 2. Aagat o opine ese ENTE adiugat instructiume switeh din 3. ctupa case EXIT, adgugarea unet noi 4. corespunzitor mem, 5, Adiugati o dectaratie a metocer Testati mergind pe 3 TEFIL-H. O functie cu atributete publ (sau ce aitceva av 6 « definite de metod pent si copieze msg() di entra dumneavoastra, iru DO_ENTER astfel ca s® apeleze nous i Hipayos ewajqaud epr0qe wi "Worseon va1aBueyS 1S vaxoidoo “vasernt* wy ‘ony BREA Ov] BIRJDI 98 azED aja UOD We Iody ‘ojaseiei"9 wasvuMdutitesdns no Inds juad Zojepo.aw wamnIsuoD S4 ye2USDUOD UNA wu Tag) {easi¢ap op nox8 aapozo vy supuioa v arenigns wisea0e Bo nsqud O-yoK Jans Bsins KO} UM WHOS BS PLLLOP BWA}qoId BISEIDE eADION UIE HAL HY aNEYWSUIAZOU ep JoWIedD UN 1910} oMbOd 96 wd Hionssut widnse 18 asta 0 youre we FaUDWASE 9¢, “worun no aqeiau98 afareynzas vy oBuinle ¥ nud 1 1 zvauon avo woTerado +4 uy Iwiepisuoa te eoUoLHOSe i Mo @liowiot ap auoz tou vallajas surutiod arma ndsouos widase anaud o younte we dt 1s908 : ‘ourus esep yan Hiv nIBS 's WMI Few o0 UL 9D UEP yBIONY LE TONIdeD mIsDo8 Instore aq “CNS UN steod 1$ azanpa ys sexepe-nuy ayv0d azeo soypa tin no m anogyo dzaupe BS Vaan! nui are> 20I1pa uN no fouldea yseow inde Avwnzay GaSe Fn ‘oua}gous aisaov unsuls wEN Hiemnd Woy Heds op quONp o¥ Ws aIngan isa augano y rsarurod | vo "Sat Hind “enop e od wAloze Tuunyn) uqgzia. yess FeIpOUH Bosvaudo as Bs waRYaud Sy “varsooe ImSagjs v] asmuauNtdns ntivds azayaeseD 3 weIpeuut yoswaido as “mmqugana rnpéagys 3d arSaido 2s jnsos! yay augand ynaIn ‘2 HLjnotud BRP SNMOSIP BS louded 3s90e eIDYOU B Op 21 TRC | (Fp prom obs iui STs By0e ( eurt doa) TTe "Rous Kerderp // eur rresc-erts wot ( Qeuryaodst ) 3T Axesseoeu 3 sour ano = fury Trea asncpe // igxouc-auty ano = eurt ane fo = 2eUoT fy = x20. sgxouc-oupt doa = eurT doa este beskano. (ema =i Aznosdoa ) 34 Juezzno SUT #eu SxEU // ot (4430 fd, )) cox eury quegano go axed Surrress ano wueTa // yu yourtmou + (do ‘eury ano )euTT Sar, eurt 3* fy = mane + xeuot + gxoac-euTT ane = do seo spree ur seezdKes zequg go 30d // (yxeue ep: rut STE PTOA fevop winaaz steiaseias dado USL 19-2) Buns ddA aap mp ems nad soa soo std “BOUL BIOL i$ asede mu areo now ynpxs “nou fe uy aIs9 mu aun ysINs say nue oa nad ~ ave mgdooxe “yound un rou ayequnyo 0 nyciaxa 2p va - 9 slpyos “osbu jeu axse goecy “sound un tu) pour v 1900 YLINDS Inu! aise EEC (IID NE aotnd tn HeBngpe se UNE VOW v 99RD BE 3 youd °§ un pioundl UTNE out ‘Sedna Sed S40 WRIENI ES Inamte de a incepe ne ocupaim sertos de struct pentru a adiuga comonzile re copiere 31 stergere de grupuri ds Dack nu putetiastepta si punett in TCLite utlizeaz’ F2~ 51 sore i de ‘Avett nevore deo indicate? Céutati Sow iugnfntntea oe ss yeaprmare cetera lize npelcrare de text ae Tem fio opt cu tener craters eon : ick nu vom avon aevor sh ne Opt Tiny, de acca vor er sume room 1 eee poner not ements de C>~ Ne vom OP Pt Onoud istic’ si pentru a lamuri o mic problema: In afara acestora, a Capitotul 2, veti vedea cat de departe am ajuns . pul discuténd despre C++ 51 am programat foarte put sau mversat, Sti sufictent despre C++ pentru a petrece mayor programand. incepem pregitirea pentru tra raporior de adugarea unor not strueturi de date clase! 413 Manipularea grupurilor de lint sunt fie foarte simp, fie foarte complexe, st prin a considora partea simpli. avem nevoie de 0 culoare pentru evidentiere! pentru a aria grupul marcat si de un indicator pus la TRUE pentru fiecare linie din acest grup imarcat, Aveasté operate ese des Marcarea este 0 oper sfarsit 1 de pozitionare a indteatora ‘it aceasta nu este 0 problema di ‘Acum si consideriin operatia de stergere a unui grup de fini tem utiliza destructorul memline pentru a sterge o ‘ind se ajunge la ultima linie din raport de cum iei de inceput gi a cele) de de evidentiere pentru toate deja rezolvati, Ca de obicei, pare a mai fi un mic detaliu care trebi Va tre fetes, 58 actual Ai mncheie in grupul marcat sau in afara acestuia, Bineinteles, gru marcat poate incepe in ecranul cut smareat este ct ecranul sau ma) mult, Veti vedea ond vom ajunge acolo, ci funetiile care muti, copiazA 51 sterg sunt la fel de mari ca si oricare dintre cele pe care deja le-am scris ra de listd inléntuité me permite sk progresim repede 51 wsor, dar num lor Ia care trebuie si facem fata pentru actualizarea ecranului conduce ia des cod sursi, Adaugarea de noi structuri de date membre i cid actualizim ecranul st marcam grupul m scr teste simple ca acesta Apoi incepe grupul de 1inii deasupra ecramulul? gistrdim prima gi ultima finie a grupulvi Marcat (pointeri la obiectele metline). Incepem prin adiugatea a patra linii not Drezentate in Listingal 13-1, ta defi "ulm engl FTUTT ep duz6 un tot aqse me // OTe THT ap Tadazé eeeeucras0b / (ou eurrgzeas"dnors ) gt TBISOOP BO WIR vA BEANS [MIKO eae aca ea dw sto goep wapan wnaluad ~ auf" Les dno "wIsexa YoUp swore Muy] 9p nana YoIpUt ares aiguiow ayep op UnjoNIS ined RANEDE wOA W 2 var Wai 9p JolunGTAB eaayRaIUE CF ‘nydmaxo op “rayoean9 un waSian$ avs wound puED spipu 9109 au an goud0 900f BOP a inzayuiod ay s01eA 2f aqeuies nated soy We wNoe UR 9p axEIvoUTO}auBY Uy “MyRADR] YPC ‘seoe eSiBAIU WHOA wun wpuEd au ys njaosina B ylezuozu9 ngrain sozoere9 ups wp 1 season penanaye oy Us aingan vifesado 3p #8 tiuapuedep wayuns sn mnawow ‘vouawiase op ‘eis “wyzrToHt fa aiso “S1QUdLH Step ap LITAINNS aS" syEHNEPE Typ o MNEW ee youoyas a1wo8u BH ona 1ep “BIqWOu! Wp ap MONS no WORE ws “growinsues apada 1 BA yj purBnEpe |quodstp euowout SLVSIGNI ‘pray yuu TOA,“ | unain Uayo BAY BIB] ieonpom ‘qulyuoun ons ve 1 dn 9p atiereyoep re 20 dng ut HPAL) weingpe fou” euri pus’ dre: teupr pus énex5 5 gos st T/T // Sout wazoe // 0% tageeave /362"s. pyrand 336 ‘ou eury gzeqe”dnoxb aut Veuyy areas dnoz8 youyTusu _twoa ana _/Too ano 3Ut weurt 30a ‘ou eusT doy 3ut see ‘doqeaes ‘agT"saes fepou 1902957 TTNg SERGE H EEE eee Peete eer fea ceese te URLS Ee Redno eed v0 unienTES HTifal :F-eh nuns OBE 382 4 invatim C++ pas cu pas Saltul la X. Y 'S& ineapem prin a afiga in col rmesaj care si spund coloana si réndul pe care se afl cursoru procedam asfel: gotoxy( 1ftteurx, toptcury 1, Aceasta sugereazi ci 0 fu munca noastra, $A © numim goto_xy() Pet . win dia TEFILH si apoi adat sniroduea pur si simpla apelul functiesimtrinsect gotoxy() in defi ie. ‘va functiona ca si pana acum, an a cluta. fi 'e vedea efi nu aft fcut nici o grese pelurs fa gotoxy( sunt cele din show s a. yom avea 0 functie goto 9 & raporieaza coordonatelc c ‘© complicatie in minima si adiugati o culoare pentru grupul Listingut 13-2: TEWIN.H __Lstingut 132 EX faefine FILE WIN_OUT_CLR 126 te 2 yellow on whi fae fine PELE WIN_CON_CLR tite en pack fdefine FIEE-WINLINE CLA 112 // black on waite fidofine FILE_WIN_MIN HEIGHT 2 // fdefine FILE WINMIN WIDTH 24 ncswin,size() iste constante nue rouse on Ade eexeculatt programul, verificand ea limitele au fost bine st 413 Manipuiarea grupurilor de 383 cri stare sit mplementat 0 schimbare pri ee prin modificarea text programare, Véndnd peste to programare. invita’ din pr al dour iting, ofr un smn Ge Sack Listingul 13-9: TEFIL.CPP void file win: :goto_xy statac chax* loc_buf = * 12345:1234 *; // row:colunn // compate current location cor_row © top line ne + cury = 1; caz_col = lendr + cure; Uf clear pottom line textattr ( FILE WIN OUT_CLR ); gotoxy( 1ft+7,"pem ); for (ant a= 4:3 < 12; ase; ) puten( border |S] J) weata next value gotoxy( 1£+3, ptm) sprantf( loc buf, * 4d%a \o" cur_ron, cur_col ); eprante( Too fut }7 M1 gots x, ¥ gotexy! ift+curz, topteury }y Cind vet dumneavoastra un rapoi veti avea i coloana po: naw soya ey guIaqqosd eisease Woajozar ws tiesszouy Bs tog ‘vaneinype 9) tial © msg “NIT arede puyo out eunf-dos gzw: © aBioxs os pups qWWIYDS nu yRpOIOTE savouRe (a oun varafisex$ v} o1uy ap afausumu vaypown tama pu x04d BOAwOTRA Bf ody eury dor ey ou] ud nusd vareoyea, vareSingpe eh HHeuBise gs avo a:ngan JOG OD NAD “JOF-OD $998 9] BS aiNgan oreo ad sueINUE ap izUdINOD yop ujuad vareivouraroap 16 worewwowaiou! sorgzundso10> | 1ojLnjade wsdnseap au ‘area asya yuntionsysut sipaioo oppsyagnu emnBise wa aneoyLpow mseaDy *(Ixou pupu sof ul sed arvsoys wdnp ou auij dor evan vorworeA reaINaUIBIDOp 28 (AaKd pUpUA ) areds UL sed ameooly dng preuc-outy "doa = sur doa tavnd<-euty dog = sutT 803 StamorgUN vinpS v Ap ayse "IRIS vasEDUIPoU 29") B OP ¥IKUTS Pole -rnowIEG ln aeop are area ()josos" tia geeojade vasaoy ‘uGEY 8 dna no Had2ou) ‘suvoryznassu09 al paLzIpoW jausoiay ¥ atu] wud ad 2p inpugr urRAWIYDS Oo maP BS 9189 NOH ap WOAR |-aHP> ad mADny fr) Cransasay e an ud 9¢ aaso |m4osino puyo t9uNn ap yiesiput Rultad B wAIOSqO tos tIBDYFEPOUI 9ySe98 no 9 IER eee EEE CeCe er eer CeCe Pee Pe Cee EEE C suty peeqc-oTyy bow [Te OLS 40 Ve 0 < od eur rreac-eTsy wer = ov eury dey ee Thai op aojandru® waseindnaenl oF ggtwg = seouusexce 1783 Hee gaoTWiaL Fer nBuNET oop = pia sisa sarbyy un PORP yuod anvaxo wooU 9se0aK} BiMp ZanaHttazo0 uo BL zaxt “2qsWO sonar 1909p a4 TW 2389 S24 2yo0d 28 24B0IRA EISEDE DUBAY "> se vast nr wse po vbw “HEZATA rou OTIS TONgNTE NO PALA ‘urgoyjxe no no ‘puutigy Ba 1BNO S IN BALBOTE A faxap a guNOO™| In| wausoTeA “(ouTy Ae ‘aswowwa YoRC] TeaHpOU aise qmuuessosd puyo g no wozl ‘xauny paige IPP avEI2 ap 9 HIN AP qarnuesbozd eazeozwoUT eT o euTAeD eT TaeTIEA fp = zoymed = 3 p eryaerres //_ np m xequnOS TUT erancexe 9220073 PT 0 SUTAR: (joung7Aw pTOA snyaurexe rsoretan sn BA NU NBD “YoRTOD UN MOK x9 U1) wwOreaU] pupo pevasoqy> ‘zojuyseuo2 9p BEOIO 189 ‘oye 1 eorenaaxe ads: uns ijouny Yaun pIoUeTU UL aBIe|s~P oF tay avexeroo9 arayiquureA ¢¥9) 9p qnxgumN Geaira aed 15 WEA BS 386. 82 invatam C++ pas cu pas Rescrierea textului sursa pentru afigare fac& doriti un sfat, acesta este: Nu fa ceoran, nuct aja? Apropo de adaugarea de I Probabil c& nu ven putea adauga o linie deasupra pi Astfal incat addngarea d u poate schimb: opservat céteva teresante relative ta cutori. U grab’ decét cu cea asignati pentru serierea curenti, Am Tea porate deoarece vom modifica codul de afisare pentru gestiona doa euler fm rmal& $i cea pentru grupul marcat di ‘Aeeasta ingeamm ca trebule Si modificdm shaw, line() pentra a alege culoares corespunzltoare. in plus locurite unde am actualizat reastra trebue modificete pentru a apela show_line(). Sd tncepem cu funetta show all, ‘Actualizarea functiet show_all() ‘Am sefis 0 variant simpli pentra funetia show all() care inoepea prin reat de umplerea ferestrei ca eutoarea continutului casetei, fn cazul gruputu ace may functioneaz’. Doresc ca grupurile de linii s& prezinte | thargunea sting Ia cea dreapt® a ferestrel in culoarea de evidentere. Nu wrea sa 58 le cu culoarea de evident text pe care-1 adiugati este selectath ca parte a grupulu d fecare rnclustv not "Aceasti cerintd face ca funetia show Tine() 98 decid, fea corespunzatoare $1 si umple cu aceasta culoare i ‘aici, puter, de asemenea, sa invitim functia show. ‘de dupa sfargrtut fisieruta), In acest fel at() $1 si mnnm un pre viteza pentru show allO. 1 noua fanctie show_all() din ‘TEFIL.CPP.Tot pind cand veti adiuga, in se Listingul 13-8: TEFIL.CPP file win sofile win() gelete bienxs; void file_wins:show_alll) nemline* cl = top lis at start of mengile af tcLssprew ) af { clnpnext jf nae 4 ox more Lines 14 Manspuiaroa grupurilor de lini Belling fo top inane; for (ant zow = toptty sow < bin; some } show_line( row, et), af Cet-onexe } A ( (rowel) < ptm) ch = of-snext: bot_line not, alee wnile ( row < ota} snow_Line( row, NULE }; : 4 bot_line = cl; gote_xy(); #SHEEEL CHEER HEA ECE At observat ci am parame ses fn tabu, de emer ici cpicae E aad oT ibati declaratia din det clases sy apeae ue sow ai) co fincas, Dac are i oi lodata, putem renunta la el cu totul, estan ia eniaiee ete eae AH, stergeti 51 dectarata pentru clear(). Nu save na | Putoh,de asemenea, sh stergetdefnita func clear) Cod obpmut reba ie 8 intone to si ultima, Cand se lucreazé ulin sho Tine) este momenta si shinbim oneal 1¢ a fost argumentul, px sunt en cicmpi care umes. Incl eazu cna to ine na a fos argument anal lukie syejoz aupjouseo siios v ()ueyo 96n eHoung “e209 1S snmnuaos sarin ee saga su ac ou Up Heal “ASTI sek 3 poy aun 95 aus jiofonasioo wy Biow 35 Ag dan Bea oy O ezenutsep pour a NOU Ip mr Sb URN iy snes je tose aura pfs ae ng onsen Jona ong dbo no cco ayaada fr aga vate omens leans ee oo now // qusea // Haury euos ‘mex jauryTHous f( axoaccautT owes ‘moa /aurT Hous ‘0 apenutioju09 unjade axperaje0 UE ereaunyos “zzeouoriouny mu ‘(jan sums) Qouy-Moys vy £( axon )zautado iC mor 'T4a31 )Axcg05 | Cwm Roo RIA amEs | xa3e3%03 este CSI NOONIM entra | wioTaNIT NIM srs ¢ poxxeuc-Te )73985%09 1 (Cue "6 /yz0m )Adouzze sue | DIAT © PTAT < UeT = UOT fxeyot = vet = vet fseuot a4 = (sever < uet) st °C 8 )ustsse = vet gut Feee-tu es e133 30 pue geed gr Trau ex Te // (Te) FF Tall 9p JopsRdRO waLeinSIaeW Eb f fq = [Prat] axon (Cptat ‘exueta "08 ) Adouzas "[ogyxzo" seu exueta og // = StueTa yreuo OT2E3S (Te yeuytmem ‘nor gut JeurT Acusi iu OTT prea +O AxeR08 f19 = autT 30a Seb mBunsry S-THAAL mip esiesero9p uy RIND ALD srequuyos 0 ap a10sou Hane "ysIAUKEIRA IeAUNKDS WE ¥D NAIUEd “NOU WIC] "gk" TIT, 1 wpe as azeo Caur[ mous rusted aunisioa unou yrEre 9-¢] mBuNsr] “aye> gdUIS rut ¥99 9959 olde e] 9p wOHLIOSAI wD USE uM “Iwiepisuod aisaow a0 YG ‘nner 2 2010 asa wiwod Us apoK BSE TIAN, PasBOTEA {uy oun eadnseap eye 98 a1e9 a1 ‘ung yews outjmoys erjouns O (Otte Hous pawerzea pnou // :aszde-euty doa = auvT doa, 2{ apade-auyT doy I tte mous saquetapa eoussa // ‘erduene De // / re nous eauetzea nou // ury7sno = 3urT 93 ( aur Tans irre HONE eetion Te // eauetmes Rousse // equetzes enou // OTe nous + eur aoa ) 1t27nous squersea eousee // t erduexs yeurexd // ‘edn sed 179 WEAN eg ‘Bee 390 ‘Sd invatarm C++ pas cu pas top + cory, coxtine 1) dupa instructiunea for loop, $1 paneti-e la sférsitul le dow’ funotie, veti fi astfel pe crumul cel fnainte de a trece la comenzile pe , Sd studiem o pereche de Jomenai §i si facem citeva imbunat ‘grupuri de li ADAUGAREA UNOR NOI FACILITATI Cand am implementat initial operatiile legate de gru evidentiez de la Inceput 0 pereche de comen: | ecranuiui, Acum vot fi putin mai mt comenzi. Aproape cf nu vor fi probleme, Adaugaty mes 1023 51 1024 st apar dupa Gi 2, Transm ‘TECMD.CPP ca rispuns i= apisarea. tastelor corespunzitoare. Am cop TCLite jam utilizat CTRL_HOME pentru GO_TOS si CTRL_END S. 3, Adiugati opjunile case GO_TOS: 31 GO_EOS: in inedit_doQ). functia msg() pentru a raporta st a testa inainle de a incerce impiementarea efectiva 44, Implementati opfiunea case GO_TOS.. Asignatrcur_line 51 2 obtine efectut dort, pasul 4 pentru GO_FOS, Este aproape ta fel de simp i Eu m-am lungit eam mult. Am si 3p. NU 43 Manipularea grupurilor de fini GO_BOS. Dacit ag ut si-mi day ftmul furnizat de mine pentru cele doud ophium ease este ilustrat in Listingut 13-7. Al dumneavoastra trebuie sa fie similar. Listingul 13-7: TEFIL.CPP case SO_END: ease Go_Tos cur_line = top line; gotcurx, 1) prea) case GO_EOS cur_line = pot_line; go("eurx, not Ting no - top_line no +1), .dfiugate s& mai facem o precizare si apot si mergem la marcarea grupurilor de Respectarea sfarsitului Cand se apast tasta End (sau orice alt tastd aleasi sau orice alt tast aleasi spre a desem la sfirgitul finte), cursorul se mut ta sférsitu gir de carnctere spattu, dupa sfargit ‘aractere spatiu si fie compl bile. foarte simple. deplasarea sfiegtul unui ra ca aceste (sowarew ound) (aoyeaseut ‘duane fox guns veys90 ‘a arvjoon vaupd 108 eaysoo8 anup 18 o1oouy “aroar0ud ayo “H'SGWOLIGA ofesou ton eSngpe e utd wradeouy INI 3G HOTENdNYS VaNVOUVA ‘eurzqqoud visenay “wuorssoe ayminosi RSvOHNS puIa|gard o 1énjo] wase f0= (T= xan + zeuot + yx03c-ourt ano )y HC ue 1A “GEISPION, MS) WTO UEP Uiedingpe if euedep eur Hietuow “H'SGWOLIGE a afesew o1saoe m3, "ERSPOACOUWUNp 2f2 Woop (ayseord tu rs) ang Tew uns nu ojout ofoitnsagacd yo yezio2sd aingan AOU Wich ‘voreaius Z3!NUe BF I9jorg “BfoUoTEIEdo ap amspio,\ da op vpuewos “ayo, u 2 2M 20 dru um yzeayareurap mg < 9p dna ap 18s ~ “T+ uB ap mndeoun = THN < uad epLEUIO9 0 op aren “F415 21 9p warotoose widoo 10s AN “GOAL 2 AH En) 20p9 tin ssnpimos? | osdns aonpold ta ait {preys ness a 9p mods opaso0 yeu joan jrunS nunwed U9 m1 “yeeau uoana 1 op odd aN] < you, jaweoud ‘meds ap a1 yas eaese0 pvc sjnio un an ae ve axed” axe 3R0 6 mae faxeuc un B eBUBIS wayEA ‘prewar ruetseA tt Ax70906 T Hous WON BA, Tano *Amo+do3 a ‘auipo] BouRUIeSe ap 91s9 28TSD 2x03<-8 4 xeuOT + jana = do ,2euD (ere => (xan 4 seus) 7 37 (yzeus" rep ( axegc-ourt ano JusTzzea = ueTe quT ursTertg proa dd S7VSAL '8-£b nBUNSTT injnp220) > Aisn9uN a9 wISeaNe “reRU “(EI Tap fl dap suns nu ‘nw 16 Quojsa az324 nop Tod “zvaun anvo jm0xar ranod 1 (Suggs I ap nijeds afasaiouse9 pugzMIO%: ns nijeds viousd va S099 “SoNUNSTZ—p Y vA (KOH OU 8D aim “njade “areoyipow gyseaoe sop ose} ROL “IONE aD vouuuny vayisen 0 nana ‘wjscooy Joreued nijeds ysooe uy yzeouNN arco PS einai, ‘oqeanostp 9499 aynD0xo SYS PUP O18 016 0 8 wIOG, Censronsouanp my uauorIOdui09 exe EISeOW ‘BOUP aed Hye ap og "ooI09 EzeoUOHIaUNy aise spuepecaid vial] ad 2p feroues juan nop nsajorse> yBre=yS 28 BS ripidayse pupae covdsyoeg tivsede pug, yo ounds v ap auteuy “auapedcad tee VopsopindniB eoemawens | wed nosedss ween eS Eo 94 ‘88 invitim C14 as cu pas nu pun marcatoru ntreaga Cred ci aceastd anordare ne scuteste de nep! we de a marca inceput dar aproape niciodaté nu gases intele dumneavoastra 51 ales Listingul 13-9 7 __bistingul 13-8 case CIRL_END retorn GO_208 case CTRE_E: return Line ond(), return TOGGLE_INSERT case F3: Poturn TOGSLF_SCREEN: cose TRG #9: default return NOP; ant Line exd() “yet ¢ = wser_end0; eaten (6) ease CTRL_B eaturn LINE_RECIN: ease ‘5’ case CIRL E pes fan ular grusporiior de lint 27S eee ce eee eee eee ag return LINE_END; case ‘U eaee CIRL J reUGEN LINE_ONVARK; aefault: return NOP; int _win_ena() pentru a doua liter’, in cazul ari precum $i a celor combinate ‘nse z ' mareare anterioara inainte de atunct ad pentru a di lor anterior marcate, tar 0 ¢ améndoua. Alegeti -0 de demarcarea grupi ( moxzno n> od ourr aaeys"Gnoxs ) at 1 Qazemun"os" ous exmez (urseq-eutt ( oWeurt aae3s"anos6) ) se ds Suv eeu pus se az635 | SOMO} Saotes pe 3036 se suTy quem esOe sme32 dnosS oust exojoq sooo oust quossno JT doa euyT Jo DUS S108 w Opus eurt: sue" eres pron £Q)AxT 0908 da WSL: Fe) inBunery i ap dnsB un ed eas B € BI AP aI 16 ¢ erUN] BY yURG mnjmI0sIno varE|NIL ods mindaou M09 © Up 96 oeP yIdUINIL logy “dru mun ¥ 0 BANG “HETIL Up tas 9 isa years ou] uugjn pugo 9p xe spy ad asearou op 1 reams op SPE Is9 OUP “more a jowwoEpUl UB; ‘auItd ¥} 9p yzvo19 28E Ube WO, “awarewop 9p eijerado anoayo soey (xreuiUn” OP” ny 2p dn un six9 Poe “oreoxeurp 2p mifoury yrearade (ueBaq ous wou EYP G cee eee eo Sete (yan ioeas uw OTF PTOR fgmouc TH = Tt ( sx0uc-Tm) 37 vgerva = pexxemc-Te ( porzeucat ) oTrus couytaze3s dnoz6 = Tm ,SUTTHOE ( ooeupTaxeas"dnox6 ) at (Qxrewun "op eurT: HUTA “TTF PTOA 1 AxTe208 {( eust ane 'Kmnosdog youry Asus ‘umn = ewswac-2eTt 20> inod7zno = ow euyT pus Gnozs = ov Sure _szeas_dnozs Tourrran = sury pus dnozS = euyT azeqe" dnoz6 Oqte nous (xxewun ep ourt ( ov eur azereGnoxS ) 3T (jurbed"euyr: :utdeTts BIeA (oore ac ( BrATHsRUoT }} 99 [OOTX > ZeUDT) F UITaET SEE eee eee eee dda WAL ‘Ore mBuNSH woreui dru 20140 pine & nzzu9d ‘(3}euUN“oP nop v od ezvaziinn o wisveoy "vareareW Binaoxs “QuiBeq ou] otouy PUmEg ‘Or-E1 wumsr] wt oyenvezaud UNS TeAINgpe wea} axeo ad OUR BnOP 2] ep J0qundruB waseindius &F Bedrno sed 70 WeEAN eS 96e sainvitim Cr+ pascu p28} 43 anpulaea gropuror 308 a2 voi file_win::line_unmark() = caz_line: ‘ group_en tine | = cara if ( loroup_etart_line no ) group_eng_line + + return; te ieee eeeeeal ‘ = geoup_start tine: groupstart Lino no = 0; EUR 0G Sg = geaueeeart_ tine 80% Snow 81110; Siocplenaiine_no p_atart_line 3 fan 9 = car_ine: group_stert ine = caz_iin woud file wants4ine_ao_unmar() seeder pear line_no = oo : pemlinet mi = group_start_line; Ca de obicei trebuie introdusi o deciaratie 1 un apel p testa aceasti azeTep ou exjuad youtpow ase qua] Youn vatafiuey$ pang "2e9 yS02" op edn90 urw-9U wlog“IXeH ‘woustuase ap aso injnueID® ¥ atuH| EUILIG pug injnzED vildaDX: aiwod nu eseann ypot wEe “uBID9 2d ois ox atu] © NUAd giRjode por, {ou OUT 30q 18 on aUyf-dor sojapIqeUEA Liu {pa 4uT )aeuS esnrTuTA STS pros fo eur Tracers ae (ou eurr Treac-ersy wom ) at ‘1 exotep SUT eaETeR // Gnox6 zeaze st uovaetsr ects // tnead<-ougy pus Gnoxé = ou pus"dnoz5 ~-0u eurT pus Snox5 ( ow" eury pus Gnozb = ou"te ) 5 este fou eupy pus anoss (eu eurr pus dnox6 > eure ) Zr este ‘now "eur bus ness sreucourt aae39 dnozé = eur areysdnoxs sdoox® ux eurt suty 36273 S10 T° // ests £0 = ou euptare36"dnoss tdnozB eTown e9079D // EE 1 ( eeupr"pusdnoz6 = ou"pe ) gr ( ou"eupt ganze" Gnoz <= ou"te ) at este —-ov"oupy pus dnoxb j-noteupy 32836 "dnoz6 dnoa eacae ©3019 // ( ou eur axeys "anor > ou TH) 3F ( oeuppaseyeGrox5 ) 3 Aue 31 ‘dnox6 surt entpe // (ou"pa sub ‘Te peuyTHDE peuTT TOR: TOTES PrOA + (eyed burs ‘Te your Top (Tm yousTwom ) euTT TSP: UTA TTF PTON PQ rte Rous aeeeedte dteeedateedd tte aEEEHaHEEEaEEE TEES Gao WHEL HET BUNTY TpapT aeage seUTTuOu OUP TmeN: -oUCTUSH pu unex tneade-ta = Te ( seadc-tm ) orrun fy usmer ( Gesde-tm, ) 3F fo= uaut (ym souptaom jou pers: uteTTs AUT fxag meu = qeeqe-aurT an SEE gC Eee PE ao 1a Fev-0F BURST op rnsy hua goep aysoure nated) “AAO NAL bie0 were pie Busy sr (Jo pupa a|y wPoiaw Bese E1-ET MIUNSIT Tia 9p JOjaRGRIB eareyRaeW EF ‘Badr Sed 45 wiedenal ES anh 402 8 Invatam C++ pas cu pas oz // 88 seninpa cu aai_iine( , cuz_row ly // ‘dupa ce s-a dat comanda Backspace in ext Iueta pe linia precedenta cele} curente. el_line(), astfel: del char(), delete eu un apet la gezete cur_line->next, Jy warianta vecne Y/ schinbata cut Get_iine! oux_tine->next / varianta noua cu precizate at afla la ineeputul sau sfary ‘Am o propunere simplat at linie inserata apartine grupuiui, Va trebun sa testat aceastd regula pentru & v se potriveste cu asteptaile. Peniru a insera corect, am cela fel cu det_line(). Este prezent Listingul 13-18: TEFIL.CPP show_alh(); youd file_yan:sans_line( senlinot mi, chart txt ) t aenline! new_mi = new memline( mi, txt 1; nen_file->tall_line note, J) ansert 1s after cur_row s3Manipularea grupurtor den oe 402 3 ( group_start_line ne) Af ( cur_row < group_start_line no ) group_stazt_Line_not+; group_end_line_no++; elec if ( cur_row <= group_end line no } group_ena_line nott: // mare, oF not, ne Line af ( group _start ling no 66 our Fow >= group start line no 6& cur_row <= group_end_1ing_no ) new_l—>aarkea = TRUE; rael_line( memline* m1 Pentru a utiliza ins_line() tebuie introdust o declaratie tn definitia clases din TEFILH. A mea are forma: void ins_line! memline* curzent_Line, cnaz¥ new_taxt st nume de parametri in declaratie? Este optional. Urmatoarea peratorulut new care definea noi imstante re de acest fel in metoda do_enter(). Este Line, ep Aceasta se iniocuieste apel la noua metods: feurt ano = axeuc-eury pus dnoas four pus dnosd = aerdcouyy ano faoad<-sur{ ano = aszd<-ousy 3xe3s"dnos6 Foust 32036 dnozB = 3xeuc-aezdc-ourT ano SuTT and BAcae yoouss // {neadg-ury 42032 dnor5 = sondc-axeuc-oury pus dnoz5 (Caxeuc-outy pus"daosB ) 57 faxsuc-ourT puo dnos6 = axuc-nezdc-2uyT 3z03sdnoz6 BOT PTO ae yooowun // eBueuo 3 ,uon oueurT Trea // soadc-ourT azeas"Gnosb = ourT T7eI<-oTHy wou (oupr Treacottg wom n= our pus dnos® ) gx Areeseoeu 3x ‘ourt Tres aenfpe // t3mouc-oury pus" GnoxS = zeaje yourtuew #1 + ow ey Pazeasanox® — ow euyy pus dno’ = oztedz6 aur gener peposu centes // suzaaex Aoox6 eurt peyzea eptsano, 8G ASNW UOTIEUT|SEP Sho, )oBeesom ( (ow eury bus dnor6 => nox) 33 (OW euTT azeys"dnoss me asano) ) 32 Fesat oaut duoz6 esow 4 uso // amex (ousuryaze3e"dnos6| ) 3r aimb ‘dnos5 eusy ou 3Y // (Qenoweuyt: :usx eres prom ore wees Ee ee eee reer dd WAAL 94-e) nBuRS dd0"TaeL. Ut wend Tally epovow BrEIe 9 (-¢) 1 ‘Opa ateod 9s 7 eee 120 ut oy8300 mss guns 29 ncn sruoiut satodes v nauad ()2su gevazinn 3s "uanze9 vopasaid @ nauod (Joo™upa:ruin of u siaur ingan tody ui] @p JojmaRUB eovwinawueW et (grou areaoyy JD 9 aUMISIOA 1S adey aq) wed qe yn WY "dd CWOEL WP Opus is DIOAOU ISD ‘H'SCMOLIGS Ht) afesour saoe es yeuRise we-97 “aLaIaCANT) SCWNOLIGS wl wSngpe uy ‘oo of uinoe wooo 9g “aren nnd aso ni suns 4891 3S008 94 Jet “axEINU!EaNp a0 TeaaP axaydwOD FEU ap hud inn vaxo8sa:s ednp asesiye op oyeo) onp ase ap asnaur ajzmoqipow 99 we “pds aps aceuado wiseoae 89 296) Niue inna wareyrur yey aq suladins ‘311090) uHou Hy YevaIasUL 35 Yode 3p ona ru waseynas wpa BS 5 rauOW}dW YS WeSRAEION ‘AdOO-ANIT. “SAOW ANI 98 109d ynop Up reuLIoy soda un aie “yuyy ap Joypnanus wasoBurs \§ varaidoo “ease no wENUNIUOD war assor$ ces OTRAOSU UNS EDEP se \qSod BA “uuNDH AU], [MAOUPA nD WON] LA Os PLED yerodo ap osse0} 1 vido v} ejuntiay aco os pred eyo UL yemMYMeD 23S juDHUT aud) ante Huguiopy ‘tejap jrsorezado 1 tounae atau yruazesedo op S10y% ap undnut ap aro We 30 wena “Wu W unanug ozayorew {4 do fourT~ano jeurruou sot rareidayse ajoyeyzos ep 1 urens sup Fesow wade swans TEU BUNUID Weg "W j, %9 InjnoreyeduioD © gno¥jcou RamBUOKUDTE BUIUN|D LA aILqUI|PS WISEOW 2¢ @ ‘outq ano Jouyy eur rer row Foun eorex // ‘a wag RTF 406 // adjust display 4 ( group_ena ling no < top_) Si invitirn C++ pas cu pas Janene } 7] gzoup encs above screen ke (cur_line == top_line ) ‘cop line = group start line; top_line_no ~= grpazze; // cary unchangea : rt <= ine_no ) dase if ( group_start tine no <= top Lines fp\afares ae of anova toe (surdor palow grovp! soe sy ra group. ond, Line,no ~ top iine,no + 2: top_line = after; toplline_n = group_end line no - grpsaze + 1) «ee Af (top Line potcury-1) < group_start_Line no) pee 8 /Soreor above ine group LE Coae tine == topline) topline = group. ntazt Line 1/ top tide ne unonangea 1) eazy wnenangea eise // cursor pelow line group // top_isne & Line_no uncnanges cury = gepenze; Gur_line = group_stact_line; 1] reset Line Hs anc display ne no( group_start_tine } oe stave line no = Bina po( group_stazt_Line eee ea inmnd = group stast Line nosgroeszet, snow_all Os ' void file_wint:Line_do_unmark() woud file sin: ieee i, Seetiunea rx nemodificat 1s. Dat 52 8 tot ceea ce yea acestei Fume! Jepe cu grupul de 1 sgrupul care urmeazit display” presupune ‘renute cc lasim tohar Facut este sis 13 Manipularee grupurilor de ial 17 aratd noua varianté pentru show. 13-16.CPP.) Listingul 13-17:TEFIL.CPP void file wan::snew_ail() mamiine* cL = top Lane, A€ ( (let->prev) gs (cl->next) ) // at head Line an 7/ nen~enpty top_line = ct = cl->next; top_ling no = 1, bot_tine_no = tep_line_noz for 1 ant row = top ow < bem rowtt 1 show_Linel rom, cl 1s 3£ (row < (btm-1) ) —// not last screen Line? af (clnext) // not last file Line? else el = ol pnext bot_line not: while ( 4420" < pim ) show_Line( row, NULL}, 10 tre 7nous __ feaxedsb wy ow eurttreac-orts woe Hyeorreds5you our a1eaednoub = eu ouFT pus daosb H Coury ameas aneub jou burg = ou eurT aaeye-dnox6 Keydstp pue sy ourt 3en{pe // peBuewoun Az // soupy aseas"dnoz6 = supp ano ___peBueyoun oveupr dos // fourtaawas dnox8 = oury doa (eur sno ee eet dos) gF Aerdewp senpe // imouta = oupypus"dnozs Jneytweu eaeter: eyo = axouc-astTASH fqeeuc-qetTMeu = ous 3seye Gnox nog eurt mou 03 YORTAS // moutm = seadc-ouyt no feUrT ano = gweuc-neuTe inoade-ourT ano = nexdc-axouc-gerTnet iqxouc st qMeU = 4xouc-nexde-SUyT ano eury meu aser st moure // RFT MOU gerry eT axouc_aeTTAeU // ert mou ur xT // fqxeuc-DTOTe w= proTe eae rweza (usr puc"dnos6 = PrOTH ) st fgeres = powsemc-prore : Oa = poxzemc-mouTE (axeg<-proTe ‘soups JeuyTEow Aeu = MOUTH or Ta Sp sojanarUB waieynanvew er . oeeury zeae anoaB ~ 4, up gporauu gow wiseene Were BI" vod venyou, "waves 969d) EO sBOp “mara RENAE qNIT aa fandnys 3a auaid0D vvareynu ¥} ALE! Po i 2] BUS asvo ou wy uraoan ys “yrvouoKouTy un wy van 2qg9 pUpISeD “eu “oresige ap 1099 ]ESUIPOU NN ‘uacruanay 9 ound aren, a 9 THT, o NO OMB WY LE - cree eeeeeee pee eee (sou ) eres eur (aaege droa6 = prove ouFTHe : TqstTseu = AOUTE soCT TON pou = S9TTASE /OUTTEOE dope pemur moo PTING // ou eurt pus dno m eetedx6 aut aenet pepeet ONTEA // ruxnqea ow eur taaeye” dno35j ) 3¥ (OM groub auyr ou aT 37° /f (ykdooeury: ee @TT PION “gdo- WAL are} mBUNSHT s@unsr ‘presedas vivant yn NU = ap undnsd ap az21d09 ye goed “ep HIoUOU ‘ap pususod ye29n] Ure od 1ocy jo und 410 reea not instante pentru memfine in nowa list marcate st i. Ce ‘Cand nous list este construitt aceasta este iegati 1a cea 88 invatam C++ pas cu pas 1 este legal $TERGEREA GRUPURILOR DE LINII Ultima comand’ pentru grupurt de Tint este aproape nesfirsite, Listingul 13-19:TEFIL.CPP snok_all()s youd file_win::Line_delete() // 3£ no Line group, quit Le ( ‘group start Line no ) returns // prepare constants leniine* before = group_start_Lins te decat orice ats vat pana acum Aju stergerea, Aceasta are e->preys tae before no = group start _1ine_no ~ ty menlinet after = group_enq_line->i int after_ne = group_ena_iine_no ant gxpsize = (group_end_Line po - group _s // wake the ola Tines nistory fomiine* mi = group_start_lina: nemline® min; wnile ( TRIE) : min = mi->next; Gelete =i; $2 (mt =< geoup_end_line ) snaxt;//aay be ruil! +4; cart_line_no + 1; 13 Manipularea grupurilor de init an // #3x0p the display Af ( group_start Tine no <= top line no ) Af ( group_ena_lina_ne < top_line no ) // top_line unchangea sop_line_no ~= grpsize; 1) Soz_line uncnat 3 caged. 1) cazy unchangea else if ( group end line no <= net_1ine no ) ant nilitegroup_end line no-top Lin 228 PALEererour end tine no-top tine nov; ‘top_line = cuz_Line = after; top ling_no = afterno; Ae ( cary > nilit ) eury -= nilit: for ( ant) = 1) ynext; else eury = 1, aise topline = cur_line = before top_line_no = before_no; eury = 1; oe else // end below screen top_line = cur_line = before; top_line no = before_no; eury = 1) 7 else 16 ( group_start_Ling_no <= pot_line ne ) // top lina ( and top_line_ne) uncnangea Af ( cir_row < group_start_line no} Hi // cursor apove delete 7/ car_line and cury unchanged {Wok sep ‘oun no gumszeNN BeIEABOxd 1 9p axaplyou 1S arapiyasap a9 te3c0 no sszied won 16 avis} wars cron andaout ey apun ‘oxeun Imuam aap HoBsow ys seFaxd Hazuns ume “youn eieose 5) 80} ME pos op sao UNuOSnD aye WEIS nvs nda: ts aut ae aiado nme 2 19 907 sens gs We 1S 92198-4o-pua I$ uaasas- ; oe Tull ep Joqunanaé Basajpariew Eb jado qupunuiSoud widnse sxepysoad ya} BarRUEUINDOP ¥] winle ates ijouns op ap una vy 2) id quad quoroyNs arse 44 8100p ‘100) TIGA We foxtdeD yse9e Uy wepisios ure i auido urea, “nsOU yw 99 B99 Ba—ILODP +4) DIESSF 1 we “oqemagya red pwd w] Touo%sep0sd Jompo aun 91908 yo :stns ana) ap jnloupe ap tupupul Je}audoud an wt ‘(gleiunau pursop 25 spur amv ands 18 yssodo 0) aso%aus ap 1oerodo yoo ap iuasasput wamesie Wzpruae waund tA juts ariezodo 0) Hur, ap undnsf Biers waand tian ‘poo 35008 wane ian PUBS) (yaxewun op sury FUT STs pron eH Po Tre owe 19 = ow putt axessdnosé Berg .dnozB BUTT ou, 398 // feateda6 a oWeusy Trex<-eTTs we ¥ eury pus Meu eynduoD // seBueyo Surmon // motea st dnozb este // tozvsdx =- Kino peSuwusun oUFT ENS // eaeTeP note aoszn0 // eere oy + eupt des - of ezogeq = Azo lexogeg = ouyy ano sgeTeP ur zosano ff i ( ou eupt pus aeas8 =p mor ano ) JT este ‘edn Sed 540 WieleA ES zw Utilizarea multi-fisierelor fin acest capitol vom tales ie (te ta or iz at se mere ‘Tio mmm te olen ate progam a Voi ard et ega care obure mala pen face seri tum pivorinic re din es ie a Cat timp vom aborda pr ee intate, wrmagareelemente sefimbajs m= ae Functiile din STDIO.H, fputs() $1 freope 0 Utara i ara de ptr iar Guttarea veal arg 3 age ent Jinta de comand’ tia car ne vor: ocupa 51 de iti argumentete din vy u excoutare “agtigul in vitezii pentru functiite ie tmbayuti ++ Sunt numai citeva subiecte speciale asupra een vee complet asupra +14 Utlizarea multisierelor texte. Singurul lueru pe care nu-l putem ined face este salvarea textul peril uner Acesta va fi 4 ce vorn putea salva un fisier vom indica editoruiui cum si deschidt mei mute fisiere odati, Vom incepe cu un vector de pointer la obiecte file_win care ie sa VB dea o muttime de idei despre ce puteti face cu C: uerat cu un tablou de potter la obiecte, vom arunca aceasth structurd si vom adluga un reaga muanci, simpli deoarece am te Webule si aveitizer cf vom resiructura total i ‘estea coa bund este oH aceasti operatie va ‘put. Si Ineepem, SALVAREA FISIERELOR ‘Asa cum am promis primul artical prevazut pe agenda noastrd este salvarea lor. Trebuie si vi anunt od am aménat aceasté operatie pentru foarte tirou pentru i Motiv cd aceasta poate si v8 permit sf transformati util dumneavoastr’ fier de test intro amestecaturs Daca fisierul TEST.FIL a supravietuit asa mutt este si pentru c@ nu v-am ofent vosibiltatea de ant distruge. © operatie de salvare este in adevar © bund alegere Inainte de a merge mai depart. Comenzile de salvare si parasire figterul EDITCMDS.H, pentru comer ferminare’ Am folosit FILE. SAVE (defini ca 1601) pentra area edit; FIL QUIT (1602) pentru a opr: editarea {rd salvare si FILE_DONE (1603) pentra salvare si apor pardsire. Adtiugay optiunile care dau sens intenfiilor dumneavoastr 4 adduga opfiunile case corespunz’toare in Fanetia edit_emd() din TECMD pentru a returna mesajele introduse. Am adavgat 0 nous fancue cate este activatl prin CtitK. A doua literi S, Q §) D activeazt SAVE, FILE. resnectiv FILE DONE. Am adiugat de asemenea F2 ILE_DONE) si ALT_F3 (FILE_QUIT) ca nou opjium case in plain_cmd{). ina salvare! salvarea la “done” cu valoarea TRUE si FILE_DONE, editoru! se opreste. SEE eee ——, “SaO"L Z-pE Buns pow ggor] un mene cri yaBunsey uten zero Spuma rows no sats un a3Sasop 28 BEC. rondo SBMEpE 98 BS E SS i “pues Y2y Tan nousyurjsi arasip 700d “emUSIIe “sean 1] Tare tng o we *S91K4 0. xo pun azaqyouna Ys ayy nou Jaigiy UM oy anv essay 90) ap AUOE rua sH2 hn SAPP 2 INOW Sao a ee I Suna ww wy ison PW areawinajesed fF S (Qsinaty 2903 99 WEI WISHED" FPOAEy 2 andurs o are naw yruatSit {HEAP [= ao pooo nutigo HY “L'L apiyasap v euyusd £4 Ht reafiosd ysooe He]n 90 BANC be epeyano }as0Tes EL oTHF INO Tze, 1530 Se ee ff ert yne "29. 183983 et ( errgare eanas Le gate Tacky WURGOF @ OTIC ATT fC eTtF40 lssoTos | (Qurew 39T : qquoTass> ePaTeUTH ( 9Tt33n0 ( ertzane er “dda L:-vb Guns UE SEEpaNe ata Deans TFaNe *,,9q,, )sandz a ga yo eo now reten ag) “t=pt ynsunsy wy TENE dL rp etansbln SEsgd 18 ENSEOATAULAMP (HD roo o asa srs Hit 2asaLOG BOI HN WOH i yu anuad aopenasuoo 800 aad auenes ap jejouns easyuewe|dul| SC otamane “iy deans FL eTFFIno "yey 1eqndy WA, 1uedes = eTEEEKO cd TojaloerHin eaezINA FL Fea TS ced HATES ane ‘38 invaii C++ pas cu pas Listing 14-3: TEFIL.CPP. next-oprey = prev) entitle: :menfile( FIERY tf, chazt nee } file_pane = new char| strisn(nanc) + 2 1, strepy( file nano, nane ); text_eile = tf head_iine = new memiine, NULL) Ii ____ readline = new memiine; NOPE) MA Uf Apot ne intoarcem Is TE.CPP unde sd->sval() intoarce $1 string_dialog. Func ‘manevrim in con constructorut file_wi ametra de tip se va adiuga acestura di wun par fname”). Apot va trebu! 4 adaugatl un argument de je 38 te face in TEFIL.H $1 fora s& Va spund ce lipseste igierul in memfile. punénd un punct de constructorul file_wn. specta abiectul meme. 7 “Acum e& avett file_name, Listingul 14-4 arati o metoda file_w care o putett adauga la TEFIL CPP. nd programul se opreste acolo, save() pe Listing 14-4:TEFIL.CPP soturn ny void file_van: :file saved) : * outfile = freopen( + rene eee tslacnenes Swe", mom_file-rtext file); Af ( oueile ) moniine* ct = men_file>neag_Line; while ( el->next } ef = ci-pnext; Eputs( cl->text, ousfile }+ BE (el-next ) 14 Utilizarea multsgierelor a3 fpute( \n", outsile ); 1 else message ("Could not opan” mon file->cile mane ) ; = : Memline::memline! memiina’ after Line, char’ ext ) eee eee ee Ee case FILE_SAVE $1 FILE DONE cu stare, Cand testatt acest cod fit sigur acest cod veti avea un editor de texte iny a fost 08 ack sere si nobles te de a se executa fp punet de intrerapere ereari, dar smu utiliza niciunul dintre fis ia departe,) ‘mai und de a face o salvare consti fn redenumirea fisienutus serierea cetui nou. Va las si tneercat existent cu BAK si prin a chuta in STDIO.H o functie care si redenum ‘nfocuirea ei cu BAK. Avet toate sansele s8 faceti o treaba excelentd daci manevratt coreet aceste girari: FILENAME PILENANE 2x7 \DIR\NANE, \DER\NAME. EXT DIR. EXP\NAME, DIR-E\N \DIR.2\SUSDIR.E\N.B (Regula este: o extensie urmeaz dup punct daci punctus este cu patrt ‘aractete fata dé marginea areapt si nu este urmaté de backslash.) [mbunatitind functtonarea “editoru! in motiv nu justifies lasarea fisteruiui deset monotasking cum este DOS, un sistem multitasking (sau chiar partial Imbtasking, 28 Windows 3) se dresteutlizaren sea ia in timpul edi imeytuTs 9489 eqse0e sxeyo ze ep norae; un ey xequtod 208) 10d ag “siopioq wud oyunu “xog uN NRUad NEVER ap Lund! po woundnsoad eauapaoead no eotquapt a3ee eaevece / sivoqFroedeou ounteuowyp no novae3 cntjeds 38202 onngo erzre ® nsquad Jopi0g preoe Wo Booye wseade vaUAUEASE oC} “MjdwAXS IS99e ‘aqeen 0 zea rojDap eIseaoy sreuo g ep 13 uN ey RRETE aeprOG // ‘1g)xepz0G ZeUD smdwioxe 8q “esse india wzvezy In amo eesejoap s0xe BAD|NNUIS 29S9 BULLE] ySEDOy “+( [jae eeu ‘o8se gut jurew ut "esv908 o}s9 (Juew a NeUIEIEd aN9s # ap ale> HEZIINM YEU vO) ev Nan op alguien argo isayUIOd #9 WH pstmisuen a LS3, “6a-19 Bseae 98 PUPS “(TL LSaL d $0q [usidut0d -pysuaot fp rianuns puBD [191323 IWOHIOAUS: po ngquad 16 ypUeWOS {500 BOUEUIOD 2p UH mi runoy ‘}901go 94 wUuaLI0 oxPUEsBOAd O ys 1 ph WW ddA. Ip BSANS ENGST, nv RIN BH ssa 9p a19pmos99 90 i Bie vareniard youoxsis PaLapIKOSaP Fr yoTaNaIsi4 yausa1Hosaa inp “azeAS 2D ‘on auvayes ap atioung guna o Hane Roe) sia 99 1§ a90}0 BA 29 BOFIAA W 9p vayTO a1Se TISLAIE ver eae ow Bed nS Ted 4D WERENT BS 422 Si invatien C++ pas cu pas dintr-an numar nespecificat aloce spatiu pentru pointeri rurile de caractere c&tre care act ‘91 pentra argumentete liniei de coman gir de caractere contindnd drumut si numele f avem: H+ ereeazi un ¢: \ECLITE\TE. EXE Cum acest argument este totdenuna furnizat erat m doit {. Numele programutti este un sir de caractere . separate asa acestea vor fi alocate de test care examineazi un program T Is eg pentru a explora ia de comand, wy trucurt ce pot fi reali fa wrucuri de auresare pentru ar i de jocuri de tip pu fnts-un program real 44 Utilizaroa mult-sierelor oe 423 i pentru a accesa cont site itnutu! potnterilor ta pomteri poat sata pentrs fisier al carui nume este ant main( ant arge, chac® argyi] ) startup(); sf (argo > 1) pane = srgv(1) string diaiogt sa = .@_dialog* sd = new string_dialog( 1 < bse ) gt oN jangzeas (ase .aeus ‘9622 aut juTew yur dd'SEL-P) Buns (anazea8 PVA tamay wingex sastva umngez C2 < 485) at Css )errun (8 sxew pawetq”er gut ferrszex uxex £( epow ‘my yuedog = ertyyex fps eaeten ()Teasc-pe = mu (9 STHa wodo y ‘mm )boTer Burs3e mau & pe urebe Ary // fyeoxa (sue) ) gr fuk enero ‘sueg-uk = oun 30t ( somreie Raa. “aed 304 ptnaa. Joursek wou = uk sou sok wee) ( eTt330x; ) eTrun peuedo 30 31 ‘Butizy dey // "( epoe ‘wu juadog » erysa0z edo // fa 40|820)/Sy-RINU! eareZIAN Pl ips syeTeD. EQ Tesec-Pe = ( ,eThe vedo, ‘wu )BoTepP burrs neu = Pe © Gey omerast ) aT peyrddne you ZF uu 39 0 SoTesP osm // forrsiez sgTa cyan = pe sSeTET SuTEAS ( spow -xeuo wu yzeuo jueds"eTts «ETL ty uanaez tor rs daO"SL 19-71 BUNS day ‘Ise poo 15209) (¢yeurunny woud fuioo 2oty WA If NUON S200 - BISON suotiouryy BS poo nou ys90e Bo NuAUAd ,OUIEL, Ui OF jn aye gop uns Few poo 3s99" ap Bley SMG UT EEE eee eee eet Cersar ) at 1 uk, ‘omen yusdoy = eTTIUE «aTTS tps aeTeP, FQ Tensc-ps = omeu (Ca BTHE wodo ‘Bena sed +40 WHALES ld 428 ‘SA javatim C+ pas cu pas strnopy( name, acgvil], strlen(argvitl) ). FILg* anfile = file opon( name, “re” ) Af | langile } saturn 1; cnart titie = tatieize( nane eli vedea ratiunea copi stmplu s& nu se fac aceasta. Ar fi de asemenea mat si fisier care trebuie gestionatpentra a dan earseter prac Gestionarea caracterelor Tab Una dintre cele mat care trateazi ca unui caracter tab fnseamna zonei de tab, ar Backspace sterge ute aduga acea ver 44 UUlizarea multfigierelor 427 introduse dectarz funetii din Listin le corespunzitoare in TEFIL.H., inainte de a liza cele dou’ not 4-8, de ta sft Listing 14-8: TEFIL.CPP momfile::-menfile() getece file name: ficefine TAB »\x09' fdafine TET 4 cart tap_exp( chart # ) ant n= num of( TAB, 5); 46 (In) return 8; nar? 52 = new char{ strlen(s) + Tset¢ ); enar* zero = s2~ 1; // char pefore start of strang while (8 6@ (( #5 )t="\n7) ) t af ( (ts) t= taB ) soatt m Hast; else for (int a= ( 52 - zero) & ISET; 3 <= TEBE; as) fenie = 492 = 0; return zezotl; ant mun_of( char ¢, chert = ) ant n= 0, slen = atelen( =); enart op = 5; enaz* ocp; while ( TRUE ) “1 saKEo en aut seu 820r sevEa ee eUT3a_y edt title iseomien eee a “ado... L amoR on gs ‘WA 2Ig ayoa!go By ua}UIOd 2D nojq Mmunad pprosap Bs agus 799258 (Jureur 9911 3489 2yraPqUIAS BEDR 6->, 2 arp ap tumanns toun mi} wots9sa es Lazzioasd ayso00 no (€ panoue-ityez0("zo"s05 {1 edeusc~(€)87°C 507205 “uy ~ § edeus, yz3urado COE 1200 wou jejetel soryes paigo un by ojqeH Imsa0e ye aUOIN9}9 2x91) lod aou0 HezyiNn BS Hetop tn a OP tna ese rez HF ayoe HP 8p eumaNNS eisvaoe Byse;SOp ERO sre eT TRICE OT yy # (oT) 8xeC~Z0~ 395 40 sdeus gut ize oun eTAas 3849 rountos aur edeus ur orang. eC ecers et sere at 196) UA “uLop asoréyy o1~> apryas. PI uatulod 2p no}gry indy ap ete ap union Ha}Q010 oe . "U2]¢010 esto aaoeas 38 aingan auowow 8298 uy -nall aLmey aia axa 9p uN™9]3 mona 4TNRFE ge tunes apunsa’eunygeid esl! ge taswotcny “Ms teu BSUDSDD 09 w aguIndo a os ee DRAG ateGrape oinaan Yan n> 18 zy amnaiay oe go 2} 0 B8 voteitien THdUOXS 9p 80 6 wauto1cy 49 ee Dosen td aden “nin no wom op unis burn ‘WezPERUDE pans 0 upztyan 2192190 94 yreWaL6 axopH S66 a ey ee SN 2A BetH0 atepioge 0 w 9920 oA TH Sles=ta0 #1 Wed 2 no}ger un wused woind en areomuam 1p aseaoe we JOVDiogIp HAW BAER FT i i aq “toiutod 29 nojga dn ap aiep ap yaMons o pupnsgd ysIMs |MPOD NO 9ANIP ‘adsous tain WIRE YD AU !n]AUONPS BEBNEDe y eA 90 yaRRS~N Yep EWU UR fi axaiSly auIM Tew ¥pIGasep BS [IGEARD Alf BS aIngasy LOPOUE 1x22 ap sORIpO UN) Jojas0)$yp-pInw eesepiyosoa ap atiouny 0 auos Sy “oiKa gece am ingeaye2es gen oxmoew9 9 “gIZMa 2p 9¢ @P wanpwNoude asoxSato o ~ qv 1ojo1a}98z9 [n90) soda 69821 UW aeI asayoer mo Saka ELpOT JepMEdxa Ue wsvOde yeoLeOUL UIE pup) Qe) sjasersere9 atwor anjoajo WeeepUEAKD wIsDOY AUL [MUONS puRZ! 6 dO NIAAELL asvuad atdoo 0 tia9ey wapnyouogeu Wap “nyu 3Seq un mvag ‘uapPaly> guy 219498109 2p outyjntr poep aqinas reU seR|a MUI FaRP "PD aLNAS 99 [as ¥I UL 0d BANno9sUo> 1S lounge “arsauduioo ap wresBoad of wsupoyea op sis Bye un gus nna re uno ve PEND aeLE ES UaISaOe IS TIL 1291 pod INOW EzIIIN BA 95 PUB, duns aug ou1a9y ayso una aoUy nu ‘ammo jnpog ‘spepupdxe amngan aivs qe axa1seIED UNS aU EOBD ¥yEIpeUM astSoF 0 aUt}GO ‘ ranad (}o"wnU elaUny ySO}Os UMP g> BION as Y) “4-49 FeNPaDaAd poo nyduNs UN “%9 ago TTaga FO BUS // fu uxeqex idoo.do = wets 430 fye03a (45) ) at (weqe ‘9 1d payouon (yrE0) = do ido = 0 ‘sedno sed +49 wierd PS ‘sa nvatim C++ pas oupas | define MAX_FILES 20 file want fans[ MAX FILES 7) I ant active fwan = ~37 ane maia{ int argc, cnart azevL af (argo > 2) ST popyt none, acge/2), stzueniasgy(h)) + | pings anfile = file_openi name, “et” > ag { lingite > return 1p char* title ~ new titierze| name + sear ol = new file wan( tatle, anfile, active fan = 07 gesete tities geioset infile celete fens [01s return 0; \ Trebuie si se utilizeze depanatorul penta a yerifica programul obtinut, cna nen opserva afl nimie fet, Dac se pune, un Pure! deoarene Tina care aioe zero ia active fit se va putes ols rarerep genta opine mformatl despre suctra de date de ipa aay de posnter a obiectefile_win. "Acum daci puter si departe gi si deschidem mat mt implicite pentru ca ferestrele sus dsemenea modificatd 1ogica 169 eschidem un element din acest tablou, si merge ma 4 ina acorda coordonat fageze int-o cascada, Trebuie dt pirisirea unet ferestr sa YY deeit. in cal fn care wltima fereastrs a fk conducd fe ‘inchisd, fe timp wer variabila active fwin pentru a a tablou in ne afl ate FILE_OPEN (ai meu este 1608) prin a adauga mesaytl in TECMDCPP, EDITCMDS.H. Apot adaugati una sau mai multe comer 414.Utlizarea muttsigierolor 434 tnimit acest mesaj, Eu raspu eet, und Ia Ctr#K, E (vechea comand din WordSear) 51 la F3 mat departe faceti ca toate aces mroaiseflses cores ita file oon. file ma cu instructiunile extern 7 TECPP. Pere Listing 14-10: TEFIL.CPP ee void File wins :tite_open() active fwints chart nane = FILBY anfite = 36 Jo = fle open( name, * ag ( finfile ) mn eae actave_fan-- retuny \ cnact title = now txtteaze! Pronef active fens! now file wan( ttle, Goines cer eae eee PEE ote tae HH Listing 14-11: TEFIL.CPP. EEE Eee eer Eee EEE ant screen nexgat = 49, extern file wint 5 ans (}; exter ant actave, fun? fa eel aorta Since how Eitiesast amas Saasety, "207+ 2921qo 9189 proap aIpalqo so.914949 89 aingasi 94-99 199) ‘areypauurayw da0x9 no Ywojtout [2 ¥] ¥a|LOU9 18 Bf ap tod 2189 0 FOIU BISIXa RR now 1¥F axosop 0 ayeiowonwy 211803 aAnOw MIG BS "RONRIDION aISD vIjes2dD jLore INZw> ISO eISaoR ‘SIysRIDE Gn Bp a}89 yrEINdox> preywOWEpUN, PD poo a1198 ¥ op a]¥9 Bung 0 2Is9 ISVADY “piy>sap as auoKE Yoqoo ta saaoud asa0y “Ouipa ezvorode are> Wrrajode (ups uporoyy, “aaisinoe: Fe opryouy 96 18 yruony gunn Y¥ -Quado”oy::ma UI “QUITS UW “ezeo}ade UIAL2]Q} aoronr}suCO 0 upiyosop ys asasnay YOU UINa]y ROU un apiyosan. wevajade Cuipa “sai8y vaqlop je apryasap 8 pur ‘pepaion wy 139 ayo rode weeajade Cups ype 2p zojuntiow sIMoaxS azesoaoU aporaun Lf "Pow BF omgan 20 (pe rorfoury aunds auvo iouy "vafade MyS mUOIORAUCD “WA amse yzva.0n) us a Bs Basa nu tep “a vvaseurusa} pnseOAR |, w83] 10, “azwoweyaSu J0Sn ¥ aywod ejseaoe mp “yUaIN9 yp ap taRJOnUS oeyqo snxpooy vowoIO}! wud sayy uT-nUNP 11891 vas ‘24998 TUHA Bo Lopen aIBod a6 16 auaIsY ap snugUUNU FiNBLOdW ur nu gseafe eHiMios you japise WALOL LVENLONYLSAY ANIL INYOLIGA SiY9S9 te-o} axe od sojaxo18y & Fiuesnfits ut PasopHyouy BI WiNDe MIDORI RS ¥ sinapistios 29 9999 tie “sevoqnot9d 1uns vrs990 a sajna Yeav pik. sora "40 anu TEU op Kk "BS osalop yo nmuod 1 estou ap joist 0 91108 10% ny "30 SN FWUD 9p e1UasOP 3805 v nu asl 8eia0e EoUP vapaA w natOd fore areoxsi9A o ftU asa May oles 2youun saoqos azo Forrp 2p aioe ap if wt 2 (odo y4p lode wa Quodo™a oy agus stom FC ae aan jeeds 2 ( sxueta rewew )Adoaas [iswwete a3 01 pezte // :[oglemeu zeu> parson guiaa ozo (uadom aI {num age nu Boup sop Jo¥sys 9p oxsNN UM 2125" yeds azoiouseo seop pupuriuoo [20 9p qopIp 1S un eh juoo row nu Bs BICUEIU 95 ‘j200 Quodo'¢ P ,ourey,, musqiiog 19 sep “201 owe|cwo9 op TOLER alojaran 9p mug, 9p ouuna un 2400 # nzUOd Lido BA 36 nat ZED =f Jas 1Eeyooe gplyosapad RS aIBDUL vA EEO eMop Y “HO BHOP ap (uado” tivzyan ys sivoxeouy “weIAOP eu By 2 18 fade e=qL0D Te Tore ynoRy 160} B aNEO ydUS BA § “atieDO} woe “wougoUs a1 YS ynuresBosd 69 ‘989 3489 {npOU ncn ey Jo1uiod un 9ys0 § BO [madey Bors!oads *_ EHD Ina = srueta yzeuo O7aeae peoTageata28 (Qusde etsy: uta eTTs pte, “eiepT In way i$ no dd 2-7) Buns weer ase jad enigngunguy aunIsion Q od asa yoep “apiyosap uodo api: wHoun, fie00] wIsvad" JOP ‘nijeds afasoHoeIwD NOLFE 9s iso auieu nsayutod 45 suunu un tO 2st juds araqoena 9p 18 ul dura v-s wIse2oy uy! oe e| atep aquayyp asizos yuns azEMU /BUTIIS TETATUT, = SAFES 1BQ0}8 anu 0 2389 saswaoy ‘Quado™ 2 savoar uinoe WEI IoIN. Haep Buu 1S STUDS gado™ apy FO wade iluinu wpoyew 0% i qoud me palwosp umnoe WYIAPISUOD YS suum a]ty R}SwaKO ap vO “asejo FOUN puBUIeEce gf grsads ter sojarerSig-pin Baeza FF Sodio wed +9 WRRAUT BS ter satnvatam Gr pap cupse | 44 Utlzaroam asa jerelor pa ca vedea ch file_win este sors cind © _lastuciunes continue este os instruct rea break piriseste lorul poate de asemenea ¥ eae mstructiune coca B_DONE), iteieisners cata ‘Transferd control instructiunii foop (do, while sau fe mat mtertoar, al si pentru & i {in acest caz sare peste apetu! la metoda edit_do(). ea aul toda file_ wine) au face pet eae fancier eit). Dac vor eit_do() va rm fm contoor cota, edt ee ent va fi fundamental modificata PP se scoate ape Ia edit() care se aflé in constructor fle_win, inceared rularea acestui program modifiet. Veti avea un meaty ne care spune ef metoda edit do() nu este accesibil din control(), Este coreet, ca de ficcare dati. Metoca edit_do() are aributl private ‘Asa cum 0 clas8 are atributul friend tot asa o clas poate deciara o fimct cu scest attibut, indu- astfel acces ta membri clases declatai cu private sau protected, Deja am folosit prima dintse aceste forms cum se arati in Li atilizeaz o noul instruct class ay_ciass Listing 14-19: TE.CPP i Friend class needs access: // clase friend + eytse = new tituerso( name ty char’ ola new gile,wint eitie, snfile : | aearol = nex file.» Soeave twin = Or ; seieeerthtues friend int my fune( int pl, char* p2 }, // functae frien Este nevote de intreaga deciaratie a functci, deoarece pot exista mat multe af eu acclasi ume dacd se utilizeaza supraacoperrea', pentru acest nume de control 0; | fimeue, Compilatorul nu ar st ce si faed cu urmatorut text return 07 | 7 | class my_class void control () friend my func; // Nu mezge.Confus pentru compiletor ‘ sin control” nassage( “in ant enc; 7 ant cone = FALSE? eursor(); urna [active wan] “>show_: ‘Asa incdt in TEFIL-H in definitia claset file_win se adaugi o linie ca aceasta: end = adit_ema(); fe (ena == FILE_OFEN ) ‘contanue; frien void control (); Acum avest cod trebue si meargi. Acum totul este cu o structurd interna total review, done = fwinsfactave_fwinl->edit_ao( oma : b while ( !aone ), msgQ)care au fost lasate tn diferite comenzi de editare pot fi de-asemenea indepartate. Nu mat folosim deloc eit, 258 c8 se ponte de asemenea sterge. in sfirgtt funcfia msgQ insist este sled se poate renunta fa aceasta celete fvans{0]: ‘sure, message ( “outta here! + omy enart mode | [leeesseerseeeeeeed ener fise_epen!_chast ay "eae on ‘vung maison ‘oWoHAop rw grzeA We un juuorido iI Jojeioaigo w upeosea wy varezese yo sojaiuioutg Jado PINGOXD z NAO wNTeLD} od ep "300190 avoudan uoqea wufise nese try Sormp of snisone are dnrdod usp 9yS9ue}Sour area “Boy mies eee nid 1 30 sramrgo sien oa wuongow ase dndod ap tarjetas enyaiogme uodns mgaIqa vy} op soatge au sung FY “ANSIB} ap apesse9 run 3Y3ISI4 GNYNILNOD YOTSULSAYAS V VaVOSWO NI VaNWZaS¥ oR uinoe td SiH8 v axe9 doo} apyte vountiony : if arurasen308 i urng"eatace jeutay esores euop yt "{ pw )on7y1pace twig" eataae/ stitm ctsanoas ergy 6 YSNPONUT B ISO}OJ -Y VA soHSy-nyMU op vaTE —__— -anoaxe uo.) “nizsg) rem ot0Aau BoAw God BoE Bsns NOISY UL ‘ibuedap rented poo vy aivod af voUoUOSe 9¢f “IaHoUNY smJNAiOD & BALNTUYJaP wasaIONS jaW0o BIS aod 96 Lody “jy 19TF aUTY “gf “9 nop nuvITBNOD ‘u gisuoo etioury 0 3B1os © ap ting 3189 O BILVOIONI ‘880 fio Sed +45 WEIRAU FS ad 94 invatim C++ pas cut pas le implicite inteoduse prin #define (care ar fi fost o idee TEWIN.H asa dupé cum rezulté din Listngui 4-15, Cu Jiocuiesc constantele corespunzitoare din deciararea util chiar de ta aceste defini cconstructorul Listing 14-16: TEWIN.H faefine DIAG_TIP_CLA 40 // Black on evan feefine DIAG DEE TOP 8 HdeZine DIAG_DEF_RGT 65 fein DIAG_DEF_BTM 15 faefine FILE_WIN OUT_CLR 126 // Ho yellow on waite febwie urmirit fereastra 1g dupa ele recompilarea Compiling. Se va observa c& toate acesie .CPP pontru TE, TEWIN, si TEFIL, deoarece acest figiere. Cand codul obtinut functoneazt nu i: 2 1m adaugat un grup de constant pentra 2 stabil je win, Acestea sunt FWIN DEF 'WIN_DEF_TOP TEFILH. Aceste constante sunt apelat din constructorul ci nH LFT, F argumente pent in TEFIL.CPP. $i fcut do la inceput, ‘estate nu se va observa mici o modificare ce comportaner ‘Acum suntem gata penfru a pune aceste constante imp} mn consiructorui file win, in TEFIL.A trebuie se file_win, aga cum arata Listing «din TEFIL.CPP. asa cum arata Li op cconstructorulun defimtia constructor Listing 14-16:TEFILH public: File wan( chazt ile nane, FILES tf, chart nama, wae if = EWIN DEP LET, int tp = FWIN DEF_TOP ioe re © FINTDEE'RGT, ant pe = FWIN DES PT) weide_an) Listing 14-17:TEFIL.CPP chart file name, ETLEY tf gne 12, 208 tp. ant 5t, 4. utlzarea mutttgerolor ce Gislog( File nome, Lf, tp, we, ct, = nane, P, bt, SING_bows, FILE WIN_OUT_CLR, PILE wI_cow o1 CLR _Cu aceste modifi test rebut eexcete enact cna loeta penta vn fie win ata man sind ar cam mare, vom: don 8 stabil 2 ve ©8 totul a fost realizat intocma: si CPP. Sa céutém ust care asigneazi te jou extra argumente in apelul constructoralur pentrt ‘Am adaugat uray 5+ 2eactive_swia Aceasti modificare va tee muta fecre Fereas care ste deschish, dou spa eo ioemat 0 cascada de ferestre, dar 7 a tra cd suntem pe drumul drept, dar este suficient pentru a ietodii ta coorgonatele ferestrei cures active $i amin 4, tit pe i Nase atid ns margin din dreapia sau : augh daca ais arn se foloseste fereastr Tistngul 8 de dimension, minme, Lis sodul care rezolvé probiemele discutate. oe Usting 14-18:TE.CPP Ger iting ATER aeeeeeeee reeds secede HEE ant 16 = fwane) ape tp = fvins/ ant rt = Zwing! ant BE = fwinet actave _fwan-L J-pigt; active fant |>top: actave_fan-1 |->rgt) sctave fwan-1 J->ptn; LE 40 te < (run Rot ~ erie, = L_RGT ~ FTLE_WIN NIN WzDEH) > tp = p< (REE EM — FILE WENEN Hae) > hi eR Wo Men HEToRE) > rewm ree GUERGE yt oe DE Ww be < (FUE BE 1) 71 - OF char* titie = new titleizey name a sman( title, infise, name BE tp, FE, pe) ’ 10d gproa ( sptoa dusnd gut +) xoas6~ 1 exte aut )yoejed soyrand 1838 4 yDTON _ dog aut forte soe3s aur penoazord : yeessd seero o v1nx eurzeng 0 asiva ouTzoPy Taha UTzEPY 330° // dda. 36-71 Buns : “{osip od ayse nu wo ¥be “nou aise m0) 9 ‘qa0'L no wiodaony ‘vezi uns puRD FURR Bars 92099H, Hy {uy eiTaRDOEE BaraseS rode aISz "pIOA taeIUIOd 9p FANS o RaRAINdHBLH HOEISA USE) ‘yp vA yoUISd SEO LIND Se “qeog!pour so8M 1S Jan ayo poo MUM vaxoLDs MME ayRIDg!| PISEETR “aH tafe ap ag “miBaqiauud asaoe op eznav v 9p feo osvos94 ‘POU 7B Un-sul arwOTEA wade BAIL B ap RIEIAGHED eH {mneAUOD aIs@ aye ImImMUDUIE|S waxEO|VA YOYIPOUF AU aISIAAUOD 9p ja;I5e HFIP BT ad easegzoatos —— Ho // tad (qx2uD} = od fad pron fod ,"zeyo :22}UIO INYSOOE ED! (sea) atstaauoo 9p may mymuorepduios puorUaK arEod 35 pIo% zon leeial a “saer Fryuos un gorda are: oe Taio no a ungine gooe ea nu aR tf see ees fad .ptos ‘yontod ye 90120 vo eZRATLAN aS PLOA HaeNWIOG pton er taeautod ep Avzre // {Jead qv pron eT ZequTod // fad 2ptoa Julod ye 29140 #9 BIEID3P 25 pion Hsewmeg “Satadseu JojoqlqeueA wdNse L 3 © wu nk Bo Irate sausiod yevasasunu 109 ESE} 0 P 1} 0 ot19$ ayeod 3s ag “suulo]qord tassege aye arepyoae ap 129 2H Ado} fiut wip yuausoja un WateO% liad BA 94 308 ‘ap “phot afiusado © vngpe WoOA “FANS syenen eg “eroutey HnusOD es INTE TA ‘uso puny aIs9 TASRODY LE BN ojansaxay v z9p4K]OUL AP WHOEP MOGNIM Ald dil 30 SLOSIGO 30 VALS oO os vy fortouy wa8OW BS injos o 1sy8 wre yoep soumnay 12 re BO up anesonnitueg "28]959P aati 9p BPLOSED 0 UNE aA I HINIAVEL mp cunc-aqg wsero Us puaLy da op sooo" (pT wado™ 2 9 now Isoae HoonpOrUT squBseuT saoffnppe inyNsoH8 san nw en ea ot ae Dpow ete “wu yzeu puede TTS -3TTE soralsieippimu Barezin Pb ‘Sed ia sed +49 WRTEAUT ES a ‘SA invatam Ct pas cu pas vordt pull ( int iter no). youd Look)» int exze()( ceturn toptl: + int main() // pstack test routine " pstack* ps = new petack{ 3) Snar* ptr = new chart5] enact pi = piri, * p2 = ptrsz, * pd = perr3s pe->push( ptr pe-ppuen( Bt ps->pusn( voids p = pa>pull( 1); p= pe-pull( 0): p= ps->Look 0), pstack: ipetack{ ant size) stsce = new vord* fszzel, stack size = size: top = 1 ' petack: spstack () alate stack; ant pstack: :pusn( voue* ptr AE ( top < stack s.ze-1 stack(+#top] = ptr: seturn TRUE; alee return FALSE; vend petack: :pop af ( top == “2 etarn NULL else 414 Utilizares multi-figiorelor i4uti fisiorel ro return stack! top), 1 voad* petack: :pull( int item_no ) if ( atem ne > top ) retiien NULL, youdt ret = stack[ites_noy; for (ant 2 = item_no; 2 < top; 14} stack[i] = stack{it), top return ret; vous pstack::Look() Af ( top == 2) return NULL; ; return stack[top! ; J) end of t.epp Se Este un element nou aicr. fn metoda size(, definitia functiei este im: Accasti abordare arata compilatorului od aceasta este o anuine int foo()! getumn 1 return foo(); // probabil au este un apei ce procedure tistuera ara o oe oe epee ee vere i fumes | (a e0ede erty 30 ano, }eSessou ( (rin usndg-sutaz) ) 32 (13s usdo" errs Broa ( etag"earaoe ) eran rma = wimgTeasa98 (QxeoT<-sutag (gute OTEz) ‘yds 237003 juny 0 “44 ‘3189 Jno 20ey BA BISUATE BI APIA HA, _ putmyTentyoe sts" e TTD EC Santa am jysegsd HEU = SUTHE p1ORIED sgasvpor soje we ng) 2] soquiod nda 2p ucquiod 9p 10d ap Aeuie va jadaouy -yans dia ap 290 na LiayOd {58 navod yapBaxd wionuns wny “pnseONFaUTEMD reyoap ap oyEzundsa100 m pe larioury exdnseap ayep 9p vanyanns 10 Impooiosa I aoreonuy waind oA BAe fined qa", mnuoréyy jryadsouy 2] aDniouyy HeBmgpe rouy UL (9ereue ef Hes rs “eonouase ap "aieo ad iaSip ME ar-syuy Hound aj gs Boy" toma ‘wows {ays ap advoude snd wt-9] Ng) ‘gdO'AL UI ad. soreporous suigop tivtdon 1od'y "WAL Wh 4d HEP HOEISG 1OSE eddy ty s1UGO sIaq}qeIEA HHesET) “eIsaIE ro amnoxy oygatugap 16 Soyainy [-¥s eswsoul "msm [-E nunued du ‘op wanxa S169 WeIAoxd I6298 YO BALBSGO HA 7 380} B amv BaTTOjEA ABLAxS “A}oUoxa 9p “dod wrfeiedo vO ox sysa yuoyodusn 21s0 95 “siuEHOGUL suns Ru BSouPR JoIsD0e are ayterMo AVOTeA eA puRD toone ap “eo s8aipb pUBAW TOHMIOC oSANKMAN aS FAROSEY a5 pu "OSM Few | PA jonjsensd p}pRS—Sd NO MOPUIM ToIEN PAE (Qdod aptiezedo vison v nzzued ()uteut 1 ajtierodo. youtuan yesogeye we} 2780 90 8a) op ymwwesBoxg “sed Tuuad yore 18 oodsur 9p axiwulquice o HZ ung sfe2\j 8 pupugs ‘poo yoetsa ys990 WB no HaoAPONNT] oqeyjaiuos femjane aye yamsion oxy ¥ vO aMwOTICUOS nay ypu anagip 9s oyeod wiseane x yung TEU Bee |B BOpTSUD o aI! ad axewtata| ut i mnyode yno0] a YanauTy Te SILVOIGNT ‘38 invita C++ pas cu pas stropy( name, planks J; FILE* angile = r:fileopeni name, “rt” J, is ( Ungile ) return; ant Lf = active fwin->ife: ant tp = active fwia->top; ane rt = active fwin->rgt; ant pt = active fvan-Sotm; Af t= Lf < (FULE_RGT ~ FILE RIDTH kp te tp < (FULLBIM - FILE HEIGHT) > 1 0, rbve rt < (FOLLLRGT - Seto be < (untae = 2) 72: OF cnax* titue = new titierse: names active fan = few file wani title, infile, name, 1£, tp, Ft, ot) cesete tities fwine~>push( active fwin }, Singura parte a acestui cod contindind un unc truc este cea referitoare La testul bazaté pe pstack pentru objectete lostantiat difent. Din acest moment vi las si continuat ‘este un bun prile pentru a 0 face. Schi mie decat 20 si incereati din nou. ‘In etapa urmatoare incercati si amplem: putes fj asociat tastelor Alt#Xs: rmesayul ALL_DONE. Acesta et nd un mic truc este cea referitoere trodus(push) in fwins un pointer entra unul real, Dac aceasti izeazi functia message(). Dack 414. Ustlizarea multifigieretor REZUMAT 4a programator in CH In ‘Vom diseuta despre acele 1120 2p atk 19 2d 18389 Bad I oq 6 8 ‘asuI9 hop Ezwoo19 aMvo “idD'] "BIdUNS uNesBOIG Sou p BIE OWSe Uae 9) BO MED nsuoo ps yn 4 ‘00 BoyeIp ,un 219, uestiose igow a ItIs}OUI#] B OWMDLIEA om WUE Oo Me=LOp aLeD 199 442) 18 2 soFafeaU IZED wy wuNBapROW v:> “ioIURAL rarSIoe sETSOIOJ aJB oANvBoW oJoIas}0 al int No Bassdop “gIaHINL snpaIye 99110 16 yy 9809 ad 449 1 wos yorido 38008 WOW TOA BA EN, 91 ys WOR 9 UL 10 | Yznpu0D Weoitde gsvoavauwune LAY ‘ANEMpIEY INLIOUNS 16 2 ou 15 1SO}Q} LMG BS Op Thon Bo aivod “ToUa 0 atuizaides ys nqan, ao-w aie9 “eamnooiu 1S aielaRS Sian “tidtaxa acy “Sun in Dyan na emg oP Teneo SF 450 ‘Sa Invatam C++ pas cu pas $5 Concwwzit ‘enumerdim clasele mostenite - separate prin virgula ~ singura clas’. mosteni cna construtti obiectul azul mostenirii simp clasei moste atilizeazi un obiect cu creea obiectul, atunct cénd constructor teste pind de compromisuri, sar limbayul diverse. SUPRAINCARCAREA OPERATORILOR de date. fe limbaje, operatorul + este supraineare: unde puneam doar o acelor clase ae 451, + ar putea returna suma taxelor ciind este aplicat a doua factun. Priviti program: () teepp Hinclude Tp = 7 BUT) Tod SASUOD y wiv YouP "n}dwaxs aq] rosetT Taaedes wr aweyy // * 77° = xoquan 9 JOATU Un @] ap exruoxsow ajasezo Bopysuod Haind ‘ajdinman raruoySou jae ‘9 nguag (BaIOse6 fe 9169 199P 1S O1O7 ND WwosUME Ysa 1B 9p waliouia fe also HORM esNNoY ys BuISEOAEIANP 2d Se] EA) yoqstt qe auauere eeryouts TR // 0° (S/aStTT Seay TE ree ee ee =nIBUED BF ‘edo sed s45 wetpaul eS zee 454 ‘Sa invatm C++ pes cu pas cuvantul im, De exempl fntreaga putea fi un element ‘Acest lucru merge doar daca avett 0 singur& ‘apar o singurd datl pentru fiecare clas. jenerale pentru o clasa din care ‘se pot deriva apoi clase particulare. Tratarea exceptiilor est te tratarea inte-un mod elegant a unor evenumente neuzuale, ca de exemplu incercarea de a'serie pe dise, atunei cand nu mai este spatiu liber Campuri de biti ‘catve campuri de biti Gestionarea memo! ntre elementele discutate pe care dot gestionare a memoriet. S& presuounem cd va gist spatun! necesar. Bing 1 sublimem este coneeptul de apelém operatorul ew acesta . cing se va apela 46 Conciuzit 455 now new acesta nu va mai gis spatiul de memorie de care ay pointer null semnificdnd incercarea nereusiti ‘oH nevoie. Atunci se prevadi o alternativa convenabilé (ca de exempl salvarea acestora) fn cazul cd nu se mai giseste 5 CH prevede un fe gestionare a memories ew, at putea si trateze $i Cazal cet mai comun vatare mai mutt sau mat putin ‘mai bun. Puteti si va sent propria fun de tipul new. In forma sa mai sot ‘in Borland TC-++ sau orice alt C++, verificat STDIO.H, Apropo, vet fi feriiti si aflatt c& puteti creea o finctie global new in edteva minute In afara mediului TCLite veti avea nevoie si TCLite vi limiteaza la moaetul tru cod. Aceasta este sufictent pentru invitare, dar veti avea nevore de ceva mat mult spate pentru anumite lucrai Inalte medii C++ se pot atege moaet st date luate im per Modetut le care se potrives RAM 51 sunt mai lent. ALTE CARACTERISTICI DE TIP.C C#+ este aproximativ un superset al limbajutui C. Sunt anumite cara fost prezente in abordares noastrd. Mas devreme s gist 91 avestora utiltatea. lume priveste fractionare 54 sau 1eeD 9 serie aplicatit de bilant sau Quren aur foraer = ()([essuotase y)ptoa BI uoWMOd 9p nojges mun yniodv 16 wt “soyaimyeuyg 30d ag) ‘osfouny ap yece un oisa go 1mdey waypur szayuered afouun|7) yeuorae samjnogei & atau ‘wunid vjade ws auntiannsur vareoreuLT “Psuonse ‘nyduzexo op " oe ys fron Teo way g. a= 2tRsex Fr seop [Teo wow ween Haven 3 {Ineo2 UT wevezouot Y= ide) edeldke eevonreAd Jhdn ap amo © sanpaud va jmsoreysdw0 (Qemos q. 982 (ero. 1 dx) woatas iizniaueo St ‘pusem ‘A. uy aywongzundsesoo vasaonpea 1S inpoo urLrepisuo BS TEP qawoW 109 punuis 0 YZPaISe} amd Pad aulNs more|sCWOD “mA” ap IM9eIgo [pa tarjauny indioo uIp 199 vD “yoUS Sun] UN BZD 2 DUD) ‘AgMBANS ho yes"SaAd zeIO Wind Tew 90 18 pides inpoo anmp yanzuoo euor wy Feanas 25 azwo anivaride FIP O RIFE 95 IOTV ‘ie00/@ ] atiowiau 9p nideds 9p esdiy ep Jo]HNpUOS wareyEN nad You youn} Teun ‘soues019 b] 1avp seo" v poIdiy auvZyI}IN © Lapan ria, “sHoaup 16 a}duuts op ywanuL jon “osu 18 axajduioa aueoy LNpOD ep inje} JO} ausigo B nuIwad yHRO;eKD ay fp 2180 dey wsa0¥y “Trjauny ye1oose inpoo H] s9}UIOM Un aysa aHioUNY AP ouNY UP] jouny e] YeIUlod suas 9p o1isdy] non) UL woH]CUT UNS vasape sojaeivo ap agise vid 1 sex} YS IHITUOPEIALNOD “ides op “aswwIed EIBSEA IEvOOY jeubyse eguod ae my jezeomy s/ {9T = [€)souDOu (Cre ‘oe ‘Te foe "Te ‘Te € e og TE "OE "TE “8% ‘TE | = Let] SpuOOM uF asuOD ‘asuoo eastzyinn pzvansny wesBoud ap qeINg vasRO;RUL) ms aj aye yosvouns 26 YS a169 wIseODy “oHAUNLEE da ap aI jugjar ait ‘ plopistion gg "stloD EaNeD_EIeo oP THIOSU atPreTZ0p 0 suos Srv symvana aqjnui few ap aep ap panjonns o tulad "Suyopy HPIMIDAP O 9p NCH eau sBunsip 95 mi ystioo vasvayjfeD “uyAne anduIs un ydno0 azeo a]HOTEA maa ‘puny azeoayy uy jeubtee oxeod of my jozeors // Tete = 14 gettt'e = TE qOTE su0D “arboue By eanpuod BqUNYDs O B ap aIP—AANU BBHIO "RIBAUIIYDS 15 1806 ‘nu azeagryeo paseage no ereIoose vasBoUA BO IMAKy LOIPIN waEvODY “++ UF wWaWBIOads jongou 1ode 3$0} € 18 9 WH ahupde B 1QEID|29P rou BIEIOOSE ‘,asU0d,, POIBOYFIED ysuoo indy ap ayqenen, tues 66 20eNe rep axEs0yy fanjos op areiousd slows|qoud xede rea! aw reworionyy opnasd ais:anuos © ap 10neU 9189 19uMIE aye 90 uIp aed wins v dFVO1I0 TES spauopy “OUR Tes 19seUL °2d "8 uvjop “nyduroxa ap "emicxa @ naydad zyEQoUw pynits wi azousne ed RS BOG +20 WETBAG, BS ar 488 Sa invatam C++ pas cu pas 15 Concluai 459 f int? ip = ¢ int* a; // converteste @ 1a un po: ea eee ey | for (int = 0; i< 12) Ge 4 ee actionstil(), fete * Rulind acest cod se ootine: return 0; lista care urmeazé numele de variabile alese ajuti ta a explica semnificatia -a. De exemplu, py_V este un pointer la o functie void fir argumente, Avem void(* py.vi (1; // pointer 1a functie voad, fara argumente int(* piv Qi // pointer la functie int. fara argumente: Ant(* pia) (int): // ptr le functie int. ca argument int ant (# api_i/2)) (int) ;// argay cu J ptr la fune amt, arg int Daca alegeti cu grija din acest tabirint de oferte s atunet puteti serie un cod rezonabil de acest fel. $& presupunem cd tabloul de pointeri a fonctii se numeste call{] si s-au introdus denumsrt semnificative cu enum, ca de exempiu LineDelete. ‘Atunci se poate serie un cod de felul urmator: cali (LineDelets J} apeleazs Line delete!) Daca procedati in acest fel atune fifi generosi in comentarii S& ne reintoarcem in zona confortabila a conceptelor simple 1 elemes Limbajul C au permite tabloury m mnsionale, dar oferi po: tablourilor de tablount, care sunt echivalente cu primele. Considerati urmatoarea doctarati: ant alt) coast dectaratie creeazA un table Fiecare element este un tablou cu patru elen jouri atunet cand atte imbaje pot abuza ‘tunel cand pro- veti intl acest operator, inciftat a seris codul sé. acti separati expresiile cu lt tne or ovat etna ae ‘Valoarea returnati este aceea a cel ia dreapta expresii, fl Wui a, in exemplul anterior, avett un punct. Dac decideti c& veti rescrte acest cod ineriptat atunc aveti dou’ puncte. Instructiunea goto si etichetele programului : structiune goto care functioneazi foarte asemlinator cui cea gin BASIC. Nu am utilizat-o miciodata. La in BASIC instr permite saltu! ditect la 0 instructiune etiehetats din orice punct al Instructiunea goto este o cale de a obtine programe greu Na un stil de programare care wceastl deprindere. Veti fi Teoretic este demonstrat ci se poate reat Practica unde dupa reserierea codut fa la goto, Nu am vazut nici un ru a elimina instructni ‘(6)saaxqut 20t eezednaeszur 7 (Co wsaupe e} adoo4 ‘9p Proqey, “Hadras 9 Bjodel o-nuwiid oxfouny o yarajade onseid ‘osadnianul 0 TevOANIOY areaspucy [modns Pugs ‘srodnuanuy o azanliow gs oIKod alRAYOs INUIZISIS eS sJodnNaNTUL O BALE creed suvapiey mOdNg “uadnianuy ap o1di) 2s uN oue ggxog BEMDONIINY ‘reoruMUIOD 9p TES "Nop azesEa9U yS0} he ‘situsuen 9-5 18 39 vaao no 9085 Won 30 audsop aeWUOJUl O {9H MAB B NU aIeAWpIEY mods aoamwoag "eH jnuoIng wesyde w jruoJeIOdo YO Nes “ANRTAIG 150} He OsIp ad ap eHoHTOs Wro-a] aun ad ajazep BO Funds aU ¥S vaInG 4B aradHaAMU O “n|dWwOXs 2¢q "yoanod b-s yuEUOduus Bxo9 vo aunds au v ap s0TEIN9I Wo SO NE BD wWHsdossep HoMRUOYU aye a}uZ ajawitud sneD ou-npUEA: uednuasqy ‘2tpiodniezi4y no wodoouy gg “aunsouns Uy Haund BS BASeOAEUMIN YUIONS UL sUyWEY “osMoU B} sadde aUL}aO hod emes990u yUNs ate9 LION] 9}20e EIUAZAIG JOA 9S auintioas BISBADE ‘asnolw nauad tions mun Hupsngpe wopenyfeMIeNe 1] [NpUEE no mndaouy B} ap yinASUOD ISO} ¥ afD'CADALL BO 2189 Bla B99 VaIS.A PI 9p sjaueoma n> wid Wop Baysaoy “vse aS MU AEP 4 29 18 Injn-asnow writzod oudsop now! vazeseidep nes aresedy 99 djatedrouuid yavaiaueu wlouny aysaon po yheds He BO [!qraoIg ‘AYO mu sounnoy uorsuarKg asnoyy WosoIONF ¥9 wrgoTEUaD ‘ssNout ardsop 1eusOJUI 9) sounnoy uoisuary anoyy YosorIW UIp etuauodiuos Uy eBNUPE B nAAKIEg ¢ MLEENLIE, UtNUE aoMposTUT BAIS a a1vess x min-asnout rat ‘sows 9] ys uno TiS axvo ad va 1 aLeInRD Mo atirz0K0 uy IN1N-3SNOW V3eVZIILLN a TanIDUOD BF all® 9981434,, 29 21 oaigo Béoye 10-5 2 |auisya aC] “EUOdnS af axvo Joyar0a1q0 Joey ASIOAIP aTeNHpL UNS PUR ‘pjcoa nanued 1g © a4 pdvase (sseyssu of OsaysTiap aioung "eyes 9p mids iy tn may “uoIwas aygoursour osva soujdor 30 6 Fes ‘WSnepe ag “szINgOTUY ap Pa Y] 2901] 98 arEIMED op ysea08 Yo “Sorat 12 9snput aysfierado riedeou09 ne Hongo 90 e909 ase He ne PECL 21 "RIOR =U) RASEoAToUIMNP {nuzEABOud 39} ap unaxé puisoroy omBINgD op [MEIBLORTe wATRKIP sdaouy “pjdtuIs yorees al (sur yo at 38} au1UIP aqUEd0Id 9p (Z VO Fase BIA 2003, A}NAXD Op "TED 4 suusago vansidap ‘azinga ap unpoaord wad ‘ayareoupg "2 BedTO Sed FO WRTEAT eS 462 sd invitim C++ pas cu pas prin numercie hexazecirmale asoctate, Conventia wzvald aproape totdeauna ape notatie de tip limbaj de asamblare: ‘este sii se serie despre el toh c= nunaul 10 in nexa sau 16 im zecimal ook Lo nunazul 21 in nexa sau 33 in zecimas Cele dow! intrerupert sunt faimoase, TNT 10h este Snreruperea Wik Cate permite manevrarea cursorului, modurile video 3: a3a mat departe. INT 21h ove fntrerupere DOS prin care aproape sierele de VO, intre alte tucrutt, sunt procesate. Functiile de mouse se gsese ‘Dupé cum provabil afi ghicit avets nevoie de date in plus ‘exemplu INT 33h. Poate donti sa se afiseze | mouse ‘fla cursorul mouse-vlui, si se aise aitoeva, Acest domentu de alegert ‘yngurd functie pentru mouse in C+ Yn loc de parametr, sunt folositi regist™ jntreruperile mouse-ulu. Un registra este 0 oct fn interiorul CPU. Limbajul C++ nu are wunct cfind apelati de 34 se afle unde se sau orice fica o varietate de paramettt daci am avea © fru a pasa datele de care aur nevore de memorie cu uh nume care Se naxi special pentru manevrarca tea de regisie! si de mume de ajului C++ prin ceste exiensii sunt fare aul maniera lor proprie de a face aceste operat ident de suportul hardware s& fie plasat fnt-un fisier asa imba compilatoras sau se ‘Trebuie ca tot acest cod cet neat 38 fie cunoscut ce trebule translatat atunct end se st oferst patra cegisir general le fiecare. Generatile 80286 a adaugat EAX. EBX, BCX $1 it cer patra regigt initial sh vor sma) utifizeaz’ acest. regis TResigtrié Evx includ de fapt AX. BX, CX si DX ca pe pltile tor crepte. AX, 4 EAX asa ci scriind date in AX seriem de fapt st in mod similar fiecare registru general poate fi adresat mai semnificat regsstruiun AX este numt AHL var byte-ut din dreapta este aumit AL. (Gin lar se poate adresa BX ca BH si BL, CX ca CH gt CL gi DX ca DH si DL. Bavlend prevede eéteva oli de a utilize reatstrt x86. Una este ofertt 06 ipa unjon REGS, definit in DOSH. BU in union fatre doud struct, WORDREGS gi BYTEREGS, Partea care ne ntereseazi arat ase: union BESD 1 ‘Seruct HORDREGS x: Servet BYTERPSD n: 15 Conclusti struct BYTEREGS | uesgned caar al, an, ot, bh signed eaar cl, en! 4 dh; Struct WORDREGS ; unsigned int ax, ox, ex, b Dee ex, ox: (Sunt 9 alt regain defini WORDREGS, dara. Perio se cerceta helpul pentru o list completa.) eae 1 autora np union se poate pune ur neg ALS AB Amtle onponent ieee ea lca ge eons, este utilizata in apelu( intreruy aes val, ve ob oe ti erie earactr general cape cu un tund einterieeu sactnon REGS, Pet re . Se atribute orice valoare necesari in prima variabila REGS Si ncepem o sn Hee 6 Progr sin care gisele cursor pe Moa pm servic video Oxf. Un servic este solietat pr INT I sdu pus in reyistrul AH. Serviewul video este upul dintre serviciile ofe te serviciile oferite de Unmatorut program solicits servicwul 15 #inciude define VIDEO 0x10 // pentru intreruperea 10h ant main() REGS an, out: (feServicivs 15 intoarce modus sn ki, Laryinen in Alt return 0: // punet. un punct de intrerupere ura 15-2 aratd utilizaind fereastra astra Walch, rezultatele act ‘conve : 2 le acestar ia nt a rezaltatcior. Far aceasta eonversie vets gis ear oa Ss oF came, eur Fn in fa tuturor intreruperilor, sncluzand rntririle 5 acestora, Cu © asfel de carte in mand, cobordrea oftre nvelele de contel sore ‘p asnous jnto1ues a1Ses0}0} poo N10} Bojsoav ad 94 aw (© XC (9) XO Uy aIvoy 2189 96noW InloL\as puRjady 2] 8 anued azarae wy ataneuop.009 g 10 tie>4 2]eywuopIEN9 ULI ImIn-asNoU jNdD} Ie ynuosino yzod pzeoxy “y asnowj -arejoemeo uy panspul aseane axeuoAuoD gm PaNIRERN ox W HOTeA youtoads areuopi009 ajaauiy °Xq WK IBUOpICOD Fe XU} BIEUIMAY 959°% MEWOPION respi aon ajoqure nad“ sisyde adeasp wip inuomng muod “Zesede ase wugis up inuoing vo imide TOY!TACS 1 varwOTeA SEC aS tn fit 9 os JPR] “myawoING BaIEIS "1G UH REWIMIB! ASS ¢ BsNOUE NRLAIES pURTeSy eiizod 16 ynuoyng Bose}s “¢ osnow jnionog O15 S0ON IHN 9489 99 8) ‘exjuvdsiq) eountioas apa, ‘sunase aisa imuosino “Z osnow ius © ayuod “inyn-osnout Imuosino epunose *z esnow jnioiaios Jovezt99 ynueIs9 UH eanwICD ® ninuod cary Hezynn 8 atodruasyy 9p round um o] sudo BA woup 1n-esnOWI B9pOA TNA ‘BX. 168) 9p jmurexfoud uy Quoi adiouns o sesvidisfouny aysane WIS ¥ naWng ‘aso g1stx9 gO YuIUD}Op 2s 59 yenp IwIpOUN (}dNAsEIS UW BNA amgan atieiode sK2oY “IngOSND axede mn-asnou je | {MIDAS puRlady Insosino piewe *| esnow! jn‘oeg o urnzez (anos ‘wre “ssnow }9equt XY UT ound 0 exes of eezea3 // 7 BuTIdo IS ezvExeqTTS 0 TRTOTAISS // ‘9OK) = xeOE UT ano "UT Some Quren aw EXO ASHOA SUEDE 4° S0p> SERTSUT ssowuun nda ap weifiod un-nuuid g [rtoves Heise. moot eaTetsteo at // prerx'ano = eencureey o inorazes wzvetede // Qengzeas ur / ve aingon 5 axeanpsey Ba} gud © BIS nn orpotdiuy o329 aFVAyOS how aisa nu plip> !9uNye BUND! ays9 OIG BALBOTEA “| AIO roreo}eA “O82 TES 1~ BzEgUuN}e: 1S (MyEWAKD op “TI2LZOP Tuosino) wala a46}S O-AIM] |M-OSNOU EzEALAq!Ae O ASN aieys 18 oxeagija “0 asnow jn1dIES cesnow »] aareias roytodasaniy wivBisanur wodood BS rodsip 9snou woIput ‘aangedsou ses yergose jrzguunw no (HIV NU) XW [Nusa 20 Taide “SOIG JolUAURIOAH] eaIeUOrEA ep axLgesONP aidg “YEE ParodnuAny sory 25 asmow v1 cand 9 4s tinge ulsand Sole H0|E20" jode eadnse pyeioua® ot asnow quod uednie.yuy 1 oop sis ade se mean ea NEN 2ST BH op sz 99 246 unpugs aye yunds CoaplA jnpoU woHsLEEA Hang “THesAN| aro od 1 BS amo SOIG Jede un sone aise qu go deye ws Hie A vase v] areuresBoad yung 0 32 21 ap wins uy xorayen up areqm ap tunes m uorea ap asoanporut 9p aunrsoU uke Ba BOECL 9 sop aise Sof 9D ‘oIAIOG “9SNOW ML]USO EIOISBOE 9fajuoAs0D WEFTSDA! 1 ¢ 0apIA INpoWL m 1 don rounte “1yBtay7"usai9s 1's gavoison pamDUnUexs 18 SOR eu sor anaes St Beil na Sed F45 welenal ES ver 186 Sa nvatim Gre pas cu pas Hnclude Hncluge foam #éetine MOUSE O83 ant naan) RECS in, outs nx.ax = 0x00; // serviciul 0 --elibereaza si obtine J} starea pe care © returnenza in AK ints6( MOUSE. gin. Gout }) inwe.ae = 1; // serviciul 1 ~-arata cursorul, ine@6( MOUSE, &in, Sout ), geten() return 0) Serviciul mouse 5, obtinerea informatiilor despre apasarea butonulut icin de cate on acestur servici Apelarea servici bbutonul din stanga sau ce! ultimet operatii ou butom e raporteazk butonal din stinga, Dacd este apelat eu BX egal ou 1, atunct raporteaz butonul din dreapta, 7 urmeaz& numarul indicdnd de cate ort a fost apasat butonul de Justina X raporteazi coordonatele x $i y. re simpla verificati ci butonui din stinga a fost aplisat o daté, ‘de zero in BX indicd faptul c8 butonul a fost actronat. Odati rogramul investigheaz4 focatia pentru a decide ce strei de editare, de exemplu, pozitioneazi rmatie, 8 faca. (O apasare in intertorul in text.) i f Pentru utiliziri mai subtile se poate combina numarul obtiut eu mformat relative fa succesiunea in timp pentru a determina dubl s i smb wate fi verificat cu gettime) (declarati in DOS.H). Cor pew S se poate obfine un detector ce dubli apasare de baton. fncereatt wrmstoril algoritm: // a fost putonul apasat de mai muite ora? j/ s& presupunen o dubla apasare J} a ose putonul apasat o cata? Y/ asteptati © clipalcires 0.288) Vrobeinsts 0 noua apasare? 45 Concluall a // este ¢ qupla apasare // aitfel este o singuze apasare Dubla apisare de buton din Microsoft Windows pare a fi defini ae dows apisiri, in tnteriorul cuantei de timp specificate, 51 care my sunt separate de nici o miseare a mouse-ulus. Cred cf un algoritm care ignori miscirile mouse-ului face 0 ‘reab mutt mai prietenoasd, text, Se poate de exemple schimba cursorul implicit care opereazi mouse-ul. Pentru a putea intra in aceasta zona aveti nevoie de o carte complett reat la Intreruperi, Cele sase servicii discutate aict reprezinta toate instrumentele necesare programarié unui suport pentru mouse in editorul Tiny Disparitia mouse-ului Dispartia mouse-ulur este cea mai ineficienti problem’ dintre cele ae programare a mouse-ului. Aceasta deoarece cursorul mouse-uliti este crecat prin sofware In memona RAM video. (Cursorul text nu are aceast’ problema deoarece de hardware.) are loc astfel: Cursorul mouse-uitt 12. Aceasti operate nvare. A cecranul este restabilit, pe ecran, end 0 uton al _mouse-ul care a fost interceptat fe §1 restaurare de ecran pot crea ae mouse, ‘Se poate evita disparitia mouse-ulwi prin ascundera cursorului inamtea oricére: operat de salvare sau restaurare, Puteti si protejti codul prin acoperiea fanetillo puttext() st gettext() ca in exemplul urmator: me¢_puttexti ... | // mec = Mouse Compatible Cover if (has mouse > mouse_off(); puttext(..0 LE ( nas_mouse | meuae_en{)) Se apeleaza versiunea mec in jocul funeti Si A seriett propria functie mouse_ofT{) si alte fu F puttext() sau gettext). Este nevore ji pentru gestionarea mouse-ulus up 3x83 IMpOU UL jouorionssad va Bs feqwonp2 uy sed jruoipusin “ifmo} “289° nu ‘qnpltya aUIg e100) BUNS YSOHUTONIA, NES XIN “SMOPULEAK ¥O “aLNLORId | ymax tout od vaseyod 38 fp 0 Poo nun BoxoLIES yMIed 2169 raaI01}g1g aynasauND nuip yop xwuizaidos “pueLog 99 EDA! (AKO) MBIA] SwOPULNL (oupy) 5955015 wonepuney yoso19))y ‘2yIsa90u 0 sI69 as0}9 ap EsPOHIOS rajsuen 9p sunIOTed so; LRyEP YH SMOPHAA PArRURBOIM nD aselo ep 199}011q!q 1S IMO ‘DAW [IRIS aqueIoduar ‘eur 2]90 anup wasyyo 18 stOAaU HHox® aueo ap ajziouns weuezald ry -azeaod 2p jnuioisis no proanp vieyiaut 99x Jounal wameZ|NN weAMUOSUL w inosIC, ‘snot aldsap arinesyp (RUnos aud yMUs pgeqo4d sep) Fun) © nD yenUTAUOS Wry “pumooru f§ area 2p 40 © prea vareinoaxo if vasoiuatuaja Putaurd mses ojoun no andeouy wry “Auly fructipe e] sod sienm uMe-ayy 2 rnfequay ad axezeq rau wy "wedBoxd uty o} eWod 2p Iara do} ane BAdIBD 16 ojBuorSuaNUEPHA| AR lp rimiiied ouumnue 18 lowny vy ianoyqen “eauaMase ap 1 zauta nipyeunqau! 1$ w20x od jsyulod wna IMZEA WY “~UOID 4 rai 9p moupe eatuad 119 viEyseNU oIpur sIS90e 2i¥o} puBIOpIsuOD ‘pnsbasay 0 ev0a19 9189 vAGD B| fade UN No ND 3ENDOFUL LJ BA InPD Samu! (IgEGEXE rep “HasvIp::¥OG rguisd ynpos uy Qusind yez}IN ue g> BAIOSqO tHaA “wa}duoD areuOd o NnUEd “(1S0} 8 1B9 94 gIsNqod foupe ¥ guiait Polo} yo LAdoosep ‘uoyeaiyoe young S08 tea woe YON wry -AuLL |RsOUpS 4 yung 0 ouios w nuquod nneResd oquns Poa we 3 rnequu| wig] ‘amvoo}e TuNUod aHOWOW! RIUDIO|JNE 2989 1 yiouny taun eaxaH9s e} oMOILIApAs uNROsI No pulayseE “+3 Ido) oH 16 yeIopisuoD uy “oeIqO aZeEL5 UL Yep O MA “ESV UL EID © sede aze9 oqqvizen zums a1v9 “aseja uy 2ouRIS a]URUHD]9 aIds—p yeINDsIp wy “axwoTwA IS Salpe ova inowresed weve v ap vepeuflgisod H9J0 a) 9p 495 e| urind joo nes) ysnqo yout 189 AU], Hoa towne ‘tiezynn -am9 ad 1D mipeu oq Onap puTUaKKOU! aay x01 no oqpfeiodo areo1 naived Qane:xoy 6 (gna “()AKoI08 wyayjnn ate a wreouyp | | ®T Maung soun inypauon siuenodun utind re 151d} 9p 91396 o yeUszaxd we lod Jojsoyelado vaiwaspoutesdns « uy wasruangour 442) iminfequuyy aie ouofeu ioidor enop wy wadnse IND o-AUY AuLL Inynsoypa BaLeHOd uta © no dso. wy ‘oun 1}E}9p JOU Eide ISIS UTE JoNIgeS YON8 Up ‘maoqtpa yezjoou ue ‘anogy a tient 1-90 tnuunap ad einfe Ba & tantad ysieasasqo vauma said ie you “oujiede ga go sounds ¥s pun 1m eT mon] Hie BO Jods “anu 16 vO gin 9p 195 B) LED tHSEORP snogTd ¥a EO AVWnNZ3y ‘op oy YS NEO, “wOISOAR MU MES oUAUIOM a} 2040 Uy doy orapsONE ‘p> pideaupuy aS vaunny “Bouin aBuau! auto ad ase nw eq +9) ]NPOU Uy StI95 360} ¥ nICLNAXD ap “LBLDN f3s600 “yrar8uo uy your8140) msuasnueyy "3x93 Nd nAMn| 2p 4 Ung LEU f9 IMpoWY “izese ap ajesoOy aye ad apides ap jqIpsIdUI Ns areWesFOud ap i aindaguon ojouresBoig “arewesB0x4 9p [Ns injsoow waseUILM|s Ya804 eUOSI2g 2180 rt da 2p areuresBoud 8p poy “BAsd4Io 20u0 mys “ouMBosd SKOPUIAA-X NES “YSOIUIOEN “ACU woneivaseiq nes SMODUIA\ alitesfo1d auns gs axalop sopeumesBard 30130) INS Syds3ag : 2yOso|y BIsvo0N no LEpH}OS tits “pioaueD ware oy HY 's9sse19 uonEPUNOG RBS SION Sainosay in) EWUEIGOS sp wohaser BAP RI 49 thiupdgis ws ingasy ze aEOUY Janse anit espage na INdDdME Ay 1 HEL HT mes “KIND YRORLIOE Tuiwed if woqjde 95 yoreuat ies2oy) “paspums laajionu cufipemd 3p odo ee Jiop yo nuidod ay or rew yeayjdy Hewonsad es ised Smopulyy HewrEBOrd 3 ‘jcuus 2, wisv20e naauad prog ay eporeu o fingpe 20 yaNp Yeu rep “ung 199104 Dayan Fe UN aySO ML B[y MINIS UN BAIEIOS|Ag 38 mod EU wave 2j2quiP UNS TWO 8 APR f90 asorosd vajop fe un 282 EAE WIA af eanuonss ul InjtuosuND verEUOTiLzog “mu oy wea 928 9 88 Hien 2eCL 4.49 18 vo sem op [2p B 19KeNE ‘ung yaoteud wa! un os9 eisa0y Chieds nisop rPeq| Wy) oUF B94 IMDOIGO Ut LOK, ~ SwOpuI/\ lutieauy asso} eno Go 3a MHS yO to adobe, aN, 28 s9,,, aousoing ode HivBNEDY auny wAsye> 2p BA Poe “wou puns ot HP NO BaUHard Hadsou swopULM ans qeuIeiBosd gs LLJOp ~deanfuoouy “piueniodum aieur ap yoaroad un ad ea jn-asnout ‘nud DN. ‘0 RouEss eunepDId o no enunuoD Find nes “aus wy FEquUN| a4 PA-npupAtaoU0S ‘n-asnou no exon e NA ‘SO1EE &] 98x 90 I00ds A]pmmjade no stoenp ejayiewut (oun oye” ayeer ap azeqozi BA ys amMgan EaISoOy (85 TnpUeD SF SRS Becino sed s45 wrienaT eS 897 470 ‘SA invatam C++ pas cu pes iplementarea facilititilor mouse-ului $1 am concentringu-ne pe cum se poate evita Index nd programatea GUI vii unde erati cand ati inceput aceasti carte, Ati dorit s& seneti bajut C+ gi att dorst $8 real reali peatru a va atinge programe in telul propus. ‘Acum ati seris un editor de text rezonabi si supraincdrcare au fost concepte vagi, dar ‘mar mult joc deeat munca, Programat Programatt cu piacere in C++! ange 17, 421, 422, 423, 425,430, 447 argament 23, 31, 42, 43, 49, 50, 68, 73,85, 86, 126, 134, 195, 137, 139. 142, 211, 221, 223, 237, 295, 300, 381, 387417, 422, 423, 438,439 235 81, 87, 94, 95, 295, 343, 345 Tot ‘06£ ‘6st “ese "Zee “IS GNA™OD 16E°S8E 40d 0D ‘ose 008 Ost ect nana’ ‘spl “crt “eel ger *s ‘oc1 “91T- & 8th AOL dA NIM Ser LIT sad Nia She ely clp pe “Ze “eee LIT “PIC "UZ “S07 “OL ‘B9LE 9¢ ‘OL “E205 YE ‘08 epour”uoaros” np Lbb'tly Qutadoay, Ler ‘ory ‘tips go err “Sh OBT'REL “Ser “POT ‘901-6 ‘68 "95 3 LEZ Quadoy evn ser Ooo 1 axis 1S OF 6E ‘SE Ze TE ye "ec9 HR THE ‘bP ‘Pry “Osr STU, LPP OLY-S6E “PLE "ZbE “TOE Wh 61 ‘SIP Oanns™a oir Slt SAYS 3 “shy “Obb “6Sy “Ley “ocr not wade" EF SEF ZEN LEP 9zb pep Dusdo sbr'ore “LED OEY “Poh LED "9eh "bey NEdO TWA LEZ "SSL “$C “HC ‘vt Sip "eBE “eRe Z8E ST MON slr Orr 695 L98 “ape “C62 POLST 08 ba len 91r'see"ust "ps1 st oor O18 4 rE "96 '99 BI ToL O81 “6st EOror Ize few | 6s: spp'el Sob ‘996 FE “ety LEE “04 6 Sor rLe oce ‘s ‘Ste ‘Lv "tee “96 zt 8 ‘Dee “bes ‘zSe “ISE “6EE “EOE “962 “PET T L&C '87C“S7C"ZOI “£668 ‘88 L848 "ES ZB_aeALA sa9D0 9p 3e0xp oy aisanexa lax peg, on ena bb 'Eh VOR 906 Vou, ur *e7€ aonpo ‘SCID 1 00% jnu0s PIP ser'sse er 9G “OLE “OST SE SSE PSE "ESE UV Zor"6ot “S8¢ Tov "sae 69E S9E "ESE Bt Zor Z6e BOE “LCE CuDUs” jap ASE "LSE “SEE YSE “ESE YVHO “Tad Zab SSE Zoe "Eee "802 'SE1 “9h PL B9E SSE “6PE ‘$6C'SEC EET “OST'S6 SB “SL ‘Lp BIEIIDOP a 8°29 stop pana TIP" ‘90P “SLE 'ZSE Aino 0p *T6E OTe xo 162 "962 NO“OSUND sho Lev" 86°98" "LE soso 98, (snow sos Ziv “tor “08s maxis “oor o1¢ atyy-ma ‘ore “62h 8p ‘OED "C8E"EL1 “SL arewopOG> ‘pe laivurawiay esiaxan0e Sor '9eb sev "vey ft zt "699959" “0g 0 L615 “LI-LE HOINOO. £ HOINOD HOINOD H'OINOD WOINOD ost por soxemnwioo pp azentuos ach areuucwe> “Cer BLE "ChE ‘960 “8ST “tow ‘ove “Oz “wPL TPL “OPL "ZEL “OCT “08 “szi-011 20} Ls ‘se ajc, Stz (NO) ss209¥ Jas uOLIMIOD SOE ‘BRUTE ze "Le 82-02 merewoM0D te "s. epuewios o1r see "S6¢ “16£ ‘O6¢ “se _epurwco ‘ae ‘19 Sol-uBupi Hoa Tp de WO0'S¥O109 01 10809 he ‘90E 'Lz2s ose ee “cL ase ‘sce 'ere 9c “SCo PEE “6B “OL “FS "SE 'BC FojeIP BseID 1 E20q op 819 “out “E91 “Le nor “Ev Spend “896 “POE “BSE “och leh “80 ‘pee “ver "ac Hast ost ert “eet ‘SEI “¥EI “Et “oOr “Be FoTEP ap erase 6 Asranun a8puque9 10'S "bh 089 906 “10k ‘sb be osErO be Or 6p ‘SbL “Set Let ZEN “8z1 LEI ez “O11 %60l ee- faara ap fe oF Sedo wed <5 WEAN BS ae ar go_endl) 359, 360, 361, 362, 391 GO_EOF 329, 367, 369,375, 385 GO_HOME 351, 353, 354, 359, 390 ‘g0_word_() 376 GOHOME (macro) 2! ‘goto 98, 382, 383, 384, 387, 388, 390, 393, 396, 397, 808, 413 382, 383, 384, 387, 388, 390, 403, 405, 406, 408-412 sroup. start fine_no 379, 380, 381, 396-401, 403, 405, 406, 408, 409, 410, help 6, 8, 38,126, 426 Home (chele) 220, 223, 350, 351, 357, 360 1 IBM (International Business Machines) 50 IDE (Integratea Development ‘Sa Invatam C++ pas cu pas Ins (chete) 46, 48, 53. 129, 155, 341,375, int 14:22, 60-68, 93-96, 113-130, 153, 225, 295,341, 380, 416. 446 08, 114, 115. 418, vostreams 231, 252 001 363, 364 K Kermignaa, Bran W. 9 KEYDEFS.H 220, 293,296 L {counter 384 ‘char 350, 358, 373, 375, 376, 380, 383, LINE COPY 404 TNE DELETE 404 line_do_unmark() 396, 397, 398, 399, 496, 409, 412 LINE_END 393, 395 ine_end() 397, 398 Macintosh 1,417 159,236 index maio() 17-22, 114,227, , 444 imager. 377/381, 391,395,295, 396,397, 398,413 88, 107, 124, 125, 128, 227, 228, 229, 417,418,447 419, 426.427 memone 3,9, 78, 79, 122, 155, 224, 300, a mesa) 3, 20, 23, 25, 29, 31, 75, 82, 435,445, 22.34, 37, $6, $9, 70, . 219, 304, 347, 396, MEC (Microsoft Founaation Classes) 2 Mitetell, Sammy 214 rmiogulo 428, 447 monitor 4,381 wostenire 2, 84, 11 127, 149, 150, 7,22. 26.39, 46. 128,159 move() 85, 86, 405, 409 msgQ) 300. 30%, 340, 541, 351, 362, 372, 374, 382, 390, 391, 395, 3997, 398, 405, 345, 137, ° obiect 2. 2,11, 14, 19, 37, 72, 76, $2, 110, 7, 134, 165, 231, 303, 415, 420, a0, 447 Object Windows Library 2 OOP (objetonentederogamming) 2, ‘operator atribuure 81, 87, 94, 95, 295 operator de rezolutie 86, 107, 306, 308 operator decrementare 148, 150 19, 48, 53, 61, 75, . 157. 161, 233, 3, 96, 98, 76, 85, PKZIP 423. Dlain_emd() 296, 298, 339, 346, 3 374,390,415 ve “eRe “EOE ‘09 ‘92 HI ‘691 ‘191 491 “S91 "COI “6ST "BSI “LSI ‘EST Opt 10s 68e rey asn “SLE “TLE "ZLE “OSE “GHE LEE 962 "SE JapedAs eve Cee aR 6 drop ogmny, one" +49 oan, ee armusuen > 60» ‘£0 "90% "10> “666 “16 * ‘TST Ze Ze "LY eI : ovr "ser “cae ‘SI ‘112 ‘eoL-Pol ‘sse-a%e ‘O1e 0c “91 ou “en ‘BET ‘OL £910 “cet 4 vor ey STP IT TSA Serer ‘Soh ‘Lch SIP “LIP “EOF "86 “L6E “CHE TE “OLE “PLE ‘OSE “EOE “OE HM, Sor 90H “808-S6E “LEE "BOESSE “ISE ‘OSE ‘OVE “OTE “LOE “SOE "COE “DOE "362. d4O"TELL SOE "862 ‘6c ‘891 “791 “6S1 “SCI “UST WaWoaE. vor 06 PLE “EGE “ICE “OC “SCE “967 ‘760 “ORE “OL1 “91 "291 “8ST ESL dao ‘68h 9p ue "9eC* “SOP Zor *tOF ‘SBE "PEE ‘ORE 0% Zip "o1 “60% “Tow "tor “Sse “PsE ‘ORE 496 "99E Sir "p62 “Ice '6E AL eee aXBL Let dao oleh oF LL ‘Cob “ote “Se “ere “yB-rL ‘04-89 '99-19 Sh '60y *P6E “PLE “TSE LE “te “OFS “OEE “Loe "962 “ERE TEC “OTE “yy HORNS 11'6'€ way wows Sov vor 81 '6CC "BCT OTeas pe ULE ILE “LSE "TEE “IE “6CC BsoUDFEAANS 0 16 106 "#818 "BL 9L ‘SL “FL “EL BONDS bb ‘OPH “VEY Sev ECP EP Be 'SIP ‘LAE “EE “CPE “OE “OLE “961 RIonns ose “Ube “EC "V8 “ER ZS "1G “SL “PL EL TaN rn op 1) suelg “ensnons cee (66 "POE “EOF "ZSE ‘OCT “PEL "TEL (worn ‘Oe "EDE "SEE “SEE “OKT “6CT “OLE“STE “PEE “ERE TCE “ZT Prey” Surns: Ste ben "Tey ‘age 6c “8CE Eze '9e sce SE OST ‘EET TET 89T “Pe HONT S8¢ 'y8e "eRe ams oer seh “Seay “BRE “PSE “ERE “CTE "IL '99-°5919 Toe ‘oor cez eID PRE “OPE “BOT "PEL "PL “OL "6S “LI '9°S vec eee (30%2s Spb eee "err '2RE ‘SOE “TOE Ores #€¢ pons BRE “LBC “DBE “TRE ZL spp ‘ten “Ive “soe SHE “CRE "THE ‘SLE “PSE "TSE oez sxe sez a8 Sle *U0e "@ee “UST "LET “1E1 ‘97. sHEatOs 698 'z9e ‘ese LSE "660 “S60 "ICE “V8 “6L OF 97 BHEaES s ESE “L6C ERE ECE LIC "9! ows “g6c ‘v6 “ovt “ee! "26°06 Le '$C "TE IE "6 NIN SDIEHOR ‘ype pumas oer 'ebh “Ug "WOE 'BIZ ‘ELT '9L ‘BP EGE MEL 62 amuorsuounpa: ‘ep arematsinoas be "Ebe ‘TEE "6 (Kowayy seeooy wonurY) WV a it apa oD os1 ‘921 “Ec Oronne 68s '6re "86 "OL "85 “LS ‘95 ‘58 ‘IS “th “ey Ousine or ‘ot BLP "80F SUL "PLL “BOL “Ig eiedmeMN AD ound pr 'Beh 6zh bee “OE "Bee “$e °S91 “OSL “Shi “PPI ‘OPI “SET OST "SII *€6 “6BLB “88 "@B_ HaNe z ae x ay Sed nd sed v4.5 Wiekeain eS indaws (Micros YGA 43, 306 m2 video 8,40, 44, Visual C++ 2, 364 x void 14, 17, 23, 46,61, 85, 103, 120, 226, 300, 347, 383, 425, 445 vsteien() 363, 364, 376, 391, 392, 419 or 345 419 Hora Georgescu Tudor Balanescu Mihai Ceaparu Boldur Bérbat Flonn Gh Fl ‘Augustin Pumus Nicolae Ene ‘Sena AutoCAD |. Vaduva.Gh, Barbu, M. Bolosteanu ©. Giumale ©. S8mbotin In domeniul informaticii au mai aparut: Programare concurenta, Teorie si aplicatii Corectitudinea algoritmilor ‘Comunicatia prin intermediul refelelor de calculatoare Informatica industrial Ingineria programa 1p real, volt PROJECT 4.0 in managementul proiectelor cu aplicatit AUTOCAD Release 12, traducere: Daniela Vasiliu Bazele informaticii Programare functionals, © perspectiva pragmatic’ Sisteme expert cu PROLOG Proiectarea interfetetor ( Sisteme de operare. Princy jucere din | engleza) si funetionare

Vous aimerez peut-être aussi