Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde...

15
V etores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados, todos do mesmo tipo ; Cada item de dado do vetor é um elemento ou variável indexada; Cada item de dado é armazenado em uma determinada posição dentro do vetor, identificada por um índice; Um índice é um número inteiro (positivo ou negativo), colocado dentro de colchetes [], que especifica um elemento do vetor; Em Java, qualquer elemento de um vetor começa no índice zero. Nomes de vetores seguem as mesmas normas e convenções de nomes de variáveis. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli 1

Transcript of Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde...

Page 1: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Vetores• De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor;

• Em Java, vetores são coleções de dados, todos do mesmo tipo;

• Cada item de dado do vetor é um elemento ou variável indexada;

• Cada item de dado é armazenado em uma determinada posição dentro do vetor, identificada por um índice;

• Um índice é um número inteiro (positivo ou negativo), colocado dentro de colchetes [], que especifica um elemento do vetor;

• Em Java, qualquer elemento de um vetor começa no índice zero. Nomes de vetores seguem as mesmas normas e convenções de nomes de variáveis.

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

1

Page 2: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Declaração e criação de vetores• Segue a mesma norma de declaração de variáveis, mas colocando-se um par de colchetes após o nome do vetor ou após o tipo de dado que o vetor armazena:

double[] salarios; ou double salarios[]; //armazena null

• Declarar um vetor não é o mesmo que criá-lo. Somente reserva um espaço de memória para a variável que referencia o vetor. Para criá-lo, devemos fazer:

salarios = new double[20]; //cria um vetor de 20 elementos, todos com 0.0

• Declaração e criação podem ser feitas em uma só linha:

double[] salarios = new double[20];

• Em Java, é obrigatório definir-se o número de elementos no momento da criação do vetor.

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

2

Page 3: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Manipulando elementos de um vetor

• Tomando o vetor salarios da página anterior, podemos manipulá-lo de variadas formas. Veja:

Associando determinado valor literal:

salarios[7] = 20000.00;

Mostrando o conteúdo de determinada posição do vetor:

System.out.println(salarios[4]);

Usando uma variável como índice:

salarios[i] = 10000.00;

Usando uma constante como índice:

salarios[NUM_MAX_EMPREGADOS] = 5000.00;

Usando uma expressão como índice:

salarios[2 * i + j / 4] = 2000.00;IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

3

Page 4: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Inicialização automática de valores• int[] idades = new int[10]; associa idades a um endereço de memória e inicializa cada um dos 10 elementos do vetor com o valor-padrão zero;

• Se o vetor for do tipo char, cada posição do vetor é automaticamente inicializada com \u0000, que é o código Unicode para o caracter nulo;

• Se o vetor for de valores float ou double, os elementos recebem o valor 0.0;

• Se for um vetor booleano, os elementos são inicializados com false;

• Se os elementos do vetor forem objetos, quaisquer que sejam eles, todas as posições são definidas para null.

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

4

Page 5: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Inicializando vetores

• Podemos inicializar vetores ao mesmo tempo em que eles

são declarados e criados. Para tanto, fornecemos uma lista

de valores separados por vírgula e colocados entre chaves,

assim:

int[] idades = {15, 18, 46, 27, 19, 65};

• Esta ação é conhecida pela expressão "popular um vetor";

• Outra variante da declaração acima seria:

int[] idades = new int[] {15, 18, 46, 27, 19, 65};

• Podemos utilizar variáveis ao invés de valores literais:

int idades = {valor1, valor2, valor3, valor4};

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

5

Page 6: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Percorrendo um vetor

• Na maior parte do tempo, nossa aplicação precisa

realizar as mesmas tarefas sobre cada um dos

elementos de um vetor. Nesta situação, podemos

utilizar laços de repetição para facilitar o trabalho:

for(i = 0; i < 10; i++)

//operações com cada vetor[i];

• Quando não sabemos o tamanho de um vetor, podemos

usar a variável de instância length, que contém o

número de elementos de um vetor:

for(i = 0; i < vetor.length; i++)

//operações com cada vetor[i];

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

6

Page 7: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

O laço foreach

• Em Java, há uma estrutura de repetição simplificada,

criada especialmente para ler os valores dos

elementos de um vetor. É conhecido como laço

foreach. Exemplo:

for(int valor : idades)

Sytem.out.println(valor); //escreve cada elemento do vetor

• Neste exemplo, valor é uma variável inteira, que irá

receber, a cada iteração, um elemento do vetor

idades. Valor pode ser substituído por qualquer nome

válido de variável.

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

7

Page 8: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Vetores de objetos• Considere a classe ao lado. Se

quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer:

Empregado[] empregados = new Empregado[5];

for(i=0; i<5; i++)empregados[i] = new Empregado(umaMat, umSal);

• Para acessar os métodos de cada empregado, teríamos:

for(i=0; i<5; i++)System.out.println(empregados[i].lerMatricula + empregados[i].lerSalario);

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

8

Page 9: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Foreach com objetos

• Podemos usar o laço simplificado para percorrer mais

facilmente um vetor de objetos. Usando o exemplo da

página anterior, teríamos:

for(Empregado trabalhador : empregados)System.out.print(trabalhador.lerMatricula() + trabalhador.lerSalario());

• trabalhador é uma variável local que armazena um

objeto do tipo Empregado a cada repetição;

• Esta construção elimina a necessidade de se definir

um tamanho para o vetor e um índice para referenciar

seus elementos.

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

9

Page 10: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Manipulando vetores de strings

• Vetores de strings podem ser criados e manipulados

como qualquer outro objeto. Exemplo:

String[] pessoas = {"Maria", "João", "Joana"};

for(int i = 0; i < pessoas.length; i++)

System.out.println(pessoas[i]);

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

10

Page 11: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Vetores de caracteres

• Vetores compostos por elementos do tipo char podem

ser impressos com uma única declaração, sem o uso

de um laço de repetição: Exemplo:

char[] nome = {'M', 'A', 'R', 'I', 'A'};

System.out.print(nome);

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

11

Page 12: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Copiando vetores

• Existem situações onde precisamos duplicar os

elementos de um vetor, gerando outro vetor idêntico.

Podemos usar um laço de repetição para isso:

int[] origem = {2, 3, 7, 8};

int[] destino = new int[origem.length];

for(int i = 0; i < origem.length; i++)

destino[i] = origem[i];

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

12

Page 13: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Passando vetores para métodos

• Vetores podem ser passados como argumentos na chamadas de métodos ou usados como parâmetros na definição de métodos da mesma forma como os tipos de dados primitivos. Considere o seguinte vetor:

double[] numeros = {5.6, 4.2, 9.7};

• Passando o vetor como parâmetro de um método:

public estatic void processarVetor(double[] numeros)

{ //operações com o vetor numeros}

• Invocando um método e usando o vetor como argumento:

objeto.processarVetor(numeros);

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

13

Page 14: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

Retornando um vetor de um método

• Métodos podem retornar um vetor. Basta colocar

colchetes no tipo de retorno no cabeçalho do método.

Dentro do corpo do método, a declaração return não

usa colchetes após o nome do vetor. Exemplo:

public static double[] criaVetor(){double novoVetor = {1.0, 2.0, 3.0};return novoVetor;}

• A chamada deste método poderia ser:

double[] meuVetor = criaVetor();

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

14

Page 15: Apresentação do PowerPoint · •Considere a classe ao lado. Se quisermos criar um vetor, onde cada elemento é um objeto da classe empregado, devemos fazer: Empregado[] empregados

A classe Arrays• A classe java.util.Arrays disponibiliza vários métodos estáticos que:

a. Ordenam os elementos de um vetor: Arrays.sort(vetor);

b. Pesquisam por um elemento no vetor (exige que o vetor já

esteja ordenado). Retorna o índice do elemento, se este foi

encontrado, ou, caso contrário, um número negativo : Arrays.binarySearch(vetor, elemento).;

c. Conferem se dois vetores são iguais (true ou false): Arrays.equals(vetor1, vetor2);

d. Preenchem um vetor com determinado elemento: Arrays.fill(vetor, elemento);

e. Retornam uma string que representa os elementos de um vetor: Arrays.toString(vetor);

f. Copiam os elementos de um vetor para outro vetor. Retornam o

vetor copiado:Arrays.copyOf(vetor, comprimento);

IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

15