Post on 26-Jan-2015
description
Curso de Java
by Antonio Rodrigues Carvalho Neto
Matrizes
Matrizes� Em algumas situações é preciso guardar
diversas informações de um mesmo tipo no Java.
� Imagine ter que guardar informações como os titulos de filmes de uma coleção de DVD, ou os nomes de ouvintes que estão na platéia de um teatro.
� Até o momento deveriamos criar uma váriavel específica para guardar cada umas destas informações, uma para cada pessoa, uma para cada título.
Matrizes
� Para evitar a manutenção de todas estas variáveis, as linguagens de programação oferecem um recurso chamado de Vetores ou Matrizes.
� Onde é criado apenas uma variável contendo diversas células dentro dela, e as informações são gravadas ou lidas dessas células
� Vetor
� Matriz 2D
� Matriz 3D
Vetores e Matrizes
Vetor
� No caso dos títulos de DVDs podemos criar uma única variável chamada dvds que seria um vetor com 7 células suficientes para conter todos os títulos na minha coleção
Gre
en M
ile
Pay
it f
orw
ard
A.I
.
The
Las
t Sam
urai
Bra
ve H
eart
Pat
ch A
dam
s
0 1 5 6 7432String dvd1 = “Green mile”;
String dvd2 = “Pay it forward”;
String dvd3 = “A.I.”;
String dvd4 = “The Last Samurai”;
String dvd5 = “Brave Heart”;
String dvd6 = “Patch Adams”;
Uma única variável dvds[]
Matriz
� No caso da platéia do teatro, podemos criar uma única variável do tipo matriz com duas dimensões para guardar os nomes de cada indivíduo.
John
<A
vail
able
>
Bar
t
Hom
mer
Wil
liam
Pau
l
Jess
ica
Alf
red
Sar
a
<A
vail
able
>
Ric
hard
Mai
con
<A
vail
able
>
Ant
onio
Silv
ana
0 1 2 3 4
0
1
2
�-- Colunas --�
�--
--L
inha
s --
--�
0 1 2 3 4
0
1
2
�---- Colunas ----�
�--
--L
inha
s --
--�
Matrizes e Vetores
� O acesso a cada uma dessas células é feito pelo índice. Por exemplo no caso do título para gravar o nome do primeiro e do segundo título de DVD na variável dvdsusamos a seguinte sintaxe :
dvds[0] = “Green Mile”;dvds[1] = “Pay it forward”;
� E se quisermos acessar a informação posteriormente para imprimir na tela, basta chamar a variável com o índice desejado.
System.out.println( dvds[1] ); // Pay it forwardSystem.out.println( dvds[3] ); // The Last SamuraiSystem.out.println( dvds[5] ); // null
� Sintaxe de Declaração de Vetores e Matrizes
<tipo> [ ] <var1>[, <var2> ..<varn>];Ex: int [] a, b;
Ex: int [] [] c, d;
<tipo> <var1>[];Ex: int a[], b;
Ex: int c, d[][];
Ex: String j[];
<tipo> <var1>[] = { <elementos>};Ex: int a[] = { 1, 2, 3};
Ex: int d[][] = { {1, 2, 3}, { 9, 7, 8}, { 2, 3, 5} };
Matriz e Vetores
Declaração seguida de inicialização
� Sintaxe de Inicialização de Vetores e Matrizes
<var> = new <tipo da variável | classe> [ tamanho ];
Ex: a = new int [10];
Ex: d = new int [10][5];
Ex: j = new String [7];
Matriz e Vetores
Memória do Computador usada pelo Java
dvds[]
Memória do Computador usada pelo Java
Declaração
String dvds[];
Inicialização
dvds = new String[8];
0 1 5 6 7432
dvds[8]
� A declaração serve para reservar o espaço na memória do Java.� Quando o vetor ou matriz é inicializado o java divide este espaço da
memória em celulas
Matriz e Vetores
Exemplo
� Para preencher um vetor com o exemplo dos títulos de DVD o programa ficaria como o código abaixo :
String [] dvds = new String[8];
dvds[0] = “Green mile”;
dvds[1] =“Pay it forward”;dvds[2] =“A.I.”;
dvds[3] =“The Last Samurai”;
dvds[4] =“Brave Heart”;dvds[6] =“Patch Adams”;
Exercício
� Faça um programa que solicite 20 números ao usuário, armazene-os em um vetor e depois imprima na tela os vinte números juntamente com a soma e sua média aritmética
� Desafio : Modifique o programa anterior para mostrar os números na tela de forma ordenada.
Exercício
� Faça um programa que armazene um tabuleiro de Sudoku e preencha este tabuleiro com 10 números aleatoriamente.
� Faça também uma rotina para que o usuário possa colocar novos números neste tabuleiro, indicando qual linha, coluna e o número a ser colocado.
� Desafio : Modifique o programa anterior para que ele valide se o número pode ser colocado naquela posição conforme as regras do Sudoku