Vetores Programação em Java Prof. Maurício Braga.

35
Vetores Vetores Programação em Java Prof. Maurício Braga

Transcript of Vetores Programação em Java Prof. Maurício Braga.

Page 1: Vetores Programação em Java Prof. Maurício Braga.

VetoresVetores

Programação em Java

Prof. Maurício Braga

Page 2: Vetores 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.

Page 3: Vetores Programação em Java Prof. Maurício Braga.

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

Page 4: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 5: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 6: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 7: Vetores Programação em Java Prof. Maurício Braga.

7

Vetores

Armazenamento em memória

15A-7

15

23

A {Variável simples Vetor

Page 8: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 9: Vetores Programação em Java Prof. Maurício Braga.

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

Page 10: Vetores Programação em Java Prof. Maurício Braga.

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];

Page 11: Vetores Programação em Java Prof. Maurício Braga.

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

Page 12: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 13: Vetores Programação em Java Prof. Maurício Braga.

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];

Page 14: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 15: Vetores Programação em Java Prof. Maurício Braga.

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;

Page 16: Vetores Programação em Java Prof. Maurício Braga.

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

Page 17: Vetores Programação em Java Prof. Maurício Braga.

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]);}

Page 18: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 19: Vetores Programação em Java Prof. Maurício Braga.

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

Page 20: Vetores Programação em Java Prof. Maurício Braga.

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";

Page 21: Vetores Programação em Java Prof. Maurício Braga.

21

Vetores em Java

Como ficaria o exemplo anterior escrito em Java?

Page 22: Vetores Programação em Java Prof. Maurício Braga.

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]);

}}

Page 23: Vetores Programação em Java Prof. Maurício Braga.

23

Vetores em Java

Modifique o programa anterior para que o mesmo use while no lugar do For.

Page 24: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 25: Vetores Programação em Java Prof. Maurício Braga.

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í?

Page 26: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 27: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 28: Vetores Programação em Java Prof. Maurício Braga.

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);

}

Page 29: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 30: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 31: Vetores Programação em Java Prof. Maurício Braga.

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.

Page 32: Vetores Programação em Java Prof. Maurício Braga.

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);

}

Page 33: Vetores Programação em Java Prof. Maurício Braga.

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;

}

Page 34: Vetores Programação em Java Prof. Maurício Braga.

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]);}

Page 35: Vetores Programação em Java Prof. Maurício Braga.

VetoresVetores

Programação em Java

Prof. Maurício Braga