Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Linguagem de programaçãoEstruturas de armazenamento
Professor: Saulo Henrique Cabral Silva
Instituto Federal de Minas GeraisCampus Ponte Nova
ESTRUTURAS DE ARMAZENAMENTO
2
Estruturas de armazenamento
• Vetores Arrays
• Matrizes Arrays
• Vetores dinâmicos Vector
• Listas dinâmicas List
• Tabela Hash HashTable
3
VETORES (ARRAYS)
4
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
...
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
...
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
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
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
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]);
EXERCÍCIOS
11
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
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
MATRIZES
14
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
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
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
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];
TP 2
19
EXERCÍCIOS
20
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
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
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
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
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
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
VETORES(ARRAYS) DINÂMICOS
27
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
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
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
Acessando valores
vet.get(1);
vet.get(2);
lista.get(1);
lista.get(2);
31
8 5
6 4
Alterando valores
vet.set(0,10);
lista.set(1,-2);
32
8 5
6 4
10 5
6 -2
Vetores Dinâmicos – removendo valores –quantidade de elementos
vet.remove(0);
lista.remove(1);
33
8 5
6 4
5
6
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
EXERCÍCIOS
35
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
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
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
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
ITERAÇÃO ENTRE ELEMENTOS DOS VETORES E MAIS ALGUMAS
INSTRUÇÕES SOBRE VETORES
40
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
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