UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS FACULTAD DE INFORMÁTICA ELECTRÓNICA Y COMUNICACIÓN (FIEC) INF.222 PROGRAMACIÓN ORIENTADA A OBJETOS LABORATORIO #2
“ENTRADA Y SALIDAS DE DATOS A TRAVÉS DE FLUJOS”
PROFESOR DIEGO SANTIMATEO ESTUDIANTE ÁNGEL AGUILAR 8-821-2269 II AÑO II SEMESTRE
2008
INTRODUCCIÓN
En java para poder escribir se emplea el objeto System.out, pero para leer del teclado, es decir introducir desde teclado es necesario emplear System.in. Este objeto pertenece a la clase InputStream, esto significa que para leer tenemos que emplear sus métodos, el más básico es read, que permite leer un carácter. En este momento solo se pueden leer caracteres pero como se sabe que es muy incómodo leer carácter a carácter, es por ello para poder leer una línea completa se hace uso de la clase BufferedReader En el cuál se crea un InputStreamReader a partir de System.in y pasamos el InputStreamReader al constructor de BufferedReader, para que la lectura que se haga sobre el objeto creado en ese momento sea en realidad realizadas sobre System.in, para que a la final el resultado sea leer una línea completa.
GUÍA DE LABORATORIO
1. Pruebe el ejemplo 1, y verifique su funcionamiento. ¿Cuál es el objetivo del programa? Incluya un comentario que describa el trabajo del programa. 2. Compile el programa anterior sin usar throws IOException. ¿Qué ocurrió? ¿Qué método se asoció al error producido? 3. Analice el programa anterior, identifique clases, objetos y métodos. 4. Coloque nuevamente throws IOException y provoque un error introduciendo una letra como segundo valor capturado. ¿Qué ocurrió? . 5. Considere el siguiente ejemplo y provoque nuevamente un error: ¿Cuál fue la diferencia? import java.io. *; public class FlujoTeclado { public static void main (String args []) throws IOException { try { //Creación del flujo para leer datos - caracteres InputStreamReader isr=new InputStreamReader (System.in); //Creación del filtro para leer cadena de caracteres BufferedReader br=new BufferedReader (isr); System.out.print ("Teclea el primer numero: "); //Lectura de datos mediante el método readLine () String texto1=br.readLine (); //Conversión a int de la String anterior para poder sumar int num1=Integer.parseInt(texto1); System.out.print ("Teclea el segundo numero: "); String texto2=br.readLine(); int num2=Integer.parseInt(texto2); //Sumar los dos enteros System.out.println("Suma de "+num1+" y "+num2+" es "+(num1+num2)); } catch (Exception e) { System.out.println (“Error en la captura****”); } } //fin del main } 6. Reflexione sobre la utilidad del manejo de las excepciones con el try… catch. ¿Qué entendió como excepción? ¿Cuál es la función del try y cuál la del catch? ¿En qué referencia se apoyó?
RESULTADOS DE LA EXPERIENCIA
1- ) Ejemplo 1 import java.io.*; public class FlujoTeclado { public static void main (String args []) throws IOException{ //Creación del flujo para leer datos - caracteres InputStreamReader isr=new InputStreamReader (System. in); //Creación del filtro para leer cadena de caracteres BufferedReader br=new BufferedReader (isr); System.out.print ("Teclea el primer numero: "); //Lectura de datos mediante el método readLine () String texto1=br.readLine (); //Conversión a int de la String anterior para poder sumar int num1=Integer.parseInt(texto1); System.out.print ("Teclea el segundo numero: "); String texto2=br.readLine(); int num2=Integer.parseInt(texto2); //Sumar los dos enteros System.out.println("Suma de "+num1+" y "+num2+" es "+(num1+num2)); COMPILACIÓN Y EJECUCIÓN DEL PROGRAMA
R Una vez compilado el programa el objetivo del código es sumar dos números, se crea el flujo para leer datos ya que los datos son introducidos por teclado y se usa System.in. 2- ) RCompilando el programa anterior sin usar throws IOException ocurrió que envió errores, ya que esta función debe existir cuando haya entradas y salidas por defectos y el método asociado al error producido es readLine.
COMPILACIÓN DERL PROGRAMA SIN EL THROWS IO EXCEPTION
3- ) RAnalizando el programa anterior se identificaron como clases, objetos y métodos lo siguientes: CLASE
OBJETOS
Inputstreamreader bufferedreader
system.in
isr br
MÉTODOS readline() integer.parseint throws ioexception
4- ) R Colocando nuevamente throws IOException se provocó un error introduciendo una letra como segundo valor capturado y lo que pasó fue que no se realizó la suma correctamente porque un carácter no se puede convertir a un entero. COMPILACIÓN COLOCANDO NUEVAMENTE EL THROWS IOEXCEPTION
5- ) Considerando el ejemplo
import java.io.*; public class FlujoTeclado { public static void main (String args []) throws IOException{ try { //Creación del flujo para leer datos - caracteres InputStreamReader isr=new InputStreamReader (System.in); //Creación del filtro para leer cadena de caracteres BufferedReader br=new BufferedReader (isr); System.out.print ("Teclea el primer numero: "); //Lectura de datos mediante el método readLine () String texto1=br.readLine (); //Conversión a int de la String anterior para poder sumar int num1=Integer.parseInt(texto1); System.out.print ("Teclea el segundo numero: "); String texto2=br.readLine(); int num2=Integer.parseInt(texto2); //Sumar los dos enteros System.out.println("Suma de "+num1+" y "+num2+" es "+(num1+num2)); } catch (Exception e) { System.out.println ("Error en la captura****"); } } //fin del main } COMPILACIÓN UTILIZANDO TRY Y CATCH
R Al provocar en este programa un error la diferencia que se vio fue que este dice porque se produjo dicho error. 6- ) R Reflexionando sobre la utilidad del manejo de excepciones TRY y CATCH se entiende por excepción aquellas condiciones que están destinadas a la detección de errores, en este caso la función del TRY es que siempre se ejecuta, es decir, el código en donde pueden producirse las excepciones y el CATCH es código que se ejecuta cuando se produce una excepción. Referencia en: www.cica.es/formacion/JavaTut/Cap6/excep.html
CONCLUSIÓN
Para finalizar se puede decir que el flujo es como un rió cuyo contenido son los datos que se quieran procesar. Lo que permite que esos datos viajen es el río, es decir, el flujo. En el caso de la captura, desde un programa Java, de datos introducidos por un usuario mediante teclado, para que sean procesados en el programa. Además el flujo u objeto InputStreamReader es lo que permite leer datos el System.in u objeto InputStream es el argumento del constructor de InputStreamReader y modela el origen de los datos que se leen, es decir, el teclado filtro u objeto BufferedReader permite, mediante la utilización del método String readLine(), leer de forma óptima del flujo.