1 of 18

Matrizes

2 of 18

Matrizes

  • Armazenam vários elementos do mesmo tipo primitivo;
  • Têm mais de um índice de referência;
  • Uma matriz bidimensional é uma representação tabular (retangular, em linhas e colunas) de um conjunto de dados do mesmo tipo.

3 of 18

  • Exemplo: Matriz notas contendo notas de 3 avaliações de 5 alunos:
    • linhas representam alunos;
    • colunas representam as notas.
  • Então, pode-se dizer que a nota do 3º aluno na 2ª avaliação é 9.4.

Matrizes

0

1

2

0

8.9

7.4

5.7

1

6.9

2.7

4.0

2

9.5

9.4

8.6

3

4.9

8.9

6.3

4

7.2

9.9

7.7

notas

4 of 18

  • Em Python, uma opção simples consiste em representar matrizes como listas de listas

Criando matrizes a partir de listas

 

# Em Python:

matriz = [[2, 4], [7, 9]]

print(matriz)

>> [[2, 4], [7, 9]]

5 of 18

  • Basta usar um loop aninhado, ou seja, um loop dentro de outro loop e:
    • No loop externo, criar a linha, fazer o loop interno e adicionar a linha
    • No loop interno, adicionar as colunas de cada linha

Criando uma matriz com zeros

# Criando uma matriz de notas de

# 20 alunos em uma disciplina com 3 provas

notas = []

for i in range(20):

linha = []

for j in range(3):

linha.append(0)

notas.append(linha)

6 of 18

  • Basta usar a seguinte convenção:

Acesso aos elementos de uma matriz

matriz[linha][coluna]

Exemplos:

  • Armazenando o valor 9.4 na 3ª linha e 2ª coluna da matriz notas:

notas[2][1] = 9.4

  • Lendo um número real do teclado e armazenando-o na 1ª linha e 2ª coluna da matriz notas:

notas[0][1] = float(input('Digite a nota'))

7 of 18

# Primeiro, criamos uma matriz tabela de 4 por 5 com zeros:

tabela = []

for i in range(0,4):

linha = []

for j in range(0,5):

linha.append(0)

tabela.append(linha)

# Na representação ao lado,

# os espaços vazios são zeros.

0

1

2

3

4

0

1

2

3

Acesso aos elementos de uma matriz

8 of 18

tabela[0][0] = 20

0

1

2

3

4

0

1

2

3

Acesso aos elementos de uma matriz

20

9 of 18

tabela[0][0] = 20

tabela[3][4] = 70

0

1

2

3

4

0

1

2

3

Acesso aos elementos de uma matriz

70

20

10 of 18

tabela[0][0] = 20

tabela[3][4] = 70

tabela[0][2] = -15

0

1

2

3

4

0

1

2

3

Acesso aos elementos de uma matriz

70

20

-15

11 of 18

tabela[0][0] = 20

tabela[3][4] = 70

tabela[0][2] = -15

tabela[1][2] = 0

0

1

2

3

4

0

1

2

3

Acesso aos elementos de uma matriz

70

20

-15

0

12 of 18

tabela[0][0] = 20

tabela[3][4] = 70

tabela[0][2] = -15

tabela[1][2] = 0

tabela[1][3] = 7

0

1

2

3

4

0

1

2

3

Acesso aos elementos de uma matriz

70

20

-15

0

7

13 of 18

Exemplo1: Programa que lê 3 notas de 5 alunos e as armazena em uma matriz de ordem 5 X 3 de números reais, e em seguida imprime os valores lidos.

notas = []

for i in range(5):

linha = []

for j in range(3):

print('Para o aluno %d, digite a nota %d: ' % (i+1,j+1))

nota = float(input())

linha.append(nota)

notas.append(linha)

print('\nValores lidos:\n')

for i in range(5):

for j in range(3):

print('%5.1f' % notas[i][j], end = '')

print()

14 of 18

Exemplo 2: Programa que leia duas matrizes inteiras 3 X 4 e obtenha uma terceira matriz resultado da soma das duas anteriores. Imprima a matriz resultante.

a, b, c = [], [], []

for i in range(3):

linha = []

for j in range(4):

print('Digite o elemento %d,%d da matriz A: ' % (i+1,j+1))

elemento = int(input())

linha.append(elemento)

a.append(linha)

for i in range(3):

linha = []

for j in range(4):

print('Digite o elemento %d,%d da matriz B: ' % (i+1,j+1))

elemento = int(input())

linha.append(elemento)

b.append(linha)

for i in range(3):

linha = []

for j in range(4):

elemento = a[i][j] + b[i][j]

linha.append(elemento)

c.append(linha)

print('\nMatriz C resultante da soma de A e B:\n')

for i in range(3):

for j in range(4):

print('%5d ' % c[i][j], end = '')

print()

15 of 18

Alterando o Exemplo 2 para ter um loop a menos:

Mais eficiência nem sempre significa correção

a, b, c = [], [], []

for i in range(3):

linha = []

for j in range(4):

print('Digite o elemento %d,%d da matriz A: ' % (i+1,j+1))

elemento = int(input())

linha.append(elemento)

a.append(linha)

for i in range(3):

linha = []

for j in range(4):

print('Digite o elemento %d,%d da matriz B: ' % (i+1,j+1))

elemento = int(input())

linha.append(elemento)

b.append(linha)

print('\nMatriz C resultante da soma de A e B:\n')

for i in range(3):

linha = []

for j in range(4):

elemento = a[i][j] + b[i][j]

linha.append(elemento)

print('%5d ' % c[i][j], end = '') # esta linha tem um erro

c.append(linha) # somente após adicionar a linha, pode-se indexar c[i][j]

print()

16 of 18

Exemplo 3: Programa que leia uma matriz 20x10 de números inteiros e calcule e imprima a soma de cada uma das linhas da matriz.

a = []

for i in range(20):

linha = []

for j in range(10):

print('Digite o elemento %d,%d da matriz A: ' % (i+1,j+1))

elemento = int(input())

linha.append(elemento)

a.append(linha)

print('\nSomas das linhas da matriz:\n')

for i in range(20):

soma = 0

for j in range(10):

soma += a[i][j]

print('A soma dos elementos da linha %d é: %d.' % (i+1, soma))

17 of 18

Alterando o Exemplo 3 para usar um vetor de somas:

Vetores derivados de matrizes podem ser úteis em certas situações

a = []

for i in range(20):

linha = []

for j in range(10):

print('Digite o elemento %d,%d da matriz A: ' % (i+1,j+1))

elemento = int(input())

linha.append(elemento)

a.append(linha)

print('\nSomas das linhas da matriz:\n')

somas = []

for i in range(20):

somas.append(0)

for j in range(10):

somas[i] += a[i][j]

print('A soma dos elementos da linha %d é: %d.' % (i+1, somas[i]))

18 of 18

Exercícios

  • Escreva um programa que leia um número inteiro e uma matriz 4 x 4 de inteiros, e obtenha uma segunda matriz resultado do produto da matriz original pelo número lido. Imprima a matriz resultado.
  • Escreva um programa que leia uma matriz 10x10 e encontre e imprima o maior e o menor elemento da matriz.
  • Escreva um programa que leia as notas das 5 provas de 50 alunos e armazene-as em uma matriz e calcule e imprima as médias das 5 notas de cada um dos 50 alunos. Calcule ainda a maior média e a quantidade de alunos com média maior ou igual a 7.