29
1 Arrays em Java Alberto Costa Neto DComp - UFS

Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

1

Arrays em Java

Alberto Costa Neto

DComp - UFS

Page 2: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

2

Roteiro

Arrays

Arrays de Objetos

Arrays Multidimensionais

Page 3: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

3

Arrays

Como armazenar as médias dos 3 alunos que se candidataram para fazer parte do grupo de pesquisa?

float media1 = 7.5f;

float media2 = 8.9f;

float media3 = 8.3f;

Não existiria uma estrutura de dados que armazenasse todos os dados, tendo apenas um nome como referência???

Page 4: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

4

Arrays

Algo assim...

7.5f

8.9f

8.3f

0

1

2 medias

medias [0] = 7.5f;

medias [1] = 8.9f;

medias [2] = 8.3f;

Page 5: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

5

Arrays

O que é um array?

7.5f

8.9f

8.3f

0

1

2 medias

medias [0] = 7.5f;

medias [1] = 8.9f;

medias [2] = 8.3f;

Arrays são objetos (Java)

Sintaxe especial

Array

Page 6: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

6

Arrays

Características de um array

7.5f

8.9f

8.3f

0

1

2 medias

medias [0] = 7.5f;

medias [1] = 8.9f;

medias [2] = 8.3f;

Elementos:

- Identificados pelo mesmo nome

- Diferenciados apenas pelo índice

Armazenam valores do mesmo tipo

Array

Page 7: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

7

Arrays

Como declarar um array?

float [ ] medias;

float medias [ ];

int [ ] matriculas;

int matriculas [ ];

String [ ] nomes;

String nomes [ ];

Page 8: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

8

Arrays

Como criar um array?

Usando “new”

Usando inicializadores

String [ ] nomes; nomes = new String [3]; float [ ] medias = new float [3];

String[ ] nomes = { “Maria”, “Pedro”, “João” }; float [ ] medias = {7.5f , 8.9f , 8.3f } ;

Page 9: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

9

Arrays

Atribuindo valores

String[ ] nomes = new String [3]; nomes[0] = “Maria”; nomes[1] = “Pedro”; nomes[2] = “João” ;

float [ ] medias = new float [3]; medias [0] = 7.5f; medias [1] = 8.9f; medias [2] = 8.3f;

Page 10: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

10

Arrays

Outro exemplo

String[] nomes = new String [3]; Scanner e = new Scanner(System.in); for (i = 0 ; i < 3; i++) nomes[i] = e.next();

Page 11: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

11

Arrays

Acessando os valores armazenados

String[] nomes = new String [3]; for (i=0 ; i < nomes.lenght ; i++) System.out.println( nomes[i] );

Page 12: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

12

Dever de Sala

1) Escreva um programa em Java que leia dez número inteiros e em seguida calcule e mostre:

a) Todos os números pares

b) Todos os números ímpares

c) A quantidade de números pares e ímpares

Page 13: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

13

Dever de Sala

2) Escreva um programa em Java que armazena o nome de 5 alunos e de suas respectivas médias. O programa deve exibir:

a) Nome do aluno com maior média (desconsiderar empates)

b) Nome dos alunos reprovados (média < 5)

Obs.: Usar 2 arrays (um p/ nomes e outro p/ médias)

Page 14: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

14

Arrays de Objetos

O que faz este código?

Quantas contas foram criadas?

Conta[] minhasContas; minhasContas = new Conta[10];

Page 15: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

15

Arrays de Objetos

Foi criado um array para guardar referências para contas

Conta[] minhasContas; minhasContas = new Conta[10];

0

1

2 minhasContas

Array

...

Page 16: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

16

Arrays de Objetos

Populando o array Conta[] minhasContas; minhasContas = new Conta[10]; Conta novaConta = new Conta(); novaConta.creditar(1000f); minhasContas[0] = novaConta;

0

1

2 minhasContas

Array

Objeto novaConta

...

Page 17: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

17

Arrays de Objetos

Outra forma minhasContas[1] = new Conta(); minhasContas[1].creditar(500f);

0

1

2 minhasContas

Array

Objeto novaConta

Outro objeto

Conta ...

Page 18: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

18

Arrays de Objetos

Conta

numero: int saldo: double

Conta (numero: int) getNumero(): int getSaldo(): double creditar(valor: double) debitar(valor: double)

Expandindo...

Banco

nome: String sigla: String ultimo: int

cadastrarConta (conta) localizarConta(num)

*

1

Page 19: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

19

Arrays de Objetos

class Banco {

...

private Conta[] contas;

private int ultimo = 0; public Banco( ) {

contas = new Conta[100];

} public void cadastrar(Conta c) {

contas[ultimo] = c;

ultimo = ultimo + 1;

}

Page 20: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

20

Arrays de Objetos

private Conta localizarConta (int n) { for (int i = 0; i < ultimo; i++) if (contas[i].getNumero() == n) return conta[i]; } return null; } ...

Page 21: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

21

Arrays de Objetos

public void cadastrar(Conta c) { if (ultimo==contas.length) { Conta[] aux = new Conta[ultimo+10]; for (int i = 0; i < contas.length ; i++) aux[i]= contas[i]; contas = aux; // muda a referência } contas[ultimo] = c; ultimo = ultimo + 1; }

Cadastro flexível

Page 22: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

22

Dever de Sala

3) Escreva um programa em Java que armazena o nome de 5 alunos e de suas respectivas médias. O programa deve exibir:

a) Nome do aluno com maior média (desconsiderar empates)

b) Nome dos alunos reprovados (média < 5)

Obs.: Usar 1 array contendo as referências para objetos Aluno

Page 23: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

23

Arrays Multidimensionais

a

a[0]

a[1]

a[0][0]

a[0][3]

.

.

.

a[1][0]

a[1][3]

.

.

. 0 0 0 0

0 0 0 0 O tipo da variável ‘a’ é byte[ ][ ]

O tipo de a[0] e a[1] é byte[]

O tipo dos a[i][j] é byte

byte[ ][ ] a = new byte[2][4];

O que faz este código?

Page 24: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

24

Arrays Multidimensionais

São implementados como arrays de arrays.

Para cada dimensão basta especificar um par de colchetes na declaração da variável

Page 25: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

25

Arrays Multidimensionais

int[ ][ ] e = {{1, 2}, {3, 4, 5}, {5, 6, 7, 8}};

O que faz este código?

1

2

5

3

4

5 6

7

8

e

e [0]

e [2]

e [1]

e [0] [0]

e [0] [1]

e [1] [0]

e [1] [1]

e [1] [2]

e [2] [0]

e [2] [1]

e [2] [2]

e [2] [3]

Page 26: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

26

Arrays Multidimensionais

byte [ ][ ] e = new byte[ 2 ][ 4 ];

Qual a diferença?

byte [ ][ ] e = new byte[ 2 ][ ];

e [ 0 ] = new byte [ 3 ];

e [ 1 ] = new byte [ 5 ];

Page 27: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

27

Arrays Multidimensionais

short[ ][ ] triangle = new short[5][ ]; for(int i = 0; i < triangle.length; i++) { triangle[i] = new short[i+1]; for(int j=0; j < i+1; j++) triangle[i][j] = (short) i + j; }

O que faz este código?

Page 28: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

28

Arrays Multidimensionais

Resultado

triangle

0

1

2

3

4

2

3

4

5

4

5 6

6 7 8

triangle[i]

triangle[i] [j]

Page 29: Arrays em Java - albertocn.sytes.netalbertocn.sytes.net/2014-2/poo/slides/07 - arrays_java.pdf · 13 Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e

29

Referências

Slides “Vetores” Prof. Marcos Dósea. UFS. 2010.

Slides “Arrays em Java”, Profa. Débora. UFS. 2010

Slides “Arrays Java” Prof Giovanny . Java.UFS. 2009.

Caelum. Java e Orientação a Objetos

http://www.caelum.com.br/apostilas/

Capítulo 5

Java How to Program

Capítulo – 7