43
Linguagem de programação Estruturas de armazenamento Professor: Saulo Henrique Cabral Silva Instituto Federal de Minas Gerais Campus Ponte Nova

Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Linguagem de programaçãoEstruturas de armazenamento

Professor: Saulo Henrique Cabral Silva

Instituto Federal de Minas GeraisCampus Ponte Nova

Page 2: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

ESTRUTURAS DE ARMAZENAMENTO

2

Page 3: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Estruturas de armazenamento

• Vetores Arrays

• Matrizes Arrays

• Vetores dinâmicos Vector

• Listas dinâmicas List

• Tabela Hash HashTable

3

Page 4: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

VETORES (ARRAYS)

4

Page 5: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Vetores

nome_da_variavel : vetor [0..y] de inteiro

5

80 0 0 0 0 00 0 0 0

0 1 2 3 4 5 6 7 8 9

...

Page 6: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Vetores Arrays (Declarando...)

• nome_da_variavel : vetor [0..y] de inteiro

int nome_da_variavel [ ] = new int [ y ];

6

80 0 0 0 0 00 0 0 0

0 1 2 3 4 5 6 7 8 y

...

Page 7: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Vetores Arrays (Acessando...)

• Para acessar um local específico basta indicar entre colchetesa posição desejada.

• Aquela posição recebe o nome de índice.

• O índice sempre inicia em 0.

• Um vetor de tamanho 10 vai de 0 a 9.

vet[4]

7

Page 8: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Vetores Arrays (Manipulando...)

int x [ ] = new int [4];

x[1] = 540;

x[3] = 987;

8

0 0 0 0

0 540 0 0

0 0540 987

Page 9: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Ainda sobre a declaração de vetores...

• A primeira posição de um vetor tem índice 0. Agora éobrigatório!!!!!!!!!!!!

• A última posição de um vetor tem índice equivalente a:(número de posições) - 1

• O sistema de execução não verifica se um dado acesso está dentro dos limites de um vetor...

9

Page 10: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Isso quer dizer que...

10

80 0 0 0 0 00 0 0 0

0 1 2 3 4 5 6 7 8 9

Int x [] = new int[10];

System.out.print(x[3]);

System.out.print(x[10]);

Page 11: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

EXERCÍCIOS

11

Page 12: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 1

• Escreva um programa que leia 5 valores do usuário eos armazene em um vetor. Logo em seguida, invertaas posições deste vetor da seguinte forma:

12

Page 13: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 2

• Faça um programa que carregue dois vetores de dezelementos numéricos cada um e mostre um vetorresultante da intercalação desses dois vetores.

13

Page 14: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

MATRIZES

14

Page 15: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Matrizes

• Uma matriz é um vetor (conjunto de variáveis do mesmo tipo)que possui duas ou mais dimensões

• Matrizes podem ser consideradas como “vetores de vetores”

• Por exemplo, uma matriz bi-dimensional pode

ser visto como uma tabela

de m linhas (filas) e

n colunas.

15

Page 16: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Matrizes - declarando

• Uma matriz possui linhas x colunas variáveis de um mesmotipo, seja ele: int, double, String, boolean, ... , Object

• As linhas são numeradas de 0.

• As colunas são numeradas de 0.

• Declarando uma matriz m x n:

int mat[ ][ ] = new int [m][n];

16

Page 17: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Matrizes – acessando uma posição de uma determinada matriz

• A forma de acessar um elemento da matriz é:

nome_da_matriz [x][y]

• Onde x e y é uma posição à qual desejamosacessar dessa matriz.

17

Page 18: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Matrizes – acessando uma posição de uma determinada matriz

• O compilador não verifica se foram utilizados valoresválidos para a linha e coluna.

– Então a verificação deve ser a mesma do tratamento dosvetores.

int nome_da_matriz[ ][ ] = new int [2][2];

18

Nome_da_matriz[1][3];

Nome_da_matriz[1][2];

Page 19: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

TP 2

19

Page 20: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

EXERCÍCIOS

20

Page 21: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 3

• Criar um programa que leia e armazene oselementos de uma matriz inteira M (10 x 10) eimprimi-la. Troque, na ordem a seguir:– a segunda linha pela oitava linha;

– a quarta coluna pela décima coluna;

21

Page 22: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 4

• Criar um programa que leia os elementos de umamatriz inteira 10 x 10 e escreva somente oselementos abaixo da diagonal principal.

22

Page 23: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 5

• Criar um programa que possa armazenar as alturasde dez atletas de cinco delegações que participarãodos jogos de verão. Imprimir a maior altura de cadadelegação.

23

Page 24: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 6

• Ler uma matriz a ordem de uma matriz i x j. Apósefetuar a leitura de sua ordem declare a matriz e apreencha com valores aleatórios. Por fim, calcule eimprimir a soma de todos os seus elementos.

24

Page 25: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 7

• Dado dois vetores, A (5 elementos) e B (8elementos), faça um programa que imprima todos oselementos comuns aos dois vetores.

25

Page 26: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 8

• Elaborar um programa que permita ao usuárioarmazenar uma quantidade indeterminada devalores dentro de um vetor. O Programa deveperguntar ao usuário se já quer finalizar a entrada dedados.

26

Page 27: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

VETORES(ARRAYS) DINÂMICOS

27

Page 28: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Vetores Estáticos X Vetores Dinâmicos

• Até agora na declaração de um vetor, foi preciso dimensioná-lo.– Precisamos de prever o número máximo de elementos no vetor

durante a codificação.

• Até agora para calcular a média dos alunos de uma turma earmazenar cada nota em um vetor eu preciso saber aquantidade de alunos à priori...– Uma solução é declarar um vetor absurdamente grande para não

haver limitações quando utilizar o programa.

– Se formos modestos com o tamanho do vetor,

o espaço não será suficiente para

armazenar os alunos.28

Tamanho71

Page 29: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Declarando Vetores Dinâmicos

• Utilizamos uma estrutura de armazenamentodinâmico quando não sabemos a quantidade dedados a serem armazenados.

• Vector Vector<?> nome = new Vector<?>( );

• List List<?> nome = new ArrayList<?>( );

• ? Tipo de dados que serão armazenados na estrutura

29

Page 30: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Inserindo Valores

Vector<Integer> vet = new Vector<Integer>( );

List<Integer> lista = new ArrayList<Integer>( );

vet.add(8);

vet.add(5);

lista.add(6);

lista.add(4);

30

8

8 5

6

6 4

Page 31: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Acessando valores

vet.get(1);

vet.get(2);

lista.get(1);

lista.get(2);

31

8 5

6 4

Page 32: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Alterando valores

vet.set(0,10);

lista.set(1,-2);

32

8 5

6 4

10 5

6 -2

Page 33: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Vetores Dinâmicos – removendo valores –quantidade de elementos

vet.remove(0);

lista.remove(1);

33

8 5

6 4

5

6

Page 34: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Mais algumas instruções

• indexOf ( x ) retorna a posição (índice) de um elemento

• add ( indice, valor ) insere um novo elemento no índice especificado

• clear ( ) exclui todos os elementos inseridos na lista/vetor

• isEmpty ( ) verifica se a lista/vetor esta vazia(o)

• contains ( x ) verifica se um determinado elemento esta presente nalista

• subList ( indice1, indice2 ) cria uma nova lista com os elementos queestão localizados entre os índice1 e índice2

34

Page 35: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

EXERCÍCIOS

35

Page 36: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 9

• Construa um programa para calcular a média de valoresPARES e ÍMPARES, de 50 números que serão digitados pelousuário (pode ser aleatório). Ao final, o programa devemostrar estas duas médias. O programa deve mostrartambém o maior número PAR digitado e o menor númeroÍMPAR digitado. Esses dados devem ser armazenados em umvetor. Além disso, devem ser impressos os valores PARESmaiores que a média PAR, bem como os valores ÍMPARESmenor que a média ÍMPAR.

36

Page 37: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 10

• Faça um programa que leia um vetor composto de Nvalores numéricos (N ≤ 20) e o ordene em ordemcrescente. O programa também deve ler um númerok e imprimir, antes e depois da ordenação, o k-ésimotermo da variável composta.

37

Page 38: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 11

• Numa corrida há 10 corredores, de número de inscrição de 1a 10. Faça um programa que leia os valores do número docorredor e o seu respectivo tempo na corrida. Além disso, oprograma deve imprimir a qualificação e o tempo de corrida,do primeiro ao décimo colocado, identificando o número deinscrição do corredor referente àquela colocação. Suponhaque não há tempos iguais.

38

Page 39: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Exercício 12

• Um armazém trabalha com 100

mercadorias diferentes identificadas

pelos números inteiros de 1 a 100. O dono do armazém anotaa quantidade de cada mercadoria vendida durante o mês. Eletem uma tabela que indica, para cada mercadoria, o preçoda mesma. Escreva um programa para calcular o faturamentomensal do armazém. A tabela de preços é fornecida seguidapelos números das mercadorias e as quantidades vendidas.Quando uma mercadoria não tiver nenhuma venda, éinformado o valor zero no lugar da quantidade.

39

Page 40: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

ITERAÇÃO ENTRE ELEMENTOS DOS VETORES E MAIS ALGUMAS

INSTRUÇÕES SOBRE VETORES

40

Page 41: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Collections• sort ( vet ) Ordena um vetor/lista em ordem crescente

• reverse ( vet ) Inverte os elementos de um vetor/lista

• shuffle ( vet ) “Sorteia” os elementos de um vetor (coloca os elementosde forma aleatória)

• frequency ( vet, x ) retorna a frequência (quantidade de vezes) de umdeterminado elemento no vetor/lista

• max ( vet ) retorna o valor do maior elemento inserido na lista

• min ( vet ) retorna o valor do menor elemento inserido na lista

• replaceAll( vet, A, B ) Substitui um determinado valor A por um valor B.41

Page 42: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •

Iterator

• Outra forma de percorrer uma estrutura de armazenamentolinear/dinâmica é utilizando o conceito de Iteradores. (não

sabemos a posição dos elementos, conhecemos apenas seus valores)– Iteradores, são utilizados nos laços de repetição.

– O Iterador, assume o valor de cada um dos elementos presentes naestrutura de repetição, a cada iteração (execução) do laço.

– Iteradores, precisam ser do mesmo tipo dos elementos contidos naestrutura de armazenamento.

for (tipo iterador : estrutura){

//a variável itererador, vai assumir cada um dos elementos da estrutura

}

42

4 9 5 83 561 107 16

Page 43: Linguagem de programação Estruturas de armazenamento · Vetores Arrays (Acessando...) • Para acessar um local específico basta indicar entre colchetes a posição desejada. •