You are on page 1of 5

Ttulo: Introduo Linguagem Java

Data: 24/1/2011
Descrio: Vetores

Introduo
Antes de iniciarmos vale relembrar que o seu aprendizado depende muito da qualidade do seu
estudo, com isto importante dizer que: Os exerccios so parte importante da sedimentao do
seu conhecimento.
Durante o texto as palavras array e vetores sero utilizadas sempre com o mesmo significado
(estruturas de dados seqenciais).
Uma coleo nada mais do que um conjunto de elementos contidos em uma nica estrutura
em Java um objeto cuja funo oferecer meios de armazenar, disponibilizar, remover,
localizar e percorrer o seu contedo.
Colees so estruturas de dados que agrupam elementos que formam um grupo natural como por
exemplo: baralho (conjunto de cartas), time (conjunto de jogadores), turma (conjunto de alunos) e
etc.
A seguir conceituaremos superficialmente os tipos de colees mais comuns:
Vetor: formado por um grupo de elementos acessados atravs do seu ndice;
Pilha: Estrutura de dados onde o ltimo elemento a ser inserido na coleo o primeiro a ser
retirado (Baseado no princpio LIFO, Last in, first out);
Fila: Coleo onde a ordem de insero representa a ordem de sada dos elementos
(Baseado no princpio FIFO, First in, first out);
rvores: Estrutura de dados que garante a ordenao dos elementos que a compe;
Cada uma das estruturas de dados apresentadas possui caractersticas que as diferenciam quanto
a:
Eficincia de busca;
Eficincia de insero;
Organizao;
Ordenao;
Forma de acesso;
Forma de busca e;
Forma de insero.

DANIEL DE CAMARGO

JAVA

Arrays Unidimensionais
A forma mais eficiente de trabalhar com colees de elementos em Java atravs da construo de
vetores (arrays). Em Java, arrays so objetos que armazenam mltiplas variveis do mesmo tipo ou
do mesmo sub-tipo (sub-tipo? No se preocupe por enquanto com isto).
Observe que apesar da sua eficincia, normalmente, para armazenar dados ns utilizamos
estruturas de dados mais flexveis j existentes na linguagem, mais especificamente, no Framework
Collections (assunto a ser abordado em mais detalhes durante este curso) ao invs de arrays.
Um array um objeto que armazena um nmero pr-definido de elementos, isto , o seu tamanho
definido no momento da sua construo. Seus elementos so acessados atravs de ndices que
iniciam-se sempre por 0 (zero), ou seja, um array de tamanho quatro ter ndices 0, 1, 2 e 3.
Em Java existem diversas formas de declarar, construir e inicializar arrays e a melhor forma de
utilizar estas estruturas de dados conhecendo como so realizadas cada uma destas etapas.
A seguir apresentaremos cada uma destas etapas e a forma como elas acontecem na prtica:
1. Declarao: Etapa em que a referncia do array declarada;
2. Construo: Aqui definido o tamanho e instanciado o array;
3. Inicializao: Os elementos so inseridos no array
Abaixo temos um exemplo com todas as etapas bem definidas:
int[] jogoSena; //Declarao
jogoSena = new int[6]; //Criao
jogoSena[0]
jogoSena[1]
jogoSena[2]
jogoSena[3]
jogoSena[4]
jogoSena[5]

=
=
=
=
=
=

23;
12;
55;
02;
07;
19;

//Inicializao
//Inicializao
//Inicializao
//Inicializao
//Inicializao
//Inicializao

da
da
da
da
da
da

posio
posio
posio
posio
posio
posio

0
1
2
3
4
5

Neste caso estamos criando um vetor de inteiros (int), perceba que a declarao da varivel
ocorre na linha 1, na seqencia temos a criao do vetor (linha 3) e por ltimo a inicializao de
cada uma das suas posies.
Existem formas mais enxutas de efetuarmos as mesmas etapas mostradas no exemplo anterior.
Podemos declarar, construir e inicializar em apenas uma linha da seguinte forma:
int[] outroJogoSena = {23, 12, 55, 02, 07, 19};

No exemplo acima, acontecem quatro coisas em apenas uma linha:


I. Declarao de uma referncia a um array de inteiros chamado outroJogoSena;
II. Criao de um array com seis posies;
DANIEL DE CAMARGO

JAVA

III.Inicializao das posies com os valores 23, 12, 55, 02, 07 e 19;
IV. Atribuio do novo objeto (array) a referncia outroJogoSena;
O outro atalho que a linguagem Java nos permite o seguinte:
int[] outroJogoSena = new int[]{23, 12, 55, 02, 07, 19};

Em ambos os casos todas as etapas continuam sendo executadas (declarao, construo e


inicializao).
Certo, mas qual o tamanho destes arrays? Quando criamos arrays desta maneira quantidade
mxima de elementos que o array ir armazenar ser igual quantidade de elementos com que ele
foi inicializado, isto , em ambos os casos os arrays seriam suficientes para armazenar at 6
elementos. Caso haja necessidade de mais espao um novo array deve ser construdo.
Para conhecer o tamanho total de um array basta voc acessar o atributo length. Este atributo
retorna um valor inteiro (int) que indica qual a capacidade mxima de armazenamento deste array.
Lembretes:
Primeira posio (ndice): de qualquer array sempre 0;
ltima posio (ndice): sempre o seu tamanho 1 (length - 1).
Exemplo Resolvido - 01
Implemente a lgica para realizao de saques em um caixa eletrnico considerando que o mesmo
armazena cdulas de R$100,00, R$50,00, R$20,00, R$10,00, R$5,00,
R$2,00 e R$1,00 e
devem ser entregues ao cliente o menor nmero possvel de cdulas.
Soluo:
import java.util.Scanner;
public class CaixaEletronico {
public static void main(String[] args) {
Scanner s = new Scanner (System.in);
//Cedulas disponiveis no caixa eletronico
int[] cedulas = {100, 50, 20, 10, 5, 2, 1};
//Quantidade total de cedulas entregues ao cliente
int quantidadeTotal = 0;
//declarao da varivel
int valorReais = 0;
//Pedindo ao usurio digitar um valor inteiro
System.out.println("Valor a ser sacado");
//valor a ser sacado pelo cliente
valorReais = s.nextInt();
//Percorrendo todas as cedulas disponiveis no caixa eletronico
for(int i = 0; i < cedulas.length; i++){
//Quantidade de cedulas para o valor cedulas[i]
int quantidadeCedulas = valorReais/cedulas[i];

DANIEL DE CAMARGO

JAVA

//Impressao da quantidade de cedulas


System.out.println("Quantidadde de cedulas de "+ cedulas[i] + ": "
+quantidadeCedulas );
//Resto da divisao
valorReais %= cedulas[i];
//Quantidade total de cedulas entregues ao cliente
quantidadeTotal += quantidadeCedulas;
}
//Impressao
System.out.println("Quantidade total: "+quantidadeTotal);
}

}
Exemplo Resolvido 02
Implemente um algoritmo que ordene um array com 10 nmeros inteiros. O algoritmo deve efetuar
uma comparao de cada elemento com o seu sucessor e se a ordem no for crescente os
elementos devem ter suas posies trocadas, este processo deve se repetir at que o array
esteja ordenado.
public class OrdenarArray {
public static void main(String[] args) {
int[] arrayInteiros = {55, 27, 33, 45, 92, 100, 3, 8, 11, 70};
boolean estaOrdenado = false;
while(!estaOrdenado){
estaOrdenado = true;
for(int i = 1; i < arrayInteiros.length; i++)
{
if(arrayInteiros[i-1] > arrayInteiros[i])
{
estaOrdenado = false;
int aux = arrayInteiros[i];
arrayInteiros[i] = arrayInteiros[i-1];
arrayInteiros[i-1] = aux;
System.out. println("Ordem atual: "+
arrayInteiros[0]+ " " + arrayInteiros[1]+" "+
arrayInteiros[2]+ " " + arrayInteiros[3]+" "+
arrayInteiros[4]+ " " + arrayInteiros[5]+" "+
arrayInteiros[6]+ " " + arrayInteiros[7]+" "+
arrayInteiros[8]+ " " + arrayInteiros[9]);
}
}
}
}

Exerccios
DANIEL DE CAMARGO

JAVA

1) Crie um programa que percorra um array de 10 posies e imprima o seu contedo.


2) Escreva um programa que some todos os valores contidos em um array de inteiros e calcule a
mdia.
3) Desenvolva um programa que dado um array de 10 nmeros inteiros multiplique o primeiro
elemento pelo seguinte, o resultado deve ento ser multiplicado pelo prximo elemento at
que todos os elementos sejam percorridos. Imprima o valor final.
4) Faa um programa que inverta as posies de um array com 10 elementos

DANIEL DE CAMARGO

JAVA