aula 10 matrizes computador

51
BC0505 - Processamento da Informa¸c˜ ao Matrizes Marcio K. Oikawa (Teoria) Mar¸co/2015 Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informa¸c˜ ao

Upload: brunomatos7

Post on 09-Dec-2015

221 views

Category:

Documents


0 download

DESCRIPTION

aula

TRANSCRIPT

Page 1: Aula 10 Matrizes computador

BC0505 - Processamento da InformacaoMatrizes

Marcio K. Oikawa (Teoria)

Marco/2015

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 2: Aula 10 Matrizes computador

Introducao

Estudaremos nesta aula:

O que sao matrizes?

Qual a relacao entre vetores e matrizes?

Como trabalhar com matrizes e seus algoritmos em Java?

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 3: Aula 10 Matrizes computador

Introducao

Uma matriz pode ser vista como uma generalizacao de vetores (ovetor e um caso particular de matriz). Exceto por sua estrutura, osobjetivos e caracterısticas da matriz sao bem similares aos vetores:

Estruturas de armazenamento que pode guardar varios valoresao mesmo tempo;

Permite o processamento homogeneo de varios valores aomesmo tempo.

Esta ligado a muitas aplicacoes praticas.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 4: Aula 10 Matrizes computador

Matrizes

Sao caracterısticas de uma matriz:

Armazena varios valores em uma unica variavel;

Os valores sao armazenados em posicoes indexadas, assimcomo o vetor, mas temos dois ındices de referencia (linha ecoluna);

Os ındices sao numeros inteiros, organizados de formacrescente a partir de 0, tanto para linhas quanto para colunas;

Todos os valores sao obrigatoriamente do mesmo tipo.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 5: Aula 10 Matrizes computador

Visao abstrata de uma matriz

Declaracao de uma matriz M

int M[][] = new int [4][5];

0

1

2

3

0 1 2 3 4

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 6: Aula 10 Matrizes computador

Declaracao de vetores em Java

Sintaxe:

<tipo> <nome>[][] = new <tipo> [<lin>][<col>];

<tipo>[][] <nome> = new <tipo> [<lin>][<col>];

<tipo>[] <nome>[] = new <tipo> [<lin>][<col>];

Semantica:

A declaracao de uma matriz e similar a um vetor convencional. Adiferenca e que deve-se declarar os dois ındices (quando a matrizfor bidimensional).

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 7: Aula 10 Matrizes computador

Visao esquematica de uma matriz

Declaracao de V

int M[][] = new int [4][5];

0

1

2

3

0 1 2 3 4

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 8: Aula 10 Matrizes computador

Acessando elementos da matriz

-3 3 -1 11 9

4 0 3 2 13

21 5 2 5 6

8 -4 -8 7 4

0

1

2

3

0 1 2 3 4

int a = 3;

M[0][3] = a;

M[2][2] = M[1][3] + M[0][2];

M[3][4] = 32;

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 9: Aula 10 Matrizes computador

Exemplo 1

Escreva um algoritmo encontra o menor elemento de uma matriz 3x 4 de numeros inteiros. Preencha inicialmente a matriz comvalores aleatorios.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 10: Aula 10 Matrizes computador

Exemplo

Algoritmo 1: Identificacao do menor numero inteiro

1: inteiro: M[3][4]2:

3: {Primeiro, preencha a matriz...}4: para i ← 0 ate 3 faca5: para j ← 0 ate 4 faca6: M[i][j] ← Aleatorio()7: fim para8: fim para9: ...

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 11: Aula 10 Matrizes computador

Exemplo

Algoritmo 2: Identificacao do menor numero inteiro1: ...2: {... e depois ache o menor elemento}3: menor ← M[0][0]4:

5: para i ← 0 ate 3 faca6: para j ← 0 ate 4 faca7: se M[i][j] < menor entao8: menor ← M[i][j]9: fim se

10: fim para11: fim para12:

13: escreva (”O menor elemento eh”)14: escreva (menor)

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 12: Aula 10 Matrizes computador

Em Java

Codificando em Java ...

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 13: Aula 10 Matrizes computador

Em Java

Alguns detalhes sobre matrizes em Java:

O numero de elementos e obrigatoriamente um numero inteiropositivo;

Pode-se descobrir a quantidade de elementos do vetoracessando o atributo length;

Descobrindo a dimensao da matriz

int M[][] = new int [10][12];int linhas = M.length;int colunas = M[0].length;

Acesso a celulas nao alocadas do vetor provocam erro deexecucao.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 14: Aula 10 Matrizes computador

Outro exemplo

Escreva um algoritmo que calcula a soma dos elementos de umamatriz 2 x 3, preenchida com numeros inteiros aleatorios.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 15: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){

soma = soma + M[i][j];

}}

i j M[i][j] soma

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 16: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){

soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 17: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for ( int i=0 ; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 X X 0

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 18: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2 ; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 X X 0

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 19: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for ( int j=0 ; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 0

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 20: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 0

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 21: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 22: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 -2

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 23: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 -2

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 24: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 25: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 26: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 27: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 28: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 29: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 30: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 31: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++ ){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 X X 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 32: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for ( int j=0 ; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 33: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 6

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 34: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 35: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 10

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 36: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 10

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 37: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 38: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 9

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 39: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 9

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 40: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 41: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 42: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 43: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 44: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++ ){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

2 X X 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 45: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2 ; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

2 X X 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 46: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

2 X X 12

X X X 12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 47: Aula 10 Matrizes computador

Exemplo

-2 8 0

4 -1 3

0

1

0 1 2

int soma = 0;

for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];

}}

i j M[i][j] soma

X X X 0

0 0 -2 -2

0 1 8 6

0 2 0 6

0 3 X 6

1 0 4 10

1 1 -1 9

1 2 3 12

1 3 X 12

2 X X 12

X X X 12

12

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 48: Aula 10 Matrizes computador

Exercıcios

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 49: Aula 10 Matrizes computador

Exercıcio 1

Escreva um algoritmo que calcula a matriz transposta de umamatriz M 4x5, preenchida com numeros inteiros aleatorios.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 50: Aula 10 Matrizes computador

Exercıcio 2

Dadas duas matrizes A e B (4x5), de numeros inteiros, escreva umalgoritmo que calcula a soma A + B.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao

Page 51: Aula 10 Matrizes computador

Exercıcio 3

Dadas duas matrizes A (2x3) e B (3x4), de numeros inteiros,escreva um algoritmo que calcula a multiplicacao A x B.

Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao