You are on page 1of 60

2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?

id=10411

Introduccin a la programacin.

Casoprctico

LaevolucindeInternetydelasnuevastecnologas,ascomolasdiferentesposibilidadespara
establecer nuevas lneas de negocio para la empresa BK Programacin, han hecho que Ada
hayadecididoabrirunavadeinnovacin.Paraello,suempresadeberrealizareldesarrollode
sus aplicaciones a travs de lenguajes y tcnicas de programacin modernos, aunque con una
eficienciayflexibilidadcontrastadas.

Mara y Juan, ayudados y orientados por Ada, recordarn y ampliarn sus conocimientos
relacionadosconlaprogramacin,permitindolescrearsoftwarequepuedaadaptarseanuevas
situaciones,comoelfuncionamientoendiferentesplataformas(PDA,Mviles,Web,etc.)olainteraccinconbasesdedatos.
Todoellosinperderdevistadedndepartenyhaciadndequierenredirigirsusesfuerzos.

Estasinnovaciones,juntoalapredisposicinparaadaptarseyevolucionarqueBKProgramacinestpotenciandoentodas
sus reas, repercutirn en una mayor capacidad de respuesta ante las necesidades de sus posibles clientes. En definitiva,
conseguirmayorcompetitividad.

Cuntasaccionesdelasquehasrealizadohoy,creesqueestnrelacionadasconlaprogramacin?

Hagamos un repaso de los primeros instantes del da: te ha despertado la alarma de tu telfono mvil o radio
despertador,haspreparadoeldesayunoutilizandoelmicroondas,mientrasdesayunabashasvistouodolasltimas
noticiasatravsdetureceptordetelevisindigitalterrestre,tehasvestidoypuedequehayasutilizadoelascensor
parabajaralportalysaliralacalle,etc.Quiznoesnecesarioquecontinuemosmsparadarnoscuentadequecasi
todoloquenosrodea,enalgunamedida,estrelacionadoconlaprogramacin,losprogramasyeltratamientode
algntipodeinformacin.

El volumen de datos que actualmente manejamos y sus innumerables posibilidades de tratamiento constituyen un
vastoterritorioenelquelosprogramadorestienenmuchoquedecir.
RdigerWlk
En esta primera unidad realizaremos un recorrido por los conceptos fundamentales de la programacin de
aplicaciones.Iniciaremosnuestrocaminoconociendoconquvamosatrabajar,qutcnicaspodemosemplearyquesloquepretendemos
conseguir.Continuandoconelanlisisdelasdiferentesformasdeprogramacinexistentes,identificaremosqufasesconformaneldesarrollo
de un programa, avanzaremos detallando las caractersticas relevantes de cada uno de los lenguajes de programacin disponibles, para
posteriormente, realizar una visin general del lenguaje de programacin Java. Finalmente, tendremos la oportunidad de conocer con qu
herramientaspodramosdesarrollarnuestrosprogramas,escogiendoentreunadeellasparaponernosmanosalaobra,utilizandoellenguaje
Java.

MaterialesdesarrolladosyactualizadosporelprofesoradodelaJuntadeAndaluca

Avisolegal

1. Programas: buscando una solucin.

Casoprctico

Ada conoce bien lo que significa tener que llevar a cabo el proceso completo de creacin de
softwareysabeque,enocasiones,noseledalaimportanciaquedeberaalasfasesinicialesde
este proceso. Quiere que Juan, que desarrolla programas casi sin darse cuenta, recuerde las
ventajas que aporta un buen anlisis inicial de los problemas a solucionar y que no aborde el
desarrollodesusprogramassentndosedirectamenteanteelordenadorateclearcdigo.

JuanlecomentaaAdayaMara:

La verdad es que cuando conoces bien un lenguaje de programacin crees que puedes hacer cualquier programa
directamente sobre el ordenador, pero al final te das cuenta de que deberas haberte parado a planificar tu trabajo. Muchas
vecestienesque volver atrs, recodificar y en ocasiones, rehacer granpartedelprogramaporqueloquetienesnoestbien
planteado.

Mara,quepermaneceatentaaloquedicenAdayJuan,quiereaprenderbiendesdeelprincipioytendrlaventajadetenera
suladoadosexpertos.

Generalmente, la primera razn que mueve a una persona hacia el aprendizaje de la programacin es utilizar el
ordenadorcomoherramientapararesolverproblemasconcretos.Comoenlavidareal,labsquedayobtencinde
una solucin a un problema determinado, utilizando medios informticos, se lleva a cabo siguiendo unos pasos
fundamentales.Enlasiguientetablapodemosverestasanalogas.

Resolucindeproblemas

Enlavidareal... EnProgramacin...

Observacindela Anlisisdelproblema:requierequeelproblemaseadefinidoycomprendido
situacinoproblema. claramenteparaquepuedaseranalizadocontododetalle.
Filosofiasfilosoficas

Pensamosenunao
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 1/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Pensamosenunao
Diseoodesarrollodealgoritmos:procedimientopasoapasoparasolucionarel
variasposibles
problemadado.
soluciones.

Aplicamoslasolucin Resolucindelalgoritmoelegidoenlacomputadora:consisteenconvertirel
queestimamosms algoritmoenprograma, ejecutarloycomprobarquesolucionaverdaderamenteel
adecuada. problema.

Quvirtudesdeberatenernuestrasolucin?

Correccinyeficacia:siresuelveelproblemaadecuadamente.
Eficiencia:silohaceenuntiempomnimoyconunusoptimodelosrecursosdelsistema.

Paraconseguirlo,cuandoafrontemoslaconstruccindelasolucintendremosquetenerencuentalossiguientesconceptos:

1.Abstraccin:setrataderealizarunanlisisdelproblemaparadescomponerloenproblemasmspequeosydemenorcomplejidad,
describiendocadaunodeellosdemaneraprecisa.Divideyvencers,esunafilosofageneralpararesolverproblemasydeaquque
sunombrenosloformepartedelvocabularioinformtico,sinoquetambinseutilizaenmuchosotrosmbitos.
2.Encapsulacin:consisteenocultarlainformacinparapoderimplementarladediferentesmanerassinqueestoinfluyaenelrestode
elementos.
3.Modularidad:estructuraremoscadaparteenmdulosindependientes,cadaunodeellostendrsufuncincorrespondiente.

Citasparapensar

Elcomienzodelasabiduraparauningenierodesoftwareesreconocerladiferenciaentrehacerqueunprograma
funcioneyconseguirquelohagacorrectamente. RogerPressman

1.1. Algoritmos y programas.


Despusdeanalizarendetalleelproblemaasolucionar,hemosdedisearydesarrollarelalgoritmoadecuado.Pero,quesunalgoritmo?

Algoritmo:secuenciaordenadadepasos,descritasinambigedades,queconducenalasolucindeunproblemadado.

Losalgoritmossonindependientesdeloslenguajesdeprogramacinydelascomputadorasdondeseejecutan.
Un mismo algoritmo puede ser expresado en diferentes lenguajes de programacin y podra ser ejecutado en
diferentes dispositivos. Piensa en una receta de cocina, sta puede ser expresada en castellano, ingls o
francs,podrasercocinadaenfognovitrocermica,poruncocinerooms,etc.Peroindependientementede
todasestascircunstancias,elplatoseprepararsiguiendolosmismospasos.

Ladiferenciafundamentalentrealgoritmoyprogramaesque,enelsegundo,lospasosquepermitenresolverel
problema,debenescribirseenundeterminadolenguajedeprogramacinparaquepuedanserejecutadosen
elordenadoryasobtenerlasolucin.

Loslenguajesdeprogramacinsonslounmedioparaexpresarelalgoritmoyelordenadorunprocesadorparaejecutarlo.Eldiseodelos
algoritmos ser una tarea que necesitar de la creatividad y conocimientos de las tcnicas de programacin. Estilos distintos, de distintos
programadoresalahoradeobtenerlasolucindelproblema,darnlugaraalgoritmosdiferentes,igualmentevlidos.

Enesencia,todoproblemasepuededescribirpormediodeunalgoritmoylascaractersticasfundamentalesquestosdebencumplirson:

Debeserprecisoeindicarelordenderealizacinpasoapaso.
Debeestarbiendefinido,siseejecutadosomsveces,debeobtenerelmismoresultadocadavez.
Debeserfinito,debetenerunnmerofinitodepasos.

Pero cuando los problemas son complejos, es necesario descomponer stos en subproblemas ms simples y, a su vez, en otros ms
pequeos.Estasestrategiasrecibenelnombrede diseodescendenteo diseomodular(topdowndesign).Estesistemasebasa
enellemadivideyvencers.

Pararepresentargrficamentelosalgoritmosquevamosadisear,tenemosanuestradisposicindiferentesherramientasqueayudarna
describir su comportamiento de una forma precisa y genrica, para luego poder codificarlos con el lenguaje que nos interese. Entre otras
tenemos:

Diagramasdeflujo:estatcnicautilizasmbolosgrficosparalarepresentacindelalgoritmo.Sueleutilizarseenlasfasesdeanlisis.
Pseudocdigo: esta tcnica se basa en el uso de palabras clave en lenguaje natural, constantes, variables, otros objetos,
instrucciones y estructuras de programacin que expresan de forma escrita la solucin del problema. Es la tcnica ms utilizada
actualmente.
Tablasdedecisin:Enunatablasonrepresentadaslasposiblescondicionesdelproblemaconsusrespectivasacciones.Sueleseruna
tcnicadeapoyoalpseudocdigocuandoexistensituacionescondicionalescomplejas.

Debesconocer
Acontinuacinteofrecemosdosenlacesmuyinteresantes:

Enelprimervdeopuedesverloselementosgrficosfundamentalesqueseutilizanparalageneracindediagramasde
flujo.
Enelsegundovdeoserealizalaconstruccindeundiagramadeflujoconunaherramientagrficaysutransformacina
pseudocdigo.
Resumentextualalternativo Resumentextualalternativo

Parasaberms
Siquieresunprogramapararealizarpseudocdigos,acontinuacintienesunenlacedondepuedesbajarteelprogramaPSeInt.

IntroduccinalaprogramacinconPSeInt

EnelsiguientevdeotienesunejemplodeusodelprogramaPSeInt.

IntroduccinalaProgramacinconPSInt

1. Introduccin a la programacin con PSeInt.


http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 2/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
1. Introduccin a la programacin con PSeInt.

ResumendelvdeoIntroduccinalaProgramacinconPSInt

Autoevaluacin
Rellenaelhuecoconelconceptoadecuado:
Alospasosquepermitenresolverelproblema,escritosenunlenguajedeprogramacin,paraquepuedanserejecutadosenel
ordenadoryasobtenerlasolucin,selesdenomina: .
Enviar

Si estos pasos estuvieran descritos en un lenguaje genrico independiente de la mquina y del lenguaje de
programacin,estaramoshablandodealgoritmos.

2. Paradigmas de la programacin.

Casoprctico

Ada comenta con Juan y Mara los distintos enfoques para el desarrollo de programas que han
existidoalolargodelahistoriadelaprogramacin,destacandoquetodosvanatenerquerenovarsu
forma de pensar, si quieren comenzar a utilizar un lenguaje moderno que les permita construir
programasadaptadosalasnuevasnecesidadesdesusclientes.

Cuntasformasexistendehacerlascosas?

Supongoqueestarspensando:variasoincluso,muchas.

Perocuandoseestableceunpatrnparalacreacindeaplicacionesnosestamosacercandoalsignificadode
lapalabraparadigma.

barraquito

Paradigmadeprogramacin:

Esunmodelobsicoparaeldiseoylaimplementacindeprogramas.Estemodelodeterminarcmoserelprocesodediseo
ylaestructurafinaldelprograma.

Elparadigmarepresentaunenfoqueparticularofilosofaparalaconstruccindesoftware.Cadaunotendrsusventajaseinconvenientes,
sermsomenosapropiado,peronoescorrectodecirqueexistaunomejorquelosdems.

Puedesaccederaunresumendelosdiferentesparadigmasdeprogramacinenelsiguienteenlace:

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 3/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Puedesaccederaunresumendelosdiferentesparadigmasdeprogramacinenelsiguienteenlace:
Resumentextualalternativo
Como habrs podido apreciar, existen mltiples paradigmas, incluso puede haber lenguajes de programacin que no se clasifiquen
nicamentedentrodeunodeellos.Unlenguajecomo Smalltalkesunlenguajebasadoenelparadigmaorientadoaobjetos.Ellenguajede
programacin Scheme,encambio,soportasloprogramacinfuncional. Pythonsoportamltiplesparadigmas.

Parasaberms
Te proponemos el siguiente enlace en el que encontrars informacin adicional sobre los diferentes paradigmas de
programacin.

Paradigmasdeprogramacinylenguajes

Culeselobjetivoquesebuscaconlaaplicacindelosdiferentesenfoques?

Fundamentalmente:

reducirladificultadparaelmantenimientodelasaplicaciones,
mejorarelrendimientodelprogramadory,engeneral,
mejorarlaproductividadycalidaddelosprogramas.

Autoevaluacin
EnquparadigmadeprogramacinpodramosenmarcarellenguajedeprogramacinJava?

ProgramacinEstructurada.

ProgramacinDeclarativa.

ProgramacinOrientadaaObjetos.

No,Javapermitetrabajarconunafilosofamspotentequelaprogramacinestructurada.

No,laprogramacindeclarativaseencargadedescribirelproblemaynolassentenciasparasusolucin.

S,Javaemplealafilosofadeverelmundocomoobjetosquetienenpropiedadesymtodosquelespermiteninteractuar
entreellos.

Solucin

1.Incorrecto
2.Incorrecto
3.Opcincorrecta

3. Fases de la programacin.
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 4/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
3. Fases de la programacin.

Casoprctico

Juan pregunta a Ada cmo van a realizar todo el proceso de produccin, y duda si utilizar un
nuevolenguajesupondrcambiardrsticamentelosmtodosaprendidosenelpasado.

AdatranquilizaaJuanyaMara:

Estclaroquelasfasesprincipalesquehemosestadollevandoacaboalolargodenuestros
anterioresproyectosseseguirnaplicando,aunqueconalgunasdiferencias.Lomsimportante,
Juan,esquesigamosadecuadamenteelmtododetrabajoparaconseguirbuenosresultados.Mecostarmuchotrabajo
adaptarme?preguntaMara.

Adalecontestasentndoseasulado:

Notepreocupes,Mara,setratadeadaptarconocimientosqueyatienesyaprenderalgunosotros.

Seacualseaelestiloqueescojamosalahoradeautomatizarunadeterminadatarea,debemosrealizarelprocesoaplicandounmtodoa
nuestrotrabajo.Esdecir,sabemosquevamosadarsolucinaunproblema,aplicandounafilosofadedesarrolloyloharemosdandouna
seriedepasosquedebenestarbiendefinidos.

Elprocesodecreacindesoftwarepuededividirseendiferentesfases:

Fasederesolucindelproblema.
Fasedeimplementacin.
Fasedeexplotacinymantenimiento.

Acontinuacin,analizaremoscadaunadeellas.

3.1. Resolucin del problema.


Paraelcomienzodeestafase,esnecesarioqueelproblemaseadefinidoycomprendidoclaramenteparaquepuedaseranalizadocontodo
detalle.Asuvez,lafasederesolucindelproblemapuededividirseendosetapas:

a.Anlisis.

Porlogeneral,elanlisisindicarlaespecificacinderequisitosquesedebencubrir.Loscontactosentre
elanalista/programadoryelcliente/usuariosernnumerosos,deestaformapodrnserconocidastodas
lasnecesidadesqueprecisalaaplicacin.Seespecificarnlosprocesosyestructurasdedatosquese
vanaemplear.Lacreacindeprototipossermuytilparasaberconmayorexactitudlospuntosatratar.

El anlisis inicial ofrecer una idea general de lo que se solicita, realizando posteriormente sucesivos
refinamientosqueservirnparadarrespuestaalassiguientescuestiones:

Culeslainformacinqueofrecerlaresolucindelproblema?Larespuestaaestaprimera
IldarSagdejev
preguntaseidentificaconlosresultadosdeseadosolassalidasdelproblema.
Qu datos son necesarios para resolver el problema? La respuesta a esta segunda pregunta indicar qu datos se
proporcionanolasentradasdelproblema.

En esta fase debemos aprender a analizar la documentacin de la empresa, investigar, observar todo lo que rodea al problema y
recopilarcualquierinformacintil.

Ejercicioresuelto
Vamosailustrarestafaserealizandoelanlisisdelsiguienteproblema:

Leerelradiodeuncrculoycalculareimprimirsusuperficieycircunferencia.

Est claro que las entradas de datos en este problema se reducen al radio del crculo, pero piensa qu salidas de datos
ofrecerlasolucin?

Mostrarretroalimentacin

Lassalidassern...

Variable de salida SUPERFICIE: ser la superficie del crculo. (Te acuerdas? El nmero Pi () por el radio al
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 5/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Variable de salida SUPERFICIE: ser la superficie del crculo. (Te acuerdas? El nmero Pi () por el radio al
cuadrado).
VariabledesalidaCIRCUNFERENCIA:serlalongituddelacircunferenciadelcrculo.(Ydesta?2porelnmero
yporelradio)

Ylaentrada...

VariableRADIO:serelradiodelcrculo.

EstasvariablesRADIO,SUPERFICIEyCIRCUNFERENCIApodrnserdetiporeal(nmerosconparteenterayparte
decimal,porejemplo:3,57).

b.Diseo.

Enestaetapaseconviertelaespecificacinrealizadaenlafasedeanlisisenundiseomsdetallado,indicandoelcomportamientoo
lasecuencialgicadeinstruccionescapazderesolverelproblemaplanteado.Estospasossucesivos,queindicanlasinstruccionesa
ejecutarporlamquina,constituyenloqueconocemoscomoalgoritmo.

Consisteenplantearlaaplicacincomounanicaoperacinglobal,eirdescomponindolaenoperacionesmssencillas,detalladasy
especficas.Encadanivelderefinamiento,lasoperacionesidentificadasseasignanamdulosseparados.

Hay que tener en cuenta que antes de pasar a la implementacin del algoritmo, hemos de asegurarnos que tenemos una solucin
adecuada. Para ello, todo diseo requerir de la realizacin de la prueba o traza del programa. Este proceso consistir en un
seguimientopasoapasodelasinstruccionesdelalgoritmoutilizandodatosconcretos.Silasolucinaportadatieneerrores,tendremos
quevolveralafasedeanlisispararealizarlasmodificacionesnecesariasotomarunnuevocaminoparalasolucin.Slocuandoel
algoritmocumplalosrequisitosyobjetivosespecificadosenlafasedeanlisissepasaralafasedeimplementacin.

3.2. Implementacin.

Silafasederesolucindelproblemarequiereunespecialcuidadoenlarealizacindelanlisisyelposterior
diseo de la solucin, la fase de implementacin cobra tambin una especial relevancia. Llevar a la realidad
nuestroalgoritmoimplicarcubriralgunasetapasmsquesedetallanacontinuacin.

a.Codificacinoconstruccin.

Esta etapa consiste en transformar o traducir los resultados obtenidos a un determinado lenguaje de
programacin. Para comprobar la calidad y estabilidad de la aplicacin se han de realizar una serie de
pruebasquecompruebenlasfuncionesdecadamdulo(pruebasunitarias),quelosmdulosfuncionanbienentreellos(pruebasde
interconexin)yquetodosfuncionanenconjuntocorrectamente(pruebasdeintegracin).

Cuando realizamos la traduccin del algoritmo al lenguaje de programacin debemos tener en cuenta las reglas gramaticales y la
sintaxisdedicholenguaje.Obtendremosentoncesel cdigofuente,loquenormalmenteconocemosporprograma.

Peroparaquenuestroprogramacomienceafuncionar,antesdebesertraducidoaunlenguajequelamquinaentienda.Esteproceso
detraduccinpuedehacersededosformas,compilandoointerpretandoelcdigofuentedelprograma.

Compilacin: es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programacin a
lenguajequelamquinaescapazdeinterpretar.

Compilador:programainformticoquerealizalatraduccin.Recibeelcdigofuente,realizaunanlisislexicogrfico,semnticoy
sintctico, genera un cdigo intermedio no optimizado, optimiza dicho cdigo y finalmente, genera el cdigo objeto para una
plataformaespecfica.

Intrprete: programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los
intrpretessediferenciandeloscompiladoresenquemientrasestostraducenunprogramadesdesudescripcinenunlenguaje
de programacin al cdigo de mquina del sistema, los intrpretes slo realizan la traduccin a medida que sea necesaria,
tpicamente,instruccinporinstruccin,ynormalmentenoguardanelresultadodedichatraduccin.

Unaveztraducido,seaatravsdeunprocesodecompilacinodeinterpretacin,elprogramapodrserejecutado.

b.Pruebadeejecucinyvalidacin.

Paraestaetapaesnecesarioimplantarlaaplicacinenelsistemadondevaafuncionar,debeponerseenmarchaycomprobarsisu
funcionamientoescorrecto.Utilizandodiferentesdatosdepruebaseversielprogramarespondealosrequerimientosespecificados,si
sedetectannuevoserrores,sistossonbiengestionadosysilainterfazesamigable.Setratadeponerapruebanuestroprogramapara
versurespuestaensituacionesdifciles.

Mientras se detecten errores y stos no se subsanen no podremos avanzar a la siguiente fase. Una vez corregido el programa y
testeadosedocumentarmediante:

Documentacin interna: encabezados, descripciones, declaraciones del problema y comentarios que se incluyen dentro del
cdigofuente.
Documentacinexterna:sonlosmanualesquesecreanparaunamejorejecucinyutilizacindelprograma,ascomoalgunos
tiposdediagramasqueayudanacomprendermejorla"arquitectura"denuestrasolucin,comopuedenserlos diagramasde
flujo, diagramasdeclases,etc.

Autoevaluacin
Rellenaloshuecosconlosconceptosadecuados:
Enlafasedecodificacin,hemosdetenerencuentala dellenguajeparaobtenerelcdigofuenteoprograma.
Posteriormente,stedeberser o paraquepuedaserejecutadoposteriormente.
Enviar

La sintaxis y reglas gramaticales del lenguaje de programacin que estemos utilizando deben ser respetadas para
obtener un cdigo fuente correcto. Este cdigo fuente debe ser compilado o interpretado, utilizando un programa
compiladorointrprete,paratransformarloaunformatoqueseaejecutableporlamquina.

3.3. Explotacin.
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 6/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Cuandoelprogramayaestinstaladoenelsistemayestsiendodeutilidadparalosusuarios,decimosquese
encuentraenfasedeexplotacin.

Peridicamentesernecesariorealizarevaluacionesy,siesnecesario,llevaracabomodificacionesparaqueel
programa se adapte o actualice a nuevas necesidades, pudiendo tambin corregirse errores no detectados
anteriormente.Esteprocesorecibeelnombredemantenimientodelsoftware.

Mantenimiento del software: es el proceso de mejora y optimizacin del software despus de su entrega al usuario final.
Involucracambiosalsoftwareenordendecorregirdefectosydependenciasencontradasdurantesuuso,ascomolaadicinde
nuevasfuncionalidadesparamejorarsuusabilidadysuaplicabilidad.

Serimprescindibleaadirunadocumentacinadecuadaquefacilitealprogramadoroalaprogramadoralacomprensin,usoymodificacin
dedichosprogramas.

4. Ciclo de vida del software.

Casoprctico

MaralepreguntaaJuan:

Quocurrecuandoterminasunprograma?Seentregaalclienteyyaest?Laverdadesque
los programas que he hecho han sido para uso propio y no s cmo termina el proceso con los
clientes.

ContestaJuan:

Puesvers,cuandoterminasunprograma,ocreesquelohasterminado,hayquellevaracabotodaclasedepruebaspara
ver dnde puede fallar. Despus corrijes los posibles fallos y posteriormente se entrega al cliente, ah es donde ves si tu
softwarehasidobienconstruido.Elclienteloutilizaryduranteuntiempopuedeserquehayaquearreglaralgunacosilla.Y
cuandoyaesttodocorrecto,enocasiones,seestableceuncontratodemantenimientoconelcliente.Comoves,desarrollar
softwarenoconsistesloenprogramaryyaest.

Seancualesseanlasfasesenlasquerealicemoselprocesodedesarrollodesoftware,ycasiindependientementedel,siempresedebe
aplicarunmodelodeciclodevida.

Ciclodevidadelsoftware:esunasucesindeestadosofasesporlascualespasaunsoftwarealolargodesu"vida".

Elprocesodedesarrollopuedeinvolucrarsiemprelassiguientesetapasmnimas:

EspecificacinyAnlisisderequisitos.
Diseo.
Codificacin.
Pruebas.
InstalacinypasoaProduccin.
Mantenimiento.

Existenvariostiposdeciclosdevidadelsoftware,acontinuacintemostramosunresumendelosmsimportantes.
Resumentextualalternativo

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 7/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Autoevaluacin

Entre los distintos tipos de ciclo de vida del software, los modelos incremental y en cascada son modelos del tipo
evolutivo.

Verdadero Falso

Falso
El modelo incremental s es del tipo evolutivo, as como el modelo en espiral, ya que ambos permiten adaptarse a
requisitos variables en el tiempo. El modelo en cascada es mucho ms restrictivo y necesita de unos requerimientos
prefijadosynovariables.

5. Lenguajes de programacin.

Casoprctico

AdayJuan estn recordando lo complejos que eran algunos lenguajes de programacin, Ada
comenta:

Cuando yo empec en esto, haba relativamente pocos lenguajes de programacin y no


permitanhacerprogramascomolosqueahoradesarrollamos.

Juan indica que l conoce las caractersticas generales de algunos lenguajes, pero que le
gustarasaberalgomssobrelosquehubo,hayyhabr.

Maraqueasienteconlacabeza,piensaqueaprendermssobreloslenguajesdisponiblesenlaactualidadpuedeayudarala
horadeelegirentreunosuotros.

Comohemosvisto,entodoelprocesoderesolucindeunproblemamediantelacreacindesoftware,despusdelanlisisdelproblemay
del diseo del algoritmo que pueda resolverlo, es necesario traducir ste a un lenguaje que exprese claramente cada uno de los pasos a
seguirparasucorrectaejecucin.Estelenguajerecibeelnombredelenguajedeprogramacin.

Lenguaje de programacin: conjunto de reglas sintcticas y semnticas, smbolos y palabras especiales establecidas para la
construccindeprogramas.Esunlenguajeartificial,unaconstruccinmentaldelserhumanoparaexpresarprogramas.

Gramticadellenguaje: reglas aplicables al conjunto de smbolos y palabras especiales del lenguaje de programacin para la
construccindesentenciascorrectas.

Lxico:eselconjuntofinitodesmbolosypalabrasespeciales,eselvocabulariodellenguaje.

Sintaxis:sonlasposiblescombinacionesdelossmbolosypalabrasespeciales.Estrelacionadaconlaformadelosprogramas.

Semntica:eselsignificadodecadaconstruccindellenguaje,laaccinquesellevaracabo.

Hayquetenerencuentaquepuedenexistirsentenciassintcticamentecorrectas,perosemnticamenteincorrectas.Por
ejemplo, Un avestruz dio una tremenda dentellada a su cuidador est bien construida sintcticamente, pero es
evidentequesemnticamenteno.

Una caracterstica relevante de los lenguajes de programacin es, precisamente, que ms de un programador pueda
usarunconjuntocomndeinstruccionesqueseancomprendidasentreellos.Atravsdeesteconjuntosepuedelograr
laconstruccindeunprogramadeformacolaborativa.

Los lenguajes de programacin pueden ser clasificados en funcin de lo cerca que estn del lenguaje humano o del
lenguajedeloscomputadores.Ellenguajedeloscomputadoressoncdigosbinarios,esdecir,secuenciasdeunosy
ceros.Detallaremosseguidamentelascaractersticasprincipalesdeloslenguajesdeprogramacin.
Newsum

5.1. Lenguaje mquina.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 8/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Este es el lenguaje utilizado directamente por el procesador, consta de un conjunto de instrucciones codificadas en
binario.Eselsistemadecdigosdirectamenteinterpretableporun circuitomicroprogramable.

Estefueelprimerlenguajeutilizadoparalaprogramacindecomputadores.Dehecho,cadamquinatenasupropio
conjunto de instrucciones codificadas en ceros y unos. Cuando un algoritmo est escrito en este tipo de lenguaje,
decimosqueestencdigomquina.

Programarenestetipodelenguajepresentabalossiguientesinconvenientes:
GNUGPLSasaStefanovic

Cadaprogramaeravlidosloparauntipodeprocesadoruordenador.
La lectura o interpretacin de los programas era extremadamente difcil y, por tanto, insertar modificaciones resultaba muy
costoso.
Los programadores de la poca deban memorizar largas combinaciones de ceros y unos, que equivalan a las instrucciones
disponiblesparalosdiferentestiposdeprocesadores.
Los programadores se encargaban de introducir los cdigos binarios en el computador, lo que provocaba largos tiempos de
preparacinyposibleserrores.

A continuacin, se muestran algunos cdigos binarios equivalentes a las operaciones de suma, resta y movimiento de datos en lenguaje
mquina.

Algunasoperacionesen
lenguajemquina.

Operacin Lenguajemquina

SUMAR 00101101

RESTAR 00010011

MOVER 00111010

Dadalacomplejidadydificultadesqueofrecaestelenguaje,fuesustituidoporotrosmssencillosyfcilesutilizar.Noobstante,hayquetener
en cuenta que todos los programas para poder ser ejecutados, han de traducirse siempre al lenguaje mquina que es el nico que
entiendelacomputadora.

Parasaberms
Comorecordatorio,teproponemosverelsiguientevdeosobrecmofuncionaelsistemabinario.
Resumentextualalternativo

Autoevaluacin
Rellenaelhuecoconelconceptoadecuado:
Enellenguajemquinadealgunosprocesadores,lacombinacin00101101equivalealaoperacinde .
Enviar

La suma, resta y la operacin de movimiento de datos eran muy utilizadas en los programas escritos en lenguaje
mquina. An no se haba extendido el uso de estructuras de programacin como las sentencias condicionales o los
bucles.

5.2. Lenguaje ensamblador.


Laevolucindellenguajemquinafueellenguajeensamblador.

Las instrucciones ya no son secuencias binarias, se sustituyen por cdigos de operacin que describen una operacin elemental del
procesador. Es un lenguaje de bajo nivel, al igual que el lenguaje mquina, ya que dependen directamente del hardware donde son
ejecutados.

Mnemotcnico:sonpalabrasespeciales,quesustituyenlargassecuenciasdecerosyunos,utilizadasparareferirseadiferentes
operacionesdisponibleseneljuegodeinstruccionesquesoportacadamquinaenparticular.

En ensamblador, cada instruccin (mnemotcnico) se corresponde a una instruccin del procesador. En la siguiente tabla se muestran
algunosejemplos.

Algunasoperacionesysu
mnemotcnicoenlenguaje
Ensamblador.

Operacin LenguajeEnsamblador

MULTIPLICAR MUL

DIVIDIR DIV

MOVER MOV

Enelsiguientegrficopuedesverpartedeunprogramaescritoenlenguajeensamblador.Encolorrojoseharesaltadoelcdigomquinaen
hexadecimal,enmagentaelcdigoescritoenensambladoryenazul,lasdireccionesdememoriadondeseencuentraelcdigo.

German

Pero aunque ensamblador fue un intento por aproximar el lenguaje de los procesadores al lenguaje humano, presentaba mltiples
dificultades:

Losprogramasseguandependiendodirectamentedelhardwarequelossoportaba.
Losprogramadorestenanqueconocerdetalladamentelamquinasobrelaqueprogramaban,yaquedebanhacerunusoadecuado
delosrecursosdedichossistemas.
Lalectura,interpretacinomodificacindelosprogramasseguapresentandodificultades.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 9/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Todoprogramaescritoenlenguajeensambladornecesitadeunintermediario,querealicelatraduccindecadaunadelasinstruccionesque
componensucdigoallenguajemquinacorrespondiente.Esteintermediarioeselprogramaensamblador.Elprogramaoriginalescritoen
lenguajeensambladorconstituyeelcdigofuenteyelprogramatraducidoallenguajemquinaseconocecomoprogramaobjetoqueser
directamenteejecutadoporlacomputadora.

5.3. Lenguajes compilados.


Parapaliarlosproblemasderivadosdelusodellenguajeensambladoryconelobjetivodeacercarlaprogramacin
haciaelusodeunlenguajemscercanoalhumanoquealdelcomputador,nacieronloslenguajescompilados.

Algunosejemplosdeestetipodelenguajesson:Pascal,Fortran,Algol,C, C++,etc.

Alserlenguajesmscercanosalhumano,tambinselesdenominalenguajes de alto nivel. Son ms fciles de


utilizarycomprender,lasinstruccionesqueformanpartedeestoslenguajesutilizanpalabrasysignosreconocibles
porelprogramador.

Culessonsusventajas?

Sonmuchomsfcilesdeaprenderydeutilizarquesuspredecesores.
Sereduceeltiempoparadesarrollarprogramas,ascomoloscostes. LeonardoDaVinci

Sonindependientesdelhardware,losprogramaspuedenejecutarseendiferentestiposdemquina.
Lalectura,interpretacinymodificacindelosprogramasesmuchomssencilla.

Perounprogramaqueestescritoenunlenguajedealtoniveltambintienequetraducirseauncdigoquepuedautilizarlamquina.Los
programastraductoresquepuedenrealizarestaoperacinsellamancompiladores.

Compilador:es un programa cuya funcin consiste en traducir el cdigo fuente de un programa escrito en un lenguaje de alto
nivelalenguajemquina.Alprocesodetraduccinseleconoceconelnombredecompilacin.

Parailustrarelprocesodecompilacindeprogramasteproponemoselsiguienteesquema:

GNUFreeDocumentationLicense.
MagnusColossus
Elcompiladorrealizarlatraduccinyademsinformardelosposibleserrores.Unavezsubsanados,segenerarelprogramatraducidoa
cdigomquina,conocidocomocdigoobjeto.Esteprogramaannopodrserejecutadohastaquenoseleaadanlosmdulosdeenlace
obibliotecas,duranteelprocesodeenlazado.Unavezfinalizadoelenlazado,seobtieneelcdigoejecutable.

Parasaberms
Enelsiguienteenlacepuedesconsultarinformacinsobreelprocesodeenlazado:

Documentosobreelprocesodeenlazado(92KB)

Autoevaluacin

Durantelafasedeenlazado,seincluyenenelcdigofuentedeterminadosmdulos(bibliotecas)quesonnecesarios
paraqueelprogramapuedarealizarciertastareas,posteriormenteseobtendrelcdigoejecutable.

Verdadero Falso

Falso
Elcdigofuenteestraducidoporelcompilador,peroenlafasedeenlazadolosmdulossonaadidosalcdigoobjeto
estosmdulospermitirnalprogramamanejardispositivos,comunicarseconotroselementosdelsistema,etc.

5.4. Lenguajes interpretados.


Recuerdasqueenunapartadoanterioryahablamosdequeexistendosformasdetraducirlosprogramasescritosenunlenguajedealto
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 10/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Recuerdasqueenunapartadoanterioryahablamosdequeexistendosformasdetraducirlosprogramasescritosenunlenguajedealto
nivelacdigomquinayqueunadeesasformasesmedianteunintrprete?Puesbien,ahoravamosaaverculessonlascaractersticasde
loslenguajesinterpretados.

Se caracterizan por estar diseados para que su ejecucin se realice a travs de un intrprete. Cada instruccin escrita en un lenguaje
interpretadoseanaliza,traduceyejecutatrashabersidoverificada.Unavezrealizadoelprocesoporelintrprete,lainstruccinseejecuta,
peronoseguardaenmemoria.

Intrprete:esunprogramatraductordeunlenguajedealtonivelenelqueelprocesodetraduccinydeejecucinsellevana
cabo simultneamente, es decir, la instruccin se pasa a lenguaje mquina y se ejecuta directamente. No se genera programa
objeto,niprogramaejecutable.

Los programas en lenguajes interpretados presentan el inconveniente de ser algo ms lentos que los
compilados, ya que han de ser traducidos durante su ejecucin. Por otra parte, necesitan disponer en la
mquina del programa intrprete ejecutndose, algo que no es necesario en el caso de un programa
compilado,paralosquesloesnecesariotenerelprogramaejecutableparapoderutilizarlo.

Ejemplosdelenguajesinterpretadosson:Perl,PHP,Python,JavaScript,etc.

A medio camino entre los lenguajes compilados y los interpretados, existen los lenguajes que podemos
denominar pseudocompilados o pseudointerpretados, es el caso del Lenguaje Java. Java puede verse
comocompiladoeinterpretadoalavez,yaquesucdigofuentesecompilaparaobtenerelcdigobinarioenformadebytecodes,queson
estructuras parecidas a las instrucciones mquina, con la importante propiedad de no ser dependientes de ningn tipo de mquina (se
detallarn ms adelante). La Mquina Virtual Java se encargar de interpretar este cdigo y, para su ejecucin, lo traducir a cdigo
mquinadelprocesadorenparticularsobreelqueseesttrabajando.

Debesconocer
PuedesentenderporquJavaesunlenguajecompiladoeinterpretadoatravsdelesquemaquesemuestraenelsiguiente
enlace:

EllenguajeJavaescompiladoeinterpretado.

6. El lenguaje de programacin Java.

Casoprctico
AdaindicaaJuanyMaraqueellenguajeelegidoparasusdesarrollosvaaserJava.

La flexibilidad, facilidad de aprendizaje, similitud con algunos lenguajes que ya conocen y su


capacidadparaadaptarseacualquierplataforma,hacenqueseaidealparaproducirlasnuevas
aplicacionesdeBKProgramacin.

Java es un lenguaje sencillo de aprender, con una sintaxis parecida a la de C++, pero en la que se han eliminado
elementos complicados y que pueden originar errores. Java es orientado a objetos, con lo que elimina muchas
preocupacionesalprogramadorypermitelautilizacindegrancantidaddebibliotecasyadefinidas,evitandoreescribir
cdigo que ya existe. Es un lenguaje de programacin creado para satisfacer nuevas necesidades que los lenguajes
existenteshastaelmomentonoerancapacesdesolventar.

UnadelasprincipalesvirtudesdeJavaessuindependenciadelhardware,yaqueelcdigoquesegeneraesvlido
para cualquier plataforma. Este cdigo ser ejecutado sobre una mquina virtual denominada Mquina Virtual Java
(MVJoJVMJavaVirtualMachine),queinterpretarelcdigoconvirtindoloacdigoespecficodelaplataformaque
losoporta.Deestemodoelprogramaseescribeunanicavezypuedehacersefuncionarencualquierlugar.Poreso,
eseesellemadellenguaje:Writeonce,runeverywhere.
robpatrick
Antes de que apareciera Java, el lenguaje C era uno de los ms extendidos por su versatilidad. Pero cuando los
programasescritosenCaumentabandevolumen,sumanejocomenzabaacomplicarse.Mediantelastcnicasdeprogramacinestructurada
yprogramacinmodularseconseguanreducirestascomplicaciones,peronoerasuficiente.

FueentoncescuandolaProgramacinOrientadaaObjetos(POO)entraenescena,aproximandonotablementelaconstruccindeprogramas
alpensamientohumanoyhaciendomssencillotodoelproceso.Losproblemassedividenenobjetosquetienenpropiedadeseinteractan
conotrosobjetos,deestemodo,elprogramadorpuedecentrarseencadaobjetoparaprogramarinternamenteloselementosyfuncionesque
locomponen.

LascaractersticasprincipalesdelenguajeJavaseresumenacontinuacin:

ElcdigogeneradoporelcompiladorJavaesindependientedelaarquitectura.
Esttotalmenteorientadoaobjetos.
SusintaxisessimilaraCyC++.
Esdistribuido,preparadoparaaplicaciones TCP/IP.
Disponedeunamplioconjuntodebibliotecas.
Esrobusto,realizandocomprobacionesdelcdigoentiempodecompilacinydeejecucin.
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 11/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Esrobusto,realizandocomprobacionesdelcdigoentiempodecompilacinydeejecucin.
Laseguridadestgarantizada,yaquelasaplicacionesJavanoaccedenazonasdelicadasdememoriaodesistema.

Debesconocer
Obtnunadescripcindetalladadelascaractersticasreseadasanteriormenteatravsdelsiguienteartculo:

CaractersticasdetalladasdellenguajeJava

6.1. Breve historia.


Javasurgien1991cuandoungrupodeingenierosdeSunMicrosystemstratarondedisearunnuevolenguajedeprogramacindestinadoa
programar pequeos dispositivos electrnicos. La dificultad de estos dispositivos es que cambian continuamente y para que un programa
funcioneenelsiguientedispositivoaparecido,hayquerescribirelcdigo.PoresolaempresaSunqueracrearunlenguajeindependiente
deldispositivo.

Pero no fue hasta 1995 cuando pas a llamarse Java, dndose a conocer al pblico como lenguaje de programacin para computadores.
Javapasaaserunlenguajetotalmenteindependientedelaplataformayalavezpotenteyorientadoaobjetos.Esafilosofaysufacilidad
paracrearaplicacionespararedesTCP/IPhahechoqueseaunodeloslenguajesmsutilizadosenlaactualidad.

ElfactordeterminanteparasuexpansinfuelaincorporacindeunintrpreteJavaenlaversin2.0delnavegadorWebNetscapeNavigator,
loquesupusounagranrevueloenInternet.Aprincipiosde1997apareciJava1.1,queproporcionsustancialesmejorasallenguaje.

Java1.2,mstarderebautizadocomoJava2,naciafinalesde1998.

ElprincipalobjetivodellenguajeJavaesllegaraserelnexouniversalqueconectealosusuariosconlainformacin,eststasituadaenel
ordenadorlocal,enunservidorWeb,enunabasededatosoencualquierotrolugar.

ParaeldesarrollodeprogramasenlenguajeJava es necesario utilizar un entorno de desarrollo denominado JDK(Java Development Kit),


queproveedeuncompiladoryunentornodeejecucin(JREJavaRuntimeEnvironment)paralosbytecodesgeneradosapartirdelcdigo
fuente. Al igual que las diferentes versiones del lenguaje han incorporado mejoras, el entorno de desarrollo y ejecucin tambin ha sido
mejoradosucesivamente.

Java2eslaterceraversindellenguaje,peroesalgomsqueunlenguajedeprogramacin,incluyelossiguienteselementos:

Unlenguajedeprogramacin:Java.
UnconjuntodebibliotecasestndarquevienenincluidasenlaplataformayquesonnecesariasentodoentornoJava.EselJavaCore.
Unconjuntodeherramientasparaeldesarrollodeprogramas,comoeselcompiladordebytecodes,elgeneradordedocumentacin,un
depurador,etc.
Unentornodeejecucinqueendefinitivaesunamquinavirtualqueejecutalosprogramastraducidosabytecodes.

ElsiguienteesquemamuestraloselementosfundamentalesdelaplataformadedesarrolloJava2.

ActualmentehaytresedicionesdelaplataformaJava2:

J2SE:EntornodeSunrelacionadoconlacreacindeaplicacionesy appletsenlenguajeJava.
J2EE:PensadaparalacreacindeaplicacionesJavaempresarialesydelladodelservidor.
J2ME:PensadaparalacreacindeaplicacionesJavaparadispositivosmviles.

Parasaberms
SideseasconocermssobrelosorgenesdellenguajeJava,aquteofrecemosmsinformacin:

LosorgenesdeJava

HistoriadeJava

LneadetiempodelahistoriadeJava

6.2. La POO y Java.


EnJava,losdatosyelcdigo(funcionesomtodos)secombinanenentidadesllamadasobjetos.Elobjetotendruncomportamiento(su
cdigointerno)yunestado(losdatos).Losobjetospermitenlareutilizacindelcdigoypuedenconsiderarse,ensmismos,comopiezas
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 12/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
cdigointerno)yunestado(losdatos).Losobjetospermitenlareutilizacindelcdigoypuedenconsiderarse,ensmismos,comopiezas
reutilizablesenmltiplesproyectosdistintos.Estacaractersticapermitereducireltiempodedesarrollodesoftware.

Por simplificar un poco las cosas, un programa en Java ser como una representacin teatral en la que debemos preparar primero cada
personaje,definirsuscaractersticasyquvaasaberhacer.Cuandoestafaseestterminada,laobrasedesarrollarsacandopersonajesa
escenayhacindolesinteractuar.

AlemplearlosconceptosdelaProgramacinOrientadaaObjetos(POO),Javaincorporalastrescaractersticaspropiasdeesteparadigma:

Encapsulacin,
Herencia,
Polimorfismo.

Lospatronesotiposdeobjetossedenominan clasesylosobjetosqueutilizanestospatronesopertenecenadichostipos,seidentifican
conelnombrede instancias.Pero,nohayquealarmarse,estosconceptossevernmsadelanteensucesivasunidades.

Otro ejemplo para seguir aclarando ideas, piensa en los bloques de juegos de construccin. Suponemos que
conoces los cubos de plstico en varios colores y tamaos. Por una de sus caras disponen de pequeos
conectorescircularesyenotradesuscaraspequeosorificiosenlosquepuedenconectarseotrosbloques,conel
objetivo principal de permitir construir formas ms grandes. Si usas diferentes piezas del lego puedes construir
aviones,coches,edificios,etc.Sitefijasbien,cadapiezaesunobjetopequeoquepuedeunirseconotrosobjetos
paracrearobjetosmsgrandes.

Pues bien, aproximadamente as es como funciona la programacin dirigida a objetos: unimos elementos
pequeos para construir otros ms grandes. Nuestros programas estarn formados por muchos componentes
(objetos) independientes y diferentes cada uno con una funcin determinada en nuestro software y que podr
comunicarseconlosdemsdeunamanerapredefinida. Priwo

6.3. Independencia de la plataforma y trabajo en red.


Existen dos caractersticas que distinguen a Java de otros lenguajes, como son la independencia de la plataforma y la posibilidad de
trabajarenredo,mejor,laposibilidaddecrearaplicacionesquetrabajanenred.

Estascaractersticaslasvamosaexplicaracontinuacin:

a.Independencia:losprogramasescritosenJavapuedenserejecutadosencualquiertipodehardware.Elcdigofuenteescompilado,
generndoseelcdigoconocidocomoJavaBytecode(instruccionesmquinasimplificadasquesonespecficasdelaplataformaJava),
elbytecodeserinterpretadoyejecutadoenlaMquinaVirtualJava(MVJoJVMJavaVirtualMachine)queesunprogramaescrito
encdigonativodelaplataformadestino,entendibleporelhardware.Conestoseevitatenerquerealizarunprogramadiferentepara
cadaCPU(UnidadCentraldeProceso)oplataforma.
Portanto,lapartequerealmenteesdependientedelsistemaeslaMquinaVirtualJava,ascomolaslibrerasobibliotecasbsicasque
permitenaccederdirectamentealhardwaredelamquina.

b.Trabajoenred:estacapacidaddellenguajeofrecemltiplesposibilidadesparalacomunicacinvaTCP/IP.Parapoderhacerloexisten
libreras que permiten el acceso y la interaccin con protocolos como http, ftp, etc., facilitando al programador las tareas del
tratamientodelainformacinatravsderedes.

Autoevaluacin
QuelementoesimprescindibleparaqueunaaplicacinescritaenJavapuedaejecutarseenunordenador?

QuedispongadeconexinaInternetydelhardwareadecuado.

QuetengainstaladounnavegadorwebyconexinaInternet.

QuetengalaMquinaVirtualJavaadecuadainstalada.

EstoselementosnosonsuficientesparapoderhacerfuncionarunaaplicacinescritaenlenguajeJava.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 13/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
TenerconectividadaInternetnoesimprescindibleparapoderejecutarprogramasJava,ademsdequenosloatravs
delnavegadorpuedeejecutarsecdigoJava.

Efectivamente, sin la Mquina Virtual Java es imposible que el hardware pueda entender los cdigos de bytes (o
bytecodes) necesarios para la ejecucin del programa, siendo necesaria la mquina virtual adecuada para la plataforma
hardwarequeestemosutilizando.

Solucin

1.Incorrecto
2.Incorrecto
3.Opcincorrecta

6.4. Seguridad y simplicidad.

JuntoalascaractersticasdiferenciadorasdellenguajeJavarelacionadasconlaindependenciayeltrabajoen
red,handedestacarsedosvirtudesquehacenaestelenguajeunodelosmsextendidosentrelacomunidad
deprogramadores:suseguridadysusimplicidad.

Seguridad:enprimerlugar,losposiblesaccesosazonasdememoriasensiblesqueenotroslenguajes
comoCyC++podansuponerpeligrosimportantes,sehaneliminadoenJava.

Yensegundolugar,elcdigoJavaescomprobadoyverificadoparaevitarquedeterminadassecciones
delcdigoproduzcanefectosnodeseados.Lostestqueseaplicangarantizanquelasoperaciones,operandos,conversiones,usode
clasesydemsaccionessonseguras.

Endefinitiva,podemosafirmarqueJavaesunlenguajeseguro.

Simplicidad:aunqueJavaestanpotentecomoCoC++,esbastantemssencillo.Poseeunacurvadeaprendizajemuyrpiday,para
alguienquecomienzaaprogramarenestelenguaje,comoserelcasodelamayoradequienescomienzanaestudiarestemdulo,
leresultarelativamentefcilcomenzaraescribiraplicacionesinteresantes.

SihasprogramadoalgunavezenCoC++encontrarsqueJavateponelascosasmsfciles,yaquesehaneliminado:laaritmtica
de punteros,losregistros,ladefinicindetipos,lagestindememoria,etc.Conestasimplificacinsereducebastantelaposibilidad
decometererrorescomunesenlosprogramas.UnprogramadorexperimentadoenCoC++puedecambiaraestelenguajerpidamente
yobtenerresultadosenmuypocoespaciodetiempo.

MuyrelacionadoconlasimplicidadqueaportaJavaestlaincorporacindeunelementomuytilcomoeselRecolectordeBasura
(Garbage collector). Permite al programador liberarse de la gestin de la memoria y hace que ciertos bloques de memoria puedan
reaprovecharse,disminuyendoelnmerodehuecoslibres( fragmentacindememoria).

Cuandorealicemosprogramas,crearemosobjetos,haremosquestosinteraccionen,etc.Todasestasoperacionesrequierendeusode
memoriadelsistema,perolagestindestaserrealizadademaneratransparentealprogramador.Todolocontrarioqueocurraen
otroslenguajes.Podremoscreartantosobjetoscomosolicitemos,peronuncatendremosquedestruirlos.ElentornodeJavaborrarlos
objetoscuandodeterminequenosevanautilizarms.Esteprocesoesconocidocomorecoleccindebasura,ysimplificatutrabajoal
programarunabarbaridad.

Autoevaluacin
Rellenaloshuecosconlosconceptosadecuados:
EnJavasehasimplificadolagestindememoriaatravsdelaeliminacindelaAritmticade ,porloquela
incorporacin del Garbage Collector evita que se produzca un crecimiento de los huecos libres en memoria, que recibe el
nombrede dememoria.
Enviar

Los Punteros son un tipo especial de elemento utilizado en C/C++ que permiten realizar directamente gestin de la
memoriadelsistema,sucontrolescomplicadoy,enocasiones,peligroso.Aldejarenmanosdelrecolectordebasurala
gestindelamemoria,seevitalaFragmentacinysereutilizanmejorlosespacioslibres,liberandoalprogramadorpara
quesecentreeneldesarrollodelprogramasindistraccionesadicionales.

6.5. Java y los Bytecodes.


UnprogramaescritoenJavanoesdirectamenteejecutable,esnecesarioqueelcdigofuenteseainterpretadoporlaMquinaVirtualJava.
Culessonlospasosquesesiguendesdequesegeneraelcdigofuentehastaqueseejecuta?Acontinuacinsedetallancadaunode
ellos.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 14/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
ellos.

Unavezescritoelcdigofuente(archivosconextensin.java),steesprecompiladogenerndoseloscdigosdebytes,BytecodesoJava
Bytecodes(archivosconextensin.class)queserninterpretadosdirectamenteporlaMquinaVirtualJavaytraducidosacdigonativodela
plataformasobrelaqueseestejecutandoelprograma.

Bytecode:sonunconjuntodeinstruccionesenlenguajemquinaquenosonespecficasparaningnprocesadorosistemade
cmputo.Unintrpretedecdigodebytes(bytecodes)paraunaplataformaespecficaserquienlosejecute.Aestosintrpretes
tambinselesconocecomoMquinasVirtualesJavaointrpretesJavadetiempodeejecucin.

Enelprocesodeprecompilacin,existeunverificadordecdigosdebytesqueseasegurardequesecumplenlassiguientescondiciones:

ElcdigosatisfacelasespecificacionesdelaMquinaVirtualJava.
Noexisteamenazacontralaintegridaddelsistema.
Noseproducendesbordamientosdememoria.
Losparmetrosysustipossonadecuados.
Noexistenconversionesdedatosnopermitidas.

Para que un bytecode pueda ser ejecutado en cualquier plataforma, es imprescindible que dicha plataforma cuente con el intrprete
adecuado,esdecir,lamquinavirtualespecficaparaesaplataforma.Engeneral,laMquinaVirtualJavaes unprogramade reducido
tamaoygratuitoparatodoslossistemasoperativos.

Autoevaluacin
En Java el cdigo fuente es compilado, obtenindose el cdigo binario en forma de bytecodes. Pero, cul es la
extensindelarchivoresultante?

Extensin.obj

Extensin.class
Extensin.java

Incorrecto,losarchivos.objsongeneradosporuncompiladorantesdegenerarelarchivoejecutable.

Correcto,estetipodearchivossonlosquelaMquinaVirtualJavatraducirparapoderejecutarlosenlamquinareal.

Incorrecto,losarchivosconestaextensincontienenelcdigofuentedelprograma.

Solucin

1.Incorrecto
2.Opcincorrecta
3.Incorrecto

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 15/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

7. Programas en Java.

Casoprctico
Juan celebra que BK Programacin vaya a desarrollar sus programas en un lenguaje como
Java.Enalgunasocasioneshaasistidoacongresosyferiasdeexposicionesdesoftwareenlas
que ha podido intercambiar impresiones con compaeros de profesin sobre los diferentes
lenguajes que utilizan en sus proyectos. Una gran mayora destacaba lo fcil y potente que es
programarenJava.

Juanestentusiasmadoypregunta:

Ada, cundo empezamos? Tienes cdigo fuente para empezar a ver la sintaxis?
Podremosutilizaralgnentornodedesarrolloprofesional? ZikovanDijk

Adarespondesonriendo:

Manosalaobra!Mara,preparada?Vamosaecharleunvistazoaestefragmentodecdigo...

Hasta ahora, hemos descrito el lenguaje de programacin Java, hemos hecho un recorrido por su historia y nos hemos instruido sobre su
filosofadetrabajo,perotepreguntars:

Cundoempezamosadesarrollarprogramas?
QuelementosformanpartedeunprogramaenJava?
Qusenecesitaparaprogramarenestelenguaje?
Podemoscrearprogramasdediferentetipo?

No te impacientes, cada vez estamos ms cerca de comenzar la experiencia con el lenguaje de programacin Java. Iniciaremos nuestro
camino conociendo cules son los elementos bsicos de un programa Java, la forma en que debemos escribir el cdigo y los tipos de
aplicacionesquepuedencrearseenestelenguaje.

7.1. Estructura de un programa.


Enelgrficoalquepuedesaccederacontinuacin,sepresentalaestructurageneraldeunprogramarealizadoenunlenguajeorientadoa
objetoscomoesJava.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 16/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Vamosaanalizarcadaunodeloselementosqueaparecenendichogrfico:

<strong><spanstyle="fontsize:medium">publicclassClase_Principal</span></strong>:todoslosprogramashandeincluirunaclase
comosta.Esunaclasegeneralenlaqueseincluyentodoslosdemselementosdelprograma.
Entreotrascosas,contieneelmtodoofuncinmain()querepresentaalprogramaprincipal,desdeelquesellevaracabolaejecucin
delprograma.
Elarchivoquecontieneestaclasepuedecontenerasuvezotrasclasesdelusuario,peroslounapuedeserpublicyaquesilaclase
espublic,elnombredelfichero.javaquecontieneelcdigofuentedenuestroprograma(quecontieneadichaclaseendefinitiva),tiene
quecoincidirconelnombredelaclasequeestamosdescribiendoenestaslneas.

TenencuentaqueJavadistingueentremaysculasyminsculas.SiledasalaclaseprincipalelnombrePrimerPrograma,el
archivo.javatendrcomoidentificadorPrimerPrograma.java,queestotalmentediferenteaprimerprograma.java.Adems,para
JavaloselementosPrimerProgramayprimerprogramaseranconsideradosdosclasesdiferentesdentrodelcdigofuente.

MsadelantehablaremosdelasconvencionesquesuelenseguirseparaformarlosnombresdelasclasesenJava,ascomode
cualquierotroidentificadorusadoporellenguaje.

publicstaticvoidmain(String[]args):eselmtodoquerepresentaalprogramaprincipal,enlsepodrnincluirlasinstruccionesque
estimemosoportunasparalaejecucindelprograma.Desdelsepodrhacerusodelrestodeclasescreadas.Todoslosprogramas
Javatienenunmtodomain().
Comentarios:loscomentariossesuelenincluirenelcdigofuentepararealizaraclaraciones,anotacionesocualquierotraindicacin
queelprogramadorestimeoportuna.Estoscomentariospuedenintroducirsededosformas:
Con//estaramosestableciendounanicalneacompletadecomentario,esdecir,todoloquehaydetrs,hastaquehayaunsalto
delnea,escomentario.
Con/**/.Deestaformacon/*comenzaramoselcomentarioystenoterminarahastaquenoinsertramos*/.
Bloquesdecdigo:sonconjuntosdeinstruccionesquesemarcanmediantelaaperturaycierredellaves{}.Elcdigoasmarcadoes
consideradointernoalbloque.
Puntoycoma():aunqueenelejemplodelaimagennohemosterminadoningunalneadecdigoconpuntoycoma,paranodistraer
demomentoconlosdetalles,hayquehacerhincapienquecadalneadecdigohadeterminarconpuntoycoma().Encasodeno
hacerlo,tendremoserroressintcticos.

Autoevaluacin

publicstaticvoidmain(String[]args)eslaclasegeneraldelprograma.

Verdadero Falso

Falso
La clase general del programa tiene el formato public class <nombre_clase_general> y todos los programas Java
tendrnuna.Dentrodeellapodrhabermsclasesdefinidasporelusuarioysiempre,deberhaberunmtodomain()
desdeelqueseirhaciendousodelrestodeclasesdefinidas.

7.2. El entorno bsico de desarrollo Java.

YaconocescmoeslaestructuradeunprogramaenJava,pero,qunecesitamosparallevarloalaprctica?

LaherramientabsicaparaempezaradesarrollaraplicacionesenJavaeselJDK(JavaDevelopmentKitoKitde
DesarrolloJava),queincluyeuncompiladoryunintrpreteparalneadecomandos.Estosdosprogramassonlos
empleadosenlaprecompilacineinterpretacindelcdigo.

Como veremos, existen diferentes entornos para la creacin de programas en Java que incluyen multitud de
herramientas,peroporahoranoscentraremosenelentornomsbsico,extendidoygratuito,elJavaDevelopment
Kit (JDK). Segn se indica en la propia pgina web de Oracle, JDK es un entorno de desarrollo para construir
aplicaciones,appletsycomponentesutilizandoellenguajedeprogramacinJava.Incluyeherramientastilesparael
desarrolloypruebadeprogramasescritosenJavayejecutadosenlaPlataformaJava.

Asmismo,juntoaJDKseincluyeunaimplementacindelentornodeejecucinJava,elJRE(JavaRuntimeEnvironment)paraserutilizado
porelJDK.ElJREincluyelaMquinaVirtualdeJava(MVJJVMJavaVirtualMachine),bibliotecasdeclasesyotrosficherosquesoportan
laejecucindeprogramasescritosenellenguajedeprogramacinJava.

Debesconocer
ParapoderutilizarJDKyJREesnecesariorealizarladescargaeinstalacindestos.Puedesseguirlospasosdelprocesoa
continuacin:
Resumentextualalternativo

Presentacinapantallacompleta.

ParapoderdesarrollarnuestrosprimerosprogramasenJavaslonecesitaremosuneditordetextoplanoyloselementosqueacabamosde
instalaratravsdeJavaSE.

Autoevaluacin

Podemos desarrollar programas escritos en Java mediante un editor de textos y a travs del JDK podremos
ejecutarlos.

Verdadero Falso

Verdadero
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 17/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Verdadero
Efectivamente,JDKincluyeuncompiladordeJava,quepermitirarealizarlacompilacindelcdigofuente,generando
los bytecodes, e incluye al JRE, (que a su vez incluye la JVM y una serie de bibliotecas Java llamadas API) que
permitiralaejecucinposteriorenlaJVMdelosbytecodesdenuestroprograma.

7.3. La API de Java.

Juntoconelkitdedesarrolloquehemosdescargadoeinstaladoanteriormente,vienenincluidasgratuitamentetodas
lasbibliotecasdelaAPI(ApplicationProgrammingInterfaceInterfazdeprogramacindeaplicaciones)deJava,es
lo que se conoce como Bibliotecas de Clases Java. Este conjunto de bibliotecas proporciona al programador
paquetes de clases tiles para la realizacin de mltiples tareas dentro de un programa. Est organizada en
paqueteslgicos,dondecadapaquetecontieneunconjuntodeclasesrelacionadas semnticamente.

Endcadaspasadasunabibliotecaeraunconjuntodeprogramasquecontenancientosderutinas(unarutinaesun
procedimiento o funcin bien verificados, en determinado lenguaje de programacin). Las rutinas de biblioteca
manejaban las tareas que todos o casi todos los programas necesitaban. El programador poda recurrir a esta
bibliotecaparadesarrollarprogramasconrapidez.

Unabibliotecadeclasesesunconjuntodeclasesdeprogramacinorientadaaobjetos.Esasclasescontienenmtodosquesontilespara
losprogramadores.EnelcasodeJavacuandodescargamoselJDKobtenemoslabibliotecadeclasesAPI.Utilizarlasclasesymtodosde
lasAPIdeJavareduceeltiempodedesarrollodelosprogramas.Tambin,existendiversasbibliotecasdeclasesdesarrolladasporterceros
quecontienencomponentesreutilizablesdesoftware,yestndisponiblesatravsdelaWeb.

Parasaberms
SiquieresaccederalainformacinoficialsobrelaAPIdeJava,teproponemoselsiguienteenlace(estenIngls).

InformacinoficialsobrelaAPIdeJava

Autoevaluacin
IndicaqunoeslaAPIdeJava:

Unentornointegradodedesarrollo.

Unconjuntodebibliotecasdeclases.

UnapartedelJDK,incluidoenelJavaSE.

Enefecto,laAPIdeJavaesutilizadaparalacreacindeprogramasperonoofrecelasherramientasdedesarrolloqueun
IDEposee.

Incorrecto,laAPIdeJavaproveedeclasesagrupadasenpaquetesqueproporcionanunainterfazcomnparadesarrollar
aplicacionesJavaentodaslasplataformas.

Incorrecto,laAPIdeJavaestincluidajuntoconJDKyJREenJavaSE.

Solucin

1.Opcincorrecta
2.Incorrecto
3.Incorrecto

7.4. Afinando la configuracin.

YesnecesarioconfigurarlainstalacindelJDKqueacabamosdehacer?

ParaquepodamoscompilaryejecutarficherosJavaesnecesarioquerealicemosunospequeosajustesenla
configuracindelsistema.Vamosaindicarledndeencontrarlosficherosnecesariospararealizarlaslaboresde
compilacinyejecucin,enestecasojavac.exeyjava.exe,ascomolaslibrerascontenidasenlaAPIdeJava
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 18/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
compilacinyejecucin,enestecasojavac.exeyjava.exe,ascomolaslibrerascontenidasenlaAPIdeJava
ylasclasesdelusuario.

La variable PATH: como an no disponemos de un IDE (Integrated Development Environment Entono


Integrado de Desarrollo) la nica forma de ejecutar programas es a travs de lnea de comandos. Pero slo
podremos ejecutar programas directamente si la ruta hacia ellos est indicada en la variable PATH del ordenador. Es necesario que
incluyamoslarutahaciaestosprogramasennuestravariablePATH.EstarutaserellugardondeseinstalelJDKhastasudirectoriobin.

Paraello,siguelasindicacionesquetemostramosacontinuacin.

Debesconocer
EnlasiguienteanimacinaprenderscmoconfigurarlavariablePATHenWindows.
Resumentextualalternativo

Presentacinapantallacompleta.

Parasaberms
Si deseas conocer ms sobre la configuracin de variables de entorno en sistemas Windows y Linux, te proponemos los
siguientesenlaces:

ConfigurarelPATHenWindows

Java - Variables PATH y CLASSPATH - Compilar

Resumendelvdeo

CmoinstalarJava(jdkyjre)enUbuntu/Debian(Gnu/Linux)

Como instalar Java (jdk y jre) en Ubuntu/Debian

Resumendelvdeo

CmopuedoestablecerocambiarlavariabledelsistemaPATH?

Lavariable CLASSPATH: esta variable de entorno establece dnde buscar las clases o biblitecas de la API de Java, as como las clases
creadasporelusuario.Esdecir,losficheros.classqueseobtienenunavezcompiladoelcdigofuentedeunprogramaescritoenJava.Es
posiblequeendicharutaexistandirectoriosyficheroscomprimidosenlosformatoszipo jarquepuedenserutilizadosdirectamenteporel
JDK,conteniendoensuinteriorarchivosconextensinclass.

(Porejemplo:C:\ProgramFiles\Java\jdk1.8.0_60\bin)

Si no existe la variable CLASSPATH debes crearla, para modificar su contenido sigue el mismo mtodo que hemos empleado para la
modificacindelvalordelavariablePATH,anteriormentedescrito.Tenencuentaquelarutaquedebesincluirserellugardondeseinstalel
JDKhastasudirectoriolib.

(Porejemplo:C:\ProgramFiles\Java\jdk1.8.0_60\lib)

Autoevaluacin
Qu variable de sistema o de entorno debemos configurar correctamente para que podamos compilar directamente
desdelalneadecomandosnuestrosprogramasescritosenlenguajeJava?

CLASSPATH.

PATH.

Javac.exe.

Noescorrecto,estaeslavariablequehemosdeconfigurarparaconseguirquelasclasesdeJavaolascreadasporel
usuarioestnaccesiblespornuestrosprogramas.

Efectivamente,estaeslavariabledeentornoquemodificaremosaadiendoasucontenidolarutahastaeldirectoriobin
dondeestinstaladoelJDK.

Noescorrecto,lapreguntatepedaculeslavariable,noculeselprogramapararealizarlacompilacin.

Solucin

1.Incorrecto
2.Opcincorrecta
3.Incorrecto

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 19/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

7.5. Codificacin, compilacin y ejecucin de


aplicaciones.
UnavezquelaconfiguracindelentornoJavaestcompletadaytenemoselcdigofuentedenuestroprogramaescritoenunarchivocon
extensin.java,lacompilacindeaplicacionesserealizamedianteelprogramajavacincluidoenelsoftwarededesarrollodeJava.

Parallevaracabolacompilacindesdelalneadecomandos,escribiremos:

javacarchivo.java

DondejavaceselcompiladordeJavayarchivo.javaesnuestrocdigofuente.

ElresultadodelacompilacinserunarchivoconelmismonombrequeelarchivoJavaperoconlaextensin
.class.Estoyaeselarchivoconelcdigoenformadebytecode,esdecir,conelcdigoprecompilado.Sienel
cdigo fuente de nuestro programa figuraran ms de una clase, veremos cmo al realizar la compilacin se
generarntantosarchivosconextensin.classcomoclasestengamos.Adems,siestasclasestenanmtodo
main()podremosejecutardichosarchivosporseparadoparaverelfuncionamientodedichasclases.

Para que el programa pueda ser ejecutado, siempre y cuando est incluido en su interior el mtodo main(),
podremosutilizarelintrpreteincluidoenelkitdedesarrollo.

Laejecucindenuestroprogramadesdelalneadecomandospodremoshacerlaescribiendo:

javaarchivo

Donde java es el intrprete y archivo es el archivo con el cdigo precompilado. Es IMPORTANTE aclarar que donde ponemos
archivo, nos referimos al archivo ya precompilado en bytecodes, que tiene la extensin .class, pero NO hay que poner dicha
extensinparaejecutarelarchivo,sloelnombre.Estosevemsclaroenlasexplicacionesdelejercicioresuelto.

Ejercicioresuelto
Vamos a llevar a la prctica todo lo que hemos estado detallando a travs de la creacin, compilacin y ejecucin de un
programasencilloescritoenJava.

Mostrarretroalimentacin

Observaelcdigo que se muestrams abajo, seguro que podrs entenderpartedel.Cpialoenuneditordetexto,


respetando las maysculas y las minsculas. Puedes guardar el archivo con extensin .java en la ubicacin que
prefieras. Recuerda que el nombre de la clase principal (en el cdigo de ejemplo MiModulo) por ser public, debe ser
exactamente igual al del archivo con extensin .java. Si tienes esto en cuenta la aplicacin podr ser compilada
correctamenteyejecutada.
/**<br /> * La clase MiModulo implementa una aplicacin que<br /> * simplemente imprime "Mdulo profesional
Programacin"enpantalla.<br/>*/<br/>classMiModulo{

public static void main(String[] args) {<br /> System.out.println("Mdulo profesional Programacin") //
Muestralacadenadecaracteres.<br/>}

}
Accedealalneadecomandosyteclea,teniendocomodirectorioactivolacarpetadondehasguardadoelarchivo.java
(y suponiendo que se ha establecido correctamente el valor para la variable de entorno PATH), el comando para
compilarlo:
javacMiModulo.java
Elcompiladorgeneraentoncesunficherodecdigodebytes:MiModulo.class.Sivisualizasahoraelcontenidodela
carpetaversqueenellaestelarchivo.javayunoovarios(dependedelasclasesquecontengaelarchivoconel
cdigofuente)archivos.class.
Finalmente,pararealizarlaejecucindelprogramadebesutilizarlasiguientesentencia:
javaMiModulo
Sitodohaidobien,versescritoenpantalla:MduloprofesionalProgramacin.

7.5.1. Solucin a posibles problemas con la codificacin


de caracteres acentuados.
Tehapasadoquealprobaraejecutarunprogramaquedebeescribiralgncarcteracentuado,ensulugaraparecencaracteresextraos?
Alguna vez has visitado una web en la que todos los caracteres acentuados aparecen como un cuadradito negro con una interrogacin
dentro(Mara)olacomo(Espaa)?CmoevitarelproblemadeloscaracteresextraosalmostrarcaracteresacentuadosenJava?

Esto suele pasar cuando se intenta ejecutar un programa en Java que contiene caracteres acentuados, y trabajamos con la consola de
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 20/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Esto suele pasar cuando se intenta ejecutar un programa en Java que contiene caracteres acentuados, y trabajamos con la consola de
comandos.Encualquiercaso,nodebispreocuparosdemasiadodeestosfallosenestemdulo,yaquelaformanormaldeprogramaren
JavaNOesusandoelJDKapelo(aunqueestbienquesesepaqueesposible),sinoquesesueleprogramarhaciendousodeunentorno
dedesarrollocomoeselcasodeNetBeans,queestetipodeproblemaslos"solventa"pordefecto,usandolacodificacinadecuada,deforma
quelosacentossevencorrectamente,etc.

Parasaberms
A continuacin, recomendar un enlace en el que explica muy bien a qu se debe el problema, por qu se produce y cmo
solucionarloendistintosentornos.

Sobrelasreglasdecodificacino...dedndesalenesoscaracteres"raros"?

Unasolucinmuysimple,yquesuelefuncionarenlamayoradeloscasosconsisteenguardarelarchivo.java,compilarlo,eindicarleenel
momentodeejecutarculeslacodificacincorrectaquetienequeusar,forzandoaquemuestrelasalidaconesacodificacin:

javaDfile.encoding=cp850PROG_programa1

Enesteejemplo,lapginadecdigosqueusamosennuestrosistemaesla850,yporesoponemosencoding=cp850,peropuedesforzara
usar cualquier otra codificacin que use tu sistema. Para averiguar cul es la codificacin de tu sistema, puedes usar desde la consola el
comandochcp(sonlasinicialesdeCHangeCodePage,yaquesirveparamostrarytambinparacambiarlacodificacinqueusatuequipo).
Miraunejemploenlasiguientecapturadepantalla:

CapturadepantalladeconsoladecomandosenWindows.

Como regla general, podemos seguir una serie de pasos para no tener problemas con las tildes (en entornos Windows). Es una manera
alternativa para no tener que usar las opciones de forzado de uso de una cierta tabla de caracteres al ejecutar los comandos javac o java.
Aunque esta solucin implica que debemos saber de antemano qu juego de caracteres se usar all donde vayamos a ejecutar nuestro
programa. Para los primeros ejercicios donde sabemos que los vamos a hacer en la consola de comandos, nos puede valer esta
"artimaa", aunque como ya se ha dicho, cuando utilicemos entornos de desarrollo (en nuestro caso NetBeans) podremos "olvidarnos" de
estascuestiones.Lospasosaseguirsonlossiguientes:

EnlaconsoladeWindowsejecutamoselcomandochcpparaquenosdigaqujuegodecaracteresestusandonuestrosistema.(Verla
capturadepantallaanterior).
ConNotepad++creounarchivoenblancoyantesdenadaleindicoquequierousareljuegodecaracteresdeEuropaoccidental/OEM
850.

CapturadepantalladeNotepad++.GNU/GPL.Notepad++
Pego el cdigo de mi programa y lo guardo como archivo <strong><span style="fontsize: medium">J</span><span style="fontsize:
medium">avasource(.java)</span></strong>

CapturadeelaboracinpropiaapartirdeNotepad++,conlicenciaGNU/GPL.

Finalmentepasamosacompilarel.javayaejecutarel.classyvemosenestacapturaquesehacecorrectamente:

CapturadepantalladelaconsoladecomandosdeWindows.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 21/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

7.6. Tipos de aplicaciones en Java.


LaversatilidaddellenguajedeprogramacinJavapermitealprogramadorcreardistintostiposdeaplicaciones.A
continuacin,describiremoslascaractersticasmsrelevantesdecadaunodeellos:

Aplicacionesdeconsola:
Sonprogramasindependientesaligualqueloscreadosconloslenguajestradicionales.
Se componen como mnimo de un archivo .class que debe contar necesariamente con el mtodo
main().
No necesitan un navegador web y se ejecutan cuando invocamos el comando java para iniciar la
MquinaVirtualdeJava(JVM).Denoencontrarseelmtodomain()laaplicacinnopodrejecutarse.
Las aplicaciones de consola leen y escriben hacia y desde la entrada y salida estndar, sin ninguna
interfazgrficadeusuario. Oxygenteam

Aplicacionesgrficas:
Aquellas que utilizan las clases con capacidades grficas, como Swing, que es la biblioteca para la interfaz grfica de usuario
avanzadadelaplataformaJavaSE.
Incluyen las instrucciones import, que indican al compilador de Java que las clases del paquete javax.swing se incluyan en la
compilacin.

Applets:
Son programas incrustados en otras aplicaciones, normalmente una pgina web que se muestra en un navegador. Cuando el
navegador carga una web que contiene un applet, ste se descarga en el navegador web y comienza a ejecutarse. Esto nos
permitecrearprogramasquecualquierusuariopuedeejecutarcontansolocargarlapginawebensunavegador.
SepuedendescargardeInternetyseobservanenunnavegador.LosappletssedescarganjuntoconunapginaHTMLdesdeun
servidorwebyseejecutanenlamquinacliente.
No tienen acceso a partes sensibles (por ejemplo: no pueden escribir archivos), a menos que uno mismo le d los permisos
necesariosenelsistema.
Notienenunmtodoprincipal.
SonmultiplataformaypuedenejecutarseencualquiernavegadorquesoporteJava.

Servlets:
SoncomponentesdelapartedelservidordeJavaEE,encargadosdegenerarrespuestasalaspeticionesrecibidasdelosclientes.
Los servlets, al contrario de los applets, son programas que estn pensados para trabajar en el lado del servidor y desarrollar
aplicacionesWebqueinteractenconlosclientes.

Midlets:
SonaplicacionescreadasenJavaparasuejecucinensistemasdepropsitosimpleodispositivosmviles.AlgunosjuegosJava
creadosparatelfonosmvilessonmidlets.
Son programas creados para dispositivos embebidos (se dedican a una sola actividad), ms especficamente para la mquina
virtualJavaMicroEdition(JavaME).
Generalmentesonjuegosyaplicacionesqueseejecutanentelfonosmviles.

Autoevaluacin

UnAppletestotalmenteseguro,yaquenopuedeacceder,enningncaso,azonassensiblesdelsistema.Esdecir,no
podraborraromodificarnuestrosarchivos.

Verdadero Falso

Falso
Losapplets podran acceder a zonas sensibles de nuestro sistema si les diramos permisos para hacerlo. Pero si no
estfirmadocomoconfiable,tieneunaccesolimitadoalsistemadelusuario.

8. Entornos Integrados de Desarrollo (IDE).

Casoprctico

Ada,JuanyMara estn navegando por Internet buscando informacin sobre herramientasque


lesfacilitentrabajarenJava.Adaaconsejautilizaralgunodelosentornosdedesarrollointegrado
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 22/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
lesfacilitentrabajarenJava.Adaaconsejautilizaralgunodelosentornosdedesarrollointegrado
existentes, ya que las posibilidades y rapidez que ofrecen aumentaran la calidad y reduciran el
tiemporequeridoparadesarrollarsusproyectos.

Juan, que est chateando con un miembro de un foro de programadores al que pertenece,
corroboraloqueAdarecomienda.

EnloscomienzosdeJavalautilizacindelalneadecomandoseraalgohabitual.Elprogramadorescribael
cdigo fuente empleando un editor de texto bsico, seguidamente, pasaba a utilizar un compilador y con l
obtena el cdigo compilado. En un paso posterior, necesitaba emplear una tercera herramienta para el
ensambladodelprograma.Porltimo,podaprobaratravsdelalneadecomandoselarchivoejecutable.El
problema surga cuando se produca algn error, lo que provocaba tener que volver a iniciar el proceso
completo.

Estascircunstanciashacanqueeldesarrollodesoftwarenoestuvieraoptimizado.Conelpasodeltiempo,se
fueron desarrollando aplicaciones que incluan las herramientas necesarias para realizar todo el proceso de
programacin de forma ms sencilla, fiable y rpida. Para cada lenguaje de programacin existen mltiples
entornosdedesarrollo,cadaunoconsusventajaseinconvenientes.Dependiendodelasnecesidadesdela BillBertram

personaquevaaprogramar,lafacilidaddeusooloagradablequeleresultetrabajarconl,seelegirentreunosuotrosentornos.

ParaellenguajedeprogramacinJavaexistenmltiplesalternativas,siendolosprincipalesentornosdedesarrolloNetBeans(quecuentacon
elapoyodelaempresaSun),EclipseyJCreator.Losdosprimerossongratuitos,consoportedeidiomasymultiplataforma(Windows,Linux,
MacOS).

Yculserconelquevamosatrabajar?Elentornoquehemosseleccionadollevaracabonuestrosdesarrollosdesoftwareenestemdulo
profesional ser NetBeans, al haber sido construido por la misma compaa que cre Java, ser de cdigo abierto y ofrecer capacidades
profesionales.Aunque,notepreocupes,tambinharemosunrecorridoporotrosentornosdestacables.

8.1. Qu son?
Sonaplicacionesqueofrecenlaposibilidaddellevaracaboelprocesocompletodedesarrollodesoftwareatravsde
unnicoprograma.Podremosrealizarlaslaboresdeedicin,compilacin,depuracin,deteccindeerrores,correccin
yejecucindeprogramasescritosenJavaoenotroslenguajesdeprogramacin,bajounentornogrfico(nomediante
lneadecomandos).Juntoalascapacidadesdescritas,cadaentornoaadeotrasqueayudanarealizarelprocesode
programacin,comoporejemplo:cdigofuentecoloreado,plantillasparadiferentestiposdeaplicaciones,creacinde
proyectos,etc.

Hayquetenerencuentaqueunentornodedesarrollonoesmsqueunafachadaparaelprocesodecompilaciny
GNUGPLSasaStefanovic ejecucin de un programa. Qu quiere decir eso? Pues que si tenemos instalado un IDE (Entorno Integrado de
Desarrollo)ynotenemosinstaladoelcompilador,notenemosnada.

Parasaberms
Si deseas conocer algo ms sobre lo que son los Entornos Integrados de Desarrollo (IDE) accede a las definiciones que te
proponemosacontinuacin:

DefinicindeEntornoIntegradodeDesarrollo

DefinicindeEntornoIntegradodeDesarrolloenWikipedia

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 23/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

8.2. IDE actuales.


ExistenenelmercadomultituddeentornosdedesarrolloparaellenguajeJava,loshaydelibredistribucin,depago,paraprincipiantes,para
profesionales,queconsumenmsrecursos,quesonmsligeros,msamigables,mscomplejosqueotros,etc.

Entrelosquesongratuitosodelibredistribucintenemos:

NetBeans.
Eclipse.
BlueJ.
jGRASP.
JCreatorLE.

Entrelosquesonpropietariosodepagotenemos:

IntelliJIDEA.
JCreator.
JDeveloper.

Debesconocer
Cadaunodelosentornosnombradosmsarribaposeecaractersticasqueloshacendiferentesunosdeotros,peroparatener
unaideageneraldelaversatilidadypotenciadecadaunodeellos,accedealasiguientetablacomparativa:

ComparativaentornosparaJava

Pero,culoculessonlosmsutilizadosporlacomunidaddeprogramadoresJava?

ElpuestodehonorselodisputanentreEclipse,IntelliJIDEAyNetBeans.

EnlossiguientesepgrafesharemosunadescripcindeNetBeansyEclipse,paraposteriormentedesarrollarlos
puntosclavesdelentornoNetBeans.

Svilen.milev

Parasaberms
Si quieres conocer la situacin actual de uso y comparar diferentes entornos integrados de desarrollo para el lenguaje de
programacinJava,puedesampliardatosenelsiguienteartculo:

ArtculosobreutilizacindeentornosJava.

Para acceder a los lugares de Internet donde obtener los diferentes entornos integrados de desarrollo, puedes utilizar la lista
queteofrecemosenelanexoquehayalfinaldelaunidad.

Autoevaluacin
CuldelossiguientesentornossloestsoportadoenlaplataformaWindows?

Eclipse.

IntelliJIDEA.

JCreator.

No,elniveldeexpansindeEclipsesehavistopotenciadoporestarsoportadoenlamayoradeplataformas.

Noesas,esteentornoestsoportadoentodaslasplataformaseincorporaunentornovisualdedesarrollo.

Correcto, este entorno, adems de ser de pago, slo es soportado en la plataforma Windows. No incorpora un entorno
visualdedesarrollo.

Solucin

1.Incorrecto
2.Incorrecto
3.Opcincorrecta

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 24/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

8.3. El entorno NetBeans.


Comosehaindicadoanteriormente,elentornodedesarrolloquevamosautilizaralolargodeloscontenidos
delmduloprofesionalserNetBeans.Porloquevamosprimeroaanalizarsuscaractersticasydestacar
lasventajasquepuedeaportarsuutilizacin.
citaNetBeans.org
Se trata de un entorno de desarrollo orientado principalmente al lenguaje Java, aunque puede servir para
otroslenguajesdeprogramacin.Esunproductolibreygratuitosinrestriccionesdeuso.Esunproyectodecdigoabiertodegranxito,con
unacomunidaddeusuariosnumerosa,encontinuocrecimientoyapoyadoporvariasempresas.

El origen de este entorno hay que buscarlo en un proyecto realizado por estudiantes de la Repblica Checa. Fue el primer IDE creado en
lenguaje Java. Un tiempo ms tarde, se form una compaa que sera comprada en 1999 por Sun Microsystems (quien haba creado el
lenguajeJava).Pocodespus,SundecidiqueelproductoseralibreydecdigoabiertoynaciNetbeanscomoIDEdecdigoabiertopara
crearaplicacionesJava.

NetBeans lleva tiempo pugnando con Eclipse por convertirse en la plataforma ms importante para crear aplicaciones en Java y hasta el
nombre(Eclipse)estodaunadeclaracindeintencionesdehacerlelacompetenciaaOracle,(laempresapropietariadeNetBeans).Oracle
CorporationadquiriSunMicrosystemsen2009.NetBeanssiguesiendosoftwarelibreyofrecelassiguientesposibilidades:

EscribircdigoenC,C++, Ruby, Groovy, Javascript, CSSy PHPademsdeJava.


PermitircrearaplicacionesJ2EEgraciasaqueincorporaservidoresdeaplicacionesJava(actualmente Glassfishy Tomcat).
Crearaplicaciones Swingdeformasencilla,alestilodelVisualStudiodeMicrosoft.
CrearaplicacionesJMEparadispositivosmviles.

Laltimaversinlanzadaennoviembrede2015esNetBeans8.1

PuedesconsultarlahojaderutaparadesarrollosNetBeansenelsiguienteenlace:

NetBeansReleaseRoadmap

La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados
mdulos.UnmduloesunarchivoJavaquecontieneclasesdeJavaescritasparainteractuarconlasAPIdeNetBeansyunarchivoespecial
(manifestfile)queloidentificacomomdulo.

Lasaplicacionesconstruidasapartirdemdulospuedenserextendidasagregndolenuevosmdulos.Debidoaquelosmdulospuedenser
desarrollados independientemente, las aplicaciones basadas en esta plataforma pueden ser extendidas fcilmente por cualquiera que
desarrolletambinsoftware.

Cada mdulo provee una funcin bien definida, tales como el soporte de Java, edicin, o soporte para el sistema de control de versiones.
NetBeanscontienetodoslosmdulosnecesariosparaeldesarrollodeaplicacionesJavaenunasoladescarga,permitiendoalapersonaque
vaarealizarelprogramacomenzaratrabajarinmediatamente.

Parasaberms
Encuentramsinformacinsobreestaplataformaenlosenlacesqueteproponemosacontinuacin:

InformacinoficialsobreNetBeans

VersionesdelentornoNetBeans

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 25/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

8.4. Instalacin y configuracin.


PararealizarlainstalacindelentornoNetBeans,seguiremoslossiguientespasosbsicos:

1.Descargadelaversindeseadadesdelaweboficialodesdelosenlacespropuestosmsabajo.Laversin
completa contiene todas las posibilidades, aunque es la ms pesada. En nuestro caso, por estar en fase de
iniciacin,podrasersuficientedescargarlaversinmsbsica.
2.Seleccionar la plataforma o sistema operativo, existen versiones para Windows, Linux y MacOS. Tanto en
WindowscomoenLinux,sedescargaunarchivoejecutablequeseencargadelainstalacin.
3.Seleccionarelidioma.
4.Comenzarladescargadelarchivodeinstalacinejecutableyunavezfinalizada,lanzarste,comenzando
lainstalacinennuestroequipo.
5.Enlasprimeraspantallas,seleccionaremosloscomponentesainstalar.Comomnimo,parapoderprogramar
enJavaserimprescindibleinstalarelIDEbsicoyJavaSE.
NevitDilmen
6.Posteriormente,establecemoseldirectoriodondeseinstalarNetBeans,ascomolacarpetaquecontieneel
JDKqueseutilizarpordefecto.
7.Finalmente,lainstalacinsecompletaydispondremosdeesteentornototalmenteoperativo.

Parallevaracabolasoperacionesdescritasenelpaso1,teofrecemoslaposibilidaddedescargarcadaunadelaspartesporseparado,o
bien,enconjunto,atravsdelossiguientesenlaces:

DescarganicamenteNetBeanssitienesyainstaladoelJDK.

DescargaNetBeansyJDKdesdelapginaoficialdeOracle

Enesteltimoenlace,debeselegireliconocorrespondienteaJDK8u77&NetBeans8.1,yapartirdeah,seleccionarelarchivodedescarga
adecuadoparatuequipo,deformamuysimilaracomohabamoshechoparaladescargadelJDK.Elprocesodeinstalacintampocotiene
ningunadificultad.

Debesconocer
ParaaprendercmorealizarlainstalacindeNetBeans,ensusltimasversiones,ytantoenplataformasWindowscomoLinux,
lo mejor es "ir a las fuentes" y seguir las instrucciones de instalacin que se muestran en la propia pgina web del proyecto
NetBeans:

NetBeansIDEInstallationInstructions

Estneningls,peromanejarsemnimamenteconelinglstcnicoesalgoque,comofuturoprofesionaldelaprogramacin,te
aconsejamosqueempiecesapracticaractivamente.Encualquiercaso,siusasporejemploelnavegadorGoogleChrome,
puedesecharmanodelaayuditaqueproporcionalatraduccinautomticadeunawebcompleta.Latraduccinautomticaque
proporcionaesbastanteaceptable...aunqueobviamentenoesperfecta.

Sinecesitasalgomsdetallado,enyoutubepuedesencontrarmultituddevideotutorialesqueteexplicanelprocesode
instalacineinclusolacreacindelosprimerosprogramas.

Buscarinformacinenlawebtambinesparteimportantedeltrabajodecualquierprofesionaldelaprogramacin,te
animamosaintentarlo!!

8.5. Aspecto del entorno y gestin de proyectos.


La pantalla inicial de nuestro entorno de desarrollo ofrece accesos directos a las operaciones ms usuales: aprendizaje inicial, tutoriales,
ejemplos,demos,losltimosprogramasrealizadosylasnovedadesdelaversin.

Paracomenzaradescribirelaspectodelentorno,esnecesariocrearunnuevoproyectoaccediendoalmenFileNewProject,indicaremos
eltipodeaplicacinquevamosacrear.

Debesconocer
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 26/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Debesconocer
Paracontinuarconlacreacindenuestroproyectoyladescripcindelaspectodelentorno,accedealasiguientepresentacin:
Resumentextualalternativo

Presentacinapantallacompleta.

CuandotrabajemosconNetBeans,nuestrosproyectosharnusodeclasesparapoderdesarrollarlasoperacionesdenuestros
programas.Estasclasesseagruparnenpaquetesyenlasiguientepresentacinpuedesaprendercmosegestionanatravs
delentorno:
Resumentextualalternativo

Presentacinapantallacompleta.

UnadelasventajasqueofreceesteentornoespoderexaminarnuestrosproyectosatravsdelavistaArchivos.Estavistanosenseala
realidaddelosarchivosdelproyecto,lacarpetabuildcontienelosarchivoscompilados(.class),lacarpetasrcelcdigofuenteyelresto,son
archivos creados por Netbeans para comprobar la configuracin del proyecto o los archivos necesarios para la correcta interpretacin del
cdigoenotrossistemas(encualquiercasonohayqueborrarlos).Paraactivarestavista,seleccionaenelmenprincipalWindowsFiles.

Autoevaluacin
Rellenaloshuecosconlosconceptosadecuados:
EnNetBeans,losarchivos.classdeunproyectoestnalojadosenlacarpeta ylos.Javaenlacarpeta .
Enviar

Losarchivoscorrespondientesalasclasessealojanenlacarpetabuildylosarchivosconelcdigofuentesealojanen
lacarpetasrc.

9. Creacin de mi primer programa.

Casoprctico

MarayJuanhanformadoequipoparadesarrollarunaaplicacininformticaparaunaclnicaveterinaria.
Adahaconvocadounareuninconelclienteparaconcretarlosrequerimientosdelaaplicacin,perolo
queestclaroesquedebesermultiplataforma.EllenguajeescogidohasidoJava.

Mara tiene conocimientos de redes y de pginas web pero est floja en programacin. Juan aprendi
JavaenelciclodeDAIhaceunosaos.

Lo que hace falta es entender bien los conceptos de programacin orientada a objetos le comenta
JuanaMara.Todoloconcernientealmundorealpuedesermodeladoatravsdeobjetos.Unobjeto
contienedatosysobrelsehacenoperacionesygiratodalaaplicacin.

Maraestentusiasmadaconelproyecto,creequeesunabuenaoportunidadparaaprenderunlenguajedelamanodeJuan,a
quienseledabastantebientodolorelacionadoconlaprogramacin.

Todosloslenguajesdeprogramacinestnconstituidosporelementosconcretosquepermitenrealizarlasoperacionesbsicasdellenguaje,
comotiposdedatos,operadoreseinstrucciones.Estosconceptosdebenserdominadosporlapersonaquedeseeincorporarse,conciertas
garantas, a un equipo de programacin. Debemos tener en cuenta que los programas trabajan con datos, los cuales se almacenan en
memoriaysonposteriormenteusadosparalatomadedecisionesenelprograma.

En los siguientes apartados se introducen los distintos tipos de datos que se pueden emplear en Java. En concreto, se vern los tipos
primitivos en Java, as como las variables y las constantes. En posteriores unidades veremos otros elementos bsicos del lenguaje,
incluyendoestructurasdedatosmssofisticadas.Antesdenada,veremosunpocodepseudocdigo.

Cadavezqueusamosunordenador,estamosejecutandovariasaplicacionesquenospermitenrealizarciertas
tareas. Por ejemplo, en nuestro da a da, usamos el correo electrnico para enviar y recibir correos, o el
navegadorparaconsultarpginasenInternetambasactividadessonejemplosdeprogramasqueseejecutan
enunordenador.

Losprogramasdeordenadordebenresolverunproblema,paralocualdebemosutilizardeformainteligentey
lgica todos los elementos que nos ofrece el lenguaje. Por eso es importante elegir un lenguaje de
programacinconelquenossintamoscmodosporquelodominemossuficientementey,porsupuesto,porque
sepamosquenovaaofrecerlimitacionesalahoradedesarrollaraplicacionesparadiferentesplataformas.
RambergMediaImages

El lenguaje que vamos a utilizar en este mdulo es Java. Es un lenguaje multiplataforma, robusto y fiable. Un lenguaje que reduce la
complejidad,modernoyorientadoaobjetos.Enestaunidadnosvamosaadentrarensusintaxis,vamosaconocerlostiposdedatoscon
losquetrabaja,lasoperacionesquetienendefinidascadaunodeellos,utilizandoejemplossencillosquenosmuestrenlautilidaddetodolo
aprendido.

Paraello,vamosatratarsobrecmosealmacenanyrecuperanlosdatosdevariablesycadenasenJava,ycmosegestionanestos
datosdesdeelpuntodevistadelautilizacindeoperadores.

Trabajarcondatosesfundamentalencualquierprograma.Aunqueyahayasprogramadoenestelenguaje,chaleunvistazoalcontenidode
estaunidad,porquepodrsrepasarmuchosconceptos.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 27/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Parasaberms
AhoraquevamosaempezarconlasintaxisdeJava,quizsteintereseteneramanoladocumentacinqueofrecelapgina
web de Oracle sobre Java SE. La plataforma Java SE est formada principalmente por dos productos: el JDK, que
contiene los compiladores y depuradores necesarios para programar, y el JRE, que proporciona las libreras o
bibliotecasyla JVM,entreotraseriedecomponentes.

Puedes consultar informacin de la ltima versin de Java SE, en el siguiente enlace donde puedes encontrar toda la
documentacinsobreestatecnologa:

DocumentacindeOraclesobreJavaSE

DentrodeladocumentacindeOraclesobreJavaSEseencuentraellibroTheJavaLanguageSpecification.Estelibroest
escrito por los inventores del lenguaje, y constituye una referencia tcnica casi obligada sobre el mismo. Como mucha de la
documentacinoficialdeJava,seencuentraeningls.Elenlacedirectoeselsiguiente:

TheJavaLanguageSpecification

Recomendacin
Acostmbrate a leer y consultar la documentacin sobre la versin de Java que ests utilizando en tus programas. Eso te
ayudarasabertodaslasposibilidadesquetieneellenguaje,ysienunmomentodadoestsutilizandobienunadeterminada
caracterstica.

9.1. Qu es el pseudocdigo?

Estesubepgrafe,ylossiguientesdeesteapartado,pretendeserunrefuerzoparaaquellaspersonasalasquelescuesteunpoco
msentendercmodescribiralgoritmosdeformacomprensibleparalosordenadores,paraquienesempezardirectamenteconun
lenguajedeprogramacinpuedesermscomplicado.Sueleserunentrenamientoprevioeficazquepermiteaprenderaresolver
losproblemasdeformamuysimilaracomoluegosevaahacerconunprograma,perosinnecesidaddetenerquepreocuparnos
de respetar los detalles de sintaxis de cualquier lenguaje de programacin que tan engorrosos resultan cuando estamos
comenzandoynodominamosandicholenguaje.

Enlasiguientepresentacinpuedesencontrardosrepresentacionesdiferentesdelmismoalgoritmoycompararcadaunodelospasosdel
algoritmoenlaotrarepresentacin.Aunquelosdiagramasdeflujotienenciertautilidad,novamosaprofundizarenellos,noscentraremosen
elusodepseudocdigo,paraverloenparaleloalaintroduccindellenguajeJava.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 28/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Esperamosqueteresultedeayuda.

Dospresentacionesparaunmismoalgoritmo.
Resumentextualalternativo

Nosotros aqu nos vamos a centrar ahora exclusivamente en el pseudocdigo, aunque en las presentaciones aparezcan ocasionalmente
indicacionessobrediagramas,quesondefcilcomprensin,porotraparte.Alescribircualquieralgoritmohayquetenerencuenta:

Encadamomentoslosepuedeejecutarunaaccin(osentenciaoinstruccin).
Dentrodelassentenciasdelalgoritmopuedenexistirpalabrasreservadas,esdecir,palabrasalasqueselesdaundeterminado
significado,yquenopodremosusarparanadadistinto.
Siestamosutilizandopseudocdigotenemostambinqueusarlaindentacin(distintosnivelesdesangrasdeltexto),lacualmejora
lalegibilidaddelalgoritmoyaspuedeentendersemejor.

Esunaformaderepresentarunalgoritmocomnmenteusada,intermediaentreellenguajenaturalyellenguajedeprogramacin
paraladescripcindelasolucindeunproblema,queevitalasambigedadesdellenguajenaturalynoentraenlosdetallesde
sintaxisdeunlenguajedeprogramacinconcreto.

Esunlenguajedeespecificacindealgoritmos,peromuyparecidoacualquierlenguajedeprogramacin.
Sutraduccinacualquierlenguajeconcretoesmuysencilla.
No se rige por las normas de un lenguaje en particular, no hay que tener en cuenta la sintaxis concreta de cada sentencia, sino que
podemoshacerlocasicomoqueramos,siemprequeloqueescribamosnoseaambiguoyseaclaroparacualquiera.
Secentramsenlalgicadelproblemaqueenlosdetallesdesintaxis.
Noestanvisualcomolosdiagramasdeflujo.
Las soluciones en pseudocdigo son bastante ms fciles de hacer y de corregir que las representaciones grficas, ya que el
pseudocdigoesslotexto.
El pseudocdigo tambin va a utilizar una serie de palabras clave o palabras especiales que van indicando lo que debe hacer el
algoritmo.

Parasaberms
Unaherramientaparahacerdiagramasdeflujo,vlidaparaplataformasWindowsyLinux,eslaaplicacinDIA,ungeneradorde
diagramas de flujo muy til y software libre. A continuacin te dejamos un enlace a la definicin que da la wikipedia de esta
herramientayotroalapginaoficialdelproyectoDIA:

QuesDIA

ProyectoDIAdeGNOME

9.2. Estructura de un algoritmo en pseudocdigo.


Hemos comentado que el pseudocdigo es parecido a cualquier lenguaje de programacin, y por ello tiene una estructura ms o menos
definida,comolosprogramas.Qupartescomponenesaestructura?

Elalgoritmotendrtrespartes:lacabecera,lazonadedeclaracindeconstantesyvariablesyelcuerpo.

Lacabeceracontieneelnombredelalgoritmo,ypocoms.
Lazonadedeclaracionesdevariablesyconstantesestablecequvariablesyconstantesvamosausar,indicandojuntoalnombreel
tipodelasmismasyelvalorenelcasodelasconstantes.
El cuerpo del algoritmo es el que contiene las instrucciones que indican las acciones a realizar por el programa. Comienza con la
palabraInicioyterminaconlapalabraFin(opalabrassimilares).

Elaspectofinaldelalgoritmoesalgosimilaralsiguienteesquema,enelqueloscorchetesangularesindicanqueloquevadentrosesustituir
porunnombreconcreto,untipoconcreto,etc.

Algoritmo<nombrealg>
Const<nombre>:<tipo>,<nombre>:<tipo>,
Var<nombre>:<tipo>,<nombre>:<tipo>,
Inicio
<Instrucciones>
Fin

Enelcuerpo,paraquequedemslegible,hayqueusarla indentacinysiesnecesariohayqueusarcomentariosidentificadoscomo
talesporalgnsmbolo,talcomollaves{}oentre/**/,queesyacasiunestndar.

Lasdistintasestructurasdecontroldeflujoquesepuedenusarenunalgoritmolasvamosaintroducirpocoapoco,alaparqueenJava.En
estaunidadslousaremoslaprimera(secuenciadeinstrucciones),ylasegunda(condicional,quesecorresponderaenunadesusversiones
mssimplesconelusodeloperadorcondicional),yaqueeslonicoquedemomentohemosvistosobreestructurasdecontrol:

Estructurasdecontrolenpseudocdigo

EstructuradeControl Descripcin

Inicio
Por donde empieza y acaba el algoritmo, y las
<listadeinstrucciones,unaencadalnea>
instrucciones escritas en el orden en que se
Fin ejecutarn.

Si<condicin>Entonces
<accionessiverdadera>
Ejecucin condicional de un conjunto de
Sino acciones, segn la condicin que se evala y
<accionessifalsa> compruebaseaverdaderaofalsa.
FinSi

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 29/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Autoevaluacin
Podemosafirmarqueelpseudocdigoesunaformaintermediaentreellenguajenaturalyellenguajedeprogramacin
paraladescripcindelasolucindeunproblema,queevitalasambigedadesdellenguajenaturalynoentraenlos
detallesdesintaxisdeunlenguajedeprogramacinconcreto.

Verdadero Falso

Verdadero
Esverdadero.Nohabrsfallado,verdad?

9.3. Estructura secuencial.


Siemprequetengasqueindicarunaseriedepasosquedebendarseenelordenqueseindican,debersusarestaestructura.

Escuandounainstruccinsigueaotraensecuencia,escritasenelordenenquevanaejecutarse.

Enpseudocdigoeslaestructura:

Sentencia1
Sentencia2
Sentencia3

sentenciaN

Unejemplo de cmo se representa la misma estructura secuencial en los dos sistemas de representacin de algoritmos que hemos visto:
Flujogramaypseudocdigo.

9.4. Estructura condicional, selectiva o alternativa.


Tenemos que comprobar alguna condicin antes de decidir qu sentencia es la que debemos ejecutar? En ese caso la estructura
condicionaleslaadecuada.

Seevalalacondicinyenfuncindelresultadoseejecutaunconjuntodeinstruccionesuotro.

Haytrestiposdesentenciasselectivas:

Condicionalsimple.
Condicionaldoble.
Selectivamltiple.(Severenlaprximaunidad,juntoconalgunasestructurasdecontrolms,cuandosehayaprofundizadoenlas
estructurasdecontrolenJava).

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 30/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Condicionalsimple.

Sinecesitashaceralgunasentenciasloenelcasodequesecumplaalgunacondicin,elcondicionalsimpleeslaestructuraadecuada.

Evaluamoslacondicinysiesverdaderaejecutamoselconjuntodesentenciasasociadasalentonces,ysiesfalso,nohacemos
nadaycontinuamosconlasentenciaquehayaacontinuacin.

Enpseudocdigoeslaestructura:

SI<condicin>ENTONCES
<acciones>
FIN_SI

Condicionaldoble.

Si tienes que elegir entre dos posibles alternativas, dependiendo de que se cumpla o no alguna condicin,
debesutilizarelcondicionaldoble.

La condicin se evala una nica vez, por lo que las acciones que correspondan se ejecutarn una nica
vez.Enformadediagramadeflujoestaestructuratendrelsiguienteaspecto:

Seevalalacondicinysiesverdadseejecutanelconjuntodeaccionesasociadasalaparteentonces,ysiesfalsoseejecutan
elconjuntodeaccionesasociadasalapartesino(seeligeunodelosdoscaminosysedescartaelotro).

Enpseudocdigosecorrespondecon:

SI<condicion>ENTONCES
<accionessiverdadera>
SINO
<accionessifalsa>
FIN_SI

9.5. Estructura repetitiva.


Hayocasionesenlasquenecesitamosqueserepitanunaseriedeinstruccionesrepetidasveces(unnmerofinitodeveces)hastaquese
cumplaunadeterminadacondicin.Estoesposibleimplementarlograciasalasestructurasrepetitivas,tambinconocidascomobucles.Un
bucleesunasecuenciadeinstruccionesqueserepitemientrassecumplaunacondicinprescrita.Silacondicinestmaldefinidapuede
darlugaraunbucledeerrorcclico,tambinconocidocomobucleinfinito.

Estetipodeestructurasjuntoalasestructurasselectivasvistasenelapartadoanteriorseconocenbajoelnombredeestructurasdecontrol.

Existen3tiposdeestructurasrepetitivasenfuncindecundoseevalalacondicin:

Mientras.
HacerMientras(repetir)
Para

Mientras
Repite el conjunto de instrucciones del bucle mientras se cumple una determinada condicin. La condicin se evala al principio, antes de
entrarenelbucle.

MIENTRAS<condiciones>HACER
<acciones>
FIN_MIENTRAS

HacerMientras(Repetir)
Hace lo mismo que la estructura mientras. La diferencia est en que la estructura
MientrascompruebalacondicinalinicioyRepetirlohacealfinal.Esporelloqueen
estecasoelbucleseejecutaporlomenosunavez.

HACER
<acciones>
MIENTRAS<condiciones>

Para
Esta estructura condicional
incluye un contador, lo que quiere decir que se conoce el nmero de veces que se
repetirelcuerpodelbucle.

PARA<variable><<valor_inicial>HASTA<valor_final>
[incremento<valor_incremento>]HACER
<acciones>
FIN_PARA

Como se puede observar, poner


el incremento es opcional, si no
seespecificaelincrementotoma
su valor por defecto, que es
incremento1.
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 31/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
incremento1.

9.6. Ejemplos de algoritmos resueltos.


Sepretendequetengasatudisposicinalgunosejemplosdediagramasdeflujoypseudocdigosquerepresentanalgunosalgoritmos,para
quetefamiliaricesconsuuso,ytesirvandeguaalahoraderesolvertuspropiosproblemasyrepresentarlasolucindeformaclara.Puesto
quelafinalidadescomprenderyfamiliarizarseconelusodelasestructurasbsicasdecontroldeflujoquehemosvistohastaestemomento,
la funcionalidad prctica de los ejemplos es muy limitada, y fundamentalmente se exponen ejemplos que requieren efectuar clculos
matemticos,etc.,yaqueenelloselproblemaaresolversueleestarmsclaro.

Hay que dejar claro que incluso en estos ejercicios, bastante bsicos, es siempre posible encontrar varias soluciones, que aunque
parecidas tengan ligeras diferencias entre s. Si varios de vosotros intentis resolver estos problemas, u otros similares, casi con toda
seguridad que las soluciones encontradas tendrn diferencias, que en algn caso pueden ser incluso significativas. En la mayora de los
programasqueseabordan(enelcursoyenlavidareal)normalmentenoexisteunanicasolucinvlida.Nuestraobligacinesencontrarla
ms sencilla y eficiente. Pero eso se consigue slo con la prctica, por lo que una tarea importante en esta unidad ser que vosotros os
entrenisenladescripcindealgoritmosquesolucionenproblemas.

Estos ejemplos por ser los primeros, llevan muchos comentarios (que no tienen efecto en su funcionamiento), pero dada la simplicidad de
estosalgoritmos,encondicionesnormalesnodeberanllevarnitantoscomentariosnitanextensos.

EjercicioResuelto
Intercambiodelvalordedosvariables.

Setratadeunaoperacinmuybsica,perofrecuente.Suponemosquetenemosdosvariablesdetipoentero,AyB,alasque
seleshadadounvalorcualquieradesdeteclado,yquequeremosintercambiarsusvaloresdeformaqueenAsiemprequedeel
menordelosdosvaloresintroducidos.Comosalida,debeescribirseelvalorquetenaninicialmenteAyBydenuevolos
valoresdeAyBunavezordenados.

Mostrarretroalimentacin

AlgoritmoIntercambioVariables

VarA,B,Auxiliar:entero
/*Auxiliarseusaparapoderintercambiarlosvaloressinperderninguno.*/

Inicio
LeerA
LeerB
/*Alescribir,separamosentrecomaslosdistintoselementosque
*queremosescribir.Loquevaentrecomillasesunliteralquese
*escribetalycomoest.Loquenollevacomillas,esunavariable,
*constanteoexpresinquesesustituyealescribirporsuvalor
*/
Escribir(InicialmenteA=,A,yB=,B)
/*SiAesmayorqueB,seintercambiansusvalores,ysinoloes,
*noesnecesariohacernadaespecial,yaestnordenados
*/
Si(A>B)Entonces
Auxiliar<A<spanstyle="color:#808080">/*SecopiaenAuxiliarelvalordeA*/</span>
A<B<spanstyle="color:#808080">/*SeescribeenAelvalordeB,quesustituyea</span>
*suanteriorvalor
*/
B<Auxiliar<spanstyle="color:#808080">/*SeescribeenBelvalordeAuxiliar,</span>

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 32/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
B<Auxiliar<spanstyle="color:#808080">/*SeescribeenBelvalordeAuxiliar,</span>
*queesunacopiadelvalorinicialdeA
*/
FinSi
Escribir(DespusdeordenarA=,A,yB=,B)
Fin

Clculodelpermetroysuperficiedeuncrculo,ledoelvalordelradio.

Queremos calcular la superficie y el permetro de un crculo, una vez introducido por teclado el valor del radio, y escribir los
resultados.Sesuponeconocido=3.1416,yquelasfrmulasparalasuperficieyelpermetroson:

Sup=r2yPer=2r,siendorelvalordelradio.

<img
src="http://educacionadistancia.juntadeandalucia.es/cursos/pluginfile.php/153030/mod_scorm/content/0/PROG02_RX_6_CalculoConPiPesudocodigo.png"
alt="Diagramadeflujoparaelclculodepermetroylasuperficiedeunacircunferenciacuyoradioseobtienepidindoseloal
usuario por teclado. " title="Permetro y superficie de circunferencia." style="fontfamily: helvetica fontsize: 12.8px textalign:
center backgroundcolor: initial display: block marginleft: auto marginright: auto verticalalign: bottom" height="544"
width="234"/>

Mostrarretroalimentacin

AlgoritmoCirculo

/*DeclaracindelaconstantePI.Sedeclaracomoconstanteporquesu
*valornovaacambiar.
*/
Const
PI=3.1416
/*Declaracindevariables.Detiporealparaqueadmitandecimales.*/
Var
Radio,Superficie,Permetro:real
Inicio
/*PidequesefaciliteelvalordelRadioporteclado*/
Leerradio

/*Calculamoslasuperficieyelpermetrosegnlafrmula*/
Superficie<PI*radio*radio
Permetro<2*PI*radio
/*Escribimoslosresultados*/
Escribir(Elcrculoderadio,radio,tieneunasuperficie
de,Superficie,yunpermetrode,Permetro)
Fin<br/>

Escribirdieznmerosporpantalla.

Queremosescribirdieznmerosporpantalla,usandounbuclePara.

<img
src="http://educacionadistancia.juntadeandalucia.es/cursos/pluginfile.php/153030/mod_scorm/content/0/PROG02_RX_6_ParaPesudocodigo.png"
alt="Diagrama de flujo para el mostrar diez nmeros por pantalla. " title="Escribir nmeros por pantalla." style="fontfamily:
helvetica fontsize: 12.8px textalign: center backgroundcolor: initial display: block marginleft: auto marginright: auto
verticalalign:bottom"/>

Mostrarretroalimentacin

AlgoritmoCirculo

/*DeclaracindelaconstantePI.Sedeclaracomoconstanteporquesu
*valornovaacambiar.
*/
/*Declaracindevariables.Detiporealparaqueadmitandecimales.*/
Var
contador:entero
Inicio
/*PidequesefaciliteelvalordelRadioporteclado*/
PARAcontador<0HASTA9
/*Escribimoslosresultados*/
Escribir(contador)<br/>FIN_PARA<br/>
Fin<br/>

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 33/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

10. Las variables e identificadores.

Casoprctico
MarayJuanhancomprobadoqueunaaplicacininformticaesuntrabajodeequipoquedebe
estarperfectamentecoordinado.Elprimerpasoesladefinicindelosdatosylasvariablesque
sevanautilizar.

Lasdecisionesquesetomenpuedenafectaratodoelproyecto,enloreferentealrendimientode
laaplicacinyahorrodeespacioenlossistemasdealmacenamiento.

Despus de la ltima reunin del equipo de proyecto ha quedado claro cules son las
especificacionesdelaaplicacinadesarrollar.Juannoquiereperdereltiempoyhacomenzado
a preparar los datos que va a usar el programa. Le ha pedido a Mara que vean juntos qu
variablesytiposdedatossevanautilizar,Juanpiensaquelevendrbiencomoprimeratareaparafamiliarizarseconelentorno
deprogramacinyconellenguajeens.

Unprogramamanejadatosparahacerclculos,presentarloseninformesporpantallaoimpresora,solicitarlosalusuario,guardarlosendisco,
etc.Parapodermanejaresosdatos,elprogramalosguardaenvariables.
Una variableesunazonaenlamemoriadelcomputadorquepuedealmecenarunvalordeundeterminadotipoparaserusadomstarde
enelprograma.Lasvariablesvienendeterminadaspor:

Unnombre,quepermitealprogramaaccederalvalorquecontieneenmemoria.Debeserunidentificadorvlido.Porejemplo,podra
llamarseprecioVentaPublico.
Un tipodedato,queespecificaquclasedeinformacinpuedeserguardadaporlavariableenesazonadememoria.Porejemplo,
puedeserdetipoentero,odetipocadenadecaracteres,odetiporeal,etc.Lavariableanterior,sipretendemosquealmaceneprecios,
podradefinirsecomodetiporeal,paraqueadmitadecimalesparaloscntimos.Cualquierlenguajepermitirdefinirdisintostiposde
reales.EnJava,porejemplo,floatydoubleserandostiposdedatoreal.
Unrangodevaloresquepuedeadmitirdichavariable.Estableceelvalormximoymnimoquepuedealmacenarseenesavariable,as
comolaprecisin.Normalmentevaasociadoaltipodedatoquepuedealmacenar.Siguiendoconelejemplo,enJava,ladiferenciaentre
definirunavariablefloatodoublesuponequesepodrnalmacenarnmerosrealesmspequeosomsgrandesyenlaprecisin
(nmerodedecimalesmximo)quesepuedenusar.As,paraunprecio,confloattendremossuficienterango,ysuficienteprecisin,ya
queslonecesitamosdosdecimales,yesetiponospermiteusarinclusoms.

Alnombrequeledamosalavariableselellamaidentificador.Losidentificadorespermitennombrarloselementosqueseestnmanejando
enunprograma.

Vamosaverconmsdetalleciertosaspectossobrelosidentificadoresquedebemostenerencuenta.

Citasparapensar

Lasgrandesideasrequierenungranlenguaje.

Aristfanes.

Parasaberms
BruceEckeleselautordeloslibrossobreJavayC++(Corientadoaobjetos)dirigidosaprogramadoresquedeseanaprender
sobre estos lenguajes y sobre la programacin orientada a objetos. Este escritor ha tenido la buena costumbre de editar sus
librosparaquepuedandescargarsegratis.As,podemosaccederdeformatotalmentegratuitaalaterceraedicindesulibro
ThinkinginJavaenelsiguienteenlace(eningls):

Libro"ThinkinginJava"(1,5MB)

ApartirdeahoraesconvenientequeutilicesalgnmanualdeapoyoparainiciartealaprogramacinenJava.Teproponemosel
delaseriedelibrosAprendaInformticacomosiestuvieraenprimero,delaEscuelaSuperiordeIngenierosIndustrialesde
SanSebastin(UniversidaddeNavarra):

ManualdeapoyosobreJava(936KB)

10.1. Identificadores.
UnidentificadorenJavaesunasecuenciailimitadasinespaciosdeletrasydgitos Unicode,deforma
queelprimersmbolodelasecuenciadebeserunaletra,unsmbolodesubrayado(_)oelsmbolo Montaje
sobreimagende
dlar($).Porejemplo,sonvlidoslossiguientesidentificadores: asvensson

x5NUM_MAXnumCuenta

EnladefinicinanteriordecimosqueunidentificadoresunasecuenciailimitadadecaracteresUnicode.
PeroquesUnicode?Unicodeesuncdigodecaracteresosistemadecodificacin,unalfabetoque
recogeloscaracteresdeprcticamentetodoslosidiomasimportantesdelmundo.Laslneasdecdigoen
losprogramasseescribenusandoeseconjuntodecaracteresUnicode.

EstoquieredecirqueenJavasepuedenutilizarvariosalfabetoscomoelGriego,rabeoJapons.Deestaforma,losprogramasestnms
adaptados a los lenguajes e idiomas locales, por lo que son ms significativos y fciles de entender tanto para los programadores que
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 34/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
adaptados a los lenguajes e idiomas locales, por lo que son ms significativos y fciles de entender tanto para los programadores que
escribenelcdigo,comoparalosqueposteriormentelotienenqueinterpretar,paraintroduciralgunanuevafuncionalidadomodificacinenla
aplicacin.

El estndar Unicode originalmente utilizaba 16 bits, pudiendo representar hasta 65.536 caracteres distintos,
queeselresultadodeelevardosalapotenciadiecisis.ActualmenteUnicodepuedeutilizarmsomenosbits,
dependiendodelformatoqueseutilice:UTF8(siglaseninglsparaFormatodeTransformacinUnicode
8),UTF16UTF32.Acadacarcterlecorrespondeunvocamenteunnmeroenteropertenecienteal
intervalode0a2elevadoan,siendonelnmerodebitsutilizadospararepresentarloscaracteres.Por
ejemplo,laletraeselentero164.Adems,elcdigoUnicodeescompatibleconelcdigoASCII, ya que
paraloscaracteresdelcdigoASCII,Unicodeasignacomocdigolosmismos8bits,alosquelesaadeala
izquierdaotros8bitstodosacero.LaconversindeuncarcterASCIIaUnicodeesinmediata.

Recomendacin
Unabuenaprcticadeprogramacinesseleccionarnombresadecuadosparalasvariables,esoayudaaqueelprogramase
autodocumente,yevitaunnmeroexcesivodecomentariosparaaclararelcdigo.

Parasaberms
EnlaceparaaccederaladocumentacinsobrelasdistintasversionesdeUnicodeenlapginaweboficialdelestndar:

DocumentacinsobreUnicode

10.2. Convenios y reglas para nombrar variables.

Alahoradenombrarunidentificadorexistenunaseriedenormasdeestilodeusogeneralizado,queseaceptan
porconvenio,aunquenosonobligatorias,yquedehechoseusanenlamayorpartedelcdigoJava,loqueayudaa
entendermsrpidamente lasemnticadecadaidentificador.Estasreglasparalanomenclaturadevariablesson
lassiguientes:

Javadistinguelasmaysculasdelasminsculas.Porejemplo,Alumnoyalumnosonvariablesdiferentes.
No se suelen utilizar identificadores que comiencen con $ o _, adems el smbolo del dlar, por
convenio,noseutilizanuncaparaidentificadoresquedefineelusuario(aunquelousainternamenteellenguaje
paracrearciertasclasesquegeneraautomticamente,perodeesononostenemosqueocuparnipreocuparal
programar).
Nosepuedeutilizarelvalorbooleano(trueofalse)nielvalornulo(null).
Losidentificadoresdebenserlomsdescriptivosposibles.Esmejorusarpalabrascompletasenvezdeabreviaturascrpticas.As
nuestrocdigosermsfcildeleerycomprender.Enmuchoscasostambinharquenuestrocdigoseautodocumente.Porejemplo,
sitenemosquedarleelnombreaunavariablequealmacenalosdatosdeunclienteserarecomendablequelamismasellamaraalgo
ascomoFicheroClientesoManejadorCliente,ynoalgopocodescriptivocomoCl33.,pormsqueJavaloconsiderecorrecto.

Ademsdeestasrestricciones,enlasiguientetablapuedesverotrasconvenciones,quenosiendoobligatorias,ssonrecomendablesala
horadecrearidentificadoresenJava.

ConvencionessobreidentificadoresenJava

Identificador Convencin Ejemplo

Comienzaporletraminscula,ysiestformadoporvariaspalabras,secolocanjuntasytodaslassiguientes numAlumnosMatriculados,
Nombrede
apartirdelasegundacomenzarnpormaysculasparaayudaraidentificarvisualmentedndecomienzacada
variable.
nuevapalabraapesardequenohayaespacios. suma

Nombrede Contodassusletrasenmaysculas,separandolaspalabrasconelguinbajo,yademsporconvenioel
constante. guinbajonoseutilizaenningnotrositio.
TAM_MAX,PI

Nombredeuna
clase.
Comienzaporletramayscula. String,MiTipo

Nombrede Unnombredeunafuncinodeun mtodocomienzaconletraminscula.Sigueenrealidadlamisma


funcino nomenclaturaquecualquiervariableysedistinguequesetratadeunmtodoofuncinporque modificaValor(),
mtodo. obligatoriamentedebeirseguidodeparntesis,queenmarcanlalistade parmetros queseledanal obtieneValor()
mtodoparatrabajar.Elparntesisesobligadoaunquenoselepaseningnparmetro.

Autoevaluacin
Eligelaopcincorrecta.UnidentificadoresunasecuenciadeunoomssmbolosUnicodequecumpleque....:

Todoslosidentificadoreshandecomenzarconunaletra,elcarctersubrayado(_)oelcarcterdlar($).

Nopuedeincluirelcarcterespacioenblanco.

Puedetenercualquierlongitud,nohaytamaomximo.

Todaslasrespuestasanterioressoncorrectas.

Incorrecto,existenmscondiciones.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 35/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Incorrecta,sigueintentndolo.

Noeslanicarespuestacorrecta.

Exacto! Adems, se desaconseja el uso del smbolo dlar, y el guin bajo prcticamente slo se utiliza para separar
palabrasenidentificadoresdeconstantes.

Solucin

1.Incorrecto
2.Incorrecto
3.Incorrecto

4.Opcincorrecta

Parasaberms
Te recomendamos consultar los tutoriales que nos ofrece el propio lenguaje Java para resolver cualquier duda que te vaya
surgiendo.Enconcreto,resultainteresanteiralasfuentesparaverlasreglasdeformacindeidentificadoresparavariables,
etc. Por eso te recomendamos que veas el apartado Variables Naming, del siguiente enlace al tutorial de Java sobre los
conceptosbsicosdellenguaje.Esteningls,peroreiteramosqueesmuyimportantequetevayasacostumbrandoaconsultar
documentacintcnicaeningls.

Nombrandovariables.

EjercicioResuelto
Cmosenombranlosidentificadoresenpseudocdigo?

Mostrarretroalimentacin

Conmuchamslibertadqueenloslenguajesdeprogramacin.Nohayreglasestrictas,msalldequesiemprehay
queintentarqueseadescriptivoyclaro.Solosepidequenosedejenespaciosdeseparacinentrelasdistintaspalabras
queformanunidentificador.

10.3. Palabras reservadas.


Laspalabrasreservadas,avecestambinllamadaspalabrasclaveokeywords,sonsecuenciasdecaracteres
formadas con letras ASCII cuyo uso se reserva al lenguaje y, por tanto, no pueden utilizarse para crear
identificadores.

LaspalabrasreservadasenJavason:

PalabrasclaveenJava

ytueresburroyyomemonto
abstract continue for new switch

assert default goto package synchronized

boolean do if private this

break double implements protected throw

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 36/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
byte else import public throws

case enum instanceof return transient

catch extends int short try

char final interface static void

class finally long strictfcode volatile

const float native super while

Hay palabras reservadas que no se utilizan en la actualidad, como es el caso de const y goto, que apenas se utilizan en la actual
implementacin del lenguaje Java. Por otro lado, puede haber otro tipo de palabras o texto en el lenguaje que aunque no sean palabras
reservadastampocosepuedenutilizarparacrearidentificadores.Eselcasodetruey falseque,aunquepuedanparecerpalabrasreservadas,
porque no se pueden utilizar para ningn otro uso en un programa, tcnicamente son literales booleanos. Igualmente, null es
consideradounliteral,nounapalabrareservada.

CuandotrashaberconsultadoladocumentacindeJavaannotengasseguridaddecmofuncionaalgunadesuscaractersticas,
prubala en tu ordenador, y analiza cada mensaje de error que te d el compilador para corregirlo. Busca en foros de Internet
erroressimilaresparaayudartedelaexperienciadeotrosusuariosyusuarias.

Normalmente,loseditoresyentornosintegradosdedesarrolloutilizancoloresparadiferenciarlaspalabrasreservadasdelrestodelcdigo,
los comentarios, las constantes y literales, etc. De esta forma se facilita muchsimo la lectura del programa y la deteccin de errores de
sintaxis.Dependiendodelaconfiguracindelentornoseutilizarnunoscoloresuotros,esposiblequelosqueutilicetuversindeNetBeans
separezcanastos:

Laspalabrasreservadasenazul.
Loscomentariosaparecenengris.
Lasvariablesdentrodeunaclaseaparecenenverde.
Loserroresenrojo.
Yelrestodelcdigoapareceennegro.

PuedequeteinteresecambiarloscoloresqueutilizaNetbeansparalasintaxisdetusprogramas,porejemplosiquieresqueloscomentarios
aparezcanenverdeenlugardeengrisoquelosdestaqueconalgntipodesombreado,oaumentareltamaopordefectodelafuentesi
tienes problemas de visin, o indicar que tienes la autora de los mismos, en lugar de que te aparezca el nombre de usuario del sistema
operativo.EnlasiguientepresentacinpuedesvercmosecambianloscoloresylaspropiedadesdeusuarioenunproyectoNetBeans:
Resumentextualalternativo

10.4. Tipos de variables. Constantes I.


Enunprogramanospodemosencontrardistintostiposdevariables.Lasdiferenciasentreunavariabley
otradependerndevariosfactores,porejemplo,eltipodedatosquerepresentan,sisuvalorcambiao
noalolargodetodoelprograma,oculeselpapelquellevanacaboenelprograma.Deestaforma,el K.lee
lenguajedeprogramacinJavadefinelossiguientestiposdevariables:

a.Variables de tipos primitivos y variables referencia, segn el tipo de informacin que


contengan. En funcin de a qu grupo pertenezca la variable, tipos primitivos o tipos
referenciados,podrtomarunosvaloresuotros,ysepodrndefinirsobreellaunasoperacionesu
otras.
Programminglanguagetextbooks

b.Variablesyconstantes,dependiendodesisuvalorcambiaonodurantelaejecucindelprograma.Ladefinicindecadatiposera:

Variables.Sirvenparaalmacenarlosdatosdurantelaejecucindelprograma,puedenestarformadasporcualquiertipodedato
primitivooreferencia.Suvalorpuedecambiarvariasvecesalolargodetodoelprograma.
Constantesovariablesfinales.Sonaquellasvariablescuyovalornocambiaalolargodetodoelprograma.
c.Variablesmiembroyvariableslocales,enfuncindellugardondeaparezcanenelprograma.Ladefinicinconcretasera:

Variablesmiembro.Sonlasvariablesquesecreandentrodeuna clase,fueradecualquier mtodo.Puedenserdetipos


primitivosoreferencias,variablesoconstantes.EnunlenguajepuramenteorientadoaobjetoscomoesJava,todosebasaenla
utilizacinde objetos,loscualessecreanusandoclases.Enlassiguientesunidadesveremoslosdistintostiposdevariables
miembroquesepuedenusar,ascomounadescripcindetalladadelosconceptosdeclase,objetoymtodo.
Variableslocales.Sonlasvariablesquesecreanyusandentrodeunbloquedecdigo(normalmenteunmtodo).Lavariable
deja de existir cuando la ejecucin del bloque de cdigo o el mtodo finaliza. Al igual que las variables miembro, las variables
localestambinpuedenserdetiposprimitivosoreferencias.

Autoevaluacin
Relaciona los tipos de variables con la caracterstica correspondiente, escribiendo el nmero asociado a la
caractersticaenelhuecocorrespondiente.

Ejercicioderelacionar

Lasvariables... Relacin Tienenlacaractersticadeque

Locales. 1.Unavezinicializadassuvalornuncacambia.

Miembro. 2.Vandentrodeunmtodo.

Constantes. 3.Vandentrodeunaclase.

Enviar

Lasvariableslocales,lasconstantesylasvariablesmiembrotienenesascaractersticasquelasdefinendentrodeuna
aplicacinJava.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 37/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

10.4.1. Tipos de variables. Constantes II.


Elsiguienteejemplomuestraelcdigoparalacreacindevariostiposdevariables.Comoyaveremosenapartadosposteriores,lasvariables
necesitan declararse, a veces dando un valor y otras con un valor por defecto. Este programa crea una clase que contiene las siguientes
variables:

Variable constante llamada PI: esta variable por haberla declarado como constante no podr cambiar su valor a lo largo de todo el
programa.
Variable miembro llamada x: esta variable pertenece a la clase EjemploVariables. La variable x puede almacenar valores del tipo
primitivoint.Elvalordeestavariablepodrsermodificadoenelprograma,normalmentepormediodealgnotromtodoquesecreeen
laclase.
VariablelocalllamadavalorAntiguo:estavariableeslocalporqueestcreadadentrodelmtodoobtenerX().Slosepodraccedera
elladentrodelmtododondeestcreada,yaquefueradelnoexiste.

En apartados posteriores veremos cmo darle ms funcionalidad a nuestros programas, mostrar algn resultado por pantalla, hacer
operaciones,etc.Porelmomento,siejecutaselejemploanteriorsimplementeNetBeansmostrarelmensajeGENERACINCORRECTA,
indicandoquetodohaidobienyelprogramahafinalizado,perostenoproduceningunasalidavisible,yaqueensumtodomain()slohay
comentarios,sinningunasentenciaqueejecutar.

CapturaparausoeducativonocomercialdeNetBeans,bajolicenciaCDDL.

Ejemplodetiposdevariables(16KB)

Enlasiguientepresentacinpuedesverunademostracindecmohemoscreadoesteprimerprograma:
Resumentextualalternativo

EjercicioResuelto
Cmoindicoenpseudocdigoqueunavariableesenrealidadunaconstante?Cmoindicamoseltipodevariablesy
constantes?

Mostrarretroalimentacin

Enrealidadyahabasurgidoenelejemplodelclculodelpermetroylasuperficiedeunacircunferencia:

....
Const
PI=3.1416
Var
Radio,Superficie,Permetro<strong>:real</strong>
....

11. Los tipos de datos.

Casoprctico

Mara ya ha hecho sus pinitos como programadora. Ahora mismo est ayudando a Juan con las
variablesylehasurgidounproblema.Ellenguajeseestcomportandodeunaformaextraa,quiero
llamaraunavariablefinalynomedejacomentaMaraaJuan.Claro,esoesporquefinalesuna
palabra reservada y ya hemos visto que no la puedes utilizar para nombrar variables le responde
Juan. Vaya, es verdad! Y qu otros requisitos debo tener en cuenta a la hora de declarar las
variables? Pues lo importante es saber qu tipo de informacin hay que guardar, para poder
asignarleseltipodedatoadecuado.Tienesunmomentoytelocuento?lediceJuan.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 38/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Enlos lenguajesfuertementetipados,atododato(constante,variableoexpresin)lecorrespondeuntipoqueesconocidoantesdeque
seejecuteelprograma.

El tipo limita el valor de la variable o expresin, las operaciones que se pueden hacer sobre esos valores, y el significado de esas
operaciones.Estoesasporqueuntipodedatonoesmsqueunaespecificacindelosvaloresquesonvlidosparaesavariable,y
delasoperacionesquesepuedenrealizarconellos.

Debidoaqueeltipodedatodeunavariablesecompruebadurantelarevisinquehaceelcompiladorparadetectarerrores,osea,entiempo
decompilacin,estalaboresmuchomsfcil,yaquenohayqueesperaraqueseejecuteelprogramaparasaberquvaloresvaacontener
esavariable.Estoseconsigueconuncontrolmuyexhaustivodelostiposdedatosqueseutilizan,locualtienesusventajaseinconvenientes.
Porejemplo,cuandoseintentaasignarunvalordeuntipoaunavariabledeotrotipoelcompilador"sequejar"mostrandounmensajede
error.Sinembargo,enJava,puedehaberconversinentreciertostiposdedatos,comoveremosposteriormente.

Ahora no es el momento de entrar en detalle sobre la conversin de tipos, pero s debemos conocer con exactitud de qu tipos de datos
dispone el lenguaje Java. Ya hemos visto que las variables, segn la informacin que contienen, se pueden dividir en variables de tipos
primitivosyvariablesreferencia.Peroquesuntipodedatoprimitivo?Yuntiporeferencia?Aunquelohemosindicadobrevementeantes,
laprimeravezqueaparecanestosconceptosparaquenotesonaratotalmenteachino,estoesloquevamosaveracontinuacinconms
detalle.LostiposdedatosenJavasedividenprincipalmenteendoscategoras:

Tiposdedatossencillosoprimitivos.Representanvaloressimplesquevienenpredefinidosenellenguajecontienenvaloresnicos,
comoporejemplouncarcterounnmero.
Tiposdedatosreferencia.Sedefinenconunnombreoreferencia( puntero) quecontieneladireccin en memoria de un valor o
grupodevalores.Dentrodeestetipotenemosporejemplolosvectores(tambinconocidoseninformticacomoarrays),quesonuna
seriedeelementosdelmismotipo,olasclases,quesonlosmodelosoplantillasapartirdeloscualessecreanlosobjetos.

Enelsiguienteapartadovamosavercondetallelosdiferentestiposdedatosqueseenglobandentrodeestasdoscategoras.

Autoevaluacin
Eltipadofuertededatossuponeque:

Atododatolecorrespondeuntipoqueesconocidoantesdequeseejecuteelprograma.
Ellenguajehaceuncontrolmuyexhaustivodelostiposdedatos.
Elcompiladorpuedeoptimizarmejoreltratamientodelostiposdedatos.
Todaslasanterioressoncorrectas.

Incorrecto,existenmscondiciones.

Incorrecta,sigueintentndolo.

Noeslanicarespuestacorrecta.

Muybien,enunlenguajefuertementetipadosecumplentodaslascondicionesanteriores.

Solucin

1.Incorrecto
2.Incorrecto
3.Incorrecto
4.Opcincorrecta

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 39/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

11.1. Tipos de datos primitivos I.

Los tipos primitivos son aquellos datos sencillos que constituyen los tipos de informacin ms habituales:
nmeros, caracteres y valores lgicos o booleanos. Al contrario que en otros lenguajes de programacin
orientadosaobjetos,enJavanosonobjetos.

Una de las mayores ventajas de tratar con tipos primitivos en lugar de con objetos, es que el compilador de
Javapuedeoptimizarmejorsuuso.Otraimportantecaracterstica,esquecadaunodelostiposprimitivostiene
idnticotamao y comportamiento en todas las versiones de Java y para cualquier tipo de ordenador. Esto
quiere decir que no debemos preocuparnos de cmo se representarn los datos en distintas plataformas, y
aseguralaportabilidaddelosprogramas,adiferenciadeloqueocurreconotroslenguajes.Porejemplo,el
tipointsiempreserepresentarcon32bits,consigno,yenelformatoderepresentacin complementoa2,encualquierplataformaque
soporteJava.

Reflexiona
Java especifica el tamao y formato de todos los tipos de datos primitivos con independencia de la plataforma o sistema
operativo donde se ejecute el programa, de forma que el programador no tiene que preocuparse sobre las dependencias del
sistema,ynoesnecesarioescribirversionesdistintasdelprogramaparacadaplataforma.

Debesconocer
EnelsiguienteenlacesemuestranlostiposdedatosprimitivosenJavaconelrangodevaloresquepuedentomar,eltamao
queocupanenmemoriaysusvalorespordefecto.

TiposdedatosprimitivosenJava

Hayunapeculiaridadenlostiposdedatosprimitivos,yesqueeltipodedatocharesconsideradoporelcompiladorcomountiponumrico,
ya que los valores que guarda son el cdigo Unicode correspondiente al carcter que representa, no el carcter en s, por lo que puede
operarseconcaracterescomosisetrataradenmerosenteros.

Unacuestinimportante:alahoradeelegireltipodedatoquevamosautilizarqucriterioseguiremosparaelegiruntipodedatouotro?

Puesdeberemostenerencuentacmoeslainformacinquehayqueguardar,siesdetipotexto,numrico,etc.,yademsqurangode
valorespuedealcanzar.Enestesentido,hayvecesqueaunquequeramosrepresentarunnmerosindecimales,tendremosqueutilizardatos
detiporeal.

Por ejemplo, el tipo de dato int no podra representar la poblacin mundial del planeta, ya que el valor mximo que alcanza es de
2.147.483.647, siendo ste el nmero mximo de combinaciones posibles con 32 bits, teniendo en cuenta que la representacin de los
nmerosenterosenJavautilizacomplementoa2.Siqueremosrepresentarelvalorcorrespondientealapoblacinmundialdelplaneta,cerca
de 7.000.000.000 habitantes, tendramos que utilizar al menos un tipo de dato long, o si tenemos problemas de espacio un tipo float. Sin
embargo,lostiposrealestienenotroproblema:laprecisin.Vamosavermssobreellosenelsiguienteapartado.

Parasaberms
Siquieresobtenerinformacinsobrecmosellevaacabolarepresentacininternadenmerosenterosysobrelaaritmtica
binaria,puedesconsultarelsiguienteenlace:

Aritmticabinaria

11.1.1. Tipos de datos primitivos II.


CmorepresentaremoslosdatosdetiporealenJava?

Eltipodedatorealpermiterepresentarnmeroscondecimales.Aligualqueocurreconlosenteros,la
mayoradeloslenguajesdefinenmsdeuntipodedatoreal,enfuncindelnmerodebitsusadopara
representarlos.Cuantomayorseaesenmero:

Msgrandepodrserelnmerorealrepresentadoenvalorabsoluto.
dullhunk
Mayorserlaprecisindelapartedecimal.

Entrecadadosnmerosrealescualesquiera,siempretendremosmatemticamentehablandoinfinitosnmerosreales,perounordenadorno
puede representar infinitos nmeros, porque no dispone de capacidad ilimitada, por lo que la mayora de ellos los representaremos de
formaaproximada.

Nofastidies!!Tantainformtica,tantoordenadorcadavezmspotente,ynisiquierapuedorepresentardeformaexactalamayoradelos
nmerosreales?

Justamente,sentimosdecirtequeases,peronosehundeelmundoporello,ydeunaformauotra,tenemosprecisinsuficienteparacasi
todoloquenospropongamos,yaquecomohumanos,la"precisininfinita"tampocolamanejamosmuybien.

Por ejemplo, en la aritmtica convencional, cuando dividimos 10 entre 3, el resultado es 3.3333333, con la secuencia de 3 repitindose
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 40/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Por ejemplo, en la aritmtica convencional, cuando dividimos 10 entre 3, el resultado es 3.3333333, con la secuencia de 3 repitindose
infinitamente. En el ordenador slo podemos almacenar un nmero finito de bits, por lo que el almacenamiento de un nmero real ser
siempreunaaproximacin.

Los nmeros reales se representan en coma flotante o notacin cientfica, que consiste en trasladar la coma decimal a la primera cifra
significativadelvalor,conobjetodepoderrepresentarelmximodenmerosposible.

Unnmeroenelinteriordeuncomputadorseexpresacomo:

Donde la mantisa son las cifras significativas del nmero (pues hemos trasladado la coma decimal hasta el principio). De este modo, para
almacenarelnmero,sloseguardanlamantisayelexponentealquevaelevadalabase.Losbitsempleadosporlamantisarepresentanla
precisin del nmero real, es decir, el nmero de cifras decimales significativas que puede tener el nmero real, mientras que los bits del
exponenteexpresanladiferenciaentreelmayoryelmenornmerorepresentable,loquevieneaserelintervaloderepresentacin.

EnJavalasvariablesdetipofloatseempleanpararepresentarlosnmerosencomaflotantedesimpleprecisinde32bits,deloscuales24
sonparalamantisay8paraelexponente.Lamantisaesunvalorentre1.0y1.0yelexponenterepresentalapotenciade2necesariapara
obtenerelvalorquesequiererepresentar.Porsuparte,lasvariablestipodoublerepresentanlosnmerosencomaflotantededobleprecisin
de64bits,deloscuales53sonparalamantisay11paraelexponente.

La mayora de los programadores en Java emplean el tipo double cuando trabajan con datos de tipo real. Es una forma de
asegurarsedequeloserrorescometidosporlassucesivasaproximacionesseanmenores.Dehecho,Javaconsideralosvalores
encomaflotantecomodetipodoublepordefecto.As,elliteral3.65serconsideradopordefectocomounliteraldetipodouble.Si
quieroqueseaconsideradocomofloat,(queesdemenorprecisin,yocupamenosespacio)tendrqueindicarloexplcitamente
aadindoleunafdetrs:3.65fo3.65F.

Con el objetivo de conseguir la mxima portabilidad de los programas, Java utiliza el estndar internacional IEEE 754 para la
representacininternadelosnmerosencomaflotante,queesunaformadeasegurarsedequeelresultadodelosclculosseaelmismo
paradiferentesplataformas.

Parasaberms
LasiguientepginaeninglseslaweboficialsobreelestndarinternacionalIEEE7542008pararepresentacindenmeros
encomaflotante(StandardforBinaryFloatingPointArithmetic,edicinde2008desarrolladoporelIEEE:InstituteofElectrical
andElectronicsEngineers,conocidocomo"IEcubo"):

NotacinIEEE754

Autoevaluacin
Relacionalostiposprimitivosconlosbitsyrangodevalorescorrespondientes,escribiendoelnmeroasociadoenel
huecocorrespondiente.

Ejercicioderelacionar

Tipo Relacin Caracterstica

short Comaflotantede64bits,usandolarepresentacinIEEE7542008

Enterode32bits,rangodevaloresde<spanstyle="fontsize:medium">2.147.483.648</span>(231)
byte
a2.147.483.647(+2311)

double Enterode16bits,rangodevaloresde32.768(215)a+32.767(+2151)

long Comaflotantede32bits,usandolarepresentacinIEEE7452008

int Enterode8bits,rangodevaloresde128(27)a+127(+271)

Enterode64bits,rangodevaloresde9.223.372.036.854.775.808(263)a
float
9.223.372.036.854.775.807(+2631)

Enviar

Ademsdelosanteriores,tambinsontiposprimitivoseltipodedatoboolean,convalorestruey false,yeltipodedatos
char,quealmacenaelcdigoUnicodedeuncarcter.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 41/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

11.2. Declaracin e inicializacin.


Llegadosaestepuntocabepreguntarnoscmosecreanlasvariablesenunprograma?Qudebohacerantesde
usarunavariableenmiprograma?

Pues bien, como podrs imaginar, debemos crear las variables antes de poder utilizarlas en nuestros programas,
indicando qu nombre va a tener y qu tipo de informacin va a almacenar, en definitiva, debemos declarar la
variable.

Las variables se pueden declarar en cualquier bloque de cdigo, dentro de llaves. Y lo hacemos indicando su
identificadoryeltipodedato,separadasporcomassivamosadeclararvariasalavez,porejemplo:

intnumeroAlumnos=15
Dr.Craig
doubleradio=3.14,importe=102.95

De esta forma, estamos declarando numeroAlumnos como una variable de tipo int, (y al mismo tiempo asignndole el valor 15, pero de
momentonosfijamossloenladeclaracin:intnumeroAlumnos)yotrasdosvariablesradioeimportedetipodouble.Noesobligatorioasignar
valor a la vez que se declara, pero puede hacerse y en el ejemplo anterior hemos aprovechado la declaracin de las variables para
inicializarlas,asignndolescomoprimervalor15,3.14y102.95respectivamente.

Silavariablevaapermanecerinalterablealolargodelprograma,ladeclararemoscomoconstante,utilizandolapalabrareservadafinaldela
siguienteforma:

finaldoublePI=3.1415926536

Enocasionespuedequealdeclararunavariablenoledemosvalor.Qucreesqueocurreenestoscasos?

Puesqueelcompiladorleasignaunvalorpordefecto,aunquedependedeltipodevariablequesetrate:

Lasvariablesmiembrosseinicializanautomticamente,sinolesdamosunvalor.
Cuandosondetiponumrico,seinicializanpordefectoa0.
Sisondetipocarcter,seinicializanalcarcternull(\0).
Sisondetipobooleanselesasignaelvalorpordefectofalse.
Sisontiporeferenciaseinicializananull.
Las variables locales no se inicializan automticamente. Debemos asignarles nosotros un valor antes de ser usadas, ya que si el
compiladordetectaquelavariableseusaantesdequeseleasigneunvalor,produceunerror.Porejemploenestecaso:

intp
intq=p//error

Estamos intentando inicializar la variable q con el valor que tenga p, pero como p no ha sido inicializada no tiene ningn valor, as que el
compiladornosabequvalorasignar,ydaunerror.

Ytambinenesteotro,yaqueseintentausarunavariablelocalquepodranohaberseinicializado:

intp
if(<condicin>)
p=5
intq=p//error

Enelejemploanteriorlainstruccinifhacequesisecumplelacondicinquehayentreparntesis(cualquieraqueindiquemos),entoncesel
programaasignarelvalor5alavariablepsinosecumplelacondicin,pquedarsininicializar.Perosipnosehainicializado,notendra
valor para asignrselo a q. Por ello, el compilador detecta ese posible problema, ya que durante la compilacin no podemos saber si la
condicinserciertaono,yportantonopodemosgarantizarquelainicializacinsehayahecho,yproduceunerrordeltipoLavariable
podranohabersidoinicializada,independientementedesisecumpleonolacondicindelif.

Autoevaluacin
Delassiguientes,sealaculeslaafirmacincorrecta:

Ladeclaracindeunavariableconsistebsicamenteenindicareltipoquevaatenerseguidodelnombreysuvalor.

Javanotienerestriccindetipos.

Todoslostipostienenlasmismasoperacionesarealizarconellos:suma,resta,multiplicacin,etc.

Todaslasanterioressonincorrectas.

Incorrecto,lainicializacindeunavariablepuedeserposterioraladeclaracin.

Incorrecta,Javaesunlenguajefuertementetipado.

Incorrecta,lasoperacionespuedenserdistintasparacadatipodedato.

Exacto!Nadadeloafirmadosobredeclaracindevariables,tipadodedatosyoperacionesescorrecto.

Solucin

1.Incorrecto
2.Incorrecto
3.Incorrecto
4.Opcincorrecta
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 42/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
4.Opcincorrecta

11.3. Tipos referenciados.


Noteparecequelostiposvistoshastaahorasonunpocolimitados?Porejemplo,noparecerazonable
que para almacenar las notas de los 800 alumnos y alumnas de un centro escolar para la primera,
segundayterceraevaluacin,tuviramosquedeclararennuestroprograma3x800=2.400variables,no
teparece?Yqupasasielcursoprximoelcentrotiene805alumnos?Tendramosqueircambiandoel
programa cada vez que cambiara el nmero de alumnos y alumnas. O si quisiramos meter una cuarta
notaparalaevaluacinfinal,etc.Seharainmanejable!!

Apartirdelosochotiposdedatosprimitivos,sepuedenconstruirotrostiposdedatos.Estostiposdedatos
sellamantiposreferenciadosoreferencias,porqueseutilizanparaalmacenarladireccindelosdatos
enlamemoriadelordenador.

int[]arrayDeEnteros
CuentacuentaCliente

En la primera instruccin declaramos una lista de nmeros del mismo tipo, en este caso, enteros (le llamamos array de enteros, vector de
enteros).EnlasegundainstruccinestamosdeclarandolavariableuobjetocuentaClientecomounareferenciadetipoCuenta.(Cuentaes
unaclasequehabrdefinidoelusuario,yqueespecificarquelementosformanpartedeunacuenta,yquoperacionessepuedenhacer
conella).

ComocomentbamosalprincipiodelapartadodeTiposdedatos,cualquieraplicacindehoyendanecesitanoperderdevistaunacierta
cantidad de datos. Cuando el conjunto de datos utilizado tiene caractersticas similares se suelen agrupar en estructuras para facilitar el
accesoalosmismos,sonlosllamadosdatosestructurados.Sondatosestructuradoslosarrays,listas,rboles,etc. Pueden estar en la
memoriadelprogramaenejecucin,guardadoseneldiscocomoficheros,oalmacenadosenunabasededatos.

Adems de los ocho tipos de datos primitivos que ya hemos descrito, Java proporciona un tratamiento especial a los textos o cadenas de
caracteresmedianteeltipodedatoString.JavacreaautomticamenteunnuevoobjetodetipoStringcuandoseencuentraunacadenade
caracteresencerradaentrecomillasdobles.Enrealidadsetratadeobjetos,yportantosontiposreferenciados,peroellenguajenospermite
utilizarlostambindeformasencillacomosifueranvariablesdetiposprimitivos:

StringprimerMensaje
primerMensaje="Elprimermensaje"<br/>
StringsegundoMensaje<code>="Otromensajems"

Hemosvistoqusonlasvariables,cmosedeclaranylostiposdedatosquepuedenadoptar.Anteriormentehemosvistotambinunejemplo
decreacindevariables.Ahoravamosacrearmsvariables,perodedistintostiposprimitivosylasvamosamostrarporpantalla.Lostipos
referenciadoslosveremosenlasiguienteunidad.

ParamostrarunmensajeporpantallautilizamosSystem.out,conocidocomolasalidaestndardelprograma.Msadelante,cuandoveamos
los flujos en Java, entenders mejor qu representa System.out, pero de momento basta con indicar que es la manera de decirle al
programaquehagaalgoconlasalidaestndar,yesasalidaestndar,comocasitodoenJava,estambinunobjeto.EnNetbeanslasalida
estndaresunpanelllamadoOutput,queapareceenlaparteinferiordelapantalla.Bien,aeseflujodesalida,System.out,podemosenviar
algomedianteunmtodo(queeslaformadellamaraunadelasposiblesaccionessobreeseobjeto).PodemosutilizarSystem.out.print()o
System.out.println().Enelsegundocasoloquehaceelmtodoesquejustodespusdeescribirelmensaje,sitaelcursoralprincipiodelalnea
siguiente(aandeunsaltodelnea).Eltextoensombreadoanaranjadoqueapareceentrecaracteres//(oentre/*y*/)soncomentariosque
permitendocumentarelcdigo,peronosontenidosencuentaporelcompiladory,portanto,noafectanalaejecucindelprograma.(Atite
aparecernloscomentariosseguramenteconelestilopordefecto,engris).

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 43/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

EjemplodetiposdedatosenJava(13KB)

EjercicioResuelto
Cmoquedaraelejemploanteriorenpseudocdigo?

Mostrarretroalimentacin

AlgoritmoEjemploTipos

Var
i:entero
d:real
c1,c2:carcter.
encontrado:lgico
mensaje:cadena

Inicio
i10
d7.28
c1'a'
c265
encontradoverdadero
mensaje"BienvenidoaJava"

Escribir("Lavariableiesdetipoenteroysuvalores:",i)
Escribir("Lavariabledesdetiporealysuvalores:",d)
Escribir("Lavariablec1esdetipocarcterysuvalores:",c1)
Escribir("Lavariablec2esdetipocarcterysuvalores:",c2)
Escribir("Lavariableencontradoesdetipolgicoysuvalores:",encontrado)
Escribir("Lavariablemensajeesdetipocadenaysuvalores:",mensaje)
Fin

11.4. Tipos enumerados.


Los tipos de datos enumerados permiten una forma de declarar una variable con un conjunto
restringidodevalores.Porejemplo:losdasdelasemana,lasestacionesdelao,losmeses,etc.
Escomosidefiniramosnuestropropiotipodedatos.

Paradeclararlosseusalapalabrareservadaenum,seguidadelnombredelavariableylalistade
valores que puede tomar entre llaves. A los valores que se colocan dentro de las llaves se les
consideracomoconstantes,vanseparadosporcomasydebenservaloresnicos.

La lista de valores se coloca entre llaves, porque un tipo de datos enum no es otra cosa que una
especiedeclaseenJava,ytodaslasclasesllevansucontenidoentrellaves.

AlconsiderarJavaestetipodedatoscomosideunaclasesetratara,noslopodemosdefinirlosvaloresdeuntipoenumerado,sinoque
tambinpodemosdefiniroperacionesarealizarconlyotrotipodeelementos,loquehacequeestetipodedatoseamsverstilypotente
queenotroslenguajesdeprogramacin.

Citasparapensar

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 44/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Oigoyolvido.Veoyrecuerdo.Hagoycomprendo.

Proverbiochino.

Enelsiguienteejemplopuedescomprobarelusoquesehacedelostiposdedatosenumerados.TenemosunavariableDiasquealmacena
losdasdelasemana.Paraaccederacadaelementodeltipoenumeradoseutilizaelnombredelavariableseguidodeunpuntoyelvaloren
lalista.Mstardeveremosquepodemosaadirmtodosycamposovariablesenladeclaracindeltipoenumerado,yaquecomohemos
comentadountipoenumeradoenJavatieneelmismotratamientoquelasclases.

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

TiposdedatosEnumeradosenJava(16KB)

EnesteejemplohemosutilizadoelmtodoSystem.out.print().Comopodrscomprobarsiloejecutas,lainstruccinnmero18escribeeltextoque
tieneentrecomillas,peronosaltaalasiguientelnea,porloquelainstruccinnmero19escribejustoacontinuacin.

Sin embargo, tambin podemos escribir varias lneas usando una nica sentencia. As lo hacemos en la instruccin nmero 20, la cual
imprimecomoresultadotreslneasdetexto.Paraellohemosutilizadouncarcterespecial,llamadocarcterescape(\).Estecarctersirve
paradarleciertasrdenesalcompilador,enlugardequesalgaimpresoenpantalla.Despusdelcarcterdeescapevieneotrocarcterque
indicalaordenarealizar,juntosrecibenelnombredesecuenciadeescape.Lasecuenciadeescapequehemosusadoenelejemplo,la
barraseguidadelan, recibeelnombredecarcterdenuevalnea.Cadavezqueelcompiladorseencuentraenuntextoesecarcter,el
resultadoesquemueveelcursoralprincipiodelalneasiguiente.Enelprximoapartadovamosaveralgunasdelassecuenciasdeescape
msutilizadas.

12. Literales de los tipos primitivos.

Casoprctico

AdaseencuentraconMarayJuan.

CmovanesosavancesconJava?

Juan sabe lo que significa eso, Ada se interesa por el trabajo que estn llevando a cabo. Ya tienen
claroqutiposdedatosutilizar,peronecesitancerciorarsedelosvaloresquepuedenalmacenaresos
tiposdedatos,esdecir,quliteralespuedencontener,paraestarsegurosquehanhecholaeleccin
adecuada.

MuybiencontestaJuan.Siquierestehacemosunademostracinparaqueveaslaestructura
delprograma.

A Ada le satisface la eficacia con que trabajan Mara y Juan, apenas han comenzado con el proyecto y pronto podr ver
resultadosinmediatos.

Unliteral,valorliteraloconstanteliteralesunvalorconcretoparalostiposdedatosprimitivosdellenguaje,eltipoStringoel
valornull.

Losliteralesbooleanossondosnicosvalores,losquepuedeaceptareltipo:trueyfalse.Porejemplo,conlainstruccinbooleanencontrado
=trueestamosdeclarandounavariabledetipobooleanaalacualleasignamoselvalorliteraltrue.

Losliteralesenterossepuedenrepresentarentresnotaciones:

Decimal:porejemplo20.Eslaformamscomn.
Octal:porejemplo024.Unnmeroenoctalsiempreempiezaporcero,seguidodedgitosoctales(del0al7).
Hexadecimal:porejemplo0x14.Unnmeroenhexadecimalsiempreempiezapor0xseguidodedgitoshexadecimales(del0al9,de
laaalafodelaAalaF).

Alosliteralesdetipolongselesdebeaadirdetrsunaelemaysculaominscula(lL),porejemplo873L,delocontrarioseconsiderapor
defectounliteraldetipoint.SesueleutilizarLparaevitarlaconfusindelaeleminsculacon1.

Losliteralesrealesoencomaflotanteseexpresanconcomadecimaloennotacincientfica,osea,seguidosdeunexponenteeE.El
valorpuedefinalizarseconunafounaFparaindicarquesetratadeunliteraldetipofloatoconunadounaDparaindicarelformatodouble
(pordefecto,sinoseponenada,esdouble).Porejemplo,podemosrepresentarunmismoliteralrealdelassiguientesformas:13.2,13.2D,
1.32e1,0.132E2.Otrasconstantesliteralesrealessonporejemplo:.54,31.21E5,2.f,6.022137e+23f,3.141e9d.

Unliteralcarcterpuedeescribirsecomouncarcterentrecomillassimplescomo'a','','Z','p',etc.,oporsucdigodelatablaUnicode,
anteponiendolasecuenciadeescape\sielvalorloponemosenoctalo\usiponemoselvalorenhexadecimal.Porejemplo,sisabemos
que tanto en ASCII como en Unicode, la letra A (mayscula) es el smbolo nmero 65, y que 65 en octal es 101 y 41 en hexadecimal,
podemos representar esta letra como '\101' en octal y '\u0041' en hexadecimal. Existen unos caracteres especiales que se representan
utilizandosecuenciasdeescape:

SecuenciasdeescapeenJava

Secuenciade Secuenciade
Significado Significado
escape escape

\b Retroceso \r Retornodecarro

\t Tabulador \'' Carctercomillasdobles

\n Saltodelnea \' Carctercomillassimples

\f Saltodepgina \\ Barradiagonal

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 45/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Normalmente, los objetos en Java deben ser creados con el operador new. Sin embargo, los literales String no lo
necesitanyaquesonobjetosquesecreanimplcitamenteporJava,pudiendoprescindirdelusodeloperadornew.

Los literales de cadenas de caracteres se indican entre comillas dobles. En el ejemplo anterior El primer mensaje es un literal de tipo
cadenadecaracteres.AlconstruirunacadenadecaracteressepuedeincluircualquiercarcterUnicodeexceptouncarcterderetornode
carro.Porejemplo,enlasiguienteinstruccinutilizamoslasecuenciadeescape\paraescribirdoblescomillasdentrodelmensaje:

Stringtexto="Juandijo:\"Hoyhaceundafantstico\""

Enrealidad,dentrodelavariabletextoseestincluyendolacadenaliteralJuandijo:"Hoyhaceundafantstico...",queincluyeunaparte
entrecomillasdobles.

Enelejemplodelapartadoanteriorparatiposenumeradosyaestbamosutilizandosecuenciasdeescape,paraintroducirunsaltodelneaen
unacadenadecaracteres,utilizandoelcarcterespecial.

13. Operadores y expresiones.

Casoprctico

Mara y Juan tienen definidas las variables y tipos de datos a utilizar en la aplicacin. Es el
momento de ponerse a realizar los clculos que permitan manipular esos datos, sumar, restar,
multiplicar,dividirymuchoms.Endefinitivasetratadellevarlosconocimientosmatemticosal
terreno de la programacin, ver cmo se pueden hacer operaciones aritmticas, lgicas o de
comparacin en el lenguaje Java. Tambin necesitarn algn operador que permita evaluar una
condicin y decidir las acciones a realizar en cada caso. Es importante conocer bien cmo el
lenguaje evala esas expresiones, en definitiva, cul es la precedencia que tiene cada
operador.

Los operadores llevan a cabo operaciones sobre un conjunto de datos u operandos, representados por
literales y/o identificadores. Los operadores pueden ser unarios, binarios o terciarios, segn el nmero de
operandosqueutilicenseanuno,dosotres,respectivamente.Losoperadoresactansobrelostiposdedatos
primitivosydevuelventambinuntipodedatoprimitivo.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 46/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Losoperadoressecombinanconlosliteralesy/oidentificadoresparaformarexpresiones.

Unaexpresinesunacombinacindeoperadoresyoperandosqueseevalaproduciendounnico
resultadodeuntipodeterminado.
Simona

Elresultadodeunaexpresinpuedeserusadocomopartedeotraexpresinoenunasentenciaoinstruccin.Lasexpresiones,combinadas
conalgunaspalabrasreservadasoporsmismas,formanlasllamadassentenciasoinstrucciones.
Porejemplo,pensemosenlasiguienteexpresinJava:

i+1

Conestaexpresinestamosutilizandounoperadoraritmticoparasumarleunacantidadalavariablei,peroesnecesarioindicaralprograma
quhacerconelresultadodedichaexpresin:

suma=i+1

Que lo almacene en una variable llamada suma, por ejemplo. En este caso ya tendramos una accin completa, es decir, una sentencia o
instruccin.

Ms ejemplos de sentencias o instrucciones los tenemos en las declaraciones de variables, vistas en apartados anteriores, o en las
estructurasbsicasdellenguajecomosentenciascondicionalesobucles,queveremosenunidadesposteriores.

Comocuriosidadcomentarquelasexpresionesdeasignacin,alpoderserusadascomopartedeotrasasignacionesuoperaciones,son
consideradastantoexpresionesensmismascomosentencias.

Citasparapensar
Loquenohemosrealizadonoesmsqueloquetodavanohemosintentadohacer.

AlexisdeTocqueville.

13.1. Operadores aritmticos.


Los operadores aritmticos son aquellos operadores que combinados con los operandos forman expresiones
matemticasoaritmticas.

Operadoresaritmticosbsicos

Operador OperacinJava ExpresinJava Resultado

Operadorunariodecambiode
10 10 PaulSchadler
signo

+ Adicin 1.2<abbrtitle="ms">+</abbr>9.3 10.5

Sustraccin 312.5<abbrtitle="menos"></abbr>12.3 300.2

* Multiplicacin 1.7<abbrtitle="por">*</abbr>1.2 2.04

/ Divisin(enteraoreal) 0.5<abbrtitle="partidopor">/</abbr>0.2 2.5

25<abbrtitle="Restomdulo.">%
% Restodeladivisinentera 1
</abbr>3

Elresultadodeestetipodeexpresionesdependedelosoperandosqueutilicen:

ResultadosdelasoperacionesaritmticasenJava

Tipodelosoperandos Resultado

Unoperandodetipolongyningunoreal(nifloatnidouble) long

Ningnoperandodetipolongnireal(<strong><spanstyle="fontsize:medium"><code>floatodouble) int

Almenosunoperandodetipodouble double

Almenosunoperandodetipofloatyningunodouble float

Otrotipodeoperadoresaritmticossonlosoperadoresunariosdeincrementoydecremento.Producenunresultadodelmismotipoqueel
operando, y podemos utilizarlos con notacin prefija, si el operador aparece antes que el operando, o notacin postfija, si el operador
aparecedespusdeloperando.Enlatablapuedesverunejemplodeutilizacindecadaunodeestosoperadores.

OperadoresincrementalesenJava

Tipooperador ExpresinJava

Prefija: Postfija:

++(incremental) x=3 x=3
y=++x y=x++
//xvale4eyvale4 //xvale4eyvale3

(decremental) 5//elresultadoes4

En el ejemplo vemos un programa bsico que utiliza operadores aritmticos. Observa que usamos System.out.printf() para mostrar por
pantallauntextoformateado.Eltextoentredoblescomillassonlosargumentosdelmtodoprintf()ysiusamosmsdeuno,seseparancon
comas. Primero indicamos cmo queremos que salga el texto, y despus el texto que queremos mostrar. Fjate que con el primer %s nos
estamosrefiriendoaunavariabledetipoString,osea,alaprimeracadenadetexto,conelsiguiente%salasegundacadenayconelltimo
%salatercena.Con%fnosreferimosaunargumentodetipofloat,etc.

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 47/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

Operadoresaritmticos(14KB)

EjercicioResuelto
Pulsaelbotnparaverelpseudocdigocorrespondientealejemploanterior.

Mostrarretroalimentacin

AlgoritmoOperadoresAritmeticos
Var
x,y:entero
f1,f2:real

Inicio
x7
y5
f113.5
f28
Escribir("Elvalordexes",x,",yes",y)
Escribir("Elresultadodex+yes",(x+y))
Escribir("Elresultadodexyes"+(xy))
Escribir(Divisinentera:","x/y=",(x/y))
Escribir("Restodeladivisinentera:xmoduloy=",xmoduloy)
Escribir("Elvalordef1es",f1,",f2es",f2)
Escribir("Elresultadodef1/f2es",(f1/f2))
Fin

13.2. Operadores de asignacin.


Elprincipaloperadordeestacategoraeseloperadorasignacin"="quepermitealprogramadarleunvalora
una variable, que ya hemos utilizado en varias ocasiones en esta unidad. Adems de este operador, Java
proporcionaotrosoperadoresdeasignacincombinadosconlosoperadoresaritmticos,quepermitenabreviar
oreducirciertasexpresiones.

Porejemplo,eloperador"+="sumaelvalordelaexpresinaladerechadeloperadorconelvalordelavariable
que hay a la izquierda del operador, y almacena el resultado en dicha variable. En la siguiente tabla se
muestrantodoslosoperadoresdeasignacincompuestosquepodemosutilizarenJava.
AldoCaviniBenedetti

Operadoresdeasignacincombinadosen
Java

Expresin
Operador EjemploenJava
equivalente

+= op1+=op2 op1=op1+op2

= op1=op2 op1=op1op2

*= op1*=op2 op1=op1*op2

/= op1/=op2 op1=op1/op2

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 48/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
/= op1/=op2 op1=op1/op2

%= op1%=op2 op1=op1%op2

Unejemplodeoperadoresdeasignacincombinadoslotenemosacontinuacin:

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

Operadorescombinados(17KB)

EjercicioResuelto
Denuevo,aquteofrecemoselpseudocdigoquecorresponderaconelejemploanterior.

Mostrarretroalimentacin

AlgoritmoOperadoresAsignacion

Var
x,y:entero
Inicio
x5
y3

/*operadoresdeasignacincombinados,peropseudocdigonoentraentantodetalle*/
Escribir("Elvalordexes,x,yelvalordeyes",y)
xx+y

Escribir("Sumacombinada:............xvale",x)

x5
xxy
Escribir("Restacombinada:...........xvale",x)
<br/>x5
xx*y
Escribir("Productocombinado:........xvale",x)<br/><br/>x5
xx/y
Escribir("Divisincombinada:........xvale",x)
<br/>x5
xxmoduloy
Escribir("Restocombinada:...........xvale"+x)
Fin

Parasaberms
En el siguiente enlace, en ingls, tienes informacin interesante sobre cmo se pueden utilizar los caracteres especiales
incluidosenlaordenprintf():

Ordenprintf()

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 49/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

13.3. Operador condicional.

Eloperadorcondicional?:sirveparaevaluarunacondicinydevolverunresultadouotroenfuncindesi
es verdadera o falsa dicha condicin. Es el nico operador ternario de Java, y como tal, necesita tres
operandosparaformarunaexpresin.

Elprimeroperandosesitaalaizquierdadelsmbolodeinterrogacin,ysiempreserunaexpresin
booleana,tambinllamadacondicin.
Elsiguienteoperandosesitaaladerechadelsmbolodeinterrogacinyantesdelosdospuntos,y
eselvalorquedevolvereloperadorcondicionalsilacondicinesverdadera.
Elltimooperando,queaparecedespusdelosdospuntos,eslaexpresincuyoresultadosedevolversilacondicinevaluadaes
falsa.

Operadorcondicionalen
Java

Operador ExpresinenJava

?: condicin?exp1:exp2

Porejemplo,enlaexpresin:

(x>y)?x:y

Seevalalacondicindesixesmayorquey,encasoafirmativosedevuelveelvalordelavariablex,yencasocontrariosedevuelveelvalor
dey.

EloperadorcondicionalsepuedesustituirporlasentenciaifthenelsequeveremosenlasiguienteunidaddeEstructurasdecontrol,delaque
viene a ser una versin abreviada muy til para algunos casos, permitiendo hacer operaciones potentes con una nica sentencia bastante
simple. Por ejemplo, la lnea anterior de ejemplo, devuelve el mayor de los dos nmeros que se comparan, de una manera sinttica y
elegante,aunquelomismosepodrahaberhechousandounasentenciaifthenelse.

Citasparapensar
La buena escritura debe ser concisa. Una oracin no debe contener palabras innecesarias, un prrafo no debe
conteneroracionesinnecesarias.

WilliamStrunk,Jr.

13.4. Operadores de relacin.

Losoperadoresrelacionalesseutilizanparacomparardatosdetipoprimitivo(numrico,carcterybooleano).
Elresultadodelacomparacinseutilizarenotrasexpresionesosentencias,quepermitirncomprobarenuna
condicin dicho resultado, y ejecutar una accin u otra en funcin de si se cumple o no la condicin
comprobadaalcomparar.

Losoperadoresrelacionalesseutilizanparacomparardatosdetipoprimitivo(numrico,carcterybooleano).
Elresultadodelacomparacinseutilizarenotrasexpresionesosentencias,quepermitirncomprobarenuna
condicindichoresultado,yejecutarunaaccinuotraenfuncindesisecumpleonolacondicincomprobadaalcomparar.

Estas expresiones en Java dan siempre como resultado un valor booleano true o false. En la tabla siguiente aparecen los operadores
relacionalesenJava.

OperadoresrelacionalesenJava

Operador EjemploenJava Significado

== op1==op2 op1igualaop2

!= op1!=op2 op1distintodeop2

> op1>op2 op1mayorqueop2

< op1<op2 op1menorqueop2


http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 50/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
< op1<op2 op1menorqueop2

>= op1>=op2 op1mayoroigualqueop2

<= op1<=op2 op1menoroigualqueop2

Hasta ahora hemos visto ejemplos que creaban variables y se inicializaban con algn valor. Pero y si lo que queremos es que el usuario
introduzcaunvaloralprograma?

Entoncesdebemosagregarleinteractividadanuestroprograma,porejemploutilizandolaclaseScanner.Aunquenohemosvistotodavaqu
sonlasclasesylosobjetos,demomentovamosapensarquelaclaseScannernosvaapermitirleerlosdatosqueseescribenporteclado,y
queparausarlaesnecesarioimportarelpaquetedeclasesquelacontiene.Elcdigodelejemplolotienesacontinuacin.Elprogramase
quedaresperandoaqueelusuarioescribaalgoeneltecladoypulselateclaintro.Enesemomentoseconvierteloledoaunvalordeltipo
intyloguardaenlavariableindicada.Ademsdelosoperadoresrelacionales,enesteejemploutilizamostambineloperadorcondicional,
quecomparasilosnmerossoniguales.Siloson,devuelvelacadenaigualesysino,lacadenadistintos.

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

Operadoresderelacinycondicional(17KB)

EjercicioResuelto
Otroejemplotransformadoenpseudocdigo.

Mostrarretroalimentacin

AlgoritmoEjemploRelacionales{
Var
x,y:entero
cadena1:cadena
resultado:lgico
Inicio
Escribir("Introducirprimernmero:")
Leerx
Escribir("Introducirsegundonmero:")
Leery
SI(x=y)ENTONCES
cadena1"iguales"
SINO
cadena1"distintos"
FIN_SI
Escribir("Losnmeros,x,e,y,son,cadena)

resultado(x!=y)
Escribir("x!=yesunaexpresinconvalor",resultado)

resultado(x<y)
Escribir("x<yesunaexpresinconvalor",resultado)

resultado(x>y)
Escribir("x>yesunaexpresinconvalor",resultado)

resultado(x<=y)
Escribir("x<=yesunaexpresinconvalor",resultado)

resultado(x>=y)
Escribir("x>=yesunaexpresinconvalor",resultado)
Fin

Autoevaluacin
SealaculessonlosoperadoresrelacionalesenJava.

==,!=,>,<,>=,<=.

=,!=,>,<,>=,<=.

==,=!,>,<,=>,=<.

==,!=,>,<,>=,<=.

Noescorrecta,porquehayunerrordesintaxisalcolocarunespacioentrelossmbolosdecadaoperador.

Incorrecta,porque=eseloperadordeasignacin,noeloperadorrelacionaldeigualdad==.

Noeslarespuestacorrecta,porquelossmbolosdelosoperadoresdistintoa,mayoroigualymenoroigualson!=, >= y
<=,respectivamente.

Muybien.TienesclaroculessonlosoperadoresrelacionalesenJava.

Solucin
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 51/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Solucin

1.Incorrecto
2.Incorrecto
3.Incorrecto
4.Opcincorrecta

13.5. Operadores lgicos.


Losoperadoreslgicosrealizanoperacionessobrevaloresbooleanos,oresultadosdeexpresionesrelacionales,
dandocomoresultadounvalorbooleano.

Losoperadoreslgicoslospodemosverenlatablaquesemuestraacontinuacin.

Existenciertoscasosenlosqueelsegundooperandodeunaexpresinlgicanoseevalaparaahorrar
tiempo de ejecucin, porque con el primero ya es suficiente para saber cul va a ser el resultado de la
expresin.

Porejemplo,enlaexpresina&&bsiaesfalso,nosesiguecomprobandolaexpresin,puestoqueyasesabe
quelacondicindequeambosseanverdaderonosevaacumplir.Enestoscasosesmsconvenientecolocarel AldoCaviniBenedetti

operandomspropensoaserfalsoenelladodelaizquierda.Igualocurreconeloperador||,encuyocasoesms
favorablecolocareloperandomspropensoaserverdaderoenelladoizquierdo.

OperadoreslgicosenJava

Operador EjemploenJava Significado

! !op Devuelvetruesieloperandoesfalseyviceversa.

& op1&op2 Devuelvetruesiop1yop2sontrue

| op1|op2 Devuelvetruesiop1uop2sontrue

^ op1^op2 Devuelvetruesislounodelosoperandosestrue

&& op1&&op2 Igualque&,perosiop1esfalseyanoseevalaop2

|| op1||op2 Igualque|,perosiop1estrueyanoseevalaop2

Enelsiguientecdigopuedesverunejemplodeutilizacindeoperadoreslgicos.ObservaqueelpanelOutputparalasalidaestndarseha
colocadoaladerecha,paraquesepuedavertantoelcdigocompletocomoelresultadodelaejecucindelmismo:

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

Operadoreslgicos(17KB)

EjercicioResuelto
Aqutieneselejemplodelosoperadoreslgicospasadoapseudocdigo.

Mostrarretroalimentacin

AlgoritmoOperadoresLogicos

Inicio
Escribir("OPERADORESLGICOS")

Escribir("Negacin:<saltolnea>Nofalsoes:",(NOfalso))
Escribir("Noverdaderoes:",(NOverdadero))

Escribir("OperadorY:<saltolnea>falsoYfalsoes:",(falsoYfalso))
Escribir("falsoYVerdaderoes:",(falsoYVerdadero))
Escribir("VerdaderoYfalsoes:",(VerdaderoYfalso))
Escribir("VerdaderoYVerdaderoes:",(VerdaderoYVerdadero))

Escribir("OperadorO:<saltolnea>falsoOfalsoes:",(falsoOfalso))
Escribir("falsoOVerdaderoes:",(falsoOVerdadero))
Escribir("VerdaderoOfalsoes:",(VerdaderoOfalso))
Escribir("VerdaderoOVerdaderoes:",(VerdaderoOVerdadero))

Escribir("OperadorOEXCLUSIVO:<saltolnea>
falsoOEXCLUSIVOfalsoes:",(falsoOEXCLUSIVOfalso))
Escribir("falsoOEXCLUSIVOVerdaderoes:",(falsoOEXCLUSIVOVerdadero))
Escribir("VerdaderoOEXCLUSIVOfalsoes:",(VerdaderoOEXCLUSIVOfalso))
Escribir("VerdaderoOEXCLUSIVOVerdaderoes:",(VerdaderoOEXCLUSIVOVerdadero))
Fin

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 52/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

13.6. Operadores de bits.

Losoperadoresaniveldebitssecaracterizanporquerealizanoperacionessobrenmerosenteros(ochar)ensu
representacinbinaria,esdecir,sobrecadadgitobinario.

Aunqueestosoperadoresnosondeusofrecuente,sinomsbienparaaplicacionesmuyespecficas,noestde
msquealmenossepasculesson.EnlatablatieneslosoperadoresaniveldebitsqueutilizaJava.

OperadoresaniveldebitsenJava

Operador EjemploenJava Significado

~ ~op Realizaelcomplementobinariodeop(invierteelvalordecadabit)

& op1&op2 RealizalaoperacinANDbinariasobreop1yop2

| op1|op2 RealizalaoperacinORbinariasobreop1yop2

^ op1^op2 RealizalaoperacinORexclusivo(XOR)binariasobreop1yop2

<< op1<<op2 Desplazaop2veceshacialaizquierdalosbitsdeop1

>> op1>>op2 Desplazaop2veceshacialaderechalosbitsdeop1

>>> op1>>>op2 Desplazaop2(enpositivo)veceshacialaderechalosbitsdeop1

Parasaberms
Losoperadoresdebitsraramentelosvasautilizarentusaplicacionesdegestin.Noobstante,sisientescuriosidadsobresu
funcionamiento,puedesverelsiguienteenlacededicadoaestetipodeoperadores:

Operadoresdebits

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 53/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

13.7. Trabajo con cadenas.

YahemosvistoenelapartadodeliteralesqueelobjetoStringsecorrespondeconunasecuenciadecaracteres
entrecomillados, como por ejemplo hola. Este literal se puede utilizar en Java como si de un tipo de datos
primitivosetratase,ycomocasoespecial,nonecesitadeloperadornewparasercreado.

Nosetrataaqudequenosadentremosenloqueesunaclaseuobjeto,puestoqueloveremosenunidades
posteriores, y trabajaremos mucho sobre ello. Aqu slo vamos a utilizar determinadas operaciones que
podemosrealizarconelobjetoString,yloversmuchomsclaroconejemplosdescriptivos.

Para aplicar una operacin a una variable de tipo String, escribiremos su nombre seguido de la operacin,
separadosporunpunto.Entrelasprincipalesoperacionesquepodemosutilizarparatrabajarconcadenasde
caracteresestnlassiguientes:

Creacin. Como hemos visto en el apartado de literales, podemos crear una variable de tipo String .
simplementeasignndoleunacadenadecaracteresencerradaentrecomillasdobles.
Obtencindelongitud.SinecesitamossaberlalongituddeunString,utilizaremoselmtodolength().
Concatenacin.Seutilizaeloperador+oelmtodoconcat()paraconcatenarcadenasdecaracteres.
Comparacin.Elmtodoequals()nosdevuelveunvalorbooleanoqueindicasilascadenascomparadassononoiguales.Elmtodo
equalsIgnoreCase()hacelopropio,ignorandolasmaysculasdelascadenasaconsiderar.
Obtencin de subcadenas. Podemos obtener cadenas derivadas de una cadena original con el mtodo substring(), al cual le
debemosindicarelinicioyelfindelasubcadenaaobtener.
Cambioamaysculas/minsculas.LosmtodostoUpperCase()ytoLowerCase()devuelvenunanuevavariablequetransformaen
maysculasominsculas,respectivamente,lavariableinicial.
Conversiones.UtilizaremoselmtodovalueOf()para convertir un tipo de dato primitivo (int,long,float, etc.) a una variable de tipo
String.

AcontinuacinvariosejemplosdelasdistintasoperacionesquepodemosrealizarconcadenasdecaracteresoStringenJava:

CapturadepantallaparausoeducativonocomercialdelaaplicacinNetBeans,bajolicenciaCDDL.

Operacionesconcadenas(17KB)

EjercicioResuelto
Solucinenpseudocdigoparaelejemplodeoperacionesconcadenas.

Mostrarretroalimentacin

AlgoritmoEjemploCadenas
Var
cadena1,cadena2:cadena

Inicio
cadena1="CICLODAMDAW"
cadena2="ciclodamdaw"

Escribir("Lacadenacadena1es:",cadena1,"ycadena2es:",cadena2)

Escribir("<saltolnea>Longituddecadena1:",longitud(cadena1))

/*concatenacindecadenas(CONCATENAR)*/
Escribir("<saltolnea>Concatenacin:",CONCATENAR(cadena1,cadena2))

/*comparacindecadenas*/
Escribir("<saltolnea>cadena1=cadena2es",cadena1=cadena2)

Escribir("<saltolnea>COMPARAR(cadena1,cadena2)es",COMPARAR(cadena1,cadena2))

/*obtencindesubcadenas*/
Escribir("<saltolnea>SUBCADENA(cadena1,0,5)es",SUBCADENA(cadena1,0,5))

/*pasaraminsculas*/
Escribir("<saltolnea>ENMINUSCULAS(cadena1)es",ENMINUSCULAS(cadena1))
Fin

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 54/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

13.8. Precedencia de operadores.


El orden de precedencia de los operadores determina la secuencia en que deben realizarse las operaciones
cuandoenunaexpresinintervienenoperadoresdedistintotipo.

LasreglasdeprecedenciadeoperadoresqueutilizaJavacoincidenconlasreglasdelasexpresionesdellgebra
convencional.Porejemplo:

La multiplicacin, divisin y resto de una operacin se evalan primero. Si dentro de la misma expresin
tengovariasoperacionesdeestetipo,empezarevalundolasdeizquierdaaderecha.
La suma y la resta se aplican despus que las anteriores. De la misma forma, si dentro de la misma
expresintengovariassumasyrestasempezarevalundolasdeizquierdaaderecha.
HB

A la hora de evaluar una expresin es necesario tener en cuenta la asociatividad de los operadores. La
asociatividadindicaquoperadorseevalaantes,encondicionesdeigualdaddeprecedencia.Losoperadoresdeasignacin,eloperador
condicional(?:),losoperadoresincrementales(++,)yelcastingsonasociativosporladerecha.Elrestodeoperadoressonasociativospor
la izquierda, es decir, que se empiezan a calcular en el mismo orden en el que estn escritos: de izquierda a derecha. Por ejemplo, en la
expresinsiguiente:

10/2*5

Realmentelaoperacinqueserealizaes(10/2)*5,porqueambosoperadores,divisinymultiplicacin,tienenigualprecedenciayportanto
seevalaprimeroelqueantesnosencontramosporlaizquierda,queesladivisin.Elresultadodelaexpresines25.Sifueranasociativos
porladerecha,puedescomprobarqueelresultadoseradiferente,primeromultiplicaramos2*5yluegodividiramosentre10,porloqueel
resultadosera1.Enestaotraexpresin:

x=y=z=1

Realmentelaoperacinqueserealizaesx=(y=(z=1)).Primeroasignamoselvalorde1alavariablez,luegoalavariabley,paraterminar
asignandoelresultadodeestaltimaasignacinax.Sieloperadorasignacinfueraasociativoporlaizquierdaestaoperacinnosepodra
realizar,yaqueintentaramosasignaraxelvalordey,peroyannohabrasidoinicializada.

Enlatablasedetallaelordendeprecedenciaylaasociatividaddelosoperadoresquehemoscomentadoenesteapartado.Losoperadores
semuestrandemayoramenorprecedencia.

Ordendeprecedenciadeoperadoresen
Java

Operador Tipo Asociatividad

++ Unario,notacinpostfija Derecha

+++
Unario,notacinprefija Derecha
(cast)!~

*/% Aritmticos Izquierda

+ Aritmticos Izquierda

<<>>>>> Bits Izquierda

<<=>>= Relacionales Izquierda

==!= Relacionales Izquierda

& Lgico,Bits Izquierda

^ Lgico,Bits Izquierda

| Lgico,Bits Izquierda

&& Lgico Izquierda

|| Lgico Izquierda

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 55/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
?: Operadorcondicional Derecha

=+==*=
Asignacin Derecha
/=%=

Reflexiona
Crees que es una buena prctica de programacin utilizar parntesis en expresiones aritmticas complejas, an cuando no
seannecesarios?

Mostrarretroalimentacin

Probablemente acertaste. El uso de parntesis, incluso cuando no son necesarios, puede hacer ms fcil de leer las
expresionesaritmticascomplejas.
No obstante, usar de forma exhaustiva los parntesis como si no existieran las reglas de precedencia de operadores
puedehacerquelasexpresionessealarguenysehaganmsincmodasdemanejardeformainnecesaria.
Eneltrminomedioestlavirtud.

14. Conversion de tipo.

Casoprctico

MarahaavanzadomuchoensusconocimientossobreJavayhacontadoconmuchaayudapor
partedeJuan.Ahoramismotieneunproblemaconelcdigo,ylecomenta:

Estoyatrancadaenelcdigo.Tengounavariabledetipobyteyquieroasignarleunvalordetipo
int, pero el compilador me da un error de posible prdida de precisin. T sabes qu significa
eso?

ClarolecontestaJuan,esunproblemadeconversindetipos,paraasignarleelvalorala
variabledetipobytedebeshaceruncasting.

Ah!,ycmosehaceeso?

Imaginaquequeremosdividirunnmeroentreotro:tendrdecimaleselresultadodeesadivisin?

Podemospensarquesiemprequeeldenominadornoseadivisibleentreeldivisor,tendremosunresultadocondecimales,peronoesas.

Sieldenominadoryeldivisorsonvariablesdetipoentero,elresultadoserenteroynotendrdecimales .Paraqueelresultado
tengadecimalesnecesitaremoshacerunaconversindetipo.

Las conversiones de tipo se realizan para hacer que el resultado de una expresin sea del tipo que nosotros deseamos. En el ejemplo

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 56/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Las conversiones de tipo se realizan para hacer que el resultado de una expresin sea del tipo que nosotros deseamos. En el ejemplo
anterior,parahacerqueelresultadodeladivisinseadetiporeal,condecimales,debemoshacerunaconversindetipo.Existendostiposde
conversiones:

Conversiones automticas. Cuando a una variable de un tipo se le asigna un valor de otro tipo numrico con menos bits para su
representacin,serealizaunaconversinautomtica.Enesecaso,elvalorsedicequeespromocionadoaltipomsgrande(eldela
variable), para poder hacer la asignacin. Tambin se realizan conversiones automticas en las operaciones aritmticas, cuando
estamosutilizandovaloresdedistintotipo,elvalormspequeosepromocionaalvalormsgrande,yaqueeltipomayorsiemprepodr
representarcualquiervalordeltipomenor(porejemplo,deintalongodefloatadouble).

Conversionesexplcitas.Cuandohacemosunaconversindeuntipoconmsbitsauntipoconmenosbits.Enestoscasosdebemos
indicar que queremos hacer la conversin de manera expresa, ya que se puede producir una prdida de datos y hemos de ser
conscientesdeello.Estetipodeconversionesserealizaconeloperadorcast.Eloperadorcastesunoperadorunarioqueseforma
colocandodelantedelvaloraconvertireltipodedatoentreparntesis.Tienelamismaprecedenciaqueelrestodeoperadoresunariosy
seasociadederechaaizquierda.

Debemostenerencuentaqueunvalornumriconuncapuedeserasignadoaunavariabledeuntipomenorenrango,sinoescon
unaconversinexplcita.Porejemplo:

inta
byteb
a=12 //noserealizaconversinalguna
b=12 //sepermiteporque12estdentro
//delrangopermitidodevaloresparab
b=a //error,nopermitido(inclusoaunque
//12podraalmacenarseenunbyte)
byteb=(byte)a //Correcto,forzamosconversinexplcita

Enelejemploanteriorvemosuncasotpicodeerrordetipos,yaqueestamosintentandoasignarleabelvalordea,siendobdeuntipoms
pequeo.Elcompiladordetectaqueaes"uncubomsgrande",yqueportantosiintentamosvolcarsucontenidoenbqueesuncuboms
pequeo,puedenocaber,asquemejoravisardelerror,ynodejarniintentarlo,noseaquesepierdaelcontenido"pordesbordamientodel
cubo".

Locorrectoesforzarlaconversindeaaltipodedatosbyte,(puestoquesucontenido,12,realmentepuedeservistocomounliteralbyte
tambin)yentoncesasignarlesuvaloralavariableb.

Debesconocer
EnelAnexoIIdeestamismaunidadhayinformacinimportantesobrecmoseproducenlasconversionesdetiposenJava,
tantoautomticascomoexplcitas.

15. Comentarios.

Casoprctico

Juan ha podido comprobar los avances que ha hecho Mara con la programacin. Ya domina
todoslosaspectosbsicossobresintaxis,estructuradeunprograma,variablesytiposdedatos.
Adaleacabadecomunicarquevanasumarsealproyectodospersonasms,AnayCarlosque
estn haciendo las prcticas en la empresa, vienen del ciclo de Desarrollo de Aplicaciones
MultiplaformayDesarrollodeAplicacionesWeb,respectivamente.

Al principio de cada programa indicaremos una breve descripcin y el autor. En operaciones


complicadaspodramosaadiruncomentario,lesayudaraentendermejorquesloquehaceindicaJuan.

DeacuerdocomentaMara,ypodemosirmetiendoloscomentariosdelaherramientaesaquemecomentaste,Javadoc,
paraquesecreeunadocumentacinanmscompleta.

Aj!,puesmanosalaobra!

Loscomentariossonmuyimportantesalahoradedescribirquhaceundeterminadoprograma.Alolargodelaunidadloshemosutilizado
para documentar los ejemplos y mejorar la comprensin del cdigo. Para lograr ese objetivo, es normal que cada programa comience con
unaslneasdecomentarioqueindiquen,almenos,unabrevedescripcindelprograma,elautoroautoradelmismoylaltimafechaenque
sehamodificado.

Todos los lenguajes de programacin disponen de alguna forma de introducir comentarios en el cdigo. En el caso de Java,nospodemos
encontrarlossiguientestiposdecomentarios:

Comentariosdeunasolalnea.Utilizaremoseldelimitador//paraintroducircomentariosdeslounalnea.

//comentariodeunasolalnea

Comentarios de mltiples lneas. Para introducir este tipo de comentarios, utilizaremos una barra inclinada y un asterisco (/*), al
principiodelprrafoyunasteriscoseguidodeunabarrainclinada(*/)alfinaldelmismo.Aunquenoesnecesarioponerasteriscosal
comienzodecadanuevalneadentrodelcomentario,suelehacerseparaquedeesaformaquedevisualmentedelimitadoqulneas
abarcaelcomentario.Deestaforma,enelejemplosiguientesevecmosueleponerseelcomentarioprimero...yluegoserepiteconlo
queseraestrictamentenecesario

/*<br/>*Estoesuncomentario
*devariaslneas<br/>*/<br/>
<br/>/*Estoesuncomentario
devariaslneas*/

Comentarios Javadoc. Utilizaremos los delimitadores /** y */. Al igual que con los comentarios tradicionales, el texto entre estos
delimitadores ser ignorado por el compilador. Este tipo de comentarios se emplean para generar documentacin automtica del
programa.Atravsdelprogramajavadoc,incluidoenJavaSE,serecogentodosestoscomentariosysellevanaundocumentoen
formato.html.Aligualqueenloscomentariosdemltipleslneas,noserannecesarioslosasteriscosinicialesparalasegunda,tercera
ycuartalneasdelcomentariosiguiente.

/**<br/>*Comentariodedocumentacin.
*Javadocextraeloscomentariosdelcdigoy
*generaunarchivohtmlapartirdeestetipodecomentarios
*/

Reflexiona
Unabuenaprcticadeprogramacinesaadirenlaltimallavequedelimitacadabloquedecdigo,uncomentarioindicandoa
http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 57/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
Unabuenaprcticadeprogramacinesaadirenlaltimallavequedelimitacadabloquedecdigo,uncomentarioindicandoa
quclaseomtodoperteneceesallave.

Parasaberms
Si quieres ir familiarizndote con la informacin que hay en la web de Oracle, en el siguiente enlace puedes encontrar ms
informacinsobrelaherramientaJavadocincluidaenelKitdeDesarrollodeJavaSE(eningls):

PginaoficialdeOraclesobrelaherramientaJavadoc

Anexo I. Listado de IDEs

ListadodediferentesIDEsdetrabajoparaJava.

Herramienta

BlueJJavaIDE

DrJavaJavaIDE

Eclipse(multiplataforma)

JavelinfromStepAheadSW(Windows)

JCreatorJavaIDELE(LightEdition)(Windows)

JEdit

jGRASP

JIPEJavaIDE

IBMRationalApplicationDeveloper(WindowsyGnu/Linux)

IDEA

NetBeans

OracleJDeveloper

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 58/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411
OracleJDeveloper

SlickEdit

StylusStudio

UltraStudio

VisualParadigmIntegratedDevelopmentEnvironment(VPJIDE)

XEmacs

Anexo II. Conversin de tipos de datos en Java.

TabladeConversindeTiposdeDatosPrimitivos

Tipodestino

boolean char byte short int long float double

boolean N N N N N N N

char N C C CI CI CI CI

byte N C CI CI CI CI CI

short N C C CI CI CI CI
Tipoorigen
int N C C C CI CI* CI

long N C C C C CI* CI*

float N C C C C C CI

double N C C C C C C

Explicacindelossmbolosutilizados:

N:Conversinnopermitida(unbooleannosepuedeconvertiraningnotrotipoyviceversa).
CI:Conversinimplcitaoautomtica.Unasteriscoindicaquepuedehaberposibleprdidadedatos.
C:Castingdetiposoconversinexplcita.
:Mismotipo.Nohayqueconvertirnada.

Elasteriscoindicaquepuedehaberunaposibleprdidadedatos,porejemploalconvertirunnmerodetipo
intqueusalos32bitsposiblesdelarepresentacin,auntipofloat,quetambinusa32bitsparalarepresentacin,pero8deloscualesson
paraelexponente.

En cualquier caso, las conversiones de nmeros en coma flotante a nmeros enteros siempre necesitarn un casting, y deberemos tener
muchocuidadodebidoalaprdidadeprecisinqueellosupone.

ReglasdePromocindeTiposdeDatos.

Cuandoenunaexpresinhaydatosovariablesdedistintotipo,elcompiladorrealizalapromocindeunostiposenotros,paraobtenercomo
resultadoeltipofinaldelaexpresin.Estapromocindetipossehacesiguiendounasreglasbsicasenbasealascualesserealizaesta
promocindetipos,yresumidamentesonlassiguientes:

Siunodelosoperandosesdetipodouble,elotroesconvertidoadouble.
Encualquierotrocaso:
Sielunodelosoperandosesfloat,elotroseconvierteafloat.
Siunodelosoperandoseslong,elotroseconviertealong.
Si no se cumple ninguna de las condiciones anteriores, (ningn operando es double, ni float, ni
long)entoncesambosoperandossonconvertidosaltipoint.

TablasobreotrasconsideracionesconlosTiposdeDatos

ConversionesdenmerosenComaflotante(float,double)a
Conversionesentrecaracteres(char)yenteros(int) Conversionesdetipoconcadenasdecaracteres(String)
enteros(int)

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 59/60
2017623 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411

Paraconvertircadenasdetextoaotrostiposdedatosse
Cuandoconvertimosnmerosencomaflotanteanmerosenteros, utilizanlassiguientesfunciones:
lapartedecimalsetrunca(redondeoacero).Siqueremoshacer
otrotipoderedondeo,podemosutilizar,entreotras,lassiguientes ComountipocharloqueguardaenrealidadeselcdigoUnicodedeun numero=Byte.parseByte(cadena)
funciones: carcter,loscaracterespuedenserconsideradoscomonmerosenterossin num<code>ero=Short.parseShort(cadena)
signo. num<code>ero=Integer.parseInt(cadena)
Math.round(numero):Redondeoalsiguientenmeroentero.
Ejemplo: num<code>ero=Long.parseLong(cadena)
Math.ceil(numero):Elmenordelosenterosquesiguesiendo
num<code>ero=Float.parseFloat(cadena)
mayoroigualanumero.
Math.floor(numero):Elmayordelosenterosquesigue num<code>ero=Double.parseDouble(cadena)
siendoinferioroigualanumero. intnumero
charc
numero=(int)A//numero=65 Porejemplo,sihemosledodetecladounnmeroqueest
almacenadoenunavariabledetipoStringllamadacadena,y
doublenumero=3.5 c=(char)65//c=A
loqueremosconvertiraltipodedatosbyte,haramoslo
x=Math.round(numero)//x=4 c=(char)((int)A+1)//c=B
siguiente:
y=Math.ceil(numero)//y=4
z=Math.floor(numero)//z=3

byten=Byte.parseByte(cadena)

http://educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=10411 60/60

You might also like