“ SA N PA BLO ”
FA C ULTA D DE C IENC IA S EXA C TA S E ING ENIERIA
ING ENIERIA DE SISTEMA S LA PA Z – BO LIVIA
PRO G RA MA C IO N II G UIA DE JA VA
+ EJERC IC IO S 2007
INTEG RANTES:
O SSIO MARIN SERG IO WILLY
PRUDENC IO RO BINSO N ANDRES MAURIC IO SALG ADO FALLER IG NAC IO
VALDA SANC HEZ FREDDY SALVADO R
DO C ENTE: M.Sc . IRMA PRADO
SEMESTRE I AÑO 2007
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 1
INDIC E...1
PRO LO G O ...2
INTRO DUC C IÓ N...3
Pro g ra ma c io n O rie nta d a a O b je to s...4
Pa rtic ula rid a d e s d e Ja va ...5
El inte rp re te d e Ja va ...8
Dife re nc ia s y similitud e s c o n C ++ ...11
C la se s útile s ...16
Le ng ua je Ja va ...19
EJERC IC IO S RESUELTO S...22
Se nte nc ia s Bá sic a s (C o nd ic io na le s, Aritme tic a s y C o nta d o re s)...22
PRO BLEMAS PRO PUESTO S...28
C ic lo s y Se rie s...30
PRO BLEMAS PRO PUESTO S...42
Func io ne s y e l uso d e la c la se Ma th ...44
PRO BLEMAS PRO PUESTO S...57
Arre g lo s...59
Ap lic a c ió n d e ve c to re s – Pro g ra ma e sta d istic o ...83
PRO BLEMAS PRO PUESTO S...89
Ma tric e s ...91
Ap lic a c ió n d e Ma tric e s – C a lc ulo s Ma tric ia le s ...115
Ap lic a c ió n d e ma tric e s – Inve rsio n d e Ma tric e s p o r Fa d d e vva ...123
PRO BLEMAS PRO PUESTO S...126
Re c ursivid a d ...129
PRO BLEMAS PRO PUESTO S...148
Eje rc ic io s c o n G rá fic o s...149
BIBLIO G RAFIA ...160
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 2
PROLOGO
Esta g uía fue re a liza d a p o r e stud ia nte s d e te rc e r se me stre d e Ing e nie ria d e Siste ma s d e la Unive rsid a d C a to lic a Bo livia na c o n e l fin d e p ro p o rc io na r una he rra mie nta útil a to d o s lo s e stud ia nte s q ue e sté n c ursa nd o la ma te ria d e Pro g ra ma c io n II o q ue te ng a n a lg una d ific ulta d e n la p ro g ra ma c ió n e n Ja va o q ue simp le me nte d e se e n a mp lia r su c o no c imie nto e n e l te ma .
En e sta g uía e nc o ntra rá a p ro xima d a me nte 100 e je rc ic io s re sue lto s (p ro g ra ma s e n ja va ), c la sific a d o s e n d ife re nte s se c c io ne s. To d o s e sto s p ro g ra ma s func io na n c o rre c ta me nte y fue ro n e je c uta d o s utiliza nd o la he rra mie nta Re a dy to Pro g ra m, d ip o nib le e n fo rma g ra tuita e n
http :/ / www.sju.e d u/ ~p a rkinso / ja va to o ls/ re a d yto p ro g ra m.html
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 3
INTRODUCCIÓN
En e l a ño 1991 na c ió Ja va c ua nd o e n Sun, una e mp re sa nue va , se p ro p usie ro n c re a r un nue vo le ng ua je d e stina d o e n p rinc ip io a e le c tro d o mé stic o s, p o r lo ta nto , la p rime ra ve rsió n e ra un le ng ua je se nc illo c a p a z d e g e ne ra r c ó d ig o d e ta ma ño re d uc id o .
El c o ntinuo c a mb io e n la s c o mp uta d o ra s o b lig a b a a c a mb ia r lo s p ro g ra ma s c o ntinua me nte p o r lo q ue se p e nsó e n d e sa rro lla r una má q uina virtua l ind e p e nd ie nte q ue p o ste rio rme nte se d e no mina ria Ja va Virtua l Ma c hine (JVM) y e sto d io lug a r a l p rim e r le m a d e Ja va "Write o nc e , Run Eve rywhe re ".
Evid e nte me nte , lo s e le c tro d o mé stic o s no e sta b a n inte re sa d o s e n Ja va , a sí q ue c o me nzó a intro d uc irse c o mo le ng ua je d e p ro g ra ma c ió n p a ra c o mp uta d o ra s a fina le s d e 1995, intro d uc ié nd o se c o mo una he rra mie nta ne c e sa ria , p ue sto q ue Ne tsc a p e Na vig a to r 2.0 la intro d ujo c o mo inté rp re te .
Se p ub lic ó Ja va 1.1 a p rinc ip io s d e 1997 y Ja va 1.2 a fina le s d e 1998 c o n una e vo luc ió n p ro d ig io sa d e 12 p a q ue te s inic ia le s, 23 p a q ue te s e n la ve rsió n 1.1 y 59 p a q ue te s e n la ve rsió n 1.2 ( d e no mina d a Ja va 2).
La c o mp a ñía Sun d e sc rib e a Ja va c o mo "simp le , o rie nta d o a o b je to s, d istrib uid o , inte rp re ta d o , ro b usto , se g uro , d e a rq uite c tura ne utra , p o rta b le , d e a lta s p re sta c io ne s, multita re a y d iná mic o ", y lo b ue no d e e sta d e finic ió n e s q ue to d o lo q ue d ic e , q ue no e s p o c o , e s a b so luta me nte c ie rto , a unq ue e n a lg uno s a sp e c to s me jo ra b le .
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 4
Programacion Orientada a Objetos
La p rinc ip a l func ió n d e e ste tuto ria l no e s e nse ña r to d o s y c a d a uno d e lo s c o nc e p to s y p a rtic ula rid a d e s d e la p ro g ra ma c ió n d irig id a a o b je to s, a sí q ue simp le me nte se d a rá n a lg uno s c o nc e p to s q ue se d e b e n te ne r c la ro s p a ra c o me nza r.
La e struc tura g e ne ra l d e un p ro g ra ma o rie nta d o a o b je to s (PO O ), se e sp e c ific a e n una c la se p rinc ip a l q ue c o ntie ne n e l p ro g ra ma p rinc ip a l, (func ió n ma in()).
Una c la se e s una c o le c c io n d e va ria b le s y mé to d o s q ue ma ne ja n va ria b le s y e struc tura s d e d a to s. Se d e no mina n no rma lme nte d a to s y mé to d o s mie mb ro .
La PO O se b a sa e n la p ro g ra ma c ió n d e c la se s. Una c la se c o nstituye un p a tró n o mo d e lo p a ra c re a r o b je to s. To d o s lo s o b je to s d e b e n p e rte ne c e r a una c la se d e te rmina d a y p o r lo ta nto se d ic e q ue to d o s lo s o b je to s d e b e n se r insta nc ia s d e una c la se , e s d e c ir, q ue lo s o b je to s fo rma n un c o nte xto d e c la se . Un o b je to e sta rá fo rma d o p o r la s va ria b le s y mé to d o s d e la c la se y se rá sie mp re d ife re nte d e o tro o b je to , a unq ue e ste p e rte ne zc a a la misma c la se . La s c la se s ta mb ié n p ue d e n inc luir va ria b le s sta tic q ue no fo rma rá n p a rte d e lo s o b je to s d e d ic ha c la se , sino d e la c la se e n sí, e sta s va ria b le s se d e no mina n va ria b le s d e c la se .
La he re nc ia e s o tro c o nc e p to imp o rta nte d e la PO O , p e rmite d e finir nue va s c la se s b a sá nd o se e n c la se s ya e xiste nte s. Una c la se q ue se e xtie nde d e o tra , he re d a to d a s sus va ria b le s y to d o s sus mé to d o s. La c la se d e riva d a p ue d e a ña d ir nue va s va ria b le s y mé to d o s y re d e finir la s va ria b le s y mé to d o s he re d a d o s. En Ja va una c la se só lo p ue d e he re d a r d e o tra , e s lo q ue se d e no mina he re nc ia simp le .
El último d e lo s c o nc e p to s c la ve s q ue se va n a p untua liza r a q uí e s e l p o limo rfismo , e l p o lim o rfism o tie ne q ue ve r c o n la re la c ió n q ue se e sta b le c e
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 5 d ic ha lla ma d a . A e sta re la c ió n se lla ma vinc ula c ió n o b inding . La vinc ula c ió n p ue d e se r te mp ra na , e n tie mp o d e c o mp ila c ió n, o ta rd ía , e n tie mp o d e e je c uc ió n.
La vinc ula c ió n te mp ra na e s la má s e fic ie nte y e s la q ue se d a no rma lme nte c o n func io ne s no rma le s o so b re c a rg a d a s.
La so b re c a rg a se re fie re a la p o sib ilid a d d e te ne r d o s o má s func io ne s c o n e l mismo no mb re p e ro func io na lid a d d ife re nte . Es d e c ir, d o s o má s func io ne s c o n e l mismo no mb re re a liza n a c c io ne s d ife re nte s. El c o mp ila d o r usa rá una u o tra d e p e nd ie nd o d e lo s p a rá me tro s usa d o s. A e sto se lla ma so b re c a rg a d e func io ne s.
La vinc ula c ió n ta rd ía e s la q ue se utiliza c o n func io ne s re d e finid a s.Ad e má s d e c la se s, Ja va p ro p o rc io na inte rfa c e s. Un inte rfa c e e s un c o njunto d e d e c la ra c io ne s d e mé to d o s. Si una c la se imp le me nta un inte rfa c e , d e b e d e finir to d a s la s func io ne s e sp e c ific a d a s e n é l. Una c la se p ue d e imp le me nta r ning ún, uno , o va rio s inte rfa c e s. Un inte rfa c e si so p o rta la he re nc ia múltip le d e va rio s inte rfa c e s.
Particularidades de Java
A c o ntinua c ió n se e nunc ia n va ria s p a rtic ula rid a d e s d e Ja va , q ue se rvirá n a l p ro g ra ma d o r d e e ste le ng ua je a e nte nd e r me jo r la e struc tura p a ra c re a r un p ro g ra ma e n Ja va d e ma ne ra e xito sa .
• La sinta xis e s muy p a re c id a a C ++ y la s p a la b ra s c la ve so n la s misma s e limina nd o a lg una s e n d e suso y a ña d ie nd o o tra s p a ra re a liza r c o sa s c a ra c te rístic a s d e Ja va .
• En Ja va e s ha b itua l utiliza r no mb re s c o n minúsc ula s p a ra va ria b le s sie mp re y c ua nd o no se d e n a lg una s d e la s sig uie nte s situa c io ne s:
o El no mb re c o nsta d e va ria s p a la b ra s y no rma lme nte se p o ne una d e trá s d e o tra c o n la p rime ra le tra d e c a d a p a la b ra e n ma yúsc ula s:
Ej. e lMa yo r.
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 6 o Lo s no mb re s d e c la se s e inte rfa c e s c o mie nza n
sie mp re p o r ma yúsc ula s: Ej. G e o me tría .
o Lo s no mb re s d e o b je to s, mé to d o s, va ria b le s mie mb ro y va ria b le s lo c a le s d e lo s mé to d o s c o mie nza n sie mp re p o r minúsc ula .
o Lo s no mb re s d e la s va ria b le s fina le s, o c o nsta nte s, se d e fine n sie mp re c o n ma yúsc ula s:
Ej. PI.
o To d a s la s va ria b le s e n Ja va so n re fe re nc ia s y la utiliza c ió n d e la me mo ria a so c ia d a a é sta s y a lo s o b je to s q ue se ma ne ja n e s una func ió n d e l re c o le c to r d e b a sura .
• Lo s fic he ro s d e c ó d ig o d e b e n te ne r la e xte nsió n ja va y te nd rá n e l mismo no mb re q ue la c la se p rinc ip a l q ue c o ntie ne n. Esto s fic he ro s p ue d e n c o nte ne r má s d e una c la se , p e ro só lo una d e e lla s se rá una c la se p úb lic a y se d e no mina c la se p rinc ip a l.
• Lo s fic he ro s ya c o mp ila d o s tie ne n la e xte nsió n c la ss y e xiste sie mp re un fic he ro d e e ste tip o p o r c la se .
• Una a p lic a c ió n e stá c o mp ue sta p o r uno o va rio s fic he ro s c la ss p e rm itie nd o a sí m o d ula riza r c a d a una d e la s p a rte s d e la a p lic a c ió n e n fic he ro s. La e je c uc ió n d e una a p lic a c ió n c o mie nza sie mp re p o r una c la se q ue c o ntie ne la func ió n ma in() sin a ña d ir la e xte nsió n c la ss.
• En Ja va to d a s la s c la se s he re d a n, a unq ue no se e sp e c ifiq ue e xp líc ita me nte d e la c la se g e ne ra l O b je c t q ue ha c e d e ra íz d e to d a la je ra rq uía d e c la se s d e Ja va . Lo s mé to d o s q ue d e fine la c la se o b je c t so n d e d o s c la se s, mé to d o s q ue se p ue d e n re d e finir p o r e l p ro g ra ma d o r, c lo ne (), e q ua ls(), to String (), fina lize () y m é to d o s q ue no p ue d e n se r re d e finid o s, so n mé to d o s fina l c o mo g e tC la ss(), no tify(), no tifyAll() a unq ue lo s tre s último s e stá n re la c io na d o s c o n la s he b ra s, thre a d s.
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a 7 e ntre re fe re nc ia s d e c la se s d ife re nte s e xig e q ue a mb a s c la se s e sté n re la c io na d a s me d ia nte he re nc ia o me d ia nte la imp le me nta c ió n d e un inte rfa z e n e l c a so d e q ue la re fe re nc ia se a d e un tip o inte rfa c e .
• La s c la se s Ja va se a g rup a n e n p a c ka g e s a lo s q ue se p ue d e n d e finir c o mo lib re ría s d e c la se s. Si se d e c la ra una c la se sin p a c ka g e se c o nsid e ra n p e rte ne c ie nte s a un p a c ka g e p o r d e fe c to , d e fa ult q ue e s e l d ire c to rio a c tua l.
Ja va p ro p o rc io na un c o njunto d e p a q ue te s a l q ue se d e no mina API. El no mb re d e lo s p a q ue te s sue le se r un no mb re e n minúsc ula s y p ue d e c o nsta r d e va rio s no mb re s unid o s p o r p unto s. To d a s la s c la se s q ue e stá n e n e l mismo p a q ue te d e b e n e sta r e n e l mismo d ire c to rio . Lo s no mb re s c o mp ue sto s d e lo s p a q ue te s e stá n re la c io na d o s c o n la je ra rq uía d e d ire c to rio s e n q ue se g ua rd a n la s c la se s. Lo s p a q ue te s se utiliza n p a ra a lma c e na r c la se s re la c io na d a s, e vita r c o nflic to s d e no mb re s y a yud a r a la a c c e sib ilid a d d e la s c la se s. La inc lusió n d e una c la se e n un p a q ue te se ha c e me d ia nte la se nte nc ia p a c ka g e q ue se inc luye e n la p rime ra líne a d e l fic he ro ja va q ue c o ntie ne la c la se . la se nte nc ia imp o rt se g uid a d e l no m b re d e un p a q ue te m á s e l no m b re d e una c la se d e e se p a q ue te , ind ic a q ue c la se se utiliza rá e n e se fic he ro c ua nd o se invo q ue a un o b je to d e la c la se imp o rta d a .
• Al c o ntra rio d e C ++, Ja va no utiliza d e struc to re s, sino q ue o p c io na lme nte e l usua rio p ue d e inc luir n mé to d o q ue se e je c uta rá c ua nd o e l o b je to va ya a se r re c ic la d o , e s e l mé to d o fina lize ().
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a
El interprete de Java
Ja va , p a ra c o nse g uir se r un le ng ua je ind e p e nd ie nte d e l siste ma o p e ra tivo y d e l p ro c e sa d o r q ue inc o rp o re la má q uina utiliza d a , e s ta nto inte rp re ta d o c o mo c o mp ila d o . El c ó d ig o fue nte e sc rito c o n c ua lq uie r e d ito r se c o mp ila g e ne ra nd o e l Byte C o d e . Este c ó d ig o inte rme d io e s d e muy b a jo nive l, p e ro sin a lc a nza r la s instruc c io ne s má q uina p ro p ia s d e c a d a p la ta fo rma y no tie ne na d a q ue ve r c o n e l p -c o d e d e Visua l Ba sic . El Byte C o d e c o rre sp o nd e a l 80% d e la s instruc c io ne s d e la a p lic a c ió n. Ese mismo c ó d ig o e s e l q ue se p ue d e e je c uta r so b re c ua lq uie r p la ta fo rma . Pa ra e llo ha c e fa lta e l runtime , q ue sí e s c o mp le ta me nte d e p e nd ie nte d e la má q uina y d e l siste ma o p e ra tivo q ue inte rp re ta d iná mic a me nte e l Byte C o d e y a ña d e e l 20% d e instruc c io ne s q ue fa lta b a n p a ra su e je c uc ió n.
C o n e ste siste ma e s fá c il c re a r a p lic a c io ne s multip la ta fo rma , p e ro p a ra e je c uta rla s e s ne c e sa rio q ue e xista e l runtime c o rre sp o nd ie nte a l siste ma o p e ra tivo utiliza d o .
No o b sta nte , e ste p a no ra ma e stá c a mb ia nd o a p a so s a g ig a nta d o s, y a unq ue Ja va sig ue sie nd o b á sic a me nte un le ng ua je inte rp re ta d o , la situa c ió n se a c e rc a muc ho a la d e lo s p ro g ra ma s c o mp ila d o s, so b re to d o e n lo q ue a la ra p id e z e n la e je c uc ió n d e l c ó d ig o se re fie re . Pa ra c o mp re nd e r e l func io na mie nto d e Ho tSp o t, q ue e s e l último la nza mie nto q ue ha c e Sun y q ue p ro me te inte rp re ta r lo s Byte C o d e s má s rá p id o q ue un p ro g ra ma c o mp ila d o , la s sig uie nte s imá g e ne s mue stra n c ó mo a c túa e l siste ma runtime e n lo s d ive rso s c a so s q ue ha sta a ho ra p ue d e n d a rse .
La ima g e n d e la izq uie rd a mue stra la s a c c io ne s c o rre sp o nd ie nte s a un c o mp ila d o r tra d ic io na l. El c o mp ila d o r tra sla d a la s se nte nc ia s e sc rita s e n le ng ua je d e a lto -nive l a múltip le s instruc c io ne s, q ue lue g o so n e nla za d a s junto
8
INTEG RANTES: Se rg io O ssio , And ré s Prud e nc io , Ig na c io Sa lg a d o , Fre d d y Va ld a lib re ría s, y junta nd o to d o e llo , e s c ua nd o g e ne ra un p ro g ra ma e je c uta b le .
9 La ima g e n d e la d e re c ha mue stra la fo rma d e
a c tua c ió n d e un inté rp re te . Bá sic a me nte e s un e no rme b uc le , e n e l c ua l se va le ye nd o o re c o g ie nd o c a d a una d e la s instruc c io ne s d e l p ro g ra ma fue nte q ue se d e se a e je c uta r, se a na liza , se p a rte e n tro zo s y se e je c uta . Lue g o se va a re c o g e r la sig uie nte instruc c ió n q ue se d e b e inte rp re ta r y se c o ntinúa c o n e ste p ro c e so ha sta q ue se te rmina n la s
instruc c io ne s o ha sta q ue e ntre la s instruc c io ne s ha y a lg una q ue c o ntie ne la o rd e n d e d e te ne r la e je c uc ió n d e la s instruc c io ne s q ue c o mp o ne n e l p ro g ra ma fue nte .
La ima g e n sig uie nte , situa d a a la izq uie rd a , mue stra un tip o d e inté rp re te má s e fic ie nte q ue e l a nte rio r, e l inté rp re te d e Byte C o d e s, q ue fue p o p ula riza d o ha c e má s d e ve inte a ño s p o r la Unive rsid a d d e C a lifo rnia a l c re a r e l UC SD Pa sc a l. En e ste c a so , e l inté rp re te tra b a ja so b re instruc c io ne s q ue ya ha n sid o tra sla d a d a s a un c ó d ig o inte rme d io e n un p a so a nte rio r. Así, a unq ue se e je c ute e n un b uc le , se e limina la ne c e sid a d d e a na liza r c a d a una d e la s instruc c io ne s q ue c o mp o ne n e l p ro g ra ma fue nte , p o rq ue ya lo ha n sid o e n e l p a so p re vio . Este e s e l siste ma q ue Ja va utiliza , y la Má q uina Virtua l Ja va e s un e je mp lo d e e ste tip o d e inté rp re te . No o b sta nte , sig ue sie nd o le nto , a unq ue se o b te ng a un c ó d ig o ind e p e nd ie nte d e p la ta fo rma muy c o mp a c to , q ue p ue d e se r e je c uta d o e n c ua lq uie r o rd e na d o r q ue d isp o ng a d e una má q uina virtua l c a p a z d e inte rp re ta r lo s Byte C o d e s tra sla d a d o s.