2_3_Princípios de Programação_estrutura de Dados (Resumo)

download 2_3_Princípios de Programação_estrutura de Dados (Resumo)

If you can't read please download the document

description

AA

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