Download - Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Transcript
Page 1: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Estrutura de DadosVariáveis Compostas (Vetores e

Matrizes)Prof. Adriano Teixeira de Souza

Page 2: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

São um conjunto de variáveis identificadas por um mesmo nome.

◦ Homogêneas (vetores e matrizes)

◦ Heterogêneas (Objetos)

Variáveis Compostas

Page 3: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

6,1 2,3 9,4 5,1 8,9 9,8 10 7,0 6,3 4,4

0 1 2 3 4 5 6 7 8 9

Notas:

Posição:

Variáveis Compostas Homogêneas

Correspondem a posições da memória:◦ identificadas por um único nome◦ individualizadas por índices ◦ cujo conteúdo é de um mesmo tipo

Page 4: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Posição do livro

0 1 2 … n-1

0 788 598 265 … 156

1 145 258 369 … 196

2 989 565 345 … 526

⋮ ⋮ ⋮ ⋮ ⋱ ⋮

m-1 845 153 564 892 210

Pra

tele

ira

Variáveis Compostas Homogêneas:: Exemplo

Page 5: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Utilizados para armazenar conjuntos de dados cujos elementos podem ser endereçados por um único índice.

Também são conhecidos como vetores.

Arranjos unidimensionais

Page 6: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Utilizados para armazenar conjuntos de dados cujos elementos necessitam ser endereçados por mais de um índice.

Também são conhecidos como matrizes.

Arranjos multidimensionais

Page 7: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

0 1 2 … n-1

0 788 598 265 … 156

1 145 258 369 … 196

2 989 565 345 … 526

⋮ ⋮ ⋮ ⋮ ⋱ ⋮

m-1 845 153 564 892 210

Arranjos de 2 dimensões

Arranjos multidimensionais:: Exemplos

Page 8: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

0 1 2 3

0

1

2

3

0

0 1 2 3

0

1

2

3

1

0 1 2 3

0

1

2

3

2

0 1 2 3

0

1

2

3

3

Arranjo de 3 dimensões

Arranjos multidimensionais:: Exemplos

Page 9: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

0 1 2 3

0

1

2

3

(0,0)

0 1 2 3

0

1

2

3

(0,1)

0 1 2 3

0

1

2

3

(0,2)

0 1 2 3

0

1

2

3

(0,3)

0 1 2 3

0

1

2

3

(1,0)

0 1 2 3

0

1

2

3

(1,1)

0 1 2 3

0

1

2

3

(1,2)

0 1 2 3

0

1

2

3

(1,3)

Arranjo de 4 dimensões

Arranjos multidimensionais:: Exemplos

Page 10: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Como declarar:

Exemplos:<tipo> <nome> [][] = new <tipo> [<tamanho1>][<tamanho2>];<tipo> <nome> [][] = new <tipo> [<tamanho1>][<tamanho2>];

float VetReais[] = new float[100];int Vetor[][] = new int[5][9];char Nome_cliente[] = new char[50];float cubo[][][] = new float[20][12][7];

float VetReais[] = new float[100];int Vetor[][] = new int[5][9];char Nome_cliente[] = new char[50];float cubo[][][] = new float[20][12][7];

Vetores e Matrizes na Linguagem Java

Page 11: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

int VetInt[] = new int[n];int VetInt[] = new int[n];

...

Índices: 0 1 2 3 4 5 ... n-1

VetInt

Índice do primeiro elemento: zeroÍndice do último elemento: n – 1Quantidade de elementos: n

Vetores e Matrizes na Linguagem Java

Page 12: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Índices fora dos limites podem causar uma exceção em tempo de execução.

java.lang.ArrayIndexOutOfBoundsException0 1 2 3 4 5

Vetor[6]X1 X2

Vetor[1] = 9;

Vetor[-1] =;//Error

Vetor[6] =;//Error

Vetor[1] = 9;

Vetor[-1] =;//Error

Vetor[6] =;//Error

2 89

Vetores e Matrizes na Linguagem Java

int X1;

int Vetor[]= new int[6];

int X2;

int X1;

int Vetor[]= new int[6];

int X2;

Page 13: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Vetores e Matrizes na Linguagem Java

O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não pode ser mudado.

Portanto, vetores e matrizes são chamadas estruturas de dados estáticas, pois mantém o mesmo tamanho ao longo de toda a execução do programa.

Page 14: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Atribuir valores na declaração do vetor:

Atribuir valores na declaração da matriz:

float matriz[][] = new float[][]{{1,2,3},{4,5,6}}float matriz[][] = new float[][]{{1,2,3},{4,5,6}}

int vetor[] = new int[]{1,2,3,4,5};int vetor[] = new int[]{1,2,3,4,5};

Vetores e Matrizes na Linguagem Java:: Exemplos

Page 15: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Colocar os números de 1 a 5 num vetor:

Colocar os números de 5 a 1 num vetor:

for (int i=0; i<5; i++) Vetor[i] = 5 - i;for (int i=0; i<5; i++) Vetor[i] = 5 - i;

for (int i=0; i<5; i++) Vetor[i] = i + 1;for (int i=0; i<5; i++) Vetor[i] = i + 1;

Vetores e Matrizes na Linguagem Java:: Exemplos

Page 16: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Preencher uma matriz n × m com zeros:

for (int i=0; i < N; i++)

for (int j=0; j < M; j++)

Matriz[i][j] = 0;

for (int i=0; i < N; i++)

for (int j=0; j < M; j++)

Matriz[i][j] = 0;

Vetores e Matrizes na Linguagem Java:: Exemplos

Page 17: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Copiar dados de um vetor para outro:

Boa prática de programação:◦ Definir o tamanho de vetores com constantes

flexibiliza a manutenção do código.

final int TAM_MAX = 10;double VetReais[] = new double[TAM_MAX], VetCopia[] = new double[TAM_MAX];for (int i=0; i<TAM_MAX; i++)

VetCopia[i] = VetReais[i];

final int TAM_MAX = 10;double VetReais[] = new double[TAM_MAX], VetCopia[] = new double[TAM_MAX];for (int i=0; i<TAM_MAX; i++)

VetCopia[i] = VetReais[i];

Vetores e Matrizes na Linguagem Java:: Exemplos

Page 18: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Leitura dos dados de um vetor:

for (int i=0; i<TAM_MAX; i++) { System.out.println("Digite um número: "); Vet[i] = leitor.nextFloat();}

for (int i=0; i<TAM_MAX; i++) { System.out.println("Digite um número: "); Vet[i] = leitor.nextFloat();}

Vetores e Matrizes na Linguagem Java:: Exemplos

Page 19: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Determinar:1. M[3][0]2. M[4][2]3. M[1][3]4. M[5][M[0][2]]5. M[M[3][1]][1]6. M[4][(M[1][2]+M[3][0])]

0 1 2 3

0 1 2 3 4

1 5 -5 3 0

2 1 1 1 1

3 -3 2 0 0

4 0 0 1 1

5 -1 -1 -2 -21. -3

2. 1

3. 0

4. -2

5. 1

6. 0

Vetores e Matrizes na Linguagem Java:: Problema A

Page 20: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Ler um elemento K. Ler um vetor A de N elementos. Verificar se o elemento K está presente no

vetor:◦ Se estiver, imprimir a posição onde ele foi

encontrado.◦ Caso contrário, imprimir mensagem "elemento K

não encontrado".

Vetores e Matrizes na Linguagem Java:: Problema B (Exercício)

Page 21: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Ler N valores inteiros (N ≤ 100) até que seja digitado o valor zero.

A seguir, inverter o vetor, trocando o 1º elemento com o último, o 2º com o penúltimo, e assim sucessivamente.

Ao final, imprimir o vetor invertido.

Vetores e Matrizes na Linguagem Java:: Problema C (exercício)

Page 22: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

Faça um programa que imprima uma matriz quadrada de dimensão N contendo:◦ o número 1 nos elementos abaixo da diagonal principal ◦ o número 0 nos demais elementos

N deve ser menor ou igual a 20.

Vetores e Matrizes na Linguagem Java:: Problema D (Exercício)

Page 23: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

BELÉM   1611 5298 4397 3250 2100 2933

FORTALEZA 1611   5763 4865 2805 1389 3127

MANAUS 5298 5763   901 4374 5009 3971

PORTO VELHO 4397 4865 901   3473 4023 3070

RIO DE JANEIRO 3250 2805 4374 3473   1649 429

SALVADOR 2100 1389 5009 4023 1649   1962

SÃO PAULO 2933 3127 3971 3070 429 1962  

BELÉ

M

FORTA

LEZ

A

MA

NA

US

PO

RTO

V

ELH

O

RIO

DE

JA

NEIR

O

SA

LVA

DO

R

O P

AU

LO

Fonte: DENIT

Vetores e Matrizes na Linguagem Java:: Problema E

Page 24: Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)

Prof. Adriano Teixeira de Souza

1. Construir um algoritmo que leia a tabela anterior e informe ao usuário a distância entre duas cidades fornecidas por ele, até que ele forneça duas cidades iguais (origem e destino).

2. Construir um algoritmo que permita ao usuário informar várias cidades, até inserir “xx”, e que imprima a distância total para cumprir todo o percurso especificado entre as cidades fornecidas.

Vetores e Matrizes na Linguagem Java:: Problema E