18/01/12 Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java Jesús Montes Sánchez jmontes@fi.upm.es ! Sintaxis básica ! Variables y 7pos ! Entrada/Salida básica ! Operadores y expresiones Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Estructura de un programa Java ! Un programa en Java es un conjunto de archivos .java que con7enen la implementación de una o mas clases java Sintaxis básica ! El programa debe tener una clase principal, que defina un punto de entrada ! Cuando se ejecuta el programa, la JVM ejecuta el punto de entrada de la clase principal Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Clase principal Programa de ejemplo ! Se indica como parámetro cuando se ejecuta la JVM // Esto es un comentario de una linea ! Debe haber sido compilada y su fichero .class debe exis7r dentro del CLASSPATH */ ! Posee un punto de entrada public class holaMundo { /* // Clase holaMundo ! Comienza con las palabras reservadas Comentarios Esto es un comentario de multiples lineas Clase principal /* El metodo main es el punto de comienzo del programa */ public static void main (String[] args) public static void main(String[] args) { ! Seguido de esto hay un bloque { } que con7ene el código que se ejecuta al comenzar el programa. System.out.println("Hola mundo"); } } Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Punto de entrada Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 1 18/01/12 Comentarios Bloques de código ! Sirven para explicar porciones del código a nosotros mismos (para el futuro) y a otros ! Zonas de texto entre { } ! Sucesión de sentencias sentencia1; ! Muy ú7l en zonas complejas ! Las sentencias terminan en ; sentencia2; ! Tan importante como escribir buen código ! Ignorado por el compilador ! Preferiblemente una sentencia por línea ! De una línea: precedido por // ! Se pueden anidar bloques { { // Comentario sentencia3; } ! Múl7ples líneas: entre /* y */ } Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Otros elementos del lenguaje ! Palabras reservadas ! Palabras propias del lenguaje Java ! Con significado específico ! El resaltado de sintaxis las iden7fica ! Variables y 7pos class, public, void, int… ! Sensibilidad a mayúsculas y minúsculas (case sensi4ve) ! Java hace dis7nción entre mayúsculas y minúsculas ! Importante tanto para palabras reservadas como para iden7ficadores Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Variables Tipo y valor ! Representan can7dades, cualidades y/o objetos del programa ! Es una región de memoria donde se guarda un valor que posteriormente será u7lizado por el programa ! Antes de usarlas debemos declararlas para que el compilador conozca: ! Su nombre ! Su ámbito de vida ! Su visibilidad ! Su 7po asociado Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Tipo: Valor: Zapatos El par de zapatos concreto que contenga Tipo: Valor: Líquido El líquido concreto que contenga Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 2 18/01/12 Declaración de variables ! Simple tipo identificador; ! Múl7ple tipo identificador1, identificador2; Tipos básicos ! Booleano: verdadero, falso ! Carácter: a, A, z, Z, 1, 9, #, ?, … ! Número entero: -­‐1, 33 ! Número real: 3.14, 5E-­‐10 ! Con asignación tipo identificador = valor; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Booleano ! Para representar valores lógicos: cierto o falso ! Se u7liza para representar el resultado de las operaciones lógicas y de comparación ! Tipo boolean Carácter ! Valores numéricos que se usan para representar caracteres (letras, números, símbolos) usando la tabla ACII o La7n 1 ! Tipo char ! Se expresan entre comillas simples: ‘a’, ‘4’, ‘#’ ! Valores true o false Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Número entero ! Para contar o numerar Número real ! Números reales, posi7vos o nega7vos y con o sin decimales ! Diferentes bases de representación Decimal (10): 0, -­‐1, 65184 Octal (8): 00, -­‐01, 0177240 Hexadecimal (16): 0x0, -­‐0x1, 0xFEA0 ! Tres niveles de precisión: short, int y long Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) ! Coma flotante ! Representación interna dis7nta a la de los enteros ! Notación decimal o cienqfica ! Dos niveles de precisión: float y double Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 3 18/01/12 Tipos básicos Tipo Tamaño en bits Valores true o false boolean Declaraciones de ejemplo int i; char 16 De \u0000 a \uFFFF float i, j, k; byte 8 De -­‐128 a 127 short 16 Número entero de -­‐32768 a 32767 char a = ‘x’, b = ‘4’, c = a; int 32 Número entero de -­‐231 a 231 -­‐ 1 long 64 Número entero de -­‐263 a 263 -­‐ 1 float 32 Número real en coma flotante double 64 Numero real en coma flotante Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) boolean b = false; double k = -0.25; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) ¿Son a y b iguales? ! Caso 1 int a = 1; char b = ‘1’; ! Caso 2 int a = 1; long b = 1; ! Caso 3 int a = 1; double b = 1.0; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Conversión automá7ca ! La hace automá7camente el compilador ! Es segura ! Solo entre 7pos compa7bles ! Se realiza por promoción: de un 7po “menor” a uno “mayor” int a = 2; Conversión de 7pos ! ¿Qué pasa cuando combinamos 7pos diferentes? ! Tipos compa7bles: Aquellos que almacenan información similar ! Tipos incompa7bles: Aquellos que almacenan información diferente ! 2 mecanismos ! Conversión automá7ca ! Conversión explícita Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Conversión explícita ! Cas7ng: mecanismo para explicitar el cambio de 7po de una expresión o variable ! Le indicamos al compilador que asumimos la responsabilidad ! Sintaxis: (tipo nuevo) expresión float valor = a; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 4 18/01/12 Conversión de 7pos long a = 1; int b = a; Entrada/salida básica ! Forma correcta: long a = 1; int b = (int)a; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Entrada/salida estándar ! Mecanismos sencillos para leer y escribir información por la terminal Salida de datos básica ! Para mostrar una línea de texto por la terminal se usa: System.out.print(expr) System.out.println(expr) ! La clase String: ! Representa una cadena de caracteres ! Ser verá en profundidad más adelante ! Se pueden definir y usar variables (objetos) de clase String: ! Donde expr es una expresión de Java que queramos mostrar. ! Ejemplo: int a = 0; String cadena = “Hola”; System.out.println(a); String cadena = “mi cadena de texto”; System.out.print(cadena); Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Secuencias de escape ! Sirven para tener mayor control sobre el formato de la salida de los datos ! Secuencias especiales de caracteres en las cadenas de texto \n Salto de línea \t Tabulador \r retorno de carro \\ Barra inver7da \” Comillas dobles Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Entrada de datos básica ! Clase de biblioteca java.u7l.Scanner import java.util.Scanner; public class EntradaInteractiva { public static void main(String [] args) { /∗ stdIn es un identificador, puede llamarse como queramos. Recordad llamarlo igual después ∗/ Scanner stdIn = new Scanner(System.in); System.out.print(”Escribe un número:”); int num = stdIn.nextInt(); System.out.println(num); } } Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 5 18/01/12 Entrada de datos básica ! Leyendo cadenas de caracteres con java.u7l.Scanner import java.util.Scanner; public class EntradaInteractiva { Operadores y expresiones public static void main(String [] args) { Scanner stdIn = new Scanner(System.in); System.out.print(”Dime tu nombre:”); String nombre = stdIn.next(); System.out.println(nombre); } } Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Operadores ! Permiten realizar operaciones sobre las variables y su valor ! Operador de asignación = variable = valor ! Asigna el valor a una variable ! Se puede usar en la declaración de una variable Operadores aritmé7cos ! Se usan para calcular operaciones matemá7cas entre datos y variables del mismo 7po ! El resultado se puede almacenar en otra variable del mismo 7po ! Expresión: Uso conjunto de uno o mas valores, variables y/o operadores que se evalúa para obtener su valor final int a = 0, b; b = 10; a = b; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) suma - resta * multiplicación / división % módulo (resto) ++ auto-incremento (pre ó post) -- auto-decremento (pre ó post) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Auto-­‐incremento y auto-­‐ decremento Expresiones aritmé7cas ! + int a = 5 - (2 * 2); ! Son operadores unarios (se aplican sobre una única variable) ! a++; /* a = a + 1 */ ! a=3; b=a++; /* a=4 b=3 */ ! a=3; b=++a; /* a=4 b=4 */ ! a=3; b=a--; /* a=2 b=3 */ ! f=4/3; /* == 1 Div. entera */ ! b=4%3; /* == 1 == (4 – (4/3)*3) */ ! f=4.0/3; /* == 1.333 Div. real */ ! f=(float)4/3; /* == 1.333 Div. real */ Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) ! Suman o restan 1 al valor de la variable ! Los ‘pre’ se aplican antes de evaluar la expresión y los ‘post’ después int a = 0; a++; // Ahora a vale 1 a--; // Ahora a vale 0 int b = (2*a++) // b vale 0 y a 1 int c = 2*(++a) // c vale 4 y a 2 Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 6 18/01/12 Precedencia de operador Asignación combinada ! Tiene preferencia *, /, % frente a +, -­‐ ! Se combina un operador aritmé7co binario con una asignación ! Se evalúa de izquierda a derecha variable op= expresión; // op es +,-,*,/,% ! Se pueden usar paréntesis ! Equivale a num = 2 * 10 + 5; num = 2 * (10 + 5); variable = variable op expresión; // num = 25 // num = 30 ! Ejemplos int a = 10; a += 10; a /= 5; a %= 6; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Operadores de comparación ! Se usan para comparar datos y variables de 7pos compa7bles == igual != dis7nto ! Producen expresiones de 7po boolean > Mayor < menor >= mayor o igual <= menor o igual Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Operadores lógicos ! Se usan para operar con datos y variables de 7po boolean && y (and) || o (or) ! Producen expresiones de 7po boolean ! no (not) ! Se pueden combinar con otras expresiones de 7po boolean Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Operadores lógicos A && B // a = a + 10 // a = a / 5 // a = a % 6 Expresiones lógicas A || B A B Resultado A B Resultado true true true true true true true false false true false true false true false false true true false false false false false false int a = 10; int b = 20, c = 30; boolean d, e, f, g; d = (a > b); e = (b <= c); f = d || e; // d es false // e es true // f es true g = (a != b) && ((c < b) || (c == a)) Java es un lenguaje “perezoso”: Si conociendo el primer término ya se sabe el resultado, no se evalúa el segundo Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 7 18/01/12 Operador condicional ! A ? B : C ! Si (A) entonces vale B, si no vale C int a = 10; int b = 20, c; char d; c = a > b ? 5 : 6; d = c < a ? ‘X’ : ‘Y’; Sintaxis básica, variables y 7pos -­‐ Jesús Montes Sánchez (jmontes@fi.upm.es) 8