Download Fundamentos del Lenguaje de Programación Java
Document related concepts
no text concepts found
Transcript
Fundamentos del Lenguaje de Programación Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx El lenguaje Java Estándares de codificación Comentarios Programas con Java Identificadores Palabras clave Tipos de datos Literales Variables Arreglos Enumeraciones Operadores Sentencias de control de flujo 1 Estándares de codificación ¿Por qué tener estándares para la codificación? Aproximadamente 80% del costo de una pieza de software se debe al mantenimiento Difícilmente un mismo software es mantenido durante toda su vida útil por un mismo programador Facilitan la lectura del código Estándares de codificación Los estándares definen: Nombres de los archivos Organización de los archivos Indentación Uso de comentarios Declaraciones de variables, clases e interfaces Sintaxis de las diferentes sentencias Uso de espacios en blanco Nombres de clases, variables y métodos 2 Comentarios en Java Los comentarios pueden ser de dos tipos Comentarios de implementación // Comentario en una línea /* Comentario de varias líneas */ Comentarios de documentación /** Estos comentarios se convierten a HTML con la herramienta Javadoc */ Programas en Java (J2SE) Se pueden generar dos tipos de programas: Aplicaciones independientes (Standalone) Cuentan con un método main() Se ejecutan utilizando el intérprete de Java Applets Se ejecutan en un navegador, incrustados dentro de una página Web 3 Aplicaciones independientes Todos los programas en Java se declaran como una clase public class HolaGalaxia { public static void main(String[] args) { System.out.println("Hola Galaxia"); } } La clase debe guardarse en un archivo con su mismo nombre y la extensión .java Compilar Una vez creada una clase, ésta debe compilarse, para eso ejecutamos: javac HolaUniverso.java Nombre del compilador de Java Nombre de la clase a compilar La clase debe compilarse en el directorio en el que se encuentra Se recomienda incluir en la variable de ambiente PATH la ruta de los ejecutables de Java, p. ej. C:\Archivos de programa\Java\jdk1.5.0_06\bin 4 Variables de entorno recomendadas JAVA_HOME="C:\Archivos de programa\Java\jdk1.5.0_06“ CLASSPATH=.;"C:\Archivos de programa\Java\jdk1.5.0_06\lib\comm.jar";"C:\Archivos de programa\Java\jdk1.5.0_06\lib\mysql-connector-java-3.1.7bin.jar“ PATH=%JAVA_HOME%/bin Ejecución de un programa Al compilar una clase, se genera un archivo con su mismo nombre y la extensión .class Para ejecutarla, se invoca al intérprete de Java, seguido del nombre de la clase: java HolaGalaxia Esta clase debe contener el método main() 5 Identificadores Los nombres de clases, métodos y variables pueden formarse por cualquier combinación de los siguientes caracteres: Letras Números Carácter de subrayado ‘_’ Carácter $ No pueden empezar con un número Ejemplos de identificadores Clases Figura FiguraSombreada Métodos busca() buscaPersona() Variables area areaComun 6 Palabras clave en Java abstract assert3 continue default for goto1 new package switch synchronized boolean break do double if implements private protected this throw byte case else enum4 import instanceof public return throws transient catch char class extends final finally int interface long short static strictfp2 try void volatile const1 float native super while 1 No se utiliza 2 Agregada en la versión 1.2 3 Agregada en la versión 1.4 4 Agregada en la versión 1.5 Palabras clave en Java Tipos de datos boolean byte char double float int long short enum Valores true false null void 7 Palabras clave en Java Control de flujo break case continue default do else for if return switch while Manejo de errores catch finally throw try Control de acceso final private protected public static synchronized Palabras clave en Java Declaraciones abstract class extends implements import interface new package super this transient volatile Otras instanceof native strictfp 8 Tipos de datos primitivos Tipo Tamaño y formato Rango Enteros byte 8 bits - complemento a 2 short 16 bits - complemento a 2 int 32 bits - complemento a 2 long 64 bits - complemento a 2 - Números reales float 32 bits - IEEE 754 double 64 bits - IEEE 754 Otros char 16 bits - caracteres UNICODE '\u0000' al '\uffff' boolean 1 bit true o false Datos tipo char Utilizan el estándar Unicode para la representación de caracteres Se pueden manejar como si fueran enteros char ch1=‘Y’; char ch2=89; 9 Secuencias de escape para representación de caracteres \n -----> Salto de línea \t -----> Tabulador \r -----> Retroceso de Carro \f -----> Comienzo de Pagina \b -----> Borrado a la Izquierda \\ -----> El caracter "\" \' -----> El carácter ‘ ‘ ‘ \" -----> El caracter ‘ ” ’ \uxxxx -> Caracteres Unicode (hexadecimal) Datos tipo boolean Es el tipo utilizado para representar valores lógicos Es el tipo requerido por las expresiones condicionales que gobiernan las sentencias de control Es el tipo que devuelven los operadores relacionales 10 Literales Un valor constante en Java se crea mediante una representación literal 235 125.32 “Mensaje” Literales enteros 1 2 ‘X’ Decimales 3 01 0x1 02 Octales 0x2 03 0x3 Hexadecimales Para indicar que un valor es de tipo long, al final se agrega una ‘L’ : 345L Literales Literales de números reales Se utiliza el punto decimal o la notación científica Por default se utiliza la precisión double 10000.00 2000.00 300.00 Notación normal 1.0e+4 2.0e+3 Notación científica 3.0e+2 11 Literales Literales char Almacenan caracteres Unicode Literales booleanas ‘z’; ‘\u0040’ Tienen dos valores: true y false Literales de cadenas Los valores se encierran entre comillas dobles “Cadena de caracteres” Variables Son la unidad básica de almacenamiento en un programa Se definen mediante un identificador, un tipo y un inicializador opcional Todas las variables tienen un ámbito que define su visibilidad y tiempo de vida. 12 Variables int a; int a=3; int a,b; int a=3,b; char c; char c=‘a’; long a; long a=3L; double d; double d=3.9; boolean b; float f; float f=3.9F; double d=3.9D; byte b=100; boolean b=true; boolean b=false; Variables Las variables se pueden inicializar de manera dinámica int a=3,b=4; int c=a*b; Las variables sólo existen dentro del bloque en el que se declaran. Un bloque define el ámbito de la variable. 13 Arreglos Un arreglo es un grupo de variables del mismo tipo al que se hace referencia por medio de un nombre común Para acceder a un elemento dentro de un arreglo se utilizan sus índices Arreglos Un arreglo unidimensional se declara de la siguiente forma: tipo nombre[ ]; tipo[ ] nombre; Solamente se está declarando el nombre y tipo del arreglo, aún no se reserva el espacio en memoria para su existencia Para reservar la memoria para el arreglo, se utiliza el operador new tipo[ ] nombre = new tipo[tamaño]; int diasMes[ ] = new int[12]; 14 Arreglos Al crear un arreglo, todos sus elementos se inicializan a cero. Los arreglos se pueden inicializar en la declaración int diasMes[]={31,28,31,30,31,30,31,31,30,31,30,31}; En este caso no es necesario utilizar el operador new Java comprueba que no se puedan referenciar valores fuera del rango del arreglo Arreglos multidimensionales Se pueden considerar arreglos de arreglos int matriz[][]=new int[4][3]; [0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2] [3][0] [3][1] [3][2] matriz[][]= 15 Arreglos multidimensionales Solo es necesario especificar el espacio necesario para la primera dimensión del arreglo int matriz[][]=new int[4][]; El espacio para el resto de las dimensiones se reserva posteriormente, de manera manual matriz[0]=new int[3]; matriz[1]=new int[3]; Etc. Arreglos multidimensionales En estos casos, no es necesario reservar el mismo espacio para cada arreglo matriz[0]=new int[1]; matriz[1]=new int[2]; matriz[2]=new int[3]; matriz[3]=new int[4]; [0][0] [1][0] [1][1] [2][0] [2][1] [2][2] [3][0] [3][1] [3][2] [3][3] 16 Arreglos multidimensionales Un arreglo multidimensional se puede inicializar al momento de declararlo int matriz3x3={ {0,1,2}, {3,4,5}, {6,7,8} }; Otros casos int matriz3Dim[][][]=new int[3][4][5]; Enumeraciones En su forma más simple, una enumeración es una lista de constantes El soporte a enumeraciones se incorporó a Java a partir de la versión 1.5 Una enumeración se crea utilizando la palabra clave enum enum Dias{Lunes, Martes, Miércoles, Jueves, Viernes} 17 Enumeraciones Una vez que se ha definido una enumeración, se pueden crear variables de ese tipo: Dias unDia=Dias.Miércoles; Métodos de las enumeraciones: public static enum-type[ ] values( ) public static enum-type valueOf(String str) Operadores Un operador realiza una función, toma uno o más argumentos y devuelve un resultado En Java, los operadores se dividen en aritméticos, a nivel de bit, relacionales y lógicos La mayoría de los operadores en Java funcionan igual que en C/C++ 18 Operadores aritméticos Operador Resultado Operador Resultado + Suma += Suma y asignación - Resta = Asignación * Multiplicación *= Multiplicación y asignación / División /= División y asignación % Módulo %= Módulo y asignación ++ Incremento -- Decremento Operadores aritméticos Los operandos deben ser de tipo numérico Se pueden aplicar al tipo char El operador módulo se puede aplicar tanto a operandos de tipo entero como flotante El operador de resta también se utiliza para negar a su operando 19 Operadores a nivel de bit Tipo Lógicos De desplazamiento Operador Resultado ~ NOT | OR & AND ^ XOR << Izquierda >> Derecha (con signo) >>> Derecha (sin signo) Los operadores de desplazamiento también tienen una versión con asignación Operadores relacionales Operador Resultado == Igualdad != Desigualdad > Mayor que < Menor que >= Mayor o igual <= Menor o igual • Los operadores relacionales dan como resultado un booleano • Su aplicación más frecuente es en la obtención de expresiones de control para las sentencias if y los ciclos 20 Operadores lógicos booleanos Operador Resultado Operador Resultado & AND &= AND con asignación | OR |= OR con asignación ^ XOR ^= XOR con asignación || OR == Igual a && AND != Diferente de ! NOT ?: if-then-else Operadores lógicos booleanos if (exp1 & exp2) if (exp1 && exp2) Ambas expresiones se evalúan, independientemente de su valor La segunda expresión sólo se evalúa si la primera es verdadera if (exp1 || exp2) La segunda expresión sólo se evalúa si la primera es falsa 21 Descripción Operadores operadores posfijos op++ op-- operadores unarios ++op --op +op -op ~ ! multiplicación y división */% suma y resta +- desplazamiento << >> >>> operadores relacionales < > <= => equivalencia == != operador AND & operador XOR ^ operador OR | AND booleano && OR booleano || condicional ?: operadores de asignación = += -= *= /= %= &= ^= |= <<= >>= >>>= El método printf() A partir de la versión 1.5 del JDK, Java introduce el método printf(). Este método funciona de manera similar al de C/C++ System.out.printf(“El valor %d es %6.2f”,num,valor); 22 Sentencias de control de flujo Sentencias de selección if Sintaxis idéntica a C/C++ if (condición) sentencia; if (condición){ sentencia1; sentencia2; … } else{ sentencia3; sentencia4; … } if (condición) sentencia1; else if (condición) sentencia2; else if (condición) sentencia3; … else sentenciaN; Sentencias de control de flujo switch Es una alternativa a una larga serie de if-else-if switch(expresión){ case valor1: sentencias; break; case valor2: sentencias; break; … case valorN: sentencias; break; default: sentencias; } • La expresión debe ser del tipo byte, short, int, char o enum • Los valores especificados deben ser constantes y no pueden duplicarse • Si no se incluye “break” la ejecución continúa en el siguiente case • El bloque “default” es opcional 23 Sentencias de control de flujo Sentencias de iteración (bucles o ciclos) Se tienen tres tipos: for while do-while A partir de la versión 1.5 del JDK, se introdujo una versión del ciclo for del tipo for-each Sentencias de control de flujo while Una sentencia o bloque se repite mientras la condición asociada sea verdadera Su forma general es: while(condición) sentencia; while(condición){ sentencia; sentencia; … } 24 Sentencias de control de flujo do-while Su forma general es: do{ sentencia; sentencia; … } while(condición); Sentencias de control de flujo for Su forma general es: for(inicialización; condición; iteración) sentencia; for(inicialización; condición; iteración){ sentencia; sentencia; … } 25 Sentencias de control de flujo Ciclos for-each Este tipo de ciclo está diseñado para recorrer una colección de objetos, como es el caso de un arreglo, de principio a fin y de una manera estríctamente secuencial. La forma general de este ciclo es: for(tipo variableIteracion : objetoIterable) bloque de sentencias; Sentencias de control de flujo Ciclos for-each Ejemplos de uso de estos ciclos son: int nums[]={1,2,3,4,5}; int sum=0; enum Vocales[]={A,E,I,O,U}; for(Vocales v: Vocales.values( )) System.out.println(v); for(int x: nums) sum+=x; int matriz[][]={…..}; for(int x[]:matriz){ for(int y:x) System.out.print(y+" "); System.out.println(); } 26 Sentencias de control de flujo Sentencias de salto break Tiene tres usos: 1. Finalizar una secuencia de sentencias en un switch 2. Salir de un ciclo 3. Como una forma de goto, para salir de un bloque de sentencias etiquetado Sentencias de control de flujo Sentencias de salto continue Se utiliza para: 1. Forzar una nueva iteración de un bucle sin haber concluido la actual 2. Como una forma de goto, para forzar la repetición de un ciclo etiquetado return Se utiliza para salir explícitamente de un método y regresar al método desde el que se hizo la llamada 27