Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
Pgina 1
JAVA Arrays
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.
Pgina 2
JAVA Arrays
Existem alguns mtodos que podem ser usados para objetos do tipo array, mas sero vistos mais adiante no curso.
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
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} };
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