Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
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,
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"
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
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,
##