Captulo 2 Introduccin al lenguaje de programacin Java

  • Slides: 30
Download presentation
Capítulo 2: Introducción al lenguaje de programación Java

Capítulo 2: Introducción al lenguaje de programación Java

En este capítulo se tratarán los siguientes temas: 2. 1. Introducción 2. 2 Comencemos

En este capítulo se tratarán los siguientes temas: 2. 1. Introducción 2. 2 Comencemos a programar 2. 3 Tipos de datos, operadores y estructuras de control 2. 4 Tratamiento de cadenas de caracteres Capítulo 2

 • • • 2. 1 Introducción Java es un lenguaje de programación de

• • • 2. 1 Introducción Java es un lenguaje de programación de propósitos generales. Podemos usarlo para desarrollar el mismo tipo de aplicaciones que programamos con otros lenguajes como C o Pascal. Habitualmente, tendemos a asociar “Java” al desarrollo de páginas de Internet. Sin embargo, la creencia popular de que Java es un lenguaje para programar páginas Web es totalmente falsa. La confusión surge porque Java permite “incrustar” programas dentro de las páginas Web para que sean ejecutados dentro del navegador del usuario. Estos son los famosos applets, que fueron muy promocionados durante los noventa, pero que hoy en día son obsoletos y, prácticamente, quedaron en desuso. Tampoco debemos confundir Java con Java. Script. El primero es el lenguaje de programación que estudiaremos en este capítulo. El segundo es un lenguaje de scripting que permite agregar funcionalidad dinámica en las páginas Web. Nuevamente, la similitud de los nombres puede aportar confusión, pero vale la pena aclarar que Java. Script no tiene nada que ver con Java: son dos cosas totalmente diferentes. El lenguaje de programación Java se caracteriza por ser totalmente orientado a objetos y porque su sintaxis es casi idéntica a la de C++. Más allá de esto, debemos mencionar que incluye una biblioteca muy extensa (árbol de clases) que provee funcionalidad para casi todo lo que un programador pueda necesitar. Esto abarca desde manejo de cadenas de caracteres hasta sockets, interfaz gráfica, acceso a bases de datos, etc. Capítulo 2

2. 2 Comencemos a programar • Nuestro primer programa simplemente mostrará la frase "Hola

2. 2 Comencemos a programar • Nuestro primer programa simplemente mostrará la frase "Hola Mundo !!!" en la consola. package libro. cap 01; public class Hola. Mundo { public static void main(String[] args) { System. out. println("Hola Mundo !!!"); } } • • Un programa Java es una clase (class) que contiene el método (o función) main. Este método tiene que ser definido con los modificadores public static void y debe recibir un String[] como parámetro. Los bloques de código se delimitan con { } y las sentencias finalizan con ; . Podemos ver también que el programa comienza definiendo un package. Por último, con System. out. println escribimos en la consola el texto queremos mostrar. En Java siempre codificamos clases y cada clase debe estar contenida dentro de un archivo de texto con el mismo nombre que la clase y con extensión. java. Así, nuestro programa debe estar codificado en un archivo llamado Hola. Mundo. java (respetando mayúsculas y minúsculas). Capítulo 2

2. 2. 1 El Entorno Integrado de Desarrollo (IDE) Si bien podemos editar nuestro

2. 2. 1 El Entorno Integrado de Desarrollo (IDE) Si bien podemos editar nuestro código utilizando cualquier editor de texto y luego compilarlo en línea de comandos, lo recomendable es utilizar una herramienta que nos ayude durante todo el proceso de programación. Una IDE es una herramienta que permite editar programas, compilarlos, depurarlos, documentarlos, ejecutarlos, etcétera. Las principales IDE para desarrollar programas Java son Eclipse y Net. Beans. En este libro utilizaremos Eclipse. • • 2. 2. 2 Entrada y salida estándar En Java, los objetos System. in y System. out representan la entrada y la salida estándar respectivamente que, por defecto, son el teclado y la pantalla (en modo texto). Para escribir en la consola, utilizaremos System. out. println. Para leer datos que se ingresan por teclado, utilizaremos objetos de la clase Scanner construidos a partir de System. in (standard input). • • 2. 2. 3 Comentarios en el código fuente • • Java permite los mismos tipos de comentarios que C y C++. Comentarios de una sola línea: // esto es una linea de codigo comentada • Comentarios de más de una línea: /* Estas son varias lineas de codigo comentadas */ Capítulo 2

2. 3 Tipos de datos, operadores y estructuras de control • Las estructuras de

2. 3 Tipos de datos, operadores y estructuras de control • Las estructuras de control, los operadores aritméticos, relacionales y lógicos, unarios y binarios, y los tipos de datos que provee Java, son idénticos a los de C y C++. Es decir, el while, do-while , for, if, switch e if inline , los tipos short, int, long, float, double y char y los operadores +, -, *, /, %, ++, --, +=, -=, *=, /=, >, <, !=, <=, >=, coinciden totalmente con los que usamos en C. • Java, además, agrega los siguientes tipos de datos: boolean y byte. El primero admite los valores lógicos true y false. El segundo admite valores enteros signados de hasta 1 byte de precisión. 2. 3. 1 El bit de signo para los tipos de datos enteros • En Java no existe el modificador unsigned de C. Todos los tipos enteros son signados, salvo el char que, además, se representa en 2 bytes. Capítulo 2

2. 3. 2 El compilador y la máquina virtual (JVM o JRE) • •

2. 3. 2 El compilador y la máquina virtual (JVM o JRE) • • • Las aplicaciones Java se ejecutan dentro de una máquina virtual o runtime enviroment habitualmente llamadas JVM o JRE. Cuando compilamos un programa el compilador genera un archivo con extensión. class que contiene código de máquina virtual, también llamado bytecode. La máquina virtual se instala sobre el sistema operativo que estemos utilizando y define una plataforma homogénea sobre la que podemos ejecutar programas Java. Por lo anterior, todos los programas Java corren sobre la misma plataforma virtual. En esta plataforma las longitudes de los tipos de datos son las siguientes: Tipo Descripción Longitud byte entero con signo 1 byte char entero sin signo 2 bytes short entero con signo 2 bytes int entero con signo 4 bytes long entero con signo 8 bytes float punto flotante 4 bytes double punto flotante 8 bytes boolean lógico (admite true o false) 1 byte String objeto, representa una cadena de caracteres Capítulo 2

2. 3. 3 Estructuras de decisión • Java tiene las mismas estructuras de decisión

2. 3. 3 Estructuras de decisión • Java tiene las mismas estructuras de decisión que C. Ejemplo: ¿Es mayor de 21 años? • En el siguiente ejemplo utilizamos un if para determinar si el valor (edad) ingresado por el usuario es mayor o igual que 21. package libro. cap 01; import java. util. Scanner; public class Es. Mayor. Que 21 { public static void main(String[] args) { Scanner scanner = new Scanner(System. in); System. out. print("Ingrese su edad: "); int edad = scanner. next. Int(); if( edad >= 21 ) { System. out. println("Ud. es mayor de edad !"); } else { System. out. println("Ud. es es menor de edad"); } } } Capítulo 2

2. 3. 4 Estructuras iterativas • El siguiente programa utiliza un while para mostrar

2. 3. 4 Estructuras iterativas • El siguiente programa utiliza un while para mostrar los primeros n números naturales. El usuario ingresa el valor n por teclado. Ejemplo: Muestra números naturales. package libro. cap 01; import java. util. Scanner; public class Primeros. Numeros 1 { public static void main(String[] args) { Scanner scanner = new Scanner(System. in); // leemos el valor de n int n = scanner. next. Int(); int i = 1; while( i <= n ) { // mostramos el valor de i System. out. println(i); // incrementamos el valor de i i++; } } } Capítulo 2

2. 3. 5 El tipo de datos boolean y las expresiones lógicas • En

2. 3. 5 El tipo de datos boolean y las expresiones lógicas • En Java existe el tipo boolean que admite los valores lógicos true y false. Por otro lado, y a diferencia de C, el tipo int no tiene valor de verdad. Código C Código Java //: int fin=0; boolean fin=false; while( !fin ) { //: • //: } } //: Lo anterior, más allá de las cuestiones semánticas, hace más robusto al lenguaje de programación ya que algunos de los errores lógicos típicos que cometemos cuando programamos en C, en Java se detectan como errores de compilación. Código C Código Java //: int a=3; if( a=10 ) { printf("a vale 10n"); } else { printf("a no es 10n"); } if( a=10 ) { System. out. println("a vale 10"); } else { System. out. println("a no es 10"); } //: Capítulo 2

2. 3. 6 Las constantes • • Las constantes se definen fuera de los

2. 3. 6 Las constantes • • Las constantes se definen fuera de los métodos utilizando el modificador final. Habitualmente, se las define como públicas y estáticas. Ejemplo: Muestra día de la semana package libro. cap 01; import java. util. Scanner; public class Demo. Constantes { // definimos las constantes public static final int LUNES = 1; public static final int MARTES = 2; public static final int MIERCOLES = 3; public static final int JUEVES = 4; public static final int VIERNES = 5; public static final int SABADO = 6; public static final int DOMINGO = 7; public static void main(String[] args) { Scanner scanner = new Scanner(System. in); System. out. print("Ingrese un dia de la semana (numero): "); int v = scanner. next. Int(); Capítulo 2

2. 3. 6 Las constantes String dia; switch( v ) { case LUNES: dia

2. 3. 6 Las constantes String dia; switch( v ) { case LUNES: dia = "Lunes"; break; case MARTES: dia = "Martes"; break; case MIERCOLES: dia = "Miercoles"; break; case JUEVES: dia = "Jueves"; break; case VIERNES: dia = "Viernes"; break; case SABADO: dia = "Sabado"; break; case DOMINGO: dia = "Domingo"; break; default: dia = "Dia incorrecto. . . Ingrese un valor entre 1 y 7. "; } System. out. println(dia); } } Capítulo 2

2. 3. 7 Arrays • En Java, al igual que en C, los arrays

2. 3. 7 Arrays • En Java, al igual que en C, los arrays comienzan siempre desde cero. // definimos un array de 10 elementos enteros numerados de 0 a 9 int arr[] = new int[10]; • También podemos construir un array de n elementos, siendo n una variable. int n = 10; int arr[] = new int[n]; Ejemplo: Almacena valores en un array. • En el siguiente ejemplo , definimos un array de 10 enteros. Luego pedimos al usuario que ingrese valores numéricos (no más de diez) y los guardamos en el array. Por último, recorremos el array para mostrar su contenido. package libro. cap 01; import java. util. Scanner; public class Demo. Array { public static void main(String[] args) { // definimos un array de 10 enteros int arr[] = new int[10]; // el scanner para leer por teclado. . . Scanner scanner = new Scanner(System. in); Capítulo 2

2. 3. 7 Arrays // leemos el primer valor System. out. print("Ingrese un valor

2. 3. 7 Arrays // leemos el primer valor System. out. print("Ingrese un valor (0=>fin): "); int v = scanner. next. Int(); int i=0; // mientras v sea distinto de cero AND i sea menor que 10 while( v!=0 && i<10 ) { // asignamos v en arr[i] y luego incrementamos el valor de i arr[i++] = v; // leemos el siguiente valor System. out. print("Ingrese el siguiente valor (0=>fin): "); v = scanner. next. Int(); } // recorremos el array mostrando su contenido for( int j=0; j<i; j++ ) { System. out. println(arr[j]); } } } Capítulo 2

2. 3. 7 Arrays • Si conocemos de antemano los valores que vamos a

2. 3. 7 Arrays • Si conocemos de antemano los valores que vamos a almacenar en el array entonces podemos definirlo “por extensión”. Esto crea el array con la dimensión necesaria para contener el conjunto de valores y asigna cada elemento del conjunto en la posición relativa del array. // creamos un array de strings con los nombres de los Beatles String beatles[] = {"John", "Paul", "George", "Ringo"}; • En Java los arrays son objetos. Tienen el atributo length que indica su capacidad. // imprimimos en consola cuántos son Los Beatles System. out. println("Los Beatles son: "+ beatles. length); • Las siguientes son formas correctas y equivalentes para declarar arrays: String arr[]; String []arr; String[] arr; • Notemos también que no es lo mismo “declarar” un array que “crearlo o instanciarlo”. // definimos un array de strings (aún sin dimensionar) String arr[]; // creamos (instanciamos) el array arr = new String[10]; // definimos e instanciamos el array de 10 strings String arr[] = new String[10] Capítulo 2

2. 3. 8 Matrices • Una matriz es un array de dos dimensiones. Se

2. 3. 8 Matrices • Una matriz es un array de dos dimensiones. Se define de la siguiente manera: // definimos una matriz de enteros de 3 filas por 4 columnas int mat[][] = new int[3][4]; • Ejemplo: Llena una matriz con números aleatorios. • En el siguiente programa, pedimos al usuario que ingrese las dimensiones de una matriz (filas y columnas). Luego creamos una matriz con esas dimensiones y la llenamos con números generados aleatoriamente. package libro. cap 01; import java. util. Scanner; public class Demo. Matriz { public static void main(String[] args) { Scanner scanner = new Scanner(System. in); System. out. print("Ingrese cantidad de filas: "); int n = scanner. next. Int(); System. out. print("Ingrese cantidad de columnas: "); int m = scanner. next. Int(); Capítulo 2

2. 3. 8 Matrices // creamos una matriz de n filas x m columnas

2. 3. 8 Matrices // creamos una matriz de n filas x m columnas int mat[][] = new int[n][m]; for(int i=0; i<n; i++ ) { for(int j=0; j<m; j++) { // generamos un número aleatorio entre 0 y 1000 int nro = (int)(Math. random()*1000); // asignamos el número en la matriz mat[i][j] = nro; } } for(int i=0; i<n; i++ ) { for(int j=0; j<m; j++) { // imprimimos la celda de la matriz System. out. print(mat[i][j]+"t"); } System. out. println(); } } } Capítulo 2

2. 3. 9 Literales de cadenas de caracteres • Una cadena de caracteres literal

2. 3. 9 Literales de cadenas de caracteres • Una cadena de caracteres literal se representa encerrada entre comillas dobles, por ejemplo: "Esto es una cadena". En cambio, un carácter literal se representa encerrado entre comillas simples, por ejemplo: 'A'. • En Java las cadenas son tratadas como objetos; por lo tanto, "Esto es una cadena" es un objeto sobre el cual podemos invocar métodos, como veremos a continuación: // imprimimos ESTO ES UNA CADENA (en mayúsculas) System. out. println("Esto es una cadena". to. Upper. Case()); • En cambio, los caracteres (al igual que en C) son valores numéricos enteros. Por ejemplo, 'A' es en realidad el valor 65 (el código ASCII del carácter). • Notemos además que no es lo mismo "A" que 'A'. El primero es una cadena de caracteres que contiene un único carácter; es un objeto. El segundo es un valor literal de tipo char, un valor numérico. Capítulo 2

2. 3. 10 Caracteres especiales • • • En Java existen los mismos caracteres

2. 3. 10 Caracteres especiales • • • En Java existen los mismos caracteres especiales que en C. Estos caracteres se pueden utilizar anteponiendo la barra . Algunos son: t – tabulador n – salto de línea " – comillas dobles ' – comillas simples \ – barra Ejemplo: package libro. cap 01; public class Demo. Caracteres. Especiales { public static void main(String[] args) { System. out. println("Estot es un "TABULADOR""); System. out. println("Esto es unn. BARRAn. ENEnn : O)"); System. out. println("La barra es asi: \"); } } Capítulo 2

2. 3. 11 Argumentos en línea de comandos • En Java accedemos a los

2. 3. 11 Argumentos en línea de comandos • En Java accedemos a los argumentos pasados en la línea de comandos a través del String[] que recibe el método main. El siguiente ejemplo muestra los argumentos pasados a través de la línea de comandos. package libro. cap 01; public class Echo. Java { public static void main(String[] args) { for(int i=0; i<args. length; i++) { System. out. println(args[i]); } System. out. println("Total: "+args. length+" argumentos. "); } } • Si ejecutamos este programa desde la línea de comandos así: c: >java Echo. Java Hola que tal? • La salida será: Hola que tal? Total: 3 argumentos. Capítulo 2

2. 4 Tratamiento de cadenas de caracteres • Las cadenas de caracteres son tratadas

2. 4 Tratamiento de cadenas de caracteres • Las cadenas de caracteres son tratadas como objetos porque, en Java, String es una clase. La clase String define métodos que permiten manipular los caracteres de las cadenas. 2. 4. 1 Acceso a los caracteres de un string Una cadena representa una secuencia finita de cero o más caracteres numerados a partir de cero. Es decir que la cadena "Hola" tiene 4 caracteres numerados entre 0 y 3. Ejemplo: Acceso directo a los caracteres de una cadena. • package libro. cap 01. cadenas; public class Cadenas { public static void main(String[] args) { String s = "Esta es mi cadena"; System. out. println( s. char. At(0) ); System. out. println( s. char. At(5) ); System. out. println( s. char. At(s. length()-1) ); for(int i=0; i<s. length(); i++) { char c = s. char. At(i); System. out. println(i+" -> "+c); } } } Capítulo 2

2. 4. 2 Mayúsculas y minúsculas Ejemplo: Pasar una cadena a mayúsculas y a

2. 4. 2 Mayúsculas y minúsculas Ejemplo: Pasar una cadena a mayúsculas y a minúsculas. package libro. cap 01. cadenas; public class Cadenas 1 { public static void main(String[] args) { String s = "Esto Es Una Cadena de ca. RACt. ERs"; String s. Mayus = s. to. Upper. Case(); String s. Minus = s. to. Lower. Case(); System. out. println("Original: "+s); System. out. println("Mayusculas: "+s. Mayus); System. out. println("Minusculas: "+s. Minus); } } Capítulo 2

2. 4. 3 Ocurrencias de caracteres • Ejemplo: Ubicar la posición de un carácter

2. 4. 3 Ocurrencias de caracteres • Ejemplo: Ubicar la posición de un carácter dentro de una cadena. package libro. cap 01. cadenas; public class Cadenas 2 { public static void main(String[] args) { String s = "Esto Es Una Cadena de ca. RACt. ERs"; int pos 1 = s. index. Of('C'); int pos 2 = s. last. Index. Of('C'); int pos 3 = s. index. Of('x'); System. out. println(pos 1); System. out. println(pos 2); System. out. println(pos 3); } } Capítulo 2

2. 4. 4 Subcadenas Ejemplo: Uso del método substring para obtener porciones de la

2. 4. 4 Subcadenas Ejemplo: Uso del método substring para obtener porciones de la cadena original. package libro. cap 01. cadenas; public class Cadenas 3 { public static void main(String[] args) { String s = "Esto Es Una Cadena de ca. RACt. ERes"; String s 1 = s. substring(0, 7); String s 2 = s. substring(8, 11); // tomamos desde el carácter 8 hasta el final String s 3 = s. substring(8); System. out. println(s 1); System. out. println(s 2); System. out. println(s 3); } } Capítulo 2

2. 4. 5 Prefijos y sufijos • Con los métodos start. With y ends.

2. 4. 5 Prefijos y sufijos • Con los métodos start. With y ends. With, podemos verificar fácilmente si una cadena comienza con un determinado prefijo o termina con algún sufijo. package libro. cap 01. cadenas; public class Cadenas 4 { public static void main(String[] args) { String s = "Un buen libro de Algoritmos"; boolean b 1 b 2 b 3 b 4 = = s. starts. With("Un buen"); s. starts. With("A"); s. ends. With("Algoritmos"); s. ends. With("Chau"); // // true false System. out. println(b 1); System. out. println(b 2); System. out. println(b 3); System. out. println(b 4); } } Capítulo 2

2. 4. 6 Posición de un substring dentro de la cadena • Los métodos

2. 4. 6 Posición de un substring dentro de la cadena • Los métodos index. Of y last. Index. Of están sobrecargados de forma tal que permiten detectar la primera y la última ocurrencia (respectivamente) de un substring dentro de la cadena. package libro. cap 01. cadenas; public class Cadenas 5 { public static void main(String[] args) { String s = "Un buen libro de Algoritmos, un buen material"; int pos 1 = s. index. Of("buen"); // retorna 3 int pos 2 = s. last. Index. Of("buen"); // retorna 32 System. out. println(pos 1); System. out. println(pos 2); } } Capítulo 2

2. 4. 7 Conversión entre números y cadenas • En el siguiente ejemplo, vemos

2. 4. 7 Conversión entre números y cadenas • En el siguiente ejemplo, vemos cómo podemos realizar conversiones entre valores numéricos y cadenas y viceversa. // --- operaciones con el tipo int --int i = 43; // convertimos de int a String s. Int = Integer. to. String(i); // convertimos de String a int i 2 = Integer. parse. Int(s. Int); // --- operaciones con el tipo double --double d = 24. 2; // convertimos de double a String s. Double = Double. to. String(d); // convertimos de String a double d 2 = Double. parse. Double(s. Double); Capítulo 2

2. 4. 8 Representación numérica en diferentes bases Utilizando la clase Integer podemos obtener

2. 4. 8 Representación numérica en diferentes bases Utilizando la clase Integer podemos obtener la representación binaria, octal, hexadecimal y cualquier otra base numérica de un valor entero especificado. Esto lo veremos en el siguiente programa. Ejemplo: Muestra un valor entero en diferentes bases numéricas. • package libro. cap 01. cadenas; import java. util. Scanner; public class Cadenas 6 { public static void main(String[] args) { Scanner scanner = new Scanner(System. in); System. out. print("Ingrese un valor entero: "); int v = scanner. next. Int(); System. out. println("Valor Ingresado: "+v); System. out. println("binario = "+Integer. to. Binary. String(v)); System. out. println("octal = "+Integer. to. Octal. String(v)); System. out. println("hexadecimal = "+Integer. to. Hex. String(v)); System. out. print("Ingrese una base numerica: "); int b = scanner. next. Int(); String s. Base. N = Integer. to. String(v, b); System. out. println(v + " en base("+b+") = " + s. Base. N); } } Capítulo 2

2. 4. 9 La clase String. Tokenizer • Utilizando la clase String. Tokenizer podemos

2. 4. 9 La clase String. Tokenizer • Utilizando la clase String. Tokenizer podemos separar una cadena en tokens delimitados por un separador. En el siguiente ejemplo veremos cómo hacerlo. package libro. cap 01. cadenas; import java. util. String. Tokenizer; public class Cadenas 7 { public static void main(String[] args) { String s = "Juan|Marcos|Carlos|Matias"; String. Tokenizer st = new String. Tokenizer(s, "|"); String tok; while( st. has. More. Tokens() ) { tok = st. next. Token(); System. out. println(tok); } } } Capítulo 2

2. 4. 10 Comparación de cadenas En Java no existe un tipo de datos

2. 4. 10 Comparación de cadenas En Java no existe un tipo de datos primitivo para representar cadenas de caracteres. Las cadenas se representan como objetos de la clase String. Ahora bien, dado que las cadenas son objetos y los objetos son punteros, resulta que si comparamos dos cadenas utilizando el operador ==, lo que realmente estaremos comparando serán las direcciones de memoria a las que apuntan los objetos. • • package libro. cap 01. cadenas; import java. util. Scanner; public class Cadenas 8 { public static void main(String[] args) { Scanner scanner = new Scanner(System. in); System. out. print("Ingrese una cadena: "); String s 1 = scanner. next(); System. out. print("Ingrese otra cadena: "); String s 2 = scanner. next(); // mostramos las cadenas para verificar lo que contienen System. out. println("s 1 = [" + s 1 + "]"); System. out. println("s 2 = [" + s 2 + "]"); // esto está mal !!! if( s 1==s 2 ) { System. out. println("Son iguales"); } else { System. out. println("Son distintas"); } } } Capítulo 2