Vous êtes sur la page 1sur 12

Mdulo 1

Introduo Programao I
Lio 7
Array em Java
Verso 1.0 - Jan/2007
JEDI
TM
Autor
Florence Tiu Balagtas
Equipe
Joyce Avestro
Florence Balagtas
Rommel Feria
Reginald utc!erson
Re"ecca #ng
Jo!n Paul Petines
$ang $!in
Rag!avan $rinivas
Matt!e% T!om&son
Necessidades para os Exerccios
Sistemas Operacionais Suportados
NetBeans !E "#" &ara os seguintes sistemas o&eracionais'
() Microso*t +indo%s ,P Pro*issional $P- ou su&erior
-) Mac #$ , (.)/)0 ou su&erior
1) Red at Fedora 2ore 1
/) $olaris3 (. #&erating $ystem 4$PAR25 e 678968/ Plat*orm Edition:
NetBeans Enterprise $ac%; &oder< ser e6ecutado nas seguintes &lata*ormas'
() Microso*t +indo%s -... Pro*issional $P/
-) $olaris3 7 #$ 4$PAR2 e 678968/ Plat*orm Edition: e $olaris = #$ 4$PAR2 e
678968/ Plat*orm Edition:
1) ><rias outras distri"ui?es @inu6
&on'i(urao Mnima de )ard*are
Nota+ IDE AetBeans com resoluo de tela em (.-/6B87 &i6el
Sistema Operacional $rocessador Memria )! Li,re
Microso*t +indo%s 0.. MC Intel Pentium III
%orDstation ou eEuivalente
0(- MB 70. MB
@inu6 0.. MC Intel Pentium III
%orDstation ou eEuivalente
0(- MB /0. MB
$olaris #$ 4$PAR2: Fltra$PAR2 II /0. MC 0(- MB /0. MB
$olaris #$ 4678968/
Plat*orm Edition:
AMD #&teron (.. $Grie ()7 HC 0(- MB /0. MB
Mac #$ , Po%erP2 H/ 0(- MB /0. MB
&on'i(urao -ecomendada de )ard*are
Sistema Operacional $rocessador Memria )! Li,re
Microso*t +indo%s ()/ HC Intel Pentium III
%orDstation ou eEuivalente
( HB ( HB
@inu6 ()/ HC Intel Pentium III
%orDstation ou eEuivalente
( HB 70. MB
$olaris #$ 4$PAR2: Fltra$PAR2 IIIi ( HC ( HB 70. MB
$olaris #$ 4678968/
Plat*orm Edition:
AMD #&teron (.. $eries ()7 HC ( HB 70. MB
Mac #$ , Po%erP2 H0 ( HB 70. MB
-equerimentos de So't*are
AetBeans Enter&rise PacD 0)0 e6ecutando so"re Java - Plat*orm $tandard Edition
Develo&ment Iit 0). ou su&erior 4JDI 0).; verso ()0).J.( ou su&erior:;
contem&lando a Java Runtime Environment; *erramentas de desenvolvimento &ara
com&ilar; de&urar; e e6ecutar a&lica?es escritas em linguagem Java) $un Java
$ystem A&&lication $erver Plat*orm Edition =)
() Para Solaris; .indo*s; e Linux; os arEuivos da JDI &odem ser o"tidos &ara
sua &lata*orma em !tt&'99Kava)sun)com9K-se9()0).9do%nload)!tml
-) Para Mac OS /; Java - Plata*orm $tandard Edition 4J-$E: 0). Release /; &ode ser
o"tida diretamente da A&&leLs Develo&er 2onnection; no endereo'
!tt&'99develo&er)a&&le)com9Kava 4G necess<rio registrar o do%nload da JDI:)

Para mais in*orma?es'
!tt&'99%%%)net"eans)org9community9releases9009relnotes)!tml
Introduo Programao I -
JEDI
TM
Colaboradores que auxiliaram no processo de traduo e reviso
Ale6andre Mori
Ale6is da Roc!a $ilva
Aline $a""atini da $ilva Alves
Allan +oKciD da $ilva
AndrG @uiC Moreira
Andro M<rcio 2orrea @ouredo
Antoniele de Assis @ima
Antonio Jose R) Alves Ramos
AurGlio $oares Aeto
Bruno da $ilva Bon*im
Bruno dos $antos Miranda
Bruno Ferreira Rodrigues
2arlos Al"erto >itorino de Almeida
2arlos Ale6andre de $ene
2arlos AndrG Aoron!a de $ousa
2arlos Eduardo >eras Aeves
2le"er Ferreira de $ousa
2leyton Artur $oares Frani
2ristiano Borges Ferreira
2ristiano de $iEueira Pires
Derlon >andri Aliendres
Fa"iano Eduardo de #liveira
F<"io Bom"onato
Fernando Antonio Mota Trinta
Fl<vio Alves Homes
Francisco das 2!agas
Francisco Marcio da $ilva
Hilson Moreno 2osta
Hivailson de $ouCa Aeves
Hustavo enriEue 2astellano
e"ert Julio Honalves de Paula
eraldo 2onceio Domingues
ugo @eonardo Mal!eiros Ferreira
Ivan Aascimento Fonseca
JacEueline $usann Bar"osa
Jader de 2arval!o Belarmino
Joo AurGlio Telles da Roc!a
Joo Paulo 2irino $ilva de Aovais
Joo >ianney BarroCo 2osta
JosG Augusto Martins AieviadonsDi
JosG @eonardo Borges de Melo
JosG Ricardo 2arneiro
Ile"ert! BeCerra H) dos $antos
@a*aiete de $< Huimares
@eandro $ilva de Morais
@eonardo @eo&oldo do Aascimento
@eonardo Pereira dos $antos
@eonardo Rangel de Melo Filardi
@ucas Mauricio 2astro e Martins
@uciana Roc!a de #liveira
@uMs 2arlos AndrG
@uMs #ct<vio Jorge >) @ima
@uiC Fernandes de #liveira Junior
@uiC >ictor de Andrade @ima
Manoel 2otts de NueiroC
Marcello $andi Pin!eiro
Marcelo #rtolan PaCCetto
Marco AurGlio Martins Bessa
Marcos >inicius de Toledo
Maria 2arolina Ferreira da $ilva
Massimiliano Hiroldi
Mauricio ACevedo Hamarra
Mauricio da $ilva Marin!o
Mauro 2ardoso Mortoni
Mauro Regis de $ousa @ima
Aamor de $< e $ilva
AGres 2!aves Re"ouas
Aolyanne Pei6oto Brasil >ieira
Paulo A*onso 2orrOa
Paulo JosG @emos 2osta
Paulo #liveira $am&aio Reis
Pedro Antonio Pereira Miranda
Pedro enriEue Pereira de Andrade
Renato Alves FGli6
Renato Bar"osa da $ilva
Reyderson Magela dos Reis
Ricardo Ferreira Rodrigues
Ricardo Flric! Bom*im
Ro"son de #liveira 2un!a
Rodrigo Pereira Mac!ado
Rodrigo Rosa Miranda 2orrOa
Rodrigo >aeC
Ronie DotCla%
Rosely Moreira de Jesus
$eire PareKa
$ergio Pomeranc"lum
$ilvio $Cni*er
$uCana da 2osta #liveira
T<sio >asconcelos da $ilveira
T!iago Magela Rodrigues Dias
Tiago HimeneC Ri"eiro
>anderlei 2arval!o Rodrigues Pinto
>anessa dos $antos Almeida
>astM Mendes da $ilva Roc!a
+agner ElieCer Roncoletta
Auxiliadores especiais
Reviso Heral do te6to &ara os seguintes PaMses'
Brasil P Tiago Flac!
0uin1 Bissau P Al*redo 2<; Bunene $isse e Buon #lossato Nue"i P #AH Asas de $ocorro
Coordenao do DFJUG
!aniel deOli,eira P JFH@eader res&ons<vel &elos acordos de &arcerias
Luci &ampos 2 IdealiCadora do DFJFH res&ons<vel &elo a&oio social
3ernando Anselmo 2 2oordenador res&ons<vel &elo &rocesso de traduo e reviso;
dis&oni"iliCao dos materiais e insero de novos mQdulos
-e(ina Mariani 2 2oordenadora res&ons<vel &ela &arte KurMdica
-odri(o Nunes 2 2oordenador res&ons<vel &ela &arte multimMdia
S1r(io 0omes 4eloso 2 2oordenador res&ons<vel &elo am"iente JEDI
TM
4Moodle:
A(radecimento Especial
5o6n $aul $etines 7 2riador da Iniciativa JEDI
TM
-ommel 3eria 7 2riador da Iniciativa JEDI
TM
Introduo Programao I 1
JEDI
TM
1# O89eti,os
Aesta lio; a"ordaremos Array em Java) Primeiro; de*iniremos o Eue G array e; ento;
discutiremos como declar<Rlos e us<Rlos)
Ao *inal desta lio; o estudante ser< ca&aC de'
Declarar e criar array
Acessar elementos de um array
Determinar o nSmero de elementos de um array
Declarar e criar array multidimensional
Introduo Programao I /
JEDI
TM
:# ntroduo a Arra;
Em li?es anteriores; discutimos como declarar di*erentes vari<veis usando os ti&os de dados
&rimitivos) Aa declarao de vari<veis; *reETentemente utiliCamos um identi*icador ou um
nome e um ti&o de dados) Para se utiliCar uma vari<vel; deveRse c!am<Rla &elo nome Eue a
identi*ica)
Por e6em&lo; temos trOs vari<veis do ti&o int com di*erentes identi*icadores &ara cada
vari<vel'
int number1;
int number2;
int number3;
number1 = 1;
number2 = 2;
number3 = 3;
2omo se vO; inicialiCar e utiliCar vari<veis &ode tornaRse uma tare*a tediosa; es&ecialmente se
elas *orem utiliCadas &ara o mesmo o"Ketivo) Em Java; e em outras linguagens de
&rogramao; &odeRse utiliCar uma vari<vel &ara armaCenar e mani&ular uma lista de dados
com maior e*iciOncia) Este ti&o de vari<vel G c!amado de arra;)
Fm arra; armaCena mSlti&los itens de um mesmo ti&o de dado em um "loco contMnuo de
memQria; dividindoRo em certa Euantidade de posi<es) Imagine um array como uma vari<vel
esticada P Eue tem um um nome Eue a identi*ica e Eue &ode conter mais de um valor &ara
esta mesma vari<vel)
Introduo Programao I 0
Figura 1: Exemplo de um array de inteiros
JEDI
TM
=# !eclarando Arra;
Array &recisa ser declarados como EualEuer vari<vel) Ao declarar um array; de*ina o ti&o de
dados deste seguido &or colc!etes UV e &elo nome Eue o identi*ica) Por e6em&lo'
int [] ages;
ou colocando os colc!etes de&ois do identi*icador) Por e6em&lo'
int ages[];
De&ois da declarao; &recisamos criar o array e es&eci*icar seu taman!o) Este &rocesso G
c!amado de construo 4a &alavra; em orientao a o"Ketos; &ara a criao de o"Ketos:) Para
se construir um o"Keto; &recisamos utiliCar um construtor) Por e6em&lo'
// declarao
int ages[];
// construindo
ages = new int[100];
ou; &ode ser escrito como'
// declarar e construir
int ages[] = new int[100];
Ao e6em&lo; a declarao diC ao com&ilador
Java Eue o identi*icador ages ser< usado como
um nome de um array contendo inteiros; usado
&ara criar; ou construir; um novo array
contendo (.. elementos)
Em veC de utiliCar uma nova lin!a de instruo
&ara construir um array; tam"Gm G &ossMvel
automaticamente declarar; construir e adicionar
um valor uma Snica veC)
E6em&los'
// criando um array de valores lgicos em uma varivel
// results! "ste array cont#m $ elementos %ue so
// iniciali&ados com os valores 'true( )alse( true( )alse*
boolean results[] =' true( )alse( true( )alse *;
// criando um array de $ variveis double iniciali&ados
// com os valores '100( +0( ,0( -.*;
double []grades = '100( +0( ,0( -.*;
// criando um array de /trings com identi)icador days e
// tamb#m 0 iniciali&ado! "ste array cont#m - elementos
/tring days[] = '12on1(13ue1(14ed1(135u1(16ri1(1/at1(1/un1*;
Fma veC Eue ten!a sido inicialiCado; o taman!o de um array no &ode ser modi*icado; &ois G
armaCenado em um "loco contMnuo de memQria)
Introduo Programao I 8
Figura 2: Instanciando Arrays
JEDI
TM
># Acessando um elemento do Arra;
Para acessar um elemento do array; ou &arte de um array; utiliCaRse um nSmero inteiro
c!amado de ndice)
Fm ndice G atri"uMdo &ara cada mem"ro de um array; &ermitindo ao &rograma e ao
&rogramador acessar os valores individualmente Euando necess<rio) #s nSmeros dos Mndices
so sem&re inteiros) Eles comeam com Cero e &rogridem seETencialmente &or todas as
&osi?es atG o *im do array) @em"reRse Eue os elementos dentro do array &ossuem Mndice de ?
a taman6o!oArra;21)
Por e6em&lo; dado o array a(es Eue declaramos anteriormente; temos'
// atribuir 10 ao 7rimeiro elemento do array
ages[0] = 10;
// im7rimir o 8ltimo elemento do array
/ystem!out!7rint9ages[++]:;
@em"reRse Eue o array; uma veC declarado e construMdo; ter< o valor de cada mem"ro
inicialiCado automaticamente) 2on*orme a seguinte ta"ela'
Ti&o &rimitivo Iniciado com
"oolean *alse
"yte; s!ort e int .
c!ar LWu....L
long .@
*loat .).F
dou"le .).
Tabela 1: Valor de inicializao automatica para os tipos primitios
Entretanto; ti&os de dados &or re*erOncia; como as $trings; no sero inicialiCados caracteres
em "ranco ou com uma string vaCia XX; sero inicialiCados com o valor null) Deste modo; o
ideal G &reenc!er os elementos do arrays de *orma e6&lMcita antes de utiliC<Rlos) A mani&ulao
de o"Ketos nulos &ode causar a desagrad<vel sur&resa de uma e6ceo do ti&o
Null$ointerException; &or e6em&lo; ao tentar e6ecutar algum mGtodo da classe $tring;
con*orme o e6em&lo a seguir'
7ublic class ;rray/am7le '
7ublic static void main9/tring[] args:'
/tring [] nulls = new /tring[2];
/ystem!out!7rint9nulls[0]:; // <in5a correta( mostra null
/ystem!out!7rint9nulls[1]!trim9::; // =ausa erro
*
*
# cQdigo a"ai6o utiliCa uma declarao 'or &ara mostrar todos os elementos de um array)
7ublic class ;rray/am7le '
7ublic static void main9/tring[] args:'
int[] ages = new int[100];
)or 9int i = 0; i > 100; i??: '
/ystem!out!7rint9ages[i]:;
Introduo Programao I B
JEDI
TM
*
*
*
Dicas de programao:
() Aormalmente; G mel!or inicialiCar; ou instanciar; um array logo a&Qs declar<Rlo)
Por e6em&lo; a instruo'
int []arr = new int[100];
G &re*erMvel; ao invGs de'
int [] arr;
arr = new int[100];
-) #s elementos de um array de n elementos tem Mndices de . a nR() Aote Eue no
e6iste o elemento arrUnV) A tentativa de acesso a este elemento causar< uma
e6ceo do ti&o Arra;ndexOutO'BoundsException; &ois o Mndice deve ser
atG nR()
1) Ao G &ossMvel modi*icar o taman!o de um array)
Introduo Programao I 7
JEDI
TM
"# @aman6o de Arra;
Para se o"ter o nSmero de elementos de um array; &odeRse utiliCar o atri"uto len(t6) #
atri"uto len(t6 de um array retorna seu taman!o; ou seKa; a Euantidade de elementos) Y
utiliCado como no cQdigo a"ai6o'
nome;rray!lengt5
Por e6em&lo; dado o cQdigo anterior; &odemos reescrevORlo como'
7ublic class ;rray/am7le '
7ublic static void main 9/tring[] args: '
int[] ages = new int[100];
)or 9int i = 0; i > ages.length; i??: '
/ystem!out!7rint9ages[i]:;
*
*
*
Dicas de programao:
() Nuando criar laos com 'or &ara o &rocessamento de um array; utiliCe o cam&o
len(t6 como argumento da e6&resso lQgica) Isto ir< &ermitir ao lao aKustarR
se; automaticamente &ara taman!os de di*erentes arrays)
-) Declare o taman!o dos arrays utiliCando vari<veis do ti&o constante &ara *acilitar
altera?es &osteriores) Por e6em&lo'
)inal int ;@@;AB/CD" = 1000; // declarando uma constante
!!!
int[] ages = new int[;@@;AB/CD"];
Introduo Programao I =
JEDI
TM
A# Arra;s Multidimensionais
Arrays multidimensionais so im&lementados como arrays dentro de arrays) $o declarados ao
atri"uir um novo conKunto de colc!etes de&ois do nome do array) Por e6em&lo'
// array inteiro de .12 E 12, elementos
int [][] twoF = new int[.12][12,];
// array de caracteres de , E 1G E 2$
c5ar [][][] t5reeF = new c5ar[,][1G][2$];
// array de /tring de $ lin5as E 2 colunas
/tring [][] dogs = ''1terry1( 1brown1*(
'1Hristin1( 1w5ite1*(
'1toby1( 1gray1*(
'1)ido1( 1blacI1**;
Acessar um elemento em um array multidimensional G semel!ante a acessar elementos em
um array de uma dimenso) Por e6em&lo; &ara acessar o &rimeiro elemento da &rimeira lin!a
do array do(s; escreveRse'
/ystem!out!7rint9dogs[0][0]:;
Isso mostrar< a $tring XterryX na saMda &adro) 2aso Eueira mostrar todos os elementos deste
array; escreveRse'
)or 9int i = 0; i > dogs!lengt5; i??: '
)or 9int 0 = 0; 0 > dogs[i]!lengt5; 0??: '
/ystem!out!7rint9dogs[i][0] ? 1 1:;
*
*
Introduo Programao I (.
JEDI
TM
7# Exerccios
7.1. Dias da semana
2riar um array de $trings inicialiCado com os nomes dos sete dias da semana) Por e6em&lo'
/tring days[] = '12onday1( 13uesday1( 14ednesday1( 135ursday1(
16riday1( 1/aturday1( 1/unday1*;
Fsando uma declarao *6ile; im&rima todo o conteSdo do array) Faa o mesmo &ara as
declara?es do2*6ile e 'or)
7.2. Maior nmero
Fsando as classes Bu''ered-eader; Scanner ou 5Option$ane; solicite (. nSmeros ao
usu<rio) FtiliCe um array &ara armaCenar o valor destes nSmeros) Mostre o nSmero de maior
valor)
7.!. "n#radas de agenda #ele$%nica
Dado o seguinte array multidimensional; Eue contGm as entradas da agenda tele*Znica'
/tring entry = ''16lorence1( 1-3.J123$1( 12anila1*(
'1Koyce1( 1+,3J33331( 1Lue&on =ity1*(
'1Mecca1( 1$.GJ33221( 12anila1**;
mostreRas con*orme o *ormato a"ai6o'
Name O 6lorence
3el! P O -3.J123$
;ddressO 2anila
Name O Koyce
3el! P O +,3J3333
;ddressO Lue&on =ity
Name O Mecca
3el! P O $.GJ3322
;ddressO 2anila
Introduo Programao I ((
JEDI
TM
$arceiros que tornaram 5E!
@M
poss,el
&ns#i#u#o C'(
Patrocinador do DFJFH)
(un Micros)s#ems
Fornecimento de servidor de dados &ara o armaCenamento dos vMdeoRaulas)
Ja*a +esearc, and De*elopmen# Cen#er da Uni*ersidade das Filipinas
2riador da Iniciativa JEDI
TM
)
DFJUG
Detentor dos direitos do JEDI
TM
nos &aMses de lMngua &ortuguesa)
-anco do -rasil
Dis&oni"iliCao de seus telecentros &ara a"rigar e di*undir a Iniciativa JEDI
TM
)
.oli#ec
$u&orte e a&oio *inanceiro e logMstico a todo o &rocesso)
-orland
A&oio internacional &ara Eue &ossamos alcanar os outros &aMses de lMngua
&ortuguesa)
&ns#i#u#o Gaudium/C0--
Fornecimento da sua in*raRestrutura de !ard%are de seus servidores &ara Eue
os mil!ares de alunos &ossam acessar o material do curso simultaneamente)
Introduo Programao I (-

Vous aimerez peut-être aussi