Sunteți pe pagina 1din 32

Primele dumneavoastra

programe in C++
Nu averi de ce sa va lemeli de programarea in C++. Serios! Ca loale limba-
jele de programare, nu esle allceva decal 0 modalilale de a da unui calculalor
indicarii precise din puncl de vedere logic. C+ + poale Ji miCal de complical
doriri, dar eel mai simplu mod de a incepe sa-l invalari esle de a-I folosi penlrn
rezolvarea unorprobleme de programare fundamen/ale. Aceas/a es/e meloda pe
care 0 v6m folosi aieL
in primele Caleva sec/iuni, vom /rece in revis/a conceptele elemen/are de
programaJe. Daca ali mai programat anterior in alt limbaj, es/e posibil sa dorili sa
lreceli peste aces/ea sau sa Ie parcurgeli rapid. Dal; daca ramaneli pe-aproape,
promi/ sa nu lungesc prea mult vorba.
A gandi ca un programator
Programarea nu prea seamana cu nici 0 alta actlvltate pe care
In nu facqi decat sa instruqiuni, dar intr-o maniera
logica, sistematica.
Calculafoarele nu fac decaf ceea ce Ii se spune
Calculatoarele nu fac dedit ceea ce Ii se spune. Este cea mai importanta
regula din aceasta carte, mai ales daca inceparor in programare. Folosind
un limbaj de programare precum C+ +, Visual Basic, Pascal sau FORTRAN,
unui calculator 0 lista cu lucruri de fi'icut; aceasta reprezinta programul.
Odata, am condus un laborator de calculatoare din Tacoma, statuI Washing-
ton (care are faima de a fi cel mai stresant din America). Unul dintre
era un cu palarie de pai haine vechi. Venea in fiecare zi la
mine cu un teanc de exemplare din The Daily Racing Form I spunea ca, daca
am putea introduce respective in calculator, am putea
milioane de dolari ajutandu-l sa aleaga calul
Nu merge Un calculator are, desigur, nevoie de acestea sunt
datele programului. Dar sistemul trebuie sa cum sa manipuJeze dateJe
respective. care arata calculatorului ce are de facut (din motive
despre care vom discuta ulterior) poarta numele de cod de program.
I Un jumai hipic. (N. If.)
2 Capitolul 1. Primele dumneavoastra programe in c++
StabiJi!i ce va face programul
pentru a delermina un calculator sa execute ceva, trebuie sa i se
spuna exact ce are de facut.
Nma acum, probabil ca afi folosit un calculator ruland programe pe care alte
persoane (precum Bill Gates prietenii lui) Ie-au scris pentru dumneavoastra.
Din acest puncl de vedere, ari fost un Ulilizatorjinal, mai frecvent cunoscut sub
numele prescurtat de utilizator.
Acum, dnd veri scric programe singur, ve\i promova In superior al
utilizatorilor de calculator. Acum, dumneavoastra sunte\i cel care decide ce face
un program. Dumneavoastra stabili\i ce se Intampla.
Dar un calculator - mai mult decat Dustin Hoffman In Rain Man - este
cel mai idiot dintre savanfi. Niciodata nu poate sa va ghiceasca dorinfele. Nicio-
data nu poate sa faca ra\ionamente independente. Este literal pana la extrem
va executa exact ceea ce Ii spune\i, indiferent cat de stupid este. Ca atare, trebuie
sa va asigura\i dl vorbi\i serios.
Unui calculator nu-i putefi da nici macar 0 comanda care poate parea rela-
tiv simpla pentru un om, ca de exemplu: "Convertqte un numar de grade Cel-
sius In grade Fahrenheit", Pana acest enun\ este prea general. Trebuie sa fi\i
mai explicit, scriind etape de genul:
1. Scrie mesajul "Introduce\i temperatura In grade Celsius:".
2. Citqte un numar de la tastatura stocheaza-l in variabila ctemp.
3. in grade Fahrenheit folosind formula
ftemp =- (ctemp * 1.8) + 32.
4. mesajul "Temperatura in grade Fahrenheit este:",
5. valoarea variabilei f temp.
Dad! trebuie sa trece\i prin toata aceasta dandana pentru ceva simplu, de ce
sa va mai deranjari? Raspunsul este ca, un program 0 data scris, it puteri folosi
la programele necesita limp pentru a fi scrise, se executa cu
viteza luminii.
Scrieti echivaJenteJe in C++
,
Dupa ce ali determinat cu precizie ce doriri sa faca programul dumneavoas-
tra, pas cu pas, trebuie sa scriefi instruqiunile echivalente In C+ +. In esenfa, 0
instruqiune este echivaJentul in C+ + al unei propozi\ii; poate efectua una sau
mai multe opera\ii sau poate crea 0 componenta de date - cum vefi vedea
ulterior, pe parcursul capitolului.
De exemplu, sa presupunem ca dorifi ca programul dumneavoastra sa
efectueze urmatoareJe operarii:
1. mesajul "Temperatura in grade Fahrenheit este:".
2. valoarea variabilei f temp.
A gandi ca un programator
Aceste etape se convertesc 'in urmatoarele instruqiuni C++:
3
cout "Temperatura Fahrenheit este:
cout ftemp;
" .
,
Nu ca obiectivul programarii este de a determina calcuJatorul sa
efectueze unele bine stabilite. Dar numai propriul
sau Iimbaj standard - codul - care este alcatuit din cifreJe 1 O. In anii
'50, programatorii scriau instruqiuni 'in dar era 0 extrem de
dificila consumatoare de timp.
Pentru a simplifica lucrurile, inginerii de calculatoare au creat limbaje de
programare precum FORTRAN, Basic C, care permiteau scrierea de pro-
grame vag asemanatoare cu limba engleza vorbita.
In vederea scrierii unui program, 'incepe prin a serie 'inpseudocod - 0
metoda pe care 0 yom folosi frecvent In aceasta carte. Pseudocodul este
asemanator cu limba vorbita, dar descrie aqiunea prograrnului Intr-un mod sis-
tematic, care reflecta curgerea Jogica a programului. De exemplu, iata un pro-
gram simplu, scris 'in pseudocod:
Daca a este mai mare dedit b
Scrie "a este mai mare decal b."
Altfel
Scrie "a nu este mai mare dedit b."
Daca scris programe In pseudocod, nu departe de a avea un pro-
gram In C++. Nu trebuie decat sa instruqiunea C++ adecvata fiecarei
opera\ii.
if (a > b)
cout "a este mai mare dect b.";
else
cout "a nu este mai mare dect b.
n
;
Avantajul Iimbajului de programare este acela ca respect a regu[i care nu
permit nici 0 ambiguitate. Instruqiunile C+ + sunt atat de precise, incat pot fi
convertite In cifrele 1 autilizate de calculator, fara nici un fel de dubiu.
Nu trebuie sa va surprinda ca limbajele de programare au reguli sintactice
stricte. Aceste reguli sunt mai consecvente de regula, mai simple) decat cele
din limba vorbita. Din cand in cfll1d voi sinletiza aceste reguli. De exemplu:
if (condi

else

Cuvintele scrise (cu aldine) sunt cuvinte-cheie; eJe trebuie introduse
in program cum se arata In carte. Cuvintele scrise 'inclinat (cu italice) - cunos-
cule sub numele de fnlocuitOli - reprezinta elementele pe care Je specifica
utilizatorul.
4 Capitolul 1. Primele dumneavoastra programe In C++
care instruqiunile C+ + in cod se
compi/alor. Vom spune mult mai multe despre compilatoare in seqiunea intitu-
lata ConsrTUqia unui program C++, care incepe la pagina 8. Pentru inceput,
insa, yom trece in revista unele
Cilteva defini!ii tehnice - 0 trecere in revista
Imi place sa evit jargonuJ. Serios. Sa fim sinceri, insa. Cind sa
programare, intr-o lume care necesita ceva termeni noi. In con-
tinuare, yom prezenta cateva de care avqi nevoie pcntru a supraviqui
in accasta lume.
Aplicatie
2
In inseamna lucru cu program, dar din punctul de vedere al
utilizatorului. 0 aplica\ie este un program pe care iJ ruleaza un utilizator pentru
a efectua 0 Un procesor de texte este 0 aplica\ie; tot 0 este
un browser de Internet sau un program de gestiune a bazelor de date. Chiar
un campi/alor (vezi mai .ios) este 0 aplica\ie, dar una dintr-o categorie foarte spe-
ciala, deoarece este foJosita de programatori. Pentru a formula mai simplu, cand
programlll dllmneavoastra a fost scris, testat construit, a devenit 0 aplica\ie.
Cod
3
Este un alt sinonim pentru program, dar privit din perspectiva programatoru-
lui. "Codul" reprezinta seria de instruqiuni sintaxa aferenta care complln un
program; acesta poate face referire la codul (succesiunea de 1 0) sau
la codul sursii (instruqiunile C+ +). UtiJizarea termenului "cod" are originea
in zileJe cand to\i programatorii scriau in cod Fiecare instruqiune
este codificata intr-o combina\ie unica de 1 0, transformandu-se, ca
atare, :in codul caJculatorului pentru efectuarea unei anumite Progra-
matorii continuaa sa foloseasca termenul "cod" chiar atunci cand utilizeaza
limbaje precllm C+ +, Java, FORTRAN sau Visual (Pentru mai multe
vede\i de la cad sursii.)
De asemenea, termenlll "cod" este folosit uneori pentru a face diferen\a
dintre informa\ia pasiva inclusa intr-un program (datele sale) acea parte a
programului care efectueaza (codul).
Cod
Este limbajul nativ al microprocesorului, in care fiecare instruqillne de cal-
culator consta dintr-o (cod) unica formata din 1 O. Programarea in
cod este :in continuare posibila, dar aceasta necesita cautarea fiecarei
instruqiuni, precum privind arhitectura CPU. Ambele
cadrul caqii de
2 !n limba cngleza, application. (N. Ir.)
J !n limba cngleza, code. (N. Ir.)
4 In limba cnglcza, machine code. (N. Ir.)
A gfmdi ca un programator
5
Limbajele precum C+ + asigura a modaJitate de a scrie programe 7ntr-o I
forma mai apropiata de limba vorbita, dar suficient de precisa din punct de
vedere logic pentru a putea fi convertite in cod C+ + mai pune la dis-
alte caracteristici utile.
Cod sursa
s
Este un program scris 7ntr-un limbaj de nivel inalt, precum C++. Codul
sursa este compus din instruqiuniie C+ + care formeaza programul dumnea-
voastra. Codul sursa trebuie convertit in cod inainte de a putea fi rulat
efectiv pe un calculator.
Codul cum am spus, este campus din 1 0, dar este, de regula,
reprezentat in cod hexazecimal (baza 16). Astfe!, codul se prezinta, de
obicei, astfel:
08 A7 C3 9 58 6C 77 90
Nu e prea dar ce anume face, nu-i Daca nu toate codurile de
instruqiuni, un asemenea program este de - ceea ce reprezinta
motivul pentru care foarte programatori folosesc, in prezent, codul
pentru a scrie programe. Prin contrast, codul sursa C+ + arata astfel:
if (salariu < 0)
;6
Compilator
7
Este convertorul de limbaj care preia instruqiunile C+ + (codul sursa
C+ +) ca date de intrare genereaza programul sub forma de cod Acest
fapt este necesar 7ntrucat calculatorul in sine - unitatea sa centrala de prelu-
crare (CPU) - numai codul
Date
8
Sunt stocate de un program, 7n vederea manipularii sau
La nivel elementar, informa1iile sunt alciltuite din cuvinte numere pot
fi organizate 7n tipuri de date mai interesante, denumite "dase" "obiecte").
Instruqiune
9
De regula, este a linie dintr-un program C+ +. In Jinii mari, 0 instruqiune
in C+ + corespunde unei scrise intr-o limba vorbita, de exemplu 'in
engleza. C+ + mai accepta structuri complexe, alcatuite dintr-una sau din mai
multe instruqiuni mai mici; 'in acestea corespund campuse
din Jimba engleza. Majoritatea instruqiunilor din C+ + executa a dqi
unele executa mai multe
5 in limba engleza, source code. (N. tr.)
6 Dqi In carte am folosit diaeritieele In linii de program, comentarii, nume de variabile, funqii, clase etc.
pentru a facilita !eetura, rugam cititorul ca, In eventualitatea utilizarii programelor din carte, sa Ie omita.
Astfel, ii Ii vor deveni a, devine s etc. (N. Ir.)
7 !n limba englezii, compiler. (N. tr.)
8 !n limba engleza, data. (N. tr.)
9 In limba engleza, statement. (N. tr.)
6 Capitolul 1. Primele dumneavoastra programe in c++
Program
Reprezinta 0 serie de instruqiuni care urmeaza a fi duse la indeplinire de un
calculator, folosind datele initiale. cum am mentionat anterior, un program
poate necesita timp pentru a fi scris, dar de obicei se executa cu viteza fulgeru-
lui poate fi folosit la nesfaqit.
Utilizator
10
Este persoana care ruleaza un program, adica persoana care calcu-
latorul pentru a face 0 opera\ie utila, ca de exemplu editarea unui de text,
citirea mesajelor de electronica, explorarea Internetului sau scrierea unui
cec. Numele oficial al utiJizatorului este utilizator final.
Clnd lucram la Microsoft, utilizatorul era cel care provoca majoritatea
necazurilor de pe planeta, dar tot el (sau ea) era eel care platea toate facturile
genera toate profiturile. Cand incepeti sa proiectati programe serioase, tre-
buie sa lua\i in considerare cu aten\ie necesiUi\ile utilizatorului sa iocercati sa
anticipa\i toate problemele care pot aparea.
pentru un programator este simplu sa "se uite de sus" la utilizatori,
primul utilizator aJ programului este aproape intotdeauna ._. programatorul
Dupa ce scrie\i un program, probabil ca yeti fi prima persoana uneori
singura) care ruleaza testeaza programul. nu uitati ca sunte\i intot-
deauna uti.lizator, nu numai programator.
Ce este diferit la C++?
Majoritatea afirma\iilor pe care Ie-am facut despre C+ + se aplica altor
limbaje de programare, precum Pascal, Java, FORTRAN Basic. Toate acestea
sunt timbaje de nivel inalt, ceea ce inseamna ca nu corespund indeaproape codu-
lui dar folosesc cuvinte-cheie - precum "if" (daca) sau "while" (In timp
ce) - care amintesc, de departe, de limba engleza vorbita.
Dar daca toate aceste limbaje au, in esenta, funqionaJitate (pun la
dispozi\ie 0 modalitate de scriere a programelor mai simpla decat in cazul codu-
lui de ce sunt atal de multe?
Fiecare limbaj a fast creat cu un anumit scop. De exemplu, Basic a fast
proiectat pentru a fi simplu de inva\at de utiJizat. In consecin\a, permite 0 sin-
taxa lejera, care poate duce, din pacate, la obiceiuri de programare proaste. Cu
toate acestea, Microsoft a transformat Visual Basic intr-un instrument putemic,
comod rapid, utilizat la construirea apJica\iilor pentru Windows.
Pascal a fost conceput in vederea utilizarii in medii academice, pentru
unor concepte sofisticate de programare. Daca Basic este rapid
admite reguli sintactice Jcjere, Pascal este elaborat plin de sintaxe complexe.
Este un limbaj bun, insa majoritatea programatorilor prefera 0 varianta care
impune mai pu\ine restriqii.
Initial, C a fost conceput pentru scrierea sistemelor de operare. Sintaxa sa
impune 0 structura mai adecvata obiceiuri mai bune) decat Basic este un
10 in limba engleza, user. (N. tr.)
Ce este diferilla (++1

7
J.
2.
3.
-.
._,
...
...,

Cl>
..
.!;
.-
Cl>
"
j:
c:
&.
limbllJ "CUTill-, care scurtiltun scnereit unor progrli11le COn- I
cisco Smta:<3 dlrecra, dar cupnnz310ilrc, i'l liml)ajlJlul C s-a dovedil a fi CXlrem de
populara, de-a lungul timpulul. in rflndunle progrnmllloriJor. Un ali avanlaj al
limbaJuJul C estc ac:eJa eli. lInpl,Jnl:' un llUOl,lr redus de reslriqil: il5adar, Orlce
poslbllii. in cod poate fj aproape inlotdcauna le-aUzala in C.
Cum riim:ine ell C+ +?
Principala diferen\" dlntre C+ + cste aceea cii ulttnlUl di<;pune. in plus.
de posibllit<ltea de pl'ogmmGI't! onemmd jprc ObU:Cfl! AceaSla cSle 0 abordare
adecvata Illal in lucruJ ell sisteme colllplexe, preculll lnlcrk!elc graficc: eu
utilizatorul.$i nu:diile de re\c:a C:t programalOr "orienl!)1 spre ob,cClc". lrebuie
s1\ va punt'!i urmittoarele intreb5ri:
Care SUn! pllncipalclc tlpuri de d:ue (adlCa InfO/malil) din problema care
urmeazi'l <I fi rezoJv<Ha'J
Care sunt oper:llii1e ce lrebuie deflnllc pc=ntru fiecart lip de dale?
Cum Interaqioneaza intJe ele obleclcle de dille:
Cum ramane cu Java C#?
Cind programarea orientala spre obiccte:a deveait la mooa. la sii.rlilul anilor
'80. S-3U facul numeroase incerc1iri de 3 Grea 0 versiune orieotnli spre obiecte a
limbajului C. Bjamo SlrOUSlnlp a creal primul limbaj de acesl gen. a fost
acccptat de un nurodr foone mare de program3lori. Acellimooj. C++, este folOOt
pe scarli larga to prezcnl (fapt pcntro care Sla a'Iarl'urie existenl3 accstei clr1i).
Dar C+ + DU We _ultimul cuv;1nI" ill malC:rie de dczvoltare a unei \-ersiuni
orientate spreobieete a limbajului C. Doua nollimbaje - Java CIf- 5UIIl sufi
cient de apropiate de C++ ptniru a primi eticbeta "baD't pC C"; dar fiealre
limbaj are miciJe sale panicularilali.
E:dsVt caleva difereo\e lOire cde Ird limbaje. C++ afO!iI proiectl\l pentru a (j
comparibil inapoi cu C. in majorilatca cazurilor. iar unele trucuri de programare
in C (dintrc care uncle suot pUlemic conlraiodicaie de noaSlre)
conlmJ,ll.sl funqionezc.tQ C++, dar Sunl de nee:oncepul tn Java C#'.
Java ,i eN sunt lnstrumetlle de cotlStJ1JClie a nplicaliiJor inadeevate pentru
scriert:a de sisteme de opcrare. odopl/l 0 marc parte-din sintnxa Colosit;] in
CIC++. de nu de acx:esull.a ndreso arbitrnre de rnelriorie. Dc ase-
menea, unii le.considerA implemenl!ri pure ale programarii orientale sprc obi1c.
Diferentele dinlre sintaxcle celor doul\ limbaje (Java G#') flU sum alat de
marj. Java a fost Cleat de Sun Microsysrems C"d limbaj independenl do'plalfornu1.
i<irC#'a {osl creal de Microsol'l renfro plal(onna.sa.NET. Limbajclc.: diferA ca
platforma biblioleci de SUpOrL
am menlionat cl C++este. un instrument de-scriere a siste\nelor de ope-
rare, il pUlc!,i folosi la (el de blne penlru crearea progl1lmelor de aJacen": a
joeurilor a programelor pe.ntru uz personal. pcntru eft oram un grad mai mare
de libertate decal aIle Iimbaje. iocl\lsiv Libenalea de a comite erori de nivel redus.
Acesta este mOlrvuJ penlfU care.incerc wferesc de pmenll111ele "capcanc".
esle.dI.. d.\ca joYAI'ali C++. veli glisi Java.l 0# en fiiad uJr de
asimilnl. De asc:menea, C+ + cstc un Iimbaj mlli Uo\'Or de- invt1\al de. dlre eei co
cxj>Crient in C.
8 Capitolul 1. Primele dumneavoastra programe In C++
programarea orientata spre obiecte, am descoperit ca este mult
mai daca se asimileaza mai intai sintaxa instruqiunilor elementare. Ca
atare, nu voi acorda prea multa orientarii spre obiecte pana Ja capitolullO.
Dar, yom prezenta cateva obiecte - componente de date care pot reaqiona
la - la inceputuJ cartii. De exemplu, in acest capitol foJosim cout, un
obiect de date care nu face parte din Jimbajul C. In C, se
prin apelarea unei funqii, care reprezinta 0 serie predefiniUi de instruqiuni.
Dar, cand cout, trimiteti date unui obiect care - in adevaratul sens al
cuvantului - sa
in loc sa va "Am sa apelez 0 funqie care acest text
pe ecran", gandi "Am sa trimit acest text la cout, care reprezinta iqirea la
consoUi (in limba englez3. console output), am sa-J las pe el sa se ingrijeasca de
.
Aceasta se a fi 0 modalitate superioara de aqiune, din mai multe
motive - unele evidente, altele nu. In particular, cout (obiectul la con-
sola) sa mai multe categorii de date, - mai important -
respective pot fi extinse la orice nou tip de date. Abordarea orientata spre
obiecte nu este restransa la 0 serie limitata de formate de date, cum era cazul
in demodata abordare a limbajului C.
Ce anume inseamna trimiterea de comenzi unui obiect modul in care acest
procedeu difera de programarea "de modi! veche" reprezinta una dintre princi-
palele teme ale - punctul central al celei de-a doua a acesteia.
Constructia unui program in C++
Scrierea unui program reprezinta, de fapt, primul pas in crearea unei
In urmatoarele cateva seqiuni yom prezenta toate etapele pe care Ie
parcurgeti.
Introducerea instructiunilor programului
Pentru a scrie un program in C+ + (sau orice alt tip de program), aveti
nevoie de 0 modalitate de a introduce instruqiunile programului. Exista cateva
moduri in care proceda:
Puteti folosi un editor de texte, precum Microsoft Word sau Notepad,
inclusa in sistemul Windows. De fapt, se poate folosi aproape orice editor de
texte. Daca utiJizati aceasta metoda, trebuie sa documentul (sau mai
degraba sursa) intr-un format text simplu.
introduce text intr-un mediu integrat de dezvoltare (in limba engJeza: inte-
grated development environment - acronim IDE). Un mediu de dezvoltare
este un editor de texte combinat cu alte instrumente utile de programare; de
exemplu, Microsoft Visual Studio este un mediu de dezvoltare.
Dupa ce introdus instruqiunile programului verificat pentru a
preveni eroriJe), trece la construqia propriu-zisa a programului.
COl1struetia unui program in c++
9
Construcfia programu/ui (campi/area $i /egarea)
Consrruqia programului reprezinta procesul de conversie a codului sursa
(insrruqiuni C++) Inrr-o care poare fi urilizara. Daca programul esre
scris corecr, se reduce la apasarea unei taste funqionale. De fapt, pro-
cesul se lmp<.lrte in doua erape.
Prima erapa compileazii programul prin conversia instruqiunilor C+ + in
cod (numit "cod obiect"). Daca etapa respectiva etapa urma-
toare ruleaza programul de legare, care combina acest cod cu linii de cod
preluate din biblioteca C+ +.
BibJiuleca C+ + (numita in cercurile de "biblioleCa de rulare')
funqii pe care Ie pentru a executa comune. (Func(ic este
sinonim cu subrutina) De exemp!u, bibJioteca include funqia standard sqrl
(radacina patrata), astfel incar sa nu obligat sa personal radacinlle
patrate. De asemenea, biblioteca include subrutine care trimit date la monitor si
care sa citeasca sa scrie in de date de pe hard-disc.
Figura urmaroare rezuma modul de funqionare a procesului de construqie.
Nu ca, daca un mediu de dezvoJtare integrat, aceste etape se vor
executa In mod automat; este suficient sa 0 tasta funcponala.

prog.obj
(cod

de c++ (cod obi
CI- )
C
+) ;
I progr=un
I
de legare
biblioteca
c++
prug.exe
(program
executabil)
In situatia In care con, truqia a va felicita; nici compilatoruI
niei pr\)gramu! de ilU au gasit erori. Inseamna cumva ca terminat? Nu
chiar. Compilatorul detecteaza erori de gramatica (de sintaxa). Dar, exista
numeroase erori pe care nu Ie poate detecta.
Sa consideram urmatoarea analogie. Sa presupunem ca urmatoarea

Luna cste facuta branza verde.
Aceasta nu este 0 corecta din punct de vedere gramatical. Pentru
a rczolva problema de gramatica, cuvantul din:
Luna estc LiCUl3 din branza verde.
10 Capitolul 1. Primele dumneavoastra programe In C++
Aeum, propozitia nu mai are erori de sin taxa. Dar daea 0 afirmatie este
eoreeta din punet de vedere gramatical, inseamna oare ca este corecta in sen-
su! mai Jarg al euvantuJui - adica adevarata? Evident ca nu. Pentru a face afir-
matia de mai sus adevarata, trebuie sa introduceti cuvantul nu.
Luna nu este facuta din branza verde.
Limbajele de programare sunt asemanatoare. CompiJatorul de C+ + deter-
mina daca programul dumneavoastra este COlect din punct de vedere sintactic.
Daca nu, el indica linia unde s-a produs eroarea. Dar intrebarea mai ampla,
anume Pragramul se camparta corecl in Laale SiIUa!iile?, nu este la fel de evi-
denta. Acest fapt ne conduce in etapa urmaroare.
Testarea programului
Dupa ce ati sa construiti un program, trebuie sa-l rulati de cateva ori,
pentru a va convinge ca face exact ceea ce doriti dumneavoastra. In cazul unui
program de anvergura - un program ce urmeaza a fi distribuit gratuit sau con-
tra cost - este necesar sa-I testati de mai multe ori. (De fapt, mariJe companii
software au departamente intregi care se ocupa numai eu aceasta.)
Erorile pe care Ie diutati in acest stadiu se numesc erori de logicii de program.
Aceste erori presupun ca ati utilizat coreet sintaxa limbajului (nu ati pus
virguleJe, de exemplu), dar, dintr-un motiv sau altul, programul nu se comporta
cum ar fi de dorit.
Erorile de logica de program pot fi mult mai grell detectabile dedit erorile
sintactice. Sa presupunem ca programul un numar eronat sau ca i$i
brusc exeeutia fara nici un motiv evident. Care este instruqillnea ce a
determinat problema? Raspunsul nu este intotdeauna dar. Pot exista mai muJte
cauze - de exemplu, poate ca ati facut presupuneri care sunt valabile in anu-
mite situatii, dar nu in toate. Procesul de testare a unui program de deter-
minare a originii unei probleme se depanare.
Revizuirea dupa necesitali
Daca programul se executa coreet, ati terminal. Dar, daca prezinta erori de
logica de program, a$a cum am aratat, trebllie sa determinati sursa erorii, sa
reveniti sa operati modifieari in eodul sursa C+ +, dupa care sa reconstrlliti
programul.
in cazul programelor complexe, parcurgerea acestui eiclu poate fi necesara
de mai multe ori. Un asemenea program poate necesita numeroase testari pen-
tru a se asigura faptu! ca programul se comporta corect in toate cazurile. Progra-
muJ nu este cu adevarat gata decat atunci cand ati terminat testarea revizuirea.
ProgrameJe simple nu necesita decat un numar mic de teste.
lnstalarea propriului dumneavoastra compilator de c++
Scriere
cod C++
Compilare
9i legare
Rulare S;i
testare
program
11
NU
At;:i
terminat!
Instalarea prapriului dumneavaastra campi/atar de C++
Daca. dispuneri de propriul dumneavoastra compilator de C+ +, il puteri
folosi pentru a compila a executa exemplele din aceasta carte. Pentru a obrine
cele mai bune rezultate, trebuie sa folosiri 0 versiune recenta a limbaJului C+ +,
dar exemplele sunt scrise astfel incat sa fie acceptate de 0 varietate de compila-
toare de C++.
De asemenea, mai puteri instala compilatorul de C+ + GNU existent pe
CD-ul care cartea. Acesta este un compilator oferit gratuit pentru
medii MS-DOS - din Windows, puteri rula compilatorul prin deschiderea, in
prealabil, a unei ferestre de comancla MS-DOS. Averi permisiunea de a distribui
toate programele pe care Ie creari cu ajutorul compilatorului GNU. De asemenea,
CD-ul mai conrine mediul de dezvoltare RHIDE, pe care il putqi folosi Ia scrierea
la testarea programelof. Pentru a instal a compilatorul, localizari
README.TXT situat in folderul radacina al CD-ului urrnari instruqiunile. De
asemenea, CD-ul mai conrine folderul "Exemple de program raspunsuri", 'in
care se afIa subfolderele cu raspunsuri la toate exerciriile din carte.
c:ml CD-uJ mai conrine sursa pentru compilatof. Nu trebuie sa Ie instala\i
decat daca doriri.
12 Capitolul 1. Primele dumneavoastra programe In C++
Exemplul 1.1. unu; mesaj
Pentru a Incepe sa un sursa nou
Iiniile de program prezentate mai jos. Daca mediul de dezvoltare
RHlDE, comanda New din mertiul File. Apoi introduce\i de la tastatura
codul sursa exact cum se vede. In In care utiliza\i Microsoft Visual
Studio, urma\i instruqiunile din seqiunea intitulata Dacii folosi!i Microsoft VISual
Studio, de la pagina urmatoare.
Unele opera\ii trebuie executate diferit In Visual Studio, deci nu va
ca programul sa fie corect compilat decat dupa consultarea seqiunii respective.
printl.cpp
#include <iostream>
using namespace std;
int main ()
cout "Never fear, c++ lS here!" 11;
return 0;
Linia a cincea, care incepe cu cout, nu trebuie sa fie decalata cu un nllmar
fix de De asemenea, dintre cuvinte semnele de (ca,
de exemplu, caracterul ,,< <") poate con\ine un numar nelimitat de albe.
Dar trebuie sa atent la cateva lucruri. Pentru Incepllt, dintre
majuscule Iiterele mici este importanta. C+ + este din acest punct
de vedere. Nu nimic cu majuscule, cu excep\ia textelor pJasate Intre
ghilimele. De asemenea, nu de caracterul punct virgula (;) situat la
a doua, a cincea a
Dupa ce introdus programul, sub numele printl,
rula\i-l. lata ce va programul, dadi este corect introdus rulat:
"Never fear. c++ is here!"
Daca folositi mediul RHIDE
,
Dad instalat ve;'siunea shareware a limbajului C+ + descrisa in
unea precedenta, iata cum se compileaza se ruleaza programul:
1. programul sub numele printl. CPP, daca nu fi'icut-o deja. alege
un alt nume pentru program, daca dar intotdeauna extensia . cpp.).
In mediul RHlDE, Save din meniul File.
II Nu va fie fricii, C+ + nu pica! (N. tr.)
unui mesaj
13
2. pe tasta F9 pentru a construi programul.
3. Daea nu mesaje de eroare, inseamna ea programul a fost eompiJat legat
eu succes. Felicitari' Daea ap primit mesaje de eroare, atunei fie nu instalat
coreet compilatorul, fie seris 0 parte a exemplului. Reveniri
daca introdus fiecare caracter - indusiv semnele de - exact
eum se arata in carte.
4. Dupa ee programul se compdeaza eu sueees, parasind mai intai mediuJ
RHIDE. Din meniul File DOS Shell.
5. 0 data ajuns In DOS Shell, introdueqi de la tastatura numele programului:
printl
6. Cand terminat de testat programul, de 1a tastatura:
exit
Mai rula programe din mediul RHIDE, dar controlul este instanta-
neu remis acestui mediu dupa rularea programului . .A?adar, daca programul nu
face 0 pauza, nu avea oeazia de a vedea bine datele de iqire. De aceea, reco-
mand utilizarea eomenzii DOS Shell.
Daca folositi Microsoh Visual Studio
,
Daca Microsoft Visual Studio pentru a scrie programe In C+ +, mai
cateva lueruri de facut. Visual Studio este un excelent instrument de scriere
a programelor, dar este conceput, mai ales, pentru crearea de Windows
importante, nu de programe simple (adiea primele lucruri pe care trebuie sa Ie
facqi daca Ineepator in materie de C++).
Pentru a scrie un program in Visual Studio, mai Intai trebuie sa
tipul corect de protect. (In limbajul Visual Studio, un proiecl reprezinta toate
care se combina pentru a forma un program.)
1. Din meniul File, alegqi submen.iul File apoi comanda New. Sau, puteti execu-
ta dic pe butonul New Project, dad acesta este In apropierea centrului
ecranului.
2. caseta de dialog executand die pe Console Application
consola) ca tip de proiect. De asemenea, numele programului - in
acest caz, printl - dic pe butonul OK.
3. Daca printl. cpp nu este in !ista numelor de
situata in partea stanga a ecranului, dati dublu-dic pe acesta.
14 Capitolul 1. Primele dumneavoastra programe In C++
Inainte de a introduce orice hnii de cod C++, mai intai tol codul pe
care il vede\i in print 1 . cpp, cu excep\ia urmatoarei linii:
#include <stdafx.h>
Aceasta instruqiune trebuie inclusa inloldeauna in aplica\iile de consola
(adica aplica\iile non-Windows) create cu Visual Studio. Daca foJosi\i Visual
Studio pentru a parcurge aceasta carte, nu uita\i sa introducqi intotdeauna
aceasta linie la inceputul fiecarui program.
In codul printl. cpp trebuie sa se prezinte astfel (Jinia adau-
gata este scrisa cu caractere aJdine):
#include <stdafx.h>
#include <iostream>
using names pace std;
int main ()
cout "Never fear, c++ lS here
l
";
return 0;
Pentru a construi programul, este suficient sa pe tasta F7. Astfel, vor
fi lansate in execu\ie atat compilatorul, cat programul de legare.
Daca ali felicitari! Sunte\i pe drumul cel bun. Daca programul nu este
construit cu succes, asigura\i-va ca ali scris corect fiecare linie, cuvant
cu CUVZIOt.
Pentru a rula apoi programul, apasa\i CTRL+F5. mai exista alte
metode de rulare a programului din Visual Studio, acesta este singurul mod de
a evita apari\ia rapida pe ecran a ferestrei MS-DOS, care datele de
iqire dispare imediar. CfRL+F5 (Iansare fara depanare) ruleaza programuJ
apoi un mesaj utiJ "Press any key to continue" (Apasa\i orice tasta
pentru a continua) pentru a va oferi ocazia sa vede\i datele de
'\JODe.IU-!.
Cum funqioneaza
Credqi sau nu, acest program simplu conIine 0 singura instruqiune reala.
Pentru moment, pute\i asimila restul programului unui -Iucruri pe care
trebuie sa Ie include\i, dar pe care Ie pute\i ignora fara nici 0 grija. (Daca va
intereseaza detaliile, in urmaroarea seqiune intitulata Penlru cei inleresa!il se
discuta despre directiva #include.)
Sint<L'I':a de mai jos prezinta elementele standard, obligatorii, scrise cu aldine.
Pentru moment, nu va intereseaza de ce sunt necesare; folositi-Ie si atat. Intre
acolade ({}) insera\i Iiniile efective de program - care, in acest caz, este alcatuit
dintr-o singura instruqiune.
#include <iostrearn>
using narnespace etd;
i?area unui mesaj 15
int main() {
Enter-your_s ta tements_here ./12
return 0;
Acest program are 0 singura instruqiune real a (pe care 0 inserati In a cincea
linie a programului de sus).
CQut "Never fear, C+i is here!";
Ce este cout? Este un obiect - concept despre care yom discuta muir mai
mul te In a doua jumatate a caqii. Intre limp, tot ceea ce trebuie sa este: cout
este prescurtarea de la "console output" (iqire la consola). Cu alte cuvinte,
reprezinta ecranul calculatorului. Clnd scrieti ceva pentru ecran, textul se
exact cum va
In C+ +, datele de se folosind cout un operator de "flux"
orientat spre stanga <), care indica trecerea dateJor de la 0 valoare (In acest
Never fear, C++ is here!) fa consola. Nu yeti folosi niciodata
cout grqit daca iJ vizualizati In acest mod.
D .... "Never fear, C++ is here!" I
-
consola

cout "Never fear, C++ is here!";
Nu uitati caracterul punct virgula (;). Fiecare instruqiune C++ trebuie sa
se Incheie cu punct virgula, cu putine exceptii.
Din motive tehnice, cout trebuie sa apara Intotdeauna In partea stanga ori
de cate ori este folosit. In acest caz, datele se scurg spre stanga.
"sagetile" orientate spre stanga, care reprezinta, de fapt, doua semne ",mai mic"
( < <) combinate.
In tabelul urmator, sunt prezentate alte utilizari simple ale lui cout.
Instruc,iune Ac,iune
cout "Le ai cu C++?" cuvintele "Le ai cu C+ +?"
cout < < "Salut!" cuvantul "Salut!"
cout < < "Hai noroc, barbate!" cuviotele "Hai noroc, barbate!"
12 Introducqi_instrucpunile_dumncavoa\tra_aicil (N. Ir.)
16 Capitolul 1. Primele dumneavoastr- programe In C++
Ex rcit.... ii _
Exercitiul 1.1.1. un program care mesajul "Get with the
program!" (Da-i bataic cu programul
l
). Dad dori\i, puk\i Jucra ell acelOJii
sursa pe care l-ati folosit in exemplul 11 pute\i modifica dupa dorio\a.
(Sugeslic: modificati numai lextul indus intre ghilime\e; eu alte cuvinte,
relolositi intrcg eodul de programare.)
1.1.1. Serie\i un program care numelc dumncavoastra.
Cum ramane cu #include nusingU?
Am spus e5. a cincca linie a programului este prima instmqiunc "realii" a aces-
tuia. Am discutat dcspre prima linie:
#include <iostream>
AcesLa cste un cxemplu de dircctiva de preproce.l'or din "'+ +. (J instruqiunc ge-
nerala destinaUi compilatorului de C+ +. 0 direct iva de forma
#incl.ude <. f i 1 eIlame>
incarca declaratii definirii care accept a0 parle a bibliotccii standard C+ +. Fara
aceasta direct iva. nu pUlCri folosi couto
Dacii ati folosit versiuni mai vcchi de C+ + C, poatc va intreba\i Jt e au se
specificii aici un (de excmplu. un eu xtt'fisia. h). ios tream cste
un de tip include vial/ai, caw contine informalii 1ntr-o fonna precnmpilaUi.
Dad sunte\i ineepator in materic de C++, csle suficienl sa rcline!i cii trcbuie
sa foJ.osiri #include pentm a activa suportul pentm anumitc componcnte ale.
bibJiotccii standard C+ +. Ulterior, c[lOd vom ioeepc sa folosim [unelii matema-
tiee preeuro sqrt (square root - radiicina piitraUi), va trebui s; activa\i suportul
pcnlru biblioteca de funqii:
#include <math.h>
Este aceasta 0 munc,l in plus? Da. Ar fi putut fi C++ proic tat fara acestca?
Poate. fi.?ierele de- tip include au apamt din eauza unci difcrente dintrc
Iimbajul C fundamental biblioteea de ruJarc standard. (Programatorii avaosa\i
in C/C+ + evita uneori bibliotcca sau 0 modilica.) Funqiile obiecteJe din
biblioteci - indispensabilc penlru inceparori - sunt lratate exact '<I
funqiiJe definite de utilizator, ceca ee inseamna cum veti invata In eapit lui '1)
di Irebuie de-darale. 1.8 ace-asIa sunt bune de tip inc1ude: va sc lesc de
obligatia de a dcclara.
Dc asemenea, trebuie sa folosili 0 instruqiunc using. Aceasla permitc
retcrirea dire-eta la obiccte precum std: : couto Fiira aceastii instructiune ar fi
Irebuil sa mesajele astfel:
std: :cout "Never fear, c++ is here";
Yom fOJ(lSi cout pt' lui cin) din abundent3, ca de altfel un ait
siroba! std. denumit end!. ca. pcnlru moment este suficient sa inserati 0
instruqiulie using In lnccputul fiedirui prog RIll.
Trecerea la urmatoarea linie de
Trecerea la urmatoarea linie de afisare
,
17
In c+ +, textul trimis pe ecran nu treee in mod automat !a urmatoarea linie
fizica. Trebuie sa un caracter linie nouo. (newline) pentru aceasta. Dad\ nu
un caracter linie noua, intregul text este pe !inie fiziea.
(Exeeptie: daea nu un earacter Jinie noua, textul poate treee in mod
automat pe randu! urmator atunei dnd !inia fiziea se umpJe, dar aeeasta poate
duee la rezultate inestetiee.)
o modaJitate de afi$are a unui caracter linie noua consta in [olosirea con-
stantei predefinite end!. Ca cout, endI face parte din de nume std:
std: :cout "Never fear. C++ is here!" std: :endl;
Dar, atata vreme cat plasati aceasta instruqiune la inceputuJ programului:
using namespace std;
nu trebuie sa justificati fiecare utilizare a lui cout end!. In consecinta, putqi
scrie instruqiunea de astfel:
cout "Never fear. C++ is here!" endl;
Numele "endl" este prescurtarea de la "end line" (sfaqitul randului) se
cite$te "end-el", nu "end-one".
o alta modaJitate de a insera un caraeter linie noua consta in inserarea ca-
racterelor \n. Aceasta este 0 secventa escape, pe care C+ + 0 interpreteaza ca
avand 0 semnificatie speciala, in loc sa 0 citeasca literal. lnstruqiunea urmatoare
are efect ca exemplul de mai sus:
cout "Never fear, C++ is here! \n" ;
18 Capitolul 1. Primele dumneavoastra programe In C++
ExempJul 1.2. Afi$area pe mai multe linii
Programul din aceasta seqiune mesaje pe mai multe linii. Dad!
introducqi manual programele, nu sa majusculele minusculele
exact cum se vede in carte - este posibila modificarea marimii
literelor inc/usc intre ghilimele, fara a afecta programuJ.
print2.cpp
#include <iostream>
using namespace std;
int main ()
cout "I am Blaxxon,"13 endl;
cout "the godlike computer." 14 endl;
cout "Fear me!"15 endl;
return 0;
Salvati programul sub numele print2 . cpp, iar apoi compilati-1 rulati-l
cum am explicat anterior, in exemplul1.1.

]t)9 Cum funqioneaza
Acest exemplu este asemanator primului exemplu prezentat. Principal a
diferenta este ca exemplul de folosqte caractere de tip linie noua. Daca
aceste caractere ar fi fost omise, programul ar
I am Blaxxon, the godlike computer. Fear me!
iar dumneavoastra nu dorip asta.
Conceptual, figura urmatoare prezinta modul de funqionare a instruqiu-
nilor din program:
D ....... f---I "I am Blaxxon" I...... ---,1 linie noua
-
consola

cout
13 "Eu sunt Blaxxon", (N. tr.)
14 ealeulatorul divino (N. tr.)
15 Temqi-va de mine' (N. tr.)

I am Blaxxon endl;
cout "This is a " "nice" "C++ program.";
In acest mod, putqi orice numar de articale separate, din nou,
acestea nu vor trece pe urmatoarea linie fizica fara un caracter linie noua (endl).
Puteri trimite mai multe elemente la consola cu a singura instruqiune.
pe mai multe linii
19
I
Cand este executata, instruqiunea urmatoarele:
This is a nice C++ program. 16
Sau putep inglaba un caracter Jinie naua, astfel:
cout "This is a " end1 "C++ program.";
care are ca rezultat:
This is a
C++ program.
Acest exemplu, ca celalalt, returneaza (lnapaiaza) a valoare. "Returnarea
unei valori" este procesul de trimitere inapoi a unui semnal-in acest caz, catre
sistemul de operare sau mediul de dezvoltare. a valoare se returneaza folosind
instruqiunea return, sub forma:
return 0;
Valoarea returnata de funqia main este un cad trimis sistemului de operare
prin care 0 indica Taate exemplele din aceasta carte returneaza va]oarea O.
CIlIm Valorile returnate sunt mai utile pentru alte categorii de funqii, despre care
in capitolul 4. Relurnarea unei valori din funqia main este unul din-
tre acele lucruri agasante care nu par utile la prima vedere, dar pe care, pur
simplu, trebuie sa Ie face!i. (Retineti: unele programe opteaza pentru a returna
valori diferite de 0, pentru a indica existenta anumitor probleme.) Pentru
mament, returnarea valorii 0 din funqia main este unul dintre acele lucruri care
trebuie puse in program pentru a va asigura ca este carect. "De ce trebuie sa fac
asta?", intreaba copilu!. "Fiindca spun eu", raspunde tata!.
c,.ItIi
Exercitii
Exercitiul1.2.1. Eliminari caracterele linie noua din exempJul prezentat in
aceasta seqiune, dar inserati spatii suplimentare astfel mcat sa nu lnghesuiri
cuvintele lntre ele. (Sugestie: nu uitati ca C+ + nu insereaza automat spatii in
de Rezultatul final trebuie sa aiba aspectul urmator:
I am Blaxxon, the godlike computer. Fear me!
Exercitiul 1.2.2. Modificati exemplul astfel mcat sa a linie vida mtre
fiecare daua linii de iqire; cu aJte cuvinte, spatiati rezultatulla daua randuri, nu la
un rand. (Sugestie: dowl caractere linie noua la fiecarui de text.)
16 Accsta cstc un program C+ + intcrcsant. (N. tf.)
20 Capitolul 1. Primele dumneavoastra programe in c++
Ce este un
Dc la meeput. am folosit texte intre ghilimcJe, ca in inslruqiunea
cout "Never fear, c++ is here!";
Tot ce se aflii In afara ghilimelelor face parte din sintaxa C+ +. in interiorul
ghilimelelor sc giiscsc date.
De [apt. toate dateJe slocale Intr-un calculator sunt, In esenp, numeriee. Dar.
in funqie de modul de utilizare, acestea pot fi intcrpretate sub forma unui de
caractcre tiparibile. Ceca ce se iTItampHi 10 cazul nostru.
Poatc ali mai auzit de coduri ASCIl. "Never fcar, C+ + is here!" din acest
I exernplu reprezinUi dale ASCII. Caraeterele 'N', 'e', 'v', 'e' etc. sunt stocate in octep
individuali reprezentand fiecare un cod numeric care corespunde unui caracter ce
se poate
Yom discuta mult mai multe desprc acest tip de date in capitoluJ 7. Ceea ce
trcbuie re\inut estc faptul C<'i textele incluse intre ghilimele sunt considerate date,
nu comenzi. Aeeasta categoric de date cste consideratii a fi un (In limba
engJezii: string) de text sau, mai frecvent numil, un
Stocarea date/or: variabi/e C++
Daca ar realiza numai unor mesaje stupide, c+ + n-ar fi foartc uti!.
Ideea este, de regula, sa se ob\ina date noi dintr-o sursa - ea de exemplu, date
introduse de utilizatorul final - sa se manipuleze acestc date Intr-o maniera
iotercsanta.
Asemenea opera\ii necesita variabile: acestea sunt loca\ii In care putc\i piasa
datele. Pute\i asimila variabilele unor casete magice in care se gasesc valori. Pe
masura evolu\iei sale, programul poate citi, scrie sau modifica aceste casete dupa
necesita\i. In exemplul urmator, yom folosi variabile numite ctemp ftemp, In
care se VOl' stoca valori de temperatura Celsius, respectiv Fahrenheit.
BB
ctemp ftemp
Cum ajung vaJorile sa fie inserate In variabile? 0 metoda consta in introdu-
cerea de la consola. In C++, valorile pot fi introduse folosind obiectul cin, care
reprezinta (suficient de adecvat) date introduse de la consoli! (console input).
A1aturi de cin se folosqte un operator de flux, care indica scurgerea datelor spre
dreapta (> .
Introducere In tipurile de date
D
-
consola
(intrare)
o
ctemp
21
Cln ctemp
lata ce se Intampla ca raspuns la aceasta instruqillne. (ProcesuJ real este
ceva mai complicat, implicand verificarea unui "buffer de intrare", dar ceea ce
urmeaza reprezinta procesului Intr-un program simplu.)
1. suspenda ca utilizatorul sa introduca un numiir.
2. UtiJizatorul introduce un numar apasa pe tasta ENTER.
3. Numarul este acceptat pasat In variabiJa ctemp (in acest caz).
4. Programul reia
Deci, daca va se intampla 0 de Illcruri ca raspllns la
instruqiunea:
cin ctemp;
Dar, Inainte de a putea folosi 0 variabila in C+ +, trebuie sa 0
Aceasta este 0 regula imperativa C++ de limbajul Basic, care
este neglijent in aceasta privinta nu necesita 0 declarare. Intregi de
programatori in Basic s-au dat cu capul de calculator descoperind erori derivate
din Jejeritatea pe care 0 IimbajllJ In ceea ce variabilele.)
Este un aspect sllficient de important pentru a fi din nou, deci 11 yom
transforma In regula de baza:
In c++, este obligatorie declararea unei variabile inainte de utilizarea
acesteia.
Pentru a declara 0 variabila, trebuie mai Intai sa ce lip de dale sa
Acesta este un concept aUtt 10 C+ +, cat In majoritatea celorlalte
limbaje.
'ntroducere in tipurile de date
o variabiJa este ceva care poate fi considerat 0 "cutie magica" In care
piasa - sau mai degraba dale. Dar ce fel de date?
Toate dateJe dintr-un calculator sunt, 10 ultima numerice, dar sunt
organizate intr-uou] diotre cele trei formate elementare: Intreg, in virgula
mobila de text.
22 Capitolul 1. Primele dumneavoastra programe in c++
Intreg
Virgula mobila
de text
5 -33
"Call me IsJunael"17
Exista numeroase intre formatul in virgula mobila cel intreg.
Dar, pentru programele de inceput, regula este simpla:
Dadi trebuie sa stocafi numere cu parti fractionare, folositi 0 variabila in vir-
gula mobila; in caz contrar, folositi tipul intreg.
PrincipaJul tip de date in virgula mobiJa din C+ + este double. Pare un nume
ciudat; este prescurtarea de la "double-precision .floating point" (virgula mobiJa
cu dubJa precizie). Mai exista un tip cu simpla precizie (float), dar se utilizeaza
rareori. Clnd nevoie de capacitatea de a rqine poniuni fraqionare,
rezultate mai bune - mai mesaje de eroare - daca
double.
o double are sintaxa urmatoare. ca aceasta instruqiune se
incheie cu punct virguUi (;), la fel ca majoritatea categoriilor de instruqiuni.
double nume_variabila;
Se mai poate folosi 0 asemenea declara\ie pentru a crea 0 serie de variabile.
double nume_variabilal, nume_variabila2,
De exemplu, aceasta instruqiune creeaza 0 variabila double numita oDubla:
double oDubla;
Aceasta instruqiune creeaza 0 variabila de tip double.
oDubla
Instruqiunea urmatoare, care sintaxa mai complexa, declara patru
variabile double numite b, c, d amount
l8
:
double b, c, d, amount;
17 IsmacJ" - cstc cu care incepe romanul Moby Dick al scriitorului american
Herman Melville. (N. tr.)
IR suma. (N. tr.)
Conversia temperaturilor
Efectul acestei instruqiuni este similar cu urmatorul:
double b;
double c;
double d;
double amount;
23
I
Rezultatul acestor consUi in crearea a patm variabile de tipul
double.
DODD
b c d amount




q,
....vI
CI)
Q;)
lo..,
(1)
"t-'
c::
'-
'- (1)
Co)
:::J
lo..,
"t-'
c::
(1)
a...
De ce dublii nu simplii precizie?
Dubla preeizie este asemanatoare eu simpla preeizie, numai ca este mai buna
dedit aeeast3. Dubla preeizie aecepta 0 gama mai larga de valori, cu 0 mai mare
preeizie. (Da, este posibiJa pierderea de preeizie in cazul variabilelor in virgula
mobiJa; aeesta este un subiect la care yom reveni in capitolele urmatoare.)
Deoarece dubla precizie este mai exactii, tipul de date In virgula mobila cste
preferat In C+ +; Inainte de a executa calcule In virgula mobiHi, C+ +
toate valorile III formatul dubla precizie, daca acestea nu se gasesc deja in acest
format. De asemenea, C+ + stocheaza constante in virgula mobiJii In formaL in
dUbla precizie, dad nu se specifica alteeva (de exemplu, folosind notaria 12.5F In
loc de 12.5).
DubJa precizie preziuta insa un dezavantaj: are nevoie de un volum mai mare
de spariu - mai concret, de opt octeri in Joe de patru (in mediile de tip PC). Aces-
ta nu este un factor destabilizator nici maear pentru programele simple, deoarece
eoproeesoarele matematice aeeepta, In mod direct, operatiiJe pe opt octeti.
AspectuJ trebuie avut in vedere numai eand pc disc trebuie stoeate cantitati Illari
de valori in virgula IllobiJa. Atunci numai atullci se va lua in considerare uti-
Jizarea tipului cu simpla precizie float.
Exemplul 1.3. Conversia temperaturilor
Nu cum sunt, dar eu, de fiecare data cand rna duc In Canada trebuie
sa convertesc mintal temperaturile din Celsius In Fahrenheit. Daca fi avut un
calculator portabiJ, ar fi fost frumos sa-l pun sa calculeze; caJculatoarele se
pricep la lucruri din acestea ...
lata formula de conversie. Cand este utilizat la combinarea a doua vaJori,
asteriscul (*) inseamna "inmulrit cu".
Fahrenheit = (Celsius * 1,8) + 32
24 Capitolul 1. Primele dumneavoastra programe In C++
Acum, un program util nu calculeaza 0 singura valoare de temperatura
atata tot. Daca am fi avut nevoie numai de aceasta, am fi folosit
Calculator din Windows! Nu, un program cu adevarat util preia OIice valoare
introdusa ca temperatura in grade Celsius 0 Pentru aceasta este
nevoie de unele caracteristici noi, cum ar fi:
preluarea datelor introduse de utilizator;
stocarea valorii introduse intr-o variabila.
lata programul compler. Deschideti un sursa nou, introduceti progra-
mul salvati-l sub numele convert. cpp. Apoi compilati-1 executari-l.
convertl.cpp
#include <iostream>
using names pace std;
int main ()
double ctemp, ftemp;
cout "Input a Celsius temp and press ENTER:19";
cin ctemp;
ftemp = (ctemp * 1.8) + 32;
cout "Fahrenheit temp is: " ftemp;
return 0;
Programe1e sunt mai de urmarit daca se adauga comentarii, care in
C+ + se noteaza prin perechi de caractere slash (1/). Comentarii1e sunt ignorate
de compilatorul de C+ + (adica nu au nici un efect asupra comportarii progra-
mului), dar sunt utile pentru utilizatori. lata versiunea "comentata":
convert2.cpp
#include <iostream>
using namespace std;
int main ()
II Declare floating-pt variables.
2o
double ctemp, ftemp;
19 Introducqi 0 temperatura In grade Celsius ENTER: (N. tr.)
20 Declararea varibilclor In virgula mobila. (N. tr.)
Conversia temperaturilor
convert2.cpp (continuare)
25
II Prompt and input value of ctemp (Celsius Temp) .21
cout "Input a Celsius temp and press Enter:
cin ctemp;
" .
II Calculate ftemp (Fahrenheit Temp) and output it.
22
ftemp = (ctemp * 1.8) + 32;
cout "Fahrenheit temp is: " ftemp;
return 0;
Aceasta versiune comentata, este mai de citit pentru om, necesita
mai multa mund la introducere. Parcurgand exemplele din aceasta carte, puteti
amite lntotdeauna comentariile sau puteti opt a pentru a Ie adauga ulterior. Nu
uitati urmatoarea regula de baza pentru comentarii:
Liniile de program C+ + care iocep cu 0 pereche de caractere slash (If) suot
comentarii sunt igoorate de catre compilatorul de C++ pana la
liniei.
Adaugarea comentariilor este Intotdeauna optionala, dar este 0 idee buna.
Mai ales daca vreo fiinta umana (inclusiv dumneavoastra) va arunca vreodata
privirea pe respectivul program C++.

it)9 Cum funqioneaza
Prima instruqiune din cadrul funqiei main declara variabilele ctemp
ftemp (ambele de tipul double). Aceste variabile stocheaza temperaturile expri-
mate In grade Celsius, respectiv Fahrenheit.
double ctemp, ftemp
Astfel, avem doua !ocarii unde putem stoca numere. Deoarece ele sunt de
tipul double, pot paqi fraqionare. Nu uitari ca double simbolizeaza "va-
lori In virgula mobiJa dubla precizie".
DC
ctemp ftemp
21 Solicitarca si iotroducerea valorii lui ctemp (temperatura 10 grade Celsius). (N. tr.).
22 Calculeaza ftemp (temperatura In grade Fahrenheit) 0 (N. tr.)
2 Capitolul 1. Primele dumneavoastra programe In C++
Urmatoarele doua instruqiuni solicita utilizatorului sa introduca datele de
mtrare apoi Ie stocheaza In variabila c temp. Sa presupunem ca lltilizatorul
introduce ,,10". Apoi, valoarea nllmerica 10.0 este introdusa In ctemp.
-..---11 "Enter a Celsius temp and press ENTER: "I

-

(ie:;;j re)
cout ",."l.:ler a Celsius temp and press ENTER:
" .
,
D
-
consoli.
(intra.re)
ctemp
cln clemp
in general, folosi instruqiuni similare in proprii[e dumneavoastra pro-
grame pentru a un mesaj de solicitare apoi pentru a stoca datele intro-
duse. Mesajul de solicitare este foarte util, deoarece altfel utilizatorul s-ar putea
sa nu ca are ceva de filcu\.
Dumarul introdlls in acest caz a fost ,,10", este stocat sub forma 10.0.
Din punct de vedere pur matematic, 10 10.0 sunt valori echivalente, dar In
C++ ,,10.0" indica faptu! ca valoarea este stocata In formatulln virgula
mobil a, nu In formarul intreg. Se va vedea ca acest fapt are impor-
tanle, a9a cum yom explica in capitolul urmator.
Instruqiunea care urmeaza executa conversia efcctiva, folosind valoarea sto-
cata In c temp pentru a calcula valoarea variabilei f temp:
ftemp = (ctemp * 1.8) + 32;
AceasUi instruqiune 0 alribuire; valoarea din partea dreapta a sem-
nulUl egal (=) este evaluata 9i apai copiata In variabila din partea stanga. Aceas-
ta este una dintre ceJe mai comune categorii de instruqiuni in C++.
Din nou, presupunand ca valoarea ,,10" a fost introdusa de utilizator, diagra-
ma urmatO<lre indica modul de a datelor prin program:
Conversia temperaturilor
SJl
* 1.8)
(10.0 * 1.8)
ftemp
+ 32
+ 32
27
ftemp = (ctemp * 1.8) + 32 ;
In final, programul rezultatul - in cazul nostru, SO:
!!!!!!!!!!!!:!!!!!! ..... .---1 "Fahrenhei t temp is: " 1... .--- E
consola
(ie9ire)
cout "Farenheit temp is; " ftemp ;
n'.

Vari nte al exemplului


Daca cu ultimul exemplu, va pune intrebarea daca
cste cu adevarat necesar sa doua variabite in loc de una.
De fapt, nu este necesar. Bine venit in lumea optimizarii. Versiunea
urmatoare prima versiune a programului, debarasandu-se de
f temp combinand etapele de conversie a datelor de Procedeul
nu este intotdeauna funqional - intr-un program mai complex s-ar putea sa fie
necesara memorarea valorii Fahrenheit - dar aici este numai bun.
.... - ..
convert3.cpp
#include <iostream>
using namespace std;
int main ()
II Declare ctemp as a floating-pt variable.
23
(conlinuare pe pagzna urrnatoare)
D.:clararea ct'o:mp ca variabilii In virgulii mobila. (N. tr.)
28 Capitolul 1. Primele dumneavoastra programe In C++
convert3.cpp (continuare)
double ctemp;
II Prompt and input value of ctemp (Celsius Temp).
cout "Input a Celsius temp and press ENTER:
cin ctemp;
" .
,
II Convert ctemp and output results.
cout "Fahrenheit temp is: " (ctemp * 1.8)
+ 32;
return 0;
Sesiza\i deja un model care se repeta? In cele mai simple programe, modelul
este urmatorul:
1. Declararca variabilelor.
2. Preluarea datelor de intrare de la utiJizator (dupa unui mesaj de solicitare).
3. Efectuarea calculelor rezultatelor.
De exemplu, programul urmator efectueaza 0 alta opera\ie, dar ar trebui sa
va fie familiar. Programul cere un numar apoi patratul acestuia
(numarul inmul(it cu el Instruqiunile sunt asemanatoare celor din exem-
plul precedent; singurele aspecte care difera sunt numele variabiJei (n) formula
de calcul folosita (n " n).
square.cpp
#include <iostream>
using namespace std;
int main ()
II Declare n as a floating-pt variable.
24
double n;
II Prompt and input value of
24 Dcclararca lui n ca variabila In virgula mobila. (N. Ir.)
Solicita introduce valoarea lui n. (N. tr.)
Un cuvi'mt despre numele de variabile cuvintele-cheie
square.cpp (continuare)
cout "Input a number and press ENTER: 26
cin n;
II Calculate and output the square.
27
cout "The square is: "28 n * n;
return 0;
29
e-ltil
Exercitii
Exercitiul 1.3.1. exemplul astfelincat sa execute conversia inver-
sa: se introduce 0 valoare in ftemp (Fahrenheit) se convertqte In ctemp
(Celsius). Apoi rezultatele. (Sugestie: formula de conversie inversa este
ctemp = (ftemp - 32)/1.8.)
Exercitiul 1.3.2. programul de conversie din Fahrenheit In Celsius
folosind 0 singura variabila, anume f temp. Aceasta este 0 optimizare a exer-
ui 1.3.1.
Exercitiul 1.3.3. un program care introduce 0 valoare lotr-o vari-
abila n afi.;;eaza cubul acesteia (n * n * n). ca de iqire sa
cuvantul "cub", nu "patrat".
Exercitiul 1.3.4. exemplul square. cpp folosind numele de vari-
abila num In loc de n. Nu sa numele oriunde apare n.
Un cuvant despre numele de variabile cuvintele-cheie
Acest capitol a folosit variabilele ctemp, ftemp n. In 1.3.4; s-a
propus Inlocuirea lui "n" cu "num", cu ca inlocuirea sa se produca In
mod consecvent, in intreg programul. "num" poate fi un nume corect
de variabila.
fi putut alege dintr-o diversitate infinita de nume de variabila, In loc de
"n" sau "num". De exemplu, fi putut atribui unor variabile numele "termina-
tor2003", "robotAsasin" sau "GuvernatorulCaliforniei".
In care sunt numele de variabile permise .;;i care nu? Raspuns:
folosi orice nume cu sa urmatoarele regu1i:
26 [ntroducqi un numiir apiisa(i ENTER. (N. rr.)
27 Calculcaza si afiscazii valoarea piilratuilli. (N. tr.)
28 "Piitratul cslc: " (N. tr.)
30 Capitolul 1. Primele dumneavoastra programe In C++
PrimuJ caractcr trebuie sa fie 0 litera - nu paate fi numar. Tehnic vorbinJ.
primuI caracter paate fi a de subliniere ( _ ), dar bibliotcc.! C+ +
folosc9te intern aceasta de nume, deci este eel mai bine sa evitati 5,1
incepqi un nume astfeJ
Restul numelui poate fi format din litere, numere sau liniute de sublinicre C)
Trebuie sa evitati cuvinle care au deja a semnificatie predefinita specia1<1In C+ +
Cuvintcle eu special, in C+ + se numese "cuvinte-cheie". un
asemenea euvant este main. Printre alte cuvinte-ehcie se numara tipurile de date
C++ standard, preeum int, flow double. Alte cuvinte-cheic sunt if, cbc. while,
do, switch class.
Nu cste necesar sa memorati toate cuvinteJe-cheie din C+ +, dqi multc Cd
de programare va sugereaz3. sa proecda\i astfel
l
Nu trcbuie dedit sa ca, dad
sa folosi\i un nume care intra in conflict eu unul dintre cuvintciL cheie
din C+ +, eompilatorul va va raspunde eu un mesaj eare se rder. la un conflict
eu UD euvanl-cheie sau la 0 eroare de sintaxX In acest caz, un alt nUme.
Exercitiu
1.3.5. Care dintre euvintck din lista urm[lloarc sunt JilHlll..
corcete de V3.riabile in C+ + 9i care nu? Rccapitulari regulile reccnt mentionate,
daca estc cawI.
x
xl
EvilDarkness
PennsyJvaniaAve1600
1600PennsylvaniaJ\vc
Bobby_lhe_Robot
Bobby+the+ Robot
whatThe')??
Amount
count2
count2five
Scount
main
main2
Rezumatul capitolului 1
Re atul capitolului 1
31
lata ideile principale ale capitoluJui 1:
Crearea unui program Incepe de la scrierea codului sursa In C++. Acesta este
aleatuit din instruqiuni C+ +, care au 0 oarecare asemanare cu Jimba cnglcza.
(Codul prin contrast, este complet de daca nu Jaborios
fiecarei de 1 0.) Dar inainte ca programul sa fie rulat,
trebuie convertit In cod adica In ceea ce calculatorul, in
ultima
Procesul de conversie a instruqiunilor C+ + In cod se numqte compi/are.
Dupa compilare, programul mai trebuie legat 1a funqij standard stocate in
biblioteca C+ +. Acest proces se legare. Dupa parcurgerea cu sUCCt;<; a
acestei etape, avqi un program executabiL
Din fericire, daca un mediu de dezvoltare, procesuJ de compilare si de
legare a unui program (denumit consfnlqia programuJui) este automatizat, ast-
fel ca nu trebuie dedH sa apasan 0 tasta funqionala.
Programele C+ + simple au urmatoarea forma generala:
# include <iostrearn>
using narnespace std;

int maine) {
Enter-your_statements_here!
return 0;
}
Pentru a datele'de obiectul cout. De exemplu:
cout "Never fear, c++ is here!";
Pentru a datele de a trece la linia urmatoare, obiectul (.'0
un caracter linie noua (endl). De exempJu:
cout "Never fear, c++ is here!" end!;
Aproape fiecare instruqiune C+ + se Incheie cu un caracter punct 9i virgula (;).
o consUi In faptul ca asemenea caractere nu se foJosesc dupa 0 direc-
tiva de preprocesor.
Perechea de caractere slash (11)29 indica un comentariu - Intreg textul, p:'ma
la sfaqitul liniei, este ignorat de compilator, dar este uti! celor care se ocupa de
programului.
29In limba cnglcza, douhfe slash (N. tr)
32 Capitolul 1. Primele dumneavoastra programe In C++
Inainte de a folosi 0 variabila, trebuie sa 0 decJara\i. De exemplu:
double x; II Declare x as a floating-pt variable.
30
Variabilele care pot stoca 0 fraqionara trebuie sa fie de tipul double.
Aceasta reprezinta 0 prescurtare de la double precision floating point ("virgula
mobil5. cu dubla precizie"). Tipul cu simpU'i precizie (float) trebuie folosit numai
cand se stocheaza pe disc mari de date in format virgula mohila, i'n
cazuri i'n care de stocare este
Pentru a prelua i'ntr-o variabila datele introduse de la tastatura, putqi folosi
obiectul cin. De exempJu:
cin x;
De asemenea, insera date intr-o variabila folosind atribuirea (=). Aceasta
evalueaza expresia din partea dreapta a semnului egal (=) pJaseaza
valoarea in variabila situata in stanga. De exemplu:
x = y * 2; II Multiply Y times 2, place result in X.
31
30 peclara x ca variabila In virgulil mohila. (N. Ir.)
31 y cu 2 plaseaza rezulratulin x. (N. 11'.)

S-ar putea să vă placă și