Você está na página 1de 25

Vetores

Programao em Java
Prof. Maurcio Braga

Vetores

At agora sempre utilizamos variveis definidas a partir de tipos


bsicos de dados.

Existem situaes em que necessrio armazenar uma grande


quantidade de dados na memria ao mesmo tempo.

Cada varivel s capaz de armazenar um dado por vez.

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/25

Vetores

Considere o problema de ordenao de 3 valores


Variveis
A, B, C : inteiro;
Incio
ler A;
ler B;
ler C;
se A > B ento
se B > C ento
escrever A, > , B, > , C
seno
se A > C ento
escrever A, > , C, > , B
seno
escrever C, > , A, > , B
seno
se B > C ento
se A > C ento
escrever B, > , A, > , C
seno
escrever B, > , C, > , A
seno
escrever C, > , B, > , A;
Fim
3/25

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/25

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/25

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/25

Vetores

Armazenamento em memria

15

-7
15
23

Vetor

Varivel simples
7/25

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

posio denominada ndice.


Os vetores so tambm chamados de variveis
indexadas unidimensionais.

8/25

Vetores

No possvel
acessar posies
fora do intervalo
definido

Sintaxe para declarao de um vetor:


<var> : vetor[<inicio>..<fim>] de <tipo>;

Sintaxe para referenciao de uma posio:


<nome_vetor>[<posicao>];

Suponha que necessrio armazenar 100 preos de produtos de


uma loja.
Declarao:
preco : vetor[1..100] de real;

Referenciao:

preco[1] = 32.50;
9/25

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.

Ex.: ler preco[10]; escrever preco[12];

10/25

Vetores em Java

Recebem o nome de Array.

Para criar um array, 3 passos so necessrios:


Declarao;
Construo;
Inicializao.

11/25

Vetores em Java

A construo feita com o operador new.

int vetor[ ] = new int[10];

Os ndices em um array em Java comeam em 0.

Para inserirmos elementos, precisamos indicar a


posio no array onde eles sero inseridos:

vetor[0] = 52;
vetor[1] = -28;

12/25

Vetores em Java

No se especifica o tamanho do array na


declarao:
int

vetor[ ]; // declarao do array

Isso deve ser feito apenas na construo:


vetor

= new int[10]; // construo do array

13/25

Vetores em Java

v[0]

Exemplo:

v[1]

int[]

v = new int[10];
v[0] = 34;
v[1] = 27;
v[2] = 18;
v[3] = -78;
v[4] = 1534;

v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
14/25

v[9]

34
27
18
-78
1534

Vetores em Java

No possvel acessar alm dos limites em um array.

Para sabermos o tamanho de um array, podemos usar a


varivel length:
Ex:

int v[ ] = new int[10];


for(int i = 0; i < v.length; i++) {
System.out.println("array[" +i + "] = " +v[i]);
}

15/25

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/25

Inicializao automtica de um Array


Tipo
byte
int
float
char

valor
0
0
0.0f
'\u0000'

Referncias recebem null

tipo
short
long
double
boolean

valor
0
0L
0.0d
false

Vetores em Java

A declarao, construo e inicializao do


array tambm pode ser feita de uma vez s:
String

frutas[ ] = {"Uva", "Melancia","Pssego"};

cdigo equivalente a:
String

frutas[ ] = new String[3];


frutas[0] = "Uva";
frutas[1] = "Melancia";
frutas[2] = "Pssego";

18/25

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 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
19/25

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/25

Vetores

Como fica o algoritmo:

Variveis
cont : inteiro;
nota : vetor[1..20] de real;
Incio
// L as notas e armazena no vetor
para cont de 1 at 20 faa
[[
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 faa
se nota[cont] > 7.5 ento
escrever nota[cont];
21/25

Soluo 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.nexDouble();
}
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/25

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.

23/25

Soluo
public static void main(String[] args) {
int[] questoes = new int[30];
int[] gabarito = new int[30];
int soma = 0;
Scanner s = new Scanner(System.in);
for (int i = 0;i < questoes.length; i++ ) {
System.out.println("Digite a " +(i+1) + " resposta");
questoes[i] = s.nextInt();
}
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);
}
24/25

Vetores

Programao em Java
Prof. Maurcio Braga