Parte I: Programación en un lenguaje orientado a objetos

Documentos relacionados
Prácticas de Programación

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Introduciendo datos desde el

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

Información de la lectura en un programa.

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Entrada y Salida con Java

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Práctica III: Streams, Readers y Writers

IIC1103 Introducción a la Programación. Ayudantía: Archivos

Programación Orientada a Objetos. Tema 7: Persistencia

Lenguaje de programación con JAVA

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Estructuras básicas de la programación en Java

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Guía - Taller # 2 (JAVA)

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Nota: en el directorio de prácticas y en PoliformaT puedes descargar los ficheros de código fuente de los ejemplos que aparecen en este anexo.

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

La clase estándar Scanner

Tema 4. Excepciones en Java

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Práctica 4: Herencia. Objetivos:

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Examen de Prácticas de Programación Ingeniería Informática

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Un breve resumen del lenguaje Java

Strings en Java. String es una clase, no un tipo primitivo. Las variables de tipo String, en cualquier instante, pueden contener:

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

StringBuffer, Math y Wrapper

Informática Ingeniería en Electrónica y Automática Industrial

Principios de Computadoras II

James Gosling, creador de Java

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Ejemplo de lectura por teclado de un número entero: int n; System.out.print("Introduzca un número entero: "); n = sc.nextint();

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Streams y manejo de entrada y salida (Input & Output)

DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT

CONCEPTOS BASICOS DEL LENGUAJE JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Ejercicios de evaluación de fundamentos de programación en Java

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Curso Informática Lección 2. Introducción a la programación en Java

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Programación Orientada a Objetos. Java: Excepciones

FUNDAMENTOS DE JAVA PARA LA CONCURRENCIA

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

FUNDAMENTOS DE INFORMÁTICA

Elementos léxicos del lenguaje de programación Java

Práctica 5: Servidor web concurrente en Java

TEMA 5. EXCEPCIONES EN JAVA DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS

Introducción - por qué usarlas?(1)

Tema 2. El lenguaje de programación Java (Parte 1)

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

2. Estructura de un programa en Java

Operadores y Expresiones

Manejo de Excepciones Para capturar y manejar las excepciones Java proporciona la sentencia try, catch y finalty. Entre un try y un catch se escribe

Programación En Lenguaje C

TEMA 1. Introducción a la programación. CONSIDERACIONES GENERALES.

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Definición de Memoria

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Tema 4. Entrada/Salida. Serialización de Objetos.

Programación Orientada a Objetos. Java: Excepciones

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

Lenguajes de programación

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

Elementos de un programa en C

Datos y tipos de datos

Parte I: Elementos del lenguaje Ada

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

La Plataforma J2SE (Java 7) PROGRAMA HOLA MUNDO

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Aprendizaje activo: flujos

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Federico Peinado

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

FACULTAD DE INGENIERÍA

Tema 2. El lenguaje JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Bibliografía (Java) Java: Introducción a Java

Modulo 11. Clases y Objetos en Java

Transcripción:

Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento de errores 7. Entrada/salida con ficheros Ficheros. Flujos de datos. Escritura de ficheros de texto. Escritura de texto con formato. Lectura de ficheros de texto. 8. Herencia y Polimorfismo www.istr.unican.es Michael González Harbour, 6/abr/17 1 1. Ficheros Fichero: secuencia de bytes en un dispositivo de almacenamiento: disco duro, DVD, memoria USB, se puede leer y/o escribir se identifica mediante un nombre - absoluto (pathname) /home/pepe/documentos/un_fichero - o relativo (a la carpeta del proyecto con el main) un_fichero Tipos de ficheros: programas: contienen instrucciones datos: contienen información, como números (enteros o reales), secuencias de caracteres, www.istr.unican.es Michael González Harbour, 6/abr/17 2

Ficheros de texto y binarios Tipos de ficheros de datos: de bytes (binarios): pensados para ser leídos por un programa de caracteres (de texto): pueden ser leídos y/o creados por una persona 0 1 2 3 4 5 6 7 Fichero binario 00000000 00000000 00000000 00001110 00000000 00000000 00000000 00100001 Un número entero: 14 Otro número entero: 33 Un número entero: 14 Un texto: "hola" 0 1 2 3 4 5 Fichero de texto 00110001 00110100 01101000 01101111 01101100 01100001 1 (código ASCII 0x31) 4 (código ASCII 0x34) h (código ASCII 0x68) o (código ASCII 0x6F) l (código ASCII 0x6C) a (código ASCII 0x61) Caracteres que vemos www.istr.unican.es Michael González Harbour, 6/abr/17 3 Punteros de lectura y escritura Indican el próximo byte a leer o a escribir Gestionados automáticamente por el sistema operativo Comienzan apuntando al primer byte del fichero Van avanzando por el fichero según se van leyendo/escribiendo sus contenidos Ejemplo: puntero de lectura lectura de 4 bytes puntero de lectura lectura de 2 bytes puntero de lectura www.istr.unican.es Michael González Harbour, 6/abr/17 4

2. Flujos de datos (I/O Streams) La Entrada/Salida de Java se organiza generalmente mediante objetos llamados I/O Streams Un I/O Stream es una secuencia ordenada de datos con un determinado origen o destino Hay dos tipos de streams: de bytes (binarios) de caracteres (de texto) IO_Stream En caso de error, muchos de los métodos de los streams lanzan IOException y otras excepciones Casi todos están definidos en java.io www.istr.unican.es Michael González Harbour, 6/abr/17 5 Uso de Streams para acceder a ficheros Normalmente se utilizan encadenados por parejas: Binarios Objetos bytes ObjectOutputStream Datos Primitivos FileOutputStream Objetos bytes ObjectInputStream Datos Primitivos FileInputStream Fichero Fichero De Texto: Strings PrintWriter Strings, Scanner números, etc. o BufferedReader caracteres FileWriter FileReader Fichero Fichero www.istr.unican.es Michael González Harbour, 6/abr/17 6

Objetos predefinidos System.out es un objeto de la clase OutputStream que representa la pantalla métodos print, println, printf, System.in es un objeto de la clase InputStream que representa el teclado Deberían ser de las clases PrintWriter y BufferedReader pero los streams de caracteres no existían en las primeras versiones de Java siguen siendo streams binarios por compatibilidad con versiones antiguas www.istr.unican.es Michael González Harbour, 6/abr/17 7 3. Escritura de ficheros de texto Es posible escribir datos primitivos y strings en un fichero de texto Se usa la pareja de streams: FileWriter: escritura básica de caracteres en un fichero PrintWriter: proporciona funciones de escritura más cómodas Strings PrintWriter caracteres FileWriter Fichero www.istr.unican.es Michael González Harbour, 6/abr/17 8

Clase FileWriter Operaciones más habituales: Descripción Constructor. Requiere el nombre del fichero. Lo crea si no existe. Si existe se borran sus contenidos. Lanza IOException si el fichero no se puede crear Constructor igual que el anterior, salvo en que cuando añade es true no se borran los contenidos, sino que los datos se añaden al final del fichero Declaración FileWriter(String nombrefichero) throws IOException FileWriter (String nombrefichero, boolean añade) throws IOException www.istr.unican.es Michael González Harbour, 6/abr/17 9 Clase PrintWriter Operaciones más habituales: Descripción Constructor. Requiere un Writer (usaremos un FileWriter) Escribir un string Escribir un string con retorno de línea Escribe los argumentos con el formato deseado Cerrar Declaración PrintWriter(Writer writer) void print(string str) void println(string str) void printf(string formato, Object args) void close() www.istr.unican.es Michael González Harbour, 6/abr/17 10

Ejemplo sencillo: patrón de uso de los streams (anterior a Java 7) PrintWriter out = null; try { // crea los streams y los conecta out = new PrintWriter(new FileWriter(nomFich)); // escribe los datos en el fichero out.println("hola"); catch (IOException e){ finally { if (out!= null) { // cierra los streams out.close(); www.istr.unican.es Michael González Harbour, 6/abr/17 11 Patrón de uso de los streams a partir de Java 7 Crea los streams dentro del try, entre paréntesis El finally no se pone: el fichero se cierra automáticamente, haya error o no // Crea los streams y los conecta en el propio try try (PrintWriter out = new PrintWriter( new FileWriter(nomFich))) { // escribe los datos en el fichero out.println("hola"); catch (IOException e){ www.istr.unican.es Michael González Harbour, 6/abr/17 12

Ejemplo: método que escribe en un fichero de texto public static void escribefichtexto (String nomfich, int i, double x, String str) { // crea los streams y los conecta, en el try try (PrintWriter out = new PrintWriter( new FileWriter(nomFich)) { // escribe los datos en el fichero out.println("entero: "+i+" Real: "+x); out.println("string: "+str); catch (IOException e){ System.out.println("Error al abrir "+nomfich); www.istr.unican.es Michael González Harbour, 6/abr/17 13 Ejemplo: método que escribe en un fichero de texto (cont.) Ejemplo de fichero generado: Entero: 11 Real: 22.2 String: hola www.istr.unican.es Michael González Harbour, 6/abr/17 14

4. Escritura de texto con formato La clase PrintWriter dispone de una operación de salida de texto con formato, llamada printf el objeto System.out que representa la pantalla, también está copiada del lenguaje C el primer parámetro es el string de formato, que indica cómo se va a formatear la salida luego viene un número variable de parámetros Ejemplo System.out.printf ("%s de %4d años", nombre, edad); Produce la salida (suponiendo nombre="pedro", edad=18) Pedro de 18 años www.istr.unican.es Michael González Harbour, 6/abr/17 15 String de formato Contiene caracteres que se muestran tal cual y especificaciones de formato que se sustituyen por los sucesivos parámetros Especificaciones de formato más habituales: %d enteros %c caracteres %s string %f float y double, coma fija %e float y double, notación exponencial %g float y double, exponencial o coma fija %n salto de línea en el formato del sist. operat. %% el carácter % www.istr.unican.es Michael González Harbour, 6/abr/17 16

String de formato Puede lanzarse IllegalFormatException si el formato no corresponde al parámetro Después del carácter % se puede poner un carácter de opciones: - alinear a la izquierda 0 rellenar con ceros (números sólo) + poner signo siempre (números sólo) www.istr.unican.es Michael González Harbour, 6/abr/17 17 Especificación de anchura y precisión Puede añadirse después del "%" (y del carácter de opción si lo hay) la especificación de anchura mínima y (si corresponde) el número de decimales; ejemplos Parámetros de printf() Salida ("Pi= %4.0f %n",math.pi) Pi= 3 ("Pi= %4.2f %n",math.pi) Pi= 3.14 ("Pi= %12.4f %n",math.pi) Pi= 3.1416 ("Pi= %12.8f %n",math.pi) Pi= 3.14159265 ("I= %8d %n",18 I= 18 ("I= %4d %n",18) I= 18 ("I= %04d %n",18) I= 0018 www.istr.unican.es Michael González Harbour, 6/abr/17 18

Separador de cifras decimales El sistema usa como separador de cifras decimales El. si está configurado en inglés La, si está configurado en español Para forzar la utilización del punto como separador de las cifras decimales: import java.util.locale; Locale.setDefault(Locale.ENGLISH); Y para la coma: Locale.setDefault(new Locale("es")); www.istr.unican.es Michael González Harbour, 6/abr/17 19 Ejemplo: escritura de fichero de texto con formato (método printf) Añadir el método generalistado a la clase Curso: Escribe en un fichero de texto los datos de todos los alumnos del curso Curso -ArrayList<Alumno> listaalumnos otros métodos +void generalistado (String nomfich) Alumno -String nombre -String dni -double nota +Alumno (String nombre,) String dni, double nota) +String nombre() +String dni() +double nota() www.istr.unican.es Michael González Harbour, 6/abr/17 20

Ejemplo: escritura de fichero de texto con formato (método printf) (cont.) /** * Genera un listado de los alumnos del curso en un * fichero de texto * @param nomfich nombre del fichero generado */ www.istr.unican.es Michael González Harbour, 6/abr/17 21 Ejemplo: escritura de fichero de texto con formato (método printf) (cont.) public void generalistado(string nomfich){ try (PrintWriter out=new PrintWriter (new FileWriter(nomFich))) { // escribe el listado alumno por alumno for(alumno a: listaalumnos) { // nombre con 25 carac. justificado a la izq. // nota con 4 carac. totales con un decimal out.printf("%-25s DNI:%s Nota:%4.1f%n", a.nombre(),a.dni(), a.nota()); catch (IOException e){ System.out.println("Error al abrir "+nomfich)); www.istr.unican.es Michael González Harbour, 6/abr/17 22

5. Lectura de ficheros de texto La lectura de un fichero de texto se realiza con la pareja de streams: FileReader: permite leer caracteres de un fichero Scanner: permite convertir grupos de caracteres en strings o datos primitivos (definida en java.util) Datos Scanner caracteres FileReader Fichero www.istr.unican.es Michael González Harbour, 6/abr/17 23 Clase FileReader Operaciones habituales: Descripción Constructor. Requiere el nombre del fichero. Si no existe lanza FileNotFoundException Declaración FileReader(String nombrefich) throws FileNotFoundException www.istr.unican.es Michael González Harbour, 6/abr/17 24

Clase Scanner La clase Scanner (paquete java.util) permite leer números y texto de un fichero de texto y de otras fuentes permite la lectura del texto línea a línea permite la lectura sencilla de números y palabras separadas por el separador especificado - el separador por defecto es cualquier tipo de espacio en blanco (espacio, salto de línea, tabulador, etc.) - puede utilizarse otro separador cambiándolo con el método usedelimiter permite reconocer patrones de texto conocidos como expresiones regulares www.istr.unican.es Michael González Harbour, 6/abr/17 25 Principales operaciones de la clase Scanner Descripción Constructor. Requiere un objeto que implemente Readable (por ejemplo un FileReader) Constructor. Requiere un String Cerrar Configura el formato de los números. Usar Locale.ENGLISH para leer números que utilicen el carácter. como punto decimal Usar new Locale("es") para leer números que utilicen el carácter, como punto decimal Declaración Scanner(Readable source) Scanner(String source) void close() Scanner uselocale (Locale locale) www.istr.unican.es Michael González Harbour, 6/abr/17 26

Principales operaciones de la clase Scanner (cont.) Descripción Leer una línea Indica si quedan más líneas por leer Leer un booleano Indica si la siguiente palabra es un valor booleano Leer una palabra Indica si quedan más palabras o datos por leer Leer un double Indica si la siguiente palabra es un double Leer un int Indica si la siguiente palabra es un int Declaración String nextline() boolean hasnextline() boolean nextboolean() boolean hasnextboolean() String next() boolean hasnext() double nextdouble() boolean hasnextdouble() int nextint() boolean hasnextint() www.istr.unican.es Michael González Harbour, 6/abr/17 27 Principales operaciones de la clase Scanner (cont.) Descripción Cambia el delimitador que separa los items Declaración Scanner usedelimiter (String pattern) Excepciones que pueden lanzar NoSuchElementException: se ha intentado leer, pero no quedan más palabras o datos IllegalStateException: el scanner está cerrado InputMismatchException: el dato leído no es del tipo esperado www.istr.unican.es Michael González Harbour, 6/abr/17 28

Ejemplo: lectura línea a línea con la clase Scanner try (Scanner in= new Scanner (new FileReader(nomFich))) { // lee el fichero línea a línea while (in.hasnextline()) { // lee la siguiente línea y la muestra System.out.println(in.nextLine()); catch (FileNotFoundException e) { System.out.println("Error abriendo " + nomfich); www.istr.unican.es Michael González Harbour, 6/abr/17 29 Ejemplo: procesado de fichero de texto con la clase Scanner Para el fichero (datos.txt): azul 1.0 3.5 7.7 rojo 2 verde 10.0 11.1 Se desea obtener la siguiente salida por consola: Palabra:azul Número:1.0 Número:3.5 Número:7.7 Palabra:rojo Número:2.0 Palabra:verde Número:10.0 Número:11.1 www.istr.unican.es Michael González Harbour, 6/abr/17 30

Ejemplo: procesado de fichero de texto con la clase Scanner (cont.) public static void main() { final String nomfich="datos.txt"; try (Scanner in= new Scanner (new FileReader(nomFich))) { // configura el formato de números in.uselocale(locale.english); // lee el fichero palabra a palabra while (in.hasnext()) { // lee primera palabra y la escribe String palabra = in.next(); System.out.println("Palabra:"+palabra); www.istr.unican.es Michael González Harbour, 6/abr/17 31 Ejemplo: procesado de fichero de texto con la clase Scanner (cont.) // lee números while (in.hasnextdouble()) { // lee un double double d = in.nextdouble(); System.out.println("Número:"+d); // fin while (in.hasnext()) catch (FileNotFoundException e) { System.out.println("Error abriendo " + nomfich); // fin main www.istr.unican.es Michael González Harbour, 6/abr/17 32