Logo Studenta

Ejercicios_de_Java

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados

289 pag.
tesis-n0593-Falcon

UNCA

User badge image

Contenidos y mucho más

69 pag.
ESTADOS-DE-CUENTA-NOVIEMBRE-2019-0

User badge image

Todo para que Aprendas

141 pag.
Trans-Numeros-EN-JAVA

Albert Einstein

User badge image

FREDY PICHIHUA