100% encontró este documento útil (1 voto)
711 vistas

Java 1

Introducción a Java
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
711 vistas

Java 1

Introducción a Java
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 113
Ko= KAN } AEN Ws NESS Se El entorno de programaci6n - Sintaxis Estructuras de control Elementos - CURSO DE TSM Tae an -sintaxis elentorno de programact _estructuras de control Elementos Programacion en Java @ CaaS Titulo: Programacién en Java / Autor: Carlos Arroyo Diaz Coordinador editorial: Miguel Lederkremer / Edicién: Claudio Peiia Maquetado: Marina Mozzetti / Coleccién: USERS ebooks - LPCU287 Copyright © MMXIX. Es una publicacién de Six Ediciones. Hecho el depésito que marca la ley 11723. Todos los derechos reservados. Esta publicacién no puede ser reproducida ni en todo niien parte, por ningtin medio actual o futuro, sin el permiso previo y por escrito de Six Ediciones. Su infraccién esta penada por las leyes 11723 y 25446. La editorial no asume responsabilidad alguna por cualquier consecuencia derivada de la fabricacién, funcionamiento y/o utiizacién de los servicios y productos que se describen y/o analizan. Todas las marcas mencionadas en este libro son propiedad exclusiva de sus respectivos duefios. Libro de edicién argentina, www.redusers.com ACERCA DE ESTE CURSO Java es un lenguaje de programacién que sigue afianzandose como un estandar de la web y, por eso, afio tras afio, aparece en el tope de las biisquedas laborales de programadores. Es por esto que hemos creado este curso de Programacién en Java, donde encontraran todo lo necesario para iniciarse o profundizar sus conocimientos en este lenguaje de programacién. El curso esta organizado en cuatro voliimenes, orientados tanto a quien recién se inicia en este lenguaje, como a quien ya esta involucrado y enamorado de Java. En el primer volumen se realiza una revisin de las caracteristicas de este lenguaje, también se entregan las indicaciones para instalar el entorno de desarrollo y, posteriormente, se anal basicos de la sintaxis y el uso basico de las estructuras de control. an los elementos En el segundo volumen se presentan las clases en Java, se realiza una introduccién a los conceptos asociados a la Programaci6n Orientada a Objetos y también se profundiza en el uso de la herencia, colaboracion entre clases y polimorfismo. El tercer volumen contiene informacién sobre el uso de las clases abstractas ¢ interfaces, el manejo de excepciones y la recursividad. Finalmente, en el cuarto volumen se ensefia el uso de las estructuras de datos dinamicas, el acceso a bases de datos y la programaci6n Java para Android, Sabemos que aprender todo lo necesario para programar en Java en tan solo cuatro volimenes es un tremendo desafio, pero conforme vamos avanzando, el camino se va allanando y las ideas se tornan mas claras. iSuerte en el aprendizaje! 2 www.redusers.com SUMARIO DEL VOLUMEN | 0 02 03 UN Poco DE HisToRIA / 6 Pasado, presente y futuro LENGUAJES DE PROGRAMACION / 8 Evolucién / Clasificacién Enroaue atcoritmco / 13 Algoritmos / Pseudacédigo / Diagramas de flujo JAVA / 20 INsTALACION Det JDK / 26 Instalar el JOK de JAVA / Configurar el path de JAVA ENTORNOS DE DESARROLLO / 31 Instalacién del IDE SINTAXIS Y REGLAS / 36 Sintaxis basica / Identificadores / Secuencia de escape / Comentarios NuesTRO PRIMER PROGRAMA / 40 Creacién de un proyecto en Netbeans Tiros be patos / 48 ENTRADA Y SALIDA DE DATOS / 49 Variastes / 52 Ambito / Nivel de acceso / Ciclo de vida Constantes / 57 Operavores / 58 Orden de evaluacién de los operadores Expresiones ReGULARES / 62 Simbolos comunes / Metacaracteres / Cuantificadores Metopos / 66 Construccién de método EsTRUCTURAS DE CONTROL / 72 Estructuras secuenciales / Estructuras de selecci6n / Estructuras iterativas VarianTes DEL BUCLE FOR / 87 ARRAYS / 94 Tipos de arreglos / Ordenar en ARRAY / ARRAYS en método www.redusers.com 3 PROLOGO Java es un lenguaje maduro y robusto que, desde su nacimiento en el alo 1995, ha demostrado que vino para quedarse y ha logrado evolucionar hasta convertirse en el lenguaje mas utilizado en el mundo tecnolégico. Durante nuestro aprendizaje de cualquier lenguaje de programacion podemos encontrarnos con variados libros, pero solo a través de la experimentacién y escudrifiando las entrafias de la Web (foros, blogs, under sites), podremos obtener los conocimientos necesarios para enfrentar el aprendizaje de mejor forma. Mientras recorremos este camino, contar con un curso como este es fundamental pues se presenta como un compendio de todo lo que necesitamos para enfrentar un lenguaje de programacién, permitiéndonos lograr, a través de ejemplos concretos, un mejor aprendizaje de los distintos temas necesarios para programar en Java. Desde el primer momento somos optimistas en que este curso sera para ustedes un desafio muy significativo y, por otro lado, lograra convertirse en una excelente guia del lenguaje Java. Carlos Arroyo Diaz Acerca del autor Carlos Arroyo Diaz es programador de profesién, escritor especializado en tecnologias y docente por vocacién. Se desempefia desde hace mas de 20 afios como docente en Informatica General y en los titimos 10 aos ensefia programacién en Java y Desarrollo Web. También se ha desempefiado como mentor docente en el area de Programacién en varios proyectos del Ministerio de Educacién de la Ciudad Autonoma de Buenos Aires, ensefiando a programar a grupos de jévenes. 4 www.redusers.com éPor qué un lenguaje de programacin tiene tanta importancia en la informatica? Todo lo concerniente a las tecnologias es un ambito amplio donde estan involucradas distintas areas: redes, internet, hardware, comunicaciones, fisica, l6gica; sin embargo, todas confluyen de alguna manera en los cédigos binarios, que hacen que las computadoras realicen acciones que usamos a diario. Por esta razon, los lenguajes son tan relevantes. 1. INTRODUCCION ees UN POCO DE HISTORIA James Gosling, un programador de Sun Microsystems, crea en 1995 el lenguaje Java, que, en sus origenes, no se llamé de esa forma y, tras ciertos cambios, evolucioné hasta llegar a lo que hoy conocemos. Al ser un lenguaje de programacién multipropésito con el que podemos realizar cualquier tipo de programa, su uso se ha extendido enormemente. Java se ha hecho muy famoso por una de sus principales caracteristicas: es un lenguaje independiente de la plataforma, Eso quiere decir que, si hacemos un programa en Java, podra funcionar en cualquier computadora del mercado. Esto es una ventaja significativa para los desarrolladores de software, pues antes tenian que crear un programa para cada sistema operativo, como Windows, Linux, IOS, etcétera Java es independiente de la plataforma porque tiene una maquina virtual para cada sistema; esta maquina funciona como puente entre el sistema operativo y el programa en Java, y posibilita que este tiltimo se lea y se ejecute a la perfeccion. Figura 1. En esta imagen vemos a James Gosling, el creador del lenguaje Java Origen del nombre Existen varias historias sobre el origen del nombre de este lenguaje. Uno de los relatos en torno al nombre es que, en un principio, se llamé Oak, pero lo cambiaron pues ya existian derechos sobre ese nombre. También se especula que es el nombre de un café al que los fundadores concurrian 0 que se trata de las iniciales de los desarrolladores. Ademés, hay quienes conjeturan que es un nombre aleatorio devenido de un listado del pizarrén en que los creadores iban escribiendo los nombres propuestos. 6 wwrw.redusers.com os JAVA Pasado, presente y futuro En sus comienzos, Java fue concebido para ser utilizado en todo tipo de electrodomésticos; sin embargo, esta idea inicial no lleg6 a buen puerto. En ese momento, uno de los programadores, en vez de abandonar el proyecto, definié una nueva direccién, pero esta vez con un objetivo mas ambicioso: orientarlo a Internet, lo que para esa época sonaba como una locura, pues se trataba de una tecnologia que daba sus primeros pasos. A partir de entonces, logré ser integrado al navegador Netscape (el mas importante del momento), donde se encargaba de ejecutar programas o applets dentro de una pagina web. Con el paso de los afios, Java se convirtié en un lenguaje potente, seguro y universal, gracias a la posibilidad de usarlo en cualquier plataforma y por su cardcter gratuito. Actualmente, Java se utiliza para un amplio abanico de posibilidades, y casi todo lo que se puede hacer en cualquier otro lenguaje es posible lograrlo también en Java, muchas veces, con mas ventajas. Para lo que aqui nos interesa, con Java podemos programar paginas web dindmicas con accesos a bases de datos, utilizar XML y aprovechar diversos tipos de conexién de red entre cualquier sistema, entre otras funciones. En general, Java sera util para cualquier aplicacion que deseemos desarrollar, por ejemplo, programas con acceso mediante la Web, y apps para sistemas moviles, como Android, lo que en la actualidad se encuentra en pleno auge. Podemos concluir que Java es un lenguaje que Ileg6 para quedarse, de eso no nos cabe ninguna duda; siempre ha sabido responder a los incesantes cambios tecnolégicos y ha vuelto sobre sus pasos cuando fue necesario. Ahora apunta al mundo de los sistemas méviles; esto es importante pues las estadisticas indican Figura 2. Duke, la curiosa mascota que el uso de Android llega a casi un 70% que por muchos afios acompafié a las de los teléfonos de este tipo enel mundo. —_publicaciones de Java www.redusers.com 7 1, INTRODUCCION ea LENGUAJES DE PROGRAMACION Un lenguaje de programacién se utiliza para escribir programas; estos constan de secuencias de instrucciones que se codifican y, a su vez, son traducidos para que las computadoras los entiendan. A las secuencias traducidas, se las denomina lenguaje de maquina o lenguaje de bajo nivel, que es el lenguaje nativo de la computadora. Tales instrucciones, dificiles para los humanos, no son mas que secuencias de ceros y unos, o patrones de bits. En consecuencia, para desarrollar programas, se necesitan lenguajes de programacién amigables que nos permitan interactuar directamente con una computadora. Cada lenguaje de programacién incluye un conjunto de instrucciones que la computadora puede entender directamente en su cdigo de mAquina. Las instrucciones basicas y comunes en casi todos los lenguajes de programacion son las siguientes: INSTRUCCIONES DE ENTRADA Y SALIDA Instrucciones de transferencia de informacién entre dispositivos periféricos y la memoria principal. INSTRUCCIONES DE CALCULO Se trata de instrucciones para que la computadora pueda realizar ‘operaciones aritméticas. INSTRUCCIONES DE CONTROL Son aquellas que modifican la secuencia de la ejecucién del programa. Por una parte, los lenguajes de bajo nivel se califican como lenguajes de maquina o lenguajes ensambladores. Por otra parte, los lenguajes de alto nivel permiten expresar los algoritmos de una forma adecuada para que sea entendida por los humanos En este punto es necesario tener en cuenta que las computadoras solo ejecutan programas escritos en lenguajes de bajo nivel; los programas de alto nivel tienen que traducirse antes de ejecutarse, y esta traduccién leva tiempo, lo que constituye una pequefia desventaja para los lenguajes de alto nivel. 8 www.redusers.com os JAVA Aun asi, las ventajas de los lenguajes de alto nivel son enormes. En primer lugar, la programacién en lenguajes de este tipo es mucho més facil; escribir programas con ellos toma menos tiempo, porque son mas cortos y mas faciles de leer; y es mas probable que estos programas sean correctos. En segundo lugar, los lenguajes de alto nivel son portables, lo que significa que pueden ejecutarse en tipos diferentes de computadoras sin modificacion alguna © con pocas modificaciones. En cambio, Figura 3. Fortran: antiguo lenguaje los programas escritos en lenguajes de de programacién ya casi en desuso. bajo nivel solo pueden ser ejecutados en un tipo de computadora y deben rescribirse para ejecutarlos en otra maquina, Debido a estas ventajas, casi todos los programas se escriben en un lenguaje de alto nivel, y los de bajo nivel solo se usan para unas pocas aplicaciones especiales. Existen dos tipos de programas que traducen lenguajes de alto nivel a lenguajes de bajo nivel: intérpretes y compiladores. Un intérprete lee un programa de alto nivel y lo ejecuta; esto significa que lleva a cabo lo que indica el programa; de esta forma, traduce el programa poco a poco, leyendo y ejecutando cada comando. Un compilador lee el programa y lo traduce todo al mismo tiempo antes de ejecutar cualquiera de las instrucciones. En este caso, el programa de alto nivel se lama cédigo fuente, y el programa traducido se denomina cédigo objeto o cédigo ejecutable. Una vez compilado el programa, puede ejecutarse repetidamente sin volver a traducirlo. Codigo fuente ——> —Intérprete ——> Figura 4. En este esquema vemos la funcion del intérprete, wurw.redusers.com 3 1. INTRODUCCION ea 1970 Evolucién La historia de los lenguajes de programacién es relativamente reciente, (unos 60 afios). Ada Byron, condesa de Lovelace (1815-1852), es considerada la primera programadora de la historia, pues intenté interpretar la maquina analitica de Charles Babbage y, para esto, desarroll6, en 1843, un algoritmo que podia ser utilizado en ella. Desde 1954 hasta la actualidad, se han documentado mas de 2.500 lenguajes de programacion. Entre 1952 y 1972 (la primera época de los lenguajes de programacién), se desarrollaron alrededor de 200 lenguajes. De ellos, solo una decena fueron realmente significativos y tuvieron influencia en el desarrollo de lenguajes posteriores, por ejemplo: > Fortran (Formula Translation) > LISP (List Processor) > COBOL (Common Business-Oriented Language) Los principales usos de estos tres lenguajes fueron aplicaciones para supercomputadoras, desarrollo de la inteligencia artificial y software empresarial A continuacién, realizaremos un breve recorrido para ver como fueron apareciendo los lenguajes de programacién y cuanta influencia tuvieron en los paradigmas modernos de desarrollo de software. Un hito en esta evolucién es la llegada, en los afios 60, de Algol, un lenguaje imperativo que no tuvo un gran éxito, pero sirvié de influencia para importantes lenguajes que vinieron después, como C. Ya por los 70, aparece el lenguaje Pascal, llamado asi en honor al matematico y fisico Blas Pascal; tiene un objetivo mas bien educativo pues se utiliza para el aprendizaje de las estructuras de datos. También en los 70, se crea un lenguaje que sera fundamental para el propésito de este curso: Smalltalk y que introduce el paradigma de orientacion a objetos. En 1972 llega un lenguaje padre: C. Es desarrollado por el programador Dennis Ritchie, de los Laboratorios Bell. Se trata de un lenguaje de bajo nivel, creado para propésitos generales y con el que es reescrito el sistema Unix. www.redusers.com Luego de C, vamos a saltarnos hasta 1983 en el que llega C++, que desciende de C, pero ya orientado a objetos; como sabemos, se trata de un paradigma que ejerce una influencia profunda en los lenguajes modernos. Ese mismo afio aparece Objetive-C, que se utilizaba para programar todo lo relacionado con Apple. En el afio 1987 se crea Perl, un poderoso lenguaje de alto nivel, conocido por su versatilidad, que ofrece un abanico interesante de sos, como aplicaciones de base de datos, administracién de sistemas, programacién web y programacién de graficos. En 1991 llega Python, un lenguaje con muchos propésitos, muy utiizado en la actualidad. Empresas como Google y Spotify, entre otras, lo incluyen dentro de sus lineas de cédigo. Ya en 1993 nace un lenguaje que es considerado un balsamo para los desarrolladores web: Ruby. Se trata de un lenguaje bastante versétil y con tn framework propio (Ruby on rails). Twitter, Groupon y Hulu lo utiizan. Posteriormente, en 1995 nace Java. Este mismo afio hace su aparicién PHP, creado por el groenlandés Rasmus Lerdorf, muy utilizado para la creacién de paginas web dinamicas. Encontramos ejemplos de su uso en Facebook, Wikipedia, Digg, WordPress y Joomla. Cabe resaltar que, en estos afios, también aparece JavaScript (JS), creado por un exdesarrollador de Netscape. JS ha logrado un importante posicionamiento entre los desarrolladores por las incontables bondades en el desarrollo de paginas web, por ejemplo, paginas dinamicas para el envio y validacién de formularios, interactividad, animacién, seguimiento de actividades de usuario, etcétera; es utilizado por Gmail, Photoshop y Mozilla Firefox. Ademis de los lenguajes que hemos citado en orden cronolégico, debemos tener en cuenta que aparecieron muchos otros, pero en esta ocasién hemos mencionado solo los mas relevantes. wuw.redusers.com = oo Ss 5 a} g 1. INTRODUCCION ea Clasificacio6n Entre los lenguajes de programacion, encontramos dos grandes grupos: los lenguajes imperativos y los declarativos. Dentro de los lenguajes imperativos mencionaremos los siguientes: Secuenciales: por ejemplo, Ensamblador. Estructurados: por ejemplo, BASIC. Procedurales: como C 0 Pascal Orientados a objetos: por ejemplo, Java, C++, Ruby. vvvy Dentro de los lenguajes declarativos encontramos la siguiente clasificacién: v Logicos: como Prolog. >» Funcionales: por ejemplo, Haskell, Erlang, LISP. También es posible clasificar los lenguajes de programacién por el tipado, es decir, si un lenguaje es fuerte o débilmente tipado, tema que profundizaremos en el capitulo. ert D cjecutor | cédigo I Ejecutor Salida read ered Se ae Figura 5. En este diagrama podemos ver la funcién de un compilador desde el codigo fuente hasta la salida. Cédigo fuente Se trata de un texto escrito en un lenguaje de programacién especifico y que puede ser leido por un programador. Debe traducirse a lenguaje maquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilacién. Acceder al cédigo fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores, se trata de la Unica manera de modificar eficazmente un programa. 12 www.redusers.com aes JAVA ENFOQUE ALGORITMICO Sin importar el lenguaje de programacion que decidamos utilizar, existen diferentes fases en el proceso de programacién, esto se conoce como ciclo de vida de un software. Para enfrentar este ciclo de vida, debemos seguir una serie de fases que son obligatorias; por esta razon, es necesario tenerlas en cuenta y acostumbrarnos a ellas, veamoslas ANALISIS DEL PROBLEMA El problema se analiza teniendo en cuenta los requerimientos del cliente, previendo alcances y dimensionandolo con la anticipacion necesaria. DISENO DEL ALGORITMO Es el momento de recurtir al lapiz y al papel, o tal vez a algin software adecuado para realizar los algoritmos necesarios que solucionen el problema. CODIFICACION Llamada implementacién de los algoritmos; para esto se utiliza la sintaxis de un lenguaje de programacién y, como resultado, obtendremos el cédigo fuente. COMPILACION Y EJECUCION Mediante diversos mecanismos, en esta etapa se procede a compilar y ejecutar el programa, VERIFICACION En esta etapa se ejecutan las pruebas de rigor para verificar el programa; si aparecen errores 0 bugs, pasamos a la fase siguiente. DEPURACION En caso de encontrar errores, que pueden ser de distinta indole, en esta etapa se procede a corregirlos (debugging). MANTENIMIENTO Una vez lanzado el programa, debemos tener en cuenta que es probable que en algin momento requiera ser actualizado 0 modificado en alguna de sus instancias. DOCUMENTACION En todas las fases de la programacién se deben escribir los manuales del usuario (ademés de los comentarios dentro del cédigo) y también las normas adecuadas para su correcto mantenimiento, En esencia, el enfoque algoritmico enfatiza la importancia de seguir una secuencia ordenada de pasos o actividades, para, en este caso, enfrentar el ciclo de vida de un software. www.redusers.com 1B 1. INTRODUCCION ea 14 Algoritmos La palabra algoritmo es una traducci en honor a un astronomo y matematico arabe que trabajo en la manipulacién de numeros y ecuaciones en el siglo IX. n del arabe Alkh6-warizmi, Un algoritmo es la manera en que resolvemos un problema mediante una serie de pasos precisos, definidos y finitos. Las formas en que utilizamos los algoritmos se denominan métodos algoritmicos, a diferencia de los métodos heuristicos, que implican algtin juicio 0 interpretacion. Veamos un ejemplo sencillo en el que, sin darnos cuenta, aplicamos algoritmos. ‘Supongamos que queremos preparar una cena especial. Nos esmeramos para tener a la mano todos los ingredientes, para lo cual preparamos un listado y, si es necesario, vamos al supermercado para comprar los elementos. Una vez que tenemos todo, empezamos a seguir la receta (si no la tenemos en la cabeza); para ello, antes hay que disponer de los utensilios que utilizaremos (sartenes, bol, cuchillo, etcétera). Procedemos a cortar los distintos ingredientes, verificamos los condimentos y, para terminar, cocinamos. Al final, una vez comprobada la correcta coccién y seguros de que los sabores sean los esperados (corregimos con sal, por ejemplo), sera el momento en que habremos terminado el proceso. En este caso, podemos ver que hemos seguido un método algoritmico para dar solucién a un problema inicial. Pero, para enfrentar la programaci6n de software, necesitamos métodos un poco mas sofisticados que en el ejemplo anterior. Por esta raz6n existen varios métodos, como diagramas de flujo y pseudocédigo, que conoceremos en las secciones posteriores de este capitulo, car y definir el problema, y para esto, debemos plantearnos algunas preguntas De cualquier forma, el primer paso sera ident Qué entradas se requieren? Tipo de datos con los que se trabaja y su cantidad. Cui la salida deseada? Tipo de datos de los resultados y la cantidad. 2Qué método produce la salida deseada? Requerimientos adicionales y las restricciones. www.redusers.com ees JAVA Veamos un ejemplo un poco mas especifico. Necesitamos saber cuanto gana un obrero que trabaja por horas; para ello sera titil hacernos las preguntas que ya hemos citado: Qué entradas se requieren? ENTRADA. Nombre del empleado, cantidad de horas, costo por hora. éCual es la salida deseada? SALIDA. Nombre del empleado, total por cobrar. 2Qué método produce la salida deseada? PROCESO. La muttiplicacién de la cantidad de horas por el costo hora nos dara el total que cobrara el empleado. Pseudocédigo Para resolver este eee en principio utilizaremos el método de los pseudocodigos. Se trata de la forma de escribir las instrucciones tal como lo hacemos en nuestro idioma, claro que siguiendo algunas reglas inherentes a este método. Para entenderlo mejor, tomaremos el ejemplo que planteamos en la seccién anterior: Inicio_Proceso Leer: nombreEmpleado, Horas, costoHora, Escribir: nombrefmpleado, Horas, costoHora Calcular: totalcobrar = Horas * costoHora Escribir: nombreEmpleado, totalCobrar Fin_Proceso aeeene E] pseudocédigo puede utilizar palabras reservadas en un lenguaje como: start, end, stop, if, then, else, while, repeat, etcétera. También se puede utilizar indentacion o tabulacién desde el margen izquierdo, para que el pseudocédigo quede mas ordenado. Por cierto, la computadora no entiende este pseudolenguaje; sin embargo, nos sera de mucha ayuda, sobre todo cuando comenzamos a programar. A la hora de implementar algoritmos, no importa el método que finalmente utilicemos, pero si son necesarios. www.redusers.com 15 41. INTRODUCCION Diagramas de flujo El método de diagramas de flujo o flowchart es una técnica muy antigua y, tal vez, la mas utilizada en comparaci6n con el pseudocédigo. Para trabajar con ella, se requiere conocer una serie de simbolos o cajas estandar, que contendran cada uno de los pasos de la solucion del algoritmo y estaran unidas por medio de flechas, que indican una secuencia. Los simbolos mas utilizados van a representar: proceso decision conectores entrada/salida direccién del flujo inicio/fin vvYVVyY En la siguiente Tabla conoceremos los simbolos que podemos usar al crear un diagrama de flujo. g SiMBOLOS PARA DIAGRAMAS DE FLUJO siMBOLOS NOMBRE Pes Entrada/salida Representa los datos de entrada o de salida. w Decision Representa las comparaciones de dos o mas valores, tiene dos salidas: Verdadero y Falso. 16 wwrw.redusers.com JAVA simBoLos Nest FUNCION aes} Decision miitiple Conector | O® Indicador de direccion Linea conectora Conector Llamada a subrutina = Pantalla Impresora Teclado a Comentarios En funcidn del resultado, se seguira uno de los diferentes caminos de acuerdo con dicho resultado. Permite identificar la continuacién de la informacién, si el diagrama es muy extenso Indica el sentido de ejecucién de las operaciones. Une los simbolos. Conecta dos puntos del diagrama, pero en diferentes hojas. Llamada a subrutina o proceso predeterminado. Ocasionalmente para representar E/S. Ocasionalmente para representar E/S. Ocasionalmente para representar E/S. Para afiadir comentario a algtin simbolo. Tabla 1. En esta tabla vemos los simbolos que podemos utilizar en un diagrama de flujo. www.redusers.com W7 1. INTRODUCCION ea Para comprender de mejor forma el uso del pseudocédigo y los diagramas de flujo, veamos algunos ejemplos resueltos: 1. Desarrollemos un algoritmo que permita leer dos valores distintos y, luego, determinar cual de los dos es el mayor. Primero realicemos el pseudocédigo adecuado para este problema: 1. Inicio 2. Inicializar variables: A=0, B=0 3. Solicitar dos valores distintos 4. Leer los dos valores 5. Asignarlos a las variables A y B 6. Si A=B Entonces vuelve a 3 7. Si A>B Entonces Escribir A, “Es el mayor” 8. De lo contrario: Escribir B, “Es el mayor” 9. Finsi 10. Fin Proceso mayorQue Definir A,B Cone Entero Figura 6. Este diagrama de flujo corresponde al problema que nos pide leer dos valores distintos y, luego, determinar cual es mayor. 18 www.redusers.com eS JAVA 2. Dadas tres notas, determinar si un alumno aprueba o no una materia; considerar que, para aprobar, el promedio debe ser igual 0 mayor que 7. Primero creamos el pseudocédigo adecuado para resolver este problema’ 1. Inicio 2. Definir las variables ni,n2,n3, prom 3. Leer los 3 valores . Almacenar en las variables ni,n2,n3 - prom = (n1+n2+n3)/3 Si prom=7 Entonces . Eseribir “El estudiante aprobé con: Sino 9. Escribir “El estudiante reprobé con: “, prom 10. Fin_si a1. Fin Detinis al,na,n3 prom POMS Teele Ser Som ed 25.121-b13, mixed mode? Figura 10. Esta imagen muestra el resultado de la ejecucién del comando java-version en una consola de comandos de Microsoft Windows. Como punto de partida, en el capitulo inicial de esta obra hicimos una pequeiia introduccién a los lenguajes de programacién, revisamos su evolucién y, también, el momento en que aparecié Java, Vimos algo de la historia de los lenguajes de programacién mas importantes, como nacieron, cuales son las empresas que los usan y su clasificacion. Ademas aprendimos a planificar nuestros programas a través de la algoritmia, conocimos qué es el ciclo de vida de un software y qué etapas lo componen. Para terminar, realizamos un acercamiento al lenguaje objeto de este curso: Java. Vimos algunas de sus caracteristicas y analizamos sus diferentes ediciones. wow.redusers.com 23 1. INTRODUCTION as Actividades 01 Test de Autoevaluaci6n 1, ,Quién cre6 el lenguaje Java? . {Qué es un applet? . Qué es un lenguaje de programacion? . Clasifique los lenguajes de programacién. . {Qué es un lenguaje de bajo nivel? Cite dos ejemplos, . {Que es un algoritmo? . Qué es un compilador? . Qué es lo que hace que Java sea un lenguaje tan popular? POnaunwn . SE Runt ine Environnent Chuild 1.8.0 101-b13> Java HotSpot Client UN Chuild 25.101-bi3, mixed node, shar: Comunidades de Desarrollo En la Comunidad Java Codegeeks podemos encontrar aspectos avanzados del lenguaje, actualizaciones y hasta manuales interesantes, aunque estén en inglés. 30 ‘www.redusers.com ENTORNOS DE DESARROLLO Aunque es posible realizar nuestros programas con herramientas sencillas, como el Bloc de notas o Notepad++, es necesario considerar que el uso de un entorno de desarrollo o IDE (Integrated Development Environment) nos permitira trabajar en aplicaciones mas completas, gracias a la posibilidad de acceder a servicios y ventajas que los métodos més simples no proporcionan. Entre las ventajas de un IDE encontramos las siguientes: Un atea de trabajo para escribir los cédigos y acceso a la ayuda que permite generar cédigo de manera automatica; asimismo a un corrector de sintaxis y tabuladores automaticos, de tal manera que los cédigos, sean mas ordenados. Herramientas para compilar y ejecutar el cédigo escrito. Opciones para organizar los proyectos de programacién. Herramientas auxiliares para programadores, adecuadas para efectuar la deteccién de errores 0 el andlisis de programas (debuggers). Opciones adicionales, tales como utilidades para realizacion de pruebas 0 carga de librerias, entre otras. Importacion de proyectos locales a una red e, incluso, desde otras IDE. Como vemos, la importancia y las ventajas de los entornos de desarrollo no es menor, por lo tanto, es necesario conocer algunos de los IDE que podemos utilizar. IDE, tomar la decisi6n adecuada ELIDE permite que tengamos todo lo necesario para programar. Hay que tomar una buena decision a la hora de elegirlo, ya que pasaremos horas trabajando en él. www.redusers.com 31 2. PRIMEROS PASOS ea ECLIPSE Se trata de un software libre que se descarga desde la direccion https://www.eclipse.org. Es uno de los entornos Java més utilizados por los profesionales; su paquete basico se puede expandir mediante la instalacién de plugins que agregan funciones a medida que se van necesitando. ao Figura 1. En esta imagen vemos la pagina oficial de Eclipse, uno de los IDE més populares, NETBEANS Es una aplicacion libre que se puede descargar desde la direccién www.netbeans.org. Es otro de los entornos Java comuinmente utlizados; al igual que en Eclipse, pueden agregarse funciones mediante el uso de plugins. INTELLIJ IDEA Como ocurre con NetBeans y Eclipse, también puede incorporar soporte para otros lenguajes de programacién. Pero, a diferencia de los IDE anteriores, se trata de un producto comercial No obstante podemos acceder a una edicién reducida, denominada Community, que se obtiene en forma gratuita. Para descargarlo, debemos visitar la direccién www.jetbrains.com/idea/download. JCREATOR Este IDE se distribuye en forma comercial, aunque se pueden obtener versiones de prueba o versiones simplificadas gratuitas en la web www.jereator.com. Esta escrito en C++ y omite herramientas para desarrollos graficos, por lo que es mas rapido y eficiente que otros IDE. 2 www.redusers.com ee JAVA BLUEJ Software libre que se puede descargar desde http://bluej.org, se trata de un entorno de desarrollo dirigido al aprendizaje de Java (entorno académico), por lo que no se considera su uso en el Ambito profesional. Se destaca por ser sencilloe incluir algunas caracteristicas dirigidas a que las personas que estén aprendiendo comprendan con mayor facilidad los aspectos clave de la programacién orientada a objetos. Figura 2. BlueJ es un IDE de software libre muy. popular en la comunidad academica. JGRASP Es un IDE superligero creado por la Universidad de Auburn (Alabama). Su punto fuerte se encuentra en la capacidad de generar visualizaciones del cédigo que escribimos en forma de diagramas de estructura de control (Control Structure Diagrams), Para descargarlo debemos visitar la direccién www.jgrasp.org. B Una libreria en Java es un conjunto de clases que poseen una serie de métodos y atributos. Lo realmente interesante de estas librerias para Java es que facilitan muchas operaciones. De una forma mas completa, las librerias en Java nos permiten reutilizar rerias en Java cédigo, es decir, podemos hacer uso de los métodos, clases y atrbutos que componen {a libreria y asi evitaremos implementar nosotros mismos esas funcionalidades. www.redusers.com 33 2. PRIMEROS PASOS es Instalacion del IDE Decidir por uno de los entornos de desarrollo integrados que hemos presentado parece una tarea algo complicada; para esta obra utilizaremos NetBeans, pues se trata de la opcién ofrecida directamente en la pagina oficial de Java. a \ |; | NetBeans Figura 3. NetBeans es el IDE con el que realizaremos los cédigos en este curso. St Para descargarlo visitaremos el sitio http://netbeans.org/ downloads, aqui encontraremos diferentes versiones para descargar, en este caso necesitamos Java SE, por lo tanto, hacemos clic sobre Download en la columna que corresponde. NetBeans IDE 8.2 Download Development Arch etteans IDE Download bundles Sippotedecindoges” ASE REE HTMLSnaSotet ee cree a NetBeans ars SOK | * . Figura 4. Sitio oficial de descarga del IDE NetBeans. Debemos tener en cuenta la versién del SO yel idioma que deseamos descargar. Una vez descargado nuestro entorno de desarrollo, es necesario ejecutarlo y seguir las indicaciones del asistente de instalacién. Cuando se completa el proceso, ya estamos preparados para comenzar con nuestros primeros programas. Recordemos que es necesario contar con espacio suficiente en el disco duro en el que se instalaré el IDE, pues en esa ubicacién también se grabaran los archivos que generemos. 34 www.redusers.com aes JAVA Ng IN Proyectos recientes searamsemane sbi eperettitoe nye ete ree Figura 5. Una vez instalado el IDE lo ejecutamos. Mientras su proceso de inicio se completa, vveremos informacién sobre los desarrolladores, la versién del IDE y otros datos técnicos importantes. Luego de instalar el IDE podemos ejecutarlo. Una vez que nos encontremos en su interfaz principal, seré un buen momento para que comencemos a explorar el arbol de proyectos que contendra todo lo relacionado con nuestros programas. NetBeans ne Pry Proyectos recientes creer Figura 6. Vista principal del entorno NetBeans una vez iniciado. Observamos el panel de Archivos, el panel Navegador y, en su seccién principal, la Pagina de inicio. www.redusers.com 35 2. PRIMEROS PASOS ees SINTAXIS Y REGLAS La sintaxis es un conjunto de reglas que necesitamos conocer para programar de manera correcta, utilizando un lenguaje de programacién especifico. A continuacién, revisaremos algunas consideraciones iniciales para tener en cuenta cuando escribamos cédigo en Java. Sintaxis basica En esta seccién conoceremos las reglas mas recurrentes a la hora de iniciar la codificacién, asi estaremos preparados para enfrentar los primeros errores que, seguramente, apareceran conforme avancemos en nuestro aprendizaje Java es un lenguaje del tipo case sentive, es decir, sensible a las mayisculas y las minasculas. Por esta razén, no es lo mismo escribir numero que Numero. Para nombrar una clase se debe comenzar con mayiiscula, Si a clase tuviera dos 0 més palabras, se recomienda que las iniciales emppiecen con mayiisculas, a esto se denomina Camel Case, por ejemplo: class MiPrimeraClase Para nombrar un método, se recomienda comenzar con miniscula; si usamos varias palabras, las interiores deberian empezar en maylsculas. Por ejemplo: public void miPrimerMetodo () Alnombrar un archivo, debe coincidir con el nombre de la clase, de otro modo. este no compilara. Por ejemplo, si el nombre de la clase es MiPrimerPrograma, entonces el archivo debe ser guardado como MiPrimerPrograma.java. La ejecucién de un programa en Java se inicia desde el método main(), por lo tanto, se trata de una parte obligatoria en el codigo. 36 www.redusers.com ees JAVA Los bloques de cédigo deben estar dentro de llaves 0, por ejemplo: public class NombrepeClase { /este es el bloque 1 public static void main(String args{1) { /Jeste es el bloque 2 }//fin dei bloque 1 }//in dei bloque 2 Las instrucciones deben terminar en punto y coma (;), por ejemplo: System.out .printin("Hola mundo”) ; Identificadores Los identificadores permiten asignar nombres a los distintos componentes de un programa Java (clases, métodos, variables) y deben ser utilizados sin excepcion alguna. Existen algunas reglas para nombrarlos adecuadamente: > Todos los identificadores deben comenzar con una letra maytiscula © mindscula (A-Z 0 a2), con el cardcter de moneda ($) 0 con un guion bajo (. > Una palabra clave no se puede utilizar como un identificador. No es posible usarlas para nombrar variables, ya que poseen un propésito definido dentro de un programa y, por lo tanto, se trata de palabras reservadas. Los IDE nos indicaran cuando una palabra es clave y la resaltaran con un color distinto al resto del c6digo, generalmente se utiliza el color azul. > Los identificadores distinguen entre maytisculas y mintisculas, Teniendo en cuenta estas reglas, algunos ejemplos de identificadores son: edad, $salario, valor, 1 valor; y 123abe, -salario, ejemplos de identificadores invalidos. www.redusers.com 37 2. PRIMEROS PASOS Es Secuencias de escape Una secuencia de escape eae al uso de signos que no veremos en la consola o salida del programa, pero que pueden resolver los problemas que surgen cuando deseamos imprimir ciertos signos que el compilador identifica como signos internos. Una secuencia de escape siempre representa un solo caracter, aunque para escribirla utilicemos dos o mas caracteres. Por ejemplo, se utilizan para realizar acciones, como un salto de linea, 0 para presentar caracteres no imprimibles. En la Tabla 1 presentamos algunas de las secuencias de escape que se encuentran definidas en Java. « Secuencias de Escape Baca Pesentos) \b Retroceso. \ Ir al principio de la linea ¥ Comilla simple \udddd Caracter Unicode Tabla 1. Secuencias de escape definidas en Java junto a sus respectivas descripciones. Caracteres especiales y espacios en blanco Cuando trabajemos con codificacién Java, debemos tener en cuenta la existencia de caracteres especiales y de signos de puntuacién; se trata de los siguientes: +-*/=% & #174%*~\P<>()E1:5.,€) Por otra parte, también existen los espacios en blanco; estos corresponden a tabulador, espacio Y salto de linea, y SU labor es realizar una separacién entre los diferentes elementos de un programa. 38 www.redusers.com as JAVA Comentarios Un comentario es una anotacion que permite explicar algo referente al codigo que se esta produciendo, por lo que no sera tomado en cuenta por el compilador. En los comentarios, se acostumbra incluir informacion que pueda ayudar a comprender mejor el codigo elaborado. Existen tres tipos de comentarios, los que conoceremos a continuacién: DE UNA LINEA Lo usamos para comentar alguna secuencia corta 0 instruccién simple; para crearlo comenzamos con dos barras (IN. Por ejemplo: //esto es un comentario de una linea DE VARIAS LINEAS Silo que necesitamos explicar ocupara mucho espacio, sera necesario usar un comentario de varias lineas; para crearlo ponemos el comentario entre los simbolos /* y */. Por ejemplo: /*Este se considera un comentario de varias line: No importa que se haya cambiado de linea, continta el comentario*/ PARA EL DOCUMENTADOR DE JAVA: Este tipo de comentario es tenido en cuenta por el documentador de Java, es muy recomendable al comienzo de todo programa; para crearlo utilzamos los simbolos /** y */, Por ejemplo: (Este se considera un comentario de varia: 1 cual seré de vital importancia cuando se pida a la herramienta java.doc que genere 1a documentacién Linea: correspondiente a la clase que tenga este comentario.*/ www.redusers.com 39 2. PRIMEROS PASOS, ea NUESTRO PRIMER PROGRAMA Antes de enfrentarnos al desarrollo de nuestro primer programa en Java, debemos familiarizarnos con el concepto de proyecto. Un proyecto es un conjunto ordenado de carpetas y archivos que nos permiten mantener el cédigo organizado, suele constar de archivos .java, .class y también documentacién. El cdigo fuente se encuentra en los archivos .java dentro de la carpeta sre (source); sin embargo, los archivos .class, que contienen el Bytecode, se ubican en la carpeta bin. ees oC Cd TWN Recent Projects Figura 7. Vista de la organizacion de las carpetas de nuestro proyecto. La organizacién de los archivos en carpetas y la presencia de elementos adicionales dependen del entorno de desarrollo que utilicemos. Ademas, Java introduce un esquema organizativo a través de paquetes (packages). Comentarios ini Sibien los comentarios no son de caracter obligatorio, es recomendable realizarlos; la comunidad de programadores lo recuerda cada vez que subimos un programa a la Web con el propdsito de que sea corregido. Algunas organizaciones requieren que todos los programas comiencen con un comentario que explique el objetivo del programa, el autor, la fecha y la hora de la titima modificacién. 40 www.redusers.com aes JAVA Para crear un proyecto en nuestro IDE, debemos seguir las indicaciones que presentamos en el siguiente Paso a paso: é PASO A PASO: CREACION DE UN PROYECTO EN NETBEANS 0 Para comenzar debe ejecutar el IDE. Una vez iniciado, haga clic en el mend Archivo yelija Proyecto nuevo. Open mete St we trey Ga me Get eB Ta emis Sea 1S ree ‘cnmen WD Eb: Proyectos recientos nema, 0 En la ventana Proyecto nuevo se presentan varias carpetas. Elija Java; luego, haga clic en la opcién Java application y presione el boton Siguiente. a a a) = == oe _ | oe | 1 roma inatertor | aie aaa | | = a) www.redusers.com 4. 2. PRIMEROS PASOS t i public class Molattendo param arge the command line arguments public stacic void main(string{] args) ( 3 www.redusers.com ees JAVA Con el proyecto ya creado escribiremos el siguiente cédigo; tengamos en cuenta que el IDE ya agregé algunos bloques de codigo en forma predeterminada, por lo tanto, no es necesario escribirlos. //Bienvenidos a mi primer programa // Programa para imprimir texto public class HolaMundo{ //e1 método main empieza la ejecucién del programa public static void main(String[] args) ( System.out .print1n("Hola Mundo Java”); }//fin dei bioque main }//fin de 1a clase HolaMundo Para ejecutar el programa que acabamos de codificar, debemos presionar el pequefo signo verde que representa play o ejecutar, situado en la barra de herramientas del IDE; también podemos hacerlo presionando la tecla bier deberiamos ver el mensaje |= 9 nc uu ew Hola Mundo Java en la 7 7 - consola inferior. Figura 8. Ena imagen se | muestra el boton de ejecucion | = _ del programa. Ls Sangrias y tabulador ‘Muchos IDE insertan las sangrias en los lugares adecuados, pero también podemos usar la tecla TAB para ampliarlas. La mayoria de los IDE dan la posibilidad de realizar la configuracién de los tabuladores de tal forma que se inserte un nimero especifico cada vez que oprimamos dicha tecla, ordenando nuestro cédigo. Ademés de las sangrias, una buena practica es integrar lineas en blanco, pues facilitan la lectura de nuestros programas. www.redusers.com 43 2. PRIMEROS PASOS ceo a | arch Estar Yer Nvegar fuente Repsructurw Ejecutat Qepurer Profile Team Hermientas Yentana & BEES OC Seem TB D-H-G- Slee calrannme =| Galen [96-8 USSeq Pee aueued 5 rene @ mts aa) Figura 9. En esta imagen observamos la ejecucién del programa Hola Mundo en la consola que se ubica en la parte inferior del IDE. Siempre es necesario considerar que, si el programa que escril presenta errores de algiin tipo, el IDE lo marcara con un signo que indique la linea que contiene el error. Para saber a qué tipo de error nos enfrentamos, bastara con pasar el cursor por sobre este signo. Es importante corregir los errores que aparezcan, de lo contrario el programa no se compilara y, por lo tanto, no podra ejecutarse. Aplicacion Java Una aplicacién Java es un programa de computadora que se ejecuta cuando utilizamos el comando java para iniciar la maquina virtual de Java (JVM), que se encargard de compilarlo y ejecutarlo debidamente. Debemios saber que, en el funcionamiento de estas aplicaciones, intervienen, en forma directa o indirecta, muchos archivos, ademas de las bibliotecas que pueden ser usadas u omitidas, dependiendo de la complejidad del programa. 44 wurw.redusers.com aes JAVA, Ti toatundajave taoy | BB -/ASP BSS elagle al envenidos a mi primer programa ograma para Smpr ‘package holamando; 1 2 3 4 5 6 7 aay a] |+ 30) | + sautnor cnariyred fay kay 32) public class Holaltundo ( 13] /fel mévodo main empieza la eecucién del programa 24| Public static void main(String(] args) ( as e a7 a2 a3) 20| @' Figura 10. Como vemos en esta imagen, el IDE ha detectado un error en la fila 16. En este caso se trata de la falta del punto y coma () al final de la linea. « ” RESUMEN CAPITULO 02 www.redusers.com 45 2. PRIMEROS PASOS Eas Actividades 02 Test de Autoevaluaci6n Descargue el JDK e instalelo. Descargue el IDE NetBeans desde su sitio oficial e instdlelo. Qué ventajas proporciona utilizar un entorno de desarrollo integrado? 2Qué es un programa de Java? @Para qué sirven las palabras clave? @De qué forma se crea un proyecto Java? @Por qué es tan importante la sintaxis en un lenguaje de programacion? 2Cémo reconocemos un bloque? El eh md det gk ond nek {Qué signo debemos colocar al final de una instruccién? 10. ;Qué importancia tiene main() en un programa de Java? Ejercicios practicos 1. Ejecute NetBeans y explore el contenido de la ventana de proyectos. 2. Codifique una pequefa aplicacién que muestre su nombre, su edad y el pais en el que reside, Agregue diversos comentarios que expliquen el funcionamiento de la aplicacion y los datos que muestra. Ejectitela. 3. Provoque algunos errores de sintaxis en la aplicacién recién creada y verifique qué recomienda el IDE para corregirlos. 4% www.redusers.com En este capitulo conoceremos mas sobre el lenguaje Java, analizaremos sus elementos fundamentales y c6mo funcionan dentro del cédigo asi como también su interacci6n e importancia. Veremos las variables y las constantes, el uso de las expresiones regulares, los operadores y también los métodos o funciones, todo esto nos permitira crear programas mas avanzados. 3. ELEMENTOS DEL LENGUAJE JAVA TIPOS DE DATOS Los tipos de datos estan asociados a las variables, es decir, determinan lo que la variable puede contener y las operaciones que se pueden realizar con ella. Java es un lenguaje orientado a objetos que proviene de C, por ello no se ha desprendido de elementos como los tipos primitivos, que precisamente no son objetos. Por esta razén tenemos dos categorias de datos en Java, los primitivos y los referenciados. Los datos primitivos contienen un solo valor e incluyen enteros, punto flotante y caracteres. En la Tabla 1 vemos los tipos primitivos soportados hasta la version 8 de Java. « TIPOS DE DATOS PRIMITIVOS TN ishy TNS cia) Pas EN eld Blase sis) fe) Vm] st) Representa un nimero entero real Jong tesameccabas +2 9223372036851 775808 . Representa un numero entero real int aes + 2.147.486.647 Representa un nimero entero real short ec aeecue 32768 a 32768 byte Representa un némero entero real. Usa 1 Byte u 8 bits. 128.4127 Representa un nimero de punto flatante; es double compatible con una variable con un entero real, pero ee a no lo es con double, Usa 8 Bytes 0 64 bits. eae float Similar al double. Usa 4 Bytes 0 32 bits. 1.23e100f, -1.23e-100f, Debernos usar una f después del numero. 3ef, 3.141 Solo puede contener true o false. boolean Se usa para condiciones logicas, Usa 2 Bytes. Tre o false Representa un nimero, letra o simbolo segin la tabla ASCI, Es compatible con un numero entero ce real. Sies un caracter, va entre comilas simples. aces Usa 2 Bytes 0 16 bits. a No es un tipo primitivo, pero Java da soporte para a manejar las cadenas de caracteres. Tabla 1. Tipos de datos primitivos usados en Java 48 www.redusers.com aes JAVA Los tipos de datos referenciados no estan integrados en el sistema operativo; en realidad se trata de objetos de Java. Entre ellos encontramos las cadenas de caracteres 0 datos de tipo String, Array y Object, etcétera Podemos identificarlos porque, en el momento de declararlos, se utiliza una palabra clave para hacerlo; esta debe comenzar con maytiscula. Veamos un ejemplo para los tres tipos de datos que mencionamos: String unaCadena = “Hola Mundo Java”; Array unArreglo; ‘Object Cc; ENTRADA Y SALIDA DE DATOS En Java, la entrada y salida (1/0) se basa en el concepto de flujo de datos, que es una secuencia ordenada de datos con una fuente o flujos de entrada y un destino o flujos de salida, Java nos proporciona clases de E/S que se encargan de aislar los detalles especificos de su funcionamiento y hacen posible acceder a recursos del sistema por medio de archivos. Para la lectura de estos datos usamos las clases Scanner y BufferedReader. BigInteger en Java La libreria Biginteger de Java nos permite procesar nimeros grandes con sus propios métodos; para usarla debemos importar la libreria math. BigInteger, luego creamos un objeto Biginteger mediante el codigo BigInteger A = new BigInteger(““1”);. De esta forma es posible ingresar, como argumentos, nimeros grandes como cadenas, datos de tipo long, o simplemente leerlos desde el teclado. www.redusers.com 49 3. ELEMENTOS DEL LENGUAJE JAVA, ees cr} ior PUN Piety Peri ee Peete) Peter) rarer BaD) aaa} Figura 1. Esta imagen nos presenta un diagrama del fiuo de datos en sistemas de informacion. Cuando programamos en Java, es posible mostrar informacién a través de la consola o mediante un cuadro de dialogo. En el primer caso es necesario ejecutar el IDE, pues la informacion que deseamos mostrar se presentara en una ventana de comandos 0 consola. Por ejemplo, para mostrar un mensaje en consola, escribimos el siguiente codigo: System.out .print1n("esto es una cadena de texto”); Ademas de cadenas, podemos mostrar el valor de una variable, para lo cual escribimos el nombre de la variable sin comillas dobles, no importa el tipo de variable de la que se trate. Veamos un ejemplo, en este caso mostraremos el valor almacenado en la variable num: System. out .print1n (num) ; También se puede mostrar informacién que incluya una cadena de texto y el valor de una variable; para hacerlo escribimos la cadena con comillas dobles, un signo + y el nombre de la variable. Por ejemplo: Ssystem.out .printin("E1 precio final es “+ precio + ” Pesos”); Si necesitamos escribir una formula, es necesario ponerla entre paréntesis, de la siguiente manera: 50 www.redusers.com JAVA System. out .printin("El precio del producto, incluyendo el IVA, es “+ (precioProductot (precioProducto*IVA) )) ; Por otra parte, si necesitamos que el resultado no dé un salto de linea, escribimos lo siguiente: System. out .print ("texto sin salto de linea”); A continuacién presentamos un ejemplo integrador que nos permitira observar la manera de presentar informacion en diferentes casos: public class SalidaDatos { public static void main(string[] args) { int precio=100; System. out .printin("Informacién del producto”); System.out .print1n("El precio del producto es “4precio) ; System. out .print1n("El precio del producto, in- cluyendo el IVA, es “+(preciot (precio*IVA))); ? Uso de sangrias en los programas La indentacién hace referencia a los espacios que vamos a dejar en el cédigo respecto a la posicidn izquierda, es decir, la parte que se encuentra en el inicio de las lineas. Uno de los conceptos importantes para los iniciados en Java es saber colocar la indentacién (sangrias) y saber respetar los niveles con los que se van colocando los bloques de codigo. wurw.redusers.com 51 3. ELEMENTOS DEL LENGUAJE JAVA cea ae = ni We eg ene ari Gr Sp Pte fre Frente SHBG OC suey. TW d-E-O ino + ti hs ee Bs Qesec¢¢elagleus =o = Figura 2. Aqui vemos el resultado de la ejecucién del cédigo de ejemplo. Este resultado se presenta en la consola de NetBeans. La segunda forma de mostrar informacién es utilizando cuadros de didlogo. Analizaremos esta practica en detalle mas adelante, cumado expliquemos el uso de las interfaces graficas mediante Java Swing. VARIABLES Una variable es una estructura de datos que puede variar a lo largo de la ejecucién de un programa. Ocupa un espacio en la memoria y siempre referenciara a un tipo de dato primitivo o a cualquier objeto que haya sido creado en nuestro programa. Antes de usar una variable, es necesario declararla; esto significa que debemos asignarle el tipo de dato que usara Ademés de declararla, es opcional inicializarla, es decir, asignarle un valor, que debe ser compatible con el tipo de dato que hemos declarado. Por ejemplo, si declaramos una variable de tipo numérico, esta no puede contener valores que correspondan a una cadena de caracteres, 52 www.redusers.com, eS JAVA La sintaxis adecuada para declarar una variable es tipo_variable nombre_variable;. Veamos un ejemplo: int num; Es recomendable inicializar estas variables con un niimero genérico, por ejemplo, uno 0 cero int num= 0; Antes de crear nuestras variables, debemos tener en cuenta algunas reglas importantes: El nombre de una variable no puede comenzar con un ndmero, pero si puede formar parte del nombre. Los espacios no pueden formar parte del nombre. No se deben utilizar operadores como +, -, !, etcétera. No es posible crear dos variables con el mismo nombre en el mismo Ambito, aunque sean de distintos tipos. Para nombrar una variable, esta prohibido el uso de palabras reservadas; en el IDE estas palabras se muestran en color azul. Debemos tener cuidado con las mayusculas y las minusculas, no es lo mismo mivariable que miVariable. Nombres de variables Debemos escribir las variables con nombres significativos, asi se evitan largas documentaciones. En caso de que los nombres se tornen complejos, no olvidemos dejar un espacio entre cada declaracién para agregar un comentario. www.redusers.com 53 3. ELEMENTOS DEL LENGUAJE JAVA, ees Ambito El ambito se establece en el momento de crear una variable y se relaciona con la posibilidad de acceder a la variable desde cualquier parte de un programa. Por norma, la variable tiene validez dentro del bloque en el que esta encerrada entre Ilaves (Q}) y depende del lugar donde fue declarada, por ejemplo, dentro de una funcion o dentro de una estructura de control (if... else). Para aclarar este punto, es necesario que revisemos el siguiente cédigo: public class AmbitoDeUnaVariable { public static void main(String[] args) ( if (true) ( Ant y=5; » System. out .printin(y); Al ejecutar el cédigo presentado, el compilador nos diré que hay un error pues se intenta acceder a la variable y, pero no esta definida puesto que fue declarada en un bloque distinto, fuera de donde intentamos utilizarla. Para acceder a las variables, debemos considerar si en la clase esta declarada como public 0 como private. Las variables declaradas como public se acceden directamente a través de NombreClase.nombreVariable; Nombrar variables Por convencién, se suele escribir el nombre de las variables en mindscula, si esta tuviera mas de una palabra, la siguiente deberia empezar en mayuscula; también se puede usar guién bajo (_) para separarlas. Algunos ejemplos de variables correctamente nombradas son los siguientes: variablePrueba o variable prueba, Estas reglas nos permitiran tener un codigo mas ordenado y facil de leer. 54 www.redusers.com CEES JAVA, en cambio, una variable private solo puede ser utilizada mediante los métodos de esa clase. Desde la declaracién de cualquier funcién propia de una clase, podemos acceder a las variables internas de esa clase en forma directa. Es posible realizar esta declaracion en el bloque de cédigo de una clase, en el bloque de cédigo de una funcién o también en un bloque de codigo que se encuentra en el interior de una funcidn. Esta ubicacion es importante pues solo podra utilizarla el codigo que corresponde al bloque donde declaramos la variable. Si el mismo bloque de codigo se ejecuta varias veces durante la ejecucion de la funci6n, por ejemplo en el caso de un bucle while, la variable se creara con cada iteracién del bucle. En este caso, la inicializacion de la variable es obligatoria. No podemos tener dos variables con idéntico nombre en el mismo ambito, pero existe la posibilidad de declarar una variable interna a una funcion o un parametro de una funcion con el mismo nombre que una variable declarada al nivel de la clase. En este caso, la variable declarada al nivel de la clase queda oculta por la variable interna de la funcién. Nivel de acceso El ambito de las variables se combina con su nivel de acceso; esto determinara qué fragmento de cédigo va a ser leido y escrito en la variable. Un conjunto de palabras clave nos permiten controlar el nivel de acceso de una variable; estas se utilizan en la declaracién y deben ser ubicadas delante del tipo de datos que corresponde a la variable. Estos niveles de acceso solo se usan para efectuar la declaracion de una variable en el interior de una clase, por lo tanto, no se pueden usar en el interior de un método. A continuacién, listaremos los niveles de acceso de las variables: www.redusers.com 55 3. ELEMENTOS DEL LENGUAJE JAVA, ees Donde la clase esta definida es donde se utilizar la variable. private String nombre; protected La variable se utiliza en la clase donde esta definida, en las subclases de esta clase y en las clases que forman parte del mismo paquete. protected String codigo; La variable es accesible desde cualquier clase sin importar el paquete. public String nombre; OTT) La variable es accesible desde todas las clases que forman COCs parte del mismo paquete. int numi, num2; ‘Se usa para transformar una declaracién de variable de instancia en declaracién de variable de clase (utilizable sin que exista una instancia de la clase). static float impuesto; Ciclo de vida El ciclo de vida de una variable nos dira el tiempo que ella estara disponible en un programa. Para una variable que ha sido declarada en una funcion, el ciclo de vida de la variable terminara cuando la funcién deje de ejecutarse. En cuanto termine la ejecucién del procedimiento o de la funcién, la variable se eliminara de la memoria y volverd a ser creada con la préxima llamada a la funcién. Una variable declarada en el interior de una clase puede ser utilizada mientras esté disponible una instancia de la clase, pero las variables declaradas con la palabra clave static seran accesibles todo el tiempo. 56 www.redusers.com aes JAVA CONSTANTES A diferencia de las variables, las constantes son valores que no se pueden modificar durante la ejecucién del programa. Su mayor utilidad se relaciona con la posibilidad de definir valores que siempre seran iguales durante la ejecucién del programa; para cambiar su valor debera hacerse directamente en el cédigo. Ejemplos de constantes son el IVA 0 el valor de PI. En Java, cualquier tipo de dato puede ser una constante. Para definirla debemos escribir la palabra static final antes del tipo de dato, y luego, el nombre de la constante en maytisculas. Para entender cémo se implementan las constantes, veamos un ejemplo sencillo public class UsoDeConstantes { public static void main(String[] args) { static final double IVA = 0.21; int producto=400; double resultado= producto*IVva; System.out .print1n("El IVA del producto es “tre— sultado) ; d Clases en Java Una clase es a unidad fundamental de programacién en Java. Se trata de una especie de plantilla 0 molde en el que escribiremos los atributos y el comportamiento de los abjetos. Cuando ejecutamos un programa, este crea y manipula los objetos en concreto, siguiendo el modelo de la Programacion Orientada a Objetos o POO, que es uno de los principales paradigmas de desarrollo de software en la actualidad. www.redusers.com 57 3. ELEMENTOS DEL LENGUAJE JAVA, ees En el cdigo anterior hemos declarado la constante IVA. Notemos que difiere de la declaracién de variables en dos puntos: escribimos la palabra static final, y el nombre de la constante se recomienda en mayiisculas. Fuera de estas consideraciones iniciales, el uso de las constantes es idéntico al de las variables. OPERADORES Se trata de palabras clave del lenguaje, que nos permiten ejecutar operaciones con el contenido de ciertos elementos, por ejemplo, variables, constantes, valores literales 0 retornos de funciones. Si combinamos uno 0 varios operadores y otros elementos, formaremos una expresi6n. Estas expresiones se evaliian en el momento en que se ejecutan, teniendo en cuenta los operadores y los valores asociados. Java nos ofrece dos tipos de operadores: unarios (usan un solo operando) y binarios (utilizan dos operandos). Otro punto por considerar es que el operado puede ir antes 0 después de la variable, es decir, en forma prefijada o posfijada. Veamos un ejemplo: int i; i=2; ‘System. out .printIn (i++); Este cédigo mostrara 2 como resultado, pues el incremento se realiza después de la utilizacién de la variable con la instruccién printin, Sin embargo, en el siguiente ejemplo resultara algo distinto int 4; System. out .print1n (++i); Este codigo mostrara 3 como resultado, porque el incremento se ejecuta antes que la instruccién printin. 58 www.redusers.com oes JAVA En Java podemos dividir los operadores en siete categorias principales’ OPERADORES UNARIOS En esta categoria encontramos los siguientes operadores: 5 valor negativo - complemento a uno ++ incremento decremento ! negacién, solo se puede utilizar en las variables del tipo boolean o en comparaciones del tipo booleanas OPERADORES DE ASIGNACION El operador = es el tnico en esta categoria. Se lo puede combinar con un operador aritmético logico 0 binario, por ejemplo, x22 que es equivalente a x=x42. OPERADORES ARITMETICOS Nos permiten efectuar célculos en el contenido de las variables, encontramos las siguientes opciones: + suma o resta * muttiplicaci6n 1 division % médulo o resto entero de la divisién OPERADORES BIT A BIT Operan solo con enteros y trabajan a nivel de bit. & y binario | o binario a o exclusivo > desplazamiento a la izquierda (divisién por 2) << desplazamiento a la derecha (multiplicacién por 2) www.redusers.com 59 3. ELEMENTOS DEL LENGUAJE JAVA eas OPERADORES DE COMPARACION Se trata de operadores utilizados en las estructuras de control. Devolveran un valor de tipo boolean en funcin del resultado de la comparacién efectuada; luego la estructura de control utiizard este valor. igualdad desigualdad < menor que (variante <=) > mayor que (variante >=) instanceof comparacién del tipo de variable con el tipo indicado OPERADORES DE CONCATENACION El operador + (mas) utilizado en la suma se usa para unir cadena de caracteres 0 también para unir un String a una variable, por ejemplo: System. out .print1n("El precio del producto es “+precio) ; OPERADORES LOGICOS Se trata de operadores que permiten combinar las expresiones en estructuras condicionales o en estructuras de iteracié & y logico I 0 logico n © exclusivo ! negacién && y l6gico; a diferencia del & simple, este operador evaluara solo sila primera condicién es falsa r 0 légico; a diferencia del | simple, este operador evaluard solo sila primera condici6n es falsa. g Divisi6n por cero Un error que sabremos subsanar es la division por cero; se trata de un tipico error en tiempo de ejecucién. Cuando se produce una excepcién, se muestra en la pantalla un mensaje de error y finalza la ejecucién del programa. 60 www.redusers.com ees JAVA Orden de evaluacién de los operadores Es importante considerar el orden en que se ejecutarn los operadores cuando se encuentran combinados, pues se evaltian en un orden muy preciso. Los incrementos y decrementos prefijados se ejecutan primero: luego, las operaciones aritméticas; le siguen las operaciones de comparacién; después, los operadores légicos y, finalmente, las asignaciones Los operadores aritméticos poseen un orden de evaluacion especifico dentro de una expresién, vedmoslo a continua > Negacion (-) > Multiplicacion y division (*, ) » Division entera () > Médulo (%) » Suma y sustraccién (+, -), concatenacién de cadenas (+) Si las operaciones presentan paréntesis, existe prioridad para las expresiones dentro de ellos. En una expresi6n, podemos utilizar tantos niveles de paréntesis como deseemos; sin embargo, es importante que la expresion contenga tantos paréntesis de cierre como de apertura, porque de lo contrario, el compilador generara un error. Los literales En Java, un literal es un valor que suele aparecer dentro de un programa; puede ser de tipo entero, real, lgico, caracter, cadena de caracteres 0 un null Por ejemplo, 12, 13.6, 3.14161722D, "Users”, null, ‘@’, “Presione \"Enter\” para continuar”. Hay que aclarar que los tipos enteros pueden expresarse en decimal (base 10), octal (base 8) y hexadecimal (base 16), mientras que los de tipo real pueden terminar en E seguida de un exponente (positivo 0 negativo), por ejemplo, 14E-3. www.redusers.com 61 3. ELEMENTOS DEL LENGUAJE JAVA, ees EXPRESIONES REGULARES Una expresién regular es un patrén que describe a una cadena de caracteres. Se trata de elementos que se usan desde hace afios en otros lenguajes de programacién, como Perl. Desde la versién 1.4 del JDK, se incluye el paquete javatil.regex, que proporciona una serie de clases para poder hacer uso de este tipo de expresiones en Java. Veamos algunos casos en donde se pueden utilizar: Cuando deseamos que una fecha ingresada por el usuario cumpla con un patrén espectfico, por ejemplo, dd/mm/aaaa. Para comprobar que un DNI esta formado por 8 cifras, un guion y una letra, 0 que una direccién de correo electronico es valida. Para asegurar que una contrasefia cumple con determinadas condiciones ‘© que una URL sea valida. También podemos utilizar las expresiones regulares para comprobar cudntas veces una secuencia de caracteres determinada se repite dentro de la cadena. En este caso, el patron se busca en el String de izquierda a derecha; cuando se determina que un caracter cumple con el patrén, este caracter ya no vuelve a intervenir en la comprobacion. Simbolos comunes Dentro de las expresiones regulares podemos utilizar muchos simbolos; gracias a ellos es posible representar elementos u operaciones dentro de una expresi6n. Los conoceremos en la Tabla 2. Simbologia en Java Mucha de la simbologia que utiliza el lenguaje Java proviene de C y posteriormente de C++, por lo que, a los conocedores de ambos lenguajes, se les hara mas facil enfrentar la programacién, 62 www.redusers.com JAVA Indica el inicio de un String, en este caso debe contener la expresion al principio. [abe] Representa una defnicién de conjunto, el String debe contener a, b 0. Aexpresion Indica negaci6n, en este caso el String debe contener cualquier caracter titel excepto a, b 0. | Tabla 2. Simbolos utilizados en expresiones regulares. Por ejemplo, para encontrar la frase ‘encuentro frase’, utilizamos el siguiente cédigo: (\W]*) encuentzo\frase (\W|$) En este caso, \W coincide con cualquier carécter que no sea una letra, un nero o un guion bajo. Impide que la expresion regex tenga en cuenta los caracteres que aparezcan antes o después de la frase. En cambio, si buscamos una coincidencia con cualquier palabra o frase de la lista siguiente: papa — batata - remolacha — zanahoria, haremos esto: (24) (\w1*) (papa|batata| remo2acha | zanahoria|\sialfrutas) wl) www.redusers.com 63 3. ELEMENTOS DEL LENGUAJE JAVA Metacaracteres Los metacaracteres también pueden formar parte de las expresiones regulares. Se trata de un conjunto de caracteres con formatos especiales, por ejemplo, alfanuméricos, digitos y signos de puntuacién, entre otros. ” METACARACTERES METACARACTER DESCRIPCION « WW Digito, equivale a [0-9]. \s Espacio en blanco, equivale a [\t\ntxOb\\f]. Ne Una letra mayuiscula 0 miniscula, un digito o el cardcter _, equivale a [a-2A-20-9_], b Limite de una palabra. Tabla 3. Metacaracteres utilizados en las expresiones regulares. En Java debemos usar una doble barra invertida \\, por lo tanto, para utilizar \w, es preciso escribir \Ww. Si vamos a indicar que la barra invertida es un caracter de la expresion regular, sera necesario escribir W. Veamos un ejemplo de como se usan los metacaracteres: String a = “Ejemplo, de. separar- String+ por* caracter”; //eara usar los caracteres puede usar esta expresién regular: String[] parts = a.split ("[\\W]”); for (String d:parts) ( ‘System. out .printin(*==5" +i); g www.redusers.com eee JAVA Cuantificadores Los cuantificadores son elementos utilizados para controlar la cantidad de repeticiones o coincidencias de un patron que hemos definido previamente. Se especifican luego de los corchetes (J) en los que predefinimos los caracteres permitidos que podemos inicializar, luego de haber indicado entre Ilaves ({}) la cantidad de veces que puede repetirse el patron por buscar. « = CUANTIFICADORES RESION DESCRIPCION oo Indica que lo que va justo antes de las laves se repite X veces. Indica que lo que va justo antes de las llaves se repite minimo X veces y XY} maximo Y veces. También podemos poner {X,} indicando que se repite un minimo de X veces sin limite maximo. Indica 0 0 mas veces. Equivale a {0,}. + Indica 1.0 mas veces. Equivale a (1). c Indica 0 0 1 veces. Equivale a {0,1}. Tabla 4. Simbolos usados en cuantificadores. Veamos un ejemplo sobre el uso de los cuantificadores, para ello crearemos un patron regex, que nos permita buscar niimeros hexadecimales: 0 [xx] [0-9a-FA-F] En este caso deseamos encontrar un conjunto de caracteres en el que el primer caracter sea el 0, el segundo caracter sea una x 0 una X, el tercer cardcter sea un digito de 0a 9, una letra de aa fo una maytiscula de Aa F. La clase String Muchas veces String es confundido con un tipo de dato, sin embargo, no lo es. Se trata de uno de los casos extrafios de este lenguaje, ya que, al ser una clase, vamos a utlizarla para tipficar las variables que contendrén una cadena de caracteres, es decir, textos. Por esta raz6n, la primera letra debe escribirse en mayusculas. www.redusers.com 65 3. ELEMENTOS DEL LENGUAJE JAVA, ees METODOS En Java, un método es un conjunto de instrucciones definidas dentro de una clase; realiza una determinada tarea y puede ser invocado mediante un nombre. En esta seccién aprenderemos cémo debemos declarar y utilizar métodos; de esta forma, podremos facilitar el disefio, la implementacién, la operacién y el mantenimiento de programas extensos. Veamos algunos ejemplos de métodos: Math.pow(): adecuado para hallar la potencia de un numero. Math.sqrt(): para hallar la raiz de un numero. Character.isDigit(): permite determinar si un caracter es digito. System.out.printin(): adecuado para imprimir resultados. Es importante saber que, cuando se llama a un método, la ejecucion del programa pasara al método; pero, cuando este acaba, la ejecucién continuara a partir del punto donde se produjo la llamada. Construccién de métodos Como sabemos, la mayoria de los problemas son muy extensos, por lo tanto, las soluciones que podemos implementar a nivel de software también seran extensas. Para enfrentar esto, es posible crear programas modulares, pues, si dividimos un programa en pequefas piezas 0 médulos, lograremos que un programa extenso sea mas entendible. Las ventajas relacionadas con la modularidad y la construccién de métodos tienen que ver con la posibilidad de reutilizar el codigo (refactorizacién); esto permite que, en lugar de escribir el mismo cédigo varias veces, solo hagamos una llamada al método adecuado. En Java, un método siempre pertenece a una clase. Como sabemos, todo programa Java posee un método llamado main; se trata del punto de entrada al programa y, también, el punto de salida. Para construir métodos, hay que considerar que siempre debemos implementarlos fuera del main. www.redusers.com ea JAVA La estructura general de un método Java es la siguiente (Modificador de acceso] [Otros modificadores] Valor_retorno nombreMetodo (pardmetros) ( Instruccion [zeturn valor;] Los elementos que aparecen entre corchetes son opcionales, veamos su sintaxis en detalle ITIiPeCt ies y Se trata de un elemento opcional que determina el tipo de acceso al método. De aa Este elemento se encarga de indicar el tipo del valor que devuelve ‘el método; siempre hay que indicar este tipo de valor y, si el método no dewuelve ningtin valor, debemos indicarlo mediante void. CCU Se trata del nombre que se le da al método. Para crearlo, hay que seguir las mismas normas que aprendimos ara crear variables. ir Se trata de un elemento opcional que se ubica después del nombre del método y siempre entre paréntesis. Estos pardmetros 0 argumentos son los datos de entrada que recibe el método para operar. Un método puede recibir cero 0 més argumentos y, para cada argumento, debemos especificar su tipo. Los paréntesis ‘son obligatorios, aunque estén vacios. Se utliza para devolver un valor La palabra clave return va seguida de una expresién que seré evaluada para saber el valor de retorno; esta expresin puede ser compleja o ser simplemente el nombre de un objeto, una variable de tipo primitivo o una constante. El tipo del valor de retorio debe coincidir con el tipo dewelto que se ha indicado en la declaracién del método. Si el ‘método no devuelve nada (void), a instruccién return es opcional. www.redusers.com 67 3. ELEMENTOS DEL LENGUAJE JAVA, ees Un método tiene un iinico punto de inicio, representado por la lave de inicio { . Su ejecucién termina cuando se llega a la lave final } 0 cuando se ejecuta la instrucci6n return. Esta instruccién puede aparecer en cualquier lugar dentro del método, no necesariamente al final Los pasos que debemos seguir para implementar un método son los. siguientes Hz) 1. Describir lo que el método debe hacer. i 2. Determinar las entradas correspondientes. Ea 3. Defnir los tipos de las entradas. PBB + Determinar et tno det valor ce retorno. a 5. Escribir las instrucciones que corresponden al cuerpo del método. PERI © Probar et metodo meciante el iseno de distintos casos de prueba. * * Suma de dos ntimeros enteros ” package sumanumeros, import java.util.*; public class SumaNumeros { public static void main(string[] args) ( Scanner entrada = new Scanner (System. in) ; int numerol, numero2, resultado; system. out .print (“Ingrese el primer niimero: “); numerol = entrada.nextInt (); System. out .print (“Ingrese el segundo nimero: “); numero2 = entrada.nextint (); resultado = sumar(numerol, numero2); //sumax es el método System. out .printn("Suma: “ + resultado); 68 www.redusers.com eS JAVA ) public static int sumar(int a, int b)( int ¢; e=atn; return c; Mientras escribimos el cédigo, notaremos que sumar marcara un error; se trata de un método que atin no se ha implementado. E] método se Hama sumar y recibe dos nimeros enteros ay b como argumentos. En la llamada al método, los valores de las variables numerol y numero2 se copian en las variables ay b; el método suma los dos niimeros y guarda el resultado en la variable ¢. Finalmente, devuelve, mediante la instruccién return, la suma calculada, Para indicar al método que no devuelva nada, debemos escribir void en lugar de static. RESUMEN CAPITULO 03 En este capitulo hicimos una descripcién completa de los elementos fundamentales que encontramos en el lenguaje Java, esto nos servira para contar con la base de conocimientos que necesitamos para no tener falencias en nuestros codigos y también para entender para qué sirven los elementos en los bloques de cédigo y que rol cumple cada uno de ellos. ‘demas, vimos en detalle las expresiones regulares, su uso y los elementos que podemos utilizar para crearlas y, finalmente, realizamos una completa introduccién a los métodos, que son muy importantes para el inicio de la construccién de las clases. www.redusers.com 69 3. ELEMENTOS DEL LENGUAJE JAVA Es Actividades 03 Test de Autoevaluacion 1. Qué importancia tienen los tipos de datos en un programa? 2. Cuando es necesario el uso de las constantes? 3. :Qué son las expresiones regulares? 4. Mencione algunos ejemplos de cuentificadores 5. {Qué son los literales en Java? 6. num2) { System. out .printin(numl +" es el mayor”); 1% www.redusers.com aes JAVA Jelset System. out .print1n(num2 +" es el mayor”); + y + Una vez que ejecutemos este cédigo, dependiendo de los valores que ingresemos mediante el teclado, obtendremos el mayor de ellos. Estructura condicional anidada Una estructura es anidada cuando, en la estructura condicional del verdadero o falso, se agregan una 0 mas estructuras condicionales. FALso \VERDADERO ————_ CONDICION —_| v FALSO__<¢onpicibw> MEROADERO v ‘OPERACIONES ‘OPERACIONES J Figura 5. Representacidn grafica de las estructuras condicionales anidadas, Operador ternario En informatica un operador ternario (a veces incorrectamente llamado operador terciario) es un operador que toma tres argumentos. Este operador puede pasar varias lineas de cédigo a una sola linea en lenguajes que puedan usarlo, Puede sustitur al ifelse que va tener una sintaxis resultado=condicion ? valor_si_se_cumple : valor_si_no_se_ cumple, lo cual reduce de tres lineas a una. www.redusers.com 1 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ees Para ejemplificar este tipo de estructuras, crearemos un programa que pedira el ingreso de tres notas de un estudiante, luego calculara el promedio e imprimira alguno de los siguientes mensajes: eo Ea Siel promedio es >=4 y <7 mostrar Diciembre. [EEE si crore es <4 mostrar besaprabado, mostrar Aprobado. import java.util. Scanner; class EstructurasCondicionalAnidadal { public static void main(string argI1){ int nota, nota2, nota3; Scanner entrada=new Scanner (System. in) ; System.out .print1n("Ingrese la primera nota: “); notal = entrada.nextint (); System.out.print1n("Ingrese la segunda nota: “); nota? = entrada.nextInt (); System. out .printIn("Ingrese la tercera nota nota = entrada.nextInt (); float promedio=1.0£* (notal+nota2+nota3) /3; 4€ (promedio>=7) { System. out .print1n("Aprobado”) ; Jeiset Af (promedio>=4) { System. out .printin ("Diciembre") ; jelset System. out .print1n("Reprobado”) ; ) d 8 www.redusers.com os JAVA Estructura condicional compuesta (if - else if) Esta estructura nos permite indicar otra condicién cuando no se cumple la condicién inicial; esto hace que el cédigo sea mas especifico Veamos un ejemplo en el que aplicamos esta estructura: import java-util.Scanner; class EstructurasCondicionalcompuesta2 { public static void main(String arg[]){ int num; Scanner entrada=new Scanner (System. in); =) un valos System. out . printin (“Ingre num = entrada.nextInt () ; if (num 100) ( System.out .print1n("El nimero es mayor que 100 * + num) ; Jelse if (num>=70) ( System.out .print1n("E1 némero “tnum+ “ es mayor o es igual que 70”); Jelse{ System.out.print1n("E1 némero “+num+ “es menor que 70") y } ) Estructura condicional de selecci6n multiple (switch) Esta estructura condicional nos permite asignar un valor (que puede ser una variable) y una lista de casos; si se cumple alguno de los casos, se ejecutan las instrucciones asociadas; en cambio, si no se cumple ningiin caso, es posible indicar la ejecucién de acciones predeterminadas. Normalmente, se utiliza para indicar la presencia de un error mediante la presentacién de un mensaje. Veamos un cédigo de ejemplo: www.redusers.com 9 4, ESTRUCTURAS DE CONTROL Y ARREGLOS Sas import java.util.Scanner; class EstructurasSeleccionMultiple { public static void main(string arg{1)( String dia="Lunes”; System.out .print1n(“Ingrese un dia de 1a semana”); String = entrada.next (); switch (dia) ( case “Lunes”: System. out .print1n("Hoy es “tdia); break; case “Marte System. out .print1n ("Hoy es “tdia); break; case “Miércoles” System. out .printin("Hoy es “tdia); System. out .print1n("Hoy es “tdia) ; break; case “Viernes” System. out .printin("Hoy es “tdia); break; case “Sébado”: System. out .print1n("Hoy es “tdia); break; case “Domingo’ System. out .print1n("Hoy es “+dia); break; default System. out .print1n ("No ha ingré dato correcto”) ; 80 www.redusers.com ees JAVA La sentencia switch recibe un valor para analizar, que comparara con un literal del mismo tipo en cada caso. Si son iguales, se ejecutara el cOdigo asociado, y la estructura se detendra mediante la etiqueta break Si no coincide en ninguno de los casos, se ejecutara la etiqueta default. Estructuras iterativas Las estructuras iterativas se relacionan con operaciones que se deben ejecutar un nimero determinado de veces. El conjunto de instrucciones que se ejecuta cierto ntiimero de veces se llama ciclo, bucle o lazo. Cuando hablamos de iteracién, nos referimos a cada una de las diferentes pasadas 0 ejecuciones de todas las instrucciones contenidas en el bucle; para salir de este bucle, se indica una condicién por cumplir. Estructura while Esta estructura algoritmica se ejecuta mientras la condicion evaluada resulte verdadera. Se evalia la expresién booleana y, si es cierta, se ejecuta la instruccién que especifiquemos. Luego se vuelve a evaluar la expresién booleana; si todavia es cierta, se ejecuta de nuevo el cuerpo 0 conjunto de instrucciones. Este proceso de evaluacion de la expresion booleana y la ejecucion del cuerpo se repite mientras la expresion sea cierta. -————> | FALSO CONDICION a OPERACION(ES) | oc Figura 6. Diagrama de flujo de la estructura while. www.redusers.com 81 4, ESTRUCTURAS DE CONTROL Y ARREGLOS ees La sintaxis de la estructura while es la siguiente while (condicion) ( instrucciones (cuerpo) ; Veamos un ejemplo en el que usaremos la estructura while para imprimir en pantalla los 100 primeros nimeros: public class EstructuraWhile { public static void main(string[] args) { int x=1; while (x<=100) { System. out .print (x) System. out .print(" - “); x = xt; Como vemos, x vale 1 al principio, se comprueba la condicién, como Les menor o igual que 100, entra en el bucle para ejecutar las instrucciones, y asi sucesivamente hasta que x vale 101, ya que 101 no es menor o igual que 100. Debemos considerar que, si xno fuera modificado, nunca se saldria del bucle. Fases de un programa Muchos programas pueden dividirse en tres fases: una fase de inicializacién (en la que se inicializan las variables), una fase de procesamiento (en la que se ingresan los valores de los datos y se ajustan a las variables del programa) y una fase de terminacién (que calcula y produce el efecto deseado del programa). También es necesario considerar que los programas en Java carecen de vida propia sin la implementacién de una clase y la creacién de los objetos adecuados. 82 www.redusers.com as JAVA Estructura for El ciclo for es ilar a while, pero, ademas de la condicién, incluye la inicializacién de una variable y un incremento 0 decremento de esa variable. En principio no es necesario que incluya estas tres partes, por lo que podemos inicializar o incrementar varias veces. > Figura 7. Diagrama de flujo de la estructura for. La sintaxis de esta estructura es la siguiente: for (inici: instruccions izacion; condicion; incremento) ( ‘Veamos el mismo ejemplo que presentamos para while, de esta forma entenderemos como se construye una estructura for: public class EstructuraFor ( public static void main(string[] args) { Ant x=1; for(x=1; x<=100; x++) ( System. out .print (3) ; www.redusers.com 83 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ea System. out .print(" - “); x = xt; Estructura DO WHILE Esta estructura ejecutara, al menos una vez, su bloque repetitivo, a diferencia de las estructuras anteriores, que podian no ejecutar el bloque. —————— | VERDADERO Figura 8. LL (CONDICION) Diagrama de flujo de la estructura DO... WHILE. i FALSO La sintaxis de esta estructura es la siguiente: dot intrucciones }while (condicion) ; Veamos un ejemplo de esta estructura, para lo cual crearemos un cédigo que nos pedira introducir un nimero entre 1 y 10 Amport java.util.Scanner; public class EstructuraDowhile { public static void main(string[] args) ( 84 www.redusers.com aes JAVA Ant num; Scanner entrada=new Scanner (System. in); dof System. out .print1n("Ingrese un némero entre 0 y 10: "); num = entrada.nextint (); ) while (num>=10||num<0) ; System. out .print1n("El némero ingresado “+num) ; En este caso debemos ser cuidadosos con la condicién de salida. Por ejemplo, si escribimos 5 (5>=10 0 5<0), devolvera falso; por otra parte, si escribimos -1 (-1>=10 0 5<0), devolvera verdadero, haciendo que vuelva a pedir un nimero. Estructura for each Con este ciclo es posible recorrer estructuras mas complejas, como listas y determinadas colecciones (que veremos en el Volumen 03 de este curso). A estas estructuras se las denominan iterables, ya que tienen un mensaje del tipo iterator que devolvera la instancia de iterator. En Java no existe la palabra clave foreach, pero podemos lograr el resultado deseado usando for, por esta razon hablamos de for each o for extendido. La sintaxis de esta estructura es la siguiente: For extendido En las titimas versiones de Java se introdujo una nueva forma de uso del for, ala que se denomina “for extendido” o “for each’. Esta forma de uso del for, que ya existia en otros lenguajes, facta el recorrido de objetos existentes en una coleccién sin necesidad de definir e! nimero de elementos a recorrer. Fue incorporado a partir de Java 5 y solventa de una manera sencilla el recorrido en estructuras como arrays 0 en colecciones. www.redusers.com 85 4, ESTRUCTURAS DE CONTROL Y ARREGLOS Es for (TipoBase variable: ArrayDeTiposBase) { intrucciones NO GHAY ELEMENTOS. PARA VER? Se Ls ras SEUSS Diagrama de flujo de la estructura A continuacién presentamos un ejemplo que nos permitira ver la implementacion de for each: class EstructuraForeach { public static void main(String args{]) { String [] arrstr = {~1”, "2", “37, “4","5"); for (String elemento : arrstr) { System. out .print1n (elemento) ; 0 observamos que se unifica la forma de listar los elementos y, de esta manera, se simplifica el cédigo. Sin embargo, podemos lograrlo usando solo for: for (int elemento=0; elemento +suma) ; System. out .print1n("El factorial es: ° +fact); El resultado de este cédigo es el siguiente: La suma es 15 y el factorial 120. www.redusers.com 89 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ees Uso de break para salir del bucle Si empleamos la instruccién break, podemos forzar la salida inmediata de un bucle omitiendo cualquier cédigo en su cuerpo, asi como la prueba de condicién del bucle. Esto terminara el bucle, y el control del programa se reanudara en la instrucci6n siguiente a él. Veamos un ejemplo: public class ForVariante6( public static void main(String args[]) ( int num= 100; //Recorre el bucle si i*i es menor que num for(int i=0;icnum; i++) ( if(i*i>=num) break; //termina el bucle si iti >=100 System. out .printin(i+" “); y System. out .print1n(*bucle completo.”) Una vez que ejecutemos este programa, veremos que se generara la siguiente salida: 0123456789 bucle completo. Uso de break como goto La instruccién break puede emplearse por si sola para proporcionar una forma actual de la instruccién goto. Java no cuenta con una instruccin goto porque esta proporciona una manera no estructurada de modificar el flujo de ejecucién del programa. El punto flotante en los bucles Los valores con punto flotante suelen traer problemas al ser aproximados. Controlar ciclos con variables con estos valores puede producir valores imprecisos del contador y pruebas de terminacién no deseadas. Por esta razon, es necesario que procuremos utilizar nimeros enteros para controlar los ciclos del contador. 90 www.redusers.com aes JAVA Los programas que llevan a cabo un uso extenso de goto suelen ser dificiles de comprender y de mantener. Sin embargo, existen ciertos lugares en los que goto resulta itil y legitimo, por ejemplo, puede ser litil al salir de conjuntos profundamente anidados de bucles. Para manejar estas situaciones, Java define una forma expandida de la instrucci6n break, la que nos permite salir de uno o mas bloques de cédigo. No es necesario que estos bloques sean parte de un bloque o un switch, puede tratarse de cualquier bloque. Ademas, se puede especificar con precision dénde se reanudara la ejecucién, pues esta forma de break funciona con una etiqueta, La forma general de la instruccién break etiquetada se muestra a continuaci6n: public class ForVariante7{ public static void main(String args[]) { hech for(int i=0;i<10; i++) ( for(int 5=0;5<10;5++ ){ for(int k=0;k<10;k++ ){ System. out .printin(kt” "); 4£(ke=5) break hecho; //salta a hecho ) System.out .print1n(Tras bucle k”);//no se ejecuta y System. out .printin(“fras bucle 3”);//no se ejecuta ) System.out .print1n("Tras bucle i”); + i El uso de continue Es posible forzar una iteracién temprana de un bucle omitiendo la estructura de control normal del bucle. Esto se logra usando la instruccién continue, la que impone la ejecucién de la siguiente iteracin del bucle omitiendo cualquier cédigo entre si mismo y la expresién condicional que controla el bucle. Por lo tanto, continue es esencialmente el complemento de break. Por ejemplo, el siguiente www.redusers.com 1 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ees programa usa continue como ayuda para imprimir los ntimeros pares entre el 0 y el 100. public class ForVariantes( public static void main(String args{]) ( Ant i; //%mprime némeros pares entre 0 y 100 if((482)!=0) continue; //itera System. out .print1n(i); Solo se imprimen los ntimeros pares, porque uno no causaria que el bucle se iterara antes, omitiendo la llamada a printin(). En los bucles while y do while, una instruccion continue hara que el control vaya directamente a la expresién condicional y luego siga el recorrido del bucle. En el caso de for, se evaltia la expresin de iteracion del bucle, luego se ejecuta la expresién condicional y, mas tarde, se sigue el bucle. Bucles externos Al igual que con la instruccién break, continue puede especificar una etiqueta para describir en cual bucle incluido se debera continuar. Aqui se presenta un programa de ejemplo que usa continue con una etiqueta public class ForVariante9( public static void main(String args{]) ( for(int 4=1;4<10; 14+) System. out .print1n("\nPaso de bucle externo “+it *, Bucle interno: “); for(int j=1;5<10; 5+4){ = www.redusers.com aes JAVA if (j==5) continue bucl eno; //continua el bucle externo System. out .print (j+ " - “); ) d ? Bucles anidados Como vimos en los ejemplos anteriores, es posible anidar un bucle dentro de otro. Los bucles anidados se usan para resolver una amplia variedad de problemas de programaci6n, asi que son parte esencial de esta. Veamos el siguiente ejemplo para encontrar los factores de los ntimeros del 2 al 100: public class ForVariantel0( public static void main(String args[]) { //Imprime los factores del 2 al 100 for(int i=2;i<=100; i++) ( System. out .printin("Factores de “Hit”: “); for(int j=2;5 Se identifica por un Gnico nombre de variable. > Sus elementos se almacenan en posiciones contiguas de memoria. > Se accede a cada uno de sus elementos en forma aleatoria. TT T Primer Segundo Ultimo elemento elemento elemento Figura 11. Gréfico que nos muestra el funcionamiento de un arreglo de una dimensién o vector. 94 www.redusers.com os JAVA La sintaxis de un vector es la siguiente: Tipo_dato nombre_array[]=new tipo_dato[tamafio] ; Elementos o 1 2 3 4 5S 6 7 8B 9 Figura 12, Ejemplo grafico de un vector en el que verificamos el uso de indices para referenciar a los elementos. En Java debe empezar por cero (0). Veamos un ejemplo en el que observaremos como se inicializa € instancia una variable dentro de los arreglos: int num[]=new int [5]; Otra forma de escribirla es la siguiente: int mum[J=(5, 6, 5, 2, 3); Los arreglos se rellenan en forma automatica. Por ejemplo, si se trata de un array de int, se completan con 0; si es un array de String, se rellenan con nul public static void main(String{] args) { //Pefinimos un array con 10 posiciones int num[]=new int [10]; num[0]=5; www.redusers.com 5 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ees num[1]=9; System. out .print1n(num[0]); System. out .printin(num[1]); Para recorrer un array debemos usar un bucle, en el que lo nico que cambie sera la posicion. Veamos un ejemplo de como rellenar un array de 10 posiciones con miiltiplos de 5: public class Arrayl { public static void main(String[] args) { //Pefinimos un arreglo con 10 posiciones int num[]=new int [10]; //Recorremos el array //axzay.lenght indica 1a longitud del arreglo, en este caso, devuelve 10 for (int i=0, multiplo=5;icnum.length;it+, mult iplo+=5) { num[i]= multiplo; System. out .printin (num[i]); Como vemos en el ejemplo anterior, para saber la longitud del array usamos el atributo length. Matriz El array bidimensional 0 matriz se puede considerar como un vector de vectores. Por consiguiente, se trata de un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es significativo yen el que se necesita especificar los subindices para que se identifique cada elemento del arreglo % www.redusers.com aes JAVA Figura 13. Representacién grafica que indica el funcionamiento de tun arreglo de dos dimensiones 0 matriz. i Columna 1 Columna 2 Columna 3 Columna 4 Columna 5 Columna 6 Si se visualiza un arreglo unidimensional, se puede considerar como una columna de datos; un arreglo bidimensional es un grupo de columnas. EI funcionamiento de las matrices suele ser un tanto abstracto, pues es necesario entender su uso practico. Elementos Figura 14. Ejemplo Mimatrie 9 grafico en el que vvernos que podemos 1 aproximarnos al uso préctico de una matrz. 2 a www.redusers.com 7 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ees Array multidimensional Un array multimensional retine dos o mas arrays unidimensionales; podemos definirlo de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones. En general, un array de n-dimensiones requiere que los valores de n-indices puedan ser especificados para identificar un elemento individual del array. Si cada componente de un array tiene n-indices, el array se dice que es solo de n-dimensiones, es decir, como si fuera una tabla. Este tipo de array se crea igual que un array unidimensional, solo hay que afiadir un corchete mas con un tamafo en la definicién del array. Punto Tiempo| 1 Zz 3 Figura 15. Ejemplo practico que nos presenta el funcionamiento de un arreglo con varias dimensiones. Veamos un ejemplo en el que definimos un array multidimensional: public static void main(string[] args) ( //Pefinimos un array de 3 filas x 5 columnas int array[][]= new int [3] [5]; //asignamos un 5 al array, en la fila 0 columna 1 array(0][1] = 5; 8 www.redusers.com aes JAVA Siguiendo esta dindmica, podemos crear arreglos tridimensionales © de cuantas dimensiones necesitemos. Con esto ahorraremos espacio en la codificacién y en la memoria. En el ejemplo anterior, nos hemos. ahorrado la declaracién de 15 variables. Ordenar un array La forma de ordenar un array es muy importante a la hora de trabajar con estos elementos. Hay varias maneras de hacerlo, tanto con numeros como con cadenas; a continuacién las conoceremos. Intercambio Consiste en comparar el primer valor con el resto de las posiciones posteriores, cambiando el valor de las posiciones en caso de que el segundo valor sea menor que el primer valor comparado. Veamos un ejemplo utilizando nameros public static void intercambio(int lista[]){ //¥saremos un bucle anidado for(int ji< (Lista. length-1) ;i++) { for(int j=it1;jlistal3]) ( //aqat intercambiamos los valor int variableauxiliar=lista[i]; Los arreglos y la memoria Los arreglos ocupan espacio de memoria y, al igual que los demas objetos, se crean con la palabra clave new. También debemos especificar el tipo de cada elemento y el nlimero de ellos que se va a requerir. Esta expresién dewuelve una referencia que puede almacenarse en una variable tipo arreglo. Recordemos la importancia que tiene el uso de la memoria en los programas; aunque Java hace uso de un garbage, hay que tender a ser ahorrativos con él www.redusers.com 9 4, ESTRUCTURAS DE CONTROL Y ARREGLOS: ees lista[i}=1ista(s]; lista[3]=variableauxiliar; zando cadenas: Ahora veamos un ejemplo uw! public static void intercambioTextos (String lista[]){ //9saremos un bucle anidado for(int i=0;i<(lista.length-1) ; i++) ( for(int j=it1; j0) { //Intercambiamos los valores String variableAuxiliar-lista[i]; lista[i]=lista[j]; Lista[4]=variableAuxiliar; d Burbuja Este método, conocido como bubble sort, consiste en comparar el primero con el segundo; si el segundo es menor que el primero, se intercambian los valores. Después, el segundo con el tercero y asi sucesivamente; cuando no haya ningun intercambio, el array estara ordenado. Este método tiene un inconveniente: mientras mas elementos haya que ordenar, mas tardara en hacerlo. Veamos un ejemplo de cédigo: public static void burbuja (int lista]){ Ant cuentaIntercambios=0; //Se usaré un bucle anidado y saldré cuando el arreglo esté ordenado 100 www.redusers.com aes JAVA for (boolean ordenado for (int i=0;ilistali+1])( //acé intercambiamos valore: int variableauxiliar=lista[i]; lista[i]=lista[i+1]; Lista [it1]=variableAuxiliar; //indicamos que hay un cambio ‘cuentaintercambios++; y //Si no hay intercambios if (cuentaIntercambios==0) { ordenado=true; es que est4 ordenado ? //Se inicializa la variable para que empiece a contar nuevamente ‘cuentaIntercambios=0; Quicksort Este método consiste en ordenar un arreglo mediante un pivote, que es un punto intermedio en el arreglo. En otras palabras, se ordenan pequefios trozos del arreglo: a la izquierda estan los menores a ese pivote y, a la derecha, los mayores a este. Después se vuelve a calcular el pivote de trozos de listas. Para usar este método debemos recurrir a la recursividad; pasamos como parametro el arreglo, su posici6n inicial y su posicién final. El uso de este método mejora el rendimiento aun teniendo muchos valores que ordenar. Veamos un ejemplo de su uso public static void quicksort (int listal{], int izq, int der){ Listal[ (i+3)/21; www.redusers.com 101 4, ESTRUCTURAS DE CONTROL Y ARREGLOS ees do { while (1istal[i]pivote) ( 3 d if (i<=5)1 int aux=listal [1]; listal[iJ]=listal (31; listal[j}=aux; att; 5 d while (i<=3); if (izac3){ quicksort (listal, izq, 3); ) if (i

También podría gustarte