Introdução à Computação

Documentos relacionados
Python. Resumo e Exercícios P2 Parte 1

Introdução à Computação - aulas 13 e 14-

Introdução à Computação - Linguagem C: aula 06. Mauro Cesar Bernardes 04/Junho/2014

Listas e Tuplas. Vanessa Braganholo

Matrizes. Vanessa Braganholo

Figura 1: Uma matriz contem elementos de um mesmo tipo, com início em (0,0). 30 é o número de colunas!

1 Resumo: Matrizes. 2.1 Como declarar uma matriz IME/USP. Departamento de Ciência da Computação

Processamento da Informação Teoria. Listas e Matrizes

Listas, conjuntos e dicionários

Vetores. Vanessa Braganholo

MAC2166 Introdução à Computação

INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P2

MAC2166 Introdução à Computação

TCC 00308: Programação de Computadores I Matrizes

Algoritmos e Programação

Funções Vetores Matrizes

Introdução à Computação - aulas 01 e 02 -

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

24/09/2014. Prof. André Backes

Escola Politécnica Prova Substitutiva 8 de julho de 2014

Python: Listas. Claudio Esperança

Computação 1 - Python Aula 12 - Teórica: Interação com o usuário e programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 25

Computação 1 - Python Aula 11 - Teórica. programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 29

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

MAC2166 Introdução à Computação

Matrizes. DCC 119 Algoritmos

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Processamento da Informação Teoria. Coleções: Listas

MATRIZES. Fundamentos de Matemática- Ciências Contábeis

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

MAC 2166 Introdução à Computação para Engenharia

Programação científica C++

LINGUAGEM C++ Prof. Bruno Gomes ESTRUTURAS DE DADOS HOMOGÊNEAS PARTE II - MATRIZES. Currais Novos, 2011

Estruturas de dados funcionais

Algoritmos e Programação

Computação I - Python Aula 1 - Teórica: Manipulação de Strings, Tuplas e Listas

1. Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume.

Programação científica C++

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Aula 17 Variáveis indexadas de vários índices (matrizes)

Python 3.x Estrutura de Repetição while

MAC2166 Introdução à Computação

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Matrizes. Para começar... Matrizes. Matrizes

SCC Algoritmos e Estruturas de Dados I

Lista de Exercícios Repetição Prof: Yuri Frota

Introdução a Matrizes

Computação II (MAB 225)

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Computação 1 - Python Aula 9 - Teórica Laços Aninhados e Matrizes. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 15

PYTHON LISTAS. Introdução à Programação SI1

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

Computação 1 - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings 1/ 26

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Organização de programas em Python. Vanessa Braganholo

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz

Estruturas de Repetição. Leonardo Murta

Programação de Computadores

Programação de Computadores

Computação 1 - Python Aula 6 - Teórica: Listas 1/ 28

MAC2166 Introdução à Computação

Introdução à Computação Strings

Aula 10: Introdução a Vetores e Matrizes

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos

Computação 1 - Python Aula 11 - Teórica: Matrizes. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 9

Computação 1 - Python Aula 4 - Teórica Variáveis e Atribuição, Strings. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 30

Computação 1. Aula 10 Teórica professor: Leonardo Carvalho

Introdução à Programação / Programação I

Introdução à Programação

Python 3.x Estrutura de Repetição for Estrutura de Decisão if then else

Revisão: Matrizes e Sistemas lineares. Parte 01

MC-102 Aula 11 Strings

Entrada e saída. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Python: Exceções, Iteradores e Geradores. Claudio Esperança

Programação: Vetores

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Laboratório de Programação A Exercícios sobre vetores e matrizes

Laboratório de Programação 1 Aula 07

MCG114 Programação de Computadores I. Strings. Strings. Strings. Strings. Strings 3/26/18. Profa. Janaína Gomide

Aula 9 Matrizes Cleverton Hentz

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Primeira Prova 05 de abril de 2010

Laboratório 3 Comandos de repetição while, do-while e for

Programação de Computadores

Computação 1. Revisão Geral professor: Leonardo Carvalho

Nesta aula... Diagramas da stack. Recursão. 1 Funções. 2 Valores booleanos e condicionais. 3 Execução condicional e recursão

Matrizes Esparsas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Variáveis e instruções de repetição

Introdução à Programação / Programação I

Programação I Aula 3 Primeiros programas

MATEMÁTICA. Aula 14 Matrizes. Prof. Anderson

Python - Comandos de Repetição

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10

Nas aulas anteriores Strings. Ciclos

Computação I - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo

Introdução à Programação / Programação I

Introdução à Ciência da Computação Disciplina: Prof. Edison Ishikawa Python 3.0 Aula 05 Listas

Introdução à Programação Aula 3 Primeiros programas

Programação de Computadores

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Transcrição:

MAC2166 Introdução à Computação - aulas 11 e 12 - Mauro Cesar Bernardes 22/Abril/2014

Agenda Revisão da aula anterior Listas Comando For Matrizes Estruturando um programa com uma função main()

#----------------------------------------------- # programa principal def main(): ''' Função principal do programa ''' bloco de comandos da função main() #------------------------------------------------ # montes de funções def f(x,lista,nome): ''' (float, list, str) -> int,list A Função f faz... ''' Bloco de comandos da função f def g(n,verbose,nome): ''' (int, bool, str) -> None A Função g faz... ''' Bloco de comandos da função g #------------------------------------------------ # início do programa, chamada da main() main()

Listas

Listas Uma lista é escrita entre colchetes com os elementos separados por vírgula: l1=[] #l1 contém lista vazia l2=[1,2] #l2 contém lista com 2 elementos Os elementos de uma lista podem ser de qualquer tipo, inclusive listas. Ex.: lista= [1,'a',2+3j, ['ab', 'CD']] Os elementos de uma lista podem ser acessados por índices como strings O primeiro elemento tem índice 0 O último elemento tem índice de sua posição -1

Listas L=[18,27,36,65,34,13] Cria uma lista L com 6 elementos (6 números inteiros) L[0] L[1] L[2] L[3] L[4] L[5] L[-6] L[-5] L[-4] L[-3] L[-2] L[-1] Indices para acesso aos elementos da lista L print(l) [18,27,36,65,34,13] print(l[1]) 27 L[1]=33 print(l) [18,33,36,65,34,13] print(l[1]) 33 print(l[-1]) 13 print(l[-2]) print(l[6]) 34 Outra forma para acesso aos elementos da lista L Traceback (most recent call last): File "C:/Python33/lista1.py", line 9, in <module> print(l[6]) IndexError: list index out of range

append(elemento) Listas: append() Acrescenta o elemento no fim da lista Observe que a operação altera a lista, e não simplesmente retorna uma lista modificada Exemplo: lista=[1,2,3] print(lista) lista.append(4) print(lista) lista.append(5) print(lista) [1,2,3] Resultado: [1,2,3,4] [1,2,3,4,5]

Listas: len(), min(), max() len(lista) retorna o número de elementos de lista min(lista) retorna o menor elemento de lista max(lista) retorna o maior elemento de lista Exemplo: lista=[1,2,9,3,4] print(min(lista)) #imprime o menor elemento = 1 print(len(lista)) #imprime o tamanho da lista= 5 print(max(lista)) #imprime o maior elemento = 9

Listas: exercício Escreva um programa que leia um número inteiro n e, em seguida, leia n números inteiros acrescentando-os em uma lista L. n=int(input("entre com o valor de n:")) L=[] while n>0: numero=int(input("entre com o número:")) L.append(numero) n=n-1 print(l)

Comando For

Comando for O comando for é utilizado para repetições (loop) em Python, muito útil para percorrer listas. Ex.: lista=[8,4,5,3,6,7] for elemento in lista: print (elemento) A cada iteração (loop), a variável elemento receberá o valor de um elemento da lista, sequencialmente.

Função range() Podemos utilizar a função range() como um gerador de números. Ex.: range(10)irá gerar 10 números, de 0 a 9 for item in range(10): print (item) A cada iteração (loop), a variável item receberá um valor de uma lista de 10 elementos, partindo de 0 até 9.

Função range()com dois intervalos Podemos indicar qual o primeiro número a ser gerado. Para isso, utilizamos dois parâmetros: início e fim. Ex.: range(6,10)irá gerar 4 números, de 6 a 9 for item in range(6,10): print (item) A cada iteração (loop), a variável item receberá um valor de uma lista partindo de 6 até 9.

Função range() com saltos Se acrescentarmos um terceiro parâmetro à função range, teremos como saltar entre os valores gerados. Ex.: range(4,10,2)irá gerar 3 números for item in range(4,10,2): print (item) A cada iteração (loop), a variável item receberá um valor de uma lista partindo de 4 até 9, com salto de 2.

Cuidado com atribuição de listas...

Problema: Qual o resultado do seguinte trecho de programa? a = [0, 1, 2, 3, 4] b = a b [1] = 7 print ("a = ", a) print ("b = ", b) Por que o conteúdo de a é igual ao conteúdo de b? a [0, 1, 2, 3, 4] b [1] = 7 b

Problema: O problema no programa anterior é que b recebe uma "referência" para a. O seguinte código corrige o problema, atribuindo uma cópia de a em b: a = [0, 1, 2, 3, 4] b = a[:] b [1] = 7 print ("a = ", a) print ("b = ", b) a b [0, 1, 2, 3, 4] [0, 7, 2, 3, 4] a[:] retorna uma cópia de a (uma "fatia" com todos os elementos de a). Podemos usar o ':' para definir qualquer "fatia" da lista. Exemplo: a[1:3] retorna uma lista com [1,2]

Matrizes

Matrizes: Matrizes são estruturas indexadas em forma matricial (como ilustrado na figura abaixo). Em Python, uma matriz é frequentemente representada como uma lista de listas.

Matrizes: Índices São usados índices para acessar uma linha e uma coluna de uma matriz. Os índices são números naturais. O índice da primeira linha é sempre zero. O índice da primeira coluna é sempre zero. Número de linhas: 4 n 4x8 0 1 2 3 4 5 6 7 n[0][0]=5 n[1][2]=3 n[3][5]=7 Número de colunas: 8 n 0 1 2 3 5 3 7

Acesso a uma posição da matriz print(m[3][5]) Posição na linha: 3 m Posição na coluna: 5 0 1 2 3 4 0 1 2 3 4 5 6 7 8 9

Criação de matrizes. Listas aninhadas são frequentemente utilizadas para representar matrizes. Por exemplo, a matriz: poderia ser representada como: >>> matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Neste exemplo, matriz é uma lista com três elementos, onde cada elemento é uma linha da matriz. Podemos selecionar uma linha inteira da matriz da maneira habitual: >>> matriz[1] [4, 5, 6] Ou podemos extrair um único elemento da matriz utilizando a forma de duplo índice: >>> matriz[1][1] 5 O primeiro índice seleciona a linha, e o segundo índice seleciona a coluna. Embora esta maneira de representar matrizes seja comum, ela não é a única possibilidade. Uma pequena variação é utilizar uma lista de colunas ao invés de uma lista de linhas.

Matrizes Matrizes são estruturas bidimensionais (tabelas) com m linhas por n colunas muito importantes na matemática, utilizadas por exemplo para a resolução de sistemas de equações e transformações lineares. Em Python, uma matriz pode ser representada como uma lista de listas, onde elemento da lista contém uma linha da matriz, que por sua vez corresponde a uma lista com os elementos da coluna da matriz. Qual o problema do seguinte pedaço de código para criação de uma matriz A 5x5 com o valor 2 na posição [1][1] e zero nas demais posições? # A = [ [0]*5 ] *5 linha_com_zeros = [0]*5 A = [ linha_com_zeros ] * 5 A[1][1] = 2 print (A) A variável linha_com_zeros contém uma referência à lista [0, 0, 0, 0, 0]. Ao criar a matriz A, essa mesma referência é copiada 5 vezes.

Criação de matrizes. É necessário criar 5 linhas diferentes como por exemplo: A variável i assumirá valores de 0 a 4 A = [] for i in range(5): A.append( [0] * 5 ) A[1][1] = 2 print(a)

Percorrendo Matrizes: Um padrão para percorrer completamente a matriz A (isto é, as nl linhas e as nc colunas) por linhas é usar dois comandos de repetição (no caso, vamos usar o comando for) com duas variáveis inteiras, e.g. lin e col, uma para percorrer as linhas e a outra para percorrer as colunas da matriz A: Exemplo: for lin in range(nl): for col in range(nc): A[lin][col] matriz=[[11, 12, 13], [21, 22, 23], [31, 32, 33]] n=3 for lin in range(n): for col in range(n): print(matriz[lin][col]) ou: matriz=[[11, 12, 13], [21, 22, 23], [31, 32, 33]] for lin in range(len(matriz)): for col in range(len(matriz[lin])): print(matriz[lin][col])

1.py Exemplo para Leitura de uma Matriz 3 x 3: #criando uma matriz 3 x 3 matriz = [] n = 3 for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("matriz[%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:]) print(matriz) matriz 0 1 2 0 1 2 11 12 13 21 22 23 31 32 33 tmp= 31 21 11 32 22 12 33 13 23

Percorrendo matriz 3x3 e somando 1: matriz = [[11, 12, 13], [21, 22, 23], [31, 32, 33]] Exemplo: #percorrendo matriz 3x3 e somando 1 matriz = [[11, 12, 13], [21, 22, 23], [31, 32, 33]] for linha in range(len(matriz)): for coluna in range(len(matriz[linha])): matriz[linha][coluna] += 1 print (matriz)

Impressão de uma Matriz: Exemplo 1 matriz=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] for linha in range(len(matriz)): for coluna in range(len(matriz[linha])): print("%3d" %(matriz[linha][coluna]), end="") print("")

Impressão de uma Matriz: Exemplo 2 matriz=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] for linha in range(len(matriz)): s= "" for coluna in range(len(matriz[linha])): s+= "%3d" %(matriz[linha][coluna]) print(s)

Exercício Desenvolva um programa para ler todos os elementos de uma matriz 5x5 e imprimir os valores da diagonal principal. (A diagonal principal é determinada por linha=coluna). Representação da matriz Matriz 5x5 0 1 2 3 4 0 Matriz 1 2 3 4

Uma solução matriz = [] n = 5 for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("matriz [%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:]) for linha in range(5): for coluna in range(5): if linha==coluna: print (matriz[linha][coluna]) matriz 0 1 2 3 4 0 1 2 3 4

Solução Michelle matriz = [] n = 5 for linha in range(n): matriz.append([0]*5) for linha in range(n): for coluna in range(n): matriz[linha][coluna]= int(input("matriz [%d,%d]:" %(linha,coluna))) for i in range(5): print (matriz[i][i]) matriz 0 1 2 3 4 0 1 2 3 4

Solução Lucas matriz = [] n = int(input("entre com o valor de n:")) for linha in range(n): matriz.append([0]*n) for linha in range(n): for coluna in range(n): matriz[linha][coluna]= int(input("matriz [%d,%d]:" %(linha,coluna))) for i in range(n): print (matriz[i][i]) matriz 0 1 2 3 4 0 1 2 3 4

for linha in range(5): print (matriz[linha][linha]) Outra solução matriz = [] n = 3 for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("matriz [%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:])

#programa principal dimensao=int(input("entre com o valor de n:")) mat=leiamatriz(dimensao) imprimamatrix(mat) matriz 0 1 2 0 1 2 Utilizando funções... def leiamatriz(n): """que lê uma matriz quadrada nxn """ matriz=[] for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("matriz[%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:]) return matriz def imprimamatrix(matriz): """que lê uma matriz quadrada nxn """ for cont in range(len(matriz)): print("diagonal[%d,%d]= %d" %(cont,cont,matriz[cont][cont])) 2.py

Passando a matriz como parâmetro def leiamatriz(matriz,n): for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("matriz[%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:]) def imprimamatrix(matriz): for cont in range(len(matriz)): print("diagonal[%d,%d]= %d" %(cont,cont,matriz[cont][cont])) #----programa principal mat = [] dimensao=int(input("entre com o valor de n:")) leiamatriz(mat, dimensao) imprimamatrix(mat) matriz 3.py 0 1 2 0 1 2

Passando a matriz como parâmetro def leiamatriz(matriz,n): for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("matriz[%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:]) def imprimamatrix(matriz): for cont in range(len(matriz)): print("diagonal[%d,%d]= %d" %(cont,cont,matriz[cont][cont])) #----programa principal mat = [] dimensao=int(input("entre com o valor de n:")) leiamatriz(mat, dimensao) imprimamatrix(mat) matriz 3.py 0 1 2 0 1 2

def main(): mat = [] dimensao=int(input("entre com o valor de n:")) mat=leiamatriz(dimensao) imprimamatrix(mat) matriz 0 1 2 0 1 2 Utilizando uma função main()... def leiamatriz(n): matriz=[] for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("elemento da posicao [%d,%d]:" %(linha,coluna))) tmp.append(elemento) matriz.append(tmp[:]) return matriz def imprimamatrix(matriz): for cont in range(len(matriz)): print ("Diagonal [%d,%d]= %d" %(cont,cont,matriz[cont][cont])) #programa principal main() 4.py

#----------------------------------------------- # programa principal def main(): ''' Função principal do programa ''' bloco de comandos da função main() #------------------------------------------------ # montes de funções def f(x,lista,nome): ''' (float, list, str) -> int,list A Função f faz... ''' Bloco de comandos da função f def g(n,verbose,nome): ''' (int, bool, str) -> None A Função g faz... ''' Bloco de comandos da função g #------------------------------------------------ # início do programa, chamada da main() main()

Qual o resultado da execução do programa abaixo? def multiplicapordois(x): for linha in range (len(x)): for coluna in range (len(x[linha])): x[linha][coluna] *= 2 print("--- Matriz dentro da função, após multiplicação ---") print(x) print("\n") def escrevematriz(x): for linha in range (len(x)): print (x[linha]) matriz=[[11,12,13,14,15],[21,22,23,24,25],[31,32,33,34,35]] print("--- Matriz original ---") print(matriz) print("\n") multiplicapordois(matriz) print("--- Matriz após chamada da função ---") print(matriz) print("\n") escrevematriz(matriz)

Resultado da execução do programa anterior

Problema 1: Exercícios: Escreva um programa que lê n e uma matriz A nxn, e verifica se a matriz A é simétrica. Obs.: Matriz Simétrica Se uma matriz quadrada A(n)=(aij) tem aij = aji; par (i;j), então A é uma matriz simétrica. Note que: caso A=A, então, A é simétrica. Exemplo: matriz 5 3 2 0 1 2 0 1 1 5 2 4 4 2 0

A=[] n=int(input("digite o valor de n:")) #leitura dos valores da matriz Anxn for linha in range(n): tmp = [] for coluna in range(n): elemento = int(input("a[%d,%d]:" %(linha,coluna))) tmp.append(elemento) A.append(tmp[:]) #testando se a matriz A é simétrica simetrica=true for linha in range(len(a)): for coluna in range(len(a[linha])): if A[linha][coluna]!= A[coluna][linha]: simetrica=false #impressão do resultado if simetrica: print("a matriz é simétrica!") else: print("a matriz não é simétrica!") Uma solução...

def leiamatriz(matriz,n): for linha in range(n): tmp = [] for coluna in range(n): ele = int(input("matriz [%d,%d]:" %(linha,coluna))) tmp.append(ele) matriz.append(tmp[:]) #programa principal n=int(input("digite o valor de n:")) A=[] leiamatriz(a,n) #testando se a matriz A é simétrica simetrica=true for linha in range(len(a)): for coluna in range(len(a[linha])): if A[linha][coluna]!= A[coluna][linha]: simetrica=false #impressão do resultado if simetrica: print("a matriz é simétrica!") else: print("a matriz não é simétrica!") Outra solução (com uma função)...

Exercícios: Problema 2: Escreva um programa que leia os valores para duas matrizes A mxp e B pxn e imprime a matriz C mxn, que é o produto de A por B. Sugestão: escreva uma função para fazer a leitura de uma matriz do teclado. Produto de Matrizes Dadas duas matrizes A=(a ij ) mxn e B=(b ij ) mxn, o produto da matriz A pela matriz B, nesta ordem, somente será possível quando o número de colunas da matriz A for igual ao número de linhas da matriz B. A matriz produto (A x B) mxn terá número de linhas de A e número de colunas de B. Os elementos da matriz produto são obtidos multiplicando-se cada elemento das linhas da matriz A pelo correspondente elemento das colunas da matriz B e adicionando os produtos obtidos.

#programa principal print(" Amp X Bpn") m=int(input("m:")) p=int(input("p:")) n=int(input("n:")) A=[] B=[] C=[] Uma solução... leiamatriz(a,m,p) print("a=",a) leiamatriz(b,p,n) print("b=",b) C=prodMatriz(A,B) print(c) Continua...

def leiamatriz(matriz,linha,coluna): """leitura de matrizes""" for l in range(linha): tmp = [] for c in range(coluna): elemento = int(input("matriz[%d,%d]:" %(l,c))) tmp.append(elemento) matriz.append(tmp[:]) def prodmatriz(a,b): """Multiplica duas matrizes.""" #cria matriz C C=[] for i in range(m): temp=[] for j in range(n): temp.append(0) C.append(temp[:]) for i in range(len(a)): for j in range(len(b[i])): val=0 for k in range(len(b)): val = val + A[i][k]*B[k][j] C[i][j]=val return C Continuação.

Exercícios: Problema 3: Faça um programa que leia n e os elementos de uma matriz real A nxn e verifica se a matriz A tem uma linha, coluna ou diagonal composta apenas por zeros.

Exercício: Dado um inteiro num > 0, imprimir a representação de num na base 2 Exs: 1 = 1, 2 = 10, 3 = 11, 4 = 100,... def main(): ''' Recebe um inteiro num e imprime a representação de num na base 2''' num = int(input("digite o valor de num: ")) lista = int_para_lista(num) i = len(lista) - 1 while i >= 0: print(lista[i], end = "") i -= 1 def int_para_lista(num): '''(int) -> lista -recebe um inteiro num > 0 e devolve uma lista com uma representação de num na base 2''' lista = [] while num > 0: lista.append(num%2) num //= 2 return lista main()

Exercício Dado um inteiro n > 0, imprimir todas as matrizes de 0s e 1s de dimensão n X n def main(): ''' Recebe um inteiro n e imprime a todas as matrizes de 0s e 1s de dimensão n X n ''' n = int(input("digite a dimensão da matriz: ")) for num in range(2**(n*n)): imprime_matriz(int_para_matriz(num, n)) def int_para_matriz(num, n): '''(int, int) -> matriz recebe um inteiro num > 0 e devolve uma matriz de 0s e 1s de dimensão n X n que representa num''' matriz = [] for i in range(n): linha = [] for j in range(n): linha.append(num%2) num //= 2 matriz.append(linha) return matriz def imprime_matriz(a): for i in range(len(a)): for j in range(len(a[i])): print("%3d" %(A[i][j]), end="") print() print() main()

Exercícios: PROBLEMA EXTRA. Um jogo de palavras cruzadas pode ser representado por uma matriz A mxn onde cada posição da matriz corresponde a um quadrado do jogo, sendo que 0 indica um quadrado branco e -1 indica um quadrado preto. Indicar na matriz as posições que são início de palavras horizontais e/ou verticais nos quadrados correspondentes (substituindo os zeros), considerando que uma palavra deve ter pelo menos duas letras. Para isso, numere consecutivamente tais posições. Exemplo: Dada a matriz: 0-1 0-1 -1 0-1 0 0 0 0 0-1 0 0 0 0 0-1 -1 0 0-1 0-1 0 0 0 0-1 0 0 0 0-1 0 0 0-1 -1 A saída deverá ser: 1-1 2-1 -1 3-1 4 5 6 0 0-1 7 0 0 8 0-1 -1 9 0-1 0-1 10 0 11 0-1 12 0 13 0-1 14 0 0-1 -1

Funções com Matrizes PROBLEMA 4 (Compute a matriz de campo minado (minesweeper).) (a) Escreva uma função que recebe como parâmetros uma matriz inteira A nxm, e uma posição (i,j) da matriz, e conta quantas posições ao redor da posição (i,j) contém o valor -1. (b) Escreva um programa que lê uma matriz A nxm de 0's (posições livres) e -1's (minas). Utilizando a função do item anterior, o programa deve computar e imprimir a quantidade de minas ao redor de cada posição livre da matriz. PROBLEMA 5 a) Escreva uma função que recebe como parâmetros uma matriz real A nxm, e uma posição (i,j) da matriz, e calcula a média aritmética dos vizinhos de (i,j), ou seja, a média entre A[i-1][j], A[i+1][j], A[i][j+1] e A[i][j+1]. Desconsidere os vizinhos que não pertencem a matriz (por exemplo, os vizinhos de (0, 0) são somente (0,1) e (1,0)). b) Escreva uma função que recebe como parâmetro uma matriz real A nxm e devolve uma matriz A média, onde A média [i][j] é a média aritmética dos vizinhos de (i,j). Para isto, utilize a função do item anterior. c) Escreva um programa que lê uma matriz real A nxm, e um número inteiro k; utilizando a função do item anterior, o programa deve transformar a matriz k vezes, imprimindo a matriz inicial e depois de cada transformação.

Funções com Matrizes PROBLEMA 6 Dizemos que uma matriz A nxn é um quadrado latino de ordem n se em cada linha e em cada coluna aparecem todos os inteiros 1,2,3,...,n (ou seja, cada linha e coluna é permutação dos inteiros 1,2,...,n). (a) Escreva uma função que recebe como parâmetros um inteiro n, um vetor V com n inteiros e verifica se em V ocorrem todos os inteiros de 1 a n. (b) Usando a função acima, verifique se uma dada matriz inteira A nxn é um quadrado latino de ordem n.

Funções com Matrizes PROBLEMA EXTRA. (a) Faça uma função que recebe como entrada um inteiro n, uma matriz inteira A nxn e devolve três inteiros: k, Lin e Col. O inteiro k é um maior elemento de A e é igual a A[Lin,Col]. Obs.: Se o elemento máximo ocorrer mais de uma vez, indique em Lin e Col qualquer uma das possíveis posições. Exemplo: (b) Faça um programa que, dado um inteiro n e uma matriz quadrada de ordem n, cujos elementos são todos inteiros positivos, imprime uma tabela onde os elementos são listados em ordem decrescente, acompanhados da indicação de linha e coluna a que pertencem. Havendo repetições de elementos na matriz, a ordem é irrelevante. Utilize obrigatoriamente o procedimento da parte (a), mesmo que você não o tenha feito. Exemplo: No caso da matriz acima, a saída poderia ser o conteúdo da tabela ao lado: Elem Linha Coluna 8 1 2 7 0 1 5 2 0 4 2 2 3 0 0 3 2 1 2 1 1 1 0 2 1 1 0