Você está na página 1de 40

Arrays

Versão 2.0
O que é um array?
Array
•  Um array é uma coleção ordenada de valores
•  Os valores podem ser primitivos, objetos ou
outros arrays
•  Todos os valores de um array devem ser do
mesmo tipo
•  Um array é um objeto!
Array
•  São armazenados em uma localização de memória
contínua
•  Cada localização pode ser referenciada
individualmente através do seu índice
•  Isto significa que, por exemplo, é possível
armazenar 5 valores do tipo int em um array sem
precisar declarar 5 variáveis
4
Exemplo Matriz Unidimencional
•  Uma declaração para array em Java é:

type [elements] name;

int[] billy = new int[5];

5
Inicializando Matrizes
•  Quando declaramos um array ele será
inicializado, porém seu conteúdo permanecerá
indeterminado até definirmos um

int[] billy = {16, 2, 77, 40, 12071};

6
Array Exemplos
byte b;

byte[] arrayOfBytes;

byte[][] arrayOfArrayOfBytes;

Conta[] contas; //array de Conta

7
Criando um array
•  Arrays não precisam ser inicializados no ato de sua
criação
–  Precisa especificar o tamanho

•  Arrays tem tamanho fixo:


–  Uma vez criado, não pode crescer ou diminuir
–  Cada posição é inicializada com valor default do tipo
do array
byte[] buffer = new byte[1024];
String[] lines = new String[50];
8
Acessando um array
•  Em qualquer ponto do programa que o array for
visível é possível acessar o valor dos elementos
individualmente

–  billy [2] = 75;


–  a = billy[2];
–  billy[0] = a;
–  b = billy[a+2];
–  c = billy[2]+5;

9
Tamanho do array
•  Acessando o tamanho de um array
– Através do atributo length
– length é um atributo constante (final) e
public de todo objeto array

Conta[] contas = new Conta[1];


if(contas.length != 2){
...
}

10
Visualizando um array
int[] values = new int[100];
for(int i = 0; i < values.length; i++){
values[i] = i*2;
}

int[] powersOfTwo = {1, 2, 4, 8, 16, 32, 64};

11
Exercício
•  Faça uma função que calcule o somatório de
todos os elementos da matriz

12
Mais Exercícios
•  Dada uma sequencia de n números
armazenados em uma matriz, imprima-os na
ordem inversa a da leitura

14
Mais Exercícios
•  Fazer um programa ler um vetor de inteiros e
positivos e imprimir quantas vezes aparece o
número 1, 3 e 4, nesta ordem. O vetor terá no
máximo 30 posições.

16
Matrizes Multidimencionais
•  Podem ser descritos como matriz de matrizes
•  Uma matriz bidimencional pode ser imaginada
como uma tabela de elementos
int[][] jimmy = new int[3][5];

18
Exemplo
jimmy[1][3];

19
Matrizes Multidimencionais
•  Matrizes não são limitadas a dois índices
– Exemplo, duas dimensões
•  Eles podem conter quantos índices forem
necessário
•  Cuidado porque a memória pode ser consumida
char[][][][][] century = new char [100][365][24][60][60];
//Consome 3Gb da memory

20
Inicializando Matrizes Multid.
char PT = ‘*’;
char v[][] = {{PT,PT,PT},{PT,PT,PT},{PT,PT,PT}};

// Inicialize a matriz abaixo:


int[][][] tresd = new int[3][2][4];

21
Inicializando Matrizes Multid.

int [][][] tresd = {


{{1,2,3,4},{5,6,7,8}},

{{7,9,3,2},{4,6,8,3}},

{{7,2,6,3},{0,1,9,4}}
};

22
Mais detalhes
•  Matrizes multidimensionais são apenas uma
abstração para programadores
•  É possível obter o mesmo resultado com uma
matriz simples

int[][] jimmy = new int[3][5]; //é equivalente

int[] jimmy = new int[15]; //(3*5) = 15

23
Array bidimensional, exemplo
int[][] pontos = { {10,10},
{10,20},
{20,10},
{20,20}};

int[][] pontos = new int[4][2];


for(int i = 0; i < 4; i++)
for(int j = 0; j < 2; j++)
pontos[i][j] = in.nextInt(); 24
25
Declaração de arrays multimensionais
float[][][] globalTemperatureData = new float[360][][100];

float[][][] globalTemperatureData = new float[][180][100];

// vai compilar?

26
Arrays multimensionais não retangulares

•  Em Java, arrays multidimensionais são


considerados arrays de arrays
•  Diferente de outras linguagens, que consideram
arrays como arrays de blocos idênticos
int[][] produtos = {{0}
{0,1},
{0,1,2,3},
{0,1,2,3,4}};

27
Exercício
•  Dado dois vetores, A (5 elementos) e B (8
elementos), faça um programa que imprima
todos os elementos comuns aos dois vetores.

28
Mais Exercícios
•  Suponha um vetor A com 10 elementos e outro
vetor B com 10 elementos. Faça um programa
em C++ que calcule o produto escalar P de A por
B. (Isto é, P = A[0]*B[0] + A[1]*B[1] +
... A[N]*B[N]).

29
Arrays como argumentos
•  Arrays podem ser passados como parâmetro
para funções
•  Em Java não é possível passar o bloco de
memória inteiro
•  É possível passar o endereço da matriz
void procedure(int[] arg) //parâmetro
int[] myarray = new int[40]; //declarando a matriz
procedure(myarray);//chamada da função

30
Arrays como argumentos
•  O nome de um array desacompanhado de
colchetes representa o endereço de memória
onde o array foi armazenado
•  O nome de uma variável simples representa o
valor nela contido
•  O nome de um array representa seu endereço de
memória
32
Passagem por referência
•  As matrizes são consideradas um tipo de dado
bastante grande
•  Em Java existe apenas uma única cópia do array
na memória
•  Sendo assim, os valores não são passados os
valores contidos no array, somente seu
endereço de memória
33
Passagem por referência
•  O que ocorre quando o endereço de um array é
passado para uma função como argumento?
•  A função usa o endereço para acessar os
elementos do próprio array
•  As alterações que forem feitas no array pela
função afetarão o array original

34
Exercício
•  Fazer um programa para ler 20 notas (inteiros e
positivos) e calcular a média. Imprimir também
o maior.
•  Utilize a matriz na passagem de parâmetro para
função de calculo

36
Sequencia de caracteres
•  O uso mais comum de array unidimensionais é
como string de caracteres
•  Em Java, uma String é definida como um array
de caracteres que é terminada por um nulo
•  Um nulo é especificado como ‘\0’ e geralmente
é zero

37
Exemplo
char [] jenny = new char[20];

char[] jenny = {‘H’,‘e’,’l’,’l’,’o’,’\0’}

38
Exercício

39
Exercício 1/3

41
Exercício 2/3

42
Exercício 3/3

43
Coleção de contas com array
•  Crie uma classe que guarda as contas num array de contas
–  Repositório ou conjunto de contas
–  Atributos: Array de conta e Índice
•  Crie o construtor
•  Crie os métodos para inserção, procura e remoção dos
objetos
•  Crie os métodos para creditar e debitar valores das contas
do array
43
44
Classe principal

45

Você também pode gostar