j 1jPrezentarea(noŃiunii(de(limbaj(de(programare( Amj văzutj înj secŃiuneaj precedentaj cumj potj fij repreze ntaŃij algoritmiij prinj utilizareaj… [614673]

j 1jPrezentarea(noŃiunii(de(limbaj(de(programare(
Amj văzutj înj secŃiuneaj precedentaj cumj potj fij repreze ntaŃij algoritmiij prinj utilizareaj pseudoj coduluij sau j aj
schemelorj logice,j insaj prelucrareaj automataj aj datel orj presupunej scriereaj algoritmuluij intr"oj formaj cej poatej fij
înŃeleasăjdejcalculatoruljelectronic.jAlgoritmiijvo rjfijscrișijintr"unj“limbajjdejprogramare”,jcarejva jconŃinejoperaŃiij
asemănătoarejcelorjdesprejcarejamjamintit,jnumiteja cumjinstrucŃiuni.jj
LimbajuljdejprogramarejconŃine:j
ALFABETUL :jojmulŃimejdejsimbolurijpentrujscriereajcuvintelor jdinjlimbajj
VOCABULARULc(LEXICUL): jmulŃimejdejcuvintejacceptatejcajfăcândjpartejdinjl imbajj
SejnumeștejUNITATEjLEXICALAjceajmaijmicaj"îmbinare" jdejcaracterejdinjvocabular,jcarejarejunjînŃeles.j
Existaj unj setj dej regulij privindj combinareaj unităŃil orj lexicalej înj cuvintej șij aj cuvintelorj înj "fraze"j ( regulij dej
SINTAXA),jrespectareajregulilorjducândjlajobŃinerea junorjconstrucŃiijcorecte.jSEMANTICAjunuijlimbajjse jreferaj
lajînŃelesuljstructurilorjobŃinutejprinjcombinareaj cuvintelorjacceptatejdejlimbaj.j
j Înjvocabularjavem:j
cuvintexcheiex =jcuvintejsaujprescurtărijalejunorjcuvintejdinjlimb ajengleza,jcejreprezintăjcomenzij(instrucŃiuni)jj
identificatorix =jnumejfolositejpentrujvariabile,jtipurijdejdatejși jfuncŃiijdefinitejdejutilizator.jUnjidentificatorj
estej formatj dintr"unj șirj dej caracterej carej începej c uj oj literaj șij poatej conŃinej litere,j cifrej șij caract erulj "_"j
(underscore).j Identificatorulj nuj poatej conŃinej spat iij sauj apostrof,j virgula,j ghilimelej …j Identificat oriij nuj potj
coincidejcujcuvintelejcheie.jj
Prinj PROGRAM jsejînŃelegejojsuccesiunejdejcomenzi(instrucŃiuni)j dejprelucrarejajdatelor,jscrisejintr"unjlimbajj
dejprogramare.jProgramuljestejmemoratjintr"ojentita tejnumitajfișierjsursaj(estejunjfișierjtext).j
Prelucrărilejdintr"unjprogramjC++jsuntjgrupatejînj FUNCłII .jRezolvareajuneijproblemejsejfacejprinjutilizareaj
unorjfuncŃiijdefinitejînjlimbajjșij/jsaujajunorjfun cŃiijscrisejdejprogramator,jatuncijcândjfuncŃiilejd ejajexistentejnuj
suntjsuficiente.jFuncŃiilejpejcarejlimbajuljlejpune jlajdispoziŃiajutilizatoruluijsuntjgrupate,jdupăjti puljdejprelucrarej
oferit,j înj maij multejfișierejnumitej"biblioteci"j(f ișierejHEADER).jPentrujaj puteajutilizaj ojfuncŃiejtr ebuiejsăj sej
specificejlajînceputuljprogramuluijnumelejbibliotec iijcarejconŃinejfuncŃiajrespectiva.j
OricejprogramjC++jtrebuiejsăjconŃinăjojfuncŃiejnumi taj" main "j(unjfeljdej“programjprincipal”),jinstrucŃiunilej
conŃinutejdejaceastajfiindjcelejprelucratejatuncijc ândjprogramuljestejlansatjînjexecuŃie.jj
PentrujajsejputeajobŃinejrezultatelejprelucrăriijda telorjcujajutoruljprogramelor,jtrebuiescjparcurseju rmătoarelej
faze:j
• scriereajprogramuluij(editareajtextuluijsursa);jj
• compilareaj programuluij(=j verificareajcorectitudini ijsintacticejșijsemanticej ajtextuluijsursajșij prelu crareajsaj
/barb2rightfișierjobiect)jj
• editareaj legaturilorj (fișierulj /j fișierelej obiectj o bŃinutej înj urmaj compilăriij suntj transformatej intr"u nj fișierj
executabil,j adicăj într"unj fișierj carej poatej fij lans atj înj execuŃiej prinj simplaj scrierej aj numeluij sauj la j prompterulj
sistemuluijdejoperare;jj
Numimjmediujdejprogramarejunjprogramjcarejpermiteja sistareajprogramatoruluijînjtoatejfazelejdejelabora rejaj
unuijprogram,jscrisjintr"unjlimbajjdejprogramarej(e ditare,jdepanare,jcompilare,jexecuŃie).jMediuljdejp rogramarej
BorlandjC++jpoatejfijlansatjînjexecuŃiejprinjtastar eajcomenziijbcjlajprompteruljMSDOS.jj
Înjparagrafuljurmătorjvorjfijprezentatejelementelej dejbazajalejlimbajuluijC.j
Prezentarea(generala(a(limbajului(C++(
Alfabetulg
Alfabetuljlimbajuluijestejformatjdinjacelejsimbolur ijutilizatejlajreprezentareajentităŃilorjunuijprogr am,jadicăjaj
unitarilorjlexicale.jReamintimjca,jprinjunităŃijlex icalejînŃelegemjcelejmaijmicijentităŃijcujvaloarejs emanticaj(adicăj
aujojsemnificaŃie),jprinjcombinareajcărorajrezultaj construcŃiilejsintacticej("propoziŃiijșijfraze").jj
AlfabetuljlimbajuluijCjsejcompunejdinjurmătoarelejc ategoriijdejsimboluri:jj
• Literelejmarijșijmicijalejalfabetuluijenglezjșijcar acteruljdejsublinierej"_"j(underscore)jj
• Cifrelejarabe:j0"9jj
• SemnejdejpunctuaŃie:j;j,j‘j"jj
• Altejcaractere:jj
+,j",j*,j/j
(,j),j{,j},j[,j],j\,jj
~,j^,j<,j>,j=,j?,j!,j#,j&,jj
Literelejșijcifrele,jprecumjșij caracteruljunderscor e,jdejmultejorijasimilatjînj mulŃimeajliterelor,jsun tjutilizatej
pentrujconstruireajidentificatorilorjșijcuvintelorj cheie,jdupăjregulijcejvorjfijdescrisejînjparagrafel ejcorespunzătoare.j
ÎnjlimbajuljCj sej facej diferenŃaj dintrejliterelej mic ijșijmajusculelejcorespunzătoare,j decijidentificato rulj"a"j vajfij
diferitj dej identificatorulj "A",j iarj “turbo”j vaj fij d iferitj dej “TURBO”j sauj “TuRbO”j sauj oricej altăj combin aŃiej
majusculăjminusculă.j

j 2jIdentificatorig
Identificatoruljreprezintăjnumejpejcarejlejatribuim jvariabilelor,jconstantelor,jfuncŃiilor,jtipurilorj dejdatejdefinitej
dejutilizator.jUnjidentificatorjestejojsecvenŃajdej litere,jcifrejșijcaracteruljunderscore,jprimuljcara cterjtrebuindjsăjfiej
literaj sauj underscore.j FolosiŃij cuj multaj precauŃiej identificatorij carej începj cuj underscore,j pentruj aj n uj intraj înj
conflictjcujnumelejrutinelorjsistem,jajcărorjortogr afierejnujsejcunoaștej(numelejrutinelorjsistemjînce pjîntotdeaunaj
cuj"_").j
Regulilejdejformarejajidentificatorilorjsuntjacelea șijcujregulilejdinjPascal.jUnjidentificatorjpoateja vea,jteoretic,j
ojlungimejarbitrara,jdarjnumaijprimelej31jdejcaract erejsuntjluatejînjconsiderarejdejcompilator.j
Identificatoriijurmători:j
nume,cNume,cNuME,cNUMec
suntjdiferiŃi,jdeoarecejliterelejmicijsuntjconsider atejdiferitejdejliterelejmarijcorespunzătoare.j
Cuvintegrezervateg(keywords)gg
NumelejrezervatejinstrucŃiunilor,jtipurilorjpredefi nitejșijsintaxeijdejdefinirejajfuncŃiilorjșijtipuri lorjdejdatejsej
numescjcuvintejcheie.jListajcuvintelorjcheiejalejli mbajuluijCjeste:jj
xautoxxbreakxcasexcharxconstxcontinuexdefaultxdoxdo ublexelsexenumxexternxfloatxforxgotoxifxintxlongxre gisterx
returnxshortxsignedxsizeofxstaticxstructxswitchxtyp edefxunionxunsignedxvoidxvolatilexwhilex
IdentificatoriijdefiniŃijdejutilizatorjnujtrebuiejs ăjcoincidăjcujcuvintelejrezervate.jÎnjlimbajuljC++j sejmaijadaugăj
câtevajcuvintejcheie,jcarejvorjfijdescrisejlajmomen tuljoportunj(înjcapitoluljrezervatjprogramăriijorie ntatejobiect).j
Comentariigg
Comentariilejsuntjacelejșirurijdejcaracterejutiliza tejlajexplicareajprogramelorjsursa,jdelimitatejprin jcaracterej
specialejcarejdeterminajignorareajlorjdejcătrejcomp ilator.j
Unjcomentariujarejurmătoareajforma:jj
/*cșircdeccaracterec*/c
sauj
//cșircdeccaracterec
undej prinj șirj dej caracterej sej înŃelegej oj secvenŃaj d ej caracterej dinj setulj caracterelorj reprezentabile,j maij puŃinj
combinaŃiaj*/.jNujsejadmitjcomentariilejimbricate.j Comentariuljpoatejfijscrisjpejmaijmultejliniijdacăj estejscrisjînj
primajforma.jAjdouajformajestejspecificajBorlandjCj șijpermitejscriereajunorjcomentariijcejnujdepășescj ojlinie.j
Tipurigdegdategg
DefiniŃiajnoŃiuniijdejtipjdejdatăjcuprinde,jpejlâng ăjmulŃimeajdejvalorijajtipului,jșijaltejaspecte:jj
• dimensiuneajmemorieijalocatejj
• mulŃimeajoperaŃiilorjcejacŃioneazăjasuprajelementel orjtipuluijj
• timpuljdejviatajasociatjdatei,jdatjdejclasajdejmemo riejj
Tipurilejdejdatejsunt:jj
• tipurijdejbaza:jtipurijpredefinitejînjlimbaj;jj
caracterj( char )jj
întregj( int)jj
realj( float,j double )jj
• tipurijderivate:jtipurijdefinitejdejutilizator;jj
enumerarejj
referinŃajj
structurate:jj
tabloujj
structurajj
uniunejj
SprejdeosebirejdejPascal,jînjCjnujestejdefinitjtipu ljlogic,jconsiderându"sejcajojexpresiejestejadevăra tajdacăjarej
ojvaloarejnejnulăj(adicăjdiferităjdej0)jșijfalsăjîn jcazjcontrar.jTipulj char jdiferăjdejtipuljcaracterjdinjPascal,jînjCj
caracterelejfiindjdejfaptjnumerejîntregi,jcarejdese mneazăjojechivalenŃăjcujcoduljASCII.jSejdefineștejș ijtipulj void ,j
carejdesemneazăjfiej"oricejtip",jfiejindicajlipsajo ricăruijparametrujintr"ojfuncŃie.jj
Tipuri(de(date(predefinite((
TipurilejdejbazajdefinitejînjlimbajuljCjsunt:jîntre g,jrealjșijcaracter.jExistajinsajmaijmultejtipurijî ntregijșijreale,j
înjfuncŃiejdejnumăruljdejbiŃijpejcarejsejpotjmemora jvalorilejșijdacăjvalorilejsuntjcujsaujfărăjsemn.jÎ njplus,junelej
dintrejacestejtipurijdiferăjdejlajojimplementarejla jaltajajlimbajuluij(înjfuncŃiejdejcalculatoruljpejc arejsejlucrează).j
Înjtabeluljurmătorjsuntjprezentatejtipurilejfundame ntale,jmemoriajnecesarajstocăriijvalorilorjdejacelj tipjșijlimitaj
valorilorjcejpotjfijmemoratejintr"ojvariabilajdejac eljtip.j

j 3jTipulc Dimensiunecmemoriec Limitac
valorilorc
charj 1jbytej "128…127j
intj depindej dej implementarej
(uzualj2jbytes)j"32768…32767j
shortjintj 2jbytesj "32768…32767j
unsignedj
charj1jbytej 0..255j
unsignedjintj depindejdejimplementarej "j
longjintj 4jbytesj "2147483648j
…2147483647j
unsignedj
longjintj4jbytesj 0…4294967295j
floatj 4jbytesj "j
doublej 8jbytesj "j
longjdoublej 10jbytesj "j
Primulj tipj estej tipulj caracter.j Oj variabilaj dej aces tj tipj vaj aveaj caj valoarej codulj ASCIIj asociatj caract eruluij
respectiv.jjDejexemplu,jdacăjuneijvariabilejijsejat ribuiejcaracterulj ’a’,jvariabilajvajconŃinejvaloareaj97j(număruljdej
ordinejaljcaracteruluij ‘a’jînjcoduljASCII).j
Tipuljîntregjceljmaijdesjutilizatjînjprogramejestej int,jdarjnumăruljdejbytesjpejcarejsejmemoreazăjvaloril ejdej
acestjtipjdiferăjdejlajojimplementarejlajaltajajlim bajuluijCj(înjfuncŃiejdejtipuljcalculatorului).jAst fel,jtipulj intjestej
echivalentjcuj short int jsau long int ,jînjfuncŃiejdejimplementare.j
Celelaltej tipurij întregij suntj obŃinutej prinj folosir eaj prefixuluij signed j sauj unsigned ,j indicândj dacăj valorilej
respectivejsuntjcujsemnj(conŃinjșijvalorijnegative) ,jrespectivjfărăjsemnj(jvalorijnaturale).j
j Ultimelejtreijtipurijdinjtabeljsuntjtipurijreale,j diferenŃajdintrejelejconstândjînjcantitateajdejmemo riejutilizata,j
intervalulj dej valorij șij preciziaj memorăriij valorilo rj (numărulj dej zecimalej reŃinute).j Valorilej realej se j reprezintăj
conformjnotaŃieijdinjstandarduljIEEEj(folosindjsemn ul,jmantisajșijexponentul).jDejexemplu,jpentrujtipu ljfloatjsej
utilizeazăj reprezentareaj înj simplaj precizie,j folosi ndj unj bitj dej semn,j 7j biŃij pentruj exponentj șij 24j dej biŃij pentruj
mantisa.jAceastajreprezentarejarejunjexponentjînjli mitajaj10 "37 jșij10 38 jcujpânăjlaj7jzecimalejprecizie.jValoareaj
maximajajunuijfloatjestejdej 1.701411cE38 .j
Dinjtabeljsejobservajcajnujexistajunjtipjlogic,jașa jcumjestejeljdefinitjînjaltejlimbajejdejprogramare. jÎnjlimbajulj
Pascal,jtipuljlogicjejdefinitjcajmulŃimeajcujvalori lej {false,ctrue} jîmpreunajcujoperatoriijlogicijcunoscuŃij(și,jsauj, j
negaŃiaj logica).j Înj limbajulj Cj nuj s"aj definitj acest j tipj darj sej foloseștej următoareaj convenŃie:j oj expre siej estej
consideratajadevăratajdacăjvaloareajobŃinutajlajeva luareajeijestejnejnulăjșijfalsăjînjcazjcontrar.jVar iabilelejcarejsej
vorjfolosijcajvariabilejlogicejvorjfijdeclaratejdej tipjîntreg.j
Ojaltajcaracteristicajapartejojconstituiejintroduce reajtipuluijvoid,jpentrujajdesemnaj“nimic”jsauj“ori cejtip”,jînj
funcŃiejdejcontextuljînjcarejestejutilizat.jÎnjexem plelejdejpânăjacumjtipuljvoidjajfostjfolositjpentru jajindicajfaptulj
cajfuncŃiaj main jnujîntoarcejnicijojvaloare.j
Pentrujajputeajutilizajojvariabilajintr"unjprogramj C,jestejobligatoriejdeclarareajacesteia,jastfel:j
[clasa_de_memorie]cTIP_DE_DATEclista_variabile;c
unde:j
• clasa_de_memorie jspecificajloculjundejsejvajalocajmemoriejpentrujva riabilajșijduratajsajdejviata,jnoŃiunijlaj
carejvomjrevenijmaijtârziu).jSpecificareajclaseijde jmemoriejestejopŃionala;jj
• TIP_DE_DATE jestejoricejtipjpredefinitjsaujderivat;jj
• lista_variabile jconŃinejlistajvariabilelorjdejaceljtip,jdespărŃite jprinjvirgula;jj
Exemple:j
intca,b,c;c
charcch;c
floatcx,y;c
longcintcz;c
intcg=7;c
ObservaŃie:j Laj declarareaj variabileij întregij gj s"aj realizatj șij iniŃializareaj acesteiaj (j adicăj stabilir eaj uneij valorij
iniŃiale).j
Variabilelejcarejsuntjdeclaratejînjinterioruljcorpu luijuneijfuncŃiijsejnumescjvariabilejlocale,jiarjce lejdeclaratejînj
afarajoricăreijfuncŃiijdinjprogramjsej numescjvariab ilejglobale.jVariabilelejglobalejvorjputeajfijutili zatejînjtoatej
funcŃiilejcejcompunjprogramul,jiarjvariabilelejloca lejdoarjînjcadruljfuncŃieijînjcarejaujfostjdefinite .j
Citirea(și(afișarea(datelor.(Primele(programe(în(C+ +(
Pentrujintroducereajdatelorjprinjintermediuljtastat uriijavemjnevoiejdejfuncŃiaj CIN ,jiarjpentrujafișareajvalorilorj
saujmesajelorjdejfuncŃiaj COUT .j
Exemplulx1: jCeljmaijsimplujprogramjestejprogramuljcarejnujreal izeazăjnicijojprelucrare:j
j
voidcmain(c)c

j 4j{c
}c
Exemplulx2: jSăjsejafișezejpejecranjunjmesaj.j
#includec<iostream.h>c
voidcmain()c
{c
cout<<c"Salut!";cc
}c
ObservaŃii:jj
1. Liniajj #includec<iostream.h> jdeclarăjcăjsejvajutilizajbibliotecajdejfuncŃiijcuj numelej"iostream.h",jdinjcarej
facejpartejfuncŃiajdejafișarejcout.jj
2. FuncŃiaj main()c estej funcŃiaj principalăj aj unuij programj C,j prelucrăr ilej conŃinutej dej aceastaj fiindj primelej
efectuatejlajexecutareajunuijprogram.jj
3. Prelucrărilejcejaparjintr"ojfuncŃiejtrebuiescjscris ejintrej {jșij }c j
4. Dupăjscriereajuneijcomenzij(funcŃiej/jinstrucŃiune) jsejpunej ;jj
Exemplulx3: jReluămjexempluljprecedent:j
#includec<iostream.h>c
voidcmain()c
{c
cout<<c"AcestacestecprimulcprogramcîncCc";cc
cout<<"\ncscriscîncprimacoracdeclaboratorc";c
}c
ObservaŃii:jj
• Caracterulj"\n"jarejcajefectjafișareajajceeajcejurm eazăjpejliniajurmătoarejajecranului.jj
• Mesajuljtrebuiejprecedatjdej<<jj
Exemplulj4:jSăjsejscriejunjprogramjpentrujînsumarea jajdouajnumere.j
#includec<iostream.h>c
voidcmain()c
{c
intca;c//variabilaccarecvacmemoracprimulcnumărc
intcb;c//variabilaccarecvacmemoracalcdoileacnumărc
intcs;c//variabilaccarecvacmemoracsumaccelorcdouacn umerecc
c
coutc<<"IntroduceŃicprimulcnumăr:";c
cinc>>ca;c
coutc<<"IntroduceŃicalcdoileacnumăr:";c
cinc>>b;c
s=a+b;c
cout<<"Sumac"<<a<<"+"<<b<<"="<<c<<"\n";c
}c
ObservaŃii:jj
• Sejfolosescjtreijvariabilejpentrujajmemorajnumerele jșijsumajacestora.jPrinj "intca" jsejdeclarajfolosireajuneij
variabilejdejtipjîntreg,javândjnumelej" a".jj
• "cinc>>ca" j determinaj citireaj uneij valorij dej laj tastatura,j val oarej cej vaj fij memorataj înj zonaj dej memoriej aj
variabileij "a". jCeljcarejintroducejdatejtrebuiejsăjtastezejojvaloa rejîntreagă,jaltfeljsemnalându"sejeroare.jj
• Dacăjsejafișeazăjunjmesaj,jconŃinutuljacestuiajtreb uiejpusjintrejghilimele.jDacăjsejdoreștejafișareajv aloriijuneij
variabilejatuncijsejscrie,jdupăj <<,c numelejacesteia.jj
• ExecutândjprogramuljdejmaijsusjveŃijobservajmoduljd ejafișarejaljrezultatului.jj
• Înjtextuljprogramuluijaujfostjintrodusejmicijcoment arii,jprecedatejdej // ,jpentrujajfacilitajînŃelegereajtextuluij
sursa.jj
Exemplulj5:jScrieŃijunjprogramjcarejsăjafișezejurmă toruljmeniu:j
Băuturij
Berej………..12500j
Vinj…………34764jj
Suc……………5000j
CafeajNes….10000j
Expreso………6000j
#includec<iostream.h>c
voidcmain(c)c
{c
coutc<<”Bauturi:”;c

j 5jcoutc<<”\tcBere………………12500”;c
coutc<<”\tcVin………………..34764”;c
coutc<<”\tcSuc…………………5000”;c
coutc<<”Cafea:”;c
coutc<<”\tcNes……………….10000”;c
coutc<<”\tcExpreso……………6000”;c
}c
ObservaŃii:jS"ajfolositjcaracterulj \tjpentrujajsej“începe”junjnoujparagraf.jCaracterelej “\t” jșij “\n” jfacjpartejdintrej
caracterelej numitej caracterej escape,j deoarecej suntj caracterej nej afișabilej pej ecranj decâtj prinj utilizar eaj unorj
simbolurij(secvenŃejdejevitare).j
FuncŃiacfscanfc
Estej utilizatajpentrujcitireaj datelorj dintr"unjfiși erjsauj dejlajtastaturaj(dispozitivuljstandardjdejin trare)j șijarej
următoareajsintaxa:j
fscanf(tipul_valorii_citite,cvariabila);c
ModuljdejfuncŃionarejestejurmătorul:jsejciteștejdej lajtastatura,jînjvariabilajdată,jojvaloarejdejtipul jspecificat.j
Tipuljvaloriijcititejsejspecificajprinjj
%caracter,j
undejcaracterjpoatejfi:j
cj"jdacăjsejciteștejunjcaracterjj
djsauj ij"jintjj
xj"jîntregjînjbazaj16jj
"jîntregjînjbazaj8jj
uj"jîntregjfărăjsemnjj
hd,chi,chx,cho,chu,chx j"jshortjintjj
ld,cli,cl0,clu,clx j"jlongjintjj
sj"jșirjdejcaracterejj
fc,ce,cg,cE,cG "jfloatjj
le,clg,clf "jdoublejj
Le,cLg,cLf j"jlongjdoublejj
Înainteajvariabileijcarejstocheazăjvaloareajcititaj sejvajscriejîntotdeaunaj&j(operatoruljadresa),jcajî njexemplulj
următor:j
fscanfc("%f",c&a);c
Sejciteștejojvaloarejdejtipjfloat,jvaloareajfiindjs tocatajînjvariabilaja.jj
ObservaŃie:jNujsejvajfolosijoperatorulj&jpentrujcit irejatuncijcândjvariabilajestejunjpointerj(carejest ejeljînsușijoj
adresa,jdarjastajmaijtârziu…)jj
Dacăjdorimjsăjcitimj maij multej valorijcujaceeașijfun cŃiejfscanf,j vomj specificajpentrujfiecarej variabila jtipulj
valorii:jj
ccccccccintca;c
cccccccccharcch;c
ccccccccfloatcf;c
ccccccccc
ccccccccfscanf("%i%c%f",&a,c&ch,c&:f);c
ObservaŃii:jj
• Șiruljdejcaracterejcarejdefineștejtipuljvaloriijcit itejsejnumeștejdescriptorjdejformat.jj
• Număruljdescriptorilorjdejformatjtrebuiejsăjfiejace lașijcujnumăruljvariabilelorjdinjlistajj
• Ordineajdejscrierejajdescriptorilorjestejimportanta jj
• NujintroduceŃijaltejcaracterejintrejdescriptorijdec âtjcelejpermisejj
FuncŃiacfprintfc
FuncŃiajfprintfjestejutilizatajpentrujscriereajdate lorjlajdispozitivuljstandardjdejieșire.jSintaxajest e:j
fprintfc(ctipul_valorii_scrise,cvariabila)c;c
SemnificaŃiajparametrilorjestejaceeașijcajșijpentru jfscanf.jFuncŃiajarejcajefectjscriereajpejecranjaju neijvalorijdej
tipuljspecificat,jvaloarejstocatajînjvariabila.jNuj sejmaijfoloseștejoperatorulj&.jj
Exemplu:jCalculaŃijsumajajdouajnumere.j
intca,cb,csuma;c
printf("Primulcnumărc=");c
scanf("%i",&a);c
printf("Alcdoileacnumărc=c");c
scanf("%i",&b);c
sumac=ca+b;c
printf("Sumacdintrec%icșic%icestec%i",ca,cb,csuma); cc

j 6jOperatori((
Operatoriijconstituiejunuljdinjconceptelejcelejmaij importantejșijmaijinteresantejcarejstaujlajbazajunu ijlimbajjdej
programare.jLimbajuljCjestejvestitjpentrujmareajvar ietatejdejoperatorijpejcare"ijpunejlajdispoziŃiajpr ogramatoruluij
rezultândjșijojdiversitatejdejexpresiijcejsejpotjfo rmajpejbazajacestora.jDupăjcumjsejștie,jojexpresiej estejformatajdinj
variabile,jconstante,jfuncŃiijșijoperatori.jÎnjaces tjparagrafjvoijamintijcâtevajdinjcategoriilejdejope ratorijaijlimbajuluij
C:j
Operatoriigaritmetici:gg
+jadunare,j 3jscădere,j *jprodus,j /c împărŃire,j %j"jrestuljîmpărŃiriijîntregij
++ ,j 33 jincrementarejșijdecrementarej
OperatorigrelaŃionali:gg
<c,c>c
== jegalj
<= jmaijmicjsaujegalj
>= jmaijmarejsaujegalj
!= jdiferitj
Operatoriglogici:gg
&& j"jșijlogicj
||j"jsaujlogicj
!j"jnegaŃiejlogicaj
OperatoriijlogicijșijrelaŃionalijsuntjimplicaŃijînj formareajexpresiilorjcujvaloarejlogica.jSprejexempl u:j
a<2,c7/5+2<s31,c(X>33)c&&(x<3),c!(a==b)c
suntjexpresiijcujvaloarejlogica.j
Operatorigdegatribuire.gg
ÎnjsecŃiuneajprecedentajamjamintit,jvorbindjdesprej reprezentareajalgoritmilorjprinjschemejlogice,jdejo peraŃiaj
dejatribuire.jÎnjlimbajuljCjsejconsiderajcajatribui reajestejunjoperator.jAtribuireajarejurmătoareajsin taxa:j
variabilac=cexpresie;c
ModuljdejfuncŃionarejestejurmătorul:jj
1. sejevalueazăjexpresia;jj
2. valoareajobŃinutajestejstocatajînjzonajdejmemorieja jvariabilei,jrealizându"sejeventualejconversiijdejt ip.jj
3. valoareajrezultatajînjurmajatribuiriijestejvaloarea jatribuitajvariabilei.jj
ObservaŃie:j Atribuireaj fiindj unj operator,j sej consid eraj caj operanziij suntj variabilaj dinj parteaj stânga,j respectivj
expresiajdinjparteajdreapta.jOricejexpresiejtrebuie jsăjaibă,jînjurmajevaluăriijsale,jojvaloarej(unjrez ultat).jValoareaj
expresieijdejatribuirejestejvaloareajobŃinutajprinj evaluareajexpresieijdinjparteajdreaptajajatribuirii .j
DacăjvaloareajobŃinutajprinjevaluareajexpresieijdin jdreaptajatribuiriijestejdejaltjtipjdecâtjtipuljvar iabileijdinj
stângajatuncijsejîncearcăjconversiajtipuluijvalorii jlajtipuljvariabilei.jNujîntotdeaunajconversiajeste jposibila,jcazjînj
carejsejvajafișajunjmesajjdejeroarejînjurmajcompilă rii.jj
Exemplulj1j:jFiejurmătoareajsecvenŃajdejprogram:j
voidcmain(void)c
{c
intca;c
floatcc;c
c
a=3./2.+9./4.;c
cout<<”a=”<<a<<”\n”;c
c=3./2.+9./4.;c
cout<<”c=”<<c<<”\n”c
/*caceeașicexpresiecarecvaloricdiferite,cîncfuncŃie cdectipulcvariabileicdincstângacatribuiriic*/c
}c
ObservaŃie:jExecutândjprogramuljdejmaijsusjsejvorjo bŃinejvalorijdiferitejpentrujvariabilelej ajșij c,jdeșijexpresiaj
carej aparej înj dreaptaj ambelorj atribuirij estej aceeaș i.j Pentruj aj sej obŃinej valoareaj 3,j iarj pentruj cj sej o bŃinej 3,75.j
ExplicaŃiajstajînjmoduljînjcarejsejrealizeazăjconve rsiilejdejtipjînjcadruljatribuirilor.jValoareajexpr esieij3./2.+9./4.j
estej3,75jdarjvariabileijajijsejvajatribuijparteajî ntreagajajacesteijvalori,jadicăj3.jVariabilajcjeste jdejtipjfloatj(numărj
real),jdecijnujvajmaijfijnevoiejdejconversiajrezult atuluijevaluăriijexpresieijlajtipuljvariabilei.j
Exemplulj2:j
voidcmain(void)c

j 7j{c
c floatca;c
a=5/2;c
cout<<a;c
}c
ObservaŃie:j Executândj acestj programj sej vaj afișaj val oareaj 2j șij nuj valoareaj 2,5j așaj cumj arj fij fostj dej aș teptat.j
ExplicaŃiajestejurmătoarea:joperatorulj/jrealizează ,jatuncijcândjoperanziijsuntjîntregi,jîmpărŃireajîn treaga,jdecijvomj
obŃinejcatuljîmpărŃiriijîntregijdintrej5jșij2.jExis tajdouajmodalităŃijdejrezolvarejajproblemei:jfiejîn locuimjexpresiaj
cuj5./2.j(5.=5.0)jfiejutilizamjoperatoruljdejconver siejexplicitaj(j).jAcestjnoujoperatorj(jnumitjcast) ,jsejutilizeazăj
astfelj
(ctip_de_date)cexpresie;c
SemnificaŃiajestejurmătoarea:jSejcerejconvertireajv aloriijrezultatejdinjevaluareajexpresieijlajojvaloa rejdejtipulj
specificatjintrejparanteze.jÎnjexempluljdejmaijsusj vomjînlocuijatribuireajcu:j
a=(float)c5/2;c
(rezultatuljexpresieijvajfijdejtipjfloat,jdecijvari abileijajijsejvajatribuijvaloareaj2.5).j
ExerciŃiu:jFiejurmătoruljprogram,jcarejcalculeazăjm ediajaritmeticajajtreijnumereja,b,cj,jprimelejdouaj introdusejdej
lajtastatura.:j
voidcmain(void)c
{c
intca,b,c;c
floatcs;c
c
cin>>a;c
cin>>b;c
c=a/2+b/3;c
s=(a+b+c)/3;c
cout<<”Mediacaritmeticaceste=”<<s;c
}c
ExecutaŃijacestjprogramjșijidentificaŃijgreșelile.j CorectaŃijgreșelilejgăsite.j
operatorigdegatribuiregcompusa:g
+=, -=, *=, /=, %=
Operatoriijdejatribuirejcompusajaujfostjintrodușijp entrujajfijutilizaŃijînjloculjatribuirilorjdejtipul :j
j
v=v+expresie;c
v=v3expresie;c
v=v*expresie;ce.t.cc
unde:jj
• v"variabilaj
• expresie"oricejexpresiejcorectajînjlimbajuljCj
Înjloculjacestorjexpresiijsejvorjfolosi:j
v+=expresie;c
v3=expresie;ce.t.cc
Folosireajoperatorilorjdejatribuirejcompusăjsporeșt ejlizibilitateajprogramuluijșijvitezajdejexecuŃie.j Dacăj
atribuireajestejdejforma:j
v=v+1;c
sauj
v=v31;c
sejpotjutilizajoperatoriijdejincrementarejșijdecrem entarej++jșij"".jExpresiilejdejmaijsusjsejvorjputea jscrie:j
v++;c
respectivj
v33;cc
Exemplulj3:jSejdajurmătoruljprogram:j
voidcmain(void)c
{c
intca,b,i=3;c
a=++i;c//preincrementarecacluicic
cout<<a;c

j 8jb=a33;c//postdecrementarec
cout<<”a=”<<a<<”\n”;c
cout<<”b=”<<b<<”\n”;c
a+=++b;c//atribuireccompusac
cout<<”a=”<<a<<”\n”;c
cout<<”b=”<<b<<”\n”;c
}c
ObservaŃie:jCândjaparjexpresiijdejtipulj:j
++variabilac
sauj
33variabila;c
spunemjcajsejrealizeazăjojpreincrementare,jrespecti vjpredecrementare.jÎnjcazuljpreincrementării,jvaria bilajvaj
primij caj valoarej 1+valoareaj iniŃială.j Dacăj preincre mentareaj aparej intr"oj expresiej sej realizeazăj întâij aceastaj
operaŃiej șij abiaj apoij celelaltej operaŃiij carej maij a parj înj expresiej (preincrementareaj arej prioritatej ma ij mare).j Înj
atribuireaj aj =j ++Ij sej realizeazăj întâij preincrement area,j înj urmaj căreiaj ij vaj aveaj valoareaj 4,j șij abiaj apoij sej
realizeazăjatribuireaj(ajvajaveajvaloareaj4).j
Înjexpresiajbj=jaj—jsejrealizeazăjojpostdecrementar e,jadicăjsejmodificajvaloareajvariabileijajdoarjdup ăjcejs"auj
efectuatjcelelaltejoperaŃiijdinjexpresie.jÎnjcazulj nostru,jbjvajprimijvaloareajluijaj(4,jînjmomentulja cela)jșijabiajapoij
sejvajmicșorajvaloareajluijajcujojunitate.j
ExerciŃiu:jExecutaŃijprogramuljdejmaijsusjșijurmări ŃijrezultatelejcarejsejobŃin.j
Maijexistajoperatorijdejatribuirejcompusa,jfolosind u"sejoperatoriijlogicijcejacŃioneazăjlajniveljdejbi t,jdarjdesprej
aceștiajvomjvorbijintr"ojsecŃiunejviitoare.jTotjatu ncijvomjdiscutajșijdesprejatribuireajmultipla.j
InstrucŃiunea(alternativa(( IF )(
Pânăjacumjamjfolositjcajexemplejprogramejsimple,jca rejconŃineaujdoarjfuncŃiilejdejintrarej/jieșirejșij operatorulj
dej atribuire.j Atuncij cândj elaboramj programej cevaj ma ij complexej estej necesarj ca,j intr"unj anumitj punctj al j
programului,jsăjdecidemjcontinuareajacestuiajînjfun cŃiejdejojcondiŃie.jÎnjprimuljlaboratorjamjdatjcaje xemplujdej
algoritmj rezolvareaj ecuaŃieij dej gradulj 1j (pseudocod j șij schemaj logica).j Intr"oj schemaj logicaj nij sej perm iteaj
utilizareajunuijblocjdejdeciziejdejurmătoruljtip:j
cujsemnificaŃia:j dacăcestecadevărataccondiŃiacsecexecutacprelucrarea cB,caltfelcsecexecutacprelucrareacA .j
ÎnjlimbajuljCjestejutilizatajinstrucŃiuneajIF,jcuju rmătoareajsintaxă:j
j
ifc(expresie)cinstrucŃiune1;c
[elsecinstrucŃiune2;}c
unde:j
• expresie j"joricejexpresiejvalidajînjlimbajuljCj
• instrucŃiune1,cinstrucŃiune2 j"joricejinstrucŃiunejcorectajdinjlimbajuljCj;j
ModjdejfuncŃionare:j
• sejevalueazăjexpresiajj
• dacăjexpresiajestejnejnulăj(convenŃiajpentrujadevăr at)jsejexecutajinstrucŃiune1jj
• dacăjexpresiajestejnulaj(falsă)jsejexecutajinstrucŃ iune2jj
• sejtrecejlajurmătoareajinstrucŃiunejajprogramuluijj
ObservaŃie:jalternativajelsej instrucŃiune2 jpoatejsăjlipsească.j
Exemplulj4:jSăjsejscriejunjprogramjpentrujcalculare ajmaximuluijajdouajnumere.j
#includec<iostream.h>c
voidcmain(void)c
{c
intca,b;c
intcmax;c
c
cout<<”a=”;c
cin>>a;c
cout<<”\nb=”;cCj
Aj BjN
UjD
AjCj
BjD
AjN

j 9jcin>>b;c
ifc(a<=b)c
max=b;c
elsec
max=a;c
cout<<”Maximulccelorcdouacnumereceste=”<<max<<”\n”; c
}cc
Exemplulj5:jScrieŃijunjprogramjcarejcalculeazăjmaxi muljaj3jnumere.j
#includec<iostream.h>c
voidcmainc(void)c
{c
intca,b,c;c
intcmax;c
cout<<”a=”;c
cin>>a;c
cout<<”\nb=”;c
cin>>b;c
cout<<”\nc=”;c
cin>>c;c
ifc(a<=b)cc
ifc(c<=b)cc
max=b;c
elsec
max=c;c
elsec
ifc(c<=a)c
max=a;c
elsec
max=c;c
cout<<”\nMaximulceste=”<<max;c
}c
ObservaŃie:j Dupăj cumj sej vedej dinj exemplu,j instrucŃi une1j șij instrucŃiune2j potj fij dej asemeneaj instrucŃiu nij if .j
SpunemjcajsuntjinstrucŃiunij if jimbricate .jAjsejobservajșijmoduljcumjajfostjscrisjprogramul, jastfeljîncâtjsăjsejvadăj
clarjcăreijinstrucŃiunij if jiijaparŃinejfiecarej else .j
Exemplulj 6:j Sej dauj treij numerej întregij a,b,c.j Săj se j testezej dacăj numerelej datej potj fij lungimilej laturi lorj unuij
triunghi.j
#includec<iostream.h>c
voidcmainc(void)c
{c
intca,b,c;c
c
cout<<”a=”;c
cin>>a;c
cout<<”\nb=”;c
cin>>b;c
cout<<”\nc=”;c
cin>>c;c
ifc(a<b+c)cc
ifc(b<a+c)cc
ifcc<a+b)cc
cout<<”cNumerelecpotcficlungimileclaturilorcunuictr iunghic!”;c
elsec
cout<<”Numerelecnucpotcficlungimileclaturilorcunuic triunghic!”;c
elseccout<<”Numerelecnucpotcficlungimileclaturilorc unuictriunghic!”;c
elseccout<<”Numerelecnucpotcficlungimileclaturilorc unuictriunghic!”;c
}j
ObservaŃie:jNujamjmaijverificatjdacăja,jbj,jcjsuntj pozitive.j
Exemplulj7.jReluămjexempluljprecedentjcujintenŃiajd ejajfolosijmaijpuŃinejinstrucŃiunijif.j
#includec<iostream.h>c
voidcmainc(void)c
{c

j 10 jintca,b,c;c
c
cout<<”a=”;c
cin>>a;c
cout<<”\nb=”;c
cin>>b;c
cout<<”\nc=”;c
cin>>c;c
ifc((a<b+c)c&&c(b<a+c)c&&c(c<a+b))c
cout<<”Numerelecpotcficlungimileclaturilorcunuictri unghic!”;c
elseccout<<”Numerelecnucpotcficlungimileclaturilorc unuictriunghic!”;cc
}c
ObservaŃie:jAmjfolositjojsingurajinstrucŃiunejif,jc elejtreijcondiŃiijanterioarejfiindjconectatejprinjo peratoruljȘIjlogic.j
Dupăjcumjsejștie,jdacăjavemjpropoziŃiilej p,q,r ,jatuncijpropoziŃiaj p&&q&&r jvajfijadevăratajdacăjtoatejpropoziŃiilej
componentejsuntjadevăratejșijfalsăjdacăjunajdintrej propoziŃiilejcomponentejestejfalsă.j
Estejindicatajaceastajscrierejpentrujcajsporeștejli zibilitateajprogramului.j
Exemplulj8:jRezolvareajecuaŃieijdejgraduljI.j
#includec<iostream.h>c
voidcmain(void)c
{c
intca,b;c
floatcx;c
c
cout<<”\na=”;c
cin>>a;c
cout<<”\nb=”;c
cin>>b;c
ifc(a!=0)cc
{c
x=(float)c3b/a;c
cout<<”\nx=”<<x;c
}c
elsec
ifc(b==0)ccout<<”\ncxcaparŃinecluicRc“;c
elseccoutc<<”\ncEcuaŃiacnucarecsoluŃii”;c
}c
ObservaŃie:j j Înj cazulj înj carej aj estej nej nulj avemj de j realizatj douaj operaŃii:j atribuireaj valoriij "b/aj va riabileij xj șij
afișareajvaloriijrădăcinii.jAtuncijcândjsejrealizea zăjmaijmultejoperaŃiijacesteajtrebuiescjinclusejint rej{jșij}.j
InstrucŃiuni(iterative((
Toatejproblemelejprezentatejpânăjacumjaujpututjfijr ezolvatejfolosindjnumaijfuncŃiijdejcitirej/jscriere ,jatribuirij
șijinstrucŃiuneajdejdeciziej(IF).jCelejmaijmultejdi ntrejproblemejvorjnecesitajstructurijdejdatejmaijco mplexejprecumj
șijfolosireajunorjnoijinstrucŃiuni,jcarejsăjpermită jrepetareajdejunjnumărjoarecarejdejorijajunorjparŃi jdinjalgoritm.j
Săj luamjcajexemplujalgoritmuljdejcalculjaljsumeijaj 2jnumerejintrodusej dejlaj tastatura.jEljconstajînjci tireaj
valorilorjpentrujcelejdouajnumerejșijafișareajsumei jacestora.jNujerajnevoiejdecâtjdejdouajvariabile,jc atejunajpentruj
fiecarejnumăr.jAcestjexemplujestejdoarjunuljdidacti c,jînjpracticajnejîntâlnindu"sejpreajdesjcazurijînj carejsăjfiej
nevoiej dej aj sumaj douaj numere.j Generalizareaj problem eij pentruj nj numerej vaj modificaj substanŃialj algoritm ulj
nostru.j Nuj vomj puteaj folosij catej oj variabilaj pentru j fiecarej numărj introdusj deoarecej nuj cunoaștemj exact j catej
numerejavemj(njestejintrodusjdejutilizatoruljprogra mului,jaltfeljalgoritmuljnujarjmaijfijgeneral).jChi arjdacăjs"arjștij
cajavem,jsăjzicem,j2500jdejnumerejarjfijcamjdificil jsăjutilizamj2500jdejvariabilejdistincte.jj
Problemaj noastrăj sej poatej rezolvaj simpluj dacăj utili zamj oj instrucŃiunej iterativaj (ciclica),j carej săj nej permităj
repetareajdejnjorijajurmătoareijsecvenŃejdejoperaŃi i:j
1. citimjojvaloarejfolosindjvariabilaj“a”;jj
2. adunamjvaloareajcititajlajrezultatuljparŃial,jmemor atjînjvariabilaj“s”;jj
InstrucŃiunilejcejdescriujacestejprelucrărijciclice jsuntjcompusejdinjdouajpărŃi:j
• corpuljciclului,jformatjdinjprelucrărilejcejsejdore scjajfijrealizatejdejmaijmultejori;jj
• condiŃia,jpejbazajcăreiajsejstabileștejdacăjsejvorj maijexecutajprelucrărilejdinjcicluj(estejobligatori ejexecutareaj
prelucrărilorjdinjcorpuljinstrucŃiuniijdejunjnumărj finitjdejori);jj
CorpuljcicluluijsaujcondiŃiajtrebuiejsăjconŃinăjace lejoperaŃiijcare,jdupăjefectuareajdejunjnumărjdejor ijajcorpuluij
instrucŃiunii,jsăjdeterminejschimbareajvaloriijdeja devărjajcondiŃiei,jpermiŃândjîncheiereajexecutăriij instrucŃiuniij

j 11 jciclicejșijtrecereajlajurmătoarelejinstrucŃiunijale jalgoritmului.jÎnjcazuljînjcarejestejneglijatjacest jaspect,jprogramulj
sejvajexecutajlajinfinit.j
CondiŃiajtrebuiejsăjfiejojexpresiejcujvaloarejlogic a.jReamintescjfaptuljcajînjlimbajuljC++jnujexistaju njtipjdej
datejlogic,jdarjsejutilizeazăjconvenŃiajcajoricejva loarejnej nulajsăjfiejconsideratajcajadevărjiarjvalo areajzerojcaj
valoareaj fals.j Înj consecinŃă,j oricej expresiej cuj val oarej dej tipj întregj vaj puteaj fij utilizataj dreptj cond iŃiej intr"oj
instrucŃiunejiterativa.j
Înjfinaluljparagrafuluijojchestiunejdejterminologie :jojexecuŃiejajcorpuluijinstrucŃiuniijpoartajnumele jsejiteraŃie.j
InstrucŃiunilejiterativejpotjfijclasificate,jînjfun cŃiejdejmomentuljevaluăriijcondiŃiei,jastfel:j
• ciclurijcujtestjiniŃialj(WhilejșijFor)"jevaluareajc ondiŃieijsejfacejînainteajfiecăreijiteraŃii;jj
• ciclurijcujtestjfinalj(Doj..jWhile)"jevaluareajcond iŃieijsejfacejlajsfârșituljfiecăreijiteraŃii;jj
InstrucŃiuneagWhileg
InstrucŃiuneajWhilej(“atâtjtimpjcat”)jestejojinstru cŃiunejiterativajcujtestjiniŃialjșijarejurmătoareaj sintaxa:j
whilec(c<condiŃie>)ccinstrucŃiune;c
unde:j
<condiŃie> j"joricejexpresiejcujvaloarejîntreaga;j
instrucŃiunec "joricejinstrucŃiunejvalidajajlimbajului;j
ModjdejfuncŃionare:j
• dacăjexpresiajestejadevăratăjsejexecutajprelucrăril ejdinjciclu;jj
• altfel,jsejtrecejlajurmătoareajinstrucŃiunejdejdupă jwhile;jj
Cujaltejcuvinte,jprelucrărilejdinjciclujsejexecutaj atâtjtimpjcatjcondiŃiajestejadevărata.jDacăjexpresi ajestejfalsăj
dejlajînceputjcorpuljcicluluijnujsejvajexecutajdelo c.j
Problemajpropusajînjparagrafuljprecedentjsejpoatejr ezolvajastfel:j
Exemplulj1jSumajajnjnumerejintrodusejdejutilizatorj
#includec<iostream.h>c
voidcmain()c
{c
floatca;c
intci,n;c
floatcsuma=0;c
c
i=1;c
cout<<"\nNumărulcdecelemente=";c
cin>>n;c
while(i<=n)c
{c
cout<<"Elementulc"<<i<<"este:c";c
cin>>a;c
suma=suma+a;c//secmaicpoatecscriecsuma+=ac
i++;c
}c
cout<<"Sumaceste=c"<<suma;c
}c
Exemplulj2:jSumajprimelorjnjnumerejnaturale.j
#includec<iostream.h>c
voidcmain()c
{c
intcn;c
intci;c
intcsuma=0;c
c
cout<<"n=";c
cin>>n;c
i=1;c
while(i<=n)c
{c
suma=suma+i;c
i++;c
}c
cout<<"Sumaceste:c"<<suma;c
}c

j 12 jObservaŃie:jSejpoatejutilizajojscrierejmaijcompacta ,jcarejeliminajșijnecesitateajutilizăriijvariabilei ji:j
whilec(n33)csuma+=n;c
ModuljdejexecuŃiejestejurmătorul:jj
• valoareaj condiŃieij estej valoareaj variabileij n,j valo arej carej scadej cuj oj unitatej dupăj fiecarej iteraŃiej
(postdecrementare)j
• condiŃiajdevinejfalsăjatuncijcândjvaloareajluijnjde vinejzero;jj
InstrucŃiuneagdog..gwhileg
InstrucŃiuneajdoj..jwhilejestejojinstrucŃiunejitera tivajcujtestjfinaljșijarejurmătoareajsintaxa:j
doc
instrucŃiune;c
whilec(<condiŃie>)c
ModjdejfuncŃionare:j
• sejexecutajcorpuljinstrucŃiunii;jj
• sejevalueazăjcondiŃia:jdacăjaceastajestejadevărataj sejreiajexecuŃia,jaltfeljsejtrecejlajurmătoareajins trucŃiunejdinj
program;jj
DeosebireajesenŃialăjfaŃăjdejinstrucŃiuneajwhilejes tejaceeajcajexpresiajsejevalueazăj după jiteraŃie.jj
Înj cazulj înj carej condiŃiaj estej falsăj dej laj început, j corpulj instrucŃiuniij sej executaj oj singuraj dată.j Ut ilizareaj
instrucŃiuniijdoj..jwhilejestejmaijpuŃinjfrecventaj (sejfoloseștejpentrujacelejprelucrărijcarejtrebuies cjexecutatejcelj
puŃinjojdată).j
Dacăjrescriemjexemplulj1jutilizândjdoj..jwhile,jobŃ inem:j
………………………….c
doc
{c
cin>>a;c
suma+=a;c
i++;c
}cwhile(i<=n);cc
………………………….c
InstrucŃiuneagforg
UnajdintrejcelejmaijputernicejinstrucŃiunijiterativ ejalejlimbajuluijCj(șijnujnumai)jestejinstrucŃiunea jfor,jcarejarej
următoareajsintaxa:j
forc(expresie1;cexpresie2;cexpresie3)c[instrucŃiune ];c
unde:j
expresie1,cexpresie2,cexpresie3 j"jexpresiijvalidejînjC++;j
instrucŃiune j"joricejinstrucŃiunejajlimbajuluijC++;j
ParantezelejpătratejsemnificajfaptuljcajinstrucŃiun eajestejopŃionala;j
ModjdejexecuŃie:j
• expresiilejaujurmătoareajsemnificaŃiejgenerala:jj
• expresie1 j"jexpresiejdejiniŃializare;jj
• expresie2 j"jcondiŃiajdejcontinuarejajexecuŃieijciclului;jj
• expresie3 j"jexpresiejdejactualizare;jj
• atâtjtimpjcatj expresie2 jestejadevăratajsejexecutajcorpuljciclului;jj
• dejfiecarejdatăjsejevalueazăjexpresiajdejactualizar e,jcarejarejroluljesenŃialjdejajdeterminajca,jdupăj unjnumărj
dejiteraŃii,j expresie2 jsăjdevinăjfalsă;jj
• expresie1 jsejevalueazăjojsingurajdată;jj
Exemplulj3:jReluămjexemplulj1jfolosindjinstrucŃiune ajfor:j
#includec<iostream.h>c
voidcmain()c
{c
intci,cn;c
floatca,csuma=0;c
c
cin>>n;c
for(i=1;i<=n;i++)cc
{c
cin>>a;c
suma+=a;c
}c

j 13 jcout<<”sumac=”<<suma;c
}c
ObservaŃii:jj
• Variabilajijestejutilizatajpejpostjdej“contor”jalji nstrucŃiuniijfor,jnumărândjlajajcâtajiteraŃiejs"aja juns.j
• ExecuŃiajinstrucŃiuniijforjsejîncheiejatuncijcândjn umăruljdejiteraŃiijdevinejegaljcujn.jIniŃializareaj luijijcuj1jsej
realizeazăjojsingurajdată,jlajînceput;jij<=jnjestej condiŃiajdejcontinuarejajexecuŃiei;ji++jsejefectuea zăjdupăjfiecarej
execuŃiejajcicluluij(postincrementare).j
• AceastajformajajinstrucŃiuniijforjestejceajmaijutil izata.jUnjaltjmodjdejajdescriejexecuŃiajacesteiajes tejurmătorul:j
pentrujijdejlaj1jlajnjsejexecutajcorpuljinstrucŃiun ii.j
• Nujestejobligatoriujcajvaloareajluijijsăjsejmăreasc ăjdejfiecarejdatăjcujojunitate.j
• Nujestejobligatoriejutilizareajtuturorjcelorjtreije xpresiijdinjfor,jdarjestejobligatoriejscriereajsepa ratoruluij“;”j.jj
Exempluljdejmaijsusjsejpoatejrescriejastfel:j
j
j
…………………………… c
for(c;n33;c)c
{c
cin>>a;c
suma+=a;c
}c
…………………………… c
NoŃiunea(de(tablou((
Înjlaboratoruljprecedentjexplicamjdejcejnujputemjsă jutilizamj2500jdejvariabilejdistinctejatuncijcândjd orimjsăj
însumamj 2500j dej numere.j Rezolvareaj propusaj atuncij s ej bazaj pej citireaj repetataj aj catej uneij valori,j folo sindj oj
variabilaja,jurmatajdejadăugareajacesteiajlajsumajp arŃiala.jDezavantajuljmetodeijestejacelajcajnujsejp otjmemoraj
toatejvalorilejcititejcijdoarjultimaj(citindjojvalo arejintr"ojvariabila,jvecheajvaloarejajacesteiajsej pierde).jCelejmaij
multejprogramejpresupunjprelucrărijcomplexejasupraj datelorjdejintrare,jdecijvajfijnevoiejsăjmemoramjși ruljnostruj
dejnumerejastfeljîncâtjsăjpoatăjfijutilizatjșijînja ltejprelucrări,jnujnumaijpentrujcalculareajsumei.j
Pentruj aj rezolvaj astfelj dej situaŃiij s"aj introdusj în j limbajelej dej programarej noŃiuneaj dej tablou.j Tablou rilej nej
permitjmemorareajunuijnumărjmarejdejvalorijutilizân djojsingurajvariabila.j
PrinjtabloujsejînŃelegejunjnumărjdejelementejdejace lașijtip,jnumitjtipjdejbaza,jstocatejintr"ojzonajco mpactajdej
memorie.j
Unjtabloujpoatejfijdefinitjastfel:j
tip_de_bazacnumec[dimensiune1]c[dimensiune2]c…c[dim ensiune_n];c
unde:j
tip_de_baza j=jtipuljelementelorjtabloului;j
nj=jnumăruljdejdimensiunijaljtabloului;j
[dimensiune_i] j=jnumăruljdejelementejpejdimensiuneajIj
tablouljarejdimensiune1*…*dimensiune_njelementej
NoŃiuneaj dej tablouj multidimensionalj poatej fij înŃele asăj maij binej dupăj parcurgereaj noŃiunilorj referitoar ej laj
vectorijșijmatrice.j
Tablourigunidimensionaleg
Declarareajunuijtabloujunidimensional:j
tip_de_bazacnume[dimensiune];c
undejdimensiunejspecificajnumăruljdejelementejaljve ctorului.j
Dejexemplu:j
intca[30]; jdeclarajunjvectorjcejconŃinej30jdejelementejdejtip jint,jj
floatcb[50]; jdeclarajunjvectorjcuj50jelementejreale;j
“Numerotarea”jelementelorjsejfacejdejlaj0jlajdimens iune"1,jadicăjcelej30jdejelementejalejprimuluijtabl oujsunt:j
a[0],ja[1],ja[2],j…,ja[29].jj
Spunemjcajtablouljestejojvariabilajindexata,jdeoare cejfiecarejelementjaljtablouluijpoatejfij“găsit”j/j “utilizat”j
cunoscândj număruljsaujdej ordine.j Vectoruljestejunjș irj dej valorij înjcarej sejcunoaștej precisjcarejestej p rimul,jalj
doilea,j….,ultimuljelement.j“Număruljdejordine”jalj unuijelementjsejnumeștejindice.j
Exemplulj1:jSăjsejcalculezejminimuljelementelorjunu ijșirjdejnjnumere,jutilizândjvectori.j
#includec<iostream.h>c
voidcmain()c
{c
intcn;c//numărulcdecelementec

j 14 jintca[50];c//secdefineștecocvariabilacdectipctablou ccucmaximc50cdecelemente,cdecicncvactrebuic
//csacfiecmaicmiccdecâtc50c
intcmin;c//variabilaccecvacmemoracminimulc
intci;c//contorcîncinstrucŃiuneacforc
c
cout<<”n=”;c
cin>>n;c
/*cseccitesccelementelecșiruluic*/c
for(i=0;i<n;i++)c
{c
cout<<”a[“<<i<<”]=”;c
cin>>a[i];c
}cc
//cseccalculeazăcminimulc
min=a[0];c//iniŃializamcminimulccucprimulcelementcd incșirc
for(i=1;i<n;i++)c
ifc(a[i]<min)c
min=a[i];c
//afișarecminimc
cout<<”Minimulceste=”<<min;c
}c
Dupăjcumjsejpoatejobservajdinjprogramuljdejmaijsus, jfiecarejelementjaljșiruluijsejpoatejutilizajcajșij cumjarjfijoj
variabilaj dej tipj intj independenta,j decij valoareaj un uij elementj alj vectoruluij poatej fij modificataj indepe ndentj dej
celelaltejelemente.jSăjpresupunemjcajutilizatorulji ntroducejpentrujnjvaloareaj4.jIniŃial,jelementelejv ectoruluijnujauj
ojvaloarejbinejdefinita;jputemjreprezentajgraficjve ctoruljastfel:j
Săj presupunemj caj utilizatorulj introducej valorilej 3, j 7,j 2,j 9j pentruj celej patruj elementej alej vectorului. j
Reprezentareajvectoruluijajvajfijurmătoarea:j
a[0]c a[1]c a[2]c a[3]c
3j 7j 2j 9j
Valoareaj oricăruij elementj alj vectoruluij poatej fij mo dificataj fiej printr"oj atribuire,j fiej prinj introduce reaj uneij
valorij(folosindjfuncŃiajcin,jdejexemplu)jdejlajtas tatura.jDacăjvomjintroducejatribuireaj
a[2]=23;c
valoareajelementuluijaljtreileajdinjvectoruljajnujv ajmaijfij2j(vecheajvaloare)jcij23.jDejasemenea,jdac ăjsejscrie:j
cin>>a[2];c
valoareajelementuluijvajfijceajintrodusajdejutiliza torjdejlajtastatura.j
Exemplulj2:jSejconsiderajnjnumerejîntregijintroduse jdejlajtastatura.jSăjsejaflejcatejnumerejsuntjparej șijcatejimpare.j
#includec<iostream.h>c
#includec<conio.h>c
voidcmain()c
{c
intcn;c//numărulcdecelementec
intcv[30];c//vectorccucmaximc30celementecîntregicc
intcpare,cimpare;c//variabileccecmemoreazăcnr.cElem entelorcpare,crespectivcimparec
intcj;c//variabilacfolositacîncinstrucŃiuneacforc
c
clrscr();c
//citimcnumărulcdecelementec
cout<<”n=”;c
cin>>n;c
/*cseccitesccelementelecșiruluic*/c
for(i=0;i<n;i++)c
{c
cout<<”v[“<<i<<”]=”;c
cin>>v[i];c
}cc
//iniŃializamcvariabilelec
pare=0;c
impare=0;c
//luamcfiecarecelementcdincvcșictestamcdacăcacestac estecsaucnucparc
for(j=0;j<n;j++)c
ifc(v[j]c%c2c=c=0)c
pare++;c

j 15 jelsecimpare++;c
//afișamcrezultatulc
cout<<”Amcgăsitc“<<pare<<”cnumerecparecșic“<<impare ;c
}c
Înjprogramuljdejmaijsusjverificam,jpentrujfiecareje lement,jdacăjacestajsejîmpartejexactjlajdoi,jcazjîn jcarejamj
maijdescoperitjunjelementjpar.jÎnjcazjcontrar,jnumă ruljelementelorjimparejsejmăreștejcujunu.j
Amjutilizatjoperatorulj%j,jnumitjșijmodulojaritmeti c,jcarejarejcajrezultatjrestuljîmpărŃiriijluijv[j]j laj2.jj
Exemplulj3:jSăjsejintroducăjdejlajtastaturajunjcuvâ ntjșijsăjsejafișeze.j
#includec<iostream.h>c
#includec<conio.h>c
voidcmain()c
{c
charccuvânt[30];c
c
clrscr();c
cout<<”Introduceticcuvantul:”;c
cin>>cuvant;c
cout<<”Cuvantulcintrodusceste:”<<cuvant;c
}c
ObservaŃijcujatenŃiejcumjamjdeclaratjvariabilajcejv ajmemorajcuvântul:jfolosimjunjvectorjcujelementejde jtipj
caracter.j Acestj modj dej declararej nej permitej săj lucr ămj cuj oricarej dintrej caracterelej cej formeazăj cuvânt ul.j Dej
exemplu,jdacăjutilizatoruljintroducejcuvântuljsalar iu,jvectoruljnostrujdejcaracterejaratajcamjașa:j
DacăjdorimjsăjmodificamjpuŃinjcuvântuljputemjscrie: j
cuvant[6]=’i’;c
șijvomjobŃinejcuvântuljsalarii.jj
Exemplulj4:jSăjsejciteascăjunjcuvântjșijsăjsejgăsea scăjnumăruljdejvocalejpejcarejlejconŃine.j
j
#includec<iostream.h>c
#includec<conio.h>c
#cincludec<string.h>c
voidcmain()c
{c
charcc[30];c//vectorcpentrucmemorareaccuvântuluic
intcvocale;c//variabilaccecvacmemoracnumărulcvocale lorc
intcj;c
clrscr();c
cout<<”Introduceticcuvantul:”;c
cin>>c;c
vocale=0;cc
//căutamcvocalelec
for(j=0;j<strlen(c);j++)c
ifc(cc[j]==’a’c||cc[j]==’e’c||cc[j]==’i’c||cc[j]==’ o’c||cc[j]==’u’)cvocale++;c
cout<<”Amcgasitc“<<vocale<<”cvocale.”;c
}c
ObservaŃii:j
• AmjutilizatjfuncŃiaj strlen ,jcarejarejcajrezultatjnumăruljdejcaracterejaljșiru luijdatjcajparametru.jFuncŃiajpoatejfij
utilizatajdoarjdacăjajfostjinclusjfișieruljantetjst ring.h,jfișierjcejconŃinejfuncŃiilejcejacŃioneazăja suprajșirurilorjdej
caractere.j
• “Mecanismulj“algoritmuluijestejurmătorul:jsejiajcat ejunjcaracterjdinjșiruljintrodusjșijsejverificajdac ăjelementulj
respectivjconŃinejunuljdintrejcaractereleja,je,ji,j o,ju.jDejfiecarejdatăjcândjcondiŃiajestejadevărataj sejincrementeazăj
număruljdejvocale.j
Maijmultejdesprejșirurilejdejcaracterejvomjspunejdu păjcapitoluljdedicatjpointerilor.j
Exemplulj5j(CăutarejsecvenŃiala)jSejconsiderajunjși rjdejnjelementejîntregijșijunjnumărjîntregjx.jSăjse jverificej
dacăjnumăruljxjfacejpartejdinjșiruljconsiderat.jj
j
#includec<iostream.h>c
#includec<conio.h>c
voidcmain()c
{c
intcv[25];c
intcn;c

j 16 jintcx;c
intcj;c
intcgasit;c//variabilaclogicaccecindicacdacăcxcapar Ńinecsaucnucluicvc
c
clrscr();c
//citimcnumărulcdecelementec
cout<<”n=”;c
cin>>n;c
/*cseccitesccelementelecșiruluic*/c
for(j=0;j<n;j++)c
{c
cout<<”v[“<<j<<”]=”;c
cin>>v[j];c
}cc
//seccitestecelementulcxc
cout<<”x=”;c
cin>>x;c
gasit=0;c
j=0;c
//cautamcxcîncșirulcvc
while(c(j<n)&&(!gasit))c
{c
ifc(v[j]==x)cgasit=1;cc
j++;c
}c
if(gasit)ccout<<”Elementulcapartinecșiruluicdatc!”; c
elseccout<<”ElementulcnucaparŃinecșiruluic!”;c
}c
AmjutilizatjinstrucŃiuneajwhile,jcondiŃiajdejefectu arejajcicluluijfiindj (j<n)c&&c(!găsit). jCorpuljinstrucŃiuniij
whilejsejvajexecutajatâtjtimpjcatjnujs"ajajunsjlajs fârșituljșiruluijșijelementuljxjnujajfostjgăsitjînj v.jCondiŃiajdejmaij
susjdevinejfalsăjînjdouajcazuri:jfiejamjepuizatjele mentelejșiruluij(jjajajunsjegaljcujn),jfiejamjgăsit junjelementjegalj
cujx.jDupăjexecutareajcicluluijwhilejtestamjdacăjva riabilajgăsitjestejnejnulaj(adevăr),jcazjînjcarejxj aparŃinejluijv,j
altfeljxjnujaparŃinejșirului.j
Exemplulj 6.j (sortare)j Sej consideraj unj șirj cuj nj elem entej reale.j Săj sej aranjezej elementelej înj ordinej cre scătoarej
utilizândjacelașijvector.j
#includec<iostream.h>c
#includec<conio.h>c
voidcmain()c
{c
doublecv[40];c
intcn;c
intcj,ck;c
c
cout<<”n=”;c
cin>>n;c
for(j=0;j<n;j++)c
{c
cout<<”v[“<<j<<”]=”;c
cin>>v[j];cc
}c
//sortareaccrescatoarecacșiruluicvc
for(j=0;j<n31;j++)c
for(k=j+1;ck<n;k++)c
ifc(v[j]>v[k])cc
{c
//interschimbamcvalorilecv[j]cșicv[k]c
temp=v[j];c
v[j]=v[k];c
v[k]=temp;cc
}c
//afisareacvalorilorcsortateccrescatorc
for(k=0;k<n;k++)ccout<<v[k]<<”\t”;c

j 17 j}c
Tablourigbidimensionaleg(matrice)gg
Pejlângăjvectori,jceljmaijutilizatjtipjdejtabloujde jnumerejestejtablouljbidimensional,jnumitjdejcelejm aijmultejorij
matrice.jDeclarareajuneijmatricejsejfacejastfel:j
tip_de_bazacnume[dimensiune_1][dimensiune_2];c
Exemplu:j
doubleca[10][5] ;j//tabloujcuj10jliniijșij5jcoloanejdejelementejrea lej
intca[3][2]; j//tabloujcuj3jliniijșij2jcoloanejdejelementejîntre gij
Pentrujajputeajaveajaccesjlajvaloareajunuijelementj aljmatricei,jtrebuiejsăjprecizamjliniajșijcoloanajp ejcarejsej
aflajacesta.jUnjelementjpoatejfijspecificatjprinja[ i][j],jij"jreprezentândjliniajșijjj"jcoloana.jÎnjca zuljvectorilorjciteamj
ojvaloarejreprezentândjnumăruljdejelemente.jPentruj matricejvomjcitijojvaloarejmj"jnumăruljmaximjdejlin iijșijoj
valoarejnj"jnumăruljmaximjdejcoloane.jOjmatricejcuj mjliniijșijnjcoloanejvajaveajmj*jnjelemente.j
Dacăjmj=jnjatuncijmatriceajsejnumeștejmatricejpătra tajdejordinjn.j
Exemplulj7.jSăjsejciteascăjelementelejuneijmatricej șijsăjsejafișeze.j
#includec<iostream.h>c
#includec<conio.h>c
voidcmain()c
{c
intca[20][20];c//matriceccucelementecîntregic
intcm,cn;c//numărulcdeclinii,crespectivccoloanec
intci,cj;c//variabilecfolositecîncinstr.cForc
//citimcnumărulcdecliniicșiccoloanec
c
cout<<”Numărulcdeclinii:”;c
cin>>m;c
cout<<”Numărulcdeccoloane:”;c
cin>>n;c
//seccitesccelementelecmatriceic
for(i=0;i<m;i++)c
for(j=0;j<n;j++)c
{c
cout<<”a[“<<i<<”][“<<j<<”]=”;c
cin>>a[i][j];c
}cc
//afisareacelementelorcmatriceic
for(i=0;i<m;i++)c
{c
for(j=0;j<n;j++)ccout<<a[i]][j]<<”\t”;c
cout<<”\n”;cc
}c
}c
Exemplulj8.jSejdaujdouajmatricejcujmjliniijșijnjcol oane.jSăjsejcalculezejmatriceajsuma.j
……………………………………………….c
intca[20][20],cb[20][20],cc[20][20];c
intcm,n;c
intci,cj;c
………………………………………………..c
//seccitesccdimensiunilecm,cncșiccelecdouacmatricec acșicbc
……………………………………………….c
//calculamcmatriceacsumac
for(i=0;i<m;i++)c
for(j=0;j<n;j++)cc[i][j]=a[i][j]+b[i][j];c
//secafiseazacmatriceaccc
………………………………………………..c
Atuncij cândj lucrămj cuj matricej avemj nevoiej dej doij in dici:j ij pentruj aj parcurgej liniilej matriceij șij jj pen truj aj
parcurgejcoloanelejacesteia.jPentrujfiecarejvaloare jajluiji,jjjiajtoatejvalorilejintrej0jșijn"1,jdecij sejparcurgejliniaji.j
Înjultimuljexemplujamjutilizatjtreijmatrice.jPentru jmaijmultajclaritate,jputemjdeclarajunjtipjalejcăru ijelementej
săjfiejmatrice:j
typedefcintcmatrice[20][20];c
matriceca,cb,cc;c

j 18 jAmjdefinitjunjtipjdejdatej(tipjdejdatejdefinitjdeju tilizator)jalejcăruijelementejsuntjmatricejcujmaxim j20jdejliniij
șijcoloanejcujelementejîntregi.jNumelejnouluijtipje stejmatrice.jDeclarareajvariabilelorjdejacestjtipjs ejpoatejfacej
oriundej înj programulj înj carej aparej definiŃia.j Defin ireaj unuij tipj dej datej sej poatej facej numaij prinj util izareaj
cuvântuluij cheiej typedef jînainteaj declaraŃiei.j Dacăj definimj maij multejtipur ij sej vajfolosijtypedefj pentrujfiecarej
definiŃie.j
NoŃiuneagdegpointergg
Pointeriijaujfostjintrodușijînjlimbajelejdejprogram arejpentrujajputeajrezolvajmaijeficientjanumitejpro blemejsauj
pentrujajdajmaijmultajclaritatejanumitorjprograme.j j
OjprimajdefiniŃiejpoatejfijurmătoarea:j
Pointerul este o variabila ce conŃine adresa unui o biect.
ObiectuljajcăreijadresajestejreŃinutajdejpointerjpo atejfi:j
variabilajj
funcŃiejj
Fiejurmătoruljexemplu:j
intcx;c
intc*px;c
Amjdefinitjojvariabilajdejtipjîntregjxjșijojvariabi lajpointer,jcarejpoatejconŃinejadresajuneijvariabil ejdejtipjîntreg.j
Simbolulj*jcejaparejÎnjstângajvariabileijpxjaratajc ajpxjestejojvariabilajpointer.j
Prinjatribuireaj
px=&x;c
Pointeruljvajaveajcajvaloarejadresajdejmemoriejaloc atajvariabileijxj(vezijlaboratoruljnr.1,jdefiniŃiaj variabilei).j
Operatoruljunarj&jestejutilizatjpentrujajsejobŃinej adresajvariabileijxj(operatorjunarj=jarejunjsingurj operand)jj
AcumjputemjsăjlucrămjcujconŃinutuljvariabileijxj(ad icăjcujvaloareajacesteia)jprinjintermediuljpointeru luijpx,j
decijindirect,jfărăjsăjmaijfolosimjvariabilajx.jLaj primajvedere,jaceastajmodalitatejdejlucrujpoatejpăr eajdificilajșijnuj
tocmaij utila.j Necesitateaj utilizăriij pointerilorj va j aparej cuj maij multaj claritatej înj secŃiuneaj dedicata j șirurilorj dej
caracterejșijfuncŃiilor.j
Exemplulj1.jFiejprogramuljurmător:j
#includec<iostream.h>c
voidcmain()c
{c
intcx,y;c
intc*px;c
c
cout<<"x=";c
cin>>x;c
cout<<"y=";c
cin>>y;c
px=&x;c
cout<<"xcarecvaloareac"<<*px;c
*px=y;c
cout<<"\nxcacdevenitc"<<x;c
}c
Înjprogramuljdejmaijsusjamjintrodusjvalorilejvariab ilelorjîntregij xjșij y,jamjdefinitjunjpointerjlajvariabilaj xjșij
amjatribuitjacestuiajadresajdejmemoriejalocatjvaria bileij x.jSăjanalizamjatentjlinia:j
cout<<"xcarecvaloareac"<<*px;c
Prinj*pxjsejînŃelegejvaloareajaflatajînjzonajdejmem oriejajcăreijadresajestejmemoratajînjpointeruljpx.j Valoareaj
afișatăjvajfijchiarjvaloareajintrodusajpentrujxjdeo arece,jînaintejdejafișare,jpointeruljpxjajprimitjca jvaloarejadresaj
variabileijx,jadresajlajcarejsejaflajvaloareajacest eiaj(valoarejdobânditajprinjutilizareajfuncŃieijcin ).j
Atribuireaj *px=y ;j vaj modificaj valoareaj carej sej aflaj laj adresaj memor ataj dej px,j valoarej carej vaj fij valoareaj
introdusajdejutilizatorjpentrujvariabilajy.jAstfelj vajfijmodificatajchiarjvaloareajpejcarejojarejvaria bilajx.j
Fireștej caj eraj maij simpluj săj folosimj atribuireaj x=y ;j carej arej acelașij efectj șij nej scuteștej dej de"aj mai j folosij
pointeri,jinsajexempluljestejpurjdidactic.j
Operatorulj unarj *j estej folositj subj formaj *variabila _pointer,j valoareaj acesteij expresiij fiindj valoareaj carej sej
găseștej înj memoriej laj adresaj memorataj dej pointerulj cej aparej caj operand.j Înj concluzie,j prinj pxj avemj acc esj laj
adresajvariabileijx,jiarjprinj*pxjlajvaloareajvaria bileijx.j
Vomjspunejcajunjpointerj“refera”jindirectjunjobiect jsaujcaj“pointeaza”(arata)jlajobiectuljrespectiv.jV ariabilelej
pointerjpotjfijîncadratejcajfiindjdejtipjreferinŃa. j
Exemplulj2.jSăjsejcalculezejsumajajdouajnumerejreal ejfolosindjpointeri.j
#includec<iostream.h>c
voidcmain()c

j 19 j{c
doublecx,cy,cz;c
doublec*px,c*py,c*pz;c
c
cin>>x;c
cin>>y;c
px=&x;c
py=&y;c
pz=&z;c
*pz=*px+*py;c
cout<<"Sumaceste:c"<<*pz;c
}c
Pointerigșigtablourig
ÎnjlimbajuljC,jexistajojfoartejstrânsajlegăturajint rejpointerijșijtablouri,jastfeljcajpointeriijșijtab lourilejsuntjtratatej
lajfel.jOricejprogramjînjcarejaparjtablourijpoatejf ijmodificatjastfeljîncâtjsăjfoloseascăjpointerijînj loculjtablourilor.j
ÎnjaceastajsecŃiunejvomjdiscutajdesprejlegăturajdin trejpointerijșijvectorij(tablourijunidimensionale). j
FiejurmătoarelejdeclaraŃii:j
intca[20];c
intc*pa;c
Amjdeclaratjojvariabilajaj,jcarejestejunjvectorjcuj maximj20jelementejîntregijșijunjpointerjlajojvariab ilajdejtipj
întreg.jDupăjcumjsejștie,jojvaloarejintjarejnevoiej dej16jbiŃijpentrujajfijmemorata,jadicăj2jbytesj(joj variabilajintj
poatejretinejnumerejîntregijintrej"32768jșij32767,j vezijcursjBazelejInformaticii).jPentrujtablouljajvo rjfijalocaŃij2·j
20=40j bytesj consecutivij înj memoriej adică,j pentruj pr imulj elementj a[0]j suntj alocaŃij primiij 2j bytes,j pent ruj a[1]j
următoriij2jbytes,…,jpentruja[19]jultimiij2jbytesjd injceij40jalocaŃi.j
Fiejatribuirea:jj pa=&a[0];c
Dupăj aceastaj atribuire,j pointerulj paj conŃinej adresa j primuluij elementj alj vectorului,j adicăj paj pointeaza j laj
începutuljvectoruluija.j
Dacăjscriemjpa=&a[3];jatuncijpajvajreferijelementul jalj4"leajdinjvectorulja,jiarj*pajvajconŃinejvaloar eajsa.j
OperaŃiilejcarejsejpotjrealizajcujpointerijsunt:j
• comparaŃiajj
• adunareajunuijpointerjcujunjîntregjj
• scădereajunuijîntregjdintr"unjpointerjj
DoijpointerijpotjfijcomparaŃijfolosindjoperatorijre laŃionali.jÎnjcomparaŃia:j
if(p1==p2)ccout<<”Adresecidentice”;c
ccccccccccccelseccout<<”Adresecdiferite”;c
sejverificajdacăjadresajmemoratajdejp1jestejaceeași jcujadresajreŃinutajdejp2,jundejp1jșijp2jsuntjpoint erijdej
acelașij tip.j Sej poatej comparaj unj pointerj cuj valoare aj NULLj (sauj 0).j Unj pointerj arej valoareaj NULLj (valoa rej
nedefinita)j dacăj nuj referaj nicij unj obiect.j Adunarea j unuij pointerj cuj unj întregj estej definitaj numaij atun cij cândj
pointeruljreferajunjtablouj(unjelementjaljtabloului ).jScădereajestejdefinitajînjacelașijcaz.j
Exemplulj3.jSăjsejciteascăjelementelejunuijvectorjș ijsăjsejafișezejacesteajutilizândjpointeri.j
#includec<iostream.h>c
voidcmain()c
{c
intca[20];c
intc*pa;c
intci,n;c
cout<<"Numărulcdecelemente=c";c
cin>>n;c
for(i=0;i<n;i++)c
{c
cout<<"Elementul"<<i<<"=";c
cin>>a[i];c
}c
//afișareacvectoruluicfolosindcpointeric
pa=&a[0];c
for(i=0;i<n;i++)c
{c
cout<<*pa<<"\n";c
pa++;c
}c

j 20 j}cc
PrimajpatejajprogramuluijnujconŃinejelementejnoi,jd oarjajdouajpartejmeritândjatenŃie.jMaijîntâijiniŃia lizamj
pointeruljpajcujvaloareajprimuluijelementjaljvector uluija.jCicluljforjconŃinejurmătoarelejprelucrări:j
• afișeazăjvaloareajaflatajlajadresajindicatajdejpoin ter;jj
• adunajpointeruljpajcuj1jj
Incrementareajpointeruluijpajarejcajefectjmodificar eajadreseijmemoratejînjpa.jNouajadresajestejadresaj zoneijdej
memoriej corespunzătoarej elementuluij următor,j oj adre saj cuj 2j bytesj maij marej decâtj precedenta.j Observamj c aj
mărireajpointeruluijcujojunitatejînseamnăjdejfaptjt recereajlajurmătoruljelementjdinjvector.j
Dacăjvomjintroducejpentrujnjojvaloarejmaijmarejdecâ tj20j(număruljmaximjdejelementejalejvectorului,jașa jcumj
reiesejdinjdeclaraŃie)jatuncijpointeruljpajvajdepăș ijzonajdejmemoriejalocatajvectoruluijșijvajreferijo jadresajlajcarej
sej potj aflaj datej importantej pentruj program.j Urmăril ej potj fij imprevizibile,j dej laj blocareaj programuluij pânăj laj
blocareajsaujînchidereajcalculatoruluij!!!j
NoŃiuneagdegfuncŃie.gStructuragșigdefinireagfuncŃii lorg
NoŃiuneajdejfuncŃiejestejojnoŃiunejdejmarejimportan tajînjinformatica,joricejlimbajjdejprogramarejfurni zândj
facilităŃijdejlucrujcujfuncŃii.jj
Înjmatematica,jfuncŃiajerajdefinitajcajfiindjtriple tulj(A,jB,jf),junde:j
Aj"jdomeniuljdejdefiniŃie;jj
Bj"jcodomeniuljsaujdomeniuljdejvalori;jj
jfj "j lege,j convenŃie,j prinj carej fiecăruij elementj di nj domeniulj dej definiŃiej ij sej asociazăj unj unicj eleme ntj dinj
codomeniu;jj
Înjinformatica,jnoŃiuneajdejfuncŃiejdiferăjpuŃinjde jmoduljmatematicjdejabordare.jÎnjlimbajuljC,joricej programj
trebuiejsăjconŃinăjobligatoriujojfuncŃiejnumitajmai n.jDacăjprelucrărilejcejcompunjprogramuljsuntjfoart ejcomplexe,j
utilizareajuneijsingurejfuncŃiijducejlajunjprogramj greujdejînŃelesjșijdepanat.jÎnjacestjcazjestejbinej cajproblemajdej
rezolvatjsăjfiejîmpărŃitajînjsubjproblemejprinjajcă rorjcombinarejsăjsejobŃinăjrezolvareajproblemeijini Ńiale.jPentruj
rezolvareajfiecăreijsubjproblemejsejpoatejutilizajc atejojfuncŃiejseparata.jFuncŃiajmainj(“programuljpr incipal”)jnuj
vajmaijfijdejmarejîntindere,jeajconŃinândjdoarjapel urijcătrejfuncŃiilejdejajdefinite.j
DeciziajdejajfolosijojfuncŃiejpoatejfijluatajșijînj cazuljînjcarejanumitejprelucrărijtrebuiescjrealizat ejdejmaijmultejori,j
cumjsejvajvedeajșijînjexempluljdejmaijjos.j
Exemplulj1.jSăjsejcalculezejariajajnjtriunghiuri,jd acăjsejcunoscjlungimilejlaturilorjacestora.jj
#includec<iostream.h>c
#includec<conio.h>c
#includec<math.h>c
floatcaria(intca,cintcb,cintcc)c
{c
floatcp,s;c
c
p=(float)(a+b+c)/2;c
s=sqrt(p*(p3a)*(p3b)*(p3c));c
returncs;c
}c
c
voidcmain()c
{c
intca,b,c;c
floatcS;c
intci,n;c
c
cout<<"Numărulcdectriunghiuri=c";c
cin>>n;c
i=1;c
for(i=1;i<=n;i++)c
{c
cout<<"a=";c
cin>>a;c
cout<<"b=";c
cin>>b;c
cout<<"c=";c
cin>>c;c
S=aria(a,b,c);c
cout<<"Ariactriunghiuluic"<<i<<"cestec"<<S<<"\n";c

j 21 j}c
}c
Programulj trebuiej săj calculezej ariaj aj nj triunghiuri ,j decij calcululj arieij trebuiej realizatj dej nj ori.j Am j definitj
funcŃiajaria,jcarejcalculeazăjariajtriunghiuluijcuj lungimilejlaturilorja,jb,jcjprinjformulajluijHeron. jStructurajfuncŃieij
estejurmătoarea:j
antet:jj
floatcaria(intca,cintcb,cintcc)c
carejconŃinejurmătoarelejelemente:j
• tipuljrezultatuluijfuncŃieij(codomeniul)j"jrezultat uljfuncŃieijvajfijojvaloarejdejtipuljdeclarat;jj
• numelejfuncŃiei:j"jnumelejnujpoatejfijidenticjcujun jcuvântjcheiejj
• listajparametrilorjformalij"jvariabilelejdejcarejde pindejcalculareajrezultatuluij(“argumentelejfuncŃie i”);jpentruj
fiecarejparametrujformaljsejspecificajtipul.jj
• corpuljfuncŃiei:jj
{j
floatjp,s;j
p=(float)(a+b+c)/2;j
s=sqrt(p*(p"a)*(p"b)*(p"c));j
returnjs;j
}j
Corpulj funcŃieij conŃinej declaraŃiilej variabilelorj u tilizatej înj funcŃiej șij prelucrărilej realizatej dej fu ncŃie.j
Variabilelej utilizatej înj funcŃiaj aria,j numitej șij va riabilej locale,j suntj semij perimetrulj pj șij ariaj s.j N uj declaramj
variabileleja,jb,jcj(parametriijformalijnujsejdecla rajînjcorpuljfuncŃiei)jșijnicijnujcitimjvalorijpent rujelejînjcadrulj
funcŃiei.j
Oricej funcŃiej carej arej dreptj codomeniuj unj tipj difer itj dej tipulj voidj trebuiej săj conŃinăj înj corpulj funcŃ ieij oj
instrucŃiunejj
returncexpresie;cc
undejexpresiejestejoricejexpresiejcorectajînjCjcujv aloarejdejtipuljdeclaratjpentrujcodomeniu.j
j InstrucŃiuneajreturnjestejutilizatajpentrujajsemna lajfaptuljcajvaloareajfuncŃieijestejvaloareajexpres iei.j
Înjprogramuljprincipalj(funcŃiajmain)jsejciteștejnu măruljdejtriunghiurijn.jInstrucŃiuneajforjvajrepeta jdejnjorij
(pentrujfiecarejtriunghi)jurmătoarelejprelucrări:j
• sejcitescjvalorijpentrujvariabileleja,jb,jcjcarejre prezintăjlungimilejlaturilorjtriunghiuluijcurent;jj
• sejcalculeazăjariajtriunghiuluijpentrujvalorilejdat e;jj
• sejafișeazăjvaloareajarieijtriunghiuluijcurent;jj
ModuljdejutilizarejaljfuncŃieijariajestejinteresant .jAtribuirea:j
S=aria(a,b,c);c
arejurmătoruljefect;j
• sejevalueazăjexpresiajdinjdreaptajatribuirii,jexpre siejcejconstajdinjapeluljfuncŃieijariajpentrujvalor ileja,j,b,jcjj
• evaluareajfuncŃieijînseamnăjexecutareajprelucrărilo rjdinjfuncŃiejpentrujvalorilejparametrilorjformalij a,jb,jcjj
• valoareajîntoarsajdejfuncŃiejestejvaloareajvariabil eijs,jcarejaparejînjreturn;jj
• valoareajestejmemoratajînjzonajdejmemoriejajvariabi leijS.jj
FuncŃiilejpotjfijclasificatejastfel:j
• funcŃiicpredefinitec =jfuncŃiijdejajdefinitejdejautoriijmediuluijdejprog ramarejCjșijgrupate,jînjfuncŃiejdejutilitateaj
lor,j înj bibliotecij numitej fișierej header.j Dej exempl u,j înj bibliotecaj math.hj suntj grupatej funcŃiilej mate matice,j înj
string.hjavemjfuncŃiilejdejlucrujcujșirurijdejcarac tere,jînjiostream.hjfuncŃiijpentrujintroducereajșij afișareajdatelor,j
înjmalloc.hjșijalloc.hj
• funcŃiijpentrujalocareajmemoriei…jj
• funcŃiicdefinitecdecutilizatorc =jfuncŃiijscrisejdejcreatoruljunuijprogramjpentruja celejprelucrărijpentrujcarejnuj
existajfuncŃiijpredefinitej(cazjdestuljdejfrecvent) ;jj
Oj funcŃiej poatej săj aibăj dreptj codomeniuj oricej tipj p redefinitj scalarj (întreg,j caracterj sauj real),j tipj c ompusj
(uniunejsaujstructura),jprecumjșijpointerijlajorice jtip.jTipuljvoidjînseamnăjcajfuncŃiajnujreturneazaj nicijojvaloare.j
Programatorulj poatejsăj strângăjfuncŃiilej definitejd ejelj intr"unjfișierj headerj propriu,jcarejsejpoateji ncludejînj
programjprinj
c#includec“nume_fisier.h”.c
ApelulgfuncŃiilorgșigtransferulgparametrilorg
OricejapariŃiejajnumeluijfuncŃieijînsoŃitjdejunjnum ărjdejvalorijegaljcujnumăruljparametrilorjformalijs ejnumeștej
apeljaljfuncŃiei.j
PuteamjapelajfuncŃiajșijînjmoduljurmător:j
cout<<aria(3,4,5);c

j 22 jAceastajinstrucŃiunejarejcajefectjafișareajarieijtr iunghiuluijcujlaturilejdejlungimij3,j4,j5.jObservaŃ ijcajnujestej
obligatoriujcajparametriijdinjapeljsăjfiejvariabile ,jcijpotjfijexpresii.j
DacăjfuncŃiajnoastrăjarjapăreajintr"ojexpresiejcaj2 3*aria(3,4,5)"2*aria(2,6,6),jevaluareajexpresieijar jîncepejcuj
executareajfuncŃieijariajpentrujvalorilej3,j4,j5jși japoijpentruj2,j6,j6;jdupăjcejsejobŃinjrezultatelej celorjdouajapelurij
alejfuncŃieijsejrealizeazăjevaluareajcelorlaltejope ratorij(înmulŃirilejșijapoijscăderea).j
FuncŃiajînjcarejaparejunjapeljaljalteijfuncŃiijsejn umeștejfuncŃiejapelanta.jj
Parametrii jsuntjdejdouajtipuri:j
parametricformali:cc
valoarej
referinŃaj(pointer)jj
parametricefectivic(actuali)cc
ParametriijsuntjutilizaŃijpentrujajputeajtransmitej dinjfuncŃiajapelantajvalorilejnecesarejprelucrărilo rjefectuatejdej
funcŃiajapelata.jAtuncijcândjparametriijformalijsun tjutilizaŃijdoarjpentrujajtransmitejvalorijînjfuncŃ iajapelata,jaceștij
parametriij sej numescj parametrij valoare.j Dacăj sej dor eștej transmitereaj caj parametruj aj uneij variabile,j în j scopulj
modificăriij valoriijacesteiajastfeljîncâtj modificar eaj săjfiej disponibilajînjfuncŃiajapelanta,javemj de" ajfacejcuj unj
parametrujformaljreferinŃaj(sejrealizeazăjprintr"oj variabilajdejtipjpointer).j
PentrujajputeajapelajojfuncŃie,jtrebuiejsăjprecizam ,jpejlângăjnumelejacesteia,jvalorilejparametrilorjp entrujcarej
sejrealizeazăjapelulj(parametrijactuali).jNumăruljp arametrilorjactualijdintr"unjapeljdejfuncŃiejtrebui ejsăjfiejacelașij
cujnumăruljparametrilorjformalijdinjdefiniŃiajfuncŃ ieijapelatejșijsăjcorespundajcajtip.j
Dejexemplu,jînjprogramuljdejmaijsus,jnujputeamjapel ajfuncŃiajariajcaj sc=caria(4.56,c5,c5);c deoarecejprimulj
parametruj formalj dinj definiŃiaj funcŃieij estej defini tj caj dej tipj int,j iarj parametrulj actualj (4.56)j estej dej tipj realj
(incompatibilitatejdejtip).jj
Nuj estej obligatoriuj săj existej parametriij formalij in tr"oj funcŃiej dacăj nuj estej nevoie.j Dej asemenea,j nuj t oatej
funcŃiilejîntorcjojvaloare.jAcestejaspectejsuntjtra tatejînjurmătoarelejexemple.j
Exemplulj2.jSăjsejscriejojfuncŃiejcarejafișeazăjpej ecranjunjnumărjdatjdejasteriscuri.j
voidcasterisc(intcnr)c
{c
intcj;c
for(j=1;j<=nr;j++)cc
cout<<”*c”;c
}c
FuncŃiaj arej unj singurj parametruj formal,j unj întregj n rj reprezentândj numărulj dej asteriscurij cej trebuiej af ișate.j
FuncŃiajpoatejfijapelatajprinj asterisc(10);c carejarejcajefectjafișareajaj10jasteriscuri.j
FuncŃiaj nuj întoarcej nicij oj valoare,j deoarecej nuj est ej necesarj (n"arej sensj săj întoarcemj vreoj valoare),j d ecij
codomeniuljvajfijtipulj void .jDinjmomentjcejfuncŃiajnujîntoarcejvreojvaloare,jn ujsejvajmaijutilizajreturn.jj
Exemplulj3.jScrieŃijojfuncŃiejcarejsăjafișezejunjme saj.j
voidcmesaj(c)c
{c
cout<<”TraiascacReformac!!!”;c
}c
FuncŃiaj mesajj nuj întoarcej nicij oj valoarej șij nicij nu j conŃinej parametriij formalij (nuj existaj valorij carej săj fiej
necesarejexecuŃieijfuncŃiei).jApeluljfuncŃieijsejva jfacejprin:j mesaj() ,jexactjcajșijpentrujfuncŃiajprejdefinităj clrscr(c
).j
DacăjamjdorijcajfuncŃiajsăjafișezejunjmesajjdat,job Ńinem:j
voidcmesaj(charcs[80])c
{c
cout<<s;c
}c
ApeluljfuncŃieijpoatejfi:jmesaj(“Trăiască!!!”);j
Exemplulj4.jScrieŃijojfuncŃiejcarejstabileștejdacăj unjnumărjestejprim.j
#includec<iostream.h>c
intceste_prim(intcn)c
{c
intcj;c
intceste;c
c
este=1;c//presupunemccacnumărulcestecprimc
for(j=1;j<=n31;j++)c
if(n%j==0)ceste=0;c
returnceste;c
}c

j 23 jc
voidcmain()c
{c
intcnumăr;c
c
cout<<”Introduceticnumărul=”;c
cin>>număr;c
if(este_prim(număr)!=0)c
cout<<”Numărulcestecprimc!”;c
elsec
cout<<”Numărulcnucestecprimc!”;c
}c
ExerciŃiulj1:jFolosiŃijfuncŃiajeste_primjpentrujaja fișajtoatejnumerelejprimejmaijmicijdecâtjunjnumărjî ntregjdat.j
Exemplulj5.jScrieŃijojfuncŃiejcarejsăjciteascăjunjv ectorjdejnumerejîntregi.j
voidcciteste(intca[30],cintcn)c
{c
intck;c
c
for(k=0;k<n;ck++)c
cin>>a[k];cc
}c
FuncŃiajarejdoijparametri:jvariabilajdejtipjvectorj carejvajretinejnumerelejcititejșijvariabilajn,jcare jnejspunejcatej
elementejtrebuiescjcitite.jFuncŃiajmainjpoatejsăjar atejastfel:j
voidcmainc()c
{c
intcb[30];c
intcn;c
c
cout<<”n=”;c
cin>>n;c
citeste(a,n);c
}c
ExerciŃiulj6:jScrieŃijojfuncŃiejpentrujafisareajele mentelorjunuijvectorjșijadăugaŃi"ojexempluluijprece dent.jj
Exemplulj7.jScrieŃijojfuncŃiejcarejcalculeazăjsumaj elementelorjdintr"unjvector.j
intcsuma(intca[40],cintcn)c
{c
intck;c
intcs;c
s=0;c
for(k=0;k<n;k++)c
s=s+a[k];c
returncs;cc
}c
Estejnecesarjsăjintroducemjcajparametrujșijnumărulj dejelementejdinjvectorjn.j
ExerciŃiulj8:jFolosiŃijfuncŃiajdejmaijsusjînjprogra muljdejlajexerciŃiuljprecedent.jj
Exemplulj9.jScrieŃijojfuncŃiejcarejcalculeazăjax,ju ndejajrealjșijxjîntregjpozitiv.j
floatcputere(floatca,cintcx)c
{c
intck;c
intcp;c//retinecputereacc
c
p=1;c
for(k=1;k<=x;k++)cc
p=p*a;c
returncp;c
}c

j 24 jExerciŃiulj10.jModificaŃijfuncŃiajdinjexemplulj7jas tfeljîncâtjsăjpoatăjridicajpejajșijlajputerijnegati ve.j
Exemplulj 11.j ScrieŃij oj funcŃiej pentruj aj calculaj cel j maij marej divizorj comunj aj 2j numerej întregij folosind j
algoritmuljluijEuclid.j
#includec<iostream.h>c
intccmmdc(intcm,cintcn)c
{c
intcr;c
intctemp;c
if(n>m)c
{c
temp=m;c
m=n;c
n=temp;c
}c
doc
{c
r=m%n;c
m=n;c
n=r;c
}while(r!=0);c
returncm;c
}c
c
voidcmain()c
{c
intca,b;c
c
cout<<"Primulcnumăr=";c
cin>>a;c
cout<<"Alcdoileacnumăr=";c
cin>>b;c
cout<<cmmdc(a,b);c
}c
Exemplulj12jSăjsejscriejojfuncŃiejcarejverificajdac ăjunjîntregjxjaparŃinejunuijvectorjv.j
intccauta(intcv[50],cintcn)c
{c
intck;c
intcapartine;c
c
apartine=0;c//secpresupuneccacxcnucestecelementcînc vc
for(k=0;k<n;k++)c
if(v[k]==x)capartine=1;c
returncapartine;cc
}c
Exemplulj13.jSăjsejscriejojfuncŃiejcarejrealizeazăj sumajajdouajmatricejcujmjliniijșijnjcoloane.j
voidcsuma_mat(intca[20][20],cintcb[20][20],cintcc[2 0][20],cintcm,cintcn)c
{c
intcj,ck;c//variabileccontorcîncforc
c
for(j=0;j<m;j++)c
for(k=0;k<n;k++)cc[j][k]=a[j][k]+b[j][k];c
}cc
Parametriijdejcarejdepindejrezolvareajsarciniijsunt :j
aj"jprimajmatricejj
bj"jajdouajmatricejj
cj"jmatriceajsumaj(rezultatuljsumei)jj
mj"jnumăruljdejliniijj
nj"jnumăruljdejcoloanejj
ExerciŃiulj5.jSăjsejscriejfuncŃiajmainjcorespunzăto arejfuncŃieijdejmaijsus,jprecumjșijfuncŃiijpentrujc itireajșij
afișareajuneijmatrice.j
OjsituaŃiejinteresantajaparejatuncijcândjvremjcajva riabilelejcejaparjcajparametrijformalijsăjpoatăjfij modificatej
înjcadruljfuncŃiei,jmodificărilejfiindjdisponibilej înjfuncŃiajapelanta.j

j 25 jSăjluamjurmătoruljexemplu:j
Exemplulj14.jSăjsejscriejojfuncŃiejcarejinterschimb ăjvalorilejajdouajvariabilejîntregi.j
Variantajurmătoarejestejgreșita:j
voidcschimba(intcx,cintcy)c
{c
intctemp;c
temp=x;c
x=y;c
y=temp;cc
}c
voidcmain()c
{c
intca,cb;c
cin>>a;c
cin>>b;c
schimba(a,b);c
cout<<a;c
cout<<b;c
}c
LajprimajvederejfuncŃiajparejcorecta,jinsajlucruril ejstaujtocmaijpejdos.jDacăjintroducemjvalorilej5jpe ntrujajșij7j
pentruj b,j programulj arj trebuij săj schimbej intrej elej valorilej celorj douaj variabilej (aj trebuiej săj devinăj 7,j iarj bj săj
devinăj5).jProgramuljdejmaijsusjnujvajrealizajacest jlucru.jExplicaŃiajestejca,jatuncijcândjparametrijf ormalijsuntj
parametrij valoare,j chiarj dacăj sej modificaj valoareaj lorj înj cadrulj funcŃieij acestej modificărij nuj vorj ave aj efectj înj
funcŃiajapelantaj(înjcazuljnostru,jînjfuncŃiajmainj nujvajfijsesizabilajschimbareajrealizatajînjfuncŃia jschimba).j
ProblemajsejpoatejrezolvajdacăjparametriijdinjfuncŃ iajschimbajvorjfijparametrijreferinŃaj(pointeri).j
Variantajcorectajestejurmătoarea:j
voidcschimba(intc*x,cintc*y)c
{c
intctemp;c
c
temp=*x;c
*x=*y;c
*y=temp;c
}c
SingurajschimbarejdinjfuncŃiajmainjestejapeluljfunc Ńiei,jcarejdevinejj
schimba(&a,c&b);c
ExplicaŃiajcorectitudiniijacesteijvariantejestejace eajcajsejlucreazăjcujadreselejvariabilelor,jdecijor icejmodificarej
ajconŃinutuluijzonelorjdejmemoriejalocatejvariabile lorjxjșijyjvajfijresimŃităjșijînjfuncŃiajmain.j
ParcurgeŃij dinj nouj exemplulj 10j șij priviŃij cuj atenŃi ej antetulj funcŃieij suma_mat.j Parametrulj formalj cj es tej oj
matricejcalculatajcajsumajmatricelorjajșijb,jdecijv aloareajelementelorjluijcjestejmodificatajînjcadrul jfuncŃiei,jdarj
parametruljformaljestejcorectj?jRăspunsuljestejafir mativjdeoarece,jdupăjcumjștiŃi,jtablourilejsuntjtra tatejexactjcajșij
pointerii,jdecijtablourilejcarejaparjcajparametriij formalijsejconsiderajparametrijreferinŃa.j
Variabileglocalegșigvariabilegglobaleg
UnjprogramjCjestejcompusjdinjunajsaujmaijmultejfunc Ńiij(celjpuŃinjfuncŃiajmain)jrepartizatejînjunuljsa ujmaij
multejfișiere.jStructurajdejprincipiujajunuijprogra mjCjestejurmătoarea:j
• directivejdejpreprocesarej(dejexempluj#include)jj
• declaraŃiijdejtipurijșijvariabilejglobalej(imediatj dupăjdirectivelejdejpreprocesare,jînjafarajoricăror jfuncŃii)jj
• definiŃiijdejfuncŃiijj
• funcŃiajmain()jj
ToatejvariabilelejdeclaratejînjafarajoricăreijfuncŃ iijsejnumescjvariabilejglobale,jacesteajputândjfiju tilizatejînj
oricejfuncŃiejdinjprogram.jVariabilelejdefinitejînj interioruljuneijfuncŃiijsejnumescjvariabilejlocalej șijpotjfijutilizatej
doarj înj funcŃiaj undej auj fostj declarate.j Putemj decla raj oj variabilaj kj înj maij multej funcŃii,j fărăj săj fiej influenŃataj
corectitudineajprogramului.jEstejdejpreferatjcajvar iabilelejglobalejsăjfiejînjnumărjlimitat,jdoarjatun cijcândjestej
nevoiejneapărata.jFolosireajneatentajajvariabilelor jglobalejpoatejducejlajerorijgreujdepistabile.j

j 26 jj
Bibliografiex
SuportxdexcursxUniversitateaxdexVestxVasilexGoldis x
LiviuxNergrescu x
LimbajulxC++xxEdituraxAlbastraxClujxNapocax1999x
DoinaxHrinciucxLogofatu x
C++xproblemexrezolvatexsixalgoritmixEdituraxPolirom x2001x
AnaxIntunericxCristinaxSichim x
InformaticaxTestexgrilaxC/C++xPoliromx2003x
MarianaxMilosescu x
InformaticaxEdituraxDidacticaxsixPedagocicax2005x
UVVGjARADj
SuportjdejcursjpentrujformajdejinvatamantjIDj(prelu arejdejpejCD)j
x

Similar Posts