UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL DE VERAGUAS. FACULTAD INFORMÁTICA ELECTRÓNICA Y COMUNICACIÓN ESCUELA INGENIERÍA EN INFORMÁTICA. LICENCIATURA EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y EMPRESARIAL. ASIGNATURA PROGRAMACIÓN IV II SEMESTRE I I AÑO INFORME DE LABORATORIO #2 (FLUJO DE DATOS) REALIZADO POR: JULIO FLORES 9-728-2148
PROFESOR DIEGO SANTIMATEO
FECHA DE ENTREGA 12 DE SEPTIEMBRE DE 2008
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)); } } Experimente 1. Pruebe el ejemplo 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ó?
RESULTADO DE LAS EXPERIENCIAS Experimento #1: El objetivo del primer ejemplo es sumar números enteros introducidos desde el teclado y el trabajo del programa es: Se muestra en pantalla el mensaje y luego se introducen los datos. El programa lee el carácter introducido emplea el System.in que es un objeto de la clase InputStream para leer en byte, luego utilizando la clase InputStreamReader convierte el System.in en Reader para leer los caracteres introducidos y le asigna al objeto isr los caracteres sueltos. Después utilizando la clase BufferedReader se captura toda la línea del objeto isr y lo asigna a otro objeto llamado br. Luego se utiliza el método readLine para leer toda la línea, se realiza la conversión del objeto String a un entero (int) utilizando el método parseInt. Después se muestra el segundo mensaje y se realiza todo el proceso anterior hasta la lectura de datos mediante el método readLine, con la cual se utilizan objetos diferentes para cada valor y finalmente se suman. Experimento #2: Al borrar del programa el throws IOException ocurrieron dos errores, el cual indicaba que no estaba declarada una excepción y que debía ser declarado para asignarlos a String texto1 = br.readLine y String text2 = br.readLine y este error se asocia al método readLine. Siempre que se introduzcan datos desde el teclado debe estar declarado el throws IOException para que pueda funcionar el programa, y en caso de que se introduzca un valor inválido el compilador muestra los errores de ejecución.
Experimento #3: En el primer ejemplo identifique: Clases: FlujoTeclado, InputStreamReader, BufferedReader, Objetos: isr, br, texto1, num1, texto2, num2, System.out. Métodos: readLine, parseInt. Experimento #4: Después de haber colocado nuevamente el throws IOException y provocado un error introduciendo una letra en el segundo mensaje y presionar enter se mostró en pantalla un mensaje de excepción en el main. El throws IOException se activa o ejecuta cada vez que introduzca un dato inválido en este caso una letra. Experimento #5: Utilizando y provocando nuevamente un error en el segundo ejemplo la diferencia con el primero fue que se mostró un mensaje creado y no un mensaje como el tan específico como el del primer ejemplo. Experimento #6: La excepción es una condición anormal que ocurre durante la ejecución de un programa, y detiene la secuencia normal de las instrucciones del programa. El objetivo del uso de las excepciones es para la detección y corrección de errores. La función de la sentencia try consiste de un bloque de instrucciones del programa que se desea probar o proteger de la excepciones, el cual gobierna las sentencias encerradas dentro del él y define el ámbito de cualquier manejador de excepción asociado con él. La sentencia catch requiere un sólo argumento formal. Este argumento parece un argumento de una declaración de método. El tipo del argumento declara el tipo de excepción que el manejador puede manejar y debe ser el nombre de una clase heredada de la clase Throwable definida en el paquete java.lang. (Cuando los programas Java lanzan una excepción realmente están lanzado un objeto, sólo pueden lanzarse los objetos derivados de la clase Throwable. El bloque catch contiene una serie de sentencias Java legales. Estas sentencias se ejecutan cuando se llama al manejador de excepción. El sistema de ejecución llama al manejador de excepción cuando el manejador es el primero en la pila de llamadas cuyo tipo coincide con el de la excepción lanzada. Me apoye en la referencia: http://www.programacion.com/tutorial/excepciones/