Sunteți pe pagina 1din 13

Curs JAVA nr. 2 Programare Java Curs 2 TABLOURI Tablourile reprezinta o mo alitate e a pastra o lista e elemente !u a!

!eleasi tipuri e ate primitive sau e !lase . "ie!are element al listei este pastrat intr#o lo!atie proprie $ numerotata ast%el in!at in%ormatia poate %i usor a!!esata . Tablourile pot !ontine ori!e tip e in%ormatie pastrata in mo normal intr#o variabila $ insa $ o ata !reat $ tabloul nu poate %i %olosit e!at pentru a!el tip e ate . &e e'emplu $ putem avea un tablou e intregi $ un tablou e obie!te (tring sau un tablou e tablouri insa nu putem avea un tablou !are sa !ontina atat siruri !at si intregi . Pentru a !rea un tablou in Java trebuie sa urmarim pasii e mai )os * +. &e!laram o variabila !are sa re%ere un tablou 2. Cream un obie!t e tip tablou si il atribuim variabilei tablou ,. (to!am in%ormatia in tabloul respe!tiv &-CLARAR-A VARIABIL-LOR TABLOU Primul pas e mai sus este e!lararea variabilei !are va re%eri tabloul . Variabilele tablou in i!a tipul e obie!te sau e ate pe !are le va !ontine tabloul $ pre!um si numele a!estuia . Pentru a le i%erentia e e!laratiile normale e variabile se a auga o pere!.e e paranteze patrate /0 la tipul e obie!te sau e ate sau la numele variabilei . -'emplu * (tring !uvinte/01 Point lovituri1 int salariu/01 -'emplele e mai )os sunt si ele vali e * (tring/0 !uvinte1 Point/0 lovituri1 int/0 salariu1 CR-AR-A &- OBI-CT- TABLOU &upa !e e!laram variabila tablou $ urmatorul pas este e a !rea un obie!t tablou si e a#l atribui unei variabile . -'ista mai multe mo alitati *

#+#

Curs JAVA nr. 2 # # %olosim operatorul ne2 initializam ire!t !ontinutul tabloului

&eoare!e tablourile sunt obie!te Java putem %olosi operatorul ne2 pentru a !rea o noua instanta a unui tablou * (tring/0 numeJu!atori3ne2 (tring/+401 A!easta instru!tiune !reaza un tablou e siruri !u +4 pozitii $ !are poate !ontine obie!te (tring . Atun!i !an !ream un obie!t tablou %olosin operatorul ne2 $ trebuie sa in i!am !ate pozitii urmeaza sa !ontina a!esta . A!easta instru!tiune nu intro u!e ni!i un %el e obie!te (tring pe a!este pozitii . Obie!tele tablou pot !ontine si tipuri primitive !um ar %i intregi sau valori booleene $ nu numai obie!te * int/0 temp3ne2 int/5501 Atun!i !an !ream un obie!t tablou %olosin operatorul ne2 toate pozitiile sale vor %i initializate automat 6 !u 4 !ele numeri!e $ !u %alse pentru boolean $ !u 7849 pentru tipul !ara!ter si !u null pentru obie!te :. OB( * null nu este e!.ivalent !u zero sau !u !ara!terul ;84< $ !a in !azul limba)ului C Putem !rea si initializa un tablou in a!elasi timp . In lo! sa %olosim operatorul ne2 pentru a !rea noul obie!t tablou in!lu em elementele tabloului intre => $ separate prin virgula * (tring/0 nume3=;Ion< $ ;An rei<$ ;?i.ai< >1 "ie!are intre elementele intre a!ola e trebuie sa %ie e a!elasi tip !u variabila tablou . Atun!i !an !ream un tablou !u valori initiale in a!est %el $ tabloul are imensiunea egala !u numarul e elemente in!luse . -'emplul anterior !reaza un tablou e obie!te (tring $ enumit nume $ !are !ontine trei elemente . ACC-(AR-A -L-?-@T-LOR TABLOULUI &upa !e s#a !reat un tablou !u valori initiale putem a!!esa $ mo i%i!a si testa valorile %ie!arei lo!atii a a!estuia . Valoarea unei lo!atii este a!!esata !u numele tabloului $ urmat e pozitia ei in !a rul a!estuia $ in!a rata intre /0 . @umele si pozitia pot %i %olosite intr#o e'presie $ !um ar %i * s!orParti!ipant/A403B441 s!orParti!ipant reprezinta o variabila !are re%era un obie!t tablou . Pozitia 6 in e'ul : spe!i%i!a lo!atia !are va %i a!!esata in !a rul tabloului @umerotarea pozitiilor in!epe e la 4 ast%el in!at un tablou !u +4 elemente poate %i a!!esat %olosin pozitiile 4 C 5 .

#2#

Curs JAVA nr. 2

Toate pozitiile unui tablou sunt veri%i!ate a!a se in!a reaza in limitele tabloului asa !um s#au spe!i%i!at la !rearea tabloului . In Java este imposibil sa a!!esam sau sa atribuim o valoare unei pozitii a tabloului a%lata in a%ara limitelor sale $ problema !are aparea in C e e'emplu . (tring/0 vorbitor3ne2 (tring/+401 vorbitor/+40 3<Te't intro us<1 Un program !are %oloseste a!este oua linii e !o va a eroare e !ompilare la %olosirea variabilei vorbitor/+40 . -roarea apare in !auza !a tabloul nostru nu pose a pozitia a ze!ea . Pentru a evita in programe epasirea a!!i entala a s%arsitului tabloului putem %olosi o variabila e instanta lengt. C isponibila pentru toate obie!tele tablou $ in i%erent e tip * int lungime3lungime.lengt.1 ?O&I"ICAR-A -L-?-@T-LOR TABLOURILOR &upa !um am vazut mai sus putem atribui o valoare unei anumite pozitii a tabloului prin intro u!erea operatorului e atribuire upa numele tabloului si al in e'ului * notele?ele/A03+41 propozitai/403<Ai!i<1 propozitia/+403propozitia/401 Un lu!ru important e retinut este !a un tablou e obie!te $ in Java $ este un tablou e re%erinte la obie!tele respe!tive . Atun!i !an atribuim o valoare unei pozitii intr#un ast%el e tablou nu se va !opia valoarea intr#o pozitie in alta !i se va atribui re%erinta . In s!.imb $ tablourile e tipuri e ate primitive !opiaza valorile intr#o lo!atie in alta . Tablourile sunt relativ simplu e !reat si mo i%i!at insa o%era %oarte multe avanta)e si sunt %oarte utile in Java . +* !lass TestTablou = 2* ,* (tring/0 prenume3=;&ennis<$<Dra!e<$<B)arne<$<James<>1 A* (tring/0 nume&e"amilie3ne2 (tring/prenume.lengt.01 B* E* voi a%iseaza@ume6: = F* int i341 G* (Hstem.out.println6prenume/i0 5* I< ; Inume&e"amilie/i0:1 +4 iII1 ++. (Hstem.out.println6prenume/i0

#,#

Curs JAVA nr. 2 +2* I< ; Inume&e"amilie/i0:1 +, iII1 +A. (Hstem.out.println6prenume/i0 +B* I< ; Inume&e"amilie/i0:1 +E iII1 +F. (Hstem.out.println6prenume/i0 +G* I< ; Inume&e"amilie/i0:1 +5 > 24* 2+* publi! stati! voi main 6(tring argumente/0: = 22* TestTablou a3ne2 TestTablou6:1 2,* a.a%iseaz@ume6:1 2A* (Hstem.out.println6;JJJJ<:1 2B* a.nume&e"amilie/403<Rit!.ie<1 2E* a.nume&e"amilie/+03<Kopper<1 2F* a.nume&e"amilie/203<(troustrup<1 2G* a.nume&e"amilie/,03<Dosling<1 25* a.a%iseaza@ume6:1 ,4* > ,+* > In a!est program !ream o !lasa TestTablou $ !u oua variabile e instanta !are pastreaza tablouri e obie!te (tring . Primul $ prenume $ este e!larat si initializat in linia , pentru a !ontine patru siruri . A oua variabila $ nume&e"amilie $ este e!larata si !reata in linia A $ insa nu !ontine ni!i o valoare initiala . Tabloul a!esta are a!elasi numar e pozitii !a si tabloul prenume $ eoare!e %oloseste valoarea prenume.lengt. . Atun!i !an este %olosita pentru un obie!t tablou $ variabila e instanta lengt. intoar!e numarul e pozitii in tablou . Clasa TestTablou mai !ontine si oua meto e * a%iseaza@ume si main . ?eto a a%iseaza@ume6: $ e%inita in liniile E C +5 $ par!urge su!!esiv tablourile prenume si nume&e"amilie $ a%isan !ontinutul %ie!arei pozitii . ?eto a main !reaza o instanta initiala a !lasei TestTablou 6 in linia 22 : asa in!at sa I se poata %olosi variabilele si meto ele e instanta . Linia 2, apeleaza meto a a%iseaza@ume6: $ pentru a prezenta !um arata initial obie!tul . Rezultatul este at in primele patru linii a%isate . Liniile 2B C 2G seteaza valorile %ie!arei pozitii in tabloul nume&e"amilie . Linia 25 apeleaza in!a o ata meto a a%iseaza@ume6: pentru a arata noile valori in tabloul nume&e"amilie . TABLOURI ?ULTI&I?-@(IO@AL&imensiunile multiple ale unui tablou sunt %olositoare atun!i !an reprezentam e e'emplu un table '$H e elemente ale unui !aroia) .

#A#

Curs JAVA nr. 2 Java nu suporta tablourile multi imensionale $ insa obtine a!elasi e%e!t prin e!lararea unui tablou e tablouri . A!ele Tablouri pot !ontine si ele tablouri si asa mai eparte $ pana !an este obtinut numarul e imensiuni orit . ?ai )os avem un e'emplu e e!larare si a!!esare a unor ast%el e tablouri * int/0/0 !oor onate3ne2 int/+20/+201 !oor onate/40/403+1 !oor onate/40/+0321 I@(TRUCTIU@I BLOC Instru!tiunile in Java sunt grupate in blo!uri . In!eputul si s%arsitul unui blo! sunt notate !u a!ola e => . Blo!urile sunt enumite si instru!tiuni blo! $ eoare!e un blo! poate %i %olosit oriun e poate %i %olosita o instru!tiune simpla . "ie!are instru!tiune in !a rul blo!ului se e'e!uta se!vential . Blo!urile pot %i plasate si in !a rul altor blo!uri $ asa !um se pro!e eaza la intro u!erea unei meto e in !a rul unei e%initii e !lasa . Un lu!ru e retinut re%eritor la blo!uri este a!ela !a ele !reaza un omeniu e vizibilitate pentru variabilele lo!ale !reate in !a rul blo!ului . Domeniu de vizibilitate este un termen %olosit in programare pentru a enumi a!ea parte a programului in !are o variabila e'ista si poate %i %olosita . &a!a programul paraseste omeniul e vizibilitate al unei variabile $ a!easta nu mai e'ista si in!er!area e a o a!!esa va a nastere unei erori . &omeniul e vizibilitate al unei variabile este blo!ul in !are a %ost !reata . Atun!i !an !ream si %olosim variabile lo!ale in !a rul unui blo! $ a!este variabile isi in!eteaza e'istenta upa !e blo!ul isi termina e'e!utia . voi testBlo!6: = int '3+41 = 88 in!epere blo! int H3A41 H3HI'1 > 88 s%arsit blo! > In e'emplul anterior e'ista oua variabile e%inite in !a rul a!estei meto e * ' si H . &omeniul e vizibilitate al variabileH H este blo!ul in !are se a%la 1 ea poate %i %olosita oar in !a rul a!estui blo! . &a!a am in!er!a sa o %olosim oriun e in alta parte a meto ei testBlo!6: vom obtine o eroare . Variabila ' a %ost !reata in interiorul meto ei $ insa in a%ara blo!ului interior $ e!i poate %i %olosita in ori!e alta parte a meto ei . Putem mo i%i!a valoarea lui ' oriun e in !a rul meto ei .

#B#

Curs JAVA nr. 2 I@(TRUCTIU@-A CO@&ITIO@ALA I" Unul intre aspe!tele !.eie ale programarii este posibilitatea unui program e a e!i e !e va %a!e . A!est lu!ru este tratat printr#un tip spe!ial e instru!tiuni enumite instru!tiuni !on itionale . O instructiune conditionala reprezinta o instru!tiune e'e!utata oar in !azul in eplinirii unei anumite !on itii . Cea mai es %olosita instru!tiune !on itionala este I" 6 a!a : . A!easta %oloseste o e'presie booleana pentru a e!i e a!a o instru!tiune va %i sau nu e'e!utata . &a!a e'presia intoar!e valoarea true instru!tiunea se va e'e!uta . i% 6varstaLB4: (Hstem.out.println6;@u mai esti !.iar tanar<:1 &a!a orim !a atun!i !an e'presia I" intoar!e valoarea %alse sa se e'e!ute totusi !eva %olosim !uvantul !.eie optional else . i% 6alegere33true: restaurant3<Presi ent<1 else restaurant3<Li o<1 -'presia I" e'e!uta instru!tiuni i%erite in %un!tie e rezultatul unei singure testari booleene . OB( * Testul instru!tiunii I" in Java trebuie sa returneze o variabila booleana 6 true sau %alse : 1 in C testul poate returna un intreg . In pra!ti!a se %oloseste si o versiune pres!urtata a testului !on itional I" 1 in lo!ul e'presiei * i% 6alegere33true: Putem %olosi oar * i% 6alegere: In !ontinuare vom ve ea un e'emplu !omplet e apli!atie Java !are se bazeaza pe %olosirea testului I" * +* !lass TestParitate = 2* ,* voi veri%i!areParitate6int val: = A* (Hstem.out.println6;Valoarea este ; B* IvalI<. ;:1 E* i% 6valM2334:

#E#

Curs JAVA nr. 2 F* (Hstem.out.println6;Par<:1 G* > 5* +4* publi! stati! voi main 6(tring argumente/0: = ++. TestParitate e3ne2 TestParitate6:1 +2* +,* e.veri%i!areParitate6+:1 +A* e.veri%i!areParitate62:1 +B* e.veri%i!areParitate6BA:1 +E* e.veri%i!areParitate6FF:1 +F* e.veri%i!areParitate6+,AE:1 +G* > +5* > ;@u!leul< !lasei TestParitate este meto a veri%i!areParitate6: C liniile ,#G C in !are valorile sunt testate si se tipareste mesa)ul !orespunzator . ?eto a in!epe prin tiparirea valorii !are i#a %ost transmisa . Argumentul este apoi testat %olosin o instru!tiune !on itionala I" $ pentru a veri%i!a a!a un numar este par . ?eto a main6: a apli!atiei !reaza o noua instanta a !lasei TestParitate si o testeaza apelan meto a veri%i!areParitate6: e mai multe ori $ !u i%erite valori . OP-RATORUL CO@&ITIO@AL O alternativa viabila in pra!ti!a este %olosirea intr#o instru!tiune !on itionala $ in lo!ul !uvintelor !.eie I" si -L(- a operatorului !on itional 6 numit si operator ternar C eoare!e are trei termeni : . Operatorul !on itional este o e'presie $ !eea !e inseamna !a intoar!e o valoare $ spre eosebire e mai generalul I" !are are !a rezultat oar e'e!utarea unei instru!tiuni . Operatorul !on itional este mai util pentru instru!tiuni !on itionale s!urte sau simple $ !a in e'emplul urmator * testNrezultatJa evarat*rezultatJ%als1 test este o e'presie !are intoar!e true sau %alse $ la %el !a testul in instru!tiunea I" . &a!a testul este a evarat 6 true : operatorul !on itional intoar!e valoarea rezultatJa evarat iar a!a este %als returneaza rezultatJ%als . ?ai )os putem ve ea un e'emplu pra!ti! * int !el?aiBun(!or3s!orul?euLs!orulTauNs!orul?eu*s!orulTau1 "olosirea operatorului !on itional este e!.ivalentul urmatorului !o I" * int !el?aiBun(!or1 i% 6s!orul?euLs!orulTau: !el?aiBun(!or3s!orul?eu1 else !el?aiBun(!or3s!orulTau1

#F#

Curs JAVA nr. 2 Operatorul !on itional are o pre!e enta %oarte s!azuta C este e obi!ei evaluat upa toate sube'presiile sale . (ingurii operatori !are au pre!e enta mai mi!a sunt !ei e atribuire . I@(TRUCTIU@-A (OITCK O operatie es intalnita in ori!e limba) este !ompararea unei variabile !u o anumita valoare $ apoi !ompararea !u o alta in !az !a nu se potriveste !u prima si asa mai eparte . A!est pro!es poate eveni estul e i%i!il a!a s#ar %olosi oar instru!tiuni I" $ in %un!tie e iversitatea valorilor pe !are trebuie sa le !omparam . &e e'emplu putem a)unge la un set e instru!tiuni e genul * i% 6oper339I9: a unaArg6arg+$arg2:1 else i% 6oper339#7: s!a eArg6arg+$arg2:1 else i% 6oper339P9: inmultireArg6arg+$arg2:1 else i% 6oper33989: imparteArg6arg+$arg2:1 "olosirea I"#ului in a!est !az este o imbri!are eoare!e %ie!are instru!tiune else !ontine o alta i% pana se %a! toate testele posibile . Un me!anism pres!urtat pentru a!este instru!iuni I" imbri!ate $ !are poate %i %olosit in unele limba)e e programare $ este gruparea testelor si a!tiunilor intr#o singura instru!tiune . In Java putem grupa a!tiunile C !a si in C C %olosin instru!tiunea (OITCK . s2it!.6nota: = !ase +4* (Hstem.out.println6;"oarte bine<:1 breaQ1 !ase G* (Hstem.out.println6;Bine<:1breaQ1 !ase B* (Hstem.out.println6;Ai tre!ut<:1breaQ1 e%ault* (Hstem.out.println6;A # ai !azut<:1 > Instru!tiunea (OITCK este bazata pe un test 1 in e'emplul nostru se testeaza variabila nota . Variabila testata $ !are poate %i e ori!e tip primitiv 6 bHte $ s.ort $ !.ar sau int : este !omparata pe ran !u %ie!are intre valorile !ase . &a!a se gaseste o potrivire se e'e!uta instru!tiunea spe!i%i!ata upa test 1 a!a nu se gaseste ni!i o potrivire se e'e!uta instru!tiunea e%ault . A!easta instru!tiune este e %apt optionala 1 a!a este omisa si nu se gaseste ni!i o potrivire !ase atun!i instru!tiunea (OITCK se in!.eie %ara a se e'e!uta nimi! . Implementarea Java a instru!tiunii (OITCK este oare!um limitata C testele si valorile pot %i oar tipuri primitive simple !e pot %i !onvertite in int . Intr#o asemenea instru!tiune nu se pot %olosi tipuri primitive e imensiuni mai mari C large sau %loat C siruri sau alte obie!te si ni!i nu se pot testa alte relatii in a%ara e !ea e egalitate . A!este restri!tii limiteaza %olosirea (OITCK la !azuri relativ simple . In s!.imb instru!tiunile I" imbri!ate pot %i %olosite pentru ori!e tip e testare .

#G#

Curs JAVA nr. 2 Trebuie sa mentionez !a upa o instru!tiune !ase putem in!lu e ori!ate instru!tiuni %ara a %i ne!esare a!ola ele 6 !a in !azul lui I" : . Instru!tiunea breaQ %orteaza iesirea in instru!tiunea (OITCK la gasirea unei potriviri e valoare . -'ista posibilitatea ne%olosirii a!estei instru!tiuni C !az in !are programul e'e!uta mai eparte instru!tiunile pana intalneste un breaQ sau pana la s%arsitul instru!tiunii s2it!. . Instru!tiunea breaQ intrerupe e'e!utia in pun!tul !urent si %a!e un salt la !o ul a%lat in!olo e urmatoarea a!ola a in!.isa > . Avanta)ul ne%olosirii lui breaQ apare atun!i !an se oreste e'e!utarea a!elorasi instru!tiuni pentru mai multe valori . Pentru a!easta se %oloses! mai multe linii !ase %ara instru!tiuni 1 ast%el $ s2it!. va e'e!uta primele instru!tiuni pe !are le va intalni . &e e'emplu $ in urmatoarea instru!tiune s2it!. sirul 7' este un numar par9 este a%isat oar a!a ' are una intre valorile 2 $ A$ E sau G . Toate !elelalte valori ale lui ' u! la a%isarea te'tului e%ault * s2it!.6': = !ase 2* !ase A* !ase E* !ase G* sHstem.out.println6;' este un numar par<:1 breaQ1 e%ault* (Hstem.out.println6;' nu este par<:1 > In !ele !e urmeaza vom etalia in!a un e'emplu !are %oloseste instru!tiunea (OITCK . A!easta !lasa !onverteste valorile intregi in !uvintele !e le enumes! . !lass Cititor@umere= (tring !onversie@umar6int val: = s2it!. 6val: = !ase 4* return ;zero<1 !ase +* return ;unu<1 !ase 2* return ; oi<1 !ase ,* return ;trei<1 !ase A* return ;patru<1 !ase B* return ;!in!i<1 !ase E* return ;sase<1 !ase F* return ;sapte<1 !ase G* return ;opt<1 !ase 5* return ;noua<1 e%ault* return ; ;1 > > publi! stati! voi main6(tring argumente/0: = Cititor@umere n3ne2 Cititor@umere6:1 (tring num3n.!onversie@umar6A:In.!onversie@umar6+:In.!onversie@umar6,:1 (Hstem.out.printl6;A+, este !onvertit in * ;Inum:1 > >

#5#

Curs JAVA nr. 2

Instru!tiunea s2it!. preia un argument intreg !are este transmis meto ei !onversie@umar6: !are $ a!a gaseste o potrivire $ intoar!e valoarea !orespunzatoare sub %orma e sir . @u este nevoie e instru!tiuni breaQ in Cititor@umere eoare!e se %oloseste in s!.imb instru!tiunea return . A!easta este asemanatoare !u breaQ $ eosebirea %iin !a return iese e%initiv in meto a si returneaza o valoare . CICLURI "OR Ci!lurile %or repeta o instru!tiune e un numar spe!i%i!at e ori $ pana in momentul !an se intalneste o !on itie . C.iar a!a sunt %olosite e obi!ei pentru simple iteratii $ in !are o instru!tiune este repetata e un numar e ori $ !i!lurile %or pot %i %olosite pentru ori!e tip e operatii repetitive . Ci!lul %or arata in Java !a mai )os * %or 6 initializare1 test1 in!rementare: = instru!tiune1 > In!eputul !i!lului %or !ontine trei parti * # initializare este o e'presie !are initializeaza pornirea !i!lului . &a!a %olosim o variabila in e' a !i!lului a!easta e'presie o poate e!lara si initializa in a!elasi timp . Variabilele e!larate in %or sunt lo!ale !i!lului in sine . In a!esta se!tiune se pot initializa mai multe variabile $ separan %ie!are e'presie printr# o virgula . test este testul !are se %a!e upa %ie!are par!urgere a !i!lului . Testul trebuie sa %ie o e'presie booleana sau o %un!tie !are returneaza o valoare booleana $ !um ar %i iR+4 . &a!a testul este true !i!lul isi !ontinua e'e!utia . O ata intoarsa valoarea %alse !i!lul isi intrerupe e'e!utia . in!rementarea este o e'presie sau un apel e %un!tie . &e obi!ei in!rementarea este %olosita pentru a mo i%i!a valoarea in e'ului !i!lului $ pentru a a u!e starea !i!lului mai aproape e %inal . Asemanator se!tiunii initializare $ putem spe!i%i!a ai!i mai multe e'presii $ separate prin virgule .

In e'emplul e mai )os putem ve ea o instru!tiune %or !are atribuie tuturor pozitiilor unui tablou (tring valoarea &l. * (tring/0 %ormul(alut3ne2 (tring/+401 int i1 %or 6i341iR%ormula(alut.lengt.1iII: %ormula(alut/i03<&l. <1 -lementul %inal al instru!tiunii %or este e'presia iII 1 a!easta %a!e !a in e'ul !i!lului sa %ie in!rementat !u + la %ie!are par!urgere a !i!lului . "ara a!easta instru!tiune !i!lul nu s#ar in!.eia ni!io ata .

# +4 #

Curs JAVA nr. 2 Trebuie mentionat un aspe!t estul e %re!vent intalnit si generator e erori * nu se pune 1 upa paranteza : !i!lului %or * %or 6i341iR+41iII1 '3'Pi1 In e'emplul e mai sus !i!lul %or se in!.eie upa primul semn 1 $ %ara a se e'e!uta instru!tiunea '3'Pi !a parte a !i!lului . A!easta eroare poate %i greu e epistat pentru !a nu apare !a o eroare la !ompilare C ea este o eroare logi!a a programatorului . CICLURI OKIL- si &O Ca si !i!lurile %or $ !i!lurile 2.ile si o permit e'e!utarea unui blo! e !o Java pana in momentul !an se in eplineste o anumita !on itie . "olosirea !i!lurilor %or $ 2.ile sau o este e multe ori o problema oar e stil . Ci!lurile 2.ile si o sunt i enti!e !u !ele in C $ !u e'!eptia %aptului !a testul trebuie sa %oloseas!a o !on itie booleana . CICLURI OKILCi!lul 2.ile este %olosit pentru a repeta o instru!tiune atata timp !at o anumita !on itie este a evarata 6 true : . 2.ile 6iR+4: = '3'PiII1> In e'emplul anterior !on itia !are insoteste !uvantul !.eie 2.ile este o e'presie booleana $ iR+4 . &a!a e'presia returneaza true !i!lul e'e!uta !orpul sau si apoi testeaza in nou !on itia . A!est pro!es se repeta pana !an !on itia ia valoarea %alse . !lass CopieTablouO.ile = publi! stati! voi main 6(tring argumente/0: = int/0 tablou+3=F$A$G$+$A$+$A>1 %loat/0 tablou23ne2 %loat/tablou+.lengt.01 (Hstem.out.print6;tablou+ * /;:1 %or 6int i341 iRtablou+.lengt.1 iII : = (Hstem.out.print6tablou+/i0I< ;:1 > (Hstem.out.println6;0<:1 (Hstem.out.print6;tablou2* / ;:1 int in e'3o1 2.ile 6in e'Rtablou+.lengt. SS tablou+/in e'0T3+: = tablou2/in e'036%loat: tablou+/in e'01 (Hstem.out.print6tablou2/in e'II0I< ;:1 > (Hstem.out.println6;0<:1

# ++ #

Curs JAVA nr. 2 > > Programul e!lara oua tablouri C tablou+ este un tablou e intregi $ initializat !u !ateva numere . tablou2 este un tablou e numere in virgula mobila $ !are are a!eleasi imensiuni !u tablou+ $ insa nu are valori initiale . Programul par!urge apoi iterativ tablou+ a%isan valorile in toate pozitiile a!estuia 1 in !ontinuare programul veri%i!a valorile in tablou+ si in !azul in !are sunt i%erite e + le trans%orma in numere reale si le ins!rie in tablou2 . CICLURI &O U OKILA!est !i!lu este %oarte asemanator !u 2.ie C i%erenta ma)ora este lo!ul un e se %a!e testarea !on itiei in !i!lu . Un !i!lu 2.ile testeaza !on itia inainte e !i!lu si ast%el a!a avem valoarea %alse !orpul !i!lului nu va %i elo! e'e!utat . Un !i!lu o e'e!uta !orpul sau !el putin o ata inainte e a testa !on itia $ e!i a!a a!easta are valoarea %alse la prima testare !orpul !i!lului se va %i e'e!utat e)a o ata . o= '3'PiII1 > 2.ile 6iR+4:1 Corpul !i!lului este e'e!utat o ata inainte e evaluarea !on itiei $ iR+4 . I-(IR-A "ORTATA &I@ CICLURI In toate tipurile e !i!luri a!estea isi termina e'e!utia atun!i !an se in eplineste !on itia testata . Pot %i !azuri in !are apare !eva in e'e!utia !i!lului si orim sa iesim mai repe e in el . Pentru a!easta pot %i %olosite !uvintele !.eie breaQ si !ontinue . Am intalnit e)a breaQ in paginile anterioare C breaQ oprea e'e!utia instru!tiunii s2it!. iar programul !ontinua !u !o ul urmator instru!tiunii s2it!. . Cuvantul !.eie breaQ $ %olosit intr#un !i!lu $ %a!e a!elasi lu!ru C in!eteaza ime iat e'e!utia !i!lului !urent . &a!a e'ista !i!luri imbri!ate in !a rul altor !i!luri e'e!utia !ontinua !u urmatoarea iteratie a !i!lului in e'terior . Ast%el $ programul !ontinua e'e!utia urmatoarei instru!tiuni a%lata upa !i!lu . (a revenim la e'emplul !i!lului 2.ile !are !opia elementele unui tablou e intregi intr#un tablou e numere in virgula mobila pana !an se intalnea valoarea + . Putem testa a!easta !on itie in !a rul !orpului !i!lului 2.ile $ upa !are %olosim instru!tiunea breaQ pentru a parasi !i!lul * int in e'341 2.ile 6in e'Rtablou+.lengt.: = i% 6tablou+/in e'033+: breaQ1

# +2 #

Curs JAVA nr. 2 tablou2/in e'036%loat: tablou+/in e'II01 > Cuvantul !.eie !ontinue in!epe !i!lul e la o noua iteratie . Pentru !i!lurile o si 2.ile a!easta inseamna !a se in!epe in nou !u e'e!utia !orpului !i!lului 1 pentru !i!lurile %or se evalueaza e'presia e in!rementare si apoi se e'e!uta blo!ul e instru!tiuni . Instru!tiunea !ontinue este %olositoare atun!i !an orim sa tratati intr# un anume %el elementele intr#un !i!lu . "olosin e'emplul anterior $ e !opiere a unui tablou in altul $ putem testa a!a valoarea elementului !urent este egala !u + si sa %olosim !ontinue pentru a rein!epe !i!lul upa %ie!are + intalnit $ asa in!at tabloul rezultat sa nu !ontina ni!io ata + . Trebuie sa %im atenti !a $ eoare!e sarim peste unele elemente in primul tablou a!um trebuie sa pastram oua valori in e' pentru !ele oua tablouri * int in e'341 int in e'2341 2.ile 6in e'II R3tablou+.lengt.: = i% 6tablou+/in e'033+: !ontinue1 tablou2/in e'2II036%loat:tablou+/in e'01 > CICLURI -TICK-TATInstru!tiunile breaQ si !ontinue pot avea eti!.ete optionale !are sa in i!e lo!ul e un e se va !ontinua e'e!utia programului . "ara eti!.eta $ breaQ sare in a%ara !elui mai apropiat !i!lu sau la urmatoarea instru!tiune a%lata upa !i!lul . Instru!tiunea !ontinue sare la urmatoarea iteratie a !i!lului !are o !ontine . Cu a)utorul eti!.etelor putem %olosi breaQ pentru a sari intr#un pun!t a%lat in a%ara unui !i!lu imbri!at sau !ontinue pentru a sari intr#un !i!lu a%lat in a%ara !i!lului !urent . Pentru a %olosi un !i!lu !u eti!.ete se intro u!e eti!.eta inainte e partea e in!eput a !i!lului $ urmata e semnul * . Apoi $ upa numele instru!tiunii breaQ sau !ontinue intro u!em numele eti!.etei $ !a mai )os * a%ara* %or 6int i341 iR+41 iII : = 2.ile 6'RB4: = i% 6iP'IILA44: breaQ a%ara1 88 !i!lu interior > 88 !i!lu e'terior > In a!est e'emplu e !o $ eti!.eta a%ara mar!.eaza !i!lul e'terior . In !a rul !i!lurilor %or si 2.ile $ atun!i !an este in eplinita o anumita !on itie $ instru!tiunea breaQ !u eti!.eta are !a rezultat terminarea ambelor bu!le . "ara %olosirea eti!.etei a%ara $ instru!tiunea breaQ ar %i terminat e'e!utia !i!lului interior si ar %i !ontinuat e'e!utia !u !el e'terior .

# +, #

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