2_3_Princípios de Programação_estrutura de Dados (Resumo)
-
Upload
lucas-vilela -
Category
Documents
-
view
217 -
download
3
description
Transcript of 2_3_Princípios de Programação_estrutura de Dados (Resumo)
-
Princpios de programao: Estrutura de dados (resumo) Arthur de Miranda Neto
1
-
2
Neste curso?
-
Estruturas de dados, na forma de um grupo de posies contguas na memria, com valores de mesmo nome e mesmo tipo.
Arrays
3
-
Estruturas de dados, na forma de um grupo de posies contguas na memria, com valores de mesmo nome e mesmo tipo.
Arrays so, portanto, a forma pela qual se armazenam vetores de tipos.
Arrays
4
-
Estruturas de dados, na forma de um grupo de posies contguas na memria, com valores de mesmo nome e mesmo tipo.
Arrays so, portanto, a forma pela qual se armazenam vetores de tipos.
Os arrays so estruturas estticas, isto , uma vez criados mantm seu tamanho inicial.
Arrays
5
-
Estruturas de dados, na forma de um grupo de posies contguas na memria, com valores de mesmo nome e mesmo tipo.
Arrays so, portanto, a forma pela qual se armazenam vetores de tipos.
Os arrays so estruturas estticas, isto , uma vez criados mantm seu tamanho inicial.
Para estruturas dinmicas a Linguagem Java possui classes especiais (classes Vector e Array)
Arrays
6
-
Estruturas de dados, na forma de um grupo de posies contguas na memria, com valores de mesmo nome e mesmo tipo.
Arrays so, portanto, a forma pela qual se armazenam vetores de tipos.
Os arrays so estruturas estticas, isto , uma vez criados mantm seu tamanho inicial.
Para estruturas dinmicas a Linguagem Java possui classes especiais (classes Vector e Array)
Os elementos de um array so encontrados pela referncia do nome do array e pelo nmero da posio em que se encontra (tambm chamada ndice ou subscrito).
Arrays
7
-
C [ 0 ] - 128
C [ 1 ] 8
C [ 2 ] 0
C [ 3 ] 82
C [ 4 ] 64
C [ 5 ] - 12
C [ 6 ] 65
C [ 7 ] 43
C [ 8 ] 76
C [ 9 ] 11
C [ 10 ] 0
Nome do array (todos os elementos do vetor
Nmero da posio do elemento
dentro de um array (ndice ou
subscrito)
...
public static void main (String args[]) {
int c = new int [11];
...
c = { - 128,8,0,82,64, - 12,65,43,76,11};
// c[11] zero por default (inicializao)
...
c[4] += c[2]; // c[4] = 64 + 0 = 64
}
Arrays
8
-
Arrays em Java (como em C e C++) iniciam pela posio zero. Portanto, um array c de trs elementos tem as posies c[0], c[1] e c[2].
Arrays
9
-
Arrays em Java (como em C e C++) iniciam pela posio zero. Portanto, um array c de trs elementos tem as posies c[0], c[1] e c[2].
Para se encontrar o elemento de um array se usa o nome do array, seguido do subscrito (i.e., posio desejada), entre colchetes.
Arrays
10
-
Arrays em Java (como em C e C++) iniciam pela posio zero. Portanto, um array c de trs elementos tem as posies c[0], c[1] e c[2].
Para se encontrar o elemento de um array se usa o nome do array, seguido do subscrito (i.e., posio desejada), entre colchetes.
Os ndices ou subscritos so valores inteiros e pode ser tratado como expresso de clculo (lvalue). Por exemplo: c [ x + 2] = 3; se x vale 6, o nono elemento do array (c[8]) receber o valor 3.
Arrays
11
-
Arrays so objetos que ocupam espaos contguos de memria.
int c[] ; // declarao do array
c = new int [ 12] ; // declarao e reserva de espao do do array
Arrays
12
-
Arrays so objetos que ocupam espaos contguos de memria.
int c[] ; // declarao do array
c = new int [ 12] ; // declarao e reserva de espao do do array
Arrays podem ser declarados e inicializados ao mesmo tempo:
int c[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} ;
Arrays
13
-
Arrays so objetos que ocupam espaos contguos de memria.
int c[] ; // declarao do array
c = new int [ 12] ; // declarao e reserva de espao do do array
Arrays podem ser declarados e inicializados ao mesmo tempo:
int c[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} ;
Quando os arrays so declarados sem inicializao, o Java faz a inicializao para zeros (variveis numricas), false (variveis lgicas do tipo boolean ) ou null para referncias a tipos de objetos.
Arrays
14
-
Mtodos (ou funes) podem receber parmetros tanto por chamada por valor como por chamada por referncia.
Informaes complementares
15
-
Mtodos (ou funes) podem receber parmetros tanto por chamada por valor como por chamada por referncia.
Passagem por valor: o mtodo recebe uma cpia do valor original e no alteram o valor original do argumento passado ao mtodo.
Informaes complementares
16
-
Mtodos (ou funes) podem receber parmetros tanto por chamada por valor como por chamada por referncia.
Passagem por valor: o mtodo recebe uma cpia do valor original e no alteram o valor original do argumento passado ao mtodo.
Passagem por referncia o mtodo recebe a localizao da varivel original e altera o prprio argumento originalmente passado ao mtodo. H um maior desempenho, pois elimina a necessidade de cpias de valores.
Informaes complementares
17
-
Em Java o programador no pode decidir como deseja trabalhar os parmetros dos mtodos. A regra geral :
Informaes complementares
18
-
Em Java o programador no pode decidir como deseja trabalhar os parmetros dos mtodos. A regra geral :
Tipos Primitivos: Passagem por cpia, argumentos de tipos da linguagem so sempre passados por cpia de valor e o return do mtodo sempre retorna uma cpia de valor.
Informaes complementares
19
-
Em Java o programador no pode decidir como deseja trabalhar os parmetros dos mtodos. A regra geral :
Tipos Primitivos: Passagem por cpia, argumentos de tipos da linguagem so sempre passados por cpia de valor e o return do mtodo sempre retorna uma cpia de valor.
Objetos so passados por referncia: objetos de classes so sempre passados por referncia. Isso significa que um objeto no passado para mtodo mas sim sua referncia. Isso significa que o mtodo sempre manipula diretamente o objeto.
Informaes complementares
20
-
int array[] = {1,2,3,4,5}
Passagem por cpia: deve-se passar o elemento de determinada possio do array;
modificaElemento(array[3]);
Arrays
21
-
int array[] = {1,2,3,4,5}
Passagem por cpia: deve-se passar o elemento de determinada possio do array;
modificaElemento(array[3]);
Passagem por referncia: deve-se especificar o nome do array sem nenhum colchetes.
modificaElemento(array);
Arrays
22
-
Permitem representar estruturas mais complexas, tais como tabelas (bidimensional) ou de maior ordem;
Arrays Multidimensionais
23
-
Permitem representar estruturas mais complexas, tais como tabelas (bidimensional) ou de maior ordem;
Para identificar um elemento especfico da tabela devemos especificar dois ndices (subscritos) - o primeiro identifica a linha e o segundo a coluna (bidimensional);
Arrays Multidimensionais
24
-
int array1[][] = { { 1, 2, 3 }, { 4, 5, 6 } };
int array2[][] = { { 1, 2 }, { 3 }, { 4, 5, 6 } };
int b[][];
b = new int [3][4];
String[][] Sensores = {
{ Acelermetro Bssola Odmetro " },
{ Giroscpio Cmera 1", " Cmera Etc " },
};
Coluna 0 Coluna 1 Coluna 2 Coluna 3
Linha 0 a [0] [0] a [0] [1] a [0] [2] a [0] [3]
Linha 1 a [1] [0] a [1] [1] a [1] [2] a [1] [3]
Linha 2 a [2] [0] a [2] [1] a [2] [2] a [2] [3]
Nome do array
ndice da linha
ndice da coluna
Arrays Multidimensionais
25
-
Armazenando Objetos
26
-
Armazenando Objetos
Qualquer programa no-trivial cria objetos para os quais no h referncias explicitas.
27
-
Armazenando Objetos
Qualquer programa no-trivial cria objetos para os quais no h referncias explicitas.
Estruturas de Dados servem exatamente para armazenar estes objetos
Diferentes estruturas de dados
28
-
Armazenando Objetos
Qualquer programa no-trivial cria objetos para os quais no h referncias explicitas.
Estruturas de Dados servem exatamente para armazenar estes objetos
Diferentes estruturas de dados
Java contm uma srie de estrutura de dados em java.util
29
-
Arrays Containers
Arrays so um objeto especial de Java, com sintaxe especialmente definida:
int A[] = new int[10];
fortemente tipado
30
-
Arrays Containers
Arrays so um objeto especial de Java, com sintaxe especialmente definida:
int A[] = new int[10];
fortemente tipado
Containers so objetos comuns
parte do pacote java.util
fracamento tipado (usa Object)
31
-
Containers
32
-
Tipagem Fraca
Voc perde a informao sobre tipo quando voc coloca um objeto no container.
33
-
Tipagem Fraca
Voc perde a informao sobre tipo quando voc coloca um objeto no container.
Portanto, no h restrio ao tipo de objeto que pode ser colocado em um certo container.
34
-
Tipagem Fraca
Voc perde a informao sobre tipo quando voc coloca um objeto no container.
Portanto, no h restrio ao tipo de objeto que pode ser colocado em um certo container.
Portanto, ao retirar um objeto de um container, voc precisa caste-lo para o tipo correto.
35
-
Deque: inseres e remoes so permitidas apenas nas extremidades da lista;
Pilha: Inseres e remoes so realizadas em apenas um extremo;
Fila: inseres realizadas em um extremo e remoes em outro.
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
36
-
List
ArrayList um array que cresce por demanda
bom para acesso randmico
37
-
List
LinkedList uma lista duplamente encadeada
bom para alteraes no meio da lista
38
-
Map
Um Map guarda um objeto em associao com uma chave
A pesquisa feita pela chave, que nica.
Um Map um array associativo.
39
-
Map
HashMap implementa Map usando hash dinmico (rpido e desordenado)
TreeMap implementa Map usando rvore vermelho-preta e ordenado)
40
-
Iterator
Um Iterator uma abstrao que permite percorrer um container sem saber seu tipo.
41
-
Iterator
Obtm-se um iterator atravs do mtodo iterator() do container.
next() retorna o prximo objeto.
hasNext() retorna se h um prximo objeto.
remove() apaga o ltimo elemento retornado.
42
-
Iterator: Exemplo
class Sensor { static void startAll( Iterator e ) { while( e.hasNext() ){ System.out.println(e.next()); } }
}
43
-
ArrayList
44
-
Desvantagens:
S trabalha com objetos (e no com tipos bsicos)
Pode-se ter um ArrayList de Integer, mas no se pode ter um ArrayList de int.
ArrayList
45
-
Define um ArrayList de Strings:
ArrayList list = new ArrayList();
capacidade inicial default 10.
Define um ArrayList de Sensor:
ArrayList sensores
= new ArrayList( 20 );
capacidade inicial 20.
ArrayList
46
-
Substituindo (ou setando) um elemento em uma determinada posio:
list.set
ArrayList
47
-
Substituindo (ou setando) um elemento em uma determinada posio:
list.set
Retornando um elemento de uma posio:
System.out.println(list.get(12));
String s = list.get(5);
ArrayList
48
-
Inserindo um elemento no final do ArrayList
list.add ;
list.add ;
list.add ;
est na posio 0, est na posio 1, e est na posio 2.
ArrayList
49
-
Inserindo um elemento em uma determinada posio
i deve ser uma posio usada ou a primeira posio livre
list.add ;
list.add ;
list.add ;
list.add(1, ;
est na posio 0, Fred est na posio 1, est na posio 2, e est na posio 3.
ArrayList
50
-
Retornando tamanho da lista (quantidade de ns na lista):
Mtodo size()
for (int i=0; i
-
Adicionar elementos:
public void add (int index, Base_Type newElement )
0
-
Remover elementos:
public Base_Type remove (int index )
0
-
Remove elementos:
public boolean remove(Object theElement)
se encontrada, remove a primeira ocorrncia de theElement; copia para a esquerda os elementos restantes;
size() se torna size()-1;
Retorna true.
Se no encontrada, retorna false.
Ex: boolean b = list.remove ;
Mtodos da classe ArrayList
54
-
Remove elementos:
public void clear( )
remove todos os elementos;
size() se torna 0
Ex: list.clear();
Mtodos da classe ArrayList
55
-
Mtodos de Procura
public boolean contains(Object target)
chama o mtodo equals() de target
true se ArrayList contm target; false caso contrrio.
Ex: boolean b = list.contains ;
Mtodos da classe ArrayList
56
-
Mtodos de Procura
public int indexOf (Object target)
chama o mtodo equals() de target
retorna ndice (posio) da primeira ocorrncia de target em ArrayList; -1 caso contrrio.
Ex: int pos = list.indexOf ;
Mtodos da classe ArrayList
57
-
Mtodos de Procura
public int lastIndexOf(Object target)
realiza o mesmo que o anterior, com a diferena que retornada a posio da ltima ocorrncia.
Ex: int pos = list.lastIndexOf ;
Mtodos da classe ArrayList
58
-
Gerenciamento da memria (tamanho / capacidade)
public boolean isEmpty( )
true se vazio; false caso contrrio.
Ex: boolean b = list.isEmpty();
Mtodos da classe ArrayList
59
-
Gerenciamento da memria (tamanho / capacidade)
public int size( )
retorna nmero de elementos (ns) em ArrayList
Ex: int tam = list.size();
Mtodos da classe ArrayList
60
-
Gerenciamento da memria (tamanho / capacidade)
public void ensureCapacity(int newCapacity)
aumenta a capacidade (se necessrio)
Ex: list.ensureCapacity(20);
Mtodos da classe ArrayList
61
-
Gerenciamento da memria (tamanho / capacidade)
public void trimToSize( )
reduz a capacidade para tamanho atual
Ex: list.trimToSize();
Mtodos da classe ArrayList
62
-
Cpia:
public Object[] toArray( )
retorna um array contendo os elementos da lista.
Ex: Object[] v = list.toArray();
Mtodos da classe ArrayList
63
-
Cpia:
public Object[] toArray( )
retorna um array contendo os elementos da lista.
Ex: Object[] v = list.toArray();
public Object clone( )
retorna uma cpia de ArrayList.
Ex: Object v = list.clone();
Mtodos da classe ArrayList
64
-
Igualdade:
public boolean equals (Object other)
verdadeiro somente se ambos possuem o mesmo nmero de elementos e os mesmos elementos (na mesma ordem).
compara cada par de elementos chamando seu mtodo equals()
Ex: boolean b = list.equals(list2);
Mtodos da classe ArrayList
65
-
http://www.ime.usp.br/~cosen/verao/alg.pdf http:// java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html outros esto disponveis na internet
66
http://www.ime.usp.br/~cosen/verao/alg.pdfhttp://www.ime.usp.br/~cosen/verao/alg.pdfhttp://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html