Escolar Documentos
Profissional Documentos
Cultura Documentos
Vetores
Existem situaes em que necessrio armazenar uma grande quantidade de dados na memria ao mesmo tempo.
Esta quantidade torna invivel a criao de variveis para cada um dos dados a ser armazenado.
Para estes casos, poderemos criar variveis a partir de tipos de dados estruturados.
Um tipo de dado estruturado aquele formado pela juno ou combinao de tipos bsicos, definindo apenas uma varivel que o represente.
2/33
Vetores
Vetores
Agora considere o mesmo problema, porm, para ordenar de forma decrescente 10 nmeros inteiros
Este
problema apresenta 3.628.800 resultados diferentes Desconforto de trabalhar com 10 nomes de variveis diferentes necessrio o emprego de variveis do tipo vetor para a resoluo deste problema.
4/33
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, dizse que vetores so estruturas de dados homogneas.
5/33
Vetores
Ao apresentar o conceito de varivel, dissemos que ela funciona como uma caixa na memria do computador, capaz de armazenar um nico dado de um determinado tipo. Por analogia, podemos imaginar um vetor como um conjunto de variveis 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.
6/33
Vetores
Armazenamento em memria
15
-7 15 23
Varivel simples
7/33
Vetor
Vetores
Para referenciar o contedo de uma varivel simples, basta indicar o nome que foi definido. Para vetores, somente o nome no suficiente. Alm do nome, preciso indicar a posio no vetor onde est o dado que queremos acessar/utilizar.
Esta
8/33
Vetores
Suponha que necessrio armazenar 100 preos de produtos de uma loja. Declarao: preco : vetor[1..100] de real;
Referenciao:
preco[1] = 32.50;
9/33
preco[102] = 43.80;
Vetores
Observaes
necessrio validar acessos a ndices inexistentes, evitando erros no sistema; Apenas variveis inteiras podem ser utilizadas como ndices de um vetor. Cada elemento do vetor deve ser tratado como uma varivel independente Todas as operaes que podem ser realizadas sobre variveis de tipos bsicos, podem ser aplicadas a posies de um vetor.
10/33
Vetores em Java
11/33
Vetores em Java
Os ndices em um array em Java comeam em 0. Para inserirmos elementos, precisamos indicar a posio no array onde eles sero inseridos:
12/33
Vetores em Java
13/33
Vetores em Java
Exemplo:
int[]
v = new int[10]; v[0] = 34; v[1] = 27; v[2] = 18; v[3] = -78; v[4] = 1534;
34 27 18 -78 1534
v[7]
v[8]
14/33
v[9]
Vetores em Java
15/33
Vetores em Java
Os arrays so inicializados automaticamente em java. Cada tipo de dado que podemos colocar em um array possui um valor padro, que ser usado para inicializar o array automaticamente.
16/33
Vetores em Java
A declarao, construo e inicializao do array tambm pode ser feita de uma vez s:
String
cdigo equivalente a:
String
18/33
Vetores
Exemplo:
Uma prova de qumica foi feita por um grupo de 20 alunos. Faa um programa para ler as notas obtidas pelos alunos, e depois exibir um relatrio de notas iguais ou superiores a 7,5 no seguinte formato:
Notas >= 7.5: 7.8 9.4 10.0 7.7 8.5 7.5 9.1 8.3
19/33
Vetores
Soluo:
Este exemplo uma aplicao simples de vetores. Existe uma repetio embutida, pois necessrio ler as 20 notas. Poderamos solucionar este problema sem a utilizao de vetores, mas perderamos as notas dos alunos, o que uma m idia. Temos ento 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 repeties.
20/33
Vetores
Variveis
Incio
// L as notas e armazena no vetor para cont de 1 at 20 faa [[ escrever Digite a , cont, nota: ; ler nota[cont]; ]]; // imprime as notas acima de 7.5 escrever Notas acima de 7.5; para cont de 1 at 20 faa se nota[cont] >= 7.5 ento escrever nota[cont];
21/33
Soluo em Java
public static void main(String[] args) { double notas[]; notas = new double[20]; for (int i=0; i < notas.length;i++) { System.out.println("Digite a " + (i+1) + " nota"); notas[i] = Leia(notas[i]); } System.out.println("Notas >= 7.5"); for (int i=0; i < notas.length;i++) { if (notas[i]>=7.5) System.out.println(notas[i]); } }
22/33
Vetores
Exerccio:
Faa um programa para ler 50 valores reais e armazenar em um vetor. Em seguida, modifique o vetor de modo que os valores armazenados nas posies mpares do vetor sejam aumentadas em 5% (ex: 1 elemento, 3 elemento, 5 elemento, etc) e os das posies pares (ex: 2 elemento, 4 elemento, 6 elemento, etc) sejam aumentados em 2%. Imprima depois o vetor resultante.
23/33
Soluo
public static void main(String[] args) { double valor[] = new double[50]; int i=0; double aux =0; // L os valores e preenche o vetor while (i < valor.length) { System.out.println(Digite o " +(i+1) + termo:"); aux = Leia(aux); valor[i] = aux; i = i +1; }
24/33
Soluo
// aumenta os valores nas posies mpares em 5% e os // pares em 2%. for (i=0; i < valor.length; i++) { if ((i+1)%2 ==1) valor[i]=valor[i]*1.05; else valor[i]=valor[i]*1.02; } // imprime o vetor for (i=0; i < valor.length; i++) System.out.println((i+1)+" termo = "+valor[i]); }
25/33
Vetores
Exerccios:
Num concurso pblico, um candidato respondeu a uma avaliao com 30 questes numricas, onde cada questo admitia respostas de 0 at 99. Faa um programa para ler o gabarito da prova e as respostas do aluno, informando quantas questes ele acertou.
26/33
Soluo
public static void main(String[] args) { int[] questoes = new int[30]; int[] gabarito = new int[30]; int soma = 0; for (int i = 0;i < questoes.length; i++ ) { System.out.println("Digite a " +(i+1) + " resposta"); questoes[i] = Leia(questoes[i]); } for (int i = 0;i < questoes.length; i++ ) { System.out.println("Digite o gabarito da " +(i+1) + " questo"); gabarito[i] = Leia(gabarito[i]); if (questoes[i] == gabarito[i]) soma = soma +1; } System.out.println("O nmero de acertos foi: " + soma); }
27/33
Vetores
Exerccio:
Faa um programa para ler no mximo 30 nmeros reais informados pelo usurio, e exibir depois a mdia destes nmeros. Considere que o valor -99 encerra a entrada dos dados.
28/33
Vetores
Soluo
29/33
Vetores
Soluo (cont.):
O
fato de nem todas as posies do array terem sido utilizadas no um problema, desde que saibamos quantas foram utilizadas. A leitura das notas no poder ser realizada com o comando FOR, e sim com o comando WHILE. O nmero -99 um sinalizador de trmino de leitura, logo no deve ser armazenado no vetor.
30/33
Algoritmo
Variveis valor : vetor[1..30] de real; cont, i : inteiro; soma, media : real; Incio cont = 0; ler aux; enquanto aux <> -99 e cont < 30 faa [[ cont = cont + 1; valor[cont] = aux; ler aux; ]]; soma = 0; para i de 1 at cont faa soma = soma + valor[i]; media = soma / cont; escrever A mdia dos valores , media; Fim.
31/33
Soluo em Java
public static void main(String[] args) { double valor[] = new double[30]; int cont=0, i =0; double soma=0,aux =0, media=0; System.out.println("Digite o " + (cont +1) + " nmero:"); aux = Leia(aux); while ( (aux != -99) && (cont < valor.length) ) { valor[cont] = aux; cont = cont +1; if (cont < valor.length) { System.out.println("Digite o " + (cont +1) + " nmero:"); aux = Leia(aux); } } for (i=0; i <cont; i++) soma = soma + valor[i]; media = soma / cont; System.out.println("A mdia dos valores digitados : " + media); } 32/33
Vetores