Buscar

Estruturas de dados homog neas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Estruturas de dados 
homogêneas 
 
 
Prof. Maurício Braga 
 
 
Vetores 
 Até agora sempre utilizamos variáveis definidas a partir de tipos 
básicos de dados. 
 Cada variável só é capaz de armazenar um dado por vez. 
 Existem situações em que é necessário armazenar uma grande 
quantidade de dados na memória ao mesmo tempo. 
 Esta quantidade torna inviável a criação de variáveis para cada um dos 
dados a ser armazenado. 
 Para estes casos, poderemos criar variáveis a partir de tipos de 
dados estruturados. 
 Um tipo de dado estruturado é aquele formado pela junção ou 
combinação de tipos básicos, definindo apenas uma variável que o 
represente. 
Vetores 
 Vetor (ou array) é uma estrutura de dados 
composta por uma quantidade determinada de 
elementos de um mesmo tipo. 
 
 Como armazena sempre dados do mesmo tipo, diz-
se que vetores são estruturas de dados homogêneas. 
Vetores 
 Ao apresentar o conceito de variável, dissemos que ela 
funciona como uma caixa na memória do computador, 
capaz de armazenar um único dado de um determinado 
tipo. 
 Por analogia, podemos imaginar um vetor como um 
conjunto de variáveis agrupadas sob um mesmo nome, 
todas de um mesmo tipo. 
 O vetor passa a ser um conjunto de caixinhas, contendo dados 
de mesma natureza e que estejam agrupados. 
Vetores 
 Armazenamento em memória 
15 A 
-7 
15 
23 
A { 
Variável simples Vetor 
Vetores 
 Para referenciar o conteúdo de uma variável 
simples, basta indicar o nome que foi definido. 
 Para vetores, somente o nome não é suficiente. 
Além do nome, preciso indicar a posição no 
vetor onde está o dado que queremos 
acessar/utilizar. 
 Esta posição é denominada índice. 
Os vetores são também chamados de variáveis 
indexadas unidimensionais. 
Vetores 
 Sintaxe para declaração de um vetor: 
 
 
 Sintaxe para referenciação de uma posição: 
 
 
 Suponha que é necessário armazenar 100 preços de produtos de 
uma loja. 
 Declaração: 
 
 Referenciação: 
<var> : vetor[<inicio>..<fim>] de <tipo>; 
preco : vetor[1..100] de real; 
preco[1] = 32.50; 
<nome_vetor>[<posicao>]; 
preco[102] = 43.80; 
X 
Não é possível 
acessar posições 
fora do intervalo 
definido 
Vetores 
 Observações 
 
 É necessário validar acessos a índices inexistentes, evitando 
erros no sistema; 
 Apenas variáveis inteiras podem ser utilizadas como índices de 
um vetor. 
 Cada elemento do vetor deve ser tratado como uma variável 
independente 
 Todas as operações que podem ser realizadas sobre variáveis 
de tipos básicos, podem ser aplicadas a posições de um vetor. 
 Ex.: v[5] = s.nextInt(); syso(v[3]); v[3]=v[2]+4; 
Vetores em Java 
 Recebem o nome de Array. 
 
 Para criar um array, 3 passos são necessários: 
 Declaração; 
 Construção; 
 Inicialização. 
Vetores em Java 
 Declarando um vetor: 
 
 int vetor[ ]; // declaração do array 
 
 Construindo um vetor (a construção é feita com 
o operador new): 
 
 vetor = new int[10]; // construção do array 
 
 PS: Não se especifica o tamanho do array na 
declaração. Isso é feito apenas na construção. 
Vetores em Java 
 A declaração e construção podem ser feitas de uma vez 
só: 
 int vetor[ ] = new int[10]; 
 
 Os índices em um array em Java começam em 0. 
 
 Para inserirmos elementos, precisamos indicar a 
posição no array onde eles serão inseridos: 
 
 vetor[0] = 52; 
 vetor[1] = -28; 
Vetores em Java 
 Exemplo: 
 
 int[] v = new int[10]; 
 v[0] = 34; 
 v[1] = 27; 
 v[2] = 18; 
 v[3] = -78; 
 v[4] = 1534; 
 
v[0] 
 
v[1] 
 
v[2] 
 
v[3] 
 
v[4] 
 
v[5] 
 
v[6] 
 
v[7] 
 
v[8] 
 
v[9] 
 
34 
27 
18 
-78 
1534 
Vetores em Java 
 Não é possível acessar além dos limites em um array. 
 
 Para sabermos o tamanho de um array, podemos usar a 
variável length: 
Ex: 
 int v[ ] = new int[10]; 
 for(int i = 0; i < v.length; i++) { 
 System.out.println("array[" +i + "] = " +v[i]); 
 } 
Vetores em Java 
 Os arrays são inicializados automaticamente em 
java. 
 
 Cada tipo de dado que podemos colocar em um 
array possui um valor padrão, que será usado 
para inicializar o array automaticamente. 
Inicialização automática de um Array 
Tipo valor tipo valor 
byte 0 short 0 
int 0 long 0L 
float 0.0f double 0.0d 
char '\u0000' boolean false 
 
Referências recebem null 
Vetores em Java 
 A declaração, construção e inicialização do 
array também pode ser feita de uma vez só: 
 String frutas[ ] = {"Uva", "Melancia","Pêssego"}; 
 
 código equivalente a: 
 String frutas[ ] = new String[3]; 
 frutas[0] = "Uva"; 
 frutas[1] = "Melancia"; 
 frutas[2] = "Pêssego"; 
Vetores 
 Exemplo: 
 Uma prova de química foi feita por um grupo de 20 alunos. Faça 
um programa para ler as notas obtidas pelos alunos, e depois 
exibir um relatório de notas superiores a 7,5 no seguinte 
formato: 
Notas > 7.5: 
7.8 
9.4 
10.0 
7.7 
8.5 
7.6 
9.1 
8.3 
Vetores 
 Solução: 
 Este exemplo é uma aplicação simples de vetores. 
 Existe uma repetição embutida, pois é necessário ler as 20 
notas. 
 Poderíamos solucionar este problema sem a utilização de 
vetores, mas perderíamos as notas dos alunos, o que é uma má 
idéia. 
 Temos então quer ler todas as notas, e em seguida varrer todo o 
vetor, decidindo quais devem ser impressas. 
 Como a quantidade de leituras é fixa, podemos utilizar o 
comando PARA nas repetições. 
Vetores 
 Como fica o algoritmo: 
Variáveis 
 cont : inteiro; 
 nota : vetor[1..20] de real; 
Início 
 // Lê as notas e armazena no vetor 
 para cont de 1 até 20 faça 
 [[ 
 escrever “Digite a nota: “; 
 ler nota[cont]; 
 ]]; 
 // imprime as notas acima de 7.5 
 escrever “Notas acima de 7.5”; 
 para cont de 1 até 20 faça 
 se nota[cont] > 7.5 então 
 escrever nota[cont]; 
Solução em Java 
public static void main(String[] args) { 
 double notas[]; 
 notas = new double[20]; 
 Scanner s = new Scanner(System.in); 
 for (int i=0; i < notas.length;i++) { 
 System.out.println("Digite a nota"); 
 notas[i] = s.nextDouble(); 
 } 
 System.out.println("Notas > 7.5"); 
 for (int i=0; i < notas.length;i++) { 
 if ( notas[i]> 7.5) 
 System.out.println(notas[i]); 
 } 
} 
Matrizes 
 Vimos que vetores são utilizados para armazenar dados de uma 
única “fileira”. 
 Porém, existem situações em que a natureza dos dados exige uma 
forma de armazenamento em mais de uma dimensão. 
 Para estas situações, existem as matrizes, que podem ser vistas 
como vetores que possuem mais de uma dimensão. 
 No caso de uma matriz bidimensional, essa matriz representa uma 
tabela de valores colocados em linhas e colunas. 
 Para identificar um valor é necessário informar a linha e a coluna 
 Conhecidas como tabelas, ou variáveis indexadas bidimensionais 
 Um vetor pode ser visto como uma matriz com uma única linha. 
Matrizes bidimensionais 
 Sintaxe para declaração de uma matriz bidimensional: 
 
 
 Sintaxe para referenciação de uma posição: 
 
 
 Exemplos: 
 Declaração: 
 
 Referenciação: 
<var> : vetor[<inicio1>..<fim1>,<inicio2>..<fim2>,...] de <tipo>; 
valor : vetor[1..3,1..4] de real; 
valor[1,1] = 8.50; 
<nome_vetor>[<posicao1>,<posicao2>,...]; 
valor[2,3] = 7.3; 
Matrizes em Java 
 Criadas utilizando arrays multidimensionais. Arrays multidimensionais com duas dimensões 
costumam ser utilizados para representar tabelas de 
valores: 
 Informações dispostas na forma de linhas e colunas. 
 Chamados de arrays bidimensionais pois precisam de dois 
índices para identificação dos elementos. 
 Java não suporta arrays multidimensionais diretamente. 
 É necessário criar um array unidimensional e definir que seus 
elementos também são arrays unidimensionais; 
 Praticamente possuem o mesmo efeito. 
Arrays bidimensionais 
 Cada elemento do array é identificado por uma 
expressão de acesso da forma 
 nomeArray [ linha ] [ coluna ]. 
a[ 0 ] [ 0 ] a[ 0 ] [ 1 ] a[ 0 ] [ 2 ] a[ 0 ] [ 3 ] 
a[ 1 ] [ 0 ] a[ 1 ] [ 1 ] a[ 1 ] [ 2 ] a[ 1 ] [ 3 ] 
a[ 2 ] [ 0 ] a[ 2 ] [ 1 ] a[ 2 ] [ 2 ] a[ 2 ] [ 3 ] 
Arrays bidimensionais 
 Arrays bidimensionais podem ser declarados / 
construídos da mesma forma que arrays 
unidimensionais: 
 
 int b[][]; // declaração da matriz 
 b = new int[ 2 ][ 3 ]; // construção matriz 2 linhas e 
 // 3 colunas 
 
Ou 
 
 int b[][] = new int[ 2 ][ 3 ]; 
 
Arrays Multidimensionais 
 Acessando os elementos de um array 
multidimensional: 
 
int[ ][ ] a = new int[ 3 ][ 2 ]; 
for (int i = 0; i < a.length; i++) { 
 for (int j = 0; j < a[ i ].length; j++) { 
 System.out.println(a[ i ][ j ]); 
 } 
} 
 A declaração, construção e inicialização de uma 
matriz pode ser feita de uma vez só: 
 
 int[][] m = {{1,2}, {3,4}}; 
 
 código equivalente a: 
 
 int[][] m = new int[2][2]; 
m[0][0] = 1; 
m[0][1] = 2; 
m[1][0] = 3; 
m[1][1] = 4; 
 
 
Arrays multidimensionais 
Arrays Multidimensionais 
 Arrays de arrays unidimensionais não exigem que todas 
as linhas tenham a mesma quantidade de elementos. 
 
 int b[ ][ ]; 
 
 b = new int[ 2 ][ ]; // cria 2 linhas 
 
 b[ 0 ] = new int[ 5 ]; // cria 5 colunas para linha 0 
 b[ 1 ] = new int[ 3 ]; // cria 3 colunas para linha 1 
Matrizes 
 Exemplo 
 Um distribuidor de refrigerantes vende seu produto em todo o 
país. Em cada trimestre do ano passado ele vendeu uma certa 
quantidade de garrafas em cada região do Brasil. Faça um 
programa para ler as quantidades vendidas em uma matriz e 
depois imprima na tela a quantidade total vendida em todo o 
país. 
 Solução 
 Pelo enunciado do problema, vimos que existem 20 dados de 
entrada, pois temos 4 trimestres no ano e cada trimestre teve 
uma venda para cada uma das cinco regiões do Brasil. 
 O enunciado do problema também no leva a concluir que 
devemos utilizar uma estrutura matricial ao invés de vetorial. 
 Temos vendas para regiões por trimestre. 
Matrizes 
 Solução (cont.) 
 A tabela abaixo mostra uma representação possível para os dados do 
problema: 
150 1150 900 1500 400 
180 980 1100 2300 650 
140 1000 950 2100 500 
210 1600 1400 2600 840 
1 - Norte 2 - Nordeste 3 - Sul 4 - Sudeste 5 – Centro- 
Oeste 
1º Trimestre 
2º Trimestre 
3º Trimestre 
4º Trimestre 
Matrizes 
 Solução (cont.): 
 Então o algoritmo fica assim: 
Variáveis 
 quant : vetor[1..4,1..5] de inteiro; 
 i, j, soma : inteiro; 
Início 
 para i de 1 até 4 faça 
 para j de 1 até 5 faça [[ 
 escrever “Informe a quantidade do “, i, “º trimestre e “, j, “ª região: “; 
 ler quant[i,j]; 
 ]]; 
 soma = 0; 
 para i de 1 até 4 faça 
 para j de 1 até 5 faça 
 soma = soma + quant[i,j]; 
 escrever “O total das quantidades vendidas é ”, soma; 
Fim. 
Solução Exemplo em Java 
public static void main(String[] args) { 
 int[ ][ ] quant = new int[ 4 ][ 5 ]; 
 int soma = 0; 
 Scanner s = new Scanner(System.in); 
 
 // lê os valores para cada região e cada trimestre 
 for (int i = 0; i < quant.length; i++) { 
 for (int j = 0; j < quant[ i ].length; j++) { 
 System.out.println("informe a quantidade do "+(i+1)+"º 
trimestre e " +(j+1)+"ª região"); 
 quant[ i ][ j ] = s.nextInt(); 
 } 
 } 
Solução Exemplo em Java 
 // soma todos os valores armazenados na matriz 
 for (int i = 0; i < quant.length; i++) { 
 for (int j = 0; j < quant[ i ].length; j++) 
 soma = soma + quant[ i ][ j ]; 
 } 
 System.out.println("O total de quantidades vendidas é:" + soma); 
} 
Estruturas de dados 
homogêneas 
 
 
Prof. Maurício Braga

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes