LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ]...

Preview:

Citation preview

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

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?

Recommended