113
Introducción a Java Por Nacho Cabanes, Versión 0.40 de Julio de 2015 Este texto se puede distribuir libremente, siempre y cuando no se modifique Última versión disponible en www.nachocabanes.com/java

Introducción a la programacion con Java

Embed Size (px)

DESCRIPTION

Manual completo para la introducción y aprendizaje del lenguaje Java.

Citation preview

Introduccin a Java Por Nacho Cabanes, Versin 0.40 de Julio de 2015 Este texto se puede distribuir libremente, siempre y cuando no se modifique ltima versin disponible enwww.nachocabanes.com/java Introduccin a Java 0.40, por Nacho Cabanes - Pgina 2 Tabla de contenido 1. Introduccin: por qu Java? ...................................................................................... 5 1.1. Qu es Java?.................................................................................................................. 5 1.2. Por qu usar Java? ....................................................................................................... 5 1.3. Cundo no usar Java? .................................................................................................. 5 1.4. Qu ms aporta Java?.................................................................................................. 6 1.5. Qu hace falta para usar un programa creado en Java?......................................... 6 1.6. Qu hace falta para crear un programa en Java? .................................................... 6 2. Instalacin del entorno de desarrollo ....................................................................... 8 2.1. Instalacin del JDK y NetBeans bajo Windows .......................................................... 8 2.2. Instalacin de Eclipse en Windows ........................................................................... 16 2.3. Instalacin del JDK y Eclipse bajo Linux .................................................................... 17 2.4. Instalacin de Netbeans bajo Linux .......................................................................... 19 2.5. La alternativa ligera: Geany ........................................................................................ 21 3. Nuestro primer programa ........................................................................................ 22 3.1. Un programa que escribe "Hola Mundo" ................................................................. 22 3.2. Entendiendo este primer programa ......................................................................... 22 3.2.1. Escribir en pantalla ...................................................................................................23 3.2.2. Formato libre ............................................................................................................23 3.2.3. El cuerpo del programa ............................................................................................23 3.2.4. El nombre del programa ...........................................................................................24 3.2.5. Comentarios .............................................................................................................24 3.2.6. Varias rdenes ..........................................................................................................25 3.2.7. Escribir y avanzar de lnea ........................................................................................25 3.3. Compilar y lanzar el programa desde lnea de comandos ..................................... 26 3.4. La alternativa bsica pero cmoda: Geany .............................................................. 27 3.5. Manejo bsico de NetBeans ...................................................................................... 29 3.6. Contacto con Eclipse ................................................................................................... 33 4. Variables y operaciones matemticas bsicas ....................................................... 38 4.1. Las variables................................................................................................................. 38 4.2. Operaciones matemticas bsicas. ........................................................................... 40 4.3. Operar con datos introducidos por el usuario ........................................................ 40 4.4. Incremento y asignaciones abreviadas .................................................................... 42 Introduccin a Java 0.40, por Nacho Cabanes - Pgina 3 4.5. Otros tipos de datos numricos ................................................................................ 44 5. Comprobacin de condiciones ................................................................................ 47 5.1. if ..................................................................................................................................... 47 5.2. El caso contrario: else ................................................................................................. 48 5.3. Operadores relacionales ............................................................................................ 49 5.4. Operadores lgicos para enlazar condiciones......................................................... 50 5.5. switch ............................................................................................................................ 51 5.6. El operador condicional .............................................................................................. 54 6. Bucles: partes del programa que se repiten ........................................................... 56 6.1. while .............................................................................................................................. 56 6.2. do-while ........................................................................................................................ 57 6.3. for .................................................................................................................................. 59 6.4. break y continue .......................................................................................................... 63 6.5. Etiquetas ....................................................................................................................... 64 7. Booleanos, caracteres, cadenas de texto y arrays ................................................. 66 7.1 Datos booleanos .......................................................................................................... 66 7.2. Caracteres .................................................................................................................... 67 7.3. Las cadenas de texto .................................................................................................. 68 7.3.1. String ........................................................................................................................68 7.3.2. StringBuilder .............................................................................................................73 7.4. Los arrays. .................................................................................................................... 75 8. Las Matemticas y Java ............................................................................................. 81 9. Contacto con las funciones. ..................................................................................... 85 9.1.Descomposicin modular ........................................................................................... 85 9.2. Parmetros................................................................................................................... 88 9.3. Valor de retorno .......................................................................................................... 88 10. Clases en Java. ......................................................................................................... 91 10.2. Varias clases en Java ................................................................................................. 93 10.3. Herencia ..................................................................................................................... 98 10.4. Ocultacin de detalles ............................................................................................ 100 10.5. Sin "static" ................................................................................................................ 101 10.6. Constructores .......................................................................................................... 103 Introduccin a Java 0.40, por Nacho Cabanes - Pgina 4 11. Ficheros .................................................................................................................. 105 11.1. Por qu usar ficheros? .......................................................................................... 105 11.2. Escribir en un fichero de texto .............................................................................. 105 11.3. Leer de un fichero de texto .................................................................................... 106 11.4. Leer de un fichero binario ...................................................................................... 108 11.5. Leer y escribir bloques en un fichero binario ...................................................... 109 Cambios en el curso .................................................................................................... 111 Introduccin a Java 0.40, por Nacho Cabanes - Pgina 5 1. Introduccin: por qu Java? 1.1. Qu es Java? Javaesunlenguajedeprogramacindeordenadores,desarrolladopor Sun Microsystems en1995(compaaquefueposteriormenteabsorbidapor Oracle, en 2010). Hayvariashiptesissobresuorigen,aunquelamsdifundidadicequesecre paraserutilizadoenlaprogramacindepequeosdispositivos,comoaparatos electrodomsticos (desde microondas hasta televisores interactivos). Se pretenda crearunlenguajeconalgunasdelascaractersticasbsicasdeC++,peroque necesitaramenosrecursosyquefueramenospropensoaerroresde programacin. Deahevolucion(hayquiendicequeporqueelproyectoinicialnoacabde funcionar)hastaconvertirseenunlenguajemuyaplicableaInternety programacin de sistemas distribuidos en general. PerosucampodeaplicacinnoesexclusivamenteInternet:unadelasgrandes ventajasdeJavaesqueseprocuraqueseatotalmenteindependientedel hardware: existe una "mquina virtual Java" para varios tipos de ordenadores. Un programa en Java podr funcionar en cualquier ordenador para el que exista dicha "mquina virtual Java" (hoy en da es el caso de los ordenadores equipados con los sistemas operativos Windows, Mac OS X, Linux, y algn otro). Pero aun hay ms: el sistemaoperativoAndroidparatelfonosmvilesproponeusarJavacomo lenguaje estndar para crear aplicaciones.1.2. Por qu usar Java? Puedeinteresarnossiqueremoscrearprogramasquetenganquefuncionaren distintossistemasoperativossinningncambio,oprogramascliente/servidor,o aplicaciones para un Smartphone Android, entreotroscasos. Tampoco es unmal lenguajeparaaprenderaprogramar,aunqueenocasionesresultauntanto engorroso para un principiante. 1.3. Cundo no usar Java? Comodebeexistirunpasointermedio(la"mquinavirtual")parausarun programa en Java, no podremos usar Java si queremos desarrollar programas para unsistemaconcreto,paraelquenoexistaesamquinavirtual.Ysinecesitamos quelavelocidadsealamximaposible,quiznoseaadmisiblelo(poco)que ralentiza ese paso intermedio. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 6 1.4. Qu ms aporta Java? Tienevariascaractersticasquepuedensonarinteresantesaquienyaes programador, y que ya ir conociendo poco a poco quien no lo sea: La sintaxis del lenguaje es muy parecida a la de C++ (y a la de C, C#, PHP y algnotro).EsosimplificaelaprendizajedeJavasiseconocealgunode esoslenguajes,ytambinpermiteaprovecharlosconocimientosdeJava para aprender despus uno de estos otros lenguajes. Esunlenguajeorientadoaobjetos,loquesupondrventajasalahorade disear y mantener programas de gran tamao. Permitecrearprogramas"multitarea"(formadosporvarioshilosde ejecucin),loqueayudaasacarmejorpartidodelosmodernos procesadores con mltiples ncleos. Incluye control de excepciones, como alternativa ms sencilla para manejar erroresinesperados,comounficheroinexistenteounaconexindered perdida. Es ms difcil cometer errores de programacin que en otros lenguajes ms antiguos,comoCyC++(porejemplo,noexistenlos"punteros",queson una fuente de quebraderos de cabeza en esos lenguajes). Sepuedencrearprogramasenmodotexto,entornos"basadosen ventanas", dibujar grficos, acceder a bases de datos, etc. 1.5. Qu hace falta para usar un programa creado en Java? Vamosacentrarnosenelcasodeun"ordenadorconvencional",yaseade escritorio o porttil. Lasaplicacionesquedebanfuncionar"porssolas"necesitarnqueenel ordenador de destino exista algn "intrprete" de Java, eso que hemos llamado la "mquinavirtual".Estoescadavezmsfrecuente(especialmenteensistemas como Linux), pero si no lo tuviramos (como puede ocurrir en Windows), basta con instalarel"JavaRuntimeEnviroment"(JRE),quesepuededescargarlibremente desde Java.com (unos 10 Mb de descarga). 1.6. Qu hace falta para crear un programa en Java? ExistendiversasherramientasquenospermitirncrearprogramasenJava.La propia Oracle suministra un kitde desarrollo oficial que se conoce como JDK (Java Introduccin a Java 0.40, por Nacho Cabanes - Pgina 7 Development Kit). Es de libre distribucin y se puede conseguir en la propia pgina Web de Oracle. http://www.oracle.com/technetwork/java/javase/downloads/index.html ElinconvenientedelJDKesquenoincluyeuneditorparacrearnuestros programas,slolasherramientasparagenerarelprogramaejecutableypara probarlo. Poreso,puederesultarincmododemanejarparaquienestacostumbradoa otrosentornosintegrados,comolosdeVisualC#yVisualBasic,queincorporan potenteseditores.Peronoesungranproblema,porqueesfcilencontrar editoresquehaganmsfcilnuestrotrabajo,oinclusosistemasdedesarrollo completos,comoEclipse(http://www.eclipse.org/downloads/)oNetBeans. (https://netbeans.org/downloads/index.html).Ambossonbuenosygratuitos.En elprximotemaveremoscmodescargarloseinstalarlos,ascomoalguna alternativa para ordenadores menos potentes. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 8 2. Instalacin del entorno de desarrollo Para poder programar en Java, necesitars tanto el compilador (el llamado "Kit de desarrollo",JDK)comoalgneditor.Veremoslosentornosmshabitualesysu instalacinenWindowsyLinux.Enprincipio,elentornomsrecomendablepara un principiante es NetBeans, y hay alternativas an ms ligeras, como Geany, cuya instalacin es inmediata en Linux pero ligeramente ms incmoda en Windows. 2.1. Instalacin del JDK y NetBeans bajo Windows ElJDK(JavaDevelopmentKit)eslaherramientabsicaparacrearprogramas usando el lenguaje Java. Es gratuito y se puede descargar desde la pgina oficial de Java, en el sitio web de Oracle (el actual propietario de esta tecnologa, tras haber adquirido Sun, la empresa que cre Java): www.oracle.com/technetwork/java/javase/downloads Allencontraremosenlacesparadescargar(download)laltimaversin disponible. Enprimerlugar,deberemosescogernuestrosistemaoperativoy(leery)aceptar las condiciones de la licencia: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 9 Entonces empezaremos a recibir un nico fichero de gran tamao (cerca de 70 Mb, segn versiones): Altratarsedeunficherodegrantamao,ladescargapuedeserlenta, dependiendo de la velocidad de nuestra conexin a Internet (y de lo saturados que estn los servidores de descarga): Introduccin a Java 0.40, por Nacho Cabanes - Pgina 10 Cuandohayamosdescargado,haremosdobleclicenelfichero,paracomenzarla instalacin propiamente dicha: Podremosafinardetallescomolacarpetadeinstalacin,oqupartesno queremos instalar (por ejemplo, podramos optar por no instalar los ejemplos).Si tenemos suficiente espacio (posiblemente unos 400 Mb en total),generalmente la opcin ms sencilla hacer una instalacin tpica, sin cambiar nada: Ahoradeberemostenerpacienciaduranteunrato,mientrassedescomprimee instala todo: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 11 EnciertopuntosenospreguntarsiqueremosinstalarlamquinavirtualJava (JavaRuntimeEnvironment,JRE).Lorazonableserresponderques,parapoder probar los programas que creemos. Igual que para el JDK, podramos cambiar la carpeta de instalacin del JRE: Tendremos que esperar otro momento... Introduccin a Java 0.40, por Nacho Cabanes - Pgina 12 Y si todo ha ido bien, deberamos obtener un mensaje de confirmacin: YsenospropondrregistrarnuestracopiadeJavaenlapginadeOracle(noes necesario): Introduccin a Java 0.40, por Nacho Cabanes - Pgina 13 Con eso ya tenemos instalada la herramienta bsica, el compilador que convertir nuestrosprogramasenJavaaalgoquepuedaserutilizadodesdecualquierotro equipo que tenga una mquina virtual Java. Pero el kit de desarrollo (JDK) no incluye ningn editor con el que crear nuestros programas.Podramosinstalarun"editorgenrico",porquetenemosmuchos gratuitosydecalidad,comoNotepad++.Aunas,sinuestroequipoes razonablementemoderno,puedeserpreferibleinstalarunentornointegrado, como NetBeans, que encontraremos en http://netbeans.org Introduccin a Java 0.40, por Nacho Cabanes - Pgina 14 Si hacemos clic en"Download", se nosllevar a la pgina dedescargas, en la que tenemos varias versiones para elegir. Lo razonable "para un novato" es descargar laversinpara"JavaSE"(StandardEdition;lasalternativassonotroslenguajes, como PHP o C++, versiones profesionales como Java EE-Enterprise Edition-, o una versin que engloba todas estas posibilidades). EsposiblequetambinpodamosescogerelEspaolcomoidioma,envezdel ingls(slo en algunas versiones). LainstalacinnosepodrcompletarsinohemosinstaladoJavaantes,perosilo hemos hecho, debera ser simple y razonablemente rpida: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 15 Yalfinalquizsenospreguntesiqueremospermitirqueserecopileestadsticas sobre nuestro uso: Todolisto.TendremosunnuevoprogramaennuestromendeInicio.Podemos hacerdobleclicparacomprobarquesehainstaladocorrectamente,ydebera aparecer la pantalla de carga: Y despus de un instante, la pantalla "normal" de NetBeans: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 16 Ya estaramos listos para empezar a crear nuestro primer programa en Java, pero eso queda para la siguiente leccin... 2.2. Instalacin de Eclipse en Windows EclipseesotroentornodedesarrolloparaJava,alternativoaNetBeans,tambin muyextendido,aunquealgomspesado(ocupamsespacioyesmslentoen funcionamiento). Se puede descargar desde eclipse.org: AligualqueocurreconNetBeans,existenversionesdeEclipseparacrear programasendistintoslenguajesoinclusocondiferentesversionesdeJava.Lo razonableserusar"EclipseforJavaDevelopers"(nolaversindeJavaEE, Introduccin a Java 0.40, por Nacho Cabanes - Pgina 17 Enterprise Edition, que aade herramientas que un principiante no va a necesitar y que pueden complicar el entorno). EshabitualquesenospropongadescargarunficheroZIP,quedeberemos descomprimirenlacarpetaquenosotrosescojamosylanzardespusconun doble clic (no se creara una opcin en el men de Inicio). Estasmayorescomplicacionesenlainstalacinsonotropuntoensucontraya favor de NetBeans. Aun as, si se ha instalado previamente el JDK y se ha reiniciado elequipoantesdeintentarinstalarEclipse,esesperablequefuncionetodoala primera. 2.3. Instalacin del JDK y Eclipse bajo Linux InstalarelJDK(JavaDevelopmentKit)enLinuxpuedeseranmsfcilqueen Windows. En casi cualquier distribucin Linux actual bastara con entrar al " Gestor depaquetesSynaptic"(olaherramientaqueusenuestrosistemaparainstalar nuevosprogramas),buscar"jdk"yhacerdobleclicenelpaquetellamado "openjdk-6-jdk" (o similar) para marcarlo: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 18 Depaso,podemosaprovecharparainstalarEclipse,quetambinsesuelepoder escoger desde el gestor de paquetes de la mayora de distribuciones de Linux: Enamboscasos,senosavisardequeesospaquetesdependendeotrosque tambin habr que instalar: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 19 Cuandohagamosclicenelbotn"Aplicar",sedescargarntodoslospaquetes (casi200Mbentotal)yseinstalarn(deberaocuparalgomsde300Mbde disco). A partir de entonces, en nuestro men, en el apartado de Programacin (o Desarrollo),tendremosunaccesoaEclipse.Sientramos,deberamosveralgo parecido a esto: (Los detalles de cmo empezar a programar con Eclipse los veremos en el prximo tema) 2.4. Instalacin de Netbeans bajo Linux EnlamayoradedistribucionesdeLinuxactuales,NetBeanstambinestar disponible desde Synaptic (o el gestor de paquetes que incluya esa distribucin): Introduccin a Java 0.40, por Nacho Cabanes - Pgina 20 Y, al igual que hemos visto que ocurra con el JDK y con Eclipse, se nos avisar en caso de que sea necesario instalar algn paquete extra: Sinopudiramosinstalarlodesdeelgestordepaquetes,deberamosdescargar desdesu pginaoficial,bienseaensu"versinparaLinux"oficial,obien apartir unaversincomprimidaenficheroZIPcapazdefuncionarencualquiersistema operativo(paraelqueexistaunaversindelamquinavirtualJava,claro),que deberamos descomprimir en una carpeta de nuestra eleccin. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 21 2.5. La alternativa ligera: Geany Podemosusarotrasmuchasherramientas,ademsdeNetBeansyEclipse.Si nuestro ordenador no est muy sobrado de recursos, disponemos de alternativas mssimples,editoresavanzadoscomoGeany(quepodramosinstalarenunpar declicsusandoSynapticoelgestordepaquetesdecualquierdistribucinLinux). Su apariencia es sta: Tambin se puede usar Geany en otros sistemas operativos, como Windows, pero en este caso, el manejo puede no ser tan sencillo: tendremos que instalar primero elJDK,luegoGeany,yquizaunasnopodamoscompilarylanzardirectamente losprogramasdesdeGeany,sinoqueobtengamosunmensajedeerrorquenos diga que no encuentra Java. Para solucionarlo, habra que cambiar la configuracin deGeanyoincluirJavaenel"Path"deWindows,perosontareasquequizno estn al alcance de un principiante, as que las esquivaremos por ahora... Introduccin a Java 0.40, por Nacho Cabanes - Pgina 22 3. Nuestro primer programa 3.1. Un programa que escribe "Hola Mundo" Comenzaremosporcrearunpequeoprogramaen modotexto.Esteprimer programaselimitaraescribireltexto"HolaMundo!"enlapantalla.Enprimer lugar, veremos cmo es este programa, luego comentaremos un poco (todava con pocodetalle)lasrdenesqueloformanyfinalmenteveremoscmoprobarese programa con distintos entornos. Nuestro primer programa ser: // HolaMundo.java // Aplicacin HolaMundo de ejemplo

class HolaMundo {public static void main( String args[] ) {System.out.print( "Hola Mundo!" );}} Dos detalles que hay que considerar antes de seguir adelante: Puede parecer complicado para ser un primer programa. Es cierto, lo es. Si Javaestuprimerlenguajedeprogramacin,tienesqueasumirlo:Javaes as,nopretendequelosimpleseasimple,sinoquelocomplicadonosea terrible.Poreso,losgrandesproyectossernmsfcilesdemantenery menospropensosaerroresqueconotroslenguajesmsantiguoscomo BASICoC,perolosprogramasbsicosparecerninnecesariamente complejos. Dentrodepocoveremoscmoteclearlo.Serimportanterespetarlas maysculas y minsculas exactamente como estn en el ejemplo. El hecho de escribir "system" en vez de "System" har que obtengamos un error de compilacin.Ejerciciopropuesto3.1.1: CreaunprogramaenJavaquetesaludeenpantalla por tu nombre (por ejemplo, "Hola, Nacho"). 3.2. Entendiendo este primer programa Lanicapartedelprogramaquenecesitamoscomprenderporahoraeslalnea central.Poreso,vamosaanalizarlodedentrohaciafuera,dejandotodava algunos detalles en el aire. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 23 3.2.1. Escribir en pantalla La orden que realmente escribe en pantalla es: System.out.print( "Hola Mundo!" );La orden que se encarga de escribir es "print". Se trata de una orden de salida (out)denuestrosistema(System),ydeberemosescribirlasiempreusandoesas tres palabras, una tras otra y separadas por puntos: System.out.print Lo que deseemos escribir se indicar entre parntesis.Si se trata de un texto que deba aparecer tal cual, ir adems encerrado entre comillas. Tambinesimportanteel puntoycoma queaparecealfinaldeesalnea:cada orden en Java deber terminar con punto y coma (nuestro programa ocupa varias lneas pero slo tiene una orden, que es "print"). Por eso, la forma de escribir un texto ser: System.out.print( "Hola Mundo!" ); 3.2.2. Formato libre Java es un lenguaje "de formato libre". Antes de cada orden, podemos dejar tantos espacios o tantas lneas en blanco como nos apetezca. Por eso, es habitual escribir unpocomsaladerechacadavezqueempecemosunnuevobloque (habitualmente cuatro espacios), para que el programa resulte ms legible. Eseeselmotivodequenuestraorden"print"noestuvierapegadaalmargen izquierdo,sinomsaladerecha(ochoespacios,porqueestdentrodedos bloques). System.out.print( "Hola Mundo!" ); 3.2.3. El cuerpo del programa EntodoslosprogramascreadosusandoJava,debeexistirunbloquellamado "main",querepresentaelcuerpodelprograma.Pormotivosqueveremosms adelante,estebloquesiemprecomenzarconlaspalabras"publicstaticvoid"y terminar con "(String args[])": public static void main( String args[] ) El contenido de cada bloque del programa se debe detallar entre llaves. Por eso, la lnea "print" aparece despus de "main" y rodeada por llaves: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 24 public static void main( String args[] ) {System.out.print( "Hola Mundo!" );} Estasllavesdecomienzoydefinalde unbloquesepodranescribirencualquier punto del programa antes del contenido del bloque y despus de su contenido, ya que,comohemosdicho,Javaesunlenguajedeformatolibre.Aunas,pro convenio,eshabitualcolocarlallave deaperturaalfinal delaorden que abreel bloque, y la llave de cierre justo debajo de la palabra que abre el bloque, como se ve en el ejemplo anterior. 3.2.4. El nombre del programa CadaprogramaJavadebe"tenerunnombre".Estenombrepuedeserunanica palabraovariaspalabrasunidas,einclusocontenercifrasnumricas,perodebe empezar por una letra y no debe tener espacios intermedios en blanco. El nombre se debe indicar tras la palabra "class" (ms adelante veremos a qu se debe el uso deesapalabra)yacontinuacinseabrirelbloquequedelimitartodoel programa, con llaves: class HolaMundo {public static void main( String args[] ) {System.out.print( "Hola Mundo!" );}} Elprogramasedebeguardarenunfichero,cuyonombrecoincidaexactamenteconloquehemosescritotraslapalabra"class",inclusoconlasmismas maysculas y minsculas.Este nombre de fichero terminar con ".java". As, para nuestroprimerprogramadeejemplo,elficherodeberallamarse "HolaMundo.java". 3.2.5. Comentarios Las dos primeras lneas del programa son: // HolaMundo.java // Aplicacin HolaMundo de ejemplo Estaslneas,quecomienzanconunadoblebarrainclinada(//)son comentarios. Nossirvenanosotrosdeaclaracin,peronuestroordenadorlasignora,comosi no hubisemos escrito nada. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 25 Si queremos que un comentario ocupe varias lneas, o slo un trozo de una lnea, envezdellegarhastaelfinaldelalnea,podemosprecedercadalneaconuna doble barra, como en el ejemplo anterior, o bien indicar dnde queremos empezar con "/*" (una barra seguida de un asterisco) y dnde queremosterminar con"*/" (un asterisco seguido de una barra), as: /* Esta es la Aplicacin HolaMundo de ejemplo */ 3.2.6. Varias rdenes Siqueremos"hacervariascosas",podremosescribirvariasrdenesdentrode "main".Porejemplo,podramosescribirprimerolapalabra"Hola",luegoun espacio y luego "Mundo!" usando tres rdenes "print" distintas: // HolaMundo2.java // Segunda aplicacin HolaMundo de ejemplo

class HolaMundo2 {public static void main( String args[] ) {System.out.print( "Hola" );System.out.print( " " );System.out.print( "Mundo!" ); }} Comopuedesimaginar,esteprogramadeberestarguardadoenunfichero llamado"HolaMundo2.java".Comotambinpodrsintuir,elformatolibrese refierealasrdenesdellenguajeJava,noalosmensajesenpantalla:siescribes varios espacios con una orden "print", todos ellos sern visibles en pantalla. 3.2.7. Escribir y avanzar de lnea En ocasiones no querremos escribir todo en la misma lnea. Para avanzar de lnea tras escribir algo, basta con usar "println" en vez de "print": // HolaMundo3.java // Tercera aplicacin HolaMundo de ejemplo

class HolaMundo3 {public static void main( String args[] ) {System.out.println( "Hola..." );System.out.println( "Mundo!" ); Introduccin a Java 0.40, por Nacho Cabanes - Pgina 26 }} Ejercicio propuesto 3.2.1: Crea un programa en Java que te salude en pantalla portunombre.Enlaprimeralneadepantallaaparecerlapalabra"Hola"y serenlasegundalneadepantalladondeaparezcatunombre.Usados rdenes "println" distintas. 3.3. Compilar y lanzar el programa desde lnea de comandos Siquieresaprenderaprogramar,deberasnotenermiedoala"lneade comandos",esapantallaquetpicamentetienefondonegroyletrasblancas,yen laquesetecleanlasrdenesenvezdehacerclic.EnLinuxnormalmentesele llama "Terminal" y en Windows puede aparecer como "Smbolo del sistema". SihasinstaladoelJDKperoningnentornodedesarrollo,podrasabriresalnea decomandos,lanzardesdeellauneditor,despuscompilarelprogramay finalmente, si todo ha ido bien, lanzar el programa ejecutable resultante. Enun Linux,tpicamenteelprimerpasoserlanzaruneditor(como"gedit"enla versionesbasadasenGnome)ydecirleelnombrequequeremosquetengael fichero que se va a crear:gedit HolaMundo.java El segundo paso ser lanzar el compilador, llamado "javac", indicndole el nombre del programa que queremos analizar:javac HolaMundo.java Si nuestro programa contiene algn error, se nos mostrar un mensaje que dir la lneaycolumnaenlaquesehadetectado.Sinoesas,obtendremosunfichero ejecutablellamado"HolaMundo.class",quepodremosponerenfuncionamiento tecleando:java HolaMundo Introduccin a Java 0.40, por Nacho Cabanes - Pgina 27 EnWindows,sitodovabien(cosaquenosiempreocurre),lospasosseranlos mismos, pero el editor que viene preinstalado es el bloc de notas (notepad), luego comenzaramos por teclear: notepad HolaMundo.java Ejerciciopropuesto3.3.1: Pruebaacompilardesde"lneadecomandos"el programaquetesaludabaenpantallaportunombre(sinoloconsigues, dentro de poco podrs hacerlo usando NetBeans). 3.4. La alternativa bsica pero cmoda: Geany Geanyesunodelosentornosmssencillosquepermiteteclearnuestros programas y tambin compilarlos y probarlos sin abandonar el editor. Bastaconescribirnuestrofuente,yguardarloenunficherollamado "HolaMundo.java"(engeneral,elmismonombrequelaclase,respetando maysculasyminsculas). Cuandopulsemoselbotnde"compilar"elfuente,en la parte inferior de la ventana se nos mostrar si todo ha ido bien: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 28 Si no ha habido errores, a continuacin podremos pulsar el botn de Ejecutar para poner nuestro programa en marcha: Y aparecer una ventana de terminal, que mostrar el resultado: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 29 En caso de existir algn error de compilacin, al volver al editor se nos mostraran subrayadas en color rojo las lneas incorrectas.Ejerciciopropuesto3.4.1: CreaunprogramaenJava,usandoGeany,quete salude en pantalla por tu nombre (por ejemplo, "Hola, Nacho"). 3.5. Manejo bsico de NetBeans Vamos a ver qu pasos dar en NetBeans para crear un programa como ese. Enprimerlugar,deberemosentraralmen"Archivo"yescogerlaopcin "Proyecto Nuevo": Introduccin a Java 0.40, por Nacho Cabanes - Pgina 30 Se nos preguntar el tipo de proyecto. Se tratar de una "Aplicacin Java". Deberemosindicarunnombreparaelproyecto.Tenemostambinlaposibilidad de cambiar la carpeta en que se guardar. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 31 Yentoncesaparecerunesqueletodeprogramaquerecuerdaalquenosotros queremos conseguir... salvo por un par de detalles: Falta la orden "System.out.print" Sobra una orden "package" La orden "package" deberemos conservarla si usamos NetBeans, para indicar que nuestro programa es parte de un proyecto. La orden "print" deberemos aadirla, o Introduccin a Java 0.40, por Nacho Cabanes - Pgina 32 de lo contrario nuestro programa no escribir nada en pantalla. Podramos borrar los comentarios adicionales, hasta llegar a algo como esto: // HolaMundoNetBeans.java // Aplicacin HolaMundo de ejemplo, para compilar con NetBeans package prueba01;

public class HolaMundoNetBeans {public static void main( String args[] ) {System.out.print( "Hola Mundo!" );}} SihacemosclicenelbotndeEjecutar(elquemuestraunapuntadeflechade colorverde),nuestroprogramasepondrenmarcha(sinotieneningn error),y su resultado se mostrar en la parte inferior derecha de la pantalla de trabajo de NetBeans: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 33 Ejerciciopropuesto3.5.1: CreaunprogramaenJava,usandoNetBeans,que te salude en pantalla por tu nombre (por ejemplo, "Hola, Nacho").

3.6. Contacto con Eclipse Personalmente,NetBeansmepareceunentornomssencillo,msamigabley msrpidoqueEclipse.Aunas,porsinohasconseguidohacerfuncionartu programa con NetBeans o por si quieres conocer tambin Eclipse, vamos a ver los pasos bsicos para probar un programa como el nuestro. ParacrearnuestroproyectoconEclipse,deberemosentraralmen"File" (Archivo), y en la opcin "New" (Nuevo) tendremos "Java Project": Introduccin a Java 0.40, por Nacho Cabanes - Pgina 34 Senospedirunnombreparaelproyecto,yqueconfirmemossisetratadeun nuevo proyecto (como es nuestro caso) o si queremos partir de otros fuentes que ya existen (no por ahora): Aparecer nuestro proyecto vaco: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 35 Y ahora deberemos aadir una clase a nuestro proyecto (File / New / Class): Se nos preguntar el nombre para la clase (junto con otros datos que por ahora no necesitamos cambiar): Introduccin a Java 0.40, por Nacho Cabanes - Pgina 36 Ynosaparecerunesqueletodeclase(algomsvacoqueenelcasode NetBeans): Sobreeseesqueleto,escribiremos(ocopiaremosypegaremos)losdetallesde nuestro fuente: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 37 Y si pulsamos el botn "Run",el programa se compilar y se pondr en marcha, y suresultadosemostrarenlaparteinferiordelapantalla,enlapestaa "Console": Ejerciciopropuesto3.6.1: CreaunprogramaenJava,usandoEclipse,quete salude en pantalla por tu nombre (por ejemplo, "Hola, Nacho"). Introduccin a Java 0.40, por Nacho Cabanes - Pgina 38 4. Variables y operaciones matemticas bsicas 4.1. Las variables. Ennuestroprimerejemploescribamosuntextoenpantalla,peroestetexto estaba prefijado dentro de nuestro programa. De forma muy similar, podemos realizar operaciones matemticas si las indicamos sin comillas. As, el ordenador sabr que no debe escribir algo "tal cual", sino que debe intentar descubrir su significado: // Suma1.java // Ejemplo de suma con datos prefijados // Introduccin a Java, Nacho Cabanes class Suma1 { public static void main( String args[] ) {System.out.println("La suma de 56 y 23 es:" ); // Mostramos un mensaje de avisoSystem.out.println(56+23 ); // y el resultado de la operacin} } Pero esto no es lo habitual: normalmente los datos que maneje nuestro programa sernelresultadodealgunaoperacinmatemticaodecualquierotrotipo,a partirdedatosintroducidosporelusuario,ledosdeunfichero,obtenidosde Internet...Poreso,necesitaremosunespacioenelqueiralmacenandovalores temporales y resultados de las operaciones. En casi cualquier lenguaje de programacin podremos reservar esos "espacios", y asignarlesunnombreconelqueaccederaellos.Estoesloqueseconocecomo "variables". Porejemplo,siqueremosqueelusuariointroduzcadosnmerosyelordenador calculelasumadeambosnmerosylamuestreenpantalla,necesitaramosel espacioparaalmacenaralmenosesosdosnmerosiniciales.Nosera imprescindible reservar espacio tambin para la suma, porque podemos mostrarla en pantalla en el mismo instante en que la calculamos. Los pasos a dar seran los siguientes: Avisar al usuario de que deseamos que introduzca un nmero. Almacenar ese valor que introduzca el usuario (por ejemplo, en un espacio de memoria al que podramos asignar el nombre "primerNumero"). Introduccin a Java 0.40, por Nacho Cabanes - Pgina 39 Pedir al usuario que introduzca otro nmero. Almacenarelnuevovalor(porejemplo,enotroespaciodememoria llamado "segundoNumero"). Mostrarenpantallaelresultadodesumar"primerNumero"y "segundoNumero". Puesbien,enesteprogramaestaramosempleandodosvariablesllamadas "primerNumero" y "segundoNumero".Cada una de ellas se usara para acceder a un espacio de memoria, que ser capaz de almacenar un nmero. Para no desperdiciar memoria de nuestro ordenador, el espacio de memoriaque hacefalta"reservar"sepodroptimizarsegnlograndequepuedallegaraser dichonmero(lacantidaddecifras),osegnlaprecisinquenecesitemospara esenmero(cantidaddedecimales).Poreso,tenemosdisponiblesdiferentes "tipos de variables". Porejemplo,sivamosamanejarnmerossindecimales("nmerosenteros")de comomximo9cifras,nosinteresaraeltipodedatosllamado"int"(esapalabra eslaabreviaturade"integer","entero"eningls).Estetipodedatosconsumeun espacio de memoria de 4 bytes. Si no necesitamos guardar datos tan grandes (por ejemplo,sinuestrosdatosvaasernmerosinferioresa10.000),podemos empleareltipodedatosllamado"short"(entero"corto"),queocupalamitadde espacio. Coneso,vamosaverunprogramasumedosnmerosenteros(denomsde9 cifras) prefijados y muestre en pantalla el resultado: // Suma2.java // Ejemplo de suma con variables // Introduccin a Java, Nacho Cabanes class Suma2 { public static void main( String args[] ) { int primerNumero = 56; // Dos enteros con valores prefijadosint segundoNumero = 23; System.out.println("La suma de 56 y 23 es:" ); // Muestro un mensaje de avisoSystem.out.println(primerNumero+segundoNumero ); // y el resultado de la operacin} } Introduccin a Java 0.40, por Nacho Cabanes - Pgina 40 Comoseve,laformade"declarar"unvariableesdetallandoprimeroeltipode datos que podr almacenar ("int", por ahora) y despus el nombre que daremos la variable. Adems, opcionalmente se puede indicar un valor inicial. Ejerciciopropuesto4.1.1: CreaunprogramaenJavaqueescribaenpantalla elproductodedosnmerosprefijados(pista:elsmbolodelamultiplicacin es el asterisco, "*"). 4.2. Operaciones matemticas bsicas. Hayvariasoperacionesmatemticasquesonfrecuentes.Veremoscmo expresarlas en Java, as como otra operacin menos habitual: Operacin matemticaSmbolo correspondiente Suma+ Resta- Multiplicacin* Divisin/ Resto de la divisin% Hemosvistounejemplodecmocalcularlasumadedosnmeros;lasotras operaciones se emplearan de forma similar. La nica operacin "menos habitual" es el resto de la divisin. Por ejemplo, si dividimos 14 entre 3, obtenemos 4 como cociente y 2 como resto, de modo que el resultado de 14 % 3 sera 2. Ejerciciopropuesto4.2.1: Creaunprogramaquemuestreladivisindedos nmeros prefijados. Ejerciciopropuesto4.2.2: Creaunprogramaquemuestreelrestodedividir 100 entre 30. 4.3. Operar con datos introducidos por el usuario Vamosavercmohacerqueseaelusuarioquienintroduzcavaloresparaesas variables,queesalgomuchomshabitual.Nuestroprimerejemplosumardos nmeros, que en esta ocasin no estarn prefijados: // Suma3.java // Ejemplo a las variables introducidas por el usuario Introduccin a Java 0.40, por Nacho Cabanes - Pgina 41 // Introduccin a Java, Nacho Cabanes import java.util.Scanner; class Suma3 { public static void main( String args[] ) { Scanner teclado = new Scanner(System.in); System.out.print( "Introduzca el primer nmero: " ); int primerNumero = teclado.nextInt(); System.out.print( "Introduzca el segundo nmero: " ); int segundoNumero = teclado.nextInt(); System.out.print( "Su suma es: " ); System.out.println( primerNumero+segundoNumero ); } } En este programa hay varias cosas nuevas:Vamos a usar una caracterstica que no es algo bsico del lenguaje. Por eso ledecimosquedeseamos"importar"nuevasfuncionalidades.Ennuestro caso, se trata de un tal "Scanner", que nos permitir analizar textos: import java.util.Scanner; En concreto, nuestro scanner va a tomar datos desde la entrada del sistema (System.in),porloquelodeclaramoscon:Scannerteclado=new Scanner(System.in);Elnombre"teclado"podraser"entrada"ocualquier otro. Apartirdeentonces,cadavezquellamemosa".nextInt()"seleerun nmerodesdelaentradaestndardelsistema(elteclado):int primerNumero = teclado.nextInt(); Sonvariasnovedades,perotampocodeberaresultardifcil.Esteprograma escribir algo como (dependiendo de los datos que introduzca el usuario): Introduzca el primer nmero: 34 Introduzca el segundo nmero: 56 Su suma es: 90 Es habitual declarar las variables al principio del programa, antes de que comience la lgica real que resuelve el problema. Si varias variables van a guardar datos del mismotipo,sepuedendeclarartodasellasalavez,separadasporcomas,como en el siguiente ejemplo: // Suma3b.java // Dos variables declaradas a la vez Introduccin a Java 0.40, por Nacho Cabanes - Pgina 42 // Introduccin a Java, Nacho Cabanes import java.util.Scanner; class Suma3b { public static void main( String args[] ) { Scanner teclado; int primerNumero, segundoNumero; teclado = new Scanner(System.in); System.out.print( "Introduzca el primer nmero: " ); primerNumero = teclado.nextInt(); System.out.print( "Introduzca el segundo nmero: " ); segundoNumero = teclado.nextInt(); System.out.print( "Su suma es: " ); System.out.println( primerNumero+segundoNumero ); } } Comolaformadeasimilartodoestoesprobndolo,aqutienesvariosejercicios propuestos: Ejerciciopropuesto4.3.1: Creaunprogramaquecalculeymuestreel producto de dos nmeros enteros que introduzca el usuario. Ejercicio propuesto 4.3.2: Crea un programa que calcule y muestre la divisin de dos nmeros enteros que introduzca el usuario. Ejerciciopropuesto4.3.3: Creaunprogramaquecalculeymuestreelresto de la divisin de dos nmeros enteros que introduzca el usuario. Ejercicio propuesto 4.3.4: Crea un programa que pida al usuario una longitud enmillas(porejemplo,3)ycalculesuequivalenciaenmetros(1milla=1609 m). Ejerciciopropuesto4.3.5: Creaunprogramaquepidaalusuariouna temperaturaengradoscentgradosycalcule(ymuestre)acuntosgrados Fahrenheit equivalen (F = 9*C/5 + 32). Ejercicio propuesto 4.3.6: Crea un programa que pregunte al usuario la base y la altura de un tringulo y muestre su superficie (S = B*A/2). 4.4. Incremento y asignaciones abreviadas Hay varias operaciones muy habituales, que tienen una sintaxis abreviada en Java. Introduccin a Java 0.40, por Nacho Cabanes - Pgina 43 Porejemplo,parasumar2aunavariable"a",laforma"normal"deconseguirlo sera: a = a + 2; pero existe una forma abreviada en Java: a += 2; Aligualquetenemoseloperador+=paraaumentarelvalordeunavariable, podemos emplear -= para disminuirlo, /= para dividirla entre un cierto nmero, *= paramultiplicarlaporunnmero,yassucesivamente.Porejemplo,para multiplicar por 10 el valor de la variable "b" haramos b *= 10; Tambinpodemos aumentarodisminuirenunaunidad elvalordeuna variable,empleandolosoperadoresde"incremento"(++)yde"decremento"(--). As,parasumar1alvalorde"a",podemosemplearcualquieradeestastres formas: a = a+1; a += 1; a++; Losoperadoresdeincrementoydedecrementosepuedenescribiranteso despus de la variable. As, es lo mismo escribir estas dos lneas: a++; ++a; Perohayunadiferenciasiesevalorseasignaaotravariable"almismotiempo" que se incrementa/decrementa: int c = 5; int b = c++; dacomoresultadoc=6yb=5,porqueseasignaelvalora"b"antesde incrementar "c", mientras que int c = 5; int b = ++c; Introduccin a Java 0.40, por Nacho Cabanes - Pgina 44 dacomoresultadoc=6yb=6(seasignaelvalora"b"despusdeincrementar "c"). Poreso,paraevitarefectoscolateralesnoesperados,esmejornoincrementar una variables a la vez que se asigna su valor a otra, sino hacerlo en dos pasos.Ejerciciopropuesto4.4.1: Calcula"amano"elresultadodelassiguientes operacionesconnmerosenteros,yluegocreaunprogramaquemuestreel resultado. a = 5; a++; a*=2; a-=3; a%=5; a=a+7; 4.5. Otros tipos de datos numricos No slo se puede almacenar nmerosenteros de hasta 9 cifras. Java nos permite usar tambin otros tipos de datos numricos: Nombre Admite decimales? Valor mn.Valor mx.PrecisinOcupa byteno-128127- 1 byte shortno-32.76832.767- 2 bytes intno-2.147.483.6482.147.483.647- 4 bytes longno -9.223.372.036.854.775.808 9..223.372.036.854.775.807- 8 bytes floats1.401298E-453.402823E38 6-7 cifras 4 bytes doubles4.94065645841247E-3241.79769313486232E308 14-15 cifras 8 bytes

Introduccin a Java 0.40, por Nacho Cabanes - Pgina 45 Losdatosdetipobyte,short,intylongsirvenparaalmacenarnmeros enteros, demayoromenortamao.Sisedesbordaesetamao,elprogramase interrumpir con un error, como en este ejemplo: // DesbordarByte.java // Ejemplo de desbordamiento de una variable // Introduccin a Java, Nacho Cabanes class DesbordarByte {public static void main( String args[] ) {byte dato = 100; System.out.print( "El dato inicialmente es: " ); System.out.println( dato ); dato += 100;System.out.print( "Si sumamos 100, el dato ahora es: " ); System.out.println( dato ); } } Que mostrara: El dato inicialmente es: 100 Si sumamos 100, el dato ahora es: -56 Porsuparte,losdatosfloatydoublepermitenalmacenarnmerosreales(con cifrasdecimales),quepuedenalmacenarlosnmerosdeformaincorrectasi tienen ms cifras que la permitida por ese tipo de datos, como en este ejemplo: // PrecisionFloat.java // Ejemplo de lmite de precisin de un dato float // Introduccin a Java, Nacho Cabanes class PrecisionFloat {public static void main( String args[] ) {float dato = 1.23456789f; System.out.print( "El dato inicialmente es: " ); System.out.println( dato ); dato += 1000;System.out.print( "Si sumamos 1000, el dato ahora es: " ); System.out.println( dato ); } } Que escribira: El dato inicialmente es: 1.2345679 Si sumamos 1000, el dato ahora es: 1001.23456 Parapedirdatosdeestostipos,podemosusarun"Scanner"con".nextByte", ".nextShort", ".nextLong", ".nextFloat" o ".nextDouble" Introduccin a Java 0.40, por Nacho Cabanes - Pgina 46 Por ejemplo, se podra sumar dos nmeros reales de forma similar a como hemos visto para dos nmeros enteros: // SumaFloat.java // Sumar dos nmeros reales // Introduccin a Java, Nacho Cabanes import java.util.Scanner; class SumaFloat { public static void main( String args[] ) { Scanner teclado; float primerNumero, segundoNumero; teclado = new Scanner(System.in); System.out.print( "Introduzca el primer nmero real: " ); primerNumero = teclado.nextFloat(); System.out.print( "Introduzca el segundo nmero real: " ); segundoNumero = teclado.nextFloa.t(); System.out.print( "Su suma es: " ); System.out.println( primerNumero+segundoNumero ); } } Unejemplodesuposibleresultado(quemuestralasposiblesprdidasde precisin) podra ser: Introduzca el primer nmero real: 2,3 Introduzca el segundo nmero real: 3,56 Su suma es: 5.8599997 Ejerciciopropuesto4.5.1: Creaunprogramaquecalculeymuestrelasuma de dos nmeros de dos cifras (de tipo byte) que introduzca el usuario. Ejerciciopropuesto4.5.2: Creaunprogramaquepidaalusuariosuaode nacimiento y el ao actual (usando datos de tipo short) y halle la diferencia de ambos para obtener su edad. Ejercicio propuesto 4.5.3: Crea un programa que calcule y muestre la divisin de dos nmeros reales de doble precisin introducidos por el usuario. Ejercicio propuesto 4.5.4: Crea un programa que pida al usuario una longitud enmillas(porejemplo,3)ycalculesuequivalenciaenkilmetros,usando datos de tipo float (1 milla = 1.609 km). Introduccin a Java 0.40, por Nacho Cabanes - Pgina 47 5. Comprobacin de condiciones 5.1. if Encualquierlenguajedeprogramacineshabitualtenerquecomprobarsise cumpleunacierta condicin.La formamssimpledeconseguirloesempleando una construccin que recuerda a: SI condicin ENTONCES rdenes En Java, la forma exacta ser empleando if (si, en ingls), seguido por la condicin entre parntesis, e indicando finalmente entre llaves los pasos que queremos dar si se cumple la condicin, as : if (condicin){ rdenes } Por ejemplo, // If1.java // Comprobacin de condiciones con "if" 1: mayor que // Introduccin a Java, Nacho Cabanes class If1 { public static void main( String args[] ) { int x = 10; if (x > 5) { System.out.println( "x es mayor que 5" ); } } } Nota: Las llaves slo sern imprescindibles cuando haya que hacer varias cosas. Si sloqueremosdarunpasoencasodequesecumplalacondicin,noes necesario emplear llaves (aunque puede ser recomendable usar siempre las llaves, para no olvidarlas si ms adelante ampliamos ese fragmento del programa): // If2.java // Comprobacin de condiciones con "if" 2: sin llaves // Introduccin a Java, Nacho Cabanes class If2 { public static void main( String args[] ) { int x = 10; Introduccin a Java 0.40, por Nacho Cabanes - Pgina 48 if (x > 5) System.out.println( "x es mayor que 5" ); } } Ejercicio propuesto 5.1.1: Crea un programa que pida un nmero al usuario y diga si es positivo (mayor que cero)

5.2. El caso contrario: else Unaprimera mejora alacomprobacindecondicionescon"if"esindicarqu hacer en caso de que no se cumpla la condicin. Sera algo parecido a SI condicinENTONCES rdenesEN_CASO_CONTRARIO rdenes_alternativas que en Java escribiramos as: if (condicin){ rdenes1 } else { rdenes2 } Por ejemplo, // If3.java // Comprobacin de condiciones con "if" 3: else // Introduccin a Java, Nacho Cabanes class If3 { public static void main( String args[] ) { int x = 10; if (x > 5) { System.out.println( "x es mayor que 5" ); } else { System.out.println( "x es menor o igual que 5" ); } } } Ejerciciopropuesto5.2.1: Creaunprogramaquepidaunnmeroenteroal usuarioydigasiespositivo(mayorquecero)osi,porelcontrario,noloes (usando "else"). Introduccin a Java 0.40, por Nacho Cabanes - Pgina 49 5.3. Operadores relacionales Laformadecomprobarsiundatoes"mayor"queotro,quehemosusadoenel apartadoanterior,deberaresultartotalmenteintuitiva.Perotambinnos interesarcomprobarsiunvariabletieneexactamenteunciertovalor,ositiene un valor distinto, o si es menor, o si es mayor o igual que otro... Los operadores que utilizaremos para ello son: OperacinSmbolo Mayor que> Mayor o igual que>= Menor que< Menor o igual que 5)) || ((a == 7)&& ! (b < 4)) ) { System.out.println( "Se cumple la condicin" ); } else { System.out.println( "No se cumple la condicin" ); } } } Comoseveenelejemploanterior,lacondicingeneraldel"if"deberirentre parntesis,pero,porlegibilidadyporevitarefectoscolateralesdequealguna condicinnoseanaliceenelordendeseado,convendrquecadacondicin individualvayatambinentreparntesis,yserinteresanteaadirparntesis adicionales para dejar claro cmo agruparlas. Ejercicio propuesto 5.4.1: Crea un programa que pida al usuario dos nmeros enteros y diga si los dos son positivos(el primero Y el segundo). Ejercicio propuesto 5.4.2: Crea un programa que pida al usuario dos nmeros enterosydigasialmenosunodelosdosespositivo(elprimeroOel segundo). Ejercicio propuesto 5.4.3: Crea un programa que pida al usuario dos nmeros enteros y cuntos de ellos son pares. Ejerciciopropuesto5.3.5: Creaunprogramaquepidatresnmerosenteros largos al usuario y diga cul es el mayor de los tres. 5.5. switch Siqueremoscomprobar variosposiblesvaloresparaunamismavariable, podemosutilizarvariosif-else-if-else-ifencadenados,perotenemosuna Introduccin a Java 0.40, por Nacho Cabanes - Pgina 52 forma ms elegante de elegir entre distintos valores posibles que tome una cierta expresin. Su formato es ste: switch (expresion) {case valor1: sentencias1; break;case valor2: sentencias2; break;case valor3: sentencias3; break;// ... Puede haber ms valores} Es decir, despus de la orden switch indicamos entre parntesis la expresin que queremosevaluar.Despus,tenemosdistintosapartados,unoparacadavalor quequeramoscomprobar;cadaunodeestosapartadosseprecedeconla palabra case,indicalospasosadarsiesesevalorelquetienelavariable(esta serie de pasos no ser necesario indicarla entre llaves), y termina con break. Un ejemplo sera: // Switch1.java // Comprobacin de condiciones con "switch" 1: ejemplo bsico // Introduccin a Java, Nacho Cabanes class Switch1 { public static void main( String args[] ) { int mes = 2; switch(mes) { case 1: System.out.println( "El mes es Enero" ); break; case 2: System.out.println( "El mes es Febrero" ); break; case 3: System.out.println( "El mes es Marzo" ); break; } } } Tambin podemos indicar qu queremos que ocurra en el caso de que el valor de laexpresinnoseaningunodelosquehemosdetallado,usandolapalabra "default": switch (expresion) {case valor1: sentencias1; break;case valor2: sentencias2; break;case valor3: sentencias3; break;// ... Puede haber ms valoresdefault: sentencias; // Opcional: valor por defecto} Por ejemplo, as: Introduccin a Java 0.40, por Nacho Cabanes - Pgina 53 // Switch2.java // Comprobacin de condiciones con "switch" 2: default // Introduccin a Java, Nacho Cabanes class Switch2 { public static void main( String args[] ) { int mes = 4; switch(mes) { case 1: System.out.println( "El mes es Enero" ); break; case 2: System.out.println( "El mes es Febrero" ); break; case 3: System.out.println( "El mes es Marzo" ); break; default: System.out.println( "No es entre Enero y Marzo" ); break; } } } Podemosconseguirquesedenlosmismospasosenvarioscasos,simplemente eliminando la orden "break" de algunos de ellos. Un ejemplo podra ser: // Switch3.java // Comprobacin de condiciones con "switch" 3: casos en cascada // Introduccin a Java, Nacho Cabanes class Switch3 { public static void main( String args[] ) { int x = 5; switch ( x ) { case 1: case 2: case 3: System.out.println( "El valor de x estaba entre 1 y 3" ); break; case 4: case 5: System.out.println( "El valor de x era 4 o 5" ); break; case 6: System.out.println( "El valor de x era6" ); int valorTemporal = 10; System.out.println( "Operaciones auxiliares completadas" ); break; default: System.out.println( "El valor de x no estaba entre 1 y 6" ); break; } } } Introduccin a Java 0.40, por Nacho Cabanes - Pgina 54 ApartirdeJava7,sepuedeusarlaorden"switch"tambinparacomprobarlos valores de cadenas de texto: // Switch4.java // Comprobacin de condiciones con "switch" 4: cadenas de texto // (Para Java 7 o superior) // Introduccin a Java, Nacho Cabanes class Switch4 { public static void main( String args[] ) { String nombre = "yo"; switch(nombre) { case "uno": System.out.println( "Hola, uno" ); break; case "yo": System.out.println( "Hola, t" ); break; case "otro": System.out.println( "Bienvenido, otro" ); break; default: System.out.println( "Nombre desconocido" ); break; } } } Ejerciciopropuesto5.5.1: Creaunprogramaquepidaalusuarioelnmero deunmesyescribaelnombredeesemes.Porejemplo,sielusuario introduce 9, deber escribir "septiembre". Ejerciciopropuesto5.5.2: Creaunprogramaqueescribacomotexto cualquiernmerodel1al10queintroduzcaelusuario.Porejemplo,siel usuario introduce 3, deber escribir "tres". 5.6. El operador condicional Existeunaconstruccinadicional,quepermitecomprobarsisecumpleuna condicin y devolver un cierto valor segn si dicha condicin se cumple o no. Es lo que se conoce como el "operador condicional (?)" u "operador ternario": condicion ? resultado_si cierto : resultado_si_falso Es decir, se indica la condicin seguida por una interrogacin, despus el valor que hayquedevolversisecumplelacondicin,acontinuacinunsmbolode"dos puntos"yfinalmenteelresultadoquehayquedevolversinosecumplela condicin. Es frecuente emplearlo en asignaciones (aunque algunos autores desaconsejan su uso porque puede resultar menos legible que un "if"), como en este ejemplo: x = (a == 10) ? b*2 : a ; Introduccin a Java 0.40, por Nacho Cabanes - Pgina 55 Enestecaso,si"a"vale10,lavariable"x"tomarelvalordeb*2,yencaso contrario tomar el valor de a. Esto tambin se podra haber escrito de la siguiente forma, ms larga pero ms legible: if (a == 10)x = b*2; else x = a; Unejemplocompleto,quediera alavariable"par"el valor1siunnmero"n"es par, o el valor 0 en caso contrario, sera: // Condicional1.java // Ejemplo de "operador condicional" (o ternario) // Introduccin a Java, Nacho Cabanes class Condicional1 { public static void main( String args[] ) { int n = 4; int par; par = n % 2 == 0 ?1 : 0; System.out.print( "\"par\" vale... " );System.out.println( par );} } Ejerciciopropuesto5.6.1: Creaunprogramaquepidaunnmeroenteroal usuario y d a una variable par el valor 1 si ese nmero es par o el valor 0 si no es par. Hazlo primero con un "if" y luego con un "operador condicional". Ejerciciopropuesto5.6.2: Creaunprogramaquepidadosnmerosdetipo byte al usuario y cree a una variable "menor", que tenga el valor del menor de esosdosnmeros.Hazloprimeroconun"if"yluegoconun"operador condicional". Introduccin a Java 0.40, por Nacho Cabanes - Pgina 56 6. Bucles: partes del programa que se repiten Confrecuenciatendremosquehacerqueunapartedenuestroprogramase repita,bienseamientrassecumplaunacondicinobienunciertonmero prefijado de veces. Es lo que llamaremos un "bucle".6.1. while Laorden"while"hacequeunaparte delprogramaserepitamientrassecumpla una cierta condicin. Su formato ser: while (condicin) sentencia; Esdecir,lasintaxisessimilaralade"if",conladiferenciadequeaquellaorden realizaba la sentencia indicada una vez como mximo (si se cumpla la condicin), pero "while" puede repetir la sentencia ms de una vez (mientras la condicin sea cierta).Aligualqueocurracon"if",podemosrealizarvariassentenciasseguidas (dar "ms de un paso") si las encerramos entre llaves: // While1.java // Comprobacin repetitiva de condiciones con "while" // Introduccin a Java, Nacho Cabanes import java.util.Scanner; class While1 { public static void main( String args[] ) { Scanner teclado = new Scanner(System.in); System.out.print("Introduce un cero: "); int dato = teclado.nextInt(); while (dato != 0) { System.out.print("No era cero. Introduce cero: "); dato = teclado.nextInt(); } System.out.println("Terminado!"); } } Estas estructuras repetitivas se pueden usar tambin para hacer "contadores". Por ejemplo,unprogramaquecontasedel1al5(yescribiesetodosesosnmeros) podra ser: // Contar1a5.java // Contar del 1 al 5 con "while" // Introduccin a Java, Nacho Cabanes Introduccin a Java 0.40, por Nacho Cabanes - Pgina 57 class Contar1a5 { public static void main( String args[] ) { int x = 1; while (x