Matrizes (Vetores Bidimensionais) -...

51
Bacharelado em Ciência e Tecnologia Processamento da Informação Matrizes Matrizes (Vetores Bidimensionais)

Transcript of Matrizes (Vetores Bidimensionais) -...

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Matrizes (Vetores Bidimensionais)

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Objetivos Conceituação de Vetores Bidimensionais

Manipulação de Vetores Bidimensionais

Entender a diferença entre uso dos diferentes

vetores

Entender como manipular entrada, saída e

índices de vetores bidimensionais

Saber solucionar problemas de indexação de

matrizes bidimensionais

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Relembrando

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Permite a declaração de variáveis do tipo CONJUNTO Uma variável do tipo CONJUNTO pode armazenar mais de um valor.

No ato da declaração da variável deve-se informar o seu tamanho.

Para o problema de armazenar 10 notas, pode-se definir uma variável de tamanho 10 do tipo real.

Declaração:

real nota[ 10 ]

Vetores (No Portugol Studio)

nota

conteúdo 5.5 6.5 8.0 3.0 7.5 2.5 7.5 6.0 4.5 10.0

índice 0 1 2 3 4 5 6 7 8 9

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Declaração:

real nota[ 10 ]

A declaração acima cria em memória uma variável chamada NOTAcom 10 posições do tipo REAL

As 10 posições são numeradas de 0 a 9 (índice)

Vetores (No Portugol Studio)

• Acesso a variável:

Para acessar cada posição deve-se usar o nome da variável e a

sua posição ou índice (entre colchetes)

A instrução abaixo imprime O TERCEIRO ELEMENTO da variável NOTA.

• escreva(“ A TERCEIRA NOTA = ” , nota [ 2 ] )

O índice pode ser uma variável:

Ex. nota [ x ]

nota

conteúdo 5.5 6.5 8.0 3.0 7.5 2.5 7.5 6.0 4.5 10.0

índice 0 1 2 3 4 5 6 7 8 9

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

? ? ? ? ? ? ? ? ? ?

0 1 2 3 4 5 6 7 8 9

Mostrar as notas acima da média da turma

Lê as notas via teclado e guarda

no vetor

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Vetor no Portugol Studio

Verifica se cada nota armazenada está acima da média

nota

conteúdo 5.5 6.5 8.0 3.0 7.5 2.5 7.5 6.0 4.5 10.0

índice 0 1 2 3 4 5 6 7 8 9

media

6.1

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

PROBLEMA

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Problema

Escreva um programa para armazenar as notas de 20 alunos em 5 disciplinas.

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Escreva um programa para armazenar as notas de 20 alunos em 5 disciplinas.

ALUNOS DISC01 DISC02 DISC03 DISC04 DISC05

1 5,5 8,3 6,5 10,0 9,5

2 8,0 7,5 8,5 6,5 10,0

3 ... ... ... ... ...

4 ... ... ... ... ...

5 ... ... ... ... ...

6 ... ... ... ... ...

7 7,5 8,0 9,0 8,0 8,5

... 6,5 3,5 6,5 4,5 9,0

18 ... ... ... ... ...

19 ... ... ... ... ...

20 8,0 9,0 8,0 10,0 9,0

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Escreva um programa para armazenar as notas de 20 alunos em 5 disciplinas.

ALUNOS DISC01 DISC02 DISC03 DISC04 DISC05

1 5,5 8,3 6,5 10,0 9,5

2 8,0 7,5 8,5 6,5 10,0

3 ... ... ... ... ...

4 ... ... ... ... ...

5 ... ... ... ... ...

6 ... ... ... ... ...

7 7,5 8,0 9,0 8,0 8,5

... 6,5 3,5 6,5 4,5 9,0

18 ... ... ... ... ...

19 ... ... ... ... ...

20 8,0 9,0 8,0 10,0 9,0

Poderíamos enxergar essa

estrutura como:

• 5 vetores de 20 posições

• 20 vetores de 5 posições

Ou

1 matriz de 20 x 5

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

MATRIZES

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

MATRIZES

Matrizes são estruturas

MULTIDIMENSIONAIS (mais de uma

dimensão) capazes de armazenar dados

A figura abaixo representa uma matriz

BIDIMENSIONAL de números inteiros

10 5 33 41

53 20 -10 0

29 17 30 8

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Declaração de uma variável matriz

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

• tipo identificador [ linhas ] [ colunas];

• Exemplo:– inteiro A [ 3 ] [ 4] // declara a matriz A : 3 linhas e 4 colunas

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Acesso a elementos da matriz

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

• escreva ( A [ 2 ] [ 1 ]) // imprime o valor 17

A

• inteiro i = 0, j = 2

• escreva ( A [ i ] [ j ] ) // imprime o valor 33

• escreva ( A [ j ] [ i ] ) // imprime o valor 29

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Matrizes Bidimensionais Para acessar TODOS os elementos da matriz é necessário que os índices assumam todas as combinações possíveis

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

A

• (i, j)

• (0,0, (0,1) (0,2), (0, 3) i = 0 e j = 0, 1, 2, 3

• (1,0, (1,1) (1,2), (1, 3) i = 1 e j = 0, 1, 2, 3

• (2,0, (2,1) (2,2), (2, 3) i = 2 e j = 0, 1, 2, 3

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Matrizes Bidimensionais

Declaração de uma variável matriz (Java)

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

• Tipo <nome_var> [ linhas ] [ colunas];

• Exemplo:– int A [ ][ ] = new int [ 3 ] [ 4]; matriz A : 3 linhas e 4 colunas

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Acesso a elementos da matriz (Java)

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

• System.out.print( A [ 2 ] [ 1 ]); imprime o valor 17

A

• i = 0, j = 2;

• System.out.print ( A [ i ] [ j ] ); imprime o valor 33

• System.out.print ( A [ j ] [ i ] ); imprime o valor 29

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Problema

Escreva um programa para LER (via teclado) uma matriz de 3 x 4

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Declaração de Constantes

A vantagem de declarar

CONSTANTES quando se

usa vetores ou matrizes é

poder redimensionar

facilmente o conjunto

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Simulação da Execução

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

0 1 2 3

0

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

0 1 2 3

0 10

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

1

0 1 2 3

0 10

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

1

0 1 2 3

0 10 5

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

12

0 1 2 3

0 10 5

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

12

0 1 2 3

0 10 5 33

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

123

0 1 2 3

0 10 5 33

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

123

0 1 2 3

0 10 5 33 41

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

1234

0 1 2 3

0 10 5 33 41

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

1234

1 0

0 1 2 3

0 10 5 33 41

1

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

1234

1 0

0 1 2 3

0 10 5 33 41

1 53

2

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados l c0 0

1234

1 01234

2 01234

A0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8... e assim por diante ....

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Entrada de Dados – para

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Saída de Dados

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Problema

Escreva um programa para EXIBIR na tela uma matriz de 3 x 4. Considere que a matriz já está na memória.

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Saída de Dados0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

Al c0 0

1234

1 01234

2 01234

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Saída de Dados: Para - Até

0 1 2 3

0 10 5 33 41

1 53 20 -10 0

2 29 17 30 8

A

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

• MATRIZ permite declarar vetores BIDIMENSIONAIS (multidimensionais)

Coisas para não esquecer:

• Sintaxe para declaração de matriz (bidimensional):tipo identificador [quantidade linhas] [ quantidade colunas]

• Sintaxe para acesso ao vetor:identificador [indice_linha] [indice_coluna]

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Exemplo : Soma de Matrizes

+ =

+ =

Escreva uma função chamada Soma_Matrizes para obter a

soma de duas matrizes , armazenando o resultado numa

terceira matriz

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Soma de Matrizes

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Solução

Soma de Matrizes

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Soma de Matrizes

+ =

+ =

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Exemplo extra –

Imagem

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Extra: imagem = matrizConsidere a seguinte imagem “ufabc.pgm” no formatoPGM, onde na linha 1 mostra o tipo PGM, linha 2, dimensão da imagem (col x lin), linha 3 o valor máximo de cada pixel -:

P2

30 7

9

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 3 0 0 3 0 0 4 4 4 4 0 0 5 5 5 5 0 0 7 7 7 7 0 0 9 9 9 9 0

0 3 0 0 3 0 0 4 0 0 0 0 0 5 0 0 5 0 0 7 0 0 7 0 0 9 0 0 0 0

0 3 0 0 3 0 0 4 4 4 0 0 0 5 5 5 5 0 0 7 7 7 0 0 0 9 0 0 0 0

0 3 0 0 3 0 0 4 0 0 0 0 0 5 0 0 5 0 0 7 0 0 7 0 0 9 0 0 0 0

0 3 3 3 3 0 0 4 0 0 0 0 0 5 0 0 5 0 0 7 7 7 7 0 0 9 9 9 9 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Ler imagem do disco

saída

Usando Matriz

Bacharelado em Ciência e Tecnologia

Processamento da Informação

MatrizesExercício 1

Dada uma matriz MAT de 4x5 elementos, faça um

algoritmo para somar os elementos de cada linha

gerando o vetor SOMALINHA. Em seguida, somar os

elementos do vetor SOMALINHA na variável TOTAL,

que deve ser impressa no final.

48

5

1

)4,3,2,1(j

iji iMATSOMALINHA

4

1

i

i

TOTAL SOMALINHA

1 0 2 -1 3

4 3 2 1 0

1 -2 3 4 5

8 5 1 3 2

5

10

11

19

45

Exemplo:

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Exercício 2

Escreva um algoritmo capaz de ler um conjunto

de números inteiros e preencher uma matriz de

10x10. A partir daí, gere um vetor com os

maiores elementos de cada linha e outro vetor

com os menores elementos de cada coluna.

49

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Exercício 3

Escreva um algoritmo para a transposição de

matrizes.

Ele deve ser capaz de ler número inteiros para uma

matriz 10x10 e depois girar seus elementos 90º no

sentido horário, ou seja, a primeira coluna passa a

ser a primeira linha e assim por diante.

50

11 12 13 14

21 22 23 24

31 32 33 34

41 42 43 44

11 21 31 41

12 22 32 42

13 23 33 43

14 24 34 44

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Matrizes

Desafio: Multiplicação de matrizes!!

Dadas duas matrizes 3x3, determinar seu produto

R1,1 = A1,1*B1,1+A1,2*B2,1+A1,3*B3,1

R1,2 = A1,1*B1,2+A1,2*B2,2+A1,3*B3,2

R2,1 = A2,1*B1,1+A2,2*B2,1+A2,3*B3,1

R3,1 = A3,1*B1,1+A3,2*B2,1+A3,3*B3,1

R3,2 = A3,1*B1,2+A3,2*B2,2+A3,3*B,32

R3,3 = A3,1*B1,3+A3,2*B2,3+A3,3*B3,3

51