vetores programação em java prof. maurício braga
TRANSCRIPT
VetoresVetores
Programação em Java
Prof. Maurício Braga
2
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.
3
Vetores Considere o problema de ordenação de 3 valores
VariáveisA, B, C : inteiro;
Inícioler A;ler B;ler C;se A > B então
se B > C entãoescrever A, “ > “, B, “ > “, C
senãose A > C então
escrever A, “ > “, C, “ > “, Bsenão
escrever C, “ > “, A, “ > “, Bsenão
se B > C entãose A > C então
escrever B, “ > “, A, “ > “, Csenão
escrever B, “ > “, C, “ > “, Asenão
escrever C, “ > “, B, “ > “, A;Fim
4
Vetores
Agora considere o mesmo problema, porém, para ordenar de forma decrescente 10 números inteiros Este problema apresenta 3.628.800 resultados
diferentes Desconforto de trabalhar com 10 nomes de variáveis
diferentes É necessário o emprego de variáveis do tipo vetor
para a resolução deste problema.
5
Vetores
Vetor (ou array) é uma estrutura de dados composta por uma quantidade determinada de elementos de um mesmo tipo primitivo. Como armazena sempre dados do mesmo tipo
primitivo, diz-se que vetores são estruturas de dados homogêneas.
6
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.
7
Vetores
Armazenamento em memória
15A-7
15
23
A {Variável simples Vetor
8
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.
9
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ívelacessar posiçõesfora do intervalo
definido
10
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.: ler preco[10]; escrever preco[12];
11
Vetores
Exemplo: Uma prova de química foi feita por um grupo de 20 alunos. Faça
um algoritmo para ler as notas obtidas pelos alunos, e depois exibir um relatório de notas iguais ou superiores a 7,5 no seguinte formato:
Notas boas:
7.8
9.4
10.0
7.7
8.5
7.5
9.1
8.3
12
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.
13
Vetores Como fica o algoritmo:
Variáveiscont : 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 ”, cont, “ª nota: “; ler nota[cont];]];// imprime as notas acima de 7.5escrever “Notas acima de 7.5”;para cont de 1 até 20 faça
se nota[cont] >= 7.5 entãoescrever nota[cont];
14
Vetores em Java
Recebem o nome de Array.
Para criar um array, 3 passos são necessários: Declaração; Construção; Inicialização.
15
Vetores em Java
A construção é feita com o operador new. int vetor[ ] = new int[10];
Para inserirmos elementos, precisamos indicar a posição no array onde eles serão inseridos: vetor[0] = 34; vetor[1] = 27;
16
Vetores em Java
Não se especifica o tamanho do array na declaração: int vetor[ ]; // declaração do array
Isso deve ser feito apenas na construção: vetor = new int[10]; // construção do array
17
Vetores em Java
Os índices em um array em Java começam em 0. 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 arr[ ] = new int[10]; for(int i = 0; i < arr.length; i++) { System.out.println("array[" +i + "] = " +arr[i]);}
18
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
20
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";
21
Vetores em Java
Como ficaria o exemplo anterior escrito em Java?
22
Solução em Javapublic static void main(String[] args) {
double nota[];nota = new double[20];for (int i=0; i < nota.length;i++) {
System.out.println("Digite a " + (i+1) + "ª nota");nota[i] = Leia(nota[i]);
}System.out.println("Notas acima de 7.5");for (int i=0; i < nota.length;i++) {
if (nota[i]>=7.5) System.out.println(nota[i]);
}}
23
Vetores em Java
Modifique o programa anterior para que o mesmo use while no lugar do For.
24
Vetores
Exercício: Faça um algoritmo para ler no máximo 30 números reais
informados pelo usuário, e exibir depois a média destes números. Considere que o valor -99 encerra a entrada dos dados.
25
Vetores
Solução Devemos cria um vetor de 30 posições para armazenar os
números. Mas o usuário pode fornecer menos que 30 números, e aí?
26
Vetores
Solução (cont.): O fato de nem todas as posições do array terem sido
utilizadas não é um problema, desde que saibamos quantas foram utilizadas.
A leitura das notas não poderá ser realizada com o comando PARA, e sim com o comando ENQUANTO.
O número -99 é um sinalizador de término de leitura, logo não deve ser armazenado no vetor.
27
AlgoritmoVariáveis
valor : vetor[1..30] de real;cont, i : inteiro;soma, media : real;
Iníciocont = 0;ler aux;enquanto aux <> -99 e cont < 30 faça [[ cont = cont + 1; valor[cont] = aux; ler aux;]];soma = 0;para i de 1 até cont faça soma = soma + valor[i];media = soma / cont;escrever “A média dos valores é “, media;
Fim.
28
Solução em Javapublic static void main(String[] args) {
double valor[] = new double[30];int cont=0, i =0;double soma=0,aux =0, media=0;aux = Leia(aux);
while ( (aux != -99) && (cont < valor.length) ) {valor[cont] = aux;cont = cont +1;
aux = Leia(aux);}for (i=0; i <cont; i++)
soma = soma + valor[i];media = soma / cont;System.out.println("A média é: " + media);
}
29
Vetores em Java
Modifique o programa anterior para que o mesmo use apenas while e armazene o valor -99 no vetor, utilizando-o como indicativo do término dos dados no vetor.
30
Vetores
Exercícios: Num concurso público, um candidato respondeu a uma avaliação com
30 questões numéricas, onde cada questão admitia respostas de 0 até 99. Faça um algoritmo para ler o gabarito da prova e as respostas do aluno, informando quantas questões ele acertou.
Faça um algoritmo para ler 50 valores reais e armazenar em um vetor. Modifique o vetor de modo que os valores das posições ímpares sejam aumentadas em 5%, e os das posições pares sejam aumentados em 2%. Imprima depois o vetor resultante.
31
Vetores
Exercícios: Escreva um programa que leia dois vetores inteiros de 20 posições e
efetue as respectivas operações indicadas em um terceiro vetor (também lido junto ao usuário), armazenando o resultado em um quarto vetor. Considere o seguinte código: 1 – adição, 2 – subtração, 3 – multiplicação e 4 – divisão.
Escreva um programa que leia um vetor com 20 valores inteiros e o coloque em ordem crescente.
32
Solução problema 1public static void main(String[] args) {
int[] questoes = new int[10];int[] gabarito = new int[] {1,2,3,4,5,6,7,8,9,10};int soma = 0, cont = 0, aux = 0;while (cont < questoes.length ) { aux = Leia(aux); questoes[cont] = aux; cont = cont +1;}cont = 0;while (cont < questoes.length ) { if (questoes[cont] == gabarito[cont])
soma = soma +1; cont = cont +1;}System.out.println("O número de acertos foi: " + soma);
}
33
Solução problema 2public static void main(String[] args) {
double valor[] = new double[50];int i=0;double aux =0;
// Lê os valores e preenche o vetorwhile (i < valor.length) {
System.out.println(“Digite o " +(i+1) + “º termo:");aux = Leia(aux);valor[i] = aux;i = i +1;
}
34
Solução problema 2// aumenta os valores ímpares em 5% e os
// pares em 2%.
for (i=0; i < valor.length; i++) {
if ((i+1)%2 ==0)
valor[i]=valor[i]*1.02;
else
valor[i]=valor[i]*1.05;
}
// imprime o vetor
for (i=0; i < valor.length; i++)
System.out.println((i+1)+"º termo = "+valor[i]);}
VetoresVetores
Programação em Java
Prof. Maurício Braga