Introducción a la Programación en Java



Documentos relacionados
abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Preliminares. Tipos de variables y Expresiones

Tema 1. Introducción a JAVA

TEMA 2. Agenda. Fundamentos de JAVA

Introducción al lenguaje de programación java

CONCEPTOS BASICOS DEL LENGUAJE JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Tema 2. El lenguaje de programación Java (Parte 1)

Introducción a la Programación en Java. Page 1

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

1 ELEMENTOS BASICOS DEL LENGUAJE

Modulo 1 El lenguaje Java

Tema 3 Elementos básicos de programación

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

1. Manejo de memoria estática 2. Manejo de memoria dinámica

19. Packages o paquetes

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012

11. Algunas clases estándar de Java (II)

Elementos léxicos del lenguaje de programación Java

8. Sentencia return y métodos

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

INTRODUCCIÓN A JAVA. Índice

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Programación Orientada a Objetos con Java

Repaso desarrollo de software Parte #1. Jorge Iván Meza Martínez

10. Algunas clases estándar de Java (I)

Repaso de las características más importantes de la programación Java y su adaptación a Android

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

2. Estructura de un programa en Java

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

FACULTAD DE INGENIERÍA

Computación III. Objetivo de aprendizaje del tema

Universidad Central de Bayamón COLEGIO DE DESARROLLO EMPRESARIAL Y TECNOLOGIA. Número Estudiante:

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

James Gosling, creador de Java

Introducción al lenguaje Java

Tema 1. Java: Conceptos generales

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Formato para prácticas de laboratorio

Fundamentos de la Programación

Introducción al tipo de dato ARRAY

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Objetivo de aprendizaje del tema

Introducción a la Programación 11 O. Humberto Cervantes Maceda

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

FACULTAD DE INGENIERÍA

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Java en 2 horas. Rodrigo Santamaría

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

Paquetes de java. java.applet

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

1 Estructura básica de un programa C++

Curso Introducción JAVA Pág.: 1

Introduciendo datos desde el

Academia técnica de computación A.T.C.

1.00 Clase 3. Tipos de datos en Java

Estructuras básicas de la programación en Java

Modelo de Objetos Distribuidos

ESTRUCTURA DE DATOS: ARREGLOS

Java: Clases Abstractas e Interfaces

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Programador en Plataforma Java y XML

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

JAVA PARA PRINCIPIANTES

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Curso PHP Módulo 1 R-Luis

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Introducción a Java LSUB. 15 de enero de 2015 GSYC

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

Práctica 2: Java Remote Method Invocation (RMI)

Ubicación e historia

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Tema: Introducción a Java y Netbeans

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.

Tipos primitivos y clases de interés

Tutorial Básico de vbscript

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

SISTEMAS DE NUMERACIÓN. Sistema decimal


Módulo 1 El lenguaje Java

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PART II: Moviendo al jugador

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

9. Objetos y clases Clases

Java es el lenguaje de programación que

Fundamentos del Lenguaje de Programación Java

Transcripción:

Contenido Introducción a la Programación en Java Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl! Generalidades de Java! Elementos de una aplicación simple! Una aplicación simple interactiva! Ingreso de datos por parámetros! Consideraciones sobre tipos primitivos numéricos! Uso de arreglos unidimensionales y multidimensionales Act. 2012.08.01 2 Hola mundo en Java Otro ejemplo sencillo public class Saluda{ public static void main (String[] arg) { System.out.println( "Hola mundo!" ); public class Factorial { public static void main( String arg[] ) { int número, i=1, fact=1; número = 3; while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact ); 3 4

Desafío preliminar! Escribir un programa en Java que muestre la suma de los números enteros contenidos entre 20 y 30, con ambos límites incluidos. Un tercer ejemplo import java.io.* ; public class Decisión{ public static void main(string arg[]) throws IOException { int número, i=1, fact=1; BufferedReader lector = new BufferedReader( new InputStreamReader(System.in )); String ingresado; System.out.println( "Ingrese número: " ); ingresado = lector.readline( ); número = Integer.parseInt( ingresado ); if( número >= 4){ System.out.println( "Me gusta este número" ); System.out.println( "Es mayor o igual a cuatro"); else{ System.out.println( "Odio el valor" + número ); System.out.println( "Es menor que cuatro ); 5 6 Finalemente, un cuarto ejemplo import java.io.* ; public class Factorial2 { public static void main(string arg[]) throws IOException { int número, i=1, fact=1; BufferedReader lector = new BufferedReader( new InputStreamReader(System.in )); String ingresado; System.out.println( "Ingrese número: " ); ingresado = lector.readline( ); número = Integer.parseInt( ingresado ); while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact ); Otros desafíos! Escribir un programa que reciba cinco puntajes. Si la suma de los puntajes es superior a 70 puntos, el programa deberá mostrar la palabra GANÓ, en caso contrario, la palabra PERDIÓ.! Escribir un programa que reciba un número, y que muestre la secuencia de números enteros positivos desde el cero hasta el número ingresado. 7 8

Qué es JAVA? Sección 1 Generalidades de Java! Java es: " un lenguaje de programación orientado a objetos; y " una plataforma de ejecución para programas escritos en lenguaje Java! Java fue desarrollado por un equipo de investigadores de SUN Microsystems. 10 Para qué sirve JAVA?! Java permite: " Construir aplicaciones: programas computacionales que apoyan el trabajo o resuelven problemas específicos de usuarios (funcionan stand-alone). Desarrollo y ejecución de aplicaciones en otros lenguajes Compilador para Windows 111000 1 1110001000111111111 00011101111011010 " Construir applets: programas de menor envergadura que se ejecutan al momento de cargar una página WEB (son ejecutados por un browser). Program Hola; begin i :=1; writeln( i ) end. Compilador para Linux 0000110101100 00111 00011100010001000 0001110 Ejemplo de applet: Código fuente http://java.sun.com/applets/jdk/1.4/demo/applets/drawtest/example1.html Compilador para Solaris 11100000101100 00111 00000101000 0001111110111111010 Código objeto 11 12

Desarrollo y ejecución de aplicaciones en JAVA Intérprete Java: Java Virtual Machine (JVM) Compilador Java Windows Intérprete Java Windows 111000 1 1110001000111111111 00011101111011010 Bytecode 101001010 001001001 public class Hola { public static... i=1; System.out.. Código fuente Compilador Java Linux Compilador Java Solaris 1111000011 110000 0000111100 001111 Bytecode Intérprete Java Linux 0000110101100 00111 00011100010001000 0001110 Intérprete Java Solaris 11100000101100 00111 00000101000 0001111110111111010 JVM Windows 101011 1 11 1 0 JVM Linux 001010 1011 1 011 1 JVM Solaris 111111 1101 1001 1 13 14 Componentes de Java! Java se compone de: " Compilador (Java-compiler) " Intérprete (Java) " Biblioteca de clases (Java API o Application Programmer Interface) " Utilitarios de desarrollo (para debug, documentación, etc.) Java en distintos tamaños J2ME: Java 2 Micro Edition! Lo anterior se encuentra en el SDK (Software Development Kit) distribuido por SUN- Microsystems (ahora Oracle) J2SE: Java 2 Standard Edition J2EE: Java 2 Enterprise Edition 15 16

Cómo es una aplicación en Java?! El programa Hola Mundo: Sección 2 Elementos de una aplicación simple en Java Código fuente Compilación Ejecución public class Saluda{ public static void main (String[] arg) { System.out.println( hello world ); c:\>javac Saluda.java c:\> c:\>java Saluda hello world c:\> 18 Código fuente Desarrollo y ejecución e aplicación en Java public class Saluda{ public static void main (String[] arg) { System.out.println( hello world ); Saluda.java Tipos de datos en Java! Los tipos de datos utilizados por programas en Java se clasifican en dos categorías: Bytecode JVM Windows Compilador Java 101001010 001001001 JVM Linux Saluda.class JVM Solaris " Primitivos: sirven para definir variables que guardan valores numéricos, lógicos y caracteres unitarios. " Clases e interfaces: sirven para definir variables que almacenan tipos de datos estructurados y las funciones asociadas. 101011 1 11 1 0 hello world 001010 1011 1 011 1 hello world 111111 1101 1001 1 hello world 19 20

Tipos de datos primitivos! Java soporta los siguientes tipos de datos primitivos: " Entero " Punto flotante " Lógico " Caracter Tipos de datos primitivos (cont.)! Familia de datos enteros: byte, short, int y long. Tipo Almacena Rango byte Entero de 8 bit -128 hasta 127 short Entero de 16 bit -32.768 hasta 32.767 int Entero de 32 bit -2.147.483.648 hasta 2.147.483.647 long Entero de 64 bit -9.223.372.036.854.755.808 hasta 9.223.372.036.854.755.807 21 22 Tipos de datos primitivos (cont.) Tipos de datos primitivos (cont.)! Familia de datos punto flotante: float y double.! Tipo caracter: char. Tipo Almacena Rango float Punto flotante 32 bit 7 dígitos significativos (10-46, 10 38 ) double Punto flotante 64 bit 15 dígitos significativos (10-324, 10 308 ) Tipo Almacena Rango char Carácter Unicode! Tipo lógico: boolean. Tipo Almacena Rango boolean Lógico false y true 23 24

Tipo de dato String! El String es un tipo de dato que permite trabajar con cadenas de caracteres, por ejemplo: Hola mundo, Mario Mora, 12/10/99, A,.! Es una clase, no un tipo primitivo, pero se utiliza en forma muy similar a estos últimos. Operadores básicos para tipos primitivos! Operador de asignación: =! Operadores numéricos: " Binarios: + (suma), - (resta), * (multiplicación), / (división), % (módulo o resto de la división entera) " Unarios: ++ (autoincremento), -- (autodecremento) 25 26 Operadores básicos para tipos primitivos (cont.) Estructuras de control! Operadores relacionales: == (igual a)!= (distinto de) < (menor que), <= (menor o igual que), > (mayor que), >= (mayor o igual que).! Operadores lógicos: && (AND) (OR)! (NOT)! Decisión " Simple: if ( condición ) instrucción if ( condición ) instrucción 1 else instrucción 2 " Compleja: if ( condición ) { instrucción 1-1 instrucción 1-2... else { instrucción 2-1 instrucción 2-2... 27 28

Estructuras de control (cont.) Identificadores! Iteración " Mientras - repetir: while ( condición ) instrucción while ( condición ) { instrucción 1 instrucción 2... " Hacer - mientras: do instrucción while ( condición ) do { instrucción 1 instrucción 2... while ( condición )! JAVA es sensible a mayúsculas y minúsculas. Es decir, JAVA considera distinto Nombre y nombre! Un identificador válido consiste en una combinación de de letras, dígitos y el carácter underscore. No puede comenzar por un dígito. Ejemplo: - Válidos: edad, nota_alumno, _peso, estadosalud - No válidos: 1ero, km/hora, Alumno(s), peso total 29 30 Declaración de variables! Una variable se declara según el formato: tipo identificador [=valor] [, identificador [ = valor ] ] Por ejemplo: int a, b, c double peso = 7.05 char letra = T byte edad = 20, veces = 3 Algunos métodos (funciones) de utilidad! Despliegue de datos: System.out.print() : escribe. System.out.println() : escribe y cambia de línea. Por ejemplo: System.out.println( Hola ) System.out.println( Hola + nombre )! Convención: el identificador de una variable comenzará en minúsculas. Por ejemplo: edad, edadalumno, estadocivil, eselultimo 31 32

Algunos métodos (funciones) de utilidad (cont.)! Convertir de String a número : Byte.parseByte() Short.parseShort() Integer.parseInt() Float.parseFloat() Double.parseDouble() Por ejemplo: x = Integer.parseInt( 50 ) y = Integer.parseInt( dato ) + 40 33 Comentarios y documentación! Se pueden incluir comentarios en el código usando los siguientes marcadores: // comentario hasta fin de línea /* comentario de múltiples líneas */ /** comentario de documentación @author @exception @see @param @return @version */ 34 Estructura de una aplicación simple Ejemplo: programa no interactivo /** Definición Ejemplo de una aplicación de la */ aplicación (clase) public class IdentificadorClase { public static void main (String[ ] idarreglo ) {... // Fin método main // Fin clase Método main /** Programa ejemplo para cálculo del Factorial de un número específico. @author Franco Guidi */ public class Factorial1 { Identificador public static void main( String arg[] ) { de la clase (programa) int número, i=1, fact=1; número = 3; while( i <= número ) { fact = fact * i; i++; Método main Identificadores de variables System.out.println( "El factorial de " + número + " es " + fact ); // Fin método main // Fin clase 35 36

Estructura de la aplicación Valores literales /** Programa ejemplo para cálculo del Factorial de un número específico. @author Franco Guidi Clase */ public class Factorial1 { public static void main( String arg[] ) { int número, i=1, fact=1; número = 3; while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact );! Son valores que aparecen explícitamente en el código fuente. Por ejemplo: S : tipo char S, Juan, 100 : tipo String 150 : tipo int 150.0 : tipo double 150.0f : tipo float 0150: tipo int octal 0x150: tipo int hexadecimal // Fin método main // Fin clase Método main 37 38 Valores literales /** Programa ejemplo para cálculo del Factorial de un número específico. @author Franco Guidi literal */ public class Factorial1 { public static void main( String arg[] ) { int número, i=1, fact=1; literal número = 3; while( i <= número ) { fact = fact * i; literal literal i++; System.out.println( "El factorial de " + número + " es " + fact ); // Fin método main // Fin clase literal 39 Características generales de una aplicación simple! Se estructura como una clase que tiene un método main.! El nombre de la clase debe ser el mismo que el del archivo que la contiene.! La aplicación se compila invocando al compilador Java junto con el nombre del archivo. Ejemplo: c:\tmp>javac Factorial1.java Compilador Archivo 40

Características generales de una aplicación simple! El programa puede ser invocado desde la línea de comandos, invocando al intérprete Java junto con el nombre de la aplicación. Ejemplo: c:\tmp>java Factorial1 Sección 3 Intérprete Programa Ingreso de datos por parámetro 41 Traspaso de datos por parámetro! El método main puede recibir parámetros desde la línea de comandos del intérprete. Estos se almacenan en las posiciones del arreglo de String indicado en la declaración del método. Parámetro c:\tmp>java Factorial2 3 Traspaso de datos por parámetro! Un arreglo es una colección de datos de un mismo tipo, referenciada por un nombre. Cada dato ocupa una posición dentro de la colección. La cantidad total de posiciones es fija, y son accesibles por medio de un subíndice, que se inicia en cero (0).! Ejemplo: un arreglo de Strings llamado textos, de largo 4: textos hola 23 luis 2rwr 0 1 2 3 textos[0] contiene hola textos[1] contiene 23 textos[4] se encuentra indefinido (error al tratar de acceder) 43 44

Ejemplo: programa que acepta datos por parámetro /** Programa ejemplo para cálculo del Factorial de un número específico, acepta el número proporcionado por parámetro. @author Franco Guidi */ public class Factorial2 { Consideraciones importantes! Java requiere la declaración de variables antes de que sean utilizadas. El tipo de una variable no puede ser modificado. Se dice que es un lenguaje fuertemente tipificado. public static void main( String arg[] ) { int número, i=1, fact=1; número = Integer.parseInt( arg[0] ); while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact ); // Fin método main! Java distingue entre mayúsculas y minúsculas.! Las expresiones matemáticas se evalúan con precedencia de * y / sobre + y -. // Fin clase 45 46 Características generales de una aplicación simple (cont.)! Las instrucciones se organizan de acuerdo con las estructuras de control: " secuencia " decisión : if( cond )... else... " Iteración: do... while( cond ) o while( cond )...! Las instrucciones se separan mediante un punto y coma ( ; ).! Los bloques son instrucciones agrupadas mediante paréntesis de llave ( { y ). Se utilizan en decisiones e iteraciones, y no llevan punto y coma al final (después de la llave de cierre). Recomendaciones generales! Documentar los programas.! Adoptar convención para definición de identificadores: " Variables: primeraletraenminúscula " Clases: PrimeraLetraEnMayúscula " Métodos: primeraletraenminúscula 47 48

Una aplicación interactiva Sección 4 Aplicaciones interactivas (interfaz de consola) 50 Una aplicación interactiva Importación de clases desde las Java API class Factorial3 Clases de java.lang se importan automáticamente import java.io.* Otras clases deben importarse explícitamente, indicando el nombre del package que las contiene Java API package java.lang class String class Long class System class Integer class Math class Byte class Double class Short class Float package java.io class InputStreamReader class IOException class BufferedReader package 51 52

Componentes de la Java API! Algunos de los packages de la Java API son: " java.applet : construcción de applets. " Java.beans : desarrollo y reutilización de componentes. " java.awt : componentes visuales. " java.io : entrada y salida de datos. " java.lang : clases de uso común. " java.math : soporte para tipos numéricos con SQL. " java.net : componentes para trabajos en red. " java.rmi : invocación remota de métodos. " java.sql : soporte para JDBC. " java.security : firma de applets y codificación de datos. " java.text : manejo de distintos tipos de textos. " java.util : clases varias de utilidad. (Remitirse a documentación del JDK para una descripción detallada) 53 Instanciación del objeto lector datos del usuario objeto lector aplicación new Se crea una instancia de clase clases del package java.io BufferedReader InputStreamReader 54 Uso del objeto lector! Puede utilizarse las veces que sea necesario: String dato; int base, expo; BufferedReader usuario = new BufferedReader ( new InputStreamReader( System.in ) ); System.out.println( Ingrese base : ); dato = usuario.readline( ) ; base = Integer.parseInt( dato ); System.out.println( Ingrese exponente : ); dato = usuario.readline( ) ; expo = Integer.parseInt( dato ); Vocabulario mínimo! En la aplicación interactiva se observan las siguientes instrucciones: int número; String ingresado; número = Integer.parseInt( ingresado ); String ingresado; BufferedReader lector = new BufferedReader ( new InputStreamReader( System.in ) ); ingresado = lector.readline( ) ; 55 56

Vocabulario mínimo (cont.) Vocabulario mínimo (cont.) Argumento o parámetro actual ingresado = lector.readline( ) ; número = Integer.parseInt( ingresado ); Clase Integer Método de la clase Integer (los métodos llevan paréntesis al final) Objeto de la clase BufferedReader, también llamado instancia de la clase BufferedReader Método del objeto lector (este método no recibe parámetros, pero de todas formas lleva paréntesis) El método parseint de la clase Integer retorna el equivalente a int de un String recicibido como parámetro. Este valor es asignado a la variable número. El método readline() del objeto lector retorna un String ingresado por el usuario. Este valor es asignado a la variable ingresado. 57 58 Nota...! El valor retornado por un método puede usarse como parámetro actual de otro método: int base, expo; BufferedReader usuario = new BufferedReader ( new InputStreamReader( System.in ) ); System.out.println( Ingrese base : ); base = Integer.parseInt( usuario.readline( ) ); System.out.println( Ingrese exponente : ); expo = Integer.parseInt( usuario.readline( ) ); usuario.readline() retorna un String que es recibido como parámetro por el método parseint de la clase Integer Aplicación interactiva: resumen Se requiere:! La importación de clases del package java.io.! La indicación del sistema de control de excepciones.! La instanciación de un objeto de la clase BufferedReader.! La invocación del método readline() del objeto de la clase BufferedReader. 59 60

Uso de clases y objetos: resumen de lo utilizado! Las clases nos permiten realizar determinadas tareas.! Las clases se encuentran disponibles en packages, que deben ser importados a los programas.! Normalmente se deben crear instancias de clase (u objetos), para poder usar los métodos que estas proveen.! Existen, sin embargo, clases cuyos métodos pueden utilizarse sin haber instanciado objetos. Sección 5 Consideraciones sobre tipos primitivos numéricos 61 Tipos de variables y valores: regla general! Las variables almacenan datos del mismo tipo que han sido definidas. pero...! Bajo consideraciones especiales las variables pueden recibir datos de otros tipos: " Promoción automática de tipos " Casting Cambio del tipo de un valor: promoción automática! Promoción automática de tipos (conversión por ensanchamiento): una variable de un tipo de dato puede recibir un valor de otro tipo si: " los dos tipos son compatibles(*), y " el tipo de destino es de mayor jerarquía que el tipo de origen (*)Tipos compatibles: los tipos numéricos son compatibles entre sí. 63 64

Cambio del tipo de un valor: promoción automática! Ejemplo de promoción automática de tipos: dato tipo int es almacenado en una variable double. int x = 4; double y; x y 4 Cambio del tipo de un valor: casting! Casting: permite convertir un valor de un tipo de mayor jerarquía a otro de menor jerarquía (funciona si y sólo si el tipo de menor jerarquía puede contener al valor convertido). El casting tiene prioridad sobre los operadores +,-,* y /. Formato: var1 = (tipo de var1) var2 double j=1.0; int i; i = (int) j; int j=200; byte i; i = (byte) j; y = x; y 4.0 x 4 casting Incorrecto: el máximo valor que puede contener una variable byte es 127. La variable i queda con valor incorrecto. 65 66 Evaluación de expresiones numéricas! Regla general: La operación de dos números de un mismo tipo, genera un resultado también del mismo tipo.! Se exceptúan de la regla anterior las operaciones sobre datos tipo byte o short. Evaluación de expresiones: promoción automática de byte y short! La operación de dos datos de tipo byte o short, genera como resultado un int. byte i=2, j=3, k; k = i + j ; int byte i=2, j=3; int k; k = i + j ; int a=10, b=4, c; c = a + b ; 14 int int a=10, b=4, c; c = a / b ; 2 int 5 Error: no puede almacenarse un int en una variable byte. 5 Correcto int 67 68

Evaluación de expresiones: resultado de una operación! El resultado de cualquier expresión es del tipo correspondiente al del operando de mayor jerarquía, en el orden: " double " float " long " int int i=10, k; double j=2.0; k = i / j ; double Ejemplos de resultados de operaciones! Suponer variable x definida como double: x = 10 / 4; // x toma valor 2.0 double x = 10.0 / 4; x = 10.0f / 4; x = (double) 10 / 4; // x toma valor 2.5 double // x toma valor 2.5 double // x toma valor 2.5 double x = (double) (10/4); // x toma valor 2.0 double Automáticamente es promovido a double antes de realizarse la operación. 5.0 Error: no puede almacenarse un double en una variable int. 69 70 Ejemplos de resultados de operaciones (cont.) Precisión de los cálculos! Suponer variable x definida como float: x = 10 / 4; // x toma valor 2.0 float x = 10.0 / 4; // Error: x no puede almacenar valor 2.5 double x = 10.0f / 4; // x toma valor 2.5 float x = (float) 10 / 4; // x toma valor 2.5 float x = (double) (10/4); // Error: x no puede almacenar valor 2.0 double! Las operaciones aritméticas con tipos enteros (byte, short, int o long), se realizan con alta precisión.! Las operaciones aritméticas con tipos de punto flotante (float o double), se realizan con menor precisión. Ejemplos*: 0.1 sumado 10 veces: 0.9999999999999999 0.01 sumado 100 veces: 1.0 0.001 sumado 1000 veces: 1.0000000000000007 (*) pruebas efectuadas con variable double) 71 72

Precisión de los cálculos (cont.)! Las operaciones aritméticas con valores float o double fallan en la evaluación de igualdades: if( var1 == var2 ) System.out.println( Son iguales ); else System.out.println( No son iguales ); Sección 6! Solución: determinar si la diferencia en valor absoluto de las variables es menor que un error predeterminado: Uso de arreglos con tipos primitivos if( Math.abs( var1 - var2 )< 0.0000001 ) System.out.println( Son iguales ); else System.out.println( No son iguales ); 73 Arreglos en Java! Los arreglos son colecciones ordenadas de datos del mismo tipo. " Ejemplos: Arreglo de Strings: Ana Arreglo de bytes: 3 27 50 1 0 4 Casa Auto 12 $#! Arreglo de doubles: 3.0 50.4 0.0-4.3 Identificación y tamaño de un arreglo! Cada arreglo se reconoce por un identificador y cada dato se almacena en una posición indexada.! Un arreglo de largo N, tiene posiciones indexadas mediante enteros desde 0 hasta N-1. nombres Ana Juan Pedro Pía Mario Posición: 0 1 2 3 4! El máximo largo posible para un arreglo corresponde al mayor valor permitido para un int. 75 76

Pasos para crear un arreglo en Java Creación de un arreglo 1º: Definir una variable que identifique al arreglo, indicando la naturaleza de los datos que se almacenarán: o alternativamente: tipo[ ] variable tipo variable[ ] 2º: Instanciar el arreglo indicando el largo que tendrá, y asignarlo a la variable: variable = new tipo[ entero ] int[] edades; edades = new int[8]; Define que la variable edades referenciará un arreglo de enteros. Instancia un arreglo de enteros de 8 posiciones. Asigna el arreglo instanciado a la variable edades. 77 78 Ejemplos de creación de arreglos Forma abreviada para crear arreglos! Arreglo de byte de largo 1000: byte[] valores; valores = new byte[1000];! Arreglo de double de largo 4: double nota[]; nota = new double[4];! Arreglo de String de largo 20:! La definición de variable, instanciación del arreglo y su asignación a la variable puede realizarse en una sola instrucción: Ejemplo: tipo[ ] variable = new tipo[ entero ] double[] nota = new double[4]; int largo = 20; String[] nombres; nombres = new String[ largo ]; 79 80

Otra forma para instanciar arreglos! También es posible instanciar arreglos escribiéndolos como literales en el código fuente: Acceso a las posiciones de un arreglo! Se deben accesar mediante un subíndice de tipo entero (byte, short, int o long): int[] nota = { 23, 14, 55, 18 ; Instancia un arreglo de enteros de largo 4.... int i; long[] números; números = new long[ 20 ];... i=0; while( i < 20 ){ números[ i ] = i ; i++;... 81 82 Recorrer un arreglo! Se puede utilizar la propiedad length del arreglo para controlar procesos iterativos sobre el mismo:... int i; long[] números; números = new long[ 20 ];... i=0; while( i < números.length ) { System.out.println( números[ i ] ); i++;... Error típico en el manejo de arreglos! Tratar de accesar una posición inexistente del arreglo, por ejemplo, la posición 10 de un arreglo de largo 10. Cuando lo anterior ocurre, se genera en tiempo de ejecución una excepción denominada: ArrayIndexOutOfBoundsException 83 84

Consideraciones respecto del largo de un arreglo! Una vez instanciado un arreglo, no puede modificarse su largo.! length es una propiedad o atributo del arreglo que contiene el largo del mismo. double[] nota; nota = new double[4]; System.out.println( El largo es + nota.length ); Las propiedades o atributos se consultan sin paréntesis al final, a diferencia de los métodos. Consideraciones respecto del arreglo de parámetros! El arreglo de parámetros declarado al inicio del método main, es instanciado por Java al momento de ejecutarse la aplicación.! El arreglo se instancia con un largo igual a la cantidad de parámetros traspasados en la línea de comandos.! El arreglo debe ser declarado como arreglo de Strings. 85 86 Resumen de arreglos! Los arreglos se instancian.! La instanciación ocurre de tres formas: " cuando se utiliza el operador new. " cuando el arreglo es declarado literalmente. " cuando se ejecuta la aplicación, en el caso particular del arreglo de parámetros del método main. Resumen de arreglos! Los arreglos son referenciados desde una variable.! Todas las posiciones del arreglo son del mismo tipo.! El atributo length permite acceder al largo del arreglo.! Tratar de acceder una posición inexistente del arreglo genera una excepción ArrayIndexOutOfBoundsException. 87 88

Matrices! Un arreglo puede tener más de una dimensión.! Los arreglos de más de una dimensión se denominan matrices.! El caso más común es la matriz bidimensional: Matriz de dos dimensiones 12-3 4 55 4 700-8 0 1 0-2 14 Características de una matriz! Todas las posiciones de una matriz son de un mismo tipo (al igual que el caso de los arreglos).! La matrices se identifican por su nombre, y se caracterizan además por sus dimensiones.! Las dimensiones de una matriz no se pueden modificar.! Ejemplo: mediciones 12-3 4 55 4 700-8 0 1 0-2 14 Matriz mediciones de datos enteros, de dimensiones 3 x 4 89 90 Convenciones respecto de las matrices! En el caso de las matrices de dos dimensiones, llamaremos a la primera dimensión fila, y a la segunda, columna.! Representaremos visualmente en nuestros ejemplos las filas hacia abajo y las columnas hacia el lado.! La primera fila será la fila 0 y la primera columna, la columna 0. Columnas 0 1 2 3 Creación de Matrices! Para crear matrices: tipo[ ] [ ] variable = new tipo[ entero1 ] [ entero2 ] Por ejemplo: int[ ][ ] utilidad; utilidad = new int[10][15];! O mediante literales: Filas 0 1 12-3 4 55 4 700-8 0 Matriz de 3 filas y 4 columnas double[ ][ ] uti = { {-1, 7, 15, {3, 0, 2, {4, -3, 12 ; 2 1 0-2 14 uti[1][2] contiene un 2. 91 92

Acceso a posiciones! Las posiciones de una matriz se acceden independientemente (una a una).! Se utiliza un subíndice para especificar cada dimensión! En una matriz de dos dimensiones, el primer subíndice representa la fila, y el segundo, la columna.! Ejemplo mediciones mediciones[0][0] contiene un 12 0 1 2 3 mediciones[0][3] contiene un 55 0 12-3 4 55 mediciones[2][0] contiene un 1 mediciones[2][3] contiene un 14 1 4 700-8 0 mediciones[1][2] contiene un 8 mediciones[2][1] contiene un 0 2 1 0-2 14 etc... Particularidades de los arreglos multidimensionales en Java! En rigor Java no provee arreglos multidimensionales. Java los implementa mediante arreglos de arreglos.! Esto permite crear, por ejemplo, matrices bidimensionales con cantidades de posiciones distintas por fila: int[ ][ ] nota = { {-1,7,15, {3, 2, {4,-3,12, {3 ; 93 94 Es decir, lo anterior queda así int[ ][ ] nota = { {-1,7,15, {3, 2, {4,-3,12, {3 ; -1 7 15 3 2 4-3 12 3 Matrices N-dimensionales! Se pueden crear matrices de más de dos dimensiones.! Ejemplo (un cubo): int[][][] dato = new int[4][10][6]; 95 96

Para conocer las dimensiones de una matriz! Se utiliza la propiedad length.! Ejemplo: " Si datos es una matriz bidimensional: datos.length : contiene el largo de la primera dimensión (cantidad de filas) datos[0].length : contiene el largo de la fila 0 (cantidad de columnas). 97