Anda di halaman 1dari 5

JAVA Arrays

Conceitos tericos:
Um array (vetor) uma organizao de elementos homogneos (mesmo tipo e nome). muito comum o uso de arrays em programao pela facilidade oferecida na manipulao e armazenamento de informaes. Suponha que voc precise armazenar a idade de 10 pessoas. Se no existissem arrays, a nica possibilidade era criar uma varivel para armazenar cada uma das idades:
int idade1; int idade2; . . . int idade10;

Programar desta forma difcil e gera muitos controles e tarefas desnecessrias. Com um array podese definir uma estrutura capaz de armazenar n elementos do mesmo tipo e que sero associados a um mesmo nome.
18
Idade 0

35
Idade 1

40
Idade 2

37
Idade 3

43
Idade 4

58
Idade 5

19
Idade 6

6
Idade 7

28
Idade 8

55
Idade 9

Repare que o que indica qual das n idades estamos nos referenciando, a posio (ndice) do elemento. Assim, a posio 3 permite acesso ao nmero 37 e assim por diante. Em JAVA a numerao dos elementos de um vetor comea a partir de zero (0), logo, para um vetor de 10 elementos, o ltimo elemento fica armazenado na posio 9.

Declarao de arrays em JAVA:


Os elementos pertencentes a um array podem ser manipulados como qualquer outra varivel (pode-se atribuir valores, us-los em expresses, comparaes e pass-los como parmetros de uma funo). Para se definir um array usa-se a seguinte sequncia de comandos:
int[] listaid; listaid = new int[10]; // // // // foi criada uma varivel chamada listaid que do tipo array de inteiros atravs o operador new foi feita a associao da varivel com o array

Quando um array criado, ele automaticamente preenchido com zeros (array numrico), false (array booleano), zero Unicode (array de caracteres) ou null (array de Strings). No faz muito sentido criar um array, se o mesmo no for processado, ou seja, armazenar dados em cada elemento e process-los da forma necessria. A carga de um array pode ser feita na sua criao, atravs de entrada pelo teclado, ou algum processamento qualquer.

Profa. Solange Duarte Palma de S Barros

Pgina 1

JAVA Arrays

Carga de um array atravs de inicializao:


Neste tipo de carga, no momento da criao do array, so informados os valores que sero armazenados em cada elemento (e que devem ser compatveis com o tipo do array). Por exemplo:
int[] listaid; listaid = new int[10] {18,35,40,37,43,58,19,6,28,55};

Graficamente temos: listaid 10 18 35 40 37 43 58 19 6 28 55

O primeiro elemento (marcado em cinza) no se refere a uma idade, mas sim, informao correspondente ao tamanho do array (length), que neste caso igual a 10. Esta informao sempre acompanha a declarao de um array para que o mesmo seja manipulado corretamente. Por exemplo, caso se queira fazer a soma de todas as idades:
int soma = 0; for (int i=0;i<listaid.length;i++) { soma+=listaid[i]; } System.out.println(Soma de todas as idades = + soma);

Para no haver acontecer nenhum tipo de erro durante a execuo de um programa que processa um array deve-se assegurar que os valores do ndice estaro sempre entre o intervalo 0...array.length.

Profa. Solange Duarte Palma de S Barros

Pgina 2

JAVA Arrays

Carga de um array atravs de entrada de dados:


A entrada de dados poder ser feita de vrias formas: digitao, atribuio (clculos, sorteio randmico), etc. Em qualquer um dos casos ser necessria a construo de um lao for (ou outro), que faa a variao do ndice de 0 at o final do array (array.length). Veja este exemplo:
public class Teste1 { public static void main (String[] args) { int[] nros; nros = new int[10]; System.out.println("Sero sorteados 10 nmeros e armazenados no vetor"); for (int i=0;i<nros.length;i++){ nros[i]=(int)(100*Math.random()); } System.out.println("Veja os nmeros sorteados"); for (int i =0;i<nros.length;i++){ System.out.print(nros[i] + " "); } } }

Existem alguns mtodos que podem ser usados para objetos do tipo array, mas sero vistos mais adiante no curso.

Arrays bidimensionais (matrizes):


As matrizes nada mais so do que um arranjo de elementos homogneos em duas dimenses. Para que este conceito fique mais claro, imagine a seguinte situao: uma loja faz o controle mensal de vendas de seus 5 vendedores. Para isso, organizou os totais das vendas em uma tabela da seguinte forma: Jan Vend1 500 Vend2 400 Vend3 300 Vend4 200 Vend5 500 Fev 250 300 600 650 750 Mar 600 200 500 700 800 Abr 700 200 1000 800 500 Mai 180 380 500 1000 600 Jun 1000 500 280 300 400 Jul 300 500 400 1500 800 Ago 450 550 750 500 250 Set 800 400 1000 400 300 Out 280 180 500 850 180 Nov 700 800 300 200 1000 Dez 3000 2000 1500 2000 1000

Com os dados organizados desta forma, possvel se fazer uma srie de controles, como por exemplo, o ms de maior e menor venda ou o vendedor que mais vendeu. Em uma matriz, os dados so Profa. Solange Duarte Palma de S Barros Pgina 3

JAVA Arrays

organizados no formato de uma tabela e para serem acessados, deve-se informar o valor da linha (qual vendedor?) e da coluna (qual ms?). Muitas aplicaes, inclusive jogos, fazem uso de matrizes (um exemplo conhecido o tradicional jogo da velha) e as linguagens de programao fornecem meios para declarar, preencher e processar tais arrays. Em Java, uma matriz pode ser declarada como um vetor de vetor. Ou seja, a matriz definida como um vetor onde cada um de seus elementos outro vetor. Esta declarao pode ser feita da seguinte forma:
int[][] vendas; vendas = new int[5][12];

Estes comandos criam um vetor de vetor de duas dimenses, vendas, que 5 x 12, tendo 5 linhas e 12 colunas para se armazenar os dados do exemplo anterior. Isso significa que vendas um vetor de 5 elementos onde cada elemento um outro vetor de 10 elementos. Se referenciarmos vendas[3], estamos referenciando todas as vendas da linha 3: 200 650 700 800 1000 300 1500 500 400 850 200 2000

Se referenciarmos no programa a clula vendas[3][7], estamos referenciando o valor R$500,00 (linha 3 e coluna 7). Lembre-se que a numerao sempre inicia na posio zero (0). Para se manipular esta estrutura utilizam-se dois ndices: um para acessar as linhas e outro para as colunas. Veja o exemplo:
int soma = 0; for (int i=0;i<vendas.length;i++){ for (int j=0;j<vendas[i].length;j++) { soma+=vendas[i][j]; } } System.out.println (Total Geral das vendas: + soma);

O trecho acima refere-se soma de todas as vendas de todos os vendedores ao longo de um ano. Quando a varivel i recebe um determinado valor (zero na primeira passagem), exista a variao de j, que vai de zero at o tamanho mximo (length) de cada vetor i. Graficamente, esta variao pode ser assim representada: i 0 0 ... 0 1 1 ... 1 2 j 0 Fixa i em zero e inicia a variao de j 1 ... 11 0 Soma um em i e recomea a variao de j 1 ... 11 0 E assim por diante... Pgina 4

Profa. Solange Duarte Palma de S Barros

JAVA Arrays

A carga de uma matriz pode ser feita da mesma forma que feita em vetores:
int[][] nros; nros = new int[3][4]{{ 1, 7, 15, 5}, { 0, 2, 8, 3}, { 3, 6, 10, 9} };

Esta carga resultaria em: 1 0 3 7 2 6 15 8 10 5 3 9

Passagem de Array como parmetro:


Um array pode ser passado como parmetro para uma sub-rotina/funo. Veja o exemplo:
int[] listaid; listaid = new int[10] {18,35,40,37,43,58,19,6,28,55}; int result = somaid(listaid); System.out.println(Soma das Idades: + result); . . . static int somaid(int[] idades) { soma=0; for (int i=0;i<idades.length;i++) soma+=idades[i]; return soma; }

Neste exemplo o vetor listaid foi passado para a rotina somaid como parmetro. Na rotina, foi feita a soma de todas as idades armazenadas no vetor (repare que apesar do nome do vetor ter sido modificado na rotina somaid, os valores so os mesmos de listaid). O valor da soma retornado e armazenado na varivel result. E o que acontece se os valores armazenados no vetor, forem modificados na sub-rotina?
int[] listaid; listaid = new int[10] {18,35,40,37,43,58,19,6,28,55}; muda(listaid); for (int i =0;i<listaid.length;i++){ System.out.print(listaid[i] + " "); . . . static void muda (int[] idades){ for (int j =0;j<idades.length;j++){ idades[j]=idades[j]-5; } }

Mesmo sem ter feito nenhum tipo de retorno, os valores do vetor aps a chamada da rotina mudam, que foram modificados para {13,30,35,32,38,53,14,1,23,50}. A passagem de vetores como parmetros funcionam como uma passagem por referncia. Profa. Solange Duarte Palma de S Barros Pgina 5