Programação I
Aula 10
(Arrays)
Prof. Gilberto Irajá Müller
Última atualização 12/5/2009
Arrays
• Até o momento, utilizamos variáveis individuais, ou seja:
• Variáveis que contêm um valor de tipo primitivo (int, double,
boolean, char, ...) ou
• Variáveis objeto que apontam para UM objeto (associação)
Arrays
• Mas afinal de contas, o que é um Array?
Um array é uma estrutura de dados que permite
armazenar e acessar um conjunto de valores primitivos
ou apontar para um conjunto de objetos.
Um array é um objeto que guarda referências (aponta)
para um conjunto de dados primitivos ou um conjunto
de outros objetos
Arrays
• Sendo o array um objeto, sua criação consiste em três
etapas:
• A declaração da variável
• A criação do objeto
• A atribuição deste objeto à variável (referência). Nesta etapa
definimos o tamanho ou o número de elementos que irá conter
essa estrutura de dados
Ex.:
// Declara, cria e atribui um array que permitirá armazenar até 4
elementos do tipo int
int v[] = new int[4];
ou
int[] v = new int[4];
Vocês já utilizavam o array através do seguinte método:
public static void main(String[] args) ...
Arrays
• Sintaxe: nome do array[expressão inteira]
• Declarando passo-a-passo
Ex.:
// Declarando a variável v do tipo array de inteiros
int[] v;
// Criando o objeto array de inteiros com 4 elementos/posições
v = new int[4];
Uma outra analogia seria considerar a variável “v” como se fossem
quatro varíaveis do tipo inteiro com o mesmo nome. O acesso a
cada valor da variável se dá através de um índice. No exemplo
acima, o índice seria de 0 a 3.
Arrays
• Os índices em Java variam de 0 até o tamanho do array – 1. Dessa
forma, podemos imaginar o array “v” na memória:
Arrays
• Podemos fazer qualquer operação com os elementos de
um array que fazemos com outras variáveis que já
utilizamos. O java inicializa os objetos instanciados
ou tipos primitivos!
Ex.:
v[2] = -5;
v[0] = v[2] + 10;
int i = 3;
v[i] = v[i – 1] * 2;
Como ficariam os valores no diagrama?
Arrays
• Atribuindo valores ao inicializar um array
Ex.:
// Declara e cria o array v com os valores dados
int v[] = {2, 5, 4, -1};
// Outra maneira
int x = 4;
Teclado t = new Teclado();
int v[] = {x, t.leInt("Digite um inteiro: "), x + 8,
(int)(Math.random()*x)};
Arrays
• O atributo length
Todo objeto array possui um atributo só de leitura
(public final) de nome length que guarda o número
de elementos do array.
Qual a sua utilidade?
// Trecho que exibe o conteúdo de todo o array v
for (int i = 0; i < v.length; i++)
System.out.println(v[i]);
• Lembre-se: A instrução de repetição “for” é muito
utilizada quando o tema é array!
Arrays
• Exercício 10.1. Para cada posição, respectivamente,
grave os valores: 10, 11, 12 e 13 no array “v”
• Exercício 10.2. Exiba na tela os valores do array “v” do
índice mais alto para o índice mais baixo. Lembre-se:
precisa decrementar a variável do for.
• Exercício 10.3. Preencha cada posição do array “v” com
um valor aleatório.
Arrays
• Não ultrapasse os limites do array
Ao acessar o array, o valor do índice deve ser maior ou
igual a zero e menor do que length. Ultrapassando esse
limites, o Java reportará um chamado de erro
IndexOutOfBoundsException e encerrará o programa.
Ex.:
int vetor[] = {1, 2, 3, 4, 5};
for(int i = 0; i <= vetor.length; i++)
System.out.println(vetor[i]);
Observem que: o operador de
comparação “<=“ ocasionará o erro.
O correto seria “<“
Arrays
• Parâmetro do tipo array
Ao ser passado um array por parâmetro, será possível
acessar todos os seus elementos
• Lembre-se: O tamanho do array não precisa ser passado
por parâmetro porque todo array sabe seu tamanho
através do atributo length
Arrays
• Parâmetro do tipo array
Ex.:
OperaArrays ref = new OperaArrays();
int v[] = {-4, 6, 7, 2, 0, -1};
System.out.println(ref.achaMaior(v));
Qual a saída?
Observem que: O argumento da
chamada é apenas o nome do array
“v”.
Arrays
• Exercício 10.4. Escreva uma classe com apenas um
método que recebe dois arrays de tipo double, calcula
a média de cada um deles e devolve o menor valor das
duas médias
• Exercício 10.5. Escreva (em Java) apenas o trecho
(como se tivéssemos dentro do método main) que
chama o método implementado acima
Arrays
• Não confundir a passagem de um array (apenas a sua
referência) com a passagem de elementos de um array.
Ex.:
public int soma(int a, int b) { return a + b; }
// Estamos passando o elemento e não o array
int s = soma(v[2], v[3]);
Arrays
• Exercício 10.6. Escreva um método que recebe um array
int e um valor x, também int e devolve true se o valor x
existe no array. Caso contrário, false.
Arrays
• Um método pode retornar um tipo array
Exercício 10.7. Complete o método abaixo, que recebe
dois arrays de números inteiros a e b, e devolve um
terceiro array do tipo inteiro. Esse terceiro array, deverá
conter os elementos do array a e do array b.
public int[] montaArray(int a[], int b[]) {
}
Arrays
• Exercício 10.8. Escreva um método que recebe um array
de números inteiros e ordena seus elementos em ordem
crescente
Hot Topic - IMPORTANTE
• A maioria das linguagens permite escolher se queremos
passar um argumento por valor ou por referência em
um determinado método.
• Para o Java, toda a passagem de argumentos é feita por
valor.
• Contudo, se o argumento é do tipo primitivo, teremos
um comportamento diferente do argumento de
referência de um objeto.
Hot Topic - IMPORTANTE
• O que ocorrerá em memória?
Arrays
Assunto continuará....
Não percam!
Métodos
• Referências bibliográficas
• http://inf.unisinos.br/~anibal
Download

Nota de Aula