lnccrogerio/poo2/apoio/arrays-lncc.pdf · em java, construímos o array bidimensional consumo[ ][ ]...
TRANSCRIPT
Programação Java
para iniciantes
LNCC
Arrays em Java
O que é um Array?
Em Java um array é um objeto utilizado para armazenar seqüencialmente
dados do mesmo tipo, chamados elementos do array
Características de um array
O tipo dos elementos do array
Lápis
A quantidade de elementos do
array
10
1 2
0
4 5 3
6
8
9
7
O índice, que define a ordem dos
elementos do array
Um array de inteiros
O nome do array será NumPe.
Para simplicidade armazenaremos apenas três
tamanhos: 39, 40 e 41.
A quantidade de elementos do array será, portanto, 3.
Características
deste array
O nome do array
A indicação de array
O tipo dos elementos
do array
Os elementos do array
heap
39
41
40
0
1
2
Declaração deste array
numPe
pilha
Um programa – exemplo 1
Todo array sabe quantos elementos possui
Declaração de array – outra forma
Os elementos do array
A quantidade de elementos
do array O nome do array
A indicação de array
O tipo dos elementos
do array
A criação do objeto
array
0
0
0
0
1
2
39
41
40
heap
Declaração de array
numPe
pilha
Exemplo 2
Exemplo 3
O compilador JAVA sempre inicializa
um array, visto que todo array é um
objeto
Exemplo 4 Código padrão para somar os elementos
(numéricos) de um array
Exemplo 5
Um laço for dentro de
outro
Exemplo 6
Exemplo 7 -saída
Geometria vetorial
René Descartes
• Francês, • Nasceu em 31/03/1596 • Faleceu em 11/02/1650
Definições
2 dimensões / plano 3 dimensões / espaço
Flechas eqüipolentes
Duas flechas AB e PQ são eqüipolentes quando
possuem o mesmo tamanho, direção e
sentido.
Nesse caso escrevemos AB ~ PQ
Uma flecha AB é um segmento de reta orientado de A para B. O ponto A é a origem da flecha e
B sua ponta.
Coordenadas
cartesianas
e equipolência
1x
2x
2a
2b
1b
1a
B
A
P
Q
1p
1q
2p
2q
1 1 1 1
2 2 2 2
1 2
1 2
N um sistem a de coordenadas
cartesianas , considere duas
flechas e . E n tão :
.
N atu ralm en te, ( , ) são as
coordenadas cartesianas do pon to ,
( , ) do , e assim por
O xy
A B P Q
b a q pA B P Q
b a q p
a a
A
b b B
d ian te.
Definição de vetor-livre
1x
2x
v
A notação padrão para um vetor-livre é a combinação
de uma letra minúscula mais uma flecha sobreposta:
, ,u v w
Vetores-livres e arrays
1 2
1 1 1
2 2 2
U m veto r livre
pode ser rep resen tado po r um
array , no qual
onde é um a rep resen tan te
da c lasse de equ ipo lência de flechas
que define
v
v v v
v b a
v b a
A B
v
1x
2x
v
1v
2v
2a
2b
B
A
1b
1a
Simplificando ...
Dado um vetor , uma escolha muito natural para representá-lo é
através da seta cuja origem coincide com a origem do sistema
cartesiano de coordenadas.
v
1 2
1 1
2 2
, no qual
0
0
onde é o represen tan te
pela o rigem (0, 0)
v v v
v a
v a
O A
v
1v
2v
A
O
Um programa
para mostrar
vetores
O exemplo ilustra a simplicidade do código envolvido para passar um array
como parâmetro para um método.
O corpo do método
mostrar(...)
Está na filosofia da OO!
O método mostrar(...) será usado em outros exemplos subseqüentes.
Por simplicidade, seu código não será mais exibido.
Um outro detalhe ...
Na assinatura do método, não importa a posição do indicador de array, [ ], relativamente ao nome e
ao tipo dos elementos do array
Adição de vetores
1x
2x
u
w v
1v
2v
1u
2u
1 1
2 2
u vw u v
u v
Um programa para
adicionar vetores
Variante do Adição de vetores
Se, por algum motivo, for necessário usar o vetor
soma, a linha 9 do programa Adição de
vetores pode ser substituída por
Escalamento de um vetor
1x
2x
1w
2w
w
u
1u
2u
1
2
uw u
u
• Multiplicar por -1 corresponde a manter a direção, mas inverter o sentido do vetor; • Multiplicar por 0 implica em reduzir o vetor a um ponto; então ele perde a direção e o sentido.
A saída do programa de
multiplicação de um vetor
por um fator de escala
Produto interno
u
v
1u
2u
1v
2v
1 1
2 2
1 1 2 2
S e e , o p rodu to
in terno , de po r é
o núm ero real dado pela expressão :
,
u vu v
u v
u v u v
u v u v u v
A norma de um vetor
u
1u
2u
1
2
2 2
1 2
S e , a no rm a de é :
,
uu u
u
u u u u u
u
1u
2u
Nosso velho conhecido: o teorema
de Pitágoras
No programa a seguir é construído um método norma(...) que recebe como parâmetros formais um array u[ ] de
elementos double e devolve um double.que é a norma do vetor u.
O método é chamado duas vezes e são
passados como parâmetros reais os arrays a e b, de 2 e 4 elementos
respectivamente.
u
v
O ângulo entre dois vetores
1 1
2 2
S e e , o ângu lo
en tre e é dado po r:
, co s( ) = ,
quando 0 e 0 .
u vu v
u v
u v
u v
u v
u v
No programa a seguir é construído um método angulo(...) que recebe como parâmetros formais dois arrays u[ ] e v[ ] de elementos double e devolve um double.que é o ângulo (em graus) entre os vetores u e v.
Esse método chama os métodos norma(...) e interno(...) já
construídos; êle chama também os métodos acos(...), round(...) e a constante pré-definida PI da classe Math.
A geometria euclidiana
Cálculos comerciais
Consumo Arroz Feijão Carne Batata
2ª 1.0 2.0 3.0 4.0
3ª 1.1 2.1 3.1 4.1
4ª 1.2 2.2 3.2 4.2
5ª 1.3 2.3 3.3 4.3
6ª 1.4 2.4 3.4 4.4
S 1.5 2.5 3.5 4.5
Preço R$
Arroz 2.0
Feijão 3.0
Carne 4.0
Batata 5.0
Solução
Custo R$
2ª 40.00
3ª 41.40
4ª 42.80
5ª 44.20
6ª 45.60
S 47.00
Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ].
A solução é dada pelo array unidimensional custo[ ], cujas linhas são calculadas como na
descrição ao lado.
custo[2] = cons[2][0] x custo[0] + cons[2][1] x custo[1] + cons[2][2] x custo[2] + cons[2][3] x custo[3]
Dados
Cálculo do custo
Linhas 2-9 da saída
Linhas 10-12 da saída
Linhas 13-15 da saída
mostrar(...) diferente?