52
Programação Java para iniciantes LNCC

LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Programação Java

para iniciantes

LNCC

Page 2: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Arrays em Java

Page 3: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

O que é um Array?

Em Java um array é um objeto utilizado para armazenar seqüencialmente

dados do mesmo tipo, chamados elementos do array

Page 4: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 5: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 6: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Características

deste array

O nome do array

A indicação de array

O tipo dos elementos

do array

Os elementos do array

Page 7: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

heap

39

41

40

0

1

2

Declaração deste array

numPe

pilha

Page 8: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Um programa – exemplo 1

Todo array sabe quantos elementos possui

Page 9: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 10: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

0

0

0

0

1

2

39

41

40

heap

Declaração de array

numPe

pilha

Page 11: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Exemplo 2

Page 12: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Exemplo 3

O compilador JAVA sempre inicializa

um array, visto que todo array é um

objeto

Page 13: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Exemplo 4 Código padrão para somar os elementos

(numéricos) de um array

Page 14: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Exemplo 5

Um laço for dentro de

outro

Page 15: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Exemplo 6

Page 16: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 17: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Exemplo 7 -saída

Page 18: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Geometria vetorial

Page 20: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Definições

2 dimensões / plano 3 dimensões / espaço

Page 21: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 22: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 23: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 24: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 25: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 26: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 27: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

O corpo do método

mostrar(...)

Page 28: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 29: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 30: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Adição de vetores

1x

2x

u

w v

1v

2v

1u

2u

1 1

2 2

u vw u v

u v

Page 31: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Um programa para

adicionar vetores

Page 32: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 33: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 34: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 35: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 36: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

A saída do programa de

multiplicação de um vetor

por um fator de escala

Page 37: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 38: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 39: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 40: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 41: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 42: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 43: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 44: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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.

Page 45: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional
Page 46: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

A geometria euclidiana

Page 47: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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

Page 48: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

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]

Page 49: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Dados

Cálculo do custo

Page 50: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

Linhas 2-9 da saída

Linhas 10-12 da saída

Linhas 13-15 da saída

Page 51: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional

mostrar(...) diferente?

Page 52: LNCCrogerio/poo2/Apoio/Arrays-LNCC.pdf · Em Java, construímos o array bidimensional consumo[ ][ ] e o array unidimensional preço[ ]. A solução é dada pelo array unidimensional