A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.

Apresentações semelhantes


Apresentação em tema: "© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti."— Transcrição da apresentação:

1 © Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo Arrais de Souza Murilo Raphael de Souza Lira Rafael Alberto Gomes Pereira Lima Rafael Brandão Lobo Rafael Loureiro de Carvalho Tiago Carneiro Pessoa Canto Vinicius Miranda Cesar if672.ufpe@gmail.com

2 © Copyright 2008 Algoritmos e Estruturas de Dados Os dados de um programa passam por três etapas: Sendo assim, a entrada e a saída de dados são partes fundamentais na construção de um programa. Processamento EntradaSaída Informações iniciais Resultados 2

3 © Copyright 2008 Algoritmos e Estruturas de Dados Na disciplina de Introdução à Programação, a entrada de dados era feita através do teclado e a saída através do monitor, usando-se a classe Console: Programa Classe Console TecladoMonitor Entrada de Dados Saída de Dados Métodos read Métodos print e println 3

4 © Copyright 2008 Algoritmos e Estruturas de Dados Na disciplina de Introdução à Programação, a entrada de dados era feita através do teclado e a saída através do monitor, usando-se a classe Console: Programa GUI TecladoMonitor Entrada de Dados Saída de Dados 4

5 © Copyright 2008 Algoritmos e Estruturas de Dados Na disciplina de Algoritmos, entrada e saída de dados serão feitas através de arquivos: Programa Arquivo Entrada de Dados Saída de Dados Métodos read Métodos print File Reader Buffered Reader File Writer Print Writer 5

6 © Copyright 2008 Algoritmos e Estruturas de Dados Para simplificar a implementação das listas, foi criada a classe Arquivo, que contém todas as funções de E/S: Programa Classe Arquivo Arquivo Entrada Arquivo Saída Entrada de Dados Saída de Dados Métodos read Métodos print e println 6

7 © Copyright 2008 Algoritmos e Estruturas de Dados Motivação: Menor tempo de teste de um programa Menor preocupação com tratamento de erros de entrada (dados inválidos, incompletos, etc.) Processamento de séries de conjuntos de dados Processamento de grandes quantidades de dados. Ex: ordenar 10.000 números 7

8 © Copyright 2008 Algoritmos e Estruturas de Dados Arquivos podem ser abertos de dois modos: leitura e gravação. Um objeto da classe Arquivo é composto por dois arquivos: O arquivo de entrada (input) é aberto no modo leitura (read) e dele serão lidas as informações que programa irá utilizar. O arquivo de saída (output) é aberto para gravação (write) e nele serão gravados os resultados obtidos pelo programa. 8

9 © Copyright 2008 Algoritmos e Estruturas de Dados Ex: Ordenação de elementos Arquivo.inArquivo.out Programa Conjuntos de Entrada 4 3 2 4 1 Conjuntos de Saída Conjunto #1 1 2 3 4 5 9 10 55 41 2 Conjunto #2 2 9 10 41 55 4 10 30 45 90 Conjunto #3 10 30 45 90 Fim do arquivo 9

10 © Copyright 2008 Algoritmos e Estruturas de Dados Para criar um par de arquivos entrada/saída, basta passar o nome dos arquivos escolhidos como argumentos do construtor da classe Arquivo: Arquivo arq = new Arquivo(“L1Q1.in”, “L1Q1.out”); Se o arquivo de entrada não existir, uma exceção (RuntimeException) é lançada. O arquivo de saída é sempre criado; caso ele já exista, seu conteúdo anterior é descartado. 10

11 © Copyright 2008 Algoritmos e Estruturas de Dados A entrada de dados é feita através dos métodos de leitura, ou seja, métodos read habilitados para os tipos int, double e String. A sintaxe é similar à da classe Console: int n = arq.readInt(); double d = arq.readDouble(); String s = arq.readString(); Estes métodos ignoram todos os brancos, ou seja, espaços, quebras de linha (enter) ou tabulações (tab). 11

12 © Copyright 2008 Algoritmos e Estruturas de Dados Ex: Armazenamento em array 15 3 1 0 20 52 int array[] = new int[6]; for (int i = 0; i < 6; i++) array[i] = arq.readInt(); Aplicando o código à seguinte entrada temos: Arquivo.in Programa 153102052 12

13 © Copyright 2008 Algoritmos e Estruturas de Dados Métodos de leitura ignoram os espaços em branco e quebras de linha. Para verificar se uma linha (ou o arquivo) chegou ao fim, usa-se: boolean isEndOfLine(); boolean isEndOfFile(); Ex: Leitura de dados até o fim do arquivo while (! arq.isEndOfFile() ) { int x = arq.readInt();... } Fim de linha Fim de arquivo 13

14 © Copyright 2008 Algoritmos e Estruturas de Dados Para poder ler também os espaços e quebras de linha do arquivo, existem dois métodos adicionais: String lin = arq.readLine(); Este método retorna também ‘ ’, ‘\n’, ‘\t’. Retorna ‘\0’ quando o fim do arquivo é alcançado. char c = arq.readChar(); Retorna todos os caracteres até o fim da linha. Se a linha estiver em branco, retorna a string vazia ( “” ), e null quando o fim do arquivo é alcançado. 14

15 © Copyright 2008 Algoritmos e Estruturas de Dados void print(char c); void print(String s); void print(int n); void print(double d); void print(double d, int dec); Da mesma maneira, a saída de dados é feita através dos metódos de gravação, ou seja, métodos print: Os métodos acima imprimem os dados formatados de acordo com o padrão de Java. O último imprime um double com um número indicado de casas decimais. 15

16 © Copyright 2008 Algoritmos e Estruturas de Dados Para começar uma nova linha no arquivo de saída após a escrita de um dado, usa-se os métodos println: void println(); void println(char c); void println(String s); void println(int n); void println(double d); void println(double d, int dec); Usar ‘\n’ ao invés dos métodos acima pode resultar em problemas na formatação do arquivo de saída. 16

17 © Copyright 2008 Algoritmos e Estruturas de Dados Exemplos: Arquivo.out arq.print(‘a’); a arq.print(‘b’); b arq.println(); arq.println(‘c’); c arq.println(“Teste”); Teste arq.println(123); 123 arq.println(2.555, 2); 2.56 arq.println(10, 4); 10.0000 arq.print(12 + “ ”); 12 arq.print(15 + “ ”); 15 arq.println(“xy”+ 10); xy10 17

18 © Copyright 2008 Algoritmos e Estruturas de Dados Quando o arquivo não for mais necessário é preciso fechá-lo, ou seja, liberar os recursos utilizados por ele. Para isso, usa-se o método close: arq.close(); Tanto o arquivo de entrada como o de saída são fechados e a memória ocupada por eles é liberada pelo garbage collector. Caso isto não seja feito, as informações podem não ser gravadas corretamente. 18

19 © Copyright 2008 Algoritmos e Estruturas de Dados Ex: Ler inteiros da entrada e imprimi-los na saída: public static void main(String[] args) { Arquivo arq = new Arquivo(“LxQ1.in”, “LxQ1.out”); while ( ! arq.isEndOfFile() ) { int n = arq.readInt(); arq.println( n ); } arq.close(); } 19

20 © Copyright 2008 Algoritmos e Estruturas de Dados A melhor maneira de aprender a resolver problemas usando arquivos (incluindo a classe Arquivo em Java), é fazendo exercícios. Na página, os exercícios estão disponíveis em: http://www.cin.ufpe.br/~if672/2009.1/aulasPraticas.htm A lista 0 também já está na página, em: http://www.cin.ufpe.br/~if672/2009.1/listas.htm 20


Carregar ppt "© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti."

Apresentações semelhantes


Anúncios Google