Sunteți pe pagina 1din 22

Structuri de Date n JAVA (I)

Prezentare curs i laborator Fazele dezvoltrii de soft are !ri"inea li#ba$ului Java S%ecifica&ii' desi"n' i#%le#entare Pe scurt des%re e(ce%&ii Analiza ti#%ului de rulare )itirea i scrierea la consol J*S+ API (A%%lication Pro"ra##in" Interface) ,e"uli de scriere a codului JavaDoc

Prezentare
)urs .onorius /0l#eanu' "al#eanu1ve"a2unitbv2ro 3iblio"rafie 4ic5ael 4ain' 6Data Structcures and !t5er !b$ects usin" JAVA7' Addison 8esle9' *::; 3ruce +c<el' 6=5in<in" in Java7' 5tt%->>#indvie 2net>3oo<s>=IJ? @otare 1:A %rezen&a la curs ?:A laborator (notare la fiecare or) B:A colocviu final
*

Fazele dezvoltrii soft are


structuri de date C colec&ii or"anizate du% o re"ul "eneral e(e#%le C arra9 C care este re"ula D

Fazele de dezvoltare s%ecificarea %roble#ei %roiectarea solu&iei i#%le#entarea

analiza solu&iei "site testarea i de%anarea ntre&inerea i evolu&ia

Fazele se confund ntrEun %roces iterativ


;

!ri"inea li#ba$ului JAVA


Sun 4icrosiste#s' 1FF1 (Ja#es /oslin")

lists2$ava (fiier te(t)


clas s lists { protected int i; public s tatic void main (String[] args) { // code follows here // ... } // ... }

lists2class (JAVA b9tecodes)


3A 25 !5 3! "# ... 3! 55 $% &' (5 3A ...

Java ,unti#e +nviron#ent (J,+) .ard are de calculator ?

S%ecifica&ii' desi"n' i#%le#entare


s%ecifica&ii G descrierea e(act a %roble#ei de rezolvat (concret) ,ealizarea unui convertor de te#%eratur )elsius E Faren5eit )+HSIIS FA,+@.+I= EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE E ;:2:: Temperatura E *:2:: echivalent F E 1:2:: va fi afiat Farenheit = Celsius ;* B :2:: aici 1:2:: *:2:: ;:2:: EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE B

al"orit# G %rocedur sau secven& de instruc&iuni cu a$utorul crora se rezolv o %roble# dat e(%ri#area al"orit#ului se face de re"ul n li#ba$ %seudocod desco#%unerea %roble#ei (#etode) conversia de te#%eratur ti%rirea tabelului valorilor al"orit#ul procedure convertor (t, step) tiprete capul de tabel for i = 1 to 7 do observa&i c = t + (i 1) * 10 stilul de scriere f=9*c/5+3 i tiprete c, !"#, un spa$iu, f %i !&# alinierea tiprete finalul de tabel

desco#%unerea %roble#ei n subtas<Euri reutilizarea codului (#etod "enric de ti%rire) uurin&a #odificrilor ascunderea infor#a&iei (ascunderea i#%le#entrii) se#ntura unei #etode Java-

// conversia te'peraturii din (rade "elsius )n &aren*eit public static double celsius+o&aren*eit (double c)

ti% returnat

nu#ele #etodei

%ara#etri

s%ecifica&iile #etodei

// converte%te te'peratura din "elsius )n &aren*eit // ,para's // double c te'peratura )n (rade "elsius // ,returns // te'peratura convertit- )n (rade &aren*eit // ,t*ro.s /lle(al0r(u'ent12ception // dac- te'peratura este 'ai 'ic- dec3t cea 'ai 'ic// te'peratur- per'is- 4ero absolut, 73,15 public static double celsius+o&aren*eit (double c) 6 // 777 8

1: public class SampleThrow 2: { 3: public int test (int x) 4: { 5: if( x < 0 ) 6: throw new IllegalArgumentEx e!tion ()" #: $: return 1" 1 %: & Ex e!tion in threa1 /main/ 10: 2a0a-lang-IllegalArgumentEx e!tion 11: public static void main (String[] args) at )am!le*hrow-te+t(int) 12: { ()am!le*hrow-2a0a:6) 13: ''tr( at )am!le*hrow-main 14: ''{ (2a0a-lang-)tring34) 15: )am!le*hrow +t , new )am!le*hrow ()" ()am!le*hrow-2a0a:1#) 16: )(+tem-out-!rintln (+t-te+t (0))" 1#: )(+tem-out-!rintln (+t-te+t (.1))" 1$: ''& 1%: '' at h( IllegalArgumentEx e!tion e) 20: ''{ 21: '' )(+tem-out-!rintln (/argument in0ali1/)" 22: ''& 23: & 24: & 25:

,ezultatele rulrii-

Analiza ti#%ului de rulare

analiza de ti#% G descrierea calitativ a MvitezeiM al"orit#ului

3ob urc n turnul +iffel cu inten&ia de a nu#ra c0te tre%te are acesta2 Se folosete de un creion i o 50rtie2 Punerea unui se#n %e 50rtie sau ac&iunea de a cobor > urca o sin"ur trea%t se nu#ete o%era&ie2 =rei variante 4etoda 1 urc %0n susN %entru fiecare trea%t urcat sau cobor0t %une c0te un se#nN

1:

4etoda * las 50rtia la baza turnuluiN %entru %ri#a trea%t' o urc' i las a%ca %e ea' o coboarN face un se#n %e 50rtieN a%oi' de fiecare dat va urca %0n i "sete a%ca' #ai urc o trea%t' #ut a%ca aici' coboarN a$uns $os' %une un se#n %e 50rtieN re%et ac&iunile %0n nu #ai "sete noi tre%teN 4etoda ; stri" ctre Pierre' care se afl n turn' 6)0te tre%te are turnul D7' noteaz rs%unsul %e 50rtie C *JLF tre%te' adic face ? se#ne2

Pentru fiecare #etod' nu#r se#nele %e care leEa %us %e 50rtie2 @e intereseaz efortul de%us C c0te o%era&ii a realizat2

11

Fie n nu#rul de tre%te ale turnului2 )u n not# de re"ul #ri#ea cazului2

4etoda 1 urc n tre%te %une' la fiecare trea%t urcat' c0te un se#n' n total n se#ne coboar n tre%te total- n ) n ) n * 3n (o%era&ii)

1*

Fie n nu#rul de tre%te ale turnului2 )u n not# de re"ul #ri#ea cazului2

4etoda * trea%ta 1- urc 1 trea%t' coboar 1 trea%t' %une 1 se#n trea%ta *- urc * tre%te' coboar * tre%te' %une 1 se#n 2 2 2 trea%ta n- urc n tre%te' coboar n tre%te' %une 1 se#n total1 5 2 5 --- 5 n 5 n 5(n.1) 5 --- 5 1 5 n ........................... (n51)5(n51) 5 --- 5(n51)5 n , n(n52)

1;

Fie n nu#rul de tre%te ale turnului2 )u n not# de re"ul #ri#ea cazului2

4etoda ; scrie ? cifre (? o%era&ii)

1?

+(%ri## c0te o%era&ii se fac n func&ie de #ri#ea cazului C f(n)

4etoda 14etoda *4etoda ;-

f n =;n
f n = n *n
*

ordin de ti#% liniar ordin %tratic ordin lo"arit#ic

f n =[ lo"1: n ]1

)are #etod este #ai ra%id D > )are al"orit# este #ai eficient D )azuri e(tre#e (co#%ara&i) un #aratonist a%lic #etoda 1' un #elc #etoda * #aratonistul #etoda 1' #elcul #etoda ; (rzbunarea #elcului) 1B

1J

+(e#%lu C citire i scriere la consol


import 2a0a-io-6" public class A11iti0e { public static void main ()tring34 arg+) { )(+tem-out-!rintln (/7al ulul +umei a 1oua numere/)" In!ut)tream8ea1er +t1in , new In!ut)tream8ea1er ()(+tem-in)" 9uffere18ea1er on+ole , new 9uffere18ea1er (+t1in)" )tring +" float a , 0: ; , 0"

1K

try { )(+tem-out-!rint (/Intro1u + , on+ole-rea1<ine ()" a , =loat-!ar+e=loat (+)" )(+tem-out-!rint (/Intro1u + , on+ole-rea1<ine ()" ; , =loat-!ar+e=loat (+)" & catch (I>Ex e!tion ioex) { )(+tem-out-!rintln (/In!ut )(+tem-exit (1)" & catch (?um;er=ormatEx e!tion { )(+tem-out-!rintln (/@// 5 / i+ not numeri /)" )(+tem-exit (1)" &

eti a: /)" eti ;: /)"

error/)" nfex) nfex-getAe++age () 5 /@// 5

&

&

)(+tem-out-!rint (a 5 / 5 / 5 ; 5 / , /)" )tring re+ult , )tring-format (/B1C0#-3f/: a5;)" )(+tem-out-!rintln (re+ult)"

1L

Java * Standard +dition (J*S+) API

1F

,e"uli de scriere a codului


du% #odificare' nea%rat testa&i %ro"ra#ul nu #odifica&i #ult fr a testa i#%une&i verificri a %ara#etrilor %ri#i&i stabili&i test cases %entru c0t #ai #ulte situa&ii du% o #odificare rula&i toate test caseEurile anterioare #etode c0t #ai scurte' descrise clar co#enta&i la fiecare nce%ut de o%era&ie res%ecta&i alinierea codului (* s%a&ii) s9nta( 5i"5li"5tin" unit testin" (testare %e buc&ele) trata&i toate situa&iile %articulare care %ot a%rea

*:

Docu#entarea codului (JavaDoc)


'66 Exem!lu 1e arun are a unei ex e!tii 6' public class )am!le*hrow { '66 Derifi a 1a a un intreg e+te negati0 Eparam x intregul re+!e ti0 Ethrows IllegalArgumentEx e!tion 1a a numarul e+te negati0 Ereturn 1 in aFul in are reu+e+te 6' public int te+t (int x) { if( x < 0 ) throw new IllegalArgumentEx e!tion (/x < 0/)" & return 1"

&

'' omentariile 1e genul a e+ta nu +e !ro e+eaFa in Ga0aHo '' ---

*1

**

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