Profesor Cristiana Crna, ice!l "#ri$ore Moisil% Ti&i'oara I. Elemente de baz ale limbajului C++. Tipuri de date I(1( )tr!ct!ra *ro$ra&elor C++ I(2( Ti*!ri ,e ,ate n!&erice 'i nen!&erice -e.ce*t/n, ti*!l real0 I(1( E.*resii I(2( O*eratori C++ I(3( Citiri( )crieri 1(1 Strutura pr!"amel!r C++ #!abularul limbajului C Setul de aratere a scrierea *ro$ra&elor se folose'te set!l ,e caractere al co,!l!i 4)CII( M!li&ea caracterelor se 5&*arte 5n trei $r!*e6 caractere ne$rafice6 co, 4)CII 7 12 'i 8E-co, 127 - e.ce*ie0 - a! ,iferite f!ncii s*eciale, s*re e.e&*l!6 9n - r/n, no! 9t - T4B 9: - :ac;s*ace 9< - T4B <ertical 9f - salt ,e *a$in etc( s*ai! co, 4)CII = 12 caractere $rafice co, 4)CII > 12 - literele &ari ale alfa:et!l!i en$le? -4 co, 4)CII @3, B co, 4)CII @@, (((0 - literele &ici ale alfa:et!l!i en$le? -a co, 4)CII 97, : co, 4)CII 9A, (((0 - cifre 0((9 -0 co, 4)CII 2A, 1 co, 4)CII 29, (((0 - caractere s*eciale6 B, C, D( + etc( Identi$iat!ri En i,entificator este o s!ccesi!ne ,e litere, e<ent!al cifre care 5nce*e c! o liter( Fn calitate ,e litere se folosesc6 literele &ici 'i &ari ale alfa:et!l!i en$le? 'i caracter!l s!:liniere( 4TEGHIEBBB In C se face ,istincie 5ntre literele &ici 'i cele &ari Ma. &a., or,onat OR8OG4T E.e&*l!6 Ma., I&in, ,istincte, frec<, Ma.2 - re*re?int i,entificatori coreci 2&in, @7*ri&, 7Ior$, 4+B, aJ, - n! re*re?int i,entificatori Cu%inte rezer%ate C!<intele re?er<ate s!nt i,entificatori c! se&nificaie fi.at, care n! *ot fi folosii 5n alt conte.t ,ec/t cel *reci?at 5n ,efinirea li&:aK!l!i( E.e&*l!6 if, while, do, printf, int, main, void etc( C!mentarii Fn te.t!l !n!i *ro$ra& s!nt necesare !neori note e.*licati<e -co&entarii0 ata'ate !nor sec<ene ,e o*eraii, care n! a! rol acti< 5n ,er!larea *ro$ra&!l!i( Co&entariile 1 *ot fi scrise *e !n sin$!r r/n, 'i s!nt *rece,ate ,e caracterele LL *ot fi scrise *e &ai &!lte r/n,!ri 'i s!nt c!*rinse intre caracterele LD DL E.e&*l!6 // acesta este un comentariu pe un rand /* acesta este un comentariu pe mai multe randuri */ Strutura unui pr!"ram C++ G!&i& &e,i! ,e *ro$ra&are !n *ro$ra& care *er&ite asistarea *ro$ra&ator!l!i 5n toate fa?ele ,e ela:orare a !n!i *ro$ra&, scris intr-!n li&:aK ,e *ro$ra&are -e,itare, ,e*anare, co&*ilare, e.ec!ie0( En astfel ,e &e,i! ,e *ro$ra&are este Borlan, C 1(1( Prin *ro$ra& se 5nele$e o s!ccesi!ne ,e co&en?i -instr!ci!ni0 ,e *rel!crare a ,atelor, scrise intr-!n li&:aK ,e *ro$ra&are( Pro$ra&!l este &e&orat intr-o entitate n!&it fi'ier s!rs -este !n fi'ier te.t c! e.tensia .pp0( Prel!crrile ,intr-!n *ro$ra& C++ s!nt $r!*ate 5n f!ncii( Re?ol<area !nei *ro:le&e se face *rin !tili?area !nor f!ncii ,efinite 5n li&:aK 'iLsa! a !nor f!ncii scrise ,e *ro$ra&ator, at!nci c/n, f!nciile ,eKa e.istente n! s!nt s!ficiente( M!nciile *e care li&:aK!l le *!ne la ,is*o?iia !tili?ator!l!i s!nt $r!*ate, ,!* ti*!l ,e *rel!crare oferit, 5n &ai &!lte fi'iere n!&ite C:i:lioteciC -fi'iere Nea,er0( Pentr! a *!tea !tili?a 5n *ro$ra& o f!ncie tre:!ie s se s*ecifice la 5nce*!t!l *ro$ra&!l!i n!&ele :i:liotecii care conine f!ncia res*ecti<( Orice *ro$ra& C++ tre:!ie s conin o f!ncie n!&it C&ainC -!n fel ,e "*ro$ra& *rinci*al%0, Instr!ci!nile conin!te ,e f!ncia &ain fiin, cele *rel!crate at!nci c/n, *ro$ra&!l este lansat 5n e.ec!ie( Pentr! a se *!tea o:ine re?!ltatele *rel!crrii ,atelor c! aK!tor!l *ro$ra&elor, tre:!ie *arc!rse !r&toarele fa?e6 - scrierea *ro$ra&!l!i -e,itarea te.t!l!i s!rs0O - co&*ilarea *ro$ra&!l!i -ceea ce 5nsea&n <erificarea corectit!,inii sintactice 'i se&antice a *ro$ra&!l!i s!rs si *rel!crarea sa re?!lt !n fi'ier o:iect, care are acela'i n!&e c! al fi'ier!l!i s!rs ,ar c! e.tensia .!bj0( Co&*ilarea se reali?ea? *rin acionarea co&:inaiei ,e taste < 'i () sa! ,e la o*i!nea Co&*ile ,in &eni!l Co&*ile( - e,itarea le$t!rilor -fi'ier!lLfi'ierele o:iect o:in!te 5n !r&a co&*ilrii s!nt transfor&ate 5ntr-!n fi'ier e.ec!ta:il, care are acela'i n!&e c! al fi'ier!l!i s!rs ,ar c! e.tensia .e*e, a,ic 5ntr-!n fi'ier care *oate fi lansat 5n e.ec!ie *rin si&*la scriere a n!&el!i s! la *ro&*ter!l siste&!l!i ,e o*erare( R!larea se reali?ea? *rin acionarea co&:inaiei ,e taste Ctrl 'i () sa! ,e la o*i!nea R!n ,in &eni!l R!n( Cel &ai si&*l! *ro$ra& C++6 #include<iostream.h> void main() { cout<<"astazi este samata"! //afisarea unui mesa" pe ecran # 1(2 Tipuri de date numerie intre"i in C Prin ,at se 5nele$e orice entitate as!*ra creia calc!lator!l *oate o*era( Orice ,at care a*are 5ntr-!n *ro$ra& C tre:!ie ,eclarat, *entr! a fi c!nosc!t la co&*ilare( Enele ,ate 5'i &o,ific <aloare 5n ti&*!l e.ec!iei *ro$ra&!l!i 'i ele se n!&esc ,ate <aria:ile( E.e&*l!6 int a,! LL se ,eclara ,o!a <aria:ile ,e ti* intre$ ,e &a.i& 3 cifre 2 lon$ v%,&,a%! LL se ,eclara trei <aria:ile ,e ti* intre$ ,e &a.i& 9 cifre int &'%(! LD,eclararea !nei <aria:ile . ,e ti* intre$ - este o ,at as!*ra creia se o*erea? care are <aloarea initiala 12DL 8atele care n! 5'i &o,ific <aloare 5n ti&*!l e.ec!iei *ro$ra&!l!i se n!&esc ,ate constante( E.e&*l!6 const int a=3, :=12O LL ,eclar ,o!a constante intre$i ,e &a.i& 3 cifre care a! <alorile 3 res*ecti< 12 const lon$ <1=12212121O LL,eclar o constanta ,e ti* intre$ care are <aloarea 12212121 En ti* ,e ,at *reci?ea? mulimea valorilor *e care le *oate l!a o ,at, operaiile care se *ot efect!a as!*ra ei 'i lungimea de reprezentare intern( Cla+i$iare, Fn li&:aK!l C ,istin$e& ,o! cate$orii ,e ,ate6 ti*!ri *re,efinite ,e ,ate -stan,ar, sa! f!n,a&entale0 - n!&erice -5ntre$i 'i reale0 ti*!ri ,eri<ate - ti*!ri str!ct!rate ta:lo!ri -'ir!ri ,e caractere0 5nre$istrare - *ointer - referin Pentr! 5nce*!t ne <o& oc!*a n!&ai ,e tipurile intre"i +imple de date -*re,efinite sa! stan,ar,0( Tip de date Reprezentarea intern +e $ae pe... D!meniu de %al!ri cNar A :iti -12A(((127 !nsi$ne, cNar A :iti 0(((233 int 1@ :iti -12 7@A(((12 7@7 !nsi$ne, int 1@ :iti 0(((@3 313 lon$ 12 :iti -2 127 2A1 @2A(((2 127 2A1 @27 !nsi$ne, lon$ 12 :iti 0(((2 292 9@7 203 O:ser<aie6 Ti*!l cNar 'i ti*!l !nsi$ne, cNar se folosesc *entr! a ,efini ,ate ,e ti* caracter 1(1 E*pre+ii En o*erator este !n si&:ol care arata ce o*eratii se e.ec!ta as!*ra !nor o*eran?i -ter&eni0( En o*eran, este o constanta, o <aria:ila, !n n!&e ,e f!nctie sa! o s!:e.*resie a carei <aloare este *rel!crata ,irect ,e o*erator sa! s!*orta 5n *reala:il o con<ersie ,e ti*( Fn C e.ista 23 ,e o*eratori ,iferii ,is*!'i *e 13 ni<el!ri ,e *rioritate( Fn f!ncie ,e ti*!l o*eran?ilor as!*ra crora se a*lic, o*eratorii *ot fi6 arit&etici, relaionali, :inari, lo$ici, etc( O*eratorii s!nt 5&*rii 5n clase ,e *rece,en -sa! ,e *rioritate0 care arat or,inea 5n care se efect!ea? o*eraiile( Fn fiecare clas ,e *rece,en este sta:ilit o re$!l ,e asociati<itate, care in,ic or,inea ,e a*licare a o*eratorilor ,in clasa res*ecti<6 ,e la st/n$a la ,rea*ta sa! ,e la ,rea*ta la st/n$a( O e.*resie este o co&:inaie ,e o*eran?i, se*arai 5ntre ei *rin o*eratori( Prin e<al!area !nei e.*resii se o:ine o <aloare re?!ltat( Ti*!l <alorii re?!ltat ,e*in,e ,e ti*!l o*eran?ilor 'i a o*eratorilor folositi(
1(2 .perat!ri C++ 1 O*eratorii arit&etici O*eratorii arit&etici :inari s!nt6 +, -, D, L 'i P -&o,!l = rest!l i&*ririi 5ntre$i0 Prioritatea o*eratorilor arit&etici este6 +, - !nari -*entr! se&n!l !nei <aria:ile sa! a !nei constante0 D, L, P :inari +, - :inari Re$!la ,e asociati<itate este ,e la st/n$a la ,rea*ta -la *rioriti e$ale o*eratorii s!nt e<al!ai ,e la st/n$a la ,rea*ta0( O*erator!l ,e atri:!ire Fn li&:aK!l C se ,efine'te o*erator!l ,e atri:!ire =( 4cest o*erator este :inar iar sinta.a l!i este6 <aria:ila=e.*resie Efect!l acest!i o*erator este6 se e<al!ea? e.*resia 'i <aria:ila *ri&e'te acea <aloare( O*eratorii relaionali )!nt o*eratori :inari 'i e.*resiile 5n care a*ar s!nt 0, ,aca relaia e fals, 1 ,aca e a,e<arat( C-!l n! ,efineste ti*!l lo$ic, asa 5nc/t6 0 este inter*retat ca <aloarea lo$ic fals, iar orice <aloare ,iferita ,e 0 este inter*retat ca a,e<arat( O*eratorii relationali s!nt6 < <' > >' -&ai &ic, &ai &ic sa! e$al, &ai &are, &ai &are sa! e$al0 '' )' - e$al, res*ecti< ,iferit 0 O:ser<atieBB A nu se confunda con,iia a'' c! e.*resia a', !lti&a a</n, <aloarea a,e<arat *entr! orice <aloare a l!i : ,iferita ,e 0( O*eratorii lo$ici Con,iiile &ai co&*le.e se o:in a*lic/n, con,iiilor si&*le o*eratorii lo$ici6 B ne$aie lo$ic JJ 'i lo$ic QQ sa! lo$ic O*eran?ii s!nt intre$i, inter*retati ca <alori lo$ice( Prioritatea o*eratorilor JJ 'i QQ este &ai sca?!t ,ec/t a celor con,iionali, a cel!i ,e ne$are, fiin, !nar, este cea &ai ri,ic( O*eratorii tratea? o*eran?ii ca <alori lo$ice, ,eci orice <aloarea ,iferit ,e 0 este inter*retat ca a,e<rat, iar 0 ca fals( 4*lic/n, !n!i 5ntre$ o*erator!l ,e ne$aie lo$ic, se o:ine 1 ,ac o*eran,!l e fals, res*ecti< 0 ,ac o*eran,!l este a,e<arat(
1(3 Citiri. Srieri 8atele *ot a<ea !r&tor!l trase!6 s!rsa6 tastat!r R ,estinaie6 &onitor Mi'ier!l 7iostrea&(N> conine ,efiniia !r&toarelor o:iecte6 cin - face *arte ,in clasa istrea& ce ,efine'te !n strea& ,e intrare 2 co!t - face *arte ,in clasa ostrea& ce ,efine'te !n strea& ,e ie'ire OB)ERV4TIE6 Citirile 'i scrierile se *ot face folosin, o:iectele cin 'i co!t( )inta.a *entr! citirea ,atelor6 cin>>n!&eI<aria:ila1>>n!&eI<aria:ila2>>(((>>n!&eI<aria:ilanO 4re ca efect citirea <alorilor *entr! <aria:ilele n!&eI<aria:ila1, n!&eI<aria:ila2, n!&eI<aria:ilan( E.e&*l! 6 ... int a,,c! ... cin>>a! //citeste o valoare pentru variaila a cin>>a>>! //citeste cate o valoare pentru variailele a, )inta.a *entr! scrierea ,atelor co!t77 n!&eI<aria:ila177 n!&eI<aria:ila277(((77n!&eI<aria:ilanO 4re ca efect afisarea <alorilor *entr! <aria:ilele n!&eI<aria:ila1, n!&eI<aria:ila2, n!&eI<aria:ilan( E.e&*l!6 ... int a,,c! ... cout<<a! //afiseaza valoarea variailei a cout<<a<<! //afiseaza valoarea variailelor a si 4fisarea !nor &esaKe co!t77%&esaK%O E.e&*l!6 cout<<*+cesta este un mesa"*! Constr!cia en,l face *osi:il trecerea la o linie no!( E.e&*le6 include<iostream.h> void main() { char a,,c! cin>>a! //daca tast,m -a- se tip -a- cout<<a! //daca tast,m - a- se tip -a- cin>>a>>>>c! //se cit val pentru a, apoi , apoi c cout<<a<<<<endl<<c! //se afi.eaz, var a .i iar pe urm,t. linie c # &plia/ii rez!l%ate, 0. Se ite+ d!u numere naturale a1b. S +e aluleze +uma 'i pr!du+ul l!r. Rez!l%are1 pr!"ramul e+te prezentat mai j!+, #include<iostream.h> #include<conio.h> //headere care contine definitiile functiilor void main() { clrscr()! //curata ecranul int a,,s,p! //declararea variailelor cout<<"a'"! cin>>a! //citirea unei valori pentru variaila a 3 cout<<"'"! cin>>! //citirea unei valori pentru variaila s'a/! //calculul sumei p'a*! //calculul produsului cout<<"suma'"<<s<<endl! //afisarea sumei cout<<"produsul'"<<p! //afisarea produsului $etch()! //asteapta apasarea unei taste # In $erea+tra 2!rland C++ pr!"ramul +e %a +rie a mai j!+, Rezultatul rulrii pentru a34 'i b35 e+te +uma36 +i pr!du+ul37 @ O:ser<aie6 Molosirea f!nciilor clrscr-0 'i $etcN-0 n! este o:li$atorie, ,ar este !til 5n r!larea *ro$ra&!l!i( Cele ,o! f!ncii a! ,efiniiile 5n Nea,er!l -:i:lioteca0 7conio(N> 4. Se ite'te latura l a unui ptrat. S +e aluleze aria ptratului 8&9 'i perimetrul +u 8:9. Rez!l%are1 pr!"ramul e+te prezentat mai j!+, #include<iostream.h> #include<conio.h> void main() { clrscr()! int l,+,0! cout<<"l'"! cin>>l! +'l*l! 0'1*l! cout<<"aria'"<<+<<endl! cout<<"perimetrul'"<<0! $etch()! # E.e&*l! ,e r!lare, *entr! lat!ra l=3 &plia/ii tem, 0. #ariabilele a1b11d1*1; iau %al!ri numere naturale. S +e aluleze %al!area e*pre+iei, E=a*x+b+c*y+d 5. Se ite+ trei numere naturale a1b1.S +e aluleze +uma +i pr!du+ul l!r. <. Se ite+ ini aratere are $!rmeaz un u%=nt. S +e a$i'eze u%=ntul preum 'i u%=ntul in%er+at 8u araterele >n !rdine in%er+9. 6. S +e a$i'eze di%er+e $i"uri "e!metrie $!l!+ind araterul ?. E.e&*l! D D D D D D D D 7 A