UNIVERSIDAD AUTNOMA DE SINALOA Facultad de Informtica Culiacn Lenguajes de Programacin UNIDAD IV Estudio del Lenguaje de Programacin JAVA Introduccin a Java El origen de Java Los creadores de Java son James Gosling y Bill Joy. Java desciende de un lenguaje llamado Oak cuyo propsito era la creacin de software para la televisin interactiva. Las caractersticas de Oak eran: Pequeo. Robusto. Independiente de la mquina. Orientado a objetos. El origen de Java El proyecto de televisin interactiva fracas y el inters de los creadores de Oak se dirigi a Internet bajo el lema La red es la computadora. Los criterios de diseo de Java fueron: Independiente de la mquina. Seguro para trabajar en red. Potente para sustituir cdigo nativo Caractersticas del lenguaje La principal caracterstica de Java es la de ser un lenguaje compilado e interpretado. Todo programa en Java ha de compilarse y el cdigo que se genera bytecodes es interpretado por una mquina virtual. De este modo se consigue la independencia de la mquina, el cdigo compilado se ejecuta en mquinas virtuales que si son dependientes de la plataforma. . Caractersticas del lenguaje Java es un lenguaje orientado a objetos de propsito general. Aunque Java comenzar a ser conocido como un lenguaje de programacin de applets que se ejecutan en el entorno de un navegador web, se puede utilizar para construir cualquier tipo de proyecto. Su sintaxis es muy parecida a la de C y C++ pero hasta ah llega el parecido. Java no es una evolucin ni de C++ ni un C++ mejorado Herramientas de desarrollo Las herramientas de desarrollo de Java se conocen como Java Development Kit(JDK). Este conjunto de herramientas cuenta entre otros con: Un compilador de lnea de comandos llamado javac. La mquina virtual de Java con la que poder ejecutar aplicaciones lamada java. Una herramienta de documentacin javadoc. Una herramienta para empaquetar proyectos jar. Herramientas de ejecucin Cuando un usuario slo necesita el ejecutar la aplicacin desarrollada en Java, se requiere Java Runtime Environment (JRE). Por otro lado que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario JDK, que adems del JRE (mnimo imprescindible) incluye, entre otros, un compilador para Java. Maquina Virtual Java (JVM) Una Mquina virtual Java (en ingls Java Virtual Machine, JVM) es un programa nativo, es decir, ejecutable en una plataforma especfica. JVM es capaz de interpretar y ejecutar instrucciones expresadas en un cdigo binario especial (el Java bytecode), el cual es generado por el compilador del lenguaje Java. La JVM es una de las piezas fundamentales de la plataforma Java, se sita en un nivel superior al Hardware del sistema sobre el que se pretende ejecutar la aplicacin, y este acta como un puente que entiende tanto el bytecode, como el sistema sobre el que se pretende ejecutar. Maquina Virtual Java (JVM) Cuando se escribe una aplicacin Java, se hace pensando que ser ejecutada en una mquina virtual Java en concreto, siendo sta la que en ltima instancia convierte de cdigo bytecode a cdigo nativo del dispositivo final. La gran ventaja de la mquina virtual java es aportar portabilidad al lenguaje de manera que se han creado diferentes mquinas virtuales java para diferentes arquitecturas y as un programa compilado .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de dicha mquina virtual para dichos entornos. De ah el famoso axioma que sigue a Java, "escrbelo una vez, ejectalo en cualquier parte", o "Write once, run anywhere". Estructura General de un Programa Java public class Programa { public static void main(String args[]) { System.out.println("Hola Mundo!!!"); } } Caractersticas de la Clase La primer caracterstica de un programa Java es que este debe definir una Clase que lleve por nombre el mismo nombre del archivo fuente. Para definir una Clase se utiliza el vocablo class as como un modificador de acceso, en este caso se utiliza el modificador public. Dentro de la definicin de la Clase se deben incluir los respectivos mtodos que podrn ser invocados. En el caso del Programa.java nicamente es definido el mtodo main, dicho mtodo es el punto de entrada al ejecutarse el programa (Clase). Mtodo principal main El mtodo principal main de una Clase Java es inalterable, es este sentido inalterable se refiere a sus caractersticas: Siempre debe incluir los modificadores: public y static. Nunca puede retornar un valor como resultado, por ende, siempre debe indicar el valor void como retorno. Su parmetro de entrada siempre ser un arreglo de String's (String[]) el cual es tomado de la lnea de comandos o una fuente alterna. Representa el nico mecanismo automtico para realizar tareas al invocarse una Clase. Compilacin y Ejecucin Para generar una Clase compilada (Byte-Code) se utiliza el comando javac : javac Programa.java Lo anterior genera un archivo llamado programa.class; para ejecutar este Byte-Code es empleado el comando java: java Programa Al invocar el comando anterior ser ejecutada la Clase Programa.class. Ntese que el comando java recibe el nombre de la Clase sin la extensin .class. Recomendaciones En Java existen ciertas reglas de codificacin que son comnmente utilizadas por los programadores: Los nombre de las clases deben empezar por mayscula. Los atributos y mtodos de las clases deben empezar por minsculas y si estn formadas por varias palabras, se escriben sin espacios y la primera letra de cada palabra en mayscula. Las instancias de las clases siguen la misma recomendacin que los mtodos y atributos. Las constantes se escriben en maysculas. Sintaxis de Java Comentarios En Java existen tres tipos de comentarios: Comentarios de una solo lnea // Esta es una lnea comentada. Comentarios de bloques /* Aqu empieza el bloque inicia y aqu termina */ Comentarios de documentacin. /** Los comentarios de documentacin se comentan de este modo */ Documentacin Java facilita etiquetas para los comentarios de documentacin. Las siguientes son las etiquetas que se pueden utilizar en los comentarios de documentacin de clases: @author [Nombre y Apellidos del autor] @version [Informacin de la versin] Documentacin Para comentarios de documentacin de mtodos: @param [nombreDelParametro] [Descripcin] @return [Descripcin del parmetro devuelto] Documentacin /** * Esta clase es mi primer programa Java * @author Gerardo Beltrn Gutirrez * @version 1.0, 15 de Abril de 2012 */ public class Programa { public static void main(String args[]) { System.out.println("Hola Mundo!!!"); double z = suma(2,3); System.out.println(z); } // Fin funcion main Documentacin /** * Funcin que retorna la suma de 2 nmeros. * @param x Primer numero a sumar. * @param y Segundo numero a sumar. * @return El valor de la suma de x mas y */ public static double suma(double x, double y){ return x + y; } // Fin funcin suma } // Fin clase Programa El conjunto de caracteres de Java Los caracteres que pueden aparecer en un programa Java para formar las constantes, variables, expresiones, etc., son: Las letras maysculas y minsculas de la A(a) a la Z(z) de los alfabetos internacionales (la y son vlidas) Dgitos (0, 1, 2, ...) Los caracteres ' _ ' '$'. Los caracteres especiales y signos de puntuacin siguientes: + - * / = % & # ! ? ^ ~ \ | < > ( ) [ ] { } : ; . , Espacios en blanco: se llaman espacios en blanco a los siguientes caracteres: espacio, tabulador, salto de lnea. Su labor es la misma que la de un espacio en blanco: separar entre elementos de un programa. Identificadores Los identificadores son los nombres que se asigna a variables, constantes, clases, mtodos, paquetes, etc. de un programa. Caractersticas de un identificador Java: Estn formados por letras y dgitos. Pueden empezar por una letra o Los caracteres '_' '$'. No pueden contener ninguno de los caracteres especiales. No puede ser una palabra reservada de Java. Palabras reservadas abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while Separadores En Java existen seis separadores distintos. Los parntesis (): Delimitan listas de parmetros. Modifican la precedencia de una expresin. Delimitan condiciones. Indican el tipo en las operaciones de conversion. Las llaves {}: Definen bloques de cdigo. Delimitan las lista de valores iniciales de los arrays. Separadores Los corchetes []: Declaran vectores y permiten acceder a sus elementos. El punto y coma ; : Terminan instrucciones. La coma ,: Separan identificadores en declaraciones. El punto .: Acceden a los atributos y mtodos de una clase. Tipos de datos Los tipos de datos primitivos Tipo Tamao Rango de Valores Valor Inicial Clase Asociada byte 1 -128 a 127 0 Byte short 2 -32768 a 32767 0 Short int 4 -2147483648 a 2147483647 0 Integer long 8 -9223372036854775808 a 9223372036854775807 0 Long float 4 3.4x10 -38 a 3.4x10 38 0.0 Float double 8 1.8x10 -308 a 1.8x10 308 0.0 Double char 2 \u0000 a \uFFFF \u0000 Character boolean - true false false Boolean void - - - Void Conversin de tipos La conversin o promocin automtica de tipos se puede dar en dos casos: Al evaluar un expresin los tipos ms pequeos promocionan al mayor tipo presente en la expresin. Si a una variable de un tipo se le asigna un valor de un tipo ms pequeo, este promociona al tipo de la variable a la que se asigna. Siempre se puede forzar el cambio de tipo mediante el uso de casting. Tipos de datos referencia En Java los objetos, instancias de clases, se manejan a travs de referencias. Cuando se crea una nueva instancia de una clase con el operador new este devuelve una referencia al tipo de la clase. Ejemplo: Circulo unObjeto = new Circulo(); Tipos de datos referencia El operador new() reserva espacio en memoria para contener un objeto del tipo Circulo y devuelve una referencia que se asigna a unObjeto. A partir de aqu accedemos al objeto a travs de su referencia. Es posible, por tanto, tener varias referencias al mismo objeto. Circulo unObjeto = new Circulo(); unObjeto.cambiarRadio(10); Circulo otroObjeto = unObjeto; otroObjeto.cambiarRadio(20); mbito de las variables El mbito de las variables est determinado por el bloque de cdigo donde se declaran y todos los bloques que estn anidados por debajo de este. { // Bloque externo int miEntero = 1; Circulo unObjeto = new Circulo(); { // Bloque interno int miEntero = 2; // Error ya est declarada unObjeto = new Circulo(10); // Correcto } } Operadores Comunes Grupo Operadores de igualdad Operadores relacionales Operadores condicionales Operador de incremento Operador de decremento Operadores aritmticos Operadores de asignacin Simbolo == != < > <= >= && || ?: ++ - - + - * / % = *= /= %= += -= <<= >>= &= ^= |= Java Scanner para lectura de datos La clase Scanner facilita la lectura de datos en los programas Java. 1. Escribir el import La clase Scanner se encuentra en el paquete java.util por lo tanto se debe incluir al inicio del programa la instruccin: import java.util.Scanner; Java Scanner para lectura de datos 2. Crear un objeto Scanner Tenemos que crear un objeto de la clase Scanner asociado al dispositivo de entrada. Si el dispositivo de entrada es el teclado escribiremos: Scanner teclado = new Scanner(System.in); Se ha creado el objeto teclado asociado al teclado representado por System.in Una vez hecho esto podemos leer datos por teclado. Java Scanner para lectura de datos METODO DESCRIPCIN nextXxx() Devuelve el siguiente token como un tipo bsico. Xxx es el tipo. Por ejemplo, nextInt() para leer un entero, nextDouble para leer un double, etc. next() Devuelve el siguiente token como un String. nextLine() Devuelve la lnea entera como un String. Elimina el final \n del buffer hasNext() Devuelve un boolean. Indica si existe o no un siguiente token para leer. hasNextXxx() Devuelve un boolean. Indica si existe o no un siguiente token del tipo especificado en Xxx, por ejemplo hasNextDouble() useDelimiter(String) Establece un nuevo delimitador de token. Java Scanner para lectura de datos Ejemplos de lectura: Para leer podemos usar el mtodo nextXxx() donde Xxx indica en tipo, por ejemplo nextInt() para leer un entero, nextDouble() para leer un double, etc. Ejemplo de lectura por teclado de un nmero entero: int n; System.out.print("Introduzca un nmero entero: "); n = sc.nextInt(); Java Scanner para lectura de datos Ejemplo de lectura de un nmero de tipo double: double x; System.out.print("Introduzca nmero de tipo double: "); n = sc.nextDouble(); Ejemplo de lectura de una cadena de caracteres: String s; System.out.print("Introduzca texto: "); s = sc.nextLine(); Java Scanner para lectura de datos import java.util.Scanner; public class Programa { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //crear un objeto Scanner double radio, area, perimetro; // declaracin de variables System.out.print("Introduzca el radio del Circulo: "); radio = sc.nextDouble(); //leer un double perimetro = 2*Math.PI*radio; area = Math.PI*Math.pow(radio,2); System.out.println("Perimetro: " + perimetro); System.out.println("Area: " + area); } } Ejercicios 1. Escriba un programa que dada la temperatura en grados Celsius los muestre en grados Fahrenheit. 1. Escriba un programa que dado la altura y el radio de la base de una figura cilndrica determine su volumen y superficie.