Inteligência Artificial Reinaldo Bianchi FEI - Elétrica 2000
7a. Aula Arrays (vetores e matrizes), Entrada e Saída de Dados, Arquivos
Vimos na aula passada <ul><li>Applets </li></ul><ul><li>Gráficos </li></ul>
Nesta aula veremos: <ul><li>Arrays: </li></ul><ul><ul><li>Vetores  </li></ul></ul><ul><ul><li>Matrizes </li></ul></ul><ul>...
Arrays (ou Vetores) <ul><li>Um  array  permite o agrupamento de um conjunto de informações em uma única variável. </li></u...
Arrays: Declaração <ul><li>Sintaxe: </li></ul><ul><ul><li><tipo>[] <nome> = new <tipo>[<tamanho>]; </li></ul></ul><ul><li>...
Arrays: inicialização, etc. <ul><li>Inicializando um array: </li></ul><ul><li>int[] A = {10, 2, 3, 44, 55}; </li></ul><ul>...
Exercício Arrays <ul><li>Multiplique 2 vetores guardados em array de tamanho 3. </li></ul><ul><li>O primeiro array se cham...
Arrays de duas dimensões:  Matrizes <ul><li>Matrizes são  arrays  com DUAS dimensões: </li></ul><ul><ul><li>Podem ser vist...
Matriz - Exemplo <ul><li>int matriz[][] = new int [10][5]; </li></ul>
Inicializando matrizes <ul><li>int minhamatriz[][] =  </li></ul><ul><li>{ {1,   2,  3,  4}, </li></ul><ul><li>{5,  6,  7, ...
Programa Exemplo <ul><li>Ver programa ImprimeMatriz.java </li></ul><ul><li>Insira dados nas posições: </li></ul><ul><ul><l...
Exercício <ul><li>Faça um programa que multiplique duas matrizes quadradas de tamanho 3 </li></ul>
Entrada e Saída de Dados <ul><li>Em Java toda entrada e saída de dados é realizada através de Streams: </li></ul><ul><li>t...
Classes básicas para tratamento de entrada e saída em Java <ul><li>File: </li></ul><ul><ul><li>É uma classe para guardar i...
Arquivos <ul><li>Usados para guardar dados permanentes em disco (óbvio). </li></ul><ul><li>Existem diversos tipos de arqui...
Hierarquia de classes java.io <ul><li>class java.io.File  </li></ul><ul><li>class java.io.InputStream </li></ul><ul><ul><l...
Hierarquia de classes java.io (continuação) <ul><li>class java.io.OutputStream </li></ul><ul><ul><li>class java.io.ByteArr...
Classe File <ul><li>Representação abstrata e independente de plataforma de um arquivo. </li></ul><ul><li>Guarda informaçõe...
Classe InputStream <ul><li>Classe abstrata da qual derivam todas as classes para leitura de dados </li></ul><ul><li>Classe...
Métodos básicos do InputStream <ul><li>read (): </li></ul><ul><ul><li>Lê um inteiro. Retorna -1 quando chega ao final da s...
Exemplo <ul><li>Para abrir um arquivo: </li></ul><ul><ul><li>InputStream is = new  FileInputStream (&quot;bytedata.dat&quo...
Classe DataInputStream <ul><li>Sub-Classe de InputStream para ler dados genéricos. </li></ul><ul><li>Possui métodos que lê...
Métodos do DataInputStream <ul><li>boolean readBoolean(); </li></ul><ul><li>byte readByte(); </li></ul><ul><li>char readCh...
Classe OutputStream <ul><li>Classe básica para saída de dados. </li></ul><ul><li>Contraparte da classe InputStream. </li><...
Métodos do OutputStream <ul><li>write (b): </li></ul><ul><ul><li>Escreve um inteiro.  </li></ul></ul><ul><li>write (byte b...
Exemplo <ul><li>Para abrir um arquivo: </li></ul><ul><ul><li>FileOutputStream os = new  FileOutputStream (&quot;bytedata.d...
Buffered Streams <ul><li>Usados para entrada e saída de dados bufferizadas: </li></ul><ul><ul><li>Buffer significa que os ...
Arquivos de Acesso Aleatório <ul><li>Arquivos que permitem o acesso de um dado específico do arquivo </li></ul><ul><li>Fun...
Classe RandomAccessFile <ul><li>Implementa os arquivos de acesso aleatório em Java. </li></ul><ul><li>Sub classe direta de...
Abrindo um arquivo aleatóreo <ul><li>Esta classe possui 2 construtores: </li></ul><ul><ul><li>RandomAccessFile(String nome...
Métodos mais importantes <ul><li>seek(): </li></ul><ul><ul><li>move um ponteiro que define onde será realizada a leitura o...
Métodos de Leitura <ul><li>read() </li></ul><ul><ul><li>método básico de leitura de bytes </li></ul></ul><ul><li>readFloat...
Métodos de Escrita <ul><li>write(): </li></ul><ul><ul><li>método básico de escrita de bytes. </li></ul></ul><ul><li>writeF...
Leitura e escrita de Strings <ul><li>String readLine(): </li></ul><ul><ul><li>lê uma linha do arquivo (terminada com “
” e...
Exemplo <ul><li>RandomFile.java: </li></ul><ul><ul><li>Escreve e Lê números inteiros de um arquivo. </li></ul></ul>
Bancos de dados complexos  <ul><li>Para aplicações de bancos de dados mais complexos, em Java se utiliza: </li></ul><ul><u...
Conclusão <ul><li>Arrays: </li></ul><ul><ul><li>Vetores </li></ul></ul><ul><ul><li>Matrizes </li></ul></ul><ul><li>Arquivo...
Upcoming SlideShare
Loading in...5
×

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

930

Published on

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
930
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×