Exercício 1

Autor: Rodrigo Mologni Gonçalves dos Santos
Data: 09/03/2009
Item Enunciado Estado
1 Se registrar no Adessowiki e criar a sua página de diário do curso. Concluído
2 Estudar o Python (primer ou tutorial) http://docs.python.org/tutorial. Concluído
3 Estudar o NumPy (tutorial, para entender arrays e pequenos truques de processamento de imagem). http://www.scipy.org/Tentative_NumPy_Tutorial. Concluído
4 Fazer um exercício que mostre os principais conceitos aprendidos. Procure fazer exercícios com matriz numérica de tamanho reduzido. Concluído
5 Estudar formas de gerar uma imagem xadrez e implementar algumas de sua preferência. Veja em: http://calhau.dca.fee.unicamp.br/wiki/index.php/IA354I1S2007_Exercicios. Concluído

Item 1

Conta de acesso criada com o nome de usuário mologni.

Item 2

  • O website http://www.pdfchm.com disponibiliza gratuitamente para download os livros Beginning Python: From Novice To Professional e Learning Python em formato digital (PDF);
  • O website http://www.pythonbrasil.com.br também disponibiliza gratuitamente diversas apostilas sobre a linguagem de programação Python.

Item 3

Item 4

  • Exemplo de indexação de sequência por meio de linguagem de programação matricial.
 1 x = arange(20)                 # cria um vetor com 20 elementos, variando de 0 a 19
 2 
 3 print 'x         =', x         # imprime todos os elementos
 4 print 'x[10]     =', x[10]     # imprime o elemento da posição 10
 5 print 'x[:10]    =', x[:10]    # imprime todos os elementos da posição 0 a 10
 6 print 'x[5:15:3] =', x[5:15:3] # imprime de 3 em 3 todos os elementos da posição 5 a 15
 7 print 'x[:10:2]  =', x[:10:2]  # imprime de 2 em 2 todos os elementos de 0 a 10
 8 print 'x[10::-2] =', x[10::-2] # imprime de 2 em 2 todos os elementos de 10 a 0 em ordem decrescente
 9 print 'x[::-1]   =', x[::-1]   # imprime todos os elementos de 0 a 20 em ordem decrescente
10 print 'x[:100]   =', x[:100]   # imprime todos os elementos de 0 a 100
11 print 'x[-200:4] =', x[-200:4] # imprime todos os elementos de -200 a 4
x         = [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
x[10]     = 10
x[:10]    = [0 1 2 3 4 5 6 7 8 9]
x[5:15:3] = [ 5  8 11 14]
x[:10:2]  = [0 2 4 6 8]
x[10::-2] = [10  8  6  4  2  0]
x[::-1]   = [19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0]
x[:100]   = [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
x[-200:4] = [0 1 2 3]
  • Exemplo de funções para operações matriciais.
1 x = arange(10)       # cria um vetor com 10 elementos, variando de 0 a 19
2 
3 print 'x              =', x              # imprime todos os elementos
4 print 'add(x, 5)      =', add(x, 5)      # imprime a soma de todos elementos com 5
5 print 'subtract(x, 4) =', subtract(x, 4) # imprime a subtração de todos elementos com 4
6 print 'multiply(x, 3) =', multiply(x, 3) # imprime a multiplicação de todos elementos com 3
7 print 'divide(x, 2)   =', divide(x, 2)   # imprime a divisão de todos elementos com 2
x              = [0 1 2 3 4 5 6 7 8 9]
add(x, 5)      = [ 5  6  7  8  9 10 11 12 13 14]
subtract(x, 4) = [-4 -3 -2 -1  0  1  2  3  4  5]
multiply(x, 3) = [ 0  3  6  9 12 15 18 21 24 27]
divide(x, 2)   = [0 0 1 1 2 2 3 3 4 4]

Item 5

  • Gerando um tabuleiro de xadrez por meio de iteração.
 1 # row    = número de linhas
 2 # column = número de colunas
 3 # size   = tamanho do pixel
 4 
 5 def chessboard(row, column, size):
 6     # cria uma matriz de valore nulos
 7     image = numpy.zeros([row * size, column * size])
 8 
 9     # percorre todas as células da matriz
10     for i in range(0, row * size):
11         for j in range (0, column * size):
12 
13             # a célula da matriz recebe valor igual a um, caso a equação seja verdadeira
14             image[i, j] = (i / size + j / size) % 2
15 
16     # gera uma imagem a partir de uma matriz
17     mmshow(image, title='Tabuleiro de xadrez por meio de iteração.');
18 
19 chessboard(4, 6, 50)

Tabuleiro de xadrez por meio de iteração.

 1 # row    = número de linhas
 2 # column = número de colunas
 3 # size   = tamanho do pixel
 4 
 5 def chessboard(row, column, size):
 6     # cria uma matriz de valores nulos
 7     image = numpy.zeros([row, column])
 8 
 9     # percorre todas as células da matriz, intercalando-as e adicionando valor igual a um
10     image[ ::2, 1::2] = 1
11     image[1::2,  ::2] = 1
12 
13     # calcula Produto de Kronecker entre a matriz 'image' e uma matriz de valores igual a um
14     image = numpy.kron(image, numpy.ones([size, size]))
15 
16     # gera uma imagem a partir de uma matriz
17     mmshow(image, title='Tabuleiro de xadrez por meio de linguagem de programação matricial.');
18 
19 chessboard(4, 6, 50)

Tabuleiro de xadrez por meio de linguagem de programação matricial.

  • Gerando um tabuleiro de xadrez com duas intensidades luminosas específicas.
 1 # row     = número de linhas
 2 # column  = número de colunas
 3 # size    = tamanho do pixel
 4 # minimum = menor intensidade luminosa
 5 # maximum = maior intensidade luminosa
 6 
 7 def chessboard(row, column, size, minimum, maximum):
 8     # cria uma matriz de menor intensidade luminosa
 9     image = numpy.zeros([row, column]) + minimum
10 
11     # percorre todas as células da matriz, intercalando-as e adicionando intensidade luminosa máxima
12     image[ ::2, 1::2] = maximum
13     image[1::2,  ::2] = maximum
14 
15     # calcula Produto de Kronecker entre a matriz 'image' e uma matriz de valores igual a um
16     image = numpy.kron(image, numpy.ones([size, size]))
17 
18     # gera uma imagem a partir de uma matriz de intensidade luminosa variando de 0 a 255
19     adshow(image, [0, 255],
20         title='Tabuleiro de xadrez por meio de linguagem de programação matricial.');
21 
22 chessboard(4, 6, 50, 100, 200)

Tabuleiro de xadrez por meio de linguagem de programação matricial.