Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD CATOLICA BOLIVIANA “SAN PABLO” FACULTAD DE CIENCIAS EXACTAS E INGENIERIA INGENIERIA DE SISTEMAS LA PAZ – BOLIVIA PROGRAMACION II GUIA DE JAVA + EJERCICIOS 2007 INTEG RANTES: O SSIO MARIN SERG IO WILLY PRUDENCIO RO BINSO N ANDRES MAURICIO SALG ADO FALLER IG NACIO VALDA SANCHEZ FREDDY SALVADO R DO CENTE: M.Sc . IRMA PRADO SEMESTRE I AÑO 2007 PRO G RAMACIO N II GUIA DE JAVA 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 INDICE INDIC E....................................................................................................................1 PRO LO G O .............................................................................................................2 INTRO DUC CIÓ N....................................................................................................3 Pro g ra ma c io n O rie nta d a a Ob 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 (Co nd ic io na le s, Aritme tic a s y Co nta d o re s)............22 PRO BLEMAS PRO PUESTO S..........................................................................28 Cic 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 – Ca 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 PRO G RAMACIO N II GUIA DE JAVA 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 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 Ca 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 ady to Pro g ram , 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 http://www.sju.edu/%7Eparkinso/javatools/readytoprogram.html PRO G RAMACIO N II GUIA DE JAVA 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 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 Java Virtua l Mac hine (JVM) y e sto d io lug a r a l p rime r le ma 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 ó Java 1.1 a p rinc ip io s d e 1997 y Java 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 Java 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 . PRO G RAMACIO N II GUIA DE JAVA 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 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 main()). 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ó no 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 po limo rfismo , e l p o limo rfismo tie ne q ue ve r c o n la re la c ió n q ue se e sta b le c e PRO G RAMACIO N II GUIA DE JAVA 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 5 e ntre la lla ma d a a un mé to d o y e l c ó d ig o q ue e fe c tiva me nte se a so c ia c o n d ic ha lla ma d a . A e sta re la c ió n se lla ma vinc ulac 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 arg 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 rfac 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 rfac 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 rfac 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. PRO G RAMACIO N II GUIA DE JAVA 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 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 java 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 lass 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 lass p e rmitie nd o a sí mo 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 main() sin a ña d ir la e xte nsió n c lass. • 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 Ob 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 uals(), 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 tClass(), 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 ads. PRO G RAMACIO N II GUIA DE JAVA 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 7 • Ja va e s un le ng ua je fue rte me nte tip ific a d o y la c o nve rsió n 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 rfac e . • La s c la se s Java se a g rup a n e n pac kag 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 pac kag e se c o nsid e ra n p e rte ne c ie nte s a un pac kag e p o r d e fe c to , de fault 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 tos 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 pac kag 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 impo rt se g uid a d e l no mb re d e un p a q ue te má s e l no mb 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 (). PRO G RAMACIO N II GUIA DE JAVA 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 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 Co 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 Co 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. Co 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 Co 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 PRO G RAMACIO N II GUIA DE JAVA 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 c o n e l re sulta d o d e múltip le s c o mp ila c io ne s p re via s q ue ha n d a d o o rig e n 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 Co 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 Ca lifo rnia a l c re a r e l UCSD 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 Co d e s tra sla d a d o s. PRO G RAMACIO N II GUIA DE JAVA 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 Un p a so a d e la nte e n e l re nd imie nto d e l c ó d ig o Ja va lo ha n re p re se nta d o lo s c o mp ila d o re s Just-In- Time , q ue c o mp ila n e l c ó d ig o c o nvirtié nd o lo a c ó d ig o má q uina a nte s d e e je c uta rlo . Es d e c ir, un c o mp ila d o r JIT va tra sla d a nd o lo s Byte C o d e s a l c ó d ig o má q uina d e la p la ta fo rma se g ún lo s va le ye nd o , re a liza nd o un c ie rto g ra d o d e o p timiza c ió n. El re sulta d o e s q ue c ua nd o e l p ro g ra ma se e je c ute , ha b rá p a rte s q ue no se e je c ute n y q ue no se rá n c o mp ila d a s, y e l c o mp ila d o r JIT no p e rd e rá e l tie mp o e n o p timiza r c ó d ig o q ue nunc a se va a e je c uta r. No o b sta nte , lo s c o mp ila d o re s JIT no p ue d e n re a liza r d e ma sia d a s o p timiza c io ne s, ya q ue ha y c ó d ig o q ue e llo s no ve n, a sí q ue a unq ue sie mp re so n c a p a c e s d e o p timiza r la p a rte d e c ó d ig o d e inic ia liza c ió n d e un p ro g ra ma , ha y o tra s p a rte s q ue d e b e n se r o p timiza d a s, se g ún se va n c a rg a nd o , c o n lo c ua l, ha y una c ie rta c a ntid a d d e tie mp o q ue ine vita b le me nte ha d e p e rd e rse . Y, fina lme nte , se p re se nta la última te nd e nc ia e n lo q ue a c o mp ila c ió n e inté rp re te s se re fie re . Lo último e n q ue tra b a ja Sun e s Ho tSp o t, una he rra mie nta q ue inc luye un c o mp ila d o r d iná mic o y una má q uina virtua l p a ra inte rp re ta r lo s Byte Co d e s, ta l c o mo se mue stra e n la fig ura sig uie nte , situa d a a la izq uie rd a d e la p á g ina . Cua nd o se c a rg a n lo s Byte C o d e s p ro d uc id o s p o r e l c o mp ila d o r p o r p rime ra ve z, é sto s so n inte rp re ta d o s e n lamá q uina virtua l. Cua nd o ya e stá n e n e je c uc ió n, e l p ro file r ma ntie ne info rma c ió n so b re e l re nd imie nto y se le c c io na e l mé to d o so b re e l q ue se va a re a liza r la c o mp ila c ió n. Lo s mé to d o s ya c o mp ila d o s se a lma c e na n e n 10 PRO G RAMACIO N II GUIA DE JAVA 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 11 un c a c hé e n c ó d ig o má q uina na tivo . Cua nd o un mé to d o e s invo c a d o , e sta ve rsió n e n c ó d ig o má q uina na tivo e s la q ue se utiliza , e n c a so d e q ue e xista ; e n c a so c o ntra rio , lo s Byte Co d e s so n re inte rp re ta d o s. La func ió n c o ntro l q ue mue stra e l d ia g ra ma e s c o mo un sa lto ind ire c to a tra vé s d e la me mo ria q ue a p unta ta nto a l c ó d ig o má q uina c o mo a l inte rp re ta d o , a unq ue Sun no ha p ro p o rc io na d o muc ho s d e ta lle s so b re e ste e xtre mo . Diferencias y similitudes con C++ Ja va no so p o rta typ e d e fs, d e fine s o c o ma nd o s d e p re p ro c e sa d o r. Al no e xistir un p re p ro c e sa d o r, no e stá p re vista la inc lusió n d e fic he ro s d e c a b e c e ra , ta mp o c o tie ne c a b id a e l c o nc e p to d e ma c ro o c o nsta nte . Sin e mb a rg o , sí se p e rmite c ie rto uso d e c o nsta nte s e nume ra d a s a tra vé s d e la utiliza c ió n d e la p a la b ra c la ve fina l. Ja va ta mp o c o so p o rta e nums, a unq ue so p o rte c o nsta nte s e nume ra d a s, c o mo a c a b o d e d e c ir. Ja va so p o rta c la se s, p e ro no so p o rta e struc tura s o unio ne s. To d a s la s a p lic a c io ne s C++ ne c e sita n una func ió n d e e ntra d a lla ma d a ma in() y p ue d e ha b e r multitud d e o tra s func io ne s, ta nto func io ne s mie mb ro s d e una c la se c o mo func io ne s ind e p e nd ie nte s. En Ja va no ha y func io ne s ind e p e nd ie nte s, a b so luta me nte to d a s la s func io ne s ha n d e se r mie mb ro s d e a lg una c la se (mé to d o s). Func io ne s g lo b a le s y d a to s g lo b a le s e n Ja va no e stá n p e rmitid o s. En C++ se p ue d e n c re a r á rb o le s d e he re nc ia d e c la se s ind e p e nd ie nte s uno s d e o tro s. En Ja va e sto no e s p o sib le , e n última insta nc ia ha y una c la se O b je c t, d e la q ue he re d a to d o lo q ue e l p ro g ra ma d o r c re e . To d a s la s func io ne s o d e finic io ne s d e mé to d o s e n Ja va d e b e n e sta r c o nte nid o s d e ntro d e la d e finic ió n d e la c la se . Pa ra un p ro g ra ma d o r C ++ p ue d e p a re c e rle q ue e sto e s se me ja nte a la s func io ne s inline , p e ro no e s a sí. Ja va no p e rmite , a l me no s d ire c ta me nte , q ue e l p ro g ra ma d o r p ue d a d e c la ra r func io ne s inline . PRO G RAMACIO N II GUIA DE JAVA 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 12 Ta nto Ja va c o mo C++ so p o rta n func io ne s o mé to d o s (e stá tic o s) d e c la se s, q ue p ue d e n se r invo c a d o s sin ne c e sid a d d e te ne r q ue insta nc ia r ning ún o b je to d e la c la se . En Ja va se intro d uc e e l c o nc e p to d e inte rfa c e , q ue no e xiste e n C++. Una inte rfa c e se utiliza p a ra c re a r una c la se b a se a b stra c ta q ue c o nte ng a so la me nte la s c o nsta nte s y la s d e c la ra c io ne s d e lo s mé to d o s d e la c la se . No se p e rmite q ue ha ya va ria b le s mie mb ro ni d e finic io ne s d e mé to d o s. Ad e má s, e n Ja va ta mb ié n se p ue d e n c re a r ve rd a d e ra s c la se s a b stra c ta s. Ja va no so p o rta he re nc ia múltip le , a unq ue se p ue d e n utiliza r la s p o sib ilid a d e s q ue o fre c e e l uso d e inte rfa c e s p a ra e mp le a r la s ve nta ja s q ue o fre c e la he re nc ia múltip le , e vita nd o lo s inc o nve nie nte s q ue se d e riva n d e su uso . La he re nc ia simp le e s simila r e n Ja va y e n C++, a unq ue la fo rma e n q ue se imp le me nta e s b a sta nte d ife re nte , e sp e c ia lme nte e n lo q ue re sp e c ta a la utiliza c ió n d e lo s c o nstruc to re s e n la c a d e na d e he re nc ia . Ja va no so p o rta la se nte nc ia g o to , a unq ue se a una p a la b ra re se rva d a . Sin e mb a rg o , so p o rta la s se nte nc ia s b re a k y c o ntinue c o n e tiq ue ta s, q ue no e stá n so p o rta d a s p o r C++. Ba jo c ie rta s c irc unsta nc ia s, e sta s se nte nc ia s e tiq ue ta d a s se p ue d e n utiliza r c o mo un g o to e nc ub ie rto . Ja va no so p o rta la so b re c a rg a d e o p e ra d o re s, a unq ue la utilic e inte rna me nte , p e ro no e stá d isp o nib le p a ra e l p ro g ra ma d o r. Ta mp o c o so p o rta la c o nve rsió n a uto má tic a d e tip o s, e xc e p to e n la s c o nve rsio ne s se g ura s. Al c o ntra rio q ue C++, Ja va d isp o ne d e un tip o String y lo s o b je to s d e e ste tip o no p ue d e n mo d ific a rse . La c a d e na s q ue se e nc ue ntre n d e finid a s e ntre c o milla s d o b le s so n c o nve rtid a s a uto má tic a me nte a o b je to s String . Ja va ta mb ié n d isp o ne d e l tip o String Buffe r, c uyo s o b je to s sí se p ue d e n mo d ific a r, y a d e má s se p ro p o rc io na n una se rie d e mé to d o s p a ra p e rmitir la ma nip ula c ió n d e c a d e na s d e e ste tip o . PRO G RAMACIO N II GUIA DE JAVA 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 13 Al c o ntra rio q ue C++, Ja va tra ta a lo s a rra ys c o mo o b je to s re a le s. Disp o ne n d e un mie mb ro , le ng th, q ue ind ic a la lo ng itud d e l a rra y. Se g e ne ra una e xc e p c ió n c ua nd o se inte nta so b re p a sa r e l límite ind ic a d o p o r e sta lo ng itud . To d o s lo s a rra ys so n insta nc ia d o s e n me mo ria d iná mic a y se p e rmite la a sig na c ió n d e un a rra y a o tro ; sin e mb a rg o , c ua nd o se re a liza una a sig na c ió n, simp le me nte te ne mo s d o s re fe re nc ia s a un mismo a rra y, no ha y d o s c o p ia s d e l a rra y, p o r lo q ue si se a lte ra un e le me nto d e un a rra y, ta mb ié n se a lte ra rá e n e l o tro . A d ife re nc ia d e C++, e l te ne r d o s "p unte ro s" o re fe re nc ia s a un mismo o b je to e n me mo ria d iná mic a no re p re se nta ne c e sa ria me nte un p ro b le ma (a unq ue sí p ue d e p ro vo c a r re sulta d o s imp re visto s). En Ja va , la me mo ria d iná mic a e s lib e ra d a a uto má tic a me nte , p e ro e sta lib e ra c ió n no se lle va a c a b o ha sta q ue to d a s la s re fe re nc ia s a e sa me mo ria so n NULL o d e ja n d e e xistir. Po r ta nto , a d ife re nc ia d e C++, una zo na d e me mo ria d iná mic a nunc a p ue d e se r invá lid a mie ntra s e sté sie nd o re fe re nc ia d a p o r a lg una va ria b le . Ja va no so p o rta p unte ro s, a l me no s e n e l se ntid o q ue a trib uye C ++, e s d e c ir, no p e rmite mo d ific a r e l c o nte nid o d e una zo na d e me mo ria a p unta d a p o r un p unte ro , o re a liza r o p e ra c io ne s a ritmé tic a s c o n p unte ro s. La ma yo r ne c e sid a d d e uso d e p unte ro s d e riva d e la utiliza c ió n d e c a d e na s y a rra ys, y e sto se e vita a l se r o b je to s d e p rime ra c la se e n Ja va . Po r e je mp lo , la d e c la ra c ió n imp re scind ib le e n C ++, c ha r *p unte ro , p a ra re fe re nc ia r a l p rime r e le me nto d e una c a d e na no se ne c e sita e n Ja va , a l se r la c a d e na un o b je to String . La d e finic ió n d e c la se e s se me ja nte e n Ja va y C++, a unq ue e n Ja va no e s ne c e sa rio e l p unto y c o ma (;) fina l. El o p e ra d o r d e á mb ito (::) ne c e sa rio e n C++ no se usa e n Ja va , sino q ue se utiliza e l p unto (.) p a ra c o nstruir re fe re nc ia s. Y, c o mo no ha y so p o rte d e p unte ro s, e l o p e ra d o r fle c ha (->) ta mp o c o e stá so p o rta d o e n Ja va . En C++, la s func io ne s y d a to s mie mb ro s se invo c a n utiliza nd o e l no mb re d e la c la se y e l no mb re d e l mie mb ro e stá tic o c o ne c ta d o s p o r e l o p e ra d o r d e á mb ito . En Ja va , se utiliza e l p unto (.) p a ra c o nse g uir e l mismo p ro p ó sito . PRO G RAMACIO N II GUIA DE JAVA 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 14 Al ig ua l q ue C ++, Ja va d isp o ne d e tip o s p rimitivo s c o mo int, flo a t, e tc . Pe ro , a l c o ntra rio d e C++, lo s ta ma ño s d e e sto s tip o s so n ig ua le s ind e p e nd ie nte me nte d e la p la ta fo rma e n q ue se e sté n utiliza nd o . No ha y tip o s sin sig no e n Ja va , y la c o mp ro b a c ió n d e tip o s e s muc ho má s re stric tiva e n Ja va q ue e n C++. Ja va d isp o ne d e un tip o b o o le a n ve rd a d e ro . La s e xp re sio ne s c o nd ic io na le s e n Ja va se e va lúa n a b o o le a no e n ve z d e a e nte ro c o mo e n e l c a so d e C++. Es d e c ir, e n Ja va no se p e rmite n se nte nc ia s d e l tip o if( x+y ), p o rq ue la e xp re sió n q ue va d e ntro d e l p a ré nte sis no se e va lúa a b o o le a no . El tip o c ha r e n C ++ e s un tip o d e 8 b its q ue ma p e a e l c o njunto c o mp le to d e c a ra c te re s ASCII. En Ja va , e l tip o c ha r e s d e 16 b its y utiliza e l se t d e c a ra c te re s Unic o d e (lo s c a ra c te re s d e l 0 a l 127 d e l se t Unic o d e , c o inc id e n c o n e l se t ASC II). Al c o ntra rio q ue e n C++, e l o p e ra d o r d e sp la za mie nto (>>) e s un o p e ra d o r c o n sig no , inse rta nd o e l b it d e sig no e n la p o sic ió n va c ía . Po r e llo , Ja va inc o rp o ra e l o p e ra d o r >>>, q ue inse rta c e ro s e n la s p o sic io ne s q ue va n q ue d a nd o va c ía s tra s e l d e sp la za mie nto . C++ p e rmite la insta nc ia c ió n d e va ria b le s u o b je to s d e c ua lq uie r tip o e n tie mp o d e c o mp ila c ió n so b re me mo ria e stá tic a o , e n tie mp o d e e je c uc ió n, so b re me mo ria d iná mic a . Sin e mb a rg o , Ja va re q uie re q ue to d a s la s va ria b le s d e tip o s p rimitivo s se a n insta nc ia d a s e n tie mp o d e c o mp ila c ió n, y to d o s lo s o b je to s se a n insta nc ia d o s e n me mo ria d iná mic a e n tie mp o d e e je c uc ió n. Ja va p ro p o rc io na c la se s d e e nvo ltura p a ra to d o s lo s tip o s p rimitivo s, e xc e p to p a ra b yte y sho rt, q ue p e rmite n q ue e sto s tip o s p rimitivo s p ue d a n se r insta nc ia d o s e n me mo ria d iná mic a c o mo o b je to s e n tie mp o d e e je c uc ió n, si fue se ne c e sa rio . C ++ re q uie re q ue la s c la se s y func io ne s e sté n d e c la ra d a s a nte s d e utiliza rla s p o r p rime ra ve z. Esto no e s ne c e sa rio e n Ja va . C++ ta mb ié n re q uie re q ue lo s mie mb ro s e stá tic o s d e una c la se se re d e c la re n fue ra d e la c la se . Esto ta mp o c o e s ne c e sa rio e n Ja va . PRO G RAMACIO N II GUIA DE JAVA 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 15 En C++, si no se ind ic a n va lo re s d e inic ia liza c ió n p a ra la s va ria b le s d e tip o s p rimitivo s, p ue d e n c o nte ne r b a sura . Aunq ue la s va ria b le s lo c a le s d e tip o s p rimitivo s se p ue d e n inic ia liza r e n la d e c la ra c ió n, lo s d a to s mie mb ro s d e tip o p rimitivo d e una c la se no se p ue d e n inic ia liza r e n la d e finic ió n d e la c la se . En Ja va , se p ue d e n inic ia liza r e sto s d a to s mie mb ro s d e tip o p rimitivo e n la d e c la ra c ió n d e la c la se . Ta mb ié n se p ue d e n inic ia liza r e n e l c o nstruc to r. Si la inic ia liza c ió n no se re a liza e xp líc ita me nte , o fa lla p o r lo q ue se a , lo s d a to s so n inic ia liza d o s a c e ro (o su e q uiva le nte ) a uto má tic a me nte . Al ig ua l q ue o c urre e n C ++, Ja va ta mb ié n so p o rta c o nstruc to re s q ue p ue d e n se r so b re c a rg a d o s. Y, d e l mismo mo d o q ue suc e d e e n C++, si no se p ro p o rc io na un c o nstruc to r e xp líc ita me nte , e l siste ma p ro p o rc io na un c o nstruc to r p o r d e fe c to . En Ja va to d o s lo s o b je to s se p a sa r p o r re fe re nc ia , e limina nd o la ne c e sid a d d e l c o nstruc to r c o p ia utiliza d o e n C++. No ha y d e struc to re s e n Ja va . La me mo ria q ue no se utiliza e s d e vue lta a l Siste ma a tra vé s d e l re c ic la d o r d e me mo ria , q ue se e je c uta e n un thre a d d ife re nte a l d e l p ro g ra ma p rinc ip a l. Esta e s una d e la s d ife re nc ia s e xtre ma d a me nte imp o rta nte s e ntre C++ y Ja va . Co mo C++, Ja va ta mb ié n so p o rta la so b re c a rg a d e func io ne s. Sin e mb a rg o , e l uso d e a rg ume nto s p o r d e fe c to no e stá so p o rta d o e n Ja va . Al c o ntra rio q ue C++, Ja va no so p o rta te mp la te s, p o r lo q ue no e xiste n func io ne s o c la se s g e né ric a s. El multithre a d ing , o multihilo , e s a lg o c a ra c te rístic o d e Ja va , q ue se p ro p o rc io na p o r d e fe c to . Aunq ue Ja va utiliza la s misma s p a la b ra s c la ve q ue C++ p a ra ind ic a r e l c o ntro l d e a c c e so : p riva te , p ub lic y p ro te c te d , la inte rp re ta c ió n e s sig nific a tiva me nte d ife re nte e ntre C++ y Ja va . PRO G RAMACIO N II GUIA DE JAVA 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 16 La imp le me nta c ió n d e l ma ne jo d e e xc e p c io ne s e n Ja va e s má s c o mp le to y b a sta nte d ife re nte a l e mp le a d o e n C++. Al c o ntra rio q ue C++, Ja va no so p o rta la so b re c a rg a d e o p e ra d o re s. No o b sta nte , lo s o p e ra d o re s + y += so n so b re c a rg a d o s a uto má tic a me nte p a ra c o nc a te na r c a d e na s, o p a ra c o nve rtir o tro s tip o s a c a d e na s. Co mo e n C++, la s a p lic a c io ne s Ja va p ue d e n ha c e r lla ma d a s a func io ne s e sc rita s e n o tro s le ng ua je s, lla ma d a s mé to d o s na tivo s. No o b sta nte , lo s a p p le ts no p ue d e n ha c e r lla ma d a s a mé to d o s na tivo s. A d ife re nc ia d e C++, Ja va d isp o ne d e un siste ma inte rno d e g e ne ra c ió n d e d o c ume nta c ió n. Si se utiliza n c o me nta rio s e sc rito s d e d e te rmina d a fo rma , se p ue d e utiliza r la he rra mie nta ja va d o c p a ra g e ne ra r la d o c ume nta c ió n d e la a p lic a c ió n Ja va , e inc luso se p ue d e n p ro g ra ma r d o c le ts p a ra g e ne ra r tip o s e sp e c ífic o s d e d o c ume nta c ió n. Clases útiles Lo me jo r p a ra c o no c e r la s c la se s má s útile s e s p o ne rse a p ro g ra ma r. Pa ra a yud a r a l p rinc ip iod e e ste la rg o c a mino , se mue stra la sig uie nte ta b la : Arra ys (ve c to re s) d o ub le [] x = ne w d o ub le [100]; Arra ys b id ime nsio na le s (ma tric e s) int[][] y = ne w int[3][4]; int [][] b ={{1,2,3},{4,5,6}}; String (c a d e na s) p a ra c a d e na s inva ria b le s. String s = ne w String (...);/ / ve r d o c ume nta c ió n. Wra p p e rs So n la s c la se s d ise ña d a s p a ra c o mp le me nto d e lo s tip o s p rimitivo s y NO so n o b je to s. Lo s wra p p e rs so n Byte , Sho rt, Inte g e r, Lo ng , Flo at y Do ub le ja va .la ng .Ma th Pro p o rc io na mé to d o s sta tic p a ra re a liza r o p e ra c io ne s ma te má tic a s. Ma th.ra nd o m() Co le c c io ne s Una c o le c c ió n no e s má s q ue un c o njunto d e o b je to s q ue se a g rup a n, c ua lq uie r c o le c c ió n se id e ntific a p o r e l inte rfa z, Co lle c tio n So n c o le c c io ne s la s c la se s ja va .util.Ve c to r, PRO G RAMACIO N II GUIA DE JAVA 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 ja va .util.Ha shSe t, ... y ta mb ié n so n c o le c c io ne s lo s inte rfa c e s ja va .util.List, ja va .util.Ma p , ... -Co lle c tio n d e fine mé to d o s p a ra tra ta r una c o le c c ió n g e né ric a d e e le me nto s. -Se t Co le c c ió n d e e le me nto s q ue no a d mite re p e tic ió n. -So rte dSe t e s un Se t o rd e na d o se g ún un c rite rio e sta b le c id o . -List a d mite e le me nto s re p e tid o s y ma ntie ne e l o rd e n d e inse rc ió n. -Map Co njunto d e p a re s, c la ve / va lo r, sin re p e tic ió n d e c la ve s. -So rte dMap e s un Map o rd e na d o se g ún un c rite rio e sta b le c id o . -Ite rato r Inte rfa z d e so p o rte utiliza d o p a ra re c o rre r una c o le c c ió n y p a ra b o rra r e le me nto s. -ListIte rato r inte rfa z d e so p o rte q ue p e rmite re c o rre r List e n a mb o s se ntid o s. -Co mparab le inte rfa z d e so p o rte q ue d e c la ra e l mé to d o c o mpare To () q ue p e rmite o rd e na r la s d ife re nte s c o le c c io ne s se g ún un o rd e n na tura l. -Co mparato r inte rfa z d e so p o rte q ue d e c la ra e l mé to d o c o mpare () y se utiliza e n lug a r d e Co mparab le c ua nd o se d e se a o rd e na r o b je to s no e stá nd a r o sustituir a d ic ha inte rfa c e . ja va .a wt AWT e s Ab strac t Windo ws To o lkit y e s la p a rte d e Ja va q ue se o c up a d e c o nstruir inte rfa c e s g rá fic a s. Pa ra c o nstruir una inte rfa z, se ne c e sita n a l me no s tre s e le me nto s, un c o nte ne d o r, uno s c o mp o ne nte s y un mo d e lo d e e ve nto s. El c o nte ne d o r e s la ve nta na o p a rte d e la ve nta na d o nd e se sitúa n lo s c o mp o ne nte s. Lo s c o mp o ne nte s so n me nús, b o to ne s, b a rra s d e d e sp la za mie nto , c a ja s y á re a s d e te xto , e tc , e tc . El mo d e lo d e e ve nto s e s la he rra mie nta q ue no s p e rmite c o ntro la r la s a c c io ne s d e l usua rio so b re lo s c o mp o ne nte s. Ca d a ve z q ue e l usua rio re a liza una a c c ió n se p ro d uc e un e ve nto y AWT c re a un o b je to d e la c la se d e e ve nto c o rre sp o nd ie nte d e riva d a d e 17 PRO G RAMACIO N II GUIA DE JAVA 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 18 AWTEve nt. El e ve nto se rá p o ste rio rme nte g e stio na d o p o r un o b je to q ue d e b e c o no c e r e l c o mp o ne nte q ue ha re c ib id o e l e ve nto . Así se d ife re nc ia n d o s tip o s b á sic o s d e o b je to s, lo s q ue re c ib e n lo s e ve nto s, o e ve nt so urc e y lo s q ue ma ne ja n lo s e ve nto s e ve nt liste ne r. Lo s o b je to s e ve nt so urc e d e b e n "re g istra r" lo s o b je to s q ue ha b rá n d e g e stio na r sus e ve nto s. Lo s o b je to s e ve nt liste ne rs d e b e n imp le me nta r lo s mé to d o s a d e c ua d o s p a ra ma ne ja r un e ve nto d e te rmina d o y la fo rma má s se nc illa d e c o ntro la r e sto e s imp le me nta r e l inte rfa z Liste ne r d e la fo rma a d e c ua d a . e ve ntSo urc e O b je c t.a d d Eve ntListe ne r(e ve ntListe ne rO b j e c t); Thre a d s Lo s thre a d s o hilo s d e e je c uc ió n p e rmite n o rg a niza r lo s re c urso s d e l o rd e na d o r d e fo rma q ue p ue d a ha b e r va rio s p ro g ra ma s a c tua nd o e n p a ra le lo . Un hilo d e e je c uc ió n re a liza rá la s a c c io ne s ind ic a d a s e n e l mé to d o run(). p ub lic c la ss Simp le Thre a d e xte nd s Thre a d { p ub lic Simp le Thre a d (String na me ){ sup e r(na me ); } p ub lic vo id run(){ fo r(int i=0;i<10;i++) Syste m.o ut.p rintln("Este e s e l thre a d " + g e tna me ()); } } Exc e p tio ns Una e xc e p c ió n e s la he rra mie nta d e la q ue d isp o ne e l p ro g ra ma d o r p a ra c o ntro la r lo s p o sib le s e rro re s. Una e xc e p c ió n ind ic a q ue una situa c ió n inusua l se ha d a d o y e l c o ntro l d e l p ro g ra ma ha sid o a uto má tic a me nte tra nsfe rid o , thro wn, a una se c c ió n d e c ó d ig o e sp e c ia l d o nd e se va a ma ne ja r. La s e xc e p c io ne s e stá n o rg a niza d a s e n una je ra rq uía q ue p a rte d e la c la se java .lang .Exc e p tio n y lo s e rro re s tip ific a d o s e stá n o rg a niza d o s a p a rtir d e la c la se java .lang .Erro r. La d ife re nc ia e ntre e xc e p c io ne s y e rro re s so n q ue la s p rime ra s so n re c up e ra b le s mie ntra s q ue lo s e rro re s no lo so n. El ma ne jo d e e xc e p c io ne s se re a liza me d ia nte try/c a tc h/fina lly. La s e xc e p c io ne s se la nza n me d ia nte thro w , thro w ne w Exc e p tio n(). PRO G RAMACIO N II GUIA DE JAVA 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 19 Lenguaje Java Variables y Constantes Tip o s Primitivo s d e Va ria b le s b o o le a n, c ha r, b yte , sho rt, int, lo ng , flo a t y d o ub le Cre a c ió n Se c re a n ig ua l q ue e n C . p o r e je mp lo : int i; Inic ia liza c ió n Se inic ia liza n c o n una a sig na c ió n. int i = 1; Co nsta nte s e xiste n c o nsta nte s e n d e c ima l, e n o c ta l y e n he xa d e c ima l. int i = 123; / / d e c ima l int i = 0123; / / o c ta l int i = 0x123; / / he xa d e c ima l La s va ria b le s d e tip o s b á sic o s y la s c o nsta nte s so n utiliza d a s c o mo va ria b le s y c o nsta nte s tra d ic io na le s e n C . C ua nd o se utiliza una va ria b le d e un tip o b á sic o c o mo p a rá me tro e n un mé to d o , e sta va ria b le e s p o r va lo r. La s Va ria b le s q ue no so n d e tip o s b á sic o s, so n o b je to s. To d o s lo s o b je to s e n Ja va so n re fe re nc ia s. Una re fe re nc ia e s lo mismo q ue un p unte ro tra d ic io na l e n C o e n C++. La s insta nc ia s d e Ja va y lo s p unte ro s d e C tie ne n una d ife re nc ia y e s q ue una re fe re nc ia d e Ja va se p a sa a un mé to d o p o r va lo r. Esto sig nific a q ue d e ntro d e un mé to d o un o b je to p ue d e se r mo d ific a d o e n su inte rio r, p e ro e l p unte ro q ue lo re p re se nta , e s d e c ir, la re fe re nc ia no se p o d rá mo d ific a r p a ra q ue a p unte a o tro o b je to d ife re nte a unq ue e ste se a d e l mismo tip o . Strings Una c a d e na e n Ja va e s un o b je to d e l tip o String . Este tip o d e o b je to e s d ife re nte a lo s d e má s p o rq ue Ja va , a p e sa r d e ser un o b je to la s tra ta c o mo va ria b le s p rimitiva s. Po r e je mp lo , p a ra c o nstruirla s no e s ne c e sa rio ha c e r un ne w, sino q ue p ue d e n se r c re a d a s c o mo una va ria b le no rma l: String c a d e na = "mi c a d e na "; Sentencias La sinta xis y re g la s d e la c o nstruc c ió n d e se nte nc ia s so n la s misma s q ue e n C o C ++: PRO G RAMACIO N II GUIA DE JAVA 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 20 • Se a g rup a n p o r llave s, {,} • El á mb ito d e una d e c la ra c ió n e stá d e ntro d e su b lo q ue . La s p rinc ip a le s se nte nc ia s q ue p ro p o rc io na Ja va so n: if-e lse Es la se nte nc ia má s b á sic a p a ra c o ntro la r e l flujo d e un p ro g ra ma . if(Bo o le a n-e xp re ssio n) sta te me nt if(Boolean-expression) Sentencia else Sentencia re turn De vue lve e l re sulta d o d e un mé to d o . while while (Bo o le a n-e xp re ssio n) se nte nc ia d o -while while (Bo o le a n-e xp re ssio n) se nte nc ia fo r fo r(inic ia liza c ió n; Bo o le a n-e xp re ssio n; inc re me nto ) se nte nc ia La inic ia liza c ió n y e l inc re me nto p ue d e n inc luir má s d e una e xp re sió n unid a s p o r e l o p e ra d o r ",". p ub lic c la ss O p e ra d o rCo mma { p ub lic sta tic vo id ma in(String [] a rg s) { fo r(int i = 1, j = i + 10; i < 5;i++, j = i * 2) { Syste m.o ut.p rintln("i= " + i + " j= " + j); } } } b re a k y c o ntinue Bre a k ro mp e e l flujo no rma l d e un b uc le y p a sa a la sig uie nte se nte nc ia d e sp ué s d e l b uc le . Co ntinue ro mp e e l flujo no rma l d e l c ic lo d e l b uc le d o nd e se e je c ute y p a sa a e je c uta r la c o mp ro b a c ió n d e l b uc le d e nue vo . PRO G RAMACIO N II GUIA DE JAVA 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 21 switc h switc h(inte g ra l-se le c to r) { c a se inte g ra l-va lue 1 : se nte nc ia ; b re a k; c a se inte g ra l-va lue 2 : se nte nc ia ; b re a k; c a se inte g ra l-va lue 3 : se nte nc ia ; b re a k; c a se inte g ra l-va lue 4 : se nte nc ia ; b re a k; c a se inte g ra l-va lue 5 : se nte nc ia ; b re a k; / / ... d e fa ult: sta te me nt; } Expresiones Una e xp re sió n p ue d e se r una se nte nc ia o p a rte d e e lla q ue a l se r e va lua d a p ro d uc e un va lo r. El re sulta d o d e una e xp re sió n p ue d e se r un núme ro , un tip o d e re fe re nc ia . El tip o d e la e xp re sió n se c o no c e e n tie mp o d e c o mp ila c ió n y su re sulta d o e n tie mp o d e e je c uc ió n. Lo s o p e ra d o re s q ue utiliza Ja va so n lo s mismo s q ue e n C junto c o n e l o p e ra d o r "insta nc e o f" q ue no s sirve p a ra d e sc ub rir d e q ue tip o e s un o b je to . if( va ria b le insta nc e o f String ){...} En e ste e je mp lo se c o mp rue b a si variab le e s d e l tip o String . Cre a un mé to d o q ue c re e e inic ia lic e un a rra y unid ime nsio na l d e l tip o Do ub le . El ta ma ño d e l a rra y se rá d e te rmina d o p o r un p a rá me tro d e e ste mé to d o y lo s va lo re s q ue se utiliza n p a ra la inic ia liza c ió n se rá n d e ntro d e un ra ng o d e te rmina d o p o r d o s p a rá me tro s d e l mé to d o . C re a o tro mé to d o q ue mue stre p o r p a nta lla e l a rra y ya inic ia liza d o . Co mp rue b a q ue e sto s d o s mé to d o s func io na n d e ntro d e un p ro g ra ma a d ic io na l. Mo d ific a e l e je rc ic io a nte rio r p a ra utiliza r un a rra y b id ime nsio na l. Esc rib e una func ió n q ue re a lic e to d a s la s p o sib le s c o mp a ra c io ne s ló g ic a s e ntre d o s c a d e na s, inc luye nd o , e q ua ls(). Esc rib e un p ro g ra ma q ue g e ne re 25 núme ro s a le a to rio s y c o mp rue b a si e stá n p o r e nc ima o p o r d e b a jo d e un va lo r inte rme d io . Alma c e na lo s ma yo re s e n un a rra y y lo s me no re s e n o tro a rra y. Mue stra lo s re sulta d o s fina le s p o r p a nta lla . PRO G RAMACIO N II GUIA DE JAVA 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 22 EJERCICIOS RESUELTOS Sentencias Básicas (Condiciona les, Aritmeticas y Contadores) En lo s sig uie nte s e je rc ic io s, se utiliza n la s se nte nc ia s c o nd ic io na le s if- e lse , a d e má s d e se nte nc ia s a ritmé tic a s c o mo % (mo d ulo ), c o mp a ra tiva s (<,>,==,e tc ) y ta mb ie n se ha c e uso d e c o nta d o re s y se ntine la s. 1. Da d o un núme ro e nte ro y p o sitivo q ue se intro d uc e p o r te c la d o , d e te rmina r si e s p a r o imp a r. EXPLIC AC IO N DEL PRO G RAMA: Este p ro g ra ma le e un nume ro intro d uc id o p o r te c la d o y ve rific a si e l nume ro e s p a r o imp a r, ve rific a nd o si e l mo d ulo d e l nume ro e ntre 2 e s 0 o no . //programa realizado por Freddy Valda Sanchez import java.io.*; public class a1 { public static void main(String args[])throws IOException {BufferedReader in; in=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduzca un numero entero y positivo"); int a=Integer.parseInt(in.readLine()); if(a%2==0) System.out.println("El numero es par"); else System.out.println("El numero es impar"); } } 2. Da d o un núme ro e nte ro q ue se intro d uc e p o r te c la d o , d e te rmina r si e s p o sitivo , ne g a tivo o nulo . EXPLIC AC IO N DEL PRO G RAMA: El usua rio ing re sa un nume ro e nte ro y e l p ro g ra ma d e te rmina si e s p o sitivo , ne g a tivo o c e ro (nulo ). Utiliza simp le s c o mp a ra c io ne s y sa le e l me nsa je c o rre sp o nd ie nte . PRO G RAMACIO N II GUIA DE JAVA 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 23 //Programa realizado por Andrés Prudencio R. import java.io.*; public class a2 { public static void main (String args[])throws IOException { BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); System.out.println("Ingrese un numero entero: "); int d = Integer.parseInt(in.readLine()); if (d==0) System.out.print(" el numero es nulo "); else {if (d<0) System.out.print("El numero es negativo"); else System.out.print("El numero es positivo");} }} 3. Da d o un núme ro e nte ro q ue se intro d uc e p o r te c la d o , d e te rmina r si se e nc ue ntra e n e l inte rva lo c e rra d o 51 - 100. EXPLIC AC IÓ N DEL PRO G RAMA: Este p ro g ra ma no s p e rmite Ve rific a r q ue un núme ro ing re sa d o p o r te c la d o se e nc ue ntre e n e l inte rva lo c e rra d o [51,100] // Programa realizado por Sergio W. Ossio Marin import java.io.*; public class A_3 { public static void main (String args[])throws IOException { BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); int n; System.out.println("Ingrese el numero a verificar: "); n = Integer.parseInt(in.readLine()); if(n>=51&n<=100) System.out.println("El numero se encuentra en el intervalo cerrado [51-100]"); else System.out.println("El numero no se encuentra en el intervalo cerrado [51-100]"); }} PRO G RAMACIO N II GUIA DE JAVA 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 24 4. Da d o un núme ro e nte ro q ue se intro d uc e p o r te c la d o , d e te rmina r si e s ne g a tivo o sup e rio r a 100.EXPLIC AC IO N DEL PRO G RAMA: e l p ro g ra ma e n p rinc ip io d e fine la c la se a a 4 q ue c o ntie ne la func ió n p rinc ip a l ma in. Prime ro se le e un nume ro , q ue e s intro d uc id o p o r te c la d o y se ha c e n c o mp a ra c io ne s p a ra ve rific a r si e s ne g a tivo , ma yo r a 100 o e n e l inte rva lo 0-100. Fina lme nte se d e sp lie g a p o r p a nta lla la c o nd ic ió n d e d ic ho nume ro . //Programa realizado por Freddy Valda import java.io.*; public class aa4 { public static void main(String args[])throws IOException {BufferedReader in; in=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduzca un numero"); int a=Integer.parseInt(in.readLine()); if(a<0) System.out.println("El numero es negativo"); else if (a>100) System.out.println("El numero es mayor a 100"); else System.out.println("El numero esta en el intervalo de 0 a 100"); }} 5. Da d o un núme ro q ue se intro d uc e p o r te c la d o , si e s p o sitivo ve rific a r si se e nc ue ntra e n e l inte rva lo a b ie rto 60 – 90, d e lo c o ntra rio e mitir un me nsa je d e e rro r. EXPLIC AC IO N DEL PRO G RAMA: Este p ro g ra ma ve rific a si un nume ro ing re sa d o p o r e l te c la d o e s p o sitivo y si se e nc ue ntra e n un inte rva lo p re d e te rmina d o utiliza nd o se nte nc ia s if. //Programa realizado por Freddy Valda import java.io.*; public class a5 { public static void main(String args[])throws IOException {BufferedReader in; in=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduzca un numero"); PRO G RAMACIO N II GUIA DE JAVA 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 25 int a=Integer.parseInt(in.readLine()); if(a<61) System.out.println("ERROR"); else if (a>89) System.out.println("ERROR"); else System.out.println("El numero esta en el intervalo abierto 60-90"); } } 6. Una fue nte d e d a to s re g istra va ria s e d a d e s, la e d a d 0 ind ic a e l fina l d e l ing re so d e d a to s, re a lic e un p ro g ra ma p a ra d e te rmina r e l p ro me d io d e la s e d a d e s ing re sa d a s y a d e má s e l p o rc e nta je d e p e rso na s ma yo re s a lo s 50 a ño s. EXPLIC AC IÓ N DEL PRO G RAMA: Este p ro g ra ma no s p e rmite re g istra r va ria s e d a d e s c o n la info rma c ió n q ue una ve s ing re sa d a la e d a d 0 e sta no s ind ic a e l fina l d e l ing re so d e e d a d e s, c a lc ula nd o le p ro me d io d e la s e d a d e s y a d e má s e l p o rc e nta je d e e d a d e s ma yo re s a lo s 50 a ño s. // Programa realizado por Sergio W. Ossio Marin import java.io.*; public class B_1 { public static void main (String args []) throws IOException { BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); double m = 1, aux = 0, n = 0, o = 0; System.out.println ("La edad 0 indica el final de ingreso de edades"); while (m != 0) { System.out.print ("Ingrese una edad "); m = Integer.parseInt (in.readLine ()); n++; aux = aux + m; if (m > 50) { o++; } } double s = (o * 100) / (n - 1); double aux2 = aux / (n - 1); System.out.println ("El promedio es " + aux2 ); PRO G RAMACIO N II GUIA DE JAVA 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 26 System.out.println ("El porcentaje de personas mayores a los 50 a*os es de: " + s );}} 7. O b te ne r e l to ta l e n b o no s q ue p a g a la e mp re sa a sus e mp le a d o s, a d e má s d e se a c o no c e r c ua nto s e mp le a d o s tie ne n má s d e 20 a ño s d e a ntig üe d a d y e l p o rc e nta je q ue re c ib e n e sto s, re sp e c to a l to ta l e n b o no s q ue p a g a la e mp re sa . (Utiliza r c e ntine la ). EXPLIC AC IO N DEL PRO G RAMA: El p ro g ra ma p id e le e r e l minimo d e a ño s q ue un tra b a ja d o r d e b e tra b a ja r c o mo minimo p a ra re c ib ir un b o no y la c a ntid a d d e a ño s q ue tra b a ja ro n c a d a tra b a ja d o r (ha sta 100 tra b a ja d o re s) p a ra d e sp ué s me d ia nte o p e ra c io ne s a ritmé tic a s, mo stra r e n p a nta lla lo q ue se re q uie re e n e l p ro b le ma . //Realizado por Andres Prudencio R import java.io.*; public class b2 { public static void main(String args[])throws IOException {BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); int[]e=new int[100]; int cb,cv; cb=0;cv=0; System.out.println("Indicar el numero de anios que un empleado debera haber trabajado como minimo para recibir el bono "); int a=Integer.parseInt(in.readLine()); System.out.println("Ingresar el numero de anios trabajados para cada empleado: (0 termina la entrada de datos)"); int i=1; e[0]=1; while (e[i-1]!=0) { System.out.println("Empleado "+(i)+": "); e[i]=Integer.parseInt(in.readLine()); if (e[i]>a) {cb++; } if (e[i]>20) {cv++; } i++;} if (cb==0) System.out.println("Ningun empleado recibira bono"); else {System.out.println("La empresa pagara "+cb+" bonos"); PRO G RAMACIO N II GUIA DE JAVA 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 27 System.out.println( ((cv*100)/cb)+"% de todos los empleados que recibiran el bono han trabajado mas de veinte anios");} }} 8. Le e r una c ie rta c a ntid a d d e e sta tura s (d e te ng a e l p ro c e so me d ia nte un c e ntine la ) y d e te rmine e l p ro me d io d e e sta tura s p o r d e b a jo d e 1,60 mts. y e l p ro me d io d e e sta tura s e n g e ne ra l. EXPLIC AC IO N DEL PRO G RAMA: Este p ro g ra ma le e e sta tura s ha sta e nc o ntra r un 0 (e l se ntine l), lue g o sa c a un p ro me d io d e la s e sta tura s b a jo lo s 1.60m y un p ro me d io d e to d a s la s e sta tura s. //Realizado por Ignacio Salgado Faller import java.io.*; public class b3 { public static void main(String arg[])throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); double []x=new double[100]; double a=1,pb=0,pg=0,nb=0; int i =0; System.out.println("Introduzca las estaturas (0 para terminar):"); a=(Float.valueOf (in.readLine ())).floatValue (); if (a>=0) {x[i]=a; i++;} while (a!=0) {a=(Float.valueOf (in.readLine ())).floatValue (); x[i] =a; pg=pg+x[i]; if (x[i]<1.6) {pb=pb+x[i]; nb++;} i++;} i=i-2; System.out.println("El promedio de estaturas menores a 1.60m es: "+(pb/nb)); System.out.println("El promedio general de estaturas es: "+(pg/i)); } } 9. Co nta r una lista d e n núme ro s q ue ing re sa n p o r te c la d o , re c ha za nd o e l núme ro 0, lue g o o b te ng a e l to ta l d e núme ro s p o sitivo s q ue ing re sa ro n, to ta l d e ne g a tivo s y e l p ro me d io d e c a d a uno . PRO G RAMACIO N II GUIA DE JAVA 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 28 EXPLIC AC IÓ N DEL PRO G RAMA: Este p ro g ra ma no s p e rmite ing re sa r n núme ro s p o r te c la d o re c ha za nd o e l núme ro 0 y no s c a lc ula ra e l to ta l d e núme ro s p o sitivo s ing re sa d o s p o r te c la d o y su p ro me d io a la ve z d e te rmina ra lo mismo c o n lo s núme ro s ne g a tivo s // Programa realizado por Sergio W. Ossio Marin import java.io.*; public class B_9 { public static void main (String args []) throws IOException { BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in));double n, m, p = 0, t = 0, s = 0, s1 = 0, prop, prone; System.out.println ("Ingrese la cantidad de numeros a evaluar "); n = (Double.valueOf (in.readLine ())).doubleValue (); for (int i = 0 ; i < n ; i++) { System.out.println ("Ingrese un numero"); m = (Double.valueOf (in.readLine ())).doubleValue (); if (m == 0) System.out.println ("vuelva a ingresar un numero:"); else if (m > 0) { p++; s = s + m; } if (m < 0) {t++; s1 = s1 + m; }} prop = s / p; prone = s1 / t; System.out.println ("El total de numeros positivos es:" + p); System.out.println ("El total de numeros negativos es:" + t); System.out.println ("El promedio de numeros positivos es: "+prop); System.out.println ("El promedio de numeros negativos es:" + prone); }} PROBLEMAS PROPUESTOS 1. Esc rib ir un p ro g ra ma q ue p id a e l tip o d e c a mb io p a ra q ue d a d a una c a ntid a d e n Bo livia no s y la c o nvie rta e n Do la re s y vic e ve rsa . PRO G RAMACIO N II GUIA DE JAVA 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 29 2. Esc rib ir un p ro g ra ma q ue p id a una ho ra e n se g und o s y la sa q ue p o r p a nta lla e n e l fo rma to “ hh:mm:ss” , e s d e c ir ho ra s, minuto s y se g und o s 3. Inte rc a mb ia r e l c o nte nid o d e d o s va ria b le s. 4. De te rmina r si un a ño e s b isie sto (ve rific a r la s c o nd ic io ne s) 5. Le e r un p a r o rd e na d o y d e te rmina r e n q ué c ua d ra nte se e nc ue ntra . 6. Co nve rtir g ra d o s Ce ntig ra d o s e n g ra d o s Fa hre nhe it 7. Le e r tre s núme ro s d ife re nte s (e la b o ra r la va lid a c ió n d e d a to s) y d e te rmina r e l va lo r inte rme d io (e l nume ro q ue no e s ma yo r ni me no r). 8. Re a liza r un p ro g ra ma c o n e l c ua l se le a la ho ra , lo s minuto s y se g und o s p a ra lue g o mo stra r su e q uiva le nte e n se g und o s. 9. Da d o un nume ro x d e te rmina r si e s múltip lo d e o tro nume ro y. 10. Da d o s tre s núme ro s, d e te rmina r e l ma yo r y me no r. PRO G RAMACIO N II GUIA DE JAVA 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 30 Ciclos y Series En lo s sig uie nte s e je rc ic io s, se utiliza n c ic lo s, me d ia nte la s se nte nc ia s fo r, while , d o - while , ta mb ié n se d e sa rro lla n se rie s d e núme ro s. 1. Re a liza r un p ro g ra ma q ue le a un nume ro , lue g o d e sp le g a r e sa c a ntid a d d e *. EXPLIC AC IÓ N DEL PRO G RAMA: Este p ro g ra ma no s p e rmite d e sp le g a r (*) n ve c e s utiliza nd o un p e q ue ño c ic lo fo r. // Programa realizado por Sergio W. Ossio Marin import java.io.*; public class A_67 { public static void main (String args []) throws IOException { BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); int n; System.out.println ("Ingrese un numero"); n = Integer.parseInt (in.readLine ()); System.out.println ("La cantidad de * a desplegar son:"+n); for (int i = 0 ; i < n ; i++) {System.out.print("-*-");}}} 2. Da d o un va lo r n y o tro va lo r y, d e sp le g a r e n p a nta lla núme ro s c o rre la tivo s d e sd e 1 ha sta n, re e mp la za nd o p o r un * c a d a ve z q ue c o rre sp o nd a d e sp le g a r un núme ro múltip lo d e y. EXPLIC AC IO N DEL PRO BLEMA: Se p id e un nume ro e l c ua l se rá la c a ntid a d d e té rmino s p a ra la se rie c o rre la tiva . Po ste rio rme nte se p id o o tro nume ro c uyo s múltip lo s no se rá n mo stra d o s, p e ro se mo stra ra un a ste risc o e n ve z d e e so s núme ro s. Simp le me nte se usa un c ic lo fo r p a ra a na liza r c a d a núme ro . //Realizado por Andres Prudencio R. import java.io.*; public class b6 { public static void main(String args[])throws IOException {BufferedReader in; PRO G RAMACIO N II GUIA DE JAVA 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 31 in = new BufferedReader (new InputStreamReader (System.in)); System.out.println("Ingresar el ultimo numero de la serie "); int n=Integer.parseInt(in.readLine()); System.out.println("Ingresar el numero cuyos multiplos no seran mostrados"); int y=Integer.parseInt(in.readLine()); for (int i=1;n>=i;i++) { if (i%y==0) System.out.print("*"+" "); else System.out.print(i+" "); } }} 3. Pro g ra ma q ue le a un núme ro n lue g o d e sp le g a r la ta b la d e multip lic a r d e e se núme ro . Re a liza r e l p ro g ra ma : a ) utiliza nd o fo r b ) Utiliza nd o while c ) utiliza nd o d o while . EXPLIC AC IO N DEL PRO G RAMA: De sp lie g a la ta b la d e multip lic a r tre s ve c e s d e un nume ro n usa nd o c ic lo s fo r, while , d o while usa nd o la misma c o nd ic ió n: 10>=j d o nd e j e s e l multip lic a d o r. //Realizado por Andres Prudencio R import java.io.*; public class b10 { public static void main(String args[])throws IOException {BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); System.out.println("Ingresar el numero cuya tabla de multiplicar sera mostrada"); int n=Integer.parseInt(in.readLine()); int j=1; for(j=1;10>=j;j++) {System.out.println(n+"*"+j+"="+n*j);} System.out.println("----------------------------------------------"); j=1; while(10>=j) { System.out.println(n+"*"+j+"="+n*j); j++; } System.out.println("----------------------------------------------"); j=1; do { System.out.println(n+"*"+j+"="+n*j); j++; PRO G RAMACIO N II GUIA DE JAVA 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 32 } while(10>=j); }} 4. De sp le g a r lo s núme ro s d e x ha sta z, d o nd e x <=z, a ) utiliza nd o fo r̀ s b ) Utiliza nd o while c ) utiliza nd o d o while . EXPLIC AC IO N DEL PRO G RAMA: Este p ro g ra ma d e sp lie g a una se rie d e núme ro s d e sd e x ha sta z, sig ue p id ie nd o lo s va lo re s ha sta q ue se c ump la q ue x<=z. Se utiliza n to d o s lo s tip o s p e d id o s e n e l e nunc ia d o . //programa realizado por Ignacio Salgado Faller import java.io.*; public class b11 { public static void main(String args[])throws IOException {BufferedReader in; in=new BufferedReader(new InputStreamReader(System.in)); int x=1,z=0,opc=5; int num=0; while (x>z) {System.out.println("Ingresar el valor de x y z (x debe ser<=z):"); x=Integer.parseInt(in.readLine()); z=Integer.parseInt(in.readLine()); } while (opc>3||opc<1) {System.out.println("1. Realizar desplegamiento mediante for"); System.out.println("2. Realizar desplegamiento mediante while"); System.out.println("3.Realizar el desplegamiento mediante do-while"); System.out.println("Ingresar su opcion:"); opc=Integer.parseInt(in.readLine()); } switch (opc) {case 1:System.out.println("Los numeros son: "); for (int i=x;i<=z;i++) {System.out.print(i+" ");} break; case 2: System.out.println("Los numeros son: ");int i=x; while (i<=z) {System.out.print(i+" "); i++;} break; case 3:System.out.println("Los numeros son: ");int j=x; do {System.out.print(j+" "); j++;} PRO G RAMACIO N II GUIA DE JAVA 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 33 while (j<=z); break; } } } 5. De sa rro lla r un p ro g ra ma q ue , utiliza ndo una func ió n mue stre e n pa nta lla N fila s de núme ro s na tura le s impa re s, de lo s sig uie nte s núme ro s y e nla fo rma sig uie nte : 1 1 3 1 3 5 . . . . . . N (núme ro d e fila s) se d e b e ind ic a r po r te c la d o . EXPLIC AC IO N DEL PRO G RAMA: El usua rio ing re sa e l nume ro d e fila s a mo stra r, a q ue l nume ro e s p a rá me tro d e la func ió n se rie la c ua l e s lla ma d a d e sd e e l mé to d o ma in d e la c la se a 6. La func ió n se rie e s una func ió n vo id q ue imp rime la se rie . No ta : la func ió n se rie d e b e e sta r a fue ra d e l mé to d o ma in, d e ntro d e la c la se a 6 //Programa realizado por Andrés Prudencio R. import java.io.*; public class a6 { public static void main (String args[])throws IOException { BufferedReader in; in=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese el numero de filas "); int d=Integer.parseInt(in.readLine()); serie(d); public static void serie(int d) {int a=1,b=2; for (int f=1;d>=f;f++) {System.out.println(""); for (int c=1;f*2>=c;c++) { {if ((c%2)!=0) System.out.print(c+" "); } }}}} PRO G RAMACIO N II GUIA DE JAVA 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 34 6. Me d ia nte e l uso d e una func ió n, e sc rib ir un p ro g ra ma p a ra suma r lo s p rime ro s N núme ro s na tura le s. El re sulta d o d e sp le g a r e n la func ió n p rinc ip a l. EXPLIC AC IÓ N DEL PRO G RAMA: Este p ro g ra ma no s p e rite suma r n núme ro s ing re sa d o s p o r te c la d o y ta mb ié n no s mue stra la suma to ta l // Programa realizado por Sergio W. Ossio Marin import java.io.*; public class A_7 { public static void main (String args[])throws IOException { BufferedReader in; in = new BufferedReader (new InputStreamReader (System.in)); int m,n,c=0; System.out.println("La cantidad de numeros a sumar : "); n = Integer.parseInt(in.readLine()); for (int i=0;i<n;i++) { System.out.println("Ingrese un numero "); m = Integer.parseInt(in.readLine()); c=c+m; } System.out.println("La suma de los números ingresados es:"+c); }} 7. Me d ia nte una func ió n d e sp le g a r e n p a nta lla N núme ro s na tura le s, e n la sig uie nte fo rma : 1 23 456 ………… EXPLIC AC IO N DEL PRO G RAMA: Este p ro g ra ma g e ne ra la se c ue nc ia mo stra d a a rrib a utiliza nd o fo r’ s. //Programa realizado por Ignacio Salgado Faller import java.io.*; public class a8 {public static void main (String args[])throws IOException PRO G RAMACIO N II GUIA DE JAVA 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 35 {BufferedReader in; in=new BufferedReader (new InputStreamReader (System.in)); int c=1; System.out.println("Ingrese el numero de filas: "); int num = Integer.parseInt(in.readLine()); System.out.println("La cadena es: "); for (int i=1;i<=num;i++) {System.out.println(""); for (int j=1;j<=i;j++) {System.out.print(c+" "); c=c+1;}} } } 8. Da d a la sig uie nte suc e sió n d e núme ro s: 2, 4, 8, 6, 36, 72, 70, 4900, 9800,... me d ia nte e l uso d e func io ne s, mo stra r e n p a nta lla lo s té rmino s d e e sta se rie y c a lc ula r la suma d e N (N se ind ic a p o r te c la d o ) e le me nto s, e s d e c ir, SUMA=2+4+8+6+..... EXPLIC AC IO N DEL PRO G RAMA: El p ro g ra ma c a lc ula la suma d e la se rie a nte rio r p a ra n te rmino s. Pa ra e llo , g e ne ra c a d a uno d e lo s va lo re s d e d ic ha se rie ha sta e l limite ing re sa d o p o r e l usua rio . La lo g ic a q ue sig ue la se rie e s d e e le va r a l c ua d ra d o , multip lic a r p o r d o s y re sta r d o s. //Programa realizado por Freddy Valda Sanchez import java.io.*; public class a9 { public static void main(String args[])throws IOException {BufferedReader in; int s=0,a=2; in=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduzca el limite N"); int n=Integer.parseInt(in.readLine()); for(int i=0;i<n;) { System.out.println(a); s=s+a; i++; a=op1(a); if(i==n) break; else {System.out.println(a); s=s+a; PRO G RAMACIO N II GUIA DE JAVA 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 36 a=op2(a); i++; } if(i==n) break; else {System.out.println(a); s=s+a; a=op3(a); i++; } } System.out.println("La suma de la serie es: "+s); } public static int op1 (int b) {return b*b;} public static int op2 (int b) {return b*2;} public static int op3 (int b) {return b-2;} } 9. De sa rro lla r un p ro g ra ma q ue , utiliza ndo func io ne s, se de sp lie g ue e n pa nta lla N té rmino s de la se rie : 1, 3, 1, 1, 4, 1, 1, 1, 5, 1 , 1, 1, 1, 6, . . . EXPLIC AC IO N DEL PRO G RAMA: El usua rio ing re sa e l nume ro d e té rmino s a mo stra r, a q ue l nume ro e s p a rá me tro d e la func ió n se rie la c ua l e s lla ma d a d e sd e e l mé to d o ma in d e la c la se a 10. La func ió n se rie e s una func ió n vo id q ue imp rime la se rie . //Programa realizado por Andrés Prudencio R. import java.io.*; public class a10 { public static void main (String args[])throws IOException { BufferedReader in; in=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Ingrese el numero de terminos "); int n=Integer.parseInt(in.readLine()); serie(n); } public static void serie(int n) {int a=3,k=0,ct=1; if(n<=0) System.out.print("el numero de terminos debe ser mayor a cero"); else PRO G RAMACIO N II GUIA DE JAVA 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 {if (n==2) System.out.print("1,3,"); else System.out.print("1,"); } while(ct<=n-2) { System.out.print(a+","); ct++; k=a-1; for (int j=1;k>=j;j++) {System.out.print("1,"); ct++; if (ct==n) {j=k*2;} } a++; } System.out.print("..."); }} 10. De sa rro lla r un p ro g ra ma , utiliza nd o func io ne s, p a ra c a lc ula r la sig uie nte suma : Ind ic a r e l va lo r d e x (0<=x<= 1) p o r te c la d o y suma r té rmino s mie ntra s e sto s se a n ma yo re s a 10-8. EXPLIC AC IO N DEL PRO G RAMA: e l p ro g ra ma c a lc ula la suma d e la se rie a nte rio r, p a ra e llo se d e fine una func ió n c o n re to rno q ue c a lc ula e l fa c to ria l d e un nume ro , una va ria b le sum y una va ria b le x q ue e s intro d uc id a p o r te c la d o . Fina lme nte , e n un c ic lo while se g e ne ra n c a d a uno d e lo s té rmino s d e la se rie y se va n suma nd o , d e sp ué s se d e sp lie g a la suma d e la se rie . //Programa realizado por Freddy Valda import java.io.*; public class a17 37 PRO G RAMACIO N II GUIA DE JAVA 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 { public static void main(String args[])throws IOException {BufferedReader in; double sum=0,n=1; int k=1; in = new BufferedReader (new InputStreamReader (System.in)); System.out.println("Ingrese el valor de x (0<=x<=1)"); double x = (Double.valueOf(in.readLine())).doubleValue(); while (n>0.00000001) {sum=sum+n; n=(Math.pow(x,k)/fact(k)); k=k+1; } System.out.println("La suma de la serie es :"+ sum); } public static double fact(double k) {double s=1; for(double i=k;i>0;i--) {s=s*i;} return s;} } 11. De sa rro lla r un p ro g ra ma , utiliza ndo func io ne s, pa ra c a lc ula r la sig uie nte suma
Compartir