29
Matrizes Leonardo Murta [email protected]

Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Matrizes

Leonardo [email protected]

Page 2: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Matrizes} Variável composta multidimensional

} É equivalente a um vetor, contudo permite a utilização de diversas dimensões acessadas via diferentes índices

} Pode ser pensada como um vetor onde cada célula é outro vetor

} Em diversas situações matrizes são necessárias para correlacionar informações

2

Page 3: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo motivacional} Assumindo que um aluno é avaliado com cinco

notas, seria necessário um vetor de cinco posições para guardar as notas de um aluno...

0 1 2 3 4

10.0 7.0 9.0 5.5 6.0notas

3

Page 4: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo motivacional} Contudo, assumindo que uma turma tem três

alunos, seria necessária uma matriz bidimensional para guardar as notas de todos os alunos de uma turma...

5.0

alunos 2.1

8.6

0

1

2

4.5

6.5

7.0

7.0

8.0

9.1

5.2

7.0

8.7

6.1

6.7

9.3

notas

0 1 2 3 4

notas = [[5.0, 4.5, 7.0, 5.2, 6.1], [2.1, 6.5, 8.0, 7.0, 6.7], [8.6, 7.0, 9.1, 8.7, 9.3]]

4

Page 5: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo motivacional} Contudo, assumindo que uma turma tem três

alunos, seria necessária uma matriz bidimensional para guardar as notas de todos os alunos de uma turma...

5.0

alunos 2.1

8.6

0

1

2

4.5

6.5

7.0

7.0

8.0

9.1

5.2

7.0

8.7

6.1

6.7

9.3

notas

0 1 2 3 4

notas = [[5.0, 4.5, 7.0, 5.2, 6.1], [2.1, 6.5, 8.0, 7.0, 6.7], [8.6, 7.0, 9.1, 8.7, 9.3]]

5

Page 6: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo motivacional} Na verdade, na memória

seria algo assim...

5.0

notas

4.5

7.0

0

1

20

5.2

6.1

7.0

9.1

3

4

0

1

22

...

8.7

9.3

3

4

6

Page 7: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Acesso aos valores: [linha][coluna]} Segunda nota do primeiro aluno>>> notas[0][1]4.5

} Quinta nota do terceiro aluno>>> notas[2][4]9.3

5.0

alunos 2.1

8.6

0

1

2

4.5

6.5

7.0

7.0

8.0

9.1

5.2

7.0

8.7

6.1

6.7

9.3

notas

0 1 2 3 4

7

Page 8: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Calcular a média da turmanotas = [[5.0, 4.5, 7.0, 5.2, 6.1], [2.1, 6.5, 8.0, 7.0, 6.7], [8.6, 7.0, 9.1, 8.7, 9.3]]#calcula a médiamedia = 0#for para percorrer as linhasfor i in range(3):

#for para percorrer as colunasfor j in range(5):

media = media + notas[i][j]media = media / 15print(media)

8

Page 9: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Preencher a matriz por leituranotas = []for i in range(3):

# cria linha vazialinha = []for j in range(5):

#vai adicionando as notas na linhalinha.append(eval(input('Digite a

nota [' + str(i) + ',' + str(j) + ']:')))#adiciona a linha na matriz turmanotas.append(linha)

9

Page 10: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo} Programa que cria uma matriz n x m preenchida com zeros

n = eval(input('Digite a dimensão n da matriz: '))m = eval(input('Digite a dimensão m da matriz: '))matriz = []for i in range(n):

linha = []for j in range(m):

linha.append(0)matriz.append(linha)

print(matriz)

10

Page 11: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Simplificando o exemplo} Programa que cria uma matriz n x m preenchida com zeros

n = eval(input('Digite a dimensão n da matriz: '))m = eval(input('Digite a dimensão m da matriz: '))matriz = []for i in range(n):

matriz.append([0]*m)print(matriz)

11

Page 12: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Imprimir em forma de matriz} Programa que cria uma matriz n x m preenchida com

zeros e a imprime no formato de matriz

n = eval(input('Digite a dimensão n da matriz: '))m = eval(input('Digite a dimensão m da matriz: '))matriz = []for i in range(n):

matriz.append([0]*m)#imprimir em formato de matrizfor i in range(n):

print(matriz[i])

12

Page 13: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo Contar Pares} Programa que lê uma matriz 3x3 digitada pelo usuário e

conta quantos números pares existem na matriz, imprimindo na tela o resultado e a matriz.

13

Page 14: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo Contar Paresmatriz = []for i in range(3):

linha = []for j in range(3):

linha.append(eval(input('Digite o valor de [' + str(i) + ',' + str(j) + ']:')))

matriz.append(linha)#contar parespares = 0for i in range(3):

for j in range(3):if matriz[i][j] % 2 == 0:

pares += 1#imprimir em formato de matrizfor i in range(3):

print(matriz[i])#imprimir qtde de números paresprint('A matriz contém', pares, 'números pares')

14

Page 15: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

for iterando sobre valores} Um comando for também pode iterar sobre valores de

uma lista

lista = [1,2,4,5,7,8,9]for i in lista:

print(i)

15

Page 16: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Variação Exemplo Contar Paresmatriz = []for i in range(3):

linha = []for j in range(3):

linha.append(eval(input('Digite o valor de [' + str(i) + ',' + str(j) + ']:')))

matriz.append(linha)#contar parespares = 0for linha in matriz:

for valor in linha:if valor % 2 == 0:

pares += 1#imprimir em formato de matrizfor linha in matriz:

print(linha)#imprimir qtde de números paresprint('A matriz contém', pares, 'números pares’)

16

Page 17: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Python permite misturar tipos em uma matriz} Exemplo: programa que armazena os nomes e idades de 10

pessoas em uma matriz, e imprime o nome da pessoa mais nova

17

Page 18: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Encontra a pessoa mais novam = []#preenche a matrizfor i in range(10):

linha = []linha.append(input('Digite o nome da pessoa ' +

str(i) + ':'))linha.append(eval(input('Digite a idade de ' +

linha[0] + ':')))m.append(linha)

#procura a pessoa mais novamenor = m[0][1]pos = 0for i in range(10):

if m[i][1] < menor:menor = m[i][1]pos = i

#imprime a matrizfor i in range(10):

print(m[i])print('A pessoa mais nova é', m[pos][0])

18

Page 19: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Matrizes} Uma matriz pode ter um número qualquer de dimensões!

Basta usar um índice para cada dimensão.

19

Page 20: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exemplo motivacional} Ainda, assumindo que um curso tem duas turmas,

seria necessária uma matriz tridimensional para guardar as notas de todos os alunos de todas as turmas do curso.

20

Page 21: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Atribuição>>> notas = [[[5.0, 4.5, 7.0, 5.2, 5.1],[2.1,6.5,8.0,7.0,6.7],[8.6,7.0,9.1,8.7,9.3]],[[4.2,5.1,6.0,5.4,5.1],[9.0,8.0,7.5,8.1,8.8],[2.3,4.4,6.7,6.6,7.0]]]

Turma 0

21

Page 22: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Atribuição>>> notas = [[[5.0, 4.5, 7.0, 5.2, 5.1],[2.1,6.5,8.0,7.0,6.7],[8.6,7.0,9.1,8.7,9.3]],[[4.2,5.1,6.0,5.4,5.1],[9.0,8.0,7.5,8.1,8.8],[2.3,4.4,6.7,6.6,7.0]]]

Aluno 0 da turma 0

22

Page 23: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Acesso a elemento>>> notas = [[[5.0, 4.5, 7.0, 5.2, 5.1],[2.1,6.5,8.0,7.0,6.7],[8.6,7.0,9.1,8.7,9.3]],[[4.2,5.1,6.0,5.4,5.1],[9.0,8.0,7.5,8.1,8.8],[2.3,4.4,6.7,6.6,7.0]]]

>>> print(notas[0][1][0])

2.1

TurmaAluno

Nota

23

Page 24: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exercícios1. Faça um programa que leia uma matriz 3x3 e

multiplique os elementos da diagonal principal da matriz por um número k. Imprima a matriz na tela antes e depois da multiplicação.

2. Faça um programa que leia duas matrizes A e B 2x2 e imprima a matriz C que é a soma das matrizes A e B.

3. Faça um programa que leia as dimensões de duas matrizes A e B, e depois leia as duas matrizes. Se as matrizes forem de tamanhos compatíveis para multiplicação, multiplique as matrizes. Imprima as matrizes A, B e a matriz resultante da multiplicação.

24

Page 25: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exercícios4. Faça um programa que leia uma matriz 3x3 de inteiros e

retorne a linha de maior soma. Imprima na tela a matriz, a linha de maior soma e a soma.

5. Faça um programa que leia a ordem de uma matriz quadrada A (até 100), posteriormente leia seus valores e escreva sua transposta AT, onde AT[i][j] = A[j][i]

6. Uma pista de Kart permite 10 voltas para cada um de 6 corredores. Faça um programa que leia os nomes e os tempos (em segundos) de cada volta de cada corredor e guarde as informações em uma matriz. Ao final, o programa deve informar:

a. De quem foi a melhor volta da prova, e em que voltab. Classificação final em ordem (1º. o campeão)c. Qual foi a volta com a média mais rápida

25

Page 26: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exercícios7. Faça um programa que leia uma matriz 6x3 com

números reais, calcule e mostre: (a) o maior elemento da matriz e sua respectiva posição (linha e coluna); (b) o menor elemento da matriz e sua respectiva posição.

8. Faça um programa que leia duas matrizes A e B e verifica se ambas são inversas (ou seja, se a multiplicação de A por B é a matriz identidade).

9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro de jogo da velha e indique qual posição deveria ser jogada para ganhar o jogo (se possível) ou ao menos evitar uma derrota.

26

Page 27: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Exercícios10. Faça um programa que lê duas notas para cada aluno de

duas turmas. Cada turma tem 3 alunos. Armazene osdados em uma matriz M. Cada aluno deve ter três notas(as duas digitadas e a média dessas duas). Calcule a média de cada turma e armazene em um vetor TURMA. Informe qual turma tem maior média, e quais alunostiveram média maior que a média de sua turma.

27

Page 28: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Referências

28

} Slides preparados em conjunto com Vanessa Braganholo e Aline Paes

Page 29: Matrizes - ic.uff.brleomurta/courses/prog/aula8.pdf · multiplicação de A por Bé a matriz identidade). 9. Faça um programa que leia uma matriz 3x3 que representa um tabuleiro

Matrizes

Leonardo [email protected]