Your SlideShare is downloading. ×
http://www.dm.ufscar.br/~waldeck/curso/java/
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

http://www.dm.ufscar.br/~waldeck/curso/java/

912

Published on

http://www.dm.ufscar.br/~waldeck/curso/java/

http://www.dm.ufscar.br/~waldeck/curso/java/

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
912
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Inteligência Artificial Reinaldo Bianchi FEI - Elétrica 2000
  • 2. 7a. Aula Arrays (vetores e matrizes), Entrada e Saída de Dados, Arquivos
  • 3. Vimos na aula passada
    • Applets
    • Gráficos
  • 4. Nesta aula veremos:
    • Arrays:
      • Vetores
      • Matrizes
    • Entrada e saída de dados
    • Arquivos
  • 5. Arrays (ou Vetores)
    • Um array permite o agrupamento de um conjunto de informações em uma única variável.
    • Também conhecido como vetor ou variável indexada.
    • Tem um tamanho definido.
    • Sempre iniciado no valor ‘0’:
    vet 0 1 2 3 4 5 6 7 a b d n c e h k
  • 6. Arrays: Declaração
    • Sintaxe:
      • <tipo>[] <nome> = new <tipo>[<tamanho>];
    • Declarando:
      • int[] meuArray = new int[10];
      • String[] fala = new String[20];
    • Uso:
      • meuArray[7] = 345;
  • 7. Arrays: inicialização, etc.
    • Inicializando um array:
    • int[] A = {10, 2, 3, 44, 55};
    • Tamanho de um array:
    • A.length = guarda o tamanho
    • Ver exemplo Array.java
  • 8. Exercício Arrays
    • Multiplique 2 vetores guardados em array de tamanho 3.
    • O primeiro array se chama A, o segundo B.
    • Result =0;
    • For (int i =0;i<3;i++)
    • Result = Result + A[i]* B[i];
  • 9. Arrays de duas dimensões: Matrizes
    • Matrizes são arrays com DUAS dimensões:
      • Podem ser vistos como tabelas que são guardadas na memória
      • Imagens
    • Sintaxe:
      • <tipo> <nome>[][] = new <tipo> [<linhas>][<colunas>];
    • Existem arrays com mais dimensões...
  • 10. Matriz - Exemplo
    • int matriz[][] = new int [10][5];
  • 11. Inicializando matrizes
    • int minhamatriz[][] =
    • { {1, 2, 3, 4},
    • {5, 6, 7, 8},
    • {9, 10, 11, 12},
    • {13, 14, 15, 16} };
  • 12. Programa Exemplo
    • Ver programa ImprimeMatriz.java
    • Insira dados nas posições:
      • linha = 7, coluna = 3
      • linha = 3, coluna = 0
      • linha = 5, coluna = 4
    • Modifique o programa para imprimir a matriz “bonitinha” (isto é, cada linha na sua)
  • 13. Exercício
    • Faça um programa que multiplique duas matrizes quadradas de tamanho 3
  • 14. Entrada e Saída de Dados
    • Em Java toda entrada e saída de dados é realizada através de Streams:
    • trabalha com diversos dispositivos:
      • teclado:
        • BufferedReader teclado = new BufferedReader(new Input Stream Reader(System.in));
      • arquivos
      • páginas web, ...
  • 15. Classes básicas para tratamento de entrada e saída em Java
    • File:
      • É uma classe para guardar informações sobre os arquivos
    • InputStream:
      • Classe para a leitura dos dados.
    • OutputStream:
      • Classe para escrita de dados.
    • RandomAccessFile:
      • Classe para arquivos de acesso aleatório.
  • 16. Arquivos
    • Usados para guardar dados permanentes em disco (óbvio).
    • Existem diversos tipos de arquivos:
      • Arquivos seqüenciais (Stream based).
      • Arquivos de acesso aleatório.
    • Em Java, Streams são usadas para tratar os arquivos seqüenciais:
      • Streams são usados como buffers de entrada e saída para os arquivos.
  • 17. Hierarquia de classes java.io
    • class java.io.File
    • class java.io.InputStream
      • class java.io.ByteArrayInputStream
      • class java.io.FileInputStream
      • class java.io.FilterInputStream
      • class java.io.BufferedInputStream
      • class java.io.DataInputStream
      • class java.io.ObjectInputStream
  • 18. Hierarquia de classes java.io (continuação)
    • class java.io.OutputStream
      • class java.io.ByteArrayOutputStream
      • class java.io.FileOutputStream
      • class java.io.FilterOutputStream
      • class java.io.BufferedOutputStream
      • class java.io.DataOutputStream (implements java.io.DataOutput)
      • class java.io.PrintStream
      • class java.io.ObjectOutputStream
    • class java.io.RandomAccessFile
  • 19. Classe File
    • Representação abstrata e independente de plataforma de um arquivo.
    • Guarda informações sobre os arquivos:
      • nome
      • localização do arquivo
    • Manipula arquivos:
      • cria, deleta, copia, compara, verifica existência de um arquivo, cria diretórios, lista diretórios, ...
  • 20. Classe InputStream
    • Classe abstrata da qual derivam todas as classes para leitura de dados
    • Classe FileInputStream :
      • Sub-classe de InputStream que dá acesso aos arquivos.
      • Implementa InputStream.
    • Todo tratamento de entrada e saída é feito entre um try ... catch
  • 21. Métodos básicos do InputStream
    • read ():
      • Lê um inteiro. Retorna -1 quando chega ao final da stream de entrada (que pode ser o arquivo).
    • read(byte b[]):
      • Lê múltiplos bytes e os guarda em um array.
    • available():
      • Retorna a quantidade de dados ainda existentes
    • skip(long):
      • Salta n bytes da entrada e os descarta
    • close():
      • Fecha o arquivo (chamado automaticamente)
  • 22. Exemplo
    • Para abrir um arquivo:
      • InputStream is = new FileInputStream (&quot;bytedata.dat&quot;);
      • Cria-se um Stream de entrada que usa o FileInputStream para abrir o arquivo.
    • Para ler um dado:
      • b = is.read();
    • Exemplos LeByte.java e LeTexto.java
  • 23. Classe DataInputStream
    • Sub-Classe de InputStream para ler dados genéricos.
    • Possui métodos que lêem e convertem automaticamente diversos tipos de dados.
    • Usado em conjunto com InputStream:
      • InputStream is = new FileInputStream(&quot;textfile.txt&quot;);
      • DataInputStream ds = new DataInputStream(is);
    • Ver LeLinha.java
  • 24. Métodos do DataInputStream
    • boolean readBoolean();
    • byte readByte();
    • char readChar();
    • int readInt();
    • float readFloat();
    • Stream readLine();
    • ...
  • 25. Classe OutputStream
    • Classe básica para saída de dados.
    • Contraparte da classe InputStream.
    • FileOutputStream :
      • Sub-classe de OutputStream que dá acesso aos arquivos.
    • DataOutputStream:
      • Idem da DataInputStream para saída de dados.
  • 26. Métodos do OutputStream
    • write (b):
      • Escreve um inteiro.
    • write (byte b[]):
      • Escreve múltiplos bytes de um array.
    • flush():
      • Força a escrita de dados que podem estar em buffers.
    • close():
      • Fecha o arquivo (deve ser chamado manualmente, se não pode-se perder dados)
  • 27. Exemplo
    • Para abrir um arquivo:
      • FileOutputStream os = new FileOutputStream (&quot;bytedata.dat”);
      • Cria-se um Stream de saída que usa o FileOutputStream para abrir o arquivo.
    • Para escrever um dado:
      • os.write(dado);
    • Exemplos EscreveBytes.java e EscreveDataStream
  • 28. Buffered Streams
    • Usados para entrada e saída de dados bufferizadas:
      • Buffer significa que os dados são guardados na memória até que se tenha uma certa quantidade, quando então os dados são escritos ou lidos
    • Classes:
      • BufferedInputStream
      • BufferedOutputStream
  • 29. Arquivos de Acesso Aleatório
    • Arquivos que permitem o acesso de um dado específico do arquivo
    • Funciona como um array em disco:
      • define-se um índice e se pode ler ou escrever naquele lugar.
    • Usados para implementar qualquer base de dados decente.
    • Implementado com a classe RandomAccessFile
  • 30. Classe RandomAccessFile
    • Implementa os arquivos de acesso aleatório em Java.
    • Sub classe direta de Object.
    • Mais poderosa que as classes FileInputStream e FileOutputStream.
    • Implementa métodos de leitura, escrita e posicionamento para todos os tipos primitivos.
  • 31. Abrindo um arquivo aleatóreo
    • Esta classe possui 2 construtores:
      • RandomAccessFile(String nome, String modo )
      • RandomAccessFile(File file, String modo ).
    • O parâmetro modo indica como o arquivo poderá ser utilizado:
      • se for &quot;r&quot;: arquivo só de leitura.
      • &quot;rw”: arquivo de leitura e escrita.
  • 32. Métodos mais importantes
    • seek():
      • move um ponteiro que define onde será realizada a leitura ou a escrita para um novo ponto no arquivo
    • lenght():
      • retorna o tamanho do arquivo em bytes.
    • getFilePointer():
      • descobre onde está o ponteiro no arquivo.
    • close()
  • 33. Métodos de Leitura
    • read()
      • método básico de leitura de bytes
    • readFloat(float v):
      • Lê um float de 4 bytes no arquivo
    • readInt(int v):
      • lê um inteiro de 4 bytes no arquivo
    • readLong(long v)
      • lê um inteiro de 8 bytes no arquivo
    • readShort(int v): lê inteiro de 2 bytes
  • 34. Métodos de Escrita
    • write():
      • método básico de escrita de bytes.
    • writeFloat(float v):
      • Guarda um float de 4 bytes no arquivo usando a função floatToIntBitsmethod
    • writeInt(int v):
      • escreve um inteiro de 4 bytes no arquivo
    • writeLong(long v)
      • escreve um inteiro de 8 bytes no arquivo
  • 35. Leitura e escrita de Strings
    • String readLine():
      • lê uma linha do arquivo (terminada com “ ” e retorna para uma String.
    • String readUTF():
      • lê uma string do tipo UFT.
    • writeChars(String s)
      • escreve a string s no arquivo.
    • writeUTF(String str):
      • escreve a String como UFT.
  • 36. Exemplo
    • RandomFile.java:
      • Escreve e Lê números inteiros de um arquivo.
  • 37. Bancos de dados complexos
    • Para aplicações de bancos de dados mais complexos, em Java se utiliza:
      • JDBC: permite ligar o programa Java a um banco de dados SQL, DB2, ...
      • Java DataExpress
      • dbSwing
      • etc...
    • Opção meio porca:serialização de objetos.
  • 38. Conclusão
    • Arrays:
      • Vetores
      • Matrizes
    • Arquivos:
      • FileInputStream
      • FileOutputStream
      • RandomAccessFile

×