UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación CARACTERES EN JAVA Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape. Letra, Dígitos y Otros Estos caracteres son utilizados para formas las constantes, los identificadores y las palabras claves de Java. Son los siguientes: Letras Mayúsculas de los alfabetos internacionales Letras Minúsculas de los alfabetos internacionales Dígitos de los alfabetos internacionales, entre los que se encuentran: 0123456789 Caracteres: “ _ ” , “$” y cualquier carácter Unicode por encima de 00CD El compilador Java trata las letras mayúsculas y minúsculas como caracteres diferentes. Por ejemplo: los identificadores Año y año son diferentes. Espacios en Blanco Los caracteres espacio en blanco (ASCII), tabulador horizontal, avance de pagina, nueva linea, retorno de carro o CR LF(estos dos caracteres son considerados como uno solo:\n), son caracteres denominados espacios en blanco, porque la labor que desempeñan es la misma que la del espacio en blanco: actuar como separadores entre los elementos de un programa, lo cual permite escribir programas mas legibles. Por ejemplo, el siguiente código: public static void main (String [] args) { System.out.print(“Hola, como estas\n”); } Puede escribirse en forma mas legible así: public static void main (String [] args) { System.out.print(“Hola, como estas\n”); } Las expresiones en blanco en exceso son ignorados por el compilador. Por ejemplo, el código siguiente se comporta exactamente igual que el anterior: public static void main (String [] args) { System.out.print (“Hola, como estas\n”); } Caracteres especiales y signos de puntuación Este grupo de caracteres se utiliza de diferentes formas; por ejemplo: para indicar que un identificador es una función o un arreglo; para especificar una determinada operación aritmética, lógica o de relación, etc. Son los siguientes: , . ; : ? „ “ ( ) [] {} < ! | / \ + % & ^ * - = > Docente: Ing° Pedro Beltrán Canessa 1 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación Secuencias de Escape Cualquier carácter de los anteriores puede también ser representado por una secuencia de escape. Una secuencia de escape está formada por el carácter \ seguido de una letra o de una combinación de dígitos. Son utilizadas para acciones como nueva linea, tabular y para hacer referencia a caracteres no imprimibles. \n Ir al principio de la siguiente línea. \t Tabulador horizontal. \b Retroceso (backspace) \r Retorno de carro sin avance de linea. \f Alimentación de página. \‟ Comilla simple \” Comilla Doble \\ Barra Invertida(backslash) SINTAXIS EN JAVA La sintaxis de un lenguaje define cómo se usarán las palabras claves, los operadores y las variables para construir y evaluar expresiones. La sintaxis de Java especifica como se escribirán los siguientes elementos: a) Comentarios. b) Identificadores. c) Palabras clave. d) Literales. e) Expresiones y operadores. f) Variables y tipos de datos. g) Bloques y sentencias a) Comentarios Java ofrece tres tipos de comentarios: dos para comentarios regulares en el código fuente y uno para la documentación especial del sistema javadoc. Comentarios de varias líneas. Los comentarios de varias líneas se incluyen entre los símbolos /* y */ /* Este es un ejemplo de un comentario de varias líneas. */ Comentarios de una sola línea. Para comentar una sola línea se utiliza la doble diagonal //. El comentario se inicia cuando se encuentra la doble diagonal y continua hasta el final de la línea. // Este es un comentario de una sola linea //Este es otro comentario Docente: Ing° Pedro Beltrán Canessa 2 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación Comentarios para documentación. Realmente este tipo de comentario es el mismo que el de varias líneas con la diferencia de que la información que contenga será usada para un procesamiento especial que lleva a cabo la herramienta javadoc. Se distingue del comentario de varias líneas porque se agrega un asterisco adicional al inicio del comentario. /** Este tipo de comentarios los utiliza la herramienta javadoc */ b) Identificadores Un identificador es una secuencia de caracteres comenzando por una letra y conteniendo letras y números. Los identificadores no se limitan a los caracteres ASCII, si el editor de texto lo soporta, se pueden escribir identificadores utilizando caracteres Unicode. Las letras Java incluyen los caracteres ASCII A-Z y a-z. Los dígitos Java incluyen los dígitos ASCII 0-9. Para propósitos de construir identificadores, los caracteres ASCII $ y _ son también considerados letras Java. No hay un límite en lo concerniente al número de caracteres que pueden tener los identificadores. Estos son algunos ejemplos de identificadores válidos: _varx $var1 MAX_NUM var2 c) Palabras clave La siguiente tabla muestra las palabras claves de Java, éstas son reservadas y no pueden ser utilizadas como identificadores. abstract default if private this boolean do implements protected throw break double import public throws byte else instanceof return transient case extends int short try catch final interface static void char finally long strictfp** volatile class float native super while const* for new switch continue goto* package synchronized * Son palabras claves de Java que no son usadas actualmente. ** Palabra clave agregada en Java 2 true, false, and null no son palabras claves pero son palabras reservadas, así que tampoco pueden ser utilizadas como identificadores. Docente: Ing° Pedro Beltrán Canessa 3 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación d) Literales Un literal es un valor constante formado por una secuencia de caracteres. Cualquier declaración en Java que defina un valor constante -un valor que no pueda ser cambiado durante la ejecución del programaes una literal. Java utiliza cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier lugar del código fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con él. Literales numéricas Se pueden crear literales numéricas a partir de cualquier tipo de dato primitivo. Ej. 123 //literal int 123.456 //literal double 123L //literal long 123.456F //literal float Literales booleanas Las literales boolenas consisten de las palabras reservadas true y false. Literales de caracteres Las literales de caracteres se expresan por un solo carácter entre comillas sencillas Ej. 'a', '%', '7' Literales de cadena Una cadena es una combinación de caracteres. Las cadenas en Java son instancias de la clase String, por ello cuentan con métodos que permiten combinar, probar y modificar cadenas con facilidad. Las literales de cadena se representan por una secuencia de caracteres entre comillas dobles. Ej. "hola", "cadena123", "12345" e) Expresiones y Operadores Expresión Una expresión es una combinación de variables, operadores y llamadas de métodos construida de acuerdo a la sintaxis del lenguaje que devuelve un valor. El tipo de dato del valor regresado por una expresión depende de los elementos usados en la expresión. Operadores Los operadores son símbolos especiales que por lo común se utilizan en expresiones. La tabla siguiente muestra los distintos tipos de operadores que utiliza Java. Operador Significado Operadores aritméticos + Suma Resta * Multiplicación / División % Módulo Operadores de asignación = Asignación += Suma y asignación -= Resta y asignación Docente: Ing° Pedro Beltrán Canessa Ejemplo a a a a a +b -b *b /b %b a=b a += b (a=a + b) a -= b (a=a - b) 4 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote *= Multiplicación y asignación /= División y asignación %= Módulo y asignación Operadores relacionales == Igualdad != Distinto < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que Operadores especiales ++ Incremento -- Decremento (tipo)expr + . () Cast Concatenación de cadenas Acceso a variables y métodos Agrupación de expresiones TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación a *= b (a=a * b) a / b (a=a / b) a % b (a=a % b) a a a a a a == b != b <b >b <= b >= b a++ (postincremento) ++a (preincremento) a-- (postdecremento) --a (predecremento) a = (int) b a = "cad1" + "cad2" a = obj.var1 a = (a + b) * c La tabla siguiente muestra la precedencia asignada a los operadores, éstos son listados en orden de precedencia. Los operadores en la misma fila tienen igual precedencia Operador . [] () ++ -- ! ~ new (tipo)expr * / % +<< >> >>> < > <= >= == != & ^ | && || ?: = += -= *= /= %= &= ^= |= <<= >>= >>>= Notas Los corchetes se utilizan para los arreglos ! es el NOT lógico y ~ es el complemento de bits new se utiliza para crear instancias de clases Multiplicativos Aditivos Corrimiento de bits Relacionales Igualdad AND (entre bits) OR exclusivo (entre bits) OR inclusivo (entre bits) AND lógico OR lógico Condicional Asignación Todos los operadores binarios que tienen la misma prioridad (excepto los operadores de asignación) son evaluados de izquierda a derecha. Los operadores de asignación son evaluados de derecha a izquierda f) Variables y tipos de datos Las variables son localidades de memoria en las que pueden almacenarse datos. Cada una tiene un nombre, un tipo y valor. Java tiene tres tipos de variables: de instancia, de clase y locales. Variables de instancia. Se utilizan para definir los atributos de un objeto. Variables de clase. Son similares a las variables de instancia, con la excepción de que sus valores son los mismos para todas las instancias de la clase. Docente: Ing° Pedro Beltrán Canessa 5 UNIVERSIDAD CATÓLICA LOS ÁNGELES DE CHIMBOTE Universidad Los Ángeles de Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación Variables locales. Se declaran y se utilizan dentro de las definiciones de los métodos. A diferencia de otros lenguajes, Java no tiene variables globales, es decir , variables que son vistas en cualquier parte del programa. Java es un lenguaje "fuertemente tipeado o tipificado" por lo que es necesario especificar el tipo de dato para cada una de las variables que se vayan a utilizar en un programa. El nombre de la variable debe de ser un identificador válido, y se usa para referirse a los datos que contiene una variable. El tipo de una variable determina los valores que puede almacenar y las operaciones que se pueden hacer sobre ella. Para dar a una variable un tipo y un nombre, se escribe una declaración de una variable, que tiene la siguiente forma: TipoDato nombreVariable; Ejemplo String nombre; // variable de tipo String int edad; // variable de tipo int Punto p; // variable del tipo Punto Se pueden escribir varios nombres de variables del mismo tipo en una sola línea, int x, y, z; String nombre, apellido; También se puede asignar un valor inicial a las variables al momento de crearlas, String nombre, apellido="MiApellido"; int edad = 24; TIPOS DE DATOS Los tipos de datos en Java se clasifican en: tipos primitivos y referenciados. Los tipos primitivos contienen un sólo valor e incluyen los tipos como los enteros, coma flotante, los caracteres, de tipo booleano etc. Los tipos referenciados se llaman así porque el valor de una variable de referencia es una referencia (un puntero) hacia el valor real. En Java tenemos los arrays, las clases y los interfaces como tipos de datos referenciados. Tipos de Datos Primitivos Enteros: Estos tipos son byte, short, int y long, que guardan el signo valor, estos representan un número y no pueden representar elementos fraccionarios. Byte: es un tipo de 8 bits con signo. Su rango comprende desde -128 a 127 Short: es un tipo de 16 bits con signo. Su rango comprende desde -32768 a 32767 Int: es un tipo de 32 bits con signo. su rango comprende desde -2.147.483.648 a 2.147.483.647 long : es un tipo de 64 bits con signo Esto puede ser un buen ejemplo Docente: Ing° Pedro Beltrán Canessa de declaración de tipos de datos enteros: 6 UNIVERSIDAD CATÓLICA LOS ÁNGELES DE CHIMBOTE Universidad Los Ángeles de Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación public class enteros { public static void main(String[] arg) { byte midato1 = 1; short midato2 = 100; int midato3 = 10000; long midato4 = 100000000; System.out .println("midato = " + midato1); .... } } Númerosencomaflotante: Estos son float y double y pueden almacenar números en coma flotante y con signo, esto quiere decir que nos permiten representar números decimales. Float: La precisión simple, especificada por la palabra clave float, utiliza 32 bits para almacenar un valor Double: La precisión doble, especificada por la palabra clave double, utiliza 64 bits para almacenar un valor public class tipoDecinales { public static void main(String[] arg) { float valor; valor = 2.6; System.out .println("Valor del dato= " + valor); } } Carácter: Estos son de tipo char(0 a 65535), que almacena la representación de los caracteres (letras o números), un carácter esta almacenado en 16 bits, y siguen un estándar que es el Unicoide. public class tipoCaracter { public static void main(String[] arg) { char valor, valor1, valor2; valor = 'a'; // el literal de tipo carácter tiene que estar encerrado entre comillas simples. valor1 = 65; } } Docente: Ing° Pedro Beltrán Canessa 7 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación Booleano: Este solo guarda dos valores: verdadero (true) o falso(false), y no como ocurre en otros lenguajes que toman los valores 0 y 1. Generalmente su utilización es muy frecuente para determinar el flujo de los programas: public class tipoBoolean { public static void main(String[] arg) { boolean valor1, valor2 ; valor = true; valor1 = false; if (valor1){ System.out .println("valor1 = verdadero"); }else{ System.out .println("valor1 = falso"); } } } Tipos Referenciados: Hay 03 clases de tipos referenciados: Clases, interfaces y array. Todos ellos serán objeto de estudio en las próximas sesiones. g) Bloques y sentencias Sentencia Una instrucción o sentencia representa la tarea más sencilla que se puede realizar en un programa. Sentencias de expresión Los siguientes tipos de expresiones pueden ser hechas dentro de una sentencia terminando la expresión con punto y coma (;): Expresiones de asignación Cualquier uso de los operadores ++ y – Llamada de métodos Expresiones de creación de objetos Esta clase de sentencias son llamadas sentencias de expresión. Ej. valorA = 8933.234; // asignación valorA++; // incremento System.out.println(valorA); // llamada a un método Integer objInt = new Integer(4); // creación de objetos Sentencias de declaración de variables Las sentencias de declaración de variables se utilizan para declarar variables. Ej. int bValue; Docente: Ing° Pedro Beltrán Canessa 8 UNIVERSIDAD CATÓLICA LOS ÁNGELES DE CHIMBOTE Universidad Los Ángeles de Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación double aValue = 8933.234; String varCad; Sentencias de control de flujo Las sentencias de control de flujo determinan el orden en el cual serán ejecutadas otro grupo de sentencias. Las sentencias if y for son ejemplos de sentencias de control de flujo. Bloque de sentencias Un bloque es un grupo de cero o más sentencias encerradas entre llaves ( { y } ). Se puede poner un bloque de sentencias en cualquier lugar en donde se pueda poner una sentencia individual. Las sentencias de control de flujo se pueden utilizar para ejecutar sentencias condicionalmente, para ejecutar de manera repetida un bloque de sentencias y en general para cambiar la secuencia normal de un programa. La sentencia if La sentencia if permite llevar a cabo la ejecución condicional de sentencias. if ( Expresion ){ sentencias; } Se ejecutan las sentencias si al evaluar la expresión se obtiene un valor booleano true. if ( Expresion ){ sentenciasA; } else{ sentenciasB; } Si al evaluar la expresión se obtiene un valor booleano true se ejecutarán las sentenciasA, en caso contrario se ejecutarán las sentenciasB. La sentencia switch Cuando se requiere comparar una variable con una serie de valores diferentes, puede utilizarse la sentencia switch, en la que se indican los posibles valores que puede tomar la variable y las sentencias que se tienen que ejecutar sí es que la variable coincide con alguno de dichos valores. switch( variable ){ case valor1: sentencias; break; case valor2: sentencias; break; ... Docente: Ing° Pedro Beltrán Canessa 9 UNIVERSIDAD CATÓLICA LOS ÁNGELES DE CHIMBOTE Universidad Los Ángeles de Chimbote TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación case valorN: sentencias; break; default: sentencias; } Cada case ejecutará las sentencias correspondientes, con base en el valor de la variable, que deberá de evaluarse con valores de tipo byte, char, short o int. Si el valor de la variable no coincide con ningún valor, entonces se ejecutan las sentencias por default, sí es que las hay. La sentencia break al final de cada case transfiere el control al final de la sentencia switch; de esta manera, cada vez que se ejecuta un case todos los enunciados case restantes son ignorados y termina la operación del switch. El ciclo for El ciclo for repite una sentencia, o un bloque de sentencias, mientras una condición se cumpla. Se utiliza la mayoría de las veces cuando se desea repetir una sentencia un determinado número de veces. La forma general de la sentencia for es la siguiente; for(inicialización;condición;incremento){ sentencias; } En su forma más simple, la inicialización es una sentencia de asignación que se utiliza para establecer una variable que controle el ciclo. La condición es una expresión que comprueba la variable que controla el ciclo y determinar cuando salir del ciclo. El incremento define la manera en como cambia la variable que controla el ciclo. Los ciclos while y do-while, al igual que los ciclos for repiten la ejecución de un bloque de sentencias mientras se cumpla una condición específica. La sentencia while El formato de la sentencia while es la siguiente: while (condición){ sentencias; } La condición es una condición booleana, que mientras tenga el valor true permite que se ejecuten las sentencias correspondientes. La sentencia do-while Al contrario de los ciclos for y while que comprueban una condición en lo alto del ciclo, el ciclo dowhile la examina en la parte más baja del mismo. Esta característica provoca que un ciclo dowhile siempre se ejecute por lo menos una vez. El formato de la sentencia do-while es el siguiente: Docente: Ing° Pedro Beltrán Canessa 10 UNIVERSIDAD CATÓLICA LOS ÁNGELES DE CHIMBOTE Universidad Los Ángeles de Chimbote PROGRAMACIÓN TÉCNICAS Curso: Técnicas DE de Programación do{ sentencias; }while (condición); break La sentencia break tiene dos usos. El primer uso es terminar un case en la sentencia switch. El segundo es forzar la terminación inmediata de un ciclo, saltando la prueba condicional normal del ciclo. continue La sentencia continue es similar a la sentencia break. Sin embargo, en vez de forzar la terminación del ciclo, continue fuerza la siguiente iteración y salta cualquier código entre medias. return Se utiliza la sentencia return para provocar la salida del método actual; es decir, return provocará que el programa vuelva al código que llamó al método. La sentencia return puede regresar o no un valor. Para devolver un valor, se pone el valor después de la palabra clave return. return valor; El tipo de dato del valor regresado debe ser el mismo que el que se especifica en la declaración del método. Cuando un método es declarado void, el método no regresa ningún valor. return; Docente: Ing° Pedro Beltrán Canessa 11 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote PROGRAMACIÓN TÉCNICAS DE Curso: Técnicas de Programación EJERCICIOS CON JAVA 1. Ha llar la suma de dos números public class suma { public static void main(String[] args) { int suma, a=4, b= 5; suma= a +b; System.out.println(“La Suma de los Números es:”+suma); } } 2. Hallar el mayor y menor de 02 números public class suma { public static void main(String[] args) { int mayor,menor, a=4, b= 5; if (a>b) { mayor=a; menor=b; else mayor=b; menor=a; } System.out.println(“El mayor de losNúmeros es:”+mayor); System.out.println(“El menor de losNúmeros es:”+menor); } } 3. Desarrollar una MiniCalculadora elemental con las 04 operaciones básicas. public class MiniCalculadora{ public static void main(String args[]){ int a = 10; int b = 3; char op = '/'; System.out.print("El resultado es : "); switch ( op ) { case '+': System.out.println( a + b ); break; case '-': System.out.println( a - b ); break; case '*': Docente: Ing° Pedro Beltrán Canessa 12 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote } TÉCNICAS DE PROGRAMACIÓN Curso: Técnicas de Programación System.out.println( a * b ); break; case '/': System.out.println( a / b ); break; default: System.out.println("error" ); break; } } 4. Mostrar los números pares comprendidos entre 50 y 100 public class pares { public static void main(String[] args){ int num = 50; while (num < 101) { /* el operador % nos muestra el residuo de dividir el numero entre 2*/ if (num % 2 == 0) { System.out.println(num); } num = num + 1; } } } 5. Mostrar los números pares menores que 100 public class do_while { public static void main(String[] args) { int i = 1; do { i = i * 2; System.out.println ("i="+i); } while ( i < 100 ); } } 6. Ejemplo que permite leer un número ingresado por teclado, para luego calcular la suma de todos los números que le anteceden. Docente: Ing° Pedro Beltrán Canessa 13 UNIVERSIDAD ÁNGELES DE CHIMBOTE Universidad LosCATÓLICA Ángeles deLOS Chimbote PROGRAMACIÓN TÉCNICAS DE Curso: Técnicas de Programación import java.io.*; /* Hacemos uso de la importación de clases para poder leer */ public class ciclo_for { public static void main(String[] args) throws IOException /* para exceptuar errore */ { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); /* codigo para inicializar el buffer de memoria para leer un dato */ System.out.println("Ingrese un Número:"); int i,num; int sum=0; num=Integer.parseInt(in.readLine()); /* el dato ingresado se almacena en una variable */ for(i=1;i<=num;i++) { sum=sum+i; } System.out.println("Suma:"+sum); } } 7. Mostrar los números consecutivos del 1 al 10 menos el 7. public class continue_1 { public static void main(String[] args){ for(int i=1;i<=10;i++){ if(i==7) continue; System.out.print(i+""); } System.out.println("\n fuera del bucle"); } } 8. Mostrar los números hasta que un número sea igual al valor de la variable M public class break_1 { public static void main(String[] args){ for(int M=0;M<=10;M++){ if(M==8) break; System.out.print(i+""); } System.out.println("\n fuera del bucle"); } } Docente: Ing° Pedro Beltrán Canessa 14