Sunteți pe pagina 1din 11

Elemente de baz ale limbajului de programare C++

1.1. Noiuni teoretice

1.1.1. Vocabularul limbajului a) Setul de caractere este alctuit din totalitatea caracterelor cu ajutorul crora se poate scrie un program C++ Setul de caractere este alctuit din: litere mari i mici ale alfabetului englez: a,b,..,z, A,B,..Z cifrele sistemului zecimal de numera ie: !"#,.$ caractere speciale: + % & ' ( ) * +, -. /0 . , : " 1 22 3 4 5 6 7 8 9 : ; etc. b, Identificatori <rin identificator =n elegem un nume asociat unei constante, >ariabile, proceduri, func ii etc. ?n identificator poate con ine numai litere, cifre i caracterul special @;A +liniu a de subliniere, i trebuie s =nceap obligatoriu cu o liter. Bau liniu a de subliniere. Cimbajul C++ face distinc ie =ntre literele mari i mici. Exemple de identificatori coreci: ;a Clasa;#DE Fin i min sunt identificatori diferi i Exemple de identificatori incoreci: #B +=ncepe cu o cifr, m6t +con ine caracterul special 6, c, Cu intele c!eie ale limbajului sunt identificatori cu semnifica ie fiGat, care nu pot fi folosi i =n alt conteGt decHt cel precizat =n definirea limbajului. Acestea au un =n eles bine definit i nu pot fi folosite ca identificatori ai unor constante sau >ariabile. Eefinite de utilizatori. IGemple de cu>inte cJeie: define, include, if, else, case, for, KJile, do, cJar, int, return, struct, Ln C++ se se utilizeaz ca separatori cu caracter uni>ersal: spa iul, MAB%ul, sfHrit de linie, comentariile. d, Separatorii pot fi, dup caz: blanc +caracterul Aspa iuA,, caracterul A"A+ Apunct i >irgulA, etc. ?nitatea leGical =n C++ reprezint o succesiune de caractere care luate =mpreun au o semnifica ie bine definit. Ee eGemplu, o unitate leGical poate fi : un cu>Hnt cJeie, un identificator, un caracter special, etc. e, Comentariile sunt succesiuni de caractere =ncadrate : =ntre sec>en ele de caractere A '& A i A &' A punHnd sec>en a A '' A =n fa a comentariului +=n acest caz compilatorul >a considera drept comentariu tot ce urmeaz dup sec>en a A '' A pHn la sfHritul rHndului,. Aceast form este mai mult =ntHlnit.

Comentariile se folosesc atunci cHnd un program trebuie s poat fi =n eles i de ctre alte persoane, nu numai de ctre autorul lui. Comentariile pot fi introduse =n cadrul programului oriunde este legal s apar un caracter @spa iuA i sunt ignorate de ctre calculator la eGecu ia programului. IGemplu: 6include)iostream.J* >oid main +, / '&=nceputul programului&' '' programul afieaz dou mesaje: cout))A?n eGemplu de programA" cout))AN.OA" 0 '& sfHritul programului&' 1.1.". Con#tante. $efinirea con#tantelor Con#tantele sunt >alori care nu se pot modifica =n cadrul programului. Ile se =mpart =n dou categorii: con#tante numerice i con#tante nenumerice. Constante numerice sunt la rHndul lor de dou tipuri: con#tante %ntregi i con#tante reale. Ein categoria constante nenumerice fac parte: con#tante caracter& con#tante 'ir de caractere& con#tante logice (booleene) 'i con#tante #imbolice. Con#tante %ntregi sunt numere =ntregi eGprimate =n: zecimal % succesiuni de cifre zecimale . IG. #!!!# octal % succesiuni de cifre octale precedate de !. IG: !DP JeGazecimal % succesiuni de cifre JeGazecimale precedate de !G sau !Q. IG: !GRRR# Constantele =ntregi sunt numere =ntregi alctuite din cifre zecimale de la ! la $, cu sau fr semn. Con#tante reale pot fi specificate =n nota ia uzual sau =n format eGponen ial +tiin ific,. Ln forma uzual +normal, cuprind partea =ntreag i partea zecimal, separate de caracterul . +punct, pentru specificarea pozi iei >irgulei zecimale. IG: D.ST, %TU.DP, +D.ST, %!TU.DP, .UP, %#PD. <rezen a caracterului A+A sau a cifrei ! la =nceputul unei constante reale, dei inutil, nu constituie o eroare +lucru >alabil i =n cazul constantelor =ntregi,. <artea zecimal a unei constante reale poate s lipseasc, caz =n care se sub=n elege c acesta este ! +=n cazul anterior, scrierea A%#PD.A Iste corect, ea desemnHnd constanta real %#PD.!,. Ee asemenea, dac partea =ntreag a unei constante reale este !, aceasta poate s lipseasc +cazul scrierii A.UPA din eGemplul de mai sus desemneaz constanta real !.UP,. Ln format eGponen ial +tiin ific, se specific =n plus un eGponent al lui #!, precedat de litera e sau Ln acest caz, >aloarea numrului se ob ine =nmul ind numrul +corespunztor construc iei din fa a literei e'I, cu #! la puterea specificat de eGponent. IGemplu: Aa.bIcA sau Aa.becA este o scriere Atiin ificA a constantei a.b&#!c. IGemplu: %D.SI%U sau %D.Se%U este ecJi>alent cu %D.S&#!%U Ln func ie de numrul de octe i pe care =l ocup =n memorie, atHt constantele =ntregi cHt i cele reale pot fi =mpr ite =n mai multe categorii +subtipuri,.

Con#tante logice (booleene) Ln cadrul unui algoritm putem =ntHlni condi ii, care pot fi =ndeplinite sau nu, i =n func ie de care se >or decide ac iunile urmtoare. Nrice condi ie se caracterizeaz printr%o aa numit A>aloare de ade>rA care ne spune dac respecti>a condi ie este =ndeplinit sau nu. <entru desemnarea celor dou >alori de ade>r posibile ale unei condi ii folosim cu>intele AEIVWXAM sau RAB pentru algoritmi. Cimbajul C++ nu dispune de un tip de date pentru >alori logice. Ee aceea, =n C++ cele dou >alori de ade>r sunt AsimulateA prin numerele =ntregi ! i #. Astfel: Yumrul =ntreg # simuleaz >aloarea de ade>r AEIVWMAM Yumrul =ntreg ! simuleaz >aloarea de ade>r RACB Con#tante caracter Nrice limbaj de programare folosete o codificare a caracterelor cu care se lucreaz. Cimbajul C++ folosete standardul de codificare ABZZ. Conform acestuia fiecare caracter are un cod ABCZZ propriu, un numr =ntreg cuprins =ntre ! i DUU. Eispunerea caracterelor =n setul ABCZZ respect nite reguli. Astfel: Caractere%litere mari 1A1, 1B1,.,1Z1 au codurile cuprinse =ntre PU i $!" Caractere%litere mici 1a1, 1b1,.,1z1 au codurile cuprinse =ntre $[ i #DD" Caractere%cifre 1!1, 1#1,.,1$1 au codurile cuprinse =ntre T\ i #U[" Caractere speciale sunt intercalate =n tot inter>alul -!, DUU. Mrebuie obser>at un aspect foarte important: =n setul ABCZZ cele dou categorii de litere sunt diferen iate prin coduri distincte. N constant de tip caracter este un caracter ABCZZ cuprins =ntre apostrofuri. IGemplu:1A1, 1m1,1:1, 1$1 etc. Nbser>a ie: A nu se confunda un caracter % cifr cu cifra zecimal: astfel, spre eGemplu, caracterul 1$1 nu este totuna cu cifra $ . Constantele caracter sunt fie: #. un singur caracter cuprins =ntre dou caractere apostrof D. o sec>en de e>itare cuprins =ntre dou caractere apostrof, o sec>en de e>itare =ncepe cu simbolul ]. Bec>en e de e>itare: 1]b1 caracterul bac^space 1]t1 caracterul tab orizontal 1]n1 caracterul neKline +determin trecerea cursorului pe linia urmtoare, 1]a1 caracterul alarm +genereaz un sunet, 1]]1 caracterul bac^slasJ 1]11 caracterul apostrof 1]A1 caracterul gJilimele Con#tante 'ir de caractere Bunt iruri de caractere cuprinse =ntre gJilimele. N constant ir de caractere poate con ine orice caractere, inclusi> caractere speciale i caracterul spa iu. S

IGemplu: AprogramA, ABorland C++ [.!A, AAB6[A Constante ir de caractere sunt constituite dintr%o succesiune de caractere =ncadrat =ntre gJilimele. Nbser>a ie: sunt reprezentate intern prin codurile ABCZZ ale caracterelor i terminate cu 1]!1 +terminatorul irurilor de caractere sau caracterul Y?CC,. Con#tante #imbolice Iste desemnat printr%un identificator. <oate fi) predefinit sau definit de identificator. Ln cadrul unui program, constantele simbolice se declar la =nceput cu ajutorul directi>ei %preprocesor A6defineA. <entru definirea constantelor simbolice se folosete construc ia: BintaGa este: *define +nume, + aloare, ?nde: )nume* identificator de constantei simbolice pe care =l dm constantei )>aloare* >aloarea constantei Bau folosind modificatorul const astfel: con#t tip nume- aloare" IGemple: <entru a identifica numrul (S.#T#U$D[ din geometrie, nu putem folosi litera greceasc , dar putem da acestei constante un nume sugesti>, ca de eGemplu <Z. Conform sintaGei de mai sus, declara ia este: 6define <Z S.#T Nbser>a ie: Mipul unei constante +=ntreag, real, caracter, ir de caractere,> rezult cJiar din >aloarea sa. Ln >arianta Borland C++ are cHte>a constante simbolice predefinite. Ee eGemplu: % pentru desemnarea celei mai mari >alori posibile de tip int, SD[P[, a fost ataat acestei >alori o constant simbolic cu identificatorul FAQZYM % constanta simbolic FAQCNY_ZYM(D#T[T\SPT[ identific cea mai mare >aloare posibil de tipul longint % numrul (S.#T#U$D[, pe care l%am asociat constantei simbolice <Z, are o constant simbolic predefinit, cu numele F;<Z Racem o precizare foarte important: constantele simbolice predefinite se gsesc =n Jeader%e: FAQZYM i FAQCNY_ZYM sunt definite =n Jeader%ul >alues.J, iar F`<Z =n Jeader%ul matJ.J. Rirete c pentru a putea folosi aceste constante >a trebui s includem =n program Jeader%ele respecti>e, folosind directi>a preprocesor A6includeA: 6include)>alues.J* 6include)matJ.J*

1.1... Variabile. $efinirea ariabilelor Variabilele sunt date ale cror >alori se pot modifica la fiecare eGecu ie a programului sau cJiar =n timpul unei eGecu ii. N >ariabil este caracterizat prin trei atribute: tip, >aloare, adres, cu proprietatea c atributul >aloare este modificabil. Cu alte cu>inte, o >ariabil =i poate modifica >aloarea la fiecare nou eGecu ie a programului, sau =n cursul aceleai eGecu ii. Mipul unei >ariabile definete mul imea >alorilor pe care le poate lua >ariabila respecti>. Ee eGemplu dac o >ariabil este de tip int, atunci >aloarea ei poate fi orice numr =ntreg cuprins =ntre aFAQZYM i FAQZYM. Ca fel ca =n matematic, o >ariabil trebuie s aib un identificator de >ariabil, adic un nume. Ca i constantele, >ariabilele trebuie declarate. Ln C++ declara iile de >ariabile pot fi plasate oriunde =n cadrul programului. BintaGa: )tip* )>#*,)>D*, )>S*, ?nde: )>#*,)>D*, )>S*, identificatori de >ariabil separa i prin A>irgulA tipul >ariabilei )tip* Nrice >ariabil >a fi A>zutA i ArecunoscutA de ctre compilator =ncepHnd din locul unde a fost declarat i pHn la sfHritul func iei =n care se afl declara ia. Am definit astfel un Adomeniu de >izibilitate a >ariabilelorA Eeocamdat >om scrie programe care programe care con in doar func ia principal main. <entru ca >ariabilele s fie A>zuteA =n tot programul, le putem declara =n dou locuri: % la =nceputul programului, imediat dup directi>ele preprocesor i =naintea func iei main" >ariabilele astfel declarate se numesc >ariabile globale" Exemplu: 6include )iostream.J* int aD,G" '' declarm >ariabilele aD i G, ambele de tipul int" float media;info" '' declarm >ariabila media;info de tipul de tipul float" >oid main +, / . 0 % la =nceputul func iei main, imediat dup acolada descJis care AinaugureazA corpul func iei" >ariabilele declarate =n acest mod se numesc >ariabile locale func iei main" a>Hnd =n >edere c main este singura func ie din program, aceste >ariabile au aceeai statut ca i cele globale, adic sunt A>zuteA =n toate liniile care urmeaz declara iei. Exemplu: 6include )iostream.J* >oid main +, / int aD,G" '' declarm >ariabilele aD i G, ambele de tipul int" float media;info" '' declarm >ariabila media;info de tipul de tipul float" . .

0 Ca declararea unor >ariabile putem s o ini ializm, cu o >aloare constant, cu >aloarea altei >ariabile, sau cJiar cu >aloarea unei eGpresii. Riind >orba despre o >ariabil, >aloarea dat ini ial nu este @btut =n cuieA, ea se poate modifica ulterior oricHnd pe parcursul programului. Zni ializarea unei >ariabile se poate face printr%o sintaG de genul A)nume;>ariabil*()>aloare;ini ial*A. Ln cazul unei linii de declara ii, putem a>ea atHt >ariabile ini ializate, cHt i >ariabile neini ializate. Exemplu: int m(D" '' declarm >ariabila m de tipul int, pe care o ini ializm cu >aloarea D. float G, b(S.U, z(b, t(D&b%#, u" '' declarm >ariabilele G, b, z, t, toate de tipul de tipul float" ''>ariabilele b i z au fost ini ializate la declarare cu >aloarea S.U" ''>ariabila t au fost ini ializat cu >aloarea eGpresiei D&z%#, adic D&S.U%#(P Nperatorul A(A cu ajutorul cruia ini ializm o >ariabil, este de fapt operatorul de atribuire. ?nei >ariabile i se atribuie la declarare o anumit >aloare ini ial. Ln eGemplul de mai sus, >ariabilei m de tipul int i se atribuie >aloarea ini ial D, >ariabila b de tipul float primete >aloarea S.U, iar >ariabila z primete >aloarea lui b, adic tot S.U. 1.1./. Noiune de tip de dat ?n tip de date definete mul imea >alorilor pe care le pot lua datele de tipul respecti>, modul de reprezentare a cestora =n memorie, precum i opera iile care se pot efectua cu datele respecti>e. Ful imea >alorilor unui tip de date reprezint constantele tipului respecti>. Mipul unei constante este determinat implicit de >aloarea ei. Nrice limbaj de programare dispune de un set de date predefinit +standard,. a, Mipuri de date standard =n C++ 0I1 cJar unsigned cJar int unsigned int long int unsigned long int $23ENI45 $E V6527I -%#D\, #D[. -!, DUU. -%SD[P\, SD[P[. -!, PUUSU. -%D#T[T\SPT\, D#T[T\SPT[ . -!, TD$T$P[D$U. 32$ $E 7E17E8EN067E # octet cu semn # octet fr semn D octet cu semn D octe i fr semn T octe i cu semn T octe i fr semn

Nbser>a ie: pentru a specifica eGplicit tipul unei constante =ntregi se pot utiliza sufiGele u'? pentru unsigned int, #'C pentru long int, u#'?#'uC'?C pentru unsigned long int.

b, Mipuri de date reale =n C++ 0I1 float double Cong double $23ENI45 $E V6527I 69S2540E S.TI%S\ % S.TIS\ #.[I%S!\ % #.[IS!\ S.TI%T$SD % #.#IT$SD 54N:I3E6 7E17E8EN0;7II <N 3E327IE T octe i \ octe i #! octe i

Nbser>a ie: pentru a specifica eGplicit tipul unei constante reale se pot utiliza sufiGele f'R pentru float, #'C pentru long double. c, Mipul >oid, care se utilizeaz pentru a indica absen a oricrei >alori. 1.1.=. 2peratori Bunt mai multe tipuri de operatori: a) operatori aritmetici) + +adunare, % +scdere, & +=nmul ire, ' +=mpr ire real dac cel pu in un operand este real, ' +=mpr ire =ntreag dac ambii operanzi sunt =ntregi, 8 +restul =mpr irii =ntregi, Exemple de expresii n care intervin operatori aritmetici: D#'D >a da >aloarea #! D#8D >a da >aloarea # D#.'D >a da >aloarea #!.U b) operatori relaionali) ) * )( *( +mai mic, +mai mare, +mai mic sau egal, +mai mare sau egal,

== +egal, se mai numesc i operatori de egalitate 4 = +diferit,


Exemple de expresii n care intervin operatori relaionali: U* ([ >a da >aloarea ! U( ([ >a da >aloarea ! U 4 ( [ >a da >aloarea #

c) operatori logici) :: +A cZ A logic, +conjunc ie logic, dd +A BA? A logic, +disjunc ie logic, 4 +Anega ie logicA, Exemple de expresii n care intervin operatori logici: +a ( ( b, :: +a 4 ( b, are >aloarea ! YNM +D*U, are >aloarea # Ln C++ nu eGist tipul logic =ns, orice >aloare diferit de ! are semnifica ia ade>rat, >aloarea logic fals fiind asociat >alorii !. d, operatori de atribuire ( e, operatori pe bi i +pentru datele =ntregi, 3 nega ie pe bi i +se transform bi ii ABRIC: ! =n # i # =n !, : i aritmetic pe bi i +se face conjunc ia bit cu bit =ntre operanzi, d sau aritmetic pe bi i +se face disjunc ia bit cu bit =ntre operanzi, 9 sau eGcluzi> pe bi i +se eGecut sau eGclusi> bit cu bit =ntre operanzi, )) deplasarea la stHnga +bi ii primului operand se deplaseaz spre stHnga cu >aloarea celui de%al doilea operand, ** deplasarea la dreapta +bi ii primului operand se deplaseaz spre dreapta cu >aloarea celui de%al doilea operand, Exemple de expresii n care intervin operatori pe bii: \**# >a da >aloarea T 3\ >a da >aloarea %$

1robleme tip gril #. <entru fiecare dintre afirma iile de mai jos, completa i cu>intele lips: a, b, c, d, Valoarea constantei simbolice FAQZYM este i reprezint Nperatorul care realizeaz ABA? logicA =ntre dou >alori de ade>r este Nperatorul A)(A face parte din categoria operatorilor .. Constantele simbolice se declar cu cu>Hntul cJeie ..

D. Care dintre urmtoarele >alori sunt constante flotante scrise corect` #, D, S, T, U, P, [, \, a, b, c, d, e, DS![.$\ +UT.S %D!.![ %#$\. .#S #.$IT %D.[I%S D.e+T

#,, D,, S,, P,, i [, Moate mai pu in U, Moate Moate mai pu in \, <rimele cinci

S. Eefini i o constant simbolic <Z cu >aloarea S.#T, folosind directi>a preprocesor A 6defineA. a, b, c, d, e, 6define S.#T <Z" 6define <Z S.#T" 6define float <Z S.#T" 6define <Z(S.#T" 6define float <Z(S.#T"

T. Care dintre urmtorii operatori este aritmetic ` a, ] b, 8 c, 4( d, dd e, 9

U. Care dintre urmtoarele >alori nu reprezint constante ir de caracter ` a, AC++A b, 1D\US1 c, 1 AeGempluA 1 d, 1MX?I1 e, 1!1

P. Care dintre urmtoarele >alori de mai jos nu sunt constante =ntregi scrise corect ` a, #DS b,%#[ c, +\TS d, !#UT e,%%P[

[. Care dintre construc iile de mai jos reprezint constante caracter ` #, A A D, 1]1 S, 1a1 b, toate T, 1 A 1 U,1]]1 P, 1]#S1 [, A aA \, 1 1

a, D,, S, i \, e, S,, T,, U,, P, i \,

c, toate mai pu in U, i P,

d, D,, S,, T, i \,

\. Care dintre urmtoarele declara ii de >ariabile declar corect o >ariabil G ce poate memora >alori reale ` a, float G" b, double G" c, unsigned float G" d, G:float" e, G: double"

$. Care dintre liniile de program de mai jos realizeaz ini ializarea corect a >ariabilei G la declararea sa` a, int G ( (D" b, G:int (D" c, int G(D" d, int G D" e, G(D:int"

#!

#.#.P. IGpresii

#.#.[. Citirea ' scrierea datelor #.#.\. #.#.$. Btructuri de control +instruc iunea compus, structuri alternati>e i repetiti>e,

##