25
Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas

Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

Embed Size (px)

Citation preview

Page 1: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

Unidad IIFundamentos de programación en Java

Ing. José Luis Llamas Cárdenas

Page 2: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

En java para poder escribir se emplea l bj t S t t l

Unidad II

el objeto System.out, pero para leer del teclado es necesario emplear S t i E t bj t t lSystem.in Este objeto pertenece a la clase InputStream, esto significa que

l t lpara leer tenemos que emplear sus métodos, el más básico es read, que

it l á tpermite leer un carácter: char caracter = (char) System.in.read();

Page 3: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Pero como podemos comprobar es muy incómodo leer de letra en letra, por ello para poder leer una lí l t l l i i t ódi

Unidad II

línea completa emplearemos el siguiente código:

BufferedReader br = new BufferedReader(new I tSt R d (S t i ))InputStreamReader(System.in));

String línea = br.readLine();

En el cuál creamos un InputStreamReader a partir de System.in y pasamos dicho InputStreamReader al constructor de BufferedReader, el resultado es

l l t h b bque las lecturas que hagamos sobre br son en realidad realizadas sobre System.in, pero con la ventaja de que se permite leer una línea completa.

Page 4: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Además la línea del readLine puede lanzar Excepciones, es por ello que hay que

Unidad II

p , p q y qmeterla entre instrucciones try/catch para poder gestionar el posible error: String línea;String línea; try{ BufferedReader br = new BufferedReader(new

InputStreamReader(System in));InputStreamReader(System.in)); línea = br.readLine(); }catch(Exception e){e.printStackTrace();} }System.out.println(línea);

Page 5: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Excepciones (parte 1) Las excepciones permiten manejar errores en

Unidad II

Las excepciones permiten manejar errores en tiempo de ejecución si que el programa termine abruptamente, las palabras que se emplean son: try catch

fi ll finally throws throw throw

Page 6: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Excepciones (Parte 1)Unidad II

try {// código que puede arrojar una excepción

}t h(Ti E i )catch(Tipo_Excepcion e)

{// código para manejar la excepción

}}catch(Tipo_Excepcionn)….finally{{

// código que ejecuta siempre que termina // de ejecutar el código del try

}}

Page 7: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Entrada y Salida Estándar Para la salida de datos a consola se utiliza la

Unidad II

Para la salida de datos a consola se utiliza la instrucción System.out.println(“Cadena”+variable);

Para la entrada se puede hacer de muchas pmaneras, pero siempre hay que emplear un tipo excepción. Debido a que no se sabe que tipo de dato se va a recibirdato se va a recibir.

Page 8: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

public metodo() throws IOException{

Unidad II

BufferedReader teclado = new BufferedReader(new

InputStreamReader(System.in));

double l;

try {System.out.print(“Dato: ");l = Double.parseDouble(teclado.readLine());} catch (IOException e) {System.out.println("Error Entrada / Salida");}}

}

Page 9: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

En java será necesario transformar entre tipos de datos básicos, generalmente entre String hacia

l i t ti ti bá i i Si

Unidad II

cualquier otro tipo tipo básico, o viceversa. Si es necesario transformar un tipo básico hacia String, la forma más rápida consiste en concatenar el valor a un objeto String por ejemplo:valor a un objeto String, por ejemplo:

"" + 34 Con ello conseguiremos que se cree la cadena Con ello conseguiremos que se cree la cadena

"34". Si en cambio queremos transformar la cadena

"2345" a un valor int para poder operar con el2345 a un valor int para poder operar con el será necesario emplear:

int valor = Integer parseInt("2345");int valor = Integer.parseInt( 2345 );

Page 10: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Integer es una clase empleada para representar al tipo básico int y para

Unidad II

representar al tipo básico int, y para transformar de String a int, pero puede lanzar excepciones, es por ello que siempre h l / hhay que usarla con try/catch: int valor; try{try{

valor = Integer.parseInt( "2345"); }catch(Exception e){

e.printStackTrace();}} System.out.println(valor*10);

Page 11: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

Ejercicios 2.1U id d II

Hacer un programa que pregunte el nombre y el año de nacimiento y de cómo resultado

Unidad II

año de nacimiento y de cómo resultado

Hola <nombre>, en el año 2015 tendrás <n> añosaños

• Modificar El programa de las Areas y el programa del Volumen para que soliciten los datos.

• Elaborar un programa en Java que dado unaElaborar un programa en Java que dado una temperatura en ºF muestre la temperatura en ºC de acuerdo a la siguiente formulaºC (ºF 32) 5/9• ºC = (ºF — 32) x 5/9.

Page 12: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Imprimir mensajes con Formato System.out.printf permite imprimir cadenas y variables

ademas de aplicarles un formato

Unidad II

ademas de aplicarles un formato.

Ejemplo:

class Mascaras{

public static void main(String[]args){double t 1 586152;double t = 1.586152;System.out.printf("Numero redondeado %.5f ",t);

}}

Page 13: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Modificadores %% Imprime un signo de %. %c imprime un carácter con el código ASCII dado (con

Unidad II

%c imprime un carácter con el código ASCII dado (con 66 imprime B, por ejemplo). %s una cadena %d un decimal%u un decimal negativo o positivo sin signo%u un decimal negativo o positivo sin signo %o un integral en octal%x un integral en hexadecimal %e un número con punto flotante en notación científica%f un número con punto flotante en notación decimal%f un número con punto flotante en notación decimal %g puede ser %e ó %f, lo que decida printf que es lo mejor %X lo mismo que %x pero con mayúsculas %E como %e pero con 'E' mayúscula%E como %e pero con E mayúscula%G lo mismo que %E cuando se usa notación científica %p un "pointer"; imprime la locación en memoria de una variable en hexadecimal %n imprime la cantidad de caracteres desplegados%n imprime la cantidad de caracteres desplegados hasta el momento

Page 14: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

Otras "expresiones" que existen por tibilid d

Unidad II

compatibilidad: %i lo mismo que %d

%D l i %ld (d i l l )%D lo mismo que %ld (decimal largo) %U lo mismo que %lu (decimal largo sin signo)sin signo) %O lo mismo que %lo (octal largo) %F lo mismo que %f q

Mas acerca de formatos Mas acerca de formatos

Page 15: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.1 Instrucciones de Entrada y SalidaU id d II

EjercicioUnidad II

Realizar un programa en java que muestre el valor de PI pero con 5 4 3muestre el valor de PI, pero con 5, 4, 3 y 2 decimales.

Modificar el Programa de ºC para que Modificar el Programa de C para que muestre el resultado con 3 decimales

Crear un programa que pida un numero double y el numero de decimales y muestre el nuermo con los decimales especificadosespecificados

Page 16: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.2 Estructuras de ControlU id d II

if (condicion){

Unidad II

{// sentencias

}

if (condicion){{

// sentencias}}else{

//sentencias//sentencias}

Page 17: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.2 Estructuras de ControlU id d II

switch(expresion){

Unidad II

{case expresion_constante 1:

// sentenciasbreak;break;

case expresion_constante 2:// sentencias

i 3case expresion_constante 3:// sentenciasbreak;;

default: sentencias}

Page 18: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.2 Estructuras de ControlU id d IIUnidad II

while(condicion){

do {sentencias;{

sentencias;}

sentencias;}while(condicion);

for(contador = valor; contador < limite; contador++)for(contador = valor; contador < limite; contador++){

sentencias;}}

Page 19: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

Ejercicios 2.2U id d II

Construir una aplicación que tome un valor entero como argumento y que muestre si es par o no por

Unidad II

como argumento y que muestre si es par o no por pantalla.

Construir una aplicación que tome un valor entero como argumento, y que muestre el mes equivalente al entero introducido.

Crear un programa que dado un numero cualquiera me muestre en pantalla su Factorialcualquiera me muestre en pantalla su Factorial

Page 20: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.3 ArreglosU id d II

Java posee la capacidad de definir un conjunto de variables del mismo tipo agrupadas todas ellas

Unidad II

variables del mismo tipo agrupadas todas ellas bajo un mismo nombre, y distinguiéndolas mediante un índice numérico.

Para definir un array en java es como definir una variable o atributo, pero al especificar el tipo lo que hacemos es colocar un par de corchetes [] qu a o o o a u pa d o []para indicar que lo que estamos definiendo es un array. Por ejemplo:

public int [] losValores;

Page 21: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.3 ArreglosU id d II

Se pueden declarar en Java arrays de cualquier tipo:

Unidad II

cualquier tipo:char s[];i t iA []int iArray[];

Incluso se pueden construir arrays de arrays:i bl [][] i [4][5]int tabla[][] = new int[4][5];

Page 22: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.3 ArreglosU id d II

Los límites de los arrays se comprueban en tiempo de ejecución para evitar

Unidad II

tiempo de ejecución para evitar desbordamientos y la corrupción de memoria.

En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length SeTiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array.

int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */

Page 23: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.3 ArreglosU id d II E i l

Para crear un array en Java hay dos métodos básicos. Crear un array vacío:

Unidad II Esto que es equivalente a:String nombres[];nombres = new String[4];

b [0] St i ( "J " )int lista[] = new int[50];

d l l

nombres[0] = new String( "Juan" );nombres[1] = new String( "Pepe" );nombres[2] = new String( "Pedro" );nombres[3] = new String( "Maria" ); o se puede crear ya el array con sus valores

iniciales:

St ing nomb es[] {

nombres[3] = new String( Maria );

String nombres[] = {"Juan","Pepe","Pedro","Maria"};

Page 24: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

2.3 ArreglosU id d II

No se pueden crear arrays estáticos en tiempo de compilación:

Unidad II

int lista[50]; // generará un error en tiempo de compilación

T d ll i d l l Tampoco se puede rellenar un array sin declarar el tamaño con el operador new:

int lista[]int lista[];for( int i=0; i < 9; i++ )

lista[i] = i;

Es decir, todos los arrays en Java son estáticos. Para convertir un array en el equivalente a un array dinámico en C/C++, se usa la clase vector, quedinámico en C/C++, se usa la clase vector, que permite operaciones de inserción, borrado, etc. en el array.

Page 25: Curso Java Unidad II.ppt [Modo de compatibilidad] · Fundamentos de programación en Java Ing. ... St iSystem.in Et bjt t lEste objeto pertenece a la clase InputStream, esto significa

Ejercicios 2.3U id d II

Construir un programa que pida 5 numeros en cualquier orden y debe mostrar como resultado los

Unidad II

cualquier orden y debe mostrar como resultado los 5 numeros ordenados

Crear una aplicación que Recorra el alfabeto, lo almacene en un arreglo de caracteres y despues muestre el contenido del arreglomuestre el contenido del arreglo.