Escolar Documentos
Profissional Documentos
Cultura Documentos
Arranjos Simples 2D
(matrizes)
1
Arranjos multidimensionais
M índices 0 1 2 3
INF 100 – Introdução à Programação
0 1 2.5 0 -4
1 0 1 -2 0.5
2 0 4 1 0.7
2
2
Departamento de Informática
Arranjos Multidimensionais
M índices 0 1 2 3
INF 100 – Introdução à Programação
0 1 2.5 0 -4
1 0 1 -2 0.5
Espaço alocado
2 0 4 1 0.7 na memória
[
[1, 2.5, 0, -4],
Representação em Python:
[0, 1, -2, 0.5],
[0, 4, 1, 0.7]
]
3
3
Departamento de Informática
Arranjos Multidimensionais
M[i][j] # ref. a linha i, coluna j da matriz
INF 100 – Introdução à Programação
j j j j
M
índices 0 1 2 3
i 0 1 2.5 0 -4
i 1 0 1 -2 0.5
i 2 0 4 1 0.7
4
4
Departamento de Informática
Exercício 1
• Escreva um programa em Phyton program para representar
o estado do “Jogo da Velha”usando um aranjo 3x3. Células
INF 100 – Introdução à Programação
O X 2 0 1
O X 2 1 0
X 1 0 0
2 1 0
• Exemplo de execução: 1 0 0
• Exemplo de execução:
6
6
Departamento de Informática
INF 100 – Introdução à Programação
Solução:
7
7
Departamento de Informática
Percorrendo Matrizes
INF 100 – Introdução à Programação
8
8
Departamento de Informática
Percorrendo Matrizes
INF 100 – Introdução à Programação
9
9
Departamento de Informática
Percorrendo Matrizes
INF 100 – Introdução à Programação
10
10
Departamento de Informática
Arranjos Multidimensionais
# Ler uma matriz elemento por elemento...
INF 100 – Introdução à Programação
import numpy as np
11
11
Departamento de Informática
Arranjos Multidimensionais
# Ler uma matriz elemento por elemento (qualquer tamanho)
INF 100 – Introdução à Programação
import numpy as np
# criar matriz A: m x n
A = np.empty( (m, n) )
12
12
Departamento de Informática
Arranjos Multidimensionais em Python
# Escrever uma matriz de inteiros na tela
INF 100 – Introdução à Programação
# (formatada)
Resultado:
mi = np.array([[1, 2, 3],
[4, 5, 6], 1 2 3
4 5 6
[7, 8, 9], 7 8 9
[10, 11, 12]]) 10 11 12
13
13
Departamento de Informática
Arranjos Multidimensionais em Python
# Escrever uma matriz de float na tela
INF 100 – Introdução à Programação
# (formatada)
Resultado:
mf = np.array([[1.1, 2.5, 3],
[4, 5.2, 6], 1.1 2.5 3.0
4.0 5.2 6.0
[7.8, 8, 9.9], 7.8 8.0 9.9
[10, 11, 12.3]]) 10.0 11.0 12.3
14
14
Departamento de Informática
Exercício 2
• Faça um programa que leia os dados de uma
INF 100 – Introdução à Programação
15
15
Departamento de Informática
INF 100 – Introdução à Programação
Solução:
16
16
Departamento de Informática
Exercício 3
• Faça um programa que leia os dados de uma
INF 100 – Introdução à Programação
17
17
Departamento de Informática
INF 100 – Introdução à Programação
Solução:
18
18
Departamento de Informática
Exercício 4
• Faça um programa que leia os dados de uma
INF 100 – Introdução à Programação
19
19
Departamento de Informática
INF 100 – Introdução à Programação
Solução:
20
20
Departamento de Informática
Exercício 5
• Faça um programa que leia os dados de uma
INF 100 – Introdução à Programação
21
21
Departamento de Informática
INF 100 – Introdução à Programação
Solução:
22
22
Departamento de Informática
Exercício 6
• Faça um programa que leia os dados de uma
INF 100 – Introdução à Programação
23
23
Departamento de Informática
INF 100 – Introdução à Programação
Solução:
24
24
Departamento de Informática
Exercício 7
• Faça um programa que leia os dados de uma
INF 100 – Introdução à Programação
25
25
Departamento de Informática
Solução
import numpy as np
print('\nMatriz lida:\n')
for i in range(0, m):
for j in range(0, n):
print('%6.1f' % ( A[i][j] ), end='')
print()
B = np.zeros( m )
for i in range(0, m):
for j in range(0, n):
B[i] = B[i] + A[i][j]
C = np.zeros( n )
for j in range(0, n):
for i in range(0, m):
C[j] = C[j] + A[i][j]
# Escreve B
print('\nB = ', end='')
for i in range(0, m):
print('%6.1f' % ( B[i] ), end='')
print()
# Escreve C
print('\nC = ', end='')
for i in range(0, n):
print('%6.1f' % ( C[i] ), end='')
print()
26
26
Departamento de Informática
Imagens Digitais
INF 100 – Introdução à Programação
1 pixel
27
27
Departamento de Informática
Imagens Digitais
INF 100 – Introdução à Programação
Imagem colorida:
1 pixel
Cada componente (RGB) do
pixel é um valor entre 0 e 255
Monitor / TV
28
28
Departamento de Informática
Processamento Digital de Imagens
Algoritmo Genérico
INF 100 – Introdução à Programação
29
29
Departamento de Informática
Processamento Digital de Imagens
Algoritmo Genérico
INF 100 – Introdução à Programação
30
30
Departamento de Informática
Exercício 8
• Faça um programa que:
INF 100 – Introdução à Programação
31
31
Departamento de Informática
Solução
import imagens
INF 100 – Introdução à Programação
im = imagens.Imagem('lenna_original_RGB.jpg')
im.mostrar() # Mostrar a imagem na tela
Em imagens coloridas, cada pixel é
# Produz imagem negativa composto por 3 componentes:
for i in range( 0, im.altura ): r (red, vermelho)
for j in range( 0, im.largura ): g (green, verde)
b (blue, azul)
r, g, b = im[i][j]
Cada componente é um valor inteiro
0..255
im[i][j] = (r,g,b)
im.mostrar()
32
32
Departamento de Informática
Exercício 9
• Faça um programa que gera uma matriz
INF 100 – Introdução à Programação
33
33
Departamento de Informática
Solução
import numpy as np
A = np.random.random( (m, m) ) * 10
print('\nMatriz lida:\n')
for i in range(0, m):
for j in range(0, m):
print('%6.1f' % ( A[i][j] ), end='')
print()
p = 1
for i in range(0, m):
p = p * A[i][i]
print('\nProduto dos elementos da diagonal principal = %.1f’ % p )
p = 1
for i in range(0, m):
p = p * A[i][m-1-i]
print('Produto dos elementos da diagonal secundária = %.1f’ % p )
# Calculando a média...
soma = 0
for i in range(0, m):
for j in range(0, m):
soma = soma + A[i][j]
media = soma/(m*m)
print('Média dos elementos da matriz: %.1f’ % media )
35
35
Departamento de Informática
Solução
import numpy as np for k in range(0, n):
import sys soma = soma + A[i][k] * B[k][j]
C[i][j] = soma
INF 100 – Introdução à Programação
# Calculando o produto...
C = np.empty( (m, p) )
for i in range(0, m):
for j in range(0, p): 36
soma = 0 36
Departamento de Informática
Exercício 11
• Faça um programa que implementa o seguinte
INF 100 – Introdução à Programação
37
37
Departamento de Informática
Solução
import random
import numpy as np
INF 100 – Introdução à Programação
random.seed()
# Transpor a matriz A
print('\nTranspondo matriz A...')
for i in range(0, n):
for j in range(i+1, n):
A[i][j], A[j][i] = A[j][i], A[i][j]
38
38
Departamento de Informática
Exercício 12
• Faça um programa que implementa o seguinte
INF 100 – Introdução à Programação
39
39
Departamento de Informática
Solução
import random
import numpy as np
INF 100 – Introdução à Programação
random.seed()
# Transpor a matriz A
print('\nTranspondo matriz A...')
B = np.empty( (n, m) )
for i in range(0, m):
for j in range(0, n):
B[j][i] = A[i][j]
41
41
Departamento de Informática
Exercício 13
Exemplo de execução
• Obs.: suponha que as bombas são representadas pelo valor 9.
INF 100 – Introdução à Programação
Distribuindo as bombas:
0 0 0 0
0 9 9 0
9 9 0 0
0 0 9 0
42
42
Departamento de Informática
Solução
import numpy as np for j in range(0, n):
import random if campo[i][j] == bomba:
INF 100 – Introdução à Programação
43
for i in range(0, n): 43
Departamento de Informática