You are on page 1of 148
PROGRAMACION EN LENGUAJES ESTRUCTURADOS Descarga de Material Adicional Este E-book tiene disponible un material adicional que complementa el contenido del mismo. Este material se encuentra disponible en nuestra pagina Web www.ra-ma.com. Para descargarlo debe dirigirse a la ficha del libro de papel que se corresponde con el libro electronico que Ud. ha adquirido. Para localizar la ficha del libro de papel puede utilizar el buscador de la Web. Una vez en la ficha del libro encontrar un enlace con un texto similar a este: “Descarga del material adicional del libro” Pulsando sobre este enlace, el fichero comenzara a descargarse. Una vez coneluida la descarga dispondra de un archivo comprimido. Debe utilizar un software descompresor adecuado para completar la operacién, En el proceso de descompresion se le solicitaré una contrasefia, dicha contrasefia coincide con los 13 digitos del ISBN del libro de papel (incluidos los guiones). Encontrara este dato en la misma ficha del libro donde descargé el material adicional. Si tiene cualquier pregunta no dude en ponerse en contacto con nosotros en la siguiente direccién de correo: ebooks@ra-ma.com PROGRAMACION EN LENGUAJES ESTRUCTURADOS JUAN CARLOS MORENO PEREZ re Ra-Ma’ Laley probibe Copiaro Imprimir este bro PROGRAMACION EN LENGUAJES ESTRUCTURADOS 1© Juan Carlos Moreno Pérez {© De la Edicion Original en papel publica por Etoril RA-MA ISBN de Eaicin en Papel: 978-84-9964-300-7 ‘Todos los derechos reservados © RA-MA, S.A. Eltoral y Publicaciones, Madrid, Espa MARCAS COMERCIALES. Las designaciones utilizadas por las empresas para distinguir sus_ productos (handware, software, sistemas operatives, ete) suelen ser marcas repistadas. RAMA hh intentado To largo de ‘ste libro'distinguir las marcas comerciales de los terminos descriptivos, siguiendo el estilo que utiliza el fabricane, sin intencin de infingit la mareay solo en beneficio del propietario de la misma, Los datos de los _jemplos y pantalla son fcticos ano ser que se especifique lo contri, RA-MA es una marea comercial registrade Se ha puesto el miximo empefo en oftecer al lector una informacion completa y precisa. Sin embargo, RA-MA Editorial no asume ninguna responsabilidad derivada de su uso ni tampoco de cualauierviolacion de patentes i ‘otras derechos de tereras partes que pudicran ocurir. Esta publicacién tiene por objeto proporcionar unos ‘conocimientos precsos y acteditados sobre el tema tratado, Su venta no supone para el editor ninguna forma de asistencia legal, administrativa o de ningn oto tipo. En caso de previsarseasesora legal u otra forma de ayuda ‘expert, deben buscarse los servicios de un profesional competent. Reservados todos los derechos de publicacin en cualquier idioma. Segiin lo dispuesto en el Cédigo Penal vigente ninguna parte de este libro puede ser reproducida, grabada en sistema de almacenamiento o trasmitida en forma alguna ni por cualquier procedimieto, ya sea electénico, mecinico, eprogrifico, magnético 0 cualquier otro sin autorizacion previa y por escrito de RAMA; su contenido ‘std protegido por la Ley vigente que establece penas de prision y/o mulls a quienes, intencionadamente reprodujeren oplagiaren, en todo o en pare, una obra lterara, artista 0 cientifica Editado por: RA-MA, S.A. Editorial y Publicaciones Calle Jarama, 33, Poligono Industral IGARSA 228860 PARACUELLOS DE JARAMA, Madrid ‘Telefono: 91 658 42.80, Fax: 91,662.81 39 ‘Corteoeletrénico: editorial@rama.com Inemet: s-rama es y nv a-ma com Maquctacin: Gustavo San Romén Borrueco Disefo Portada: Antonio Garcia Tomé ISBN: 978-84.9964-455-4 E-Book desarllada en Espa en septiembre de 2014 Dedicado a Aida Ruiz Sénchez. Indice. INTRODUCCION CAPITULO 1. METODOLOGIA DE LA PROGRAMACION. 13 1.1 PROGRAMACION ESTRUCTURADA .. 1.1.1 La estructura basiea de un programa, 1.2108 DATOS... 112.1 Tipos de datos simples. 1.2.2 Constantes y literales. 1.2.3 Variables 1.3 OPERADORES Y EXPRESIONES. 1.3.1 Operadores aritméticos 1.3.2 Operadores relacionales.. 1.3.3 Operadores légicos.... 1.3.4 Operadores unitarios 0 unarios 1.3.5 Operadores de bits... 1.3.6 Operadores de asignacién... 1.8.7 Precedencia de operadores.. 1.4 ESTRUCTURAS BASICAS (SECUENCIAL, CONDICIONAL, ITERATIVA)... 1.4.1 Estructura secuencial 1.4.2 Estructura condicional. 1.4.3 Estructura iterativa conn 1.4.4 Otros tipos de estructuras. oe 1.5 METODOS PARA LA ELABORACION DE ALGORITMOS. 1.6 RECURSIVIDAD CAPITULO 2. ESTRUCTURA DE DATOS... 2.1 ESTRUCTURAS ESTATICAS QAI Arrays ovectores wen 2.12 Arrays multidimensionales o matrices. 2.1.3 Las cadenas de caracteres. 2.2 ESTRUCTURAS DINAMICAS.. 2.2.1 Pilas. 2.2.2 Colas. 2.3,TIPOS ABSTRACTOS DE DATOS ma PROGRAMACION EN LENGUAJES ESTRUCTURADOS CAPITULO 3. PROGRAMACION EN LENGUAJES ESTRUCTURADOS, 3.1 ELENTORNO DE DESARROLLO DE PROGRAMACION ... 3.1.1 Bs necesario un IDE para compilar y ejecutar Java? 3.2 HERRAMIENTAS DE DEPURACION .. 3.3 LA REUTILIZACION DEL SOFTWARE ... 3.4 HERRAMIENTAS DE CONTROL DE VERSIONES...... 3.4.1 ,Cémo se almacenan las versiones?... 3.4.2 ,Cémo se colabora en un sistema de control de versiones?.. 3.4.3 ,Comose trabaja en un sistema de control de versiones?, 3.4.4 Sistemas de control de versiones centralizados: el repositorio. 3.4.5 Sistemas de repositorio. Modelos de versionado 3.4.6 Apache Subversion... CAPITULO 4. INTERFACES Y ENTORNOS GRAFICOS.. 4.1 CARACTERISTICAS DE LAS INTERFACES, INTERACCION HOMBRE-MAQUINA... 4.2 DISENO DE INTERFACES. 4.3 INTERFACES GRAFICAS DE USUARIO. CREACION DE NUESTRA PRIMERA APLICACION CON SWING..... 4.3.1 Los componentes Swing, Librerias 4.3.2 Los contenedores Swing... 4.3.3 Onganizacién de los controles en un contenedor . 4.3.4 Apariencia de las ventanas 4.4 PROGRAMACION POR EVENTOS. CONCEPTO DE EVENTOS Y CONTROLADOR DE EVENTOS... 4.5 GENERACION DE PROGRAMAS EN ENTORNO GRAFICO 89 4,6 TECNICAS DE USABILIDAD. 4.6.1 La simplicidad como bandera de la usabilidad 4.6.2 Algunos consejos a la hora de disefiar un interfaz. Rendimiento del interfaz CAPITULO 5. ACCESO A BASES DE DATOS Y OTRAS ESTRUCTURAS. 5.1 OBJETOS DE LA BASES DE DATOS. LA ARQUITECTURA JDBC. 5.1.1 4Qué se necesita para trabajar con bases de datos y JDBC: 5.2 CONEXIONES PARA EL ACCESO A DATOS. 108 5.3 MANEJANDO SQLEXCEPTIONS. 104 5.4 CREACION Y CARGA DE DATOS EN TABLAS. 5.4.1 Creacién de tablas con JDBC... 5.4.2 Carga de datos en las tablas con JDBC «ne. 5.5 RECUPERACION DE LA INFORMACION DE LA BASE DE DATOS o 110 5.5.1 La interfaz Resultset. ul 5.5.2 Otra manera de recuperar los datos de una tabla ....cnnsnsenseesesesnesnseseseseseseeeeseeee LD 5.5.3 Los cursores 113 onan sworce ; 5.6 MODIFICACION Y ACTUALIZACION DE LA BASE DE DATOS 14 5.6.1 Modificacién clasica de datos sed 14 5.6.2. Modificacién de datos en las tablas utilizando Resultset 5.6.3 Insertar datos en las tablas utilizando Resultset. 115 CAPITULO 6. PRUEBAS 119 6.1 OBJETIVOS DE LAS PRUEBAS. . o 120 6.2TIPOS DE PRUEBAS cL 6.3 PLANIFICACION DE LAS PRUEBAS....... esau paemncnsodlS 6.4 PROCESO DE PRUEBAS Y DOCUMENTACION DE LAS MISMAS 128 6.4.1 Planificacién de las pruebas: el plan de pruebas. 128 124 125 6.4.2 Preparacién de los datos de prueba ..... 6.4.3 Codificacién de las pruebas 6.4.4 Bjecucién de las pruebas 125 6.4.5 Generacién del informe final de las pruebas 126 6.5 PRUEBAS DE RENDIMIENTO ' 126 6.6 NORMAS DE CALIDAD... 128 CAPITULO 7. HERRAMIENTAS DE GENERACION DE PAQUETES. 131 7.1 LOS FICHEROS JAR: FUNCIONES Y CARACTERISTICAS. 132 7.1.1 Crear un fichero JAR... 182 7.1.2 Ver el contenido del JAR. 133 7.1.8 Extraer los ficheros de un JAR een Rana inmeaRRRRRenEReRTRaR TECTED 11.14 Bjecutar la aplicacién contenida en un JAR.. 133 7.1.5 {Qué es el manifest o manifiesto de un JAR? ..rrnsnennnnnnnesnnnnnnnsnnnnnnnnrne 1B 7.1.6 Problemas con los ficheros JAR 134 7.2 OTROS EMPAQUETADORES: EMPAQUETAMIENTO, INSTALACION Y DESPLIEGUE. 134 7.2.1 Wrappers 134 7.2.2 Los instaladores. 7.2.3 IWS 137 138 CAPITULO 8. DOCUMENTACION DE APLICACIONES... 141 8.1 HERRAMIENTAS DE DOCUMENTACION: CARACTERISTICAS ... 142 8.2 DOCUMENTACION DE UNA APLICACION 144 SOLUCIONARIO DE LOS TEST DE CONOCIMIENTOS j.ssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnneL 4 MATERIAL ADICIONAL. 151 INDICE ALFABETICO..... Introduccién Este libro tiene como objetivo servir de referencia al lector en los certificados de profesionalidad. El objetivo en la redaccién del libro ha sido complementar los contenidos teéricos con la parte préctica de los mismos, He intentado que la estructura del libro sea lo mas didéctica posible. Los conceptos en el libro son fitciles de comprender, acompaiiados de muchas fotos, ejemplos y explicaciones sencillas. En los contenidos teéricos, se han intentado exponer los conceptos de una forma simplificada, incluyendo siempre los mas importantes. Para asimilar todos los conceptos de cada capitulo, he utilizado muchos programas, notas, consejos, ete. De esa manera y con paciencia aprenderas a programar de forma estructurada sin problemas. El libro trata coneeptos muy interesantes como la programacién estructurada, el desarrollo de interfaces, programacién con estructuras dinémicas, las pruebas, la documentacién, el acceso a bases de datos, herramientas de generacién de paquetes, etc. Para el desarrollo del libro he elegido como lenguaje de programacién Java, Java es un Ienguaje con el cual vas a poder trabajar de forma estructurada y como es multiplataforma no importa que utilices Linux, Windows, Mac OS X u otro sistema, podrés desarrollar, compilar y ejecutar tus programas en cualquier sistema operativo, E] lector, para dominar la materia, ademas de manejar el libro, deberd investigar, documentarse y ampliar conocimientos por si mismo, puesto que este libro solamente es el empujén en la salida de una carrera ciclista; luego el alumno tendra que pedalear y recorrer muchos kilémetros solo. il _ 6lh-[! | METODOLOGIA DE LA PROGRAMACION ma PROGRAMACION EN LENGUAJES ESTRUCTURADOS onana ca Definicién de programa Un programa es una serie de érdenes o instrucciones ordenadas con una finalidad concrata que realizan tna funcién determinada. Todo el mundo estamos familiarizados con la ejecucién de programas (editores de textos, navegadores, juegos, reproductores de miisica o peliculas, ete.) Por regla general, cuando queremos ejecutar un programa se lo indicamos al sistema haciendo doble click sobre él e incluso algunos usuarios mas avanzados ejecutan comandos desde un intérprete de comandos o consola. Si una vez has tenido la euriosidad de abrir un programa con un bloc de notas 0 editor de texto te habras dado cuenta que aparece algo horrible en el editor, una serie de simbolos ininteligibles (por Jos humanos). Eso es porque los programas estan en binario, que es el lenguaje que entienden las méquinas. Entonces, te preguntards: si al final de este libro seré capaz de eseribir programas, ;podré entender esos eédigos? La respuesta es No, En este libro vamos a aprender un lenguaje de programacién para escribir programas de manera entendible por los humanos y que luego tradueciremos al lenguaje maquina, entendible por los ordenadores, mediante otros programas llamados intérpretes o compiladores. En la siguiente figura se vera todo esto de modo més grafico: ‘Compilacion ()En Java es bytecode, Intepretabie por la maquina virtual de Java Figura 1.1. Proceso de compilacin en Java Como se puede observar, el e6digo fuente es el que escribe el programador y que luego lo compila a eédigo maquina. Compilar equivale a transformar el programa inteligible por el programador al programa inteligible por Ia maquina. El eédigo fuente o programa fuente est eserito en un lenguaje de programacién y el compilador es un programa que se encarga de transformar el cédigo fuente en cédigo maquina. 14 onena 1 smeTopoLocia DE La PROGRAMACION ; Los compiladores son programas especificos para un lenguaje de programacién, los cuales transforman el programa fuente en un programa directa o indirectamente ejecutable por la maquina destino. No es posible compilar un programa eserito en lenguaje Java con un compilador de C porque éste no lo entenderia. El lenguaje méquina que genera Java es un lenguaje intermedio interpretable por una maquina virtual instalada en el ordenador donde se va a ejecutar. Una maquina virtual es una méquina fieticia que traduce las, instrueciones maquina ficticias en instrueciones para la maquina real. La ventaja dela misma es que los programas se pueden ejecutar en cualquier tipo de hardware siempre y cuando tenga instalada la maquina virtual correspondiente. Los programas no van a cambiar, lo que cambiard es la maquina virtual dependiendo del hardware (no seré igual la maquina virtual de un smartphone que la de un PC). a Los compiladores e intérpretes AA diferencia de los compiladores, los intérpretes leen linea a linea el cédigo fuente y lo ejecutan. Este proceso es muy lento y requiere tener cargado en memoria el intérprete. La ventaja de los intérpretes es {que la depuracién y correccién de errores del programa es mucho mas sencilla que con los compiladores, Java es uno de los lenguajes més utilizados en la actualidad. Es un lenguaje de propésito general y su éxito radica en que es el lenguaje de Internet. Applets, Servlets, paginas JSP o JavaScript utilizan Java como lenguaje de programacién, El éxito de Java radiea en que es un lenguaje multiplataforma. Java utiliza una méquina virtual en el sistema destino y por lo tanto no hace falta recompilar de nuevo las aplicaciones para cada sistema operativo. Java, por lo tanto, es un lenguaje interpretado que para mayor eficiencia utiliza un eédigo intermedio (bytecode). Este eédigo intermedio o bytecode es independiente de la arquitectura y por lo tanto puede ser ejecutado en cualquier sistema. 1 . 1 PROGRAMACION ESTRUCTURADA La programacién estructurada surgié en la década de los 60 y es un paradigma de programacién en la que se evita a toda costa la instruccién de salto incondicional GOTO, los programas estructurados utilizan subrutinas y tres estructuras basicas como son la secuencial, la de seleceién (if'y switch) y la de iteraeién (for y while). El objetivo de la programacién estructurada es realizar programas con més elaridad, con mas calidad, féciles de mantener y con, Otras caracteristicas de la programacién estructurada es que el esfuerzo en las pruebas y depuracién de los programas es menor, dado que Ia estructura de los mismos es mas sencilla. También, a la hora de mantener los programas, el esfuerzo es menor dado que son més claros ¢ intuitivos. Ademés, los programadores incrementan su rendimiento por las razones anteriormente citadas. 15 TI) rrocennncon enone enicrunaos omnn 16 a~ Los programas en Java Los programas 0 aplicaciones en Java se componen de una serie de ficheros class que son ficheros en bytecode que contienen las clases del programa. Estos ficheros no tlenen por qué estar situados en un directorio concreto, sino que pueden estar distribuidos en varios discos o incluso en varias maquinas. La aplicacién se ejecuta desde el método o procedimiento principal main() situado en una clase o fichero principal. FREE! LA ESTRUCTURA BASICA DE UN PROGRAMA En este apartado se va a trabajar con el programa de inicio por exe (Hola mundo”) y se comentaran cada una de sus Iineas. sncia en cualquier lenguaje de programacién public class holamundo ( /* programa holamundo*/ public static void main(Stringl] args) ( /* lo anico que hace este programa es mostrar 1a cadena "Hola Mundo" por pantalla*/ a ("Hola Mundo") ; system.out.pein Los comentarios. Existen comentarios de una linea solamente (//) y comentarios muttiinea (/* */). //. Estos comentarios comienzan en la doble barra y terminan hasta el final de la linea. /* */ . Estos comentarios comienzan con los caracteres /* y terminan con los caracteres */ y se pueden extender miltiples lineas. La clase holamundo En Java generalmente cada clase es un fichero distinto. Si existieran varias clases en el fichero, la clase cuyo nombre coincide con el nombre del fichero deberia de levar el modificador public (public class holamundo) y es la que se puede utilizar desde fuera del fichero. Las clases tienen el mismo nombre que su fichero java y es importante que maydisculas y mintisculas coincidan. La clase abarca desde la primera lave que abre hasta la iltima que cierra. public class holamundo ( onena 1 smeTopoLocia DE La PROGRAMACION ; La funcién o método main public static void main (String [ ] args) ) El eédigo Java en las clases se agrupa en métodos o funciones. Cuando Java va a ejecutar el eédigo de una clase, lo primero que hace es buscar el método main de dicha clase para ejecutarlo. El método main tiene las siguientes particularidades: Es pablico (public): esto es as{ para poder llamarlo desde cualquier lado. I Es estatico (static): al ser static se le puede llamar sin tener que instanciar la clase. No devuelve ningdin valor (modificador void). Admite una serie de pardmetros (String ( | args) que en este ejemplo concreto no son utilizados. Como puede verse en el ejemplo, el método main abarea todo el eédigo contenido entre las llaves {) Mostrar texto por pantalla Parece intuitivo saber que el texto se mostraré por pantalla ejecutando la siguiente linea: systen.out.peintin ("Hola Mundo"); Para sacar informacién por pantalla en Java se utiliza la elase System que puede ser llamada desde cualquier punto de un programa, la cual tiene un atributo out que a su vez tiene dos métodos muy utilizados: print() y printin(). La diferencia entre estos dos tiltimos métodos es que en el segundo se afiade un retorno de linea al texto introdueido. Como se puede ver, la orden termina en " cuales no hace falta ponérselo, pues se sobreentiende que finaliza la orden). 1 . 2 LOS DATOS En este apartado estudiaremos en profundidad los datos que maneja un programa (tipos de datos simples, constantes, literales y variables). * (todas las érdenes en Java terminan en ";" salvo los cierres de llaves a los 28) Tivos DE DATOS SIMPLES Los tipos de datos se utilizan generalmente al declarar variables y son necesarios para que el intérprete 0 compilador conozea de antemano el tipo de informacién que va a contener una variable, Los tipos de datos primitives en Java son los siguientes: v7 PROGRAMACION EN LENGUAJES ESTRUCTURADOS © RA-MA Aer er datos Peery Se utilizan 8 bits (1 byte) para almacenar s Datos enteros 128 9 4127 a el dato, Dato de 16 bits de longitud (independientemente de la plataforma). short Datos enteros. 2768 <> +82767 2147483648 Dato de 32 bits de longitud int Datos enteros ay aiariesey ‘independientemente de Ia plataforma). Dato de 64 bits de longitud long Datos enteros (independientemente de la plataforma). Este rango es para representar ntimeros ‘en unicode, Jos ASCII se representan char Datos enteros y caracteres, 0 <-> 65535 ‘con los valores del 0 al 127. ASCII es tun subconjunto del juego de caracteres, Unicode. Datos en coma flotante de Precisién sproximada de 7 Dato en coma lotanie de $2 bits en Aloat formato IEEE 764 (1 bit de signo, 8 para 32 bite igitos 1 exponente y 24 para la mantisa). Dato en coma flotante de 64 bits en Datos en coma flotante de Precisién aproximada de 16 double formato IEEE 754 (1 bit de signo, 11 para me dates ‘el exponente y 52 para la mantisa), Utilizado para evaluar si el resultado de boolean Valores bocleanos trucifalse tuna expresién booleanas es verdadero (true) o falzo false). Tabla 1.1. Tips de datos simples ] ACTIVIDADES Se propone al alumno que investigue y recopile informacién sobre el juego de caracteres Unicode y ASCII con especial detenimiento en este itimo. 18 © RA-MA 1" METODOLOGIA DE LA PROGRAMACION. A continuacién, se muestran ejemplos de utilizacién de tipos de datos en la declaracién de variables: int long float double boolean char ear2=99; earl y car? son lo mismo porque el 99 en ASCII es la ‘c'*/ float pix8.1416; float pi=8.1416F; /* la F en este caso indica Float*/ float medio=L/2F; /°0.5°/ double millén=1e6; * 13106 */ double medio= 12D; /*0.5 la D en este easo indica Double*/ boolean adivinanza=true; Tabla 1.2, Utilsnciin de tipas de datos {EI CONSTANTES Y LITERALES Las constantes Ga Cuestién de estilo Las constantes se declaran en mayuiscula mientras que las variables se hacen en mindscula (esto se realiza como norma de estilo) 19 TI) rrocennncon enone enicrunaos omnn 20 Una constante es un dato invariable, siempre es el mismo. Las constantes se declaran siguiendo el siguiente formato: final [static] = ; Donde el calificador final identificaré que es una constante, la palabra static, si se declara, implicara que solo existira una copia de dicha constante en el programa aunque se declare varias veces, el tipo de datos de la constante seguido del nombre y por iltimo el valor que toma. final static double PI=3.141592; La RECUERDA Las constantes se utilizan en datos que nunca varian (IVA, PI, etc.). Utilizando constantes y no variables nos aseguramos que su valor no va a poder ser modificado nunca. También utilizar constantes permite centralizar el valor de un dato en una sola linea de cédigo (si se quiere cambiar el valor del IVA se hard solamente en una linea en vez de si se utilizase el literal 18 en muchas partes del programa). Los literales Un literal puede ser una expresién: De tipo de dato simple. | Nula ode valor null. | Un string 0 eadena de caracteres (por ejemplo: "Hola Mundo"). ‘Bjemplos de literales en Java pueden ser 'a', 322, 3.1416, "pi" o "programacién en Java". FEE) varnasies Una variable no es mas ni menos que una zona de memoria donde se puede almacenar informacién del tipo que el programador. a Las palabras clave Las palabras clave son las érdenes del lenguaje de programacién. El compilador espera esos identificadores para comprender el programa, compilario y poder ejecutarlo. Por Io tanto queda PROHIBIOO utilizar palabras clave como (boolean, double, long, if, private, etc.) utlizadas por el propio Java para nombrar variables dentro de un programa. Tampoco se pueden utilizar caracteres especiales para nombrar variables como (+, ~, /, etc.)- dese onena 1 smeTopoLocia DE La PROGRAMACION ; class suma ‘ static int nl=50; // variable mienbro de 1a clase public static void main(String (} args) ( int n2=30, sume 7 // variables locales sumasnl+n2; System.out.printin ("LA SUMA ES: , "+ suma)s ) Como puede verse en el ejemplo anterior, las variables se declaran dentro de un bloque (por bloque se entiende el contenido entre las Iaves ( }) y son accesibles solo dentro de ese bloque. Las variables declaradas en el bloque de la clase como nl se consideran miembros de la clase, mientras que las variables n2 y suma pertenecen al método main y solo pueden ser utilizados en el mismo. Las variables declaradas en el bloque de eédigo de un método son variables que se crean cuando el bloque se declara, y se destruyen cuando finaliza la ejecucién de dicho bloque. Las variables miembros de una clase se inicializan por defecto (las numéricas con 0, los caracteres con ‘\0' y las referencias a objetos y cadenas con null) mientras que las variables locales no lo hacen. La RECUERDA Una variable local no puede ser declarada como static. lad y vida de las variables lida, scope o ambito de una variable son sinénimos. Visibilidad es la parte del eédigo de una aplicacién donde la variable es accesible y puede ser utilizada. cr Al contrario que en otros lenguajes de programacién, en Java las variables no pueden declararse fuera de una clase. Por regla general, en Java, todas las variables que estn dentro de un bloque (entre { y |) son visibles y existen dentro de dicho bloque. Las funciones miembro de una clase, podrn acceder a todas las variables miembro de dicha clase pero no a las variables locales de otra funcién miembro, a ma PROGRAMACION EN LENGUAJES ESTRUCTURADOS © RAMA 1 . 3 OPERADORES Y EXPRESIONES ‘Todos los lenguajes de programacién tienen operadores incluso algunos tienen precedencia sobre otros. En este apartado se estudiardn en profundidad los operadores y expresiones, [EEE oPeRavores arrrMeTIcos Los operadores aritméticos son utilizados para realizar operaciones mateméticas, Eee ASB A-B ASB AIB AGB Suma Resta ‘Multiplicacin Division ‘Médulo o resto de una division entera Tabla 1.2. Operadores aritméticos En el siguiente ejemplo se puede observar la utilizacién de operadores aritméticos: 2 onan 1 mEToDoLOGEA DE LA PROGRAMACION ; {IEEE OPERADORES RELACIONALES Con los operadores relacionales se puede evaluar la igualdad y la magnitud. En la siguiente tabla A y B no son los operadores, sino que son los operandos como se puede ver: See < AcB Amenor que B > ADB Amayor que B = AcB A menor 0 igual que B A mayor o igual que B A distinto que B A igual que B Tabla 14. Operadoresrlacionales En el siguiente ejemplo se puede observar la utilizacién de operadores relacionales: boolean res; 23 ma PROGRAMACION EN LENGUAJES ESTRUCTURADOS omnn [IEE orerapores L6cicos Con los operadores légicos se pueden realizar operaciones légicas. En la siguiente tabla A y B no son los operadores, sino que son los operandos como se puede ver: ee a AANDB, El resultado serd true si Bk of A&&B 0 ARB ‘ambos operands son true y false en caso contrario. AOR B. El resultado ser false si ambos Wel AIIBoAIB ‘operandos son false y true en easo contrario, Not A. Siel operando es true el resultado w es false y si el operando es false el resultado es true. AXOR B. El resultado serd true si un - ANB ‘operando es true y el otro false, y false en caso contrario, Tabla 1.5. Operadores lgioos En el siguiente ejemplo se puede observar la utilizacién de operadores légicos: [REX] OPERADORES UNITARIOS 0 UNARIOS os - “A Complementoa Ide A - A Cambio de signo del operando . ce Decremento de A Ase Ineremento de A ! a Not A (ya visto) abla 1.6. Operadoresunitarioe 24 onan 1 mEToDoLOGEA DE LA PROGRAMACION ; {5 operapores De Bis es & A&B AND logico, AND B. \ AIB —— ORlégico. A ORB. * ASB XORlégico. AXOR B. « AccB _Desplazamientoa la igquierda de A B bits rellenando con ceros por Ia derecha. . ‘sep __Desplazamiento In derecha de AB bits rllenando con el BIT de sgno por la inquierda, = A>>>B____Desplazamionto ala derecha de A B bits rellenando con ceros por la iaquierda Tabla 1.7. Operadores de its En el siguiente ejemplo se puede observar la utilizacién de operadores de bits: >>; // num num = num / 2 REXS OPERADORES DE ASIGNACION ee ee Asigmaci6n. Operador ya visto, ‘Maultiplicacién y asignacién. La operacién AY=B equivale a A=A‘B, Division y asignacién, La operacién A/=B equivale a A=A/B. ‘Médulo y asignacién. La operacién A% ‘Suma y asignacién. La operacién A+=B equivale a A=A+B. Resta y asignacién. La operacién A-=B equivale a A=A-B. Tabla 1.8. Operadares de asignacion 25 TI) rrocennncon enone enicrunaos omnn En el siguiente ejemplo se puede observar Ia utilizacién de operadores de asignacién: int num=5; num += 5; // num = 10, equivale a num = num + 5 FEW] PRECEDENCIA DE OPERADORES La CONSEJO Utiliza paréntesis y de esa forma puedes dejar los programas més legibles y controlar las operaciones sin tener que depender de la precedencia. La precedencia de operadores se resume en la siguiente figura: ais OPERADORES priorioad |() []. ~ lH + new (tipo)expresion - 1% + = <<>> >> < > >= instanceof & | BE il menos 2 pIMENOS ate [a the += = > bo>= B= |e ME Figura 1.2. Procdenca de operadores Imaginemos que se tiene un eédigo como el siguiente: int a= 4; asStatay ‘Se desea conocer el valor que tomard "a". Para ello se mira en la tabla y se puede observar que el operador * tiene mas precedencia que el operador +, con lo cual primero se ejecutara 5 " a, y al resultado de esta operacién se le sumard 8. El resultado de la expresién sera 23 y por lo tanto el valor de “a” sera 23 al ejecutar este eddigo. 26 onena 1 smeTopoLocia DE La PROGRAMACION ; 1 ESTRUCTURAS BASICAS (SECUENCIAL, C . ITERATIVA) Ga IMPORTANTE Las sentencias Una expresién es una serie de variables/constantes/datos unidos por operadores (por ejemplo 2+PI*radio). Una sentencia es una expresién que acaba en ; (por ejemplo area = 2*PI*radio;). FEE esrRucrura secuENCIAL La estructura secuencial se compone de un grupo de sentencias que se irdn ejecutando una detrds de otra, El diagrama de flujo de una estructura secuencial seria el siguiente: Figura 1.3. Diagram de flujo de una estructura secuencia Las estructuras secuenciales estan formadas por instrucciones que no implican salto como pueden ser: 1 Unaasignacién. Una eseritura o salida de datos. Una lectura o entrada de datos. _ Declaraciones de variables o constantes. 27 Acontinuacién se muestra un cédigo con varias sentencias en una estructura secuencial: int nle5; int n2=30; int suma=0; sumasnitn2; System.out.printin("LA SUMA ES: " + suma); [3H ESTRUCTURA CONDICIONAL Entre las estructuras condicionales nos encontramos con la estructura IF y la SWITCH. Las estructuras if: En Java hay tres tipos de estructuras if (if if-else y if-elseifelse), el formato de este tipo de estructuras es el -=2 Figura 1.4. Dierents suntencias if En los casos anteriores, boolexp es una expresién booleana que puede ser verdadera 0 falsa, ejemplos de expresiones booleanas pueden ser: (a > 20 0 2*PI*radio>30). Dependiendo si es verdadera o falsa se ejecutardn ono unas sentencias. Como se puede apreciar, en el easo 3, seria producto de combinar o anidar un if dentro de otro. a semeroorocinoe a rrocrancion {i En la siguiente figura se puede observar cémo se ejecutars el flujo del programa para los casos anteriores 1 y 2: Figura 15. Diagruma de fai dela sentonci if Un ejemplo de la utilizacién de estas estructuras es el siguiente: int a= 4; if (a 4) 1 System.out-printin("La variable es igual a 4"); , if (a> 5) System.out.printin("La variable es mayor a 5"); belsed system.out.printia("La variable es menor que 6"); , if (a> 5)f system.out.printia("La variable es mayor a 5"); felse if(a = = 5)¢ System.out.printia("La variable es igual a 5"); jelse( System.out-printin("La variable es menor que 51 jemplo anidando las sentencias if int matematicas = 4, lengua = if (matematicas >= 5){ if (lengua >= 5){ System. out .printn ("Enhorabuena"); Jelse( System.out-printin("No has aprobado todas las asignaturas"); pelse( System.out-println("No has aprobado todas las asignaturas"); 29 FY vce en ener ernsrnoos onana Las estructuras switch ‘Cuando una expresién puede tener varios valores y dependiendo del valor que tome hay que ejecutar una serie de sentencias. Hay dos posibilidades a la hora de programar. La primera es utilizar la estructura switch la cual deja el eédigo limpio y facil de interpretar. Otra opeién, es utilizar estructuras if para resolver este problema. El formato de esta estructura es el siguiente: Figura 1.6. La sentncia switch 4 ~ RECUERDA Sino se escribe la sentencia break, el programa seguiré efecutando las siguientes sentencias hasta ‘encontrarse con un break o el fin del switch. ‘Un ejemplo de utilizacién de esta estructura es el que se muestra a continuacién: switch (posicion) { case 1: System.out.println ("ORO") ;break; + System. out.printIn ("PLATA") break; : System.out.print1n ("BRONCE") : System, out.printIn ("DIPLOMA") ;break; Systen.out .printla ("DIPLOMA") ;break; System.out.printin("SIN PREMIO") ;break; reak: §R3S EsTRUCTURA ITERATIVA Las estructuras iterativas o bucles son utilizadas cuando una o varias sentencias han de ser ejecutadas cero, una o mds veees. A 7 a» CUIDADO Ten cuidado con los bucles infinitos. Los bucles infinitos son aquellos que no terminan nunca (aquellos ‘cuya expresién booleanas siempre es cierta 0 true). En el caso de producirse un bucle infinito, el programa se seguira ejecutando y se quedaré "colgado" hasta que el usuario mate el proceso. 30 ‘La estructura iterativa while El bucle while se utiliza cuando se tiene que ejecutar un grupo de sentencias un niimero determinado de veces (0 © més veces). El formato de estructura del bucle while es el siguiente: Figura 1.7. Bstructura del bucle while ‘Un ejemplo de utilizacién de esta estructura es el que se muestra a continuacién: int numero = 1; while (numero<=10){ //bucle que cuenta hasta 10 System.out-print1n (numero) ; numerott; } Este eédigo anterior lo que hace es mostrar por pantalla los ntimeros del 1 al 10. La estructura iterativa do while La estructura iterativa do while o mejor Hamada until en otros lenguajes es una variante del while. En realidad cualquier estructura do while se puede transformar en una estructura while. El formato de estructura del bucle do while es el siguiente: Figura 1.8. Estructura del bucle do while TI) rrocennncon enone enicrunaos onana Como se puede observar esta estructura es igual a la anterior (while), o tinico que ocurre es que la comprobacién, se hace al final del buele, con lo cual siempre se ejecutardn las senteneias al menos una vez. ‘Un ejemplo de utilizacién de esta estructura es el que se muestra a continuacién: int numero = 1; do( //bucle que cuenta hasta 10 System.out.printin (numero) ; Jwhile (numero: OF Este ejemplo es igual al anterior lo tinico que se ha cambiado es el while por el do while. La estructura iterativa for El bucle for se utiliza cuando se necesita ejecutar una serie de sentencias un ntimero fijo y conocide de veces. La estructura tiene el siguiente formato: Figura 1.9. Bstruetura del bucle for Fijdndonos en la estructura podemos ver que la estructura for se puede conseguir utilizando el bucle while, Enel primer ejercicio resuelto se puede ver cémo se realizaria esto, ‘Un ejemplo de utilizacién de esta estructura es el que se muestra a continuacién: int numero = 1; for (numer: numerot+)( //bucle que cuenta hasta 10 System.out.printin (numero) ; ) 4 ~ TRUCO Si queremos que en el ejemplo anterior el contador en vez de incrementarse se decremente utilizaremos umero--. Si queremos que se incremente de 2 en 2 haremos entonces numero+=2. 32 onena 1 smeTopoLocia DE La PROGRAMACION ; FEE) ornos Tos ve EsrRUCTURAS La CONSEJO Se desaconseja el uso de las sentencias break salvo para la estructura switch. Las sentencias de salto dificultan la legibilidad de los programas y evitan que la programacién sea estructurada. La sentencia break La sentencia break ya vista anteriormente, sirve tanto para las estructuras de seleccién como para las estructuras de repeticién. El programa al encontrar dicha sentencia se saldré del bloque que esta ejecutando. La sentencia return La sentencia return es otra forma de salir de una estructura de control. La diferencia con break y continue es que return sale de la funcién 0 método (procedimiento) que esta ejecutando y permite devolver un valor. Por ejemplo: return 5; //sale de la £ 6n 0 método y devuelve el valor 5. Control de excepciones El control de excepeiones va a permitir al programador controlar la ejecucién del programa evitando que éste falle de forma inesperada. La estructura del control de excepeiones tiene el siguiente formato: try 1 Sentecias a proteger | }oatch (excepcién_1){ (Bante a xepein 1] } catch (excepcion_n)t finally, W Figura 1.10 Estructura del control deexcepeiones en Jave El programa intentard proteger las sentencias situadas dentro del bloque ¢ry, en el easo de que ocurra un error se intentara controlar la excepcién mediante los bloques catch (dependiendo de Ia excepcién se ejecutard un bloque de cédigo u otro). El bloque finally es opeional, pero en caso de existir éste se ejecutard siempre. 33 TI) rrocennncon enone enicrunaos omnn ‘Se va a ver un ejemplo del control de excepeiones en los dos siguientes ejemplos. ‘Veamos el siguiente programa: class Test ( public static void main(String [] args) ‘ int a=10, bed, cr ca/bi System. out .printin ("Resultado: ) Como todo el mundo sabe, el dividir por cero es una indeterminacién, con lo cual este tipo de operaciones provocard en el programa el siguiente error provocando una finalizacién anormal del mismo: Exception in thread "main" java.lang.ArithmeticException: / by zero at Test.main (Test.java:6) Presione una tecla para continuar . ‘Una forma de controlar esta situacién serd la siguiente: class Test i public static void main(String [1 args) ‘ int, tev cra/br ) catch (Arithmeticzxception e) ( System.out.printin ("Erro! return; e.getMessage()) ? System.out.printin ("Resultado:"#c) ) Deesta manera se controla la jecucién del programa y éste finalizard de una forma controlada, 34 onena 1 smeTopoLocia DE La PROGRAMACION ; 1 . 5 METODOS PARA LA ELABORACION DE ALGORITMOS En primer lugar vamos a conocer qué es un algoritmo. La palabra algoritmo viene de un arabe Hamado Muhammad ibn Musa Al-Khowarizmi que en el siglo IX antes de Cristo acompaitaba sus soluciones algebraicas con demostraciones geométrieas, Elobjetive de un algoritmo es seguir una serie de pasos para al final del mismo conocer la solucién a un determinado problema, Para la resolucién del problema o explicacién del algoritmo se utiliza un lenguaje algoritmico que bien puede ser grafico o bien puede ser no gréfico (en este caso se le suele denominar pseudoeédigo).. ‘Veamos eémo se resolveria un problema concreto, Se pide la edad a dos sujetos y el algoritmo determina el sujeto Aes mayor que el sujeto B. Coe D> asia inicio ‘edad: Entero Leeredada ‘edad: Entero ESCRIBIR cEdad del sujeto A? LEER eda ESCRIBIR cEdad del sujeto B? LEER edad SledadA> edad® entonces ESCRIBIR “EI mayores A” siNo ESCRIBIR “EI mayor no es A Cm > FINS! — FIN Notacién grafica Pseudocédigo Figura 1.11, Resolucién de un programa mediante notacin grficay pseudocidigo Como se puede ver, para la resolucién grafica se utilizan algunos simbolos conocidos para hacer diagramas, que puedes encontrar en versiones de office, libreoffice y otros programas mas especificos para estos menesteres. En cuanto al pseudoeédigo, generalmente se pueden utilizar palabras en inglés o simplemente en espafiol. Esto queda a tu gusto. Lo que es importante es que el proceso describa paso a paso de forma inequivoca la resolucién de un problema conereto. Una vez escrito el algoritmo de forma gréfica 0 en notacién de pseudocédigo, ya estamos en disposicién de traducirlo a un lenguaje de programacién sin problemas. Dependiendo de lo grande del algoritmo, se suele utilizar notacién grifiea o pseudoeédigo. Para algoritmos complejos, largos o con muchas estructuras condicionales e iterativas la mejor solucién es el pseudocddigo porque es mas legible. La notacién grafica en estos casos no es posible dado que se erean diagramas muy grandes. 35 TI) rrocennncon enone enicrunaos omnn 36 1 . 6 RECURSIVIDAD La reeursividad es una forma de expresar un algoritmo en el que en la solueién del problema, el algoritmo se hace una llamada a si mismo. Generalmente se utiliza la recursividad para resolver problemas que son recursivos como el factorial, la sucesién de Fibonacci, ete. La llamada de un algoritmo a si mismo se llama recursién oamada Entre las ventajas de la recursividad est el que los algoritmos son mas reducidos que en una solucién iterativa, son mas ficiles de leer e interpretar, pero por contra consumen muchos més recursos de maquina dada su naturaleza. Son menos eficientes en cuestién de rendimiento. ‘Veamos el pseudocédigo de la resolucién del factorial de un ntimero mediante un algoritmo recursive: FUNCION Factorial (NUM) RESULTADO: Entero ST (NUMC2) ENTONCES RESULTADO = 1; sINo RESULTADO NUM * Factorial (NUM-1) ; FST DEVOLVER RESULTADO; FIN FUNCION ‘Como se puede ver en el pseudocédigo anterior, la resolucién del factorial es 1 si el ntimero es menor que dos, en. caso contrario el resultado sera NUM por el factorial de NUM -1. © RA-MA 1 La programacién estructurada surgis... a) en Ia década de los 60 b)en la década de los 70 ©) en la década de los 80 2 ica isiesatnestinda crc a) private static void main (String | ] args) by) publie static void main (String [] args) ©) publie void main (String [] args) Sicua de las siguientes sentencias es incorrecta?: a) int e = OxC125; b) char car2=99; ©) float pi=3.1416F; ) double millén=1exp6; A it tetas sigine meio a) Bytecode es binario, lenguaje directamente eje- cutable por la maquina. )b) Se desaconseja el uso de las sentencias break salvo para la estructura switch. ) En daya, la clase cuyo nombre coincide con el nombre del fichero deberia de llevar el modifica dor public. @) Los programas o aplicaciones en Java se com- ponen de una serie de ficheros class que son ficheros en bytecode. TEST DE CONOCIMIENTOS semeroorocinoe a rrocrancion {i nnn 5 seus eas sine afmacoe st a) En Java generalmente cada clase es un fichero distinto. }) Este comentario /** comentario */ no es correcto puesto que comienza con dos asteriscos. ©) Una variable es una zona de memoria donde se puede almacenar informacién. 4) El método main() al ser estético (static) se le puede llamar sin tener que instanciar Ia clase. G oat eta siqines frmacoe tsa? 8) Los float tienen una precisién aproximada de 7 aigitos. bb) Las variables miembros de una clase se iniciali- zan por defecto, ) Visibilidad, scope o émbito de una variable no ) La estructura iterativa do while es una variante del while, 37 zt h6lh-[. 4 “4 ESTRUCTURA DE DATOS TI) rrocennncon enone enicrunaos omnn En el capitulo anterior ya vimos cémo trabajar con datos simples. En este tema vamos a abordar las estructuras de datos. Con las estructuras de datos podemos organizar conjuntos de datos elementales de tal manera que es mas féeil trabajar con ellos y se pueden resolver problemas que con datos simples eostaria mucho mas realizarlos. Las estructuras de datos se pueden clasificar en dos grupos, las estructuras estaticas y las estructuras dinamicas las cuales pueden llegar a ser mas complejas y se hace uso de punteros. Generalmente las estructuras de datos suelen tener asociadas operaciones como altas, bajas, biisquedas, ordenamiento, ete., lo que las hace muy potentes y muy eficientes al programar. ‘Dependiendo del problema a resolver, intentaremos utilizar si es necesario la estructura de datos mas apropiada para ello. Existen muchas estructuras de datos como pueden ser listas, conjuntos, matrices, arboles, grafos, heaps, tablas y hash, En este tema vamos a estudiar en profundidad las estructuras estaticas y dindmicas mas seneillas y més ttiles. LA RECUERDA Un puntero es una variable que apunta a una direccién de memoria donde reside un dato 0 una estructura de datos. 2. 1 ESTRUCTURAS ESTATICAS Las estructuras estatieas, al contrario que las dindmicas no utilizan punteros. Las més utilizadas son los arrays, las matrices y Ins cadenas de caracteres. Estas tres estructuras son muy titiles y nos van a servir para resolver un niimero muy grande de problemas. Las estructuras estiitieas se utilizan cuando se sabe a ciencia cierta el ntimero de elementos que van a contener. Por ejemplo, si queremos hacer un array con los compafieros de clase, un array con la clasificacién de la liga de fatbol, una tabla con los resultados de los emparejamientos de un torneo de tenis, ete. Cuando no sabemos el ntimero de elementos que va a tener la estructura, muchas veces es mejor resolver el problema utilizando una estructura dinamica que puede crecer y menguar segtin la necesidad. GSIE) aRRays 0 VECTORES Hasta ahora, en todos los ejercicios que se han visto durante el capitulo anterior no habia una necesidad muy grande de almacenar muchos valores, se utilizaban variables simples en las que podemos almacenar el color, Ja edad, Ia cantidad, ete. Imaginemos que nos piden realizar un programa que almacene Ia temperatura de 100 ciudades espafolas y luego saque la temperatura media nacional. No parece operativo tener 100 variables en nuestro programa, nada mas que escribir los nombres en el eédigo el ntimero de lineas se dispara. ZY si nos dicen que se va a aumentar el niimero de ciudades a 200? La solucién a esto se llama arrays 0 veetores (son sinénimos). ae 2 sesTnucTURAS DE DATOS ; La RECUERDA En Java se pueden crear vectores o arrays de tipos basicos (boolean, int, byte, etc.) y también arrays de objetos. De esa manera se pueden almacenar varios valores en cada posicién de memoria. Un array se compone de una serie de posiciones consecutivas en memoria. MEMORIA 1] 2] 3/4] 6 NN Ne2]Neg Ne] VECTOR ‘TEMPERATURAS Figura 2.1. Almacenamiento del vector emperaturas en memoria A los vectores se accede mediante un subindice, si por ejemplo nuestro vector anterior se llama temperaturas y se quiere acceder a la posicién N, habré que escribir temperaturas(N] en el programa para obtener la informacién de esa posicién de memoria. N puede ser una variable o bien un valor conereto. Declaracién de vectores: En Java se pueden declarar vectores de dos formas diferentes. Para declarar nuestro vector de temperaturas se puede realizar de las siguientes formas: byte[] temperaturas; byte temperaturas[]; Como puede observarse, en ningtin momento se ha dado el tamafio de la matriz, lo tinico que se ha especificado es el tipo de los elementos que va a albergar dicha matriz Creacién de vectores Java trata los veetores como si fuesen objetos, por lo tanto la ereacién de nuestro vector temperaturas sera del siguiente modo: temperaturas = new byte[100]; Lo que implica reservar en memoria 100 posiciones de tipo byte. 41 TI) rrocennncon enone enicrunaos omnn 42 La RECUERDA En los vectores, cuando se reservan N posiciones de memoria, los datos se almacenarén en las posiciones 0, 1, +--+ Net, El tamaio también puede asignérsele mediante una variable de la siguiente forma: int v=100; byte[] temperaturas; temperaturas = new byte[v]; ‘También es muy comtin ver en los programas este tipo de declaraciones: int v=100; byte[] temperaturas = new bytelv] Como se puede ver, se funden la segunda y tercera linea de cédigo del ejemplo anterior en una sola. Inicializacién de veetores Si no se especifica ningtin valor, los elementos de un vector se inicializan autométicamente a unos valores predeterminados (variables numéricas a 0, objetos a null, booleanas a false y caracteres a'\u0000). ‘También es posible inicializarlo con los valores que des cl programador: byte[) temperatura: 10,21,12, 19,18, 19,14,13,15,15); En este ejemplo anterior se ha creado un vector de 12 posiciones del tipo byte con los valores especificados. Métodos de los vectores Como se ha dicho anteriormente, Java maneja los vectores como si fueran objetos, por lo tanto existen una serie de métodos heredados de la clase Object que esta en el paquete java lang: | equals: Permite discernir si dos referencias son el mismo objeto. & clone: Duplica un objeto. Un ejemplo de utilizacién de estos métodos es el siguiente: byte[] temperaturasi=(10,11,12,11,10,9,18,19, 14,13, byte[] temperaturas2= (byte[]) temperaturasl.clone(); byte[] temperaturas3=temperaturasi; 5,15); Af (temperaturasi.equals (temperaturas2)) { system.out .printin("temperaturas: temperaturas2"); delset System.out.println("temperaturas!!=temperaturas2"); a aresmucnnasoconor , if (temperaturasl -equals(temperaturas3)) ( ‘System. out print 1n ("temperaturasl==temperaturas3"); pelset System. out print in ("temperaturas1 !=temperaturas3"); , En el ejemplo anterior, el programa mostrar los siguientes literales "Lemperaturast emperaturas2"” y "temperaturasIs=temperaturas3" porque en el primer caso, aunque los datos son los mismos, el objeto es diferente y en el segundo caso, al asignar tenperaturas3-temperaturas] hace que tenperaturas3 referencie al mismo objeto (apunta al mismo lugar en la memoria, no se duplican los datos), y en ese caso el método equals si da como resultado true. Utilizacién de los vectores Un ejemplo de utilizacién de los veetores es el siguiente programa: public class tenperaturas { private static int(] temperaturas1; final static int POS=10; //niimero de posiciones del array public static void main(Stringl] args) { int dato=0; int median0; temperaturasl = new int [20S]; for (int i=0;ice0s;it+)( //leer los valores de temperatura tev System.out-printin("Introduzca Temperatura: String sdato = system.console() .readLine() dato = Integer.parseInt (sdato) ; }eatch (Exception e) { system.out.printin("Error en la introduccién de datos"); v } temperaturas! [i]=dato; , for (int i=0;i

You might also like