mac2166 introdução à computaçãomcesar/aulas_13e14.pdf · dizemos que uma matriz quadrada...
TRANSCRIPT
![Page 1: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/1.jpg)
MAC2166
Introdução à Computação - aulas 13 e 14-
Mauro Cesar Bernardes
29/Abril/2014
![Page 2: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/2.jpg)
Agenda
• Strings
• Manipulação de Arquivos
• Matrizes...
![Page 3: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/3.jpg)
Strings
![Page 4: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/4.jpg)
Strings
• Uma string é uma sequencia de caracteres
• Utiliza aspas ' ' ou " "
• o sinal + concatena strings
• Uma string pode ser composta apenas de números (e ainda será uma string)
• Para converter números em string utilize str()
• Para converter uma string em números utilize int() ou float()
![Page 5: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/5.jpg)
e000.py
![Page 6: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/6.jpg)
Strings
É possível o acesso a qualquer caractere de um string utilizando índices
0
b
1
a
2
n
3
a
4
n
5
a
![Page 7: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/7.jpg)
Strings
Cuidado com os índices!!
0
b
1
a
2
n
3
a
4
n
5
a
Índice Inválido
![Page 8: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/8.jpg)
Comando for O comando for, utilizado para repetições (loop) em Python, também é útil para percorrer strings.
Ex.: texto="testando um string"
for caracter in texto:
print (caracter)
A cada iteração (loop), a variável caractere receberá um caractere do string armazenado em texto, sequencialmente.
e0.py
![Page 9: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/9.jpg)
![Page 10: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/10.jpg)
Comando for
O comando for, utilizado para repetições (loop) em Python, também é útil para percorrer strings.
Ex.: texto="testando um string" for i in range(len(texto)):
print (texto[i])
A cada iteração (loop), a variável caractere receberá um caractere do string armazenado em texto, sequencialmente.
e00.py
![Page 11: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/11.jpg)
![Page 12: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/12.jpg)
Strings são “imutáveis”
Analise o trecho a seguir:
texto="testando um string."
texto[0]="T"
for i in range(len(texto)):
print (texto[i])
e00.py
ERRO!! Strings são imutáveis!
![Page 13: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/13.jpg)
Utilizando in como um operador
• Pode-se utilizar in para verificar se um string está contido em outro string
• O in é utilizado em uma expressão lógica e retorna True ou False
(pode ser utilizado em uma estrutura com if)
![Page 14: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/14.jpg)
Biblioteca string
https://docs.python.org/3.3/library/string.html
![Page 15: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/15.jpg)
>>> test = 'This is just a simple string.'
>>> len(test)
29
>>> test = test.replace('simple', 'short')
>>> test
'This is just a short string.'
>>> test.count('r')
2
>>> test.find('r')
18
>>> test[18]
'r'
>>> test.upper()
'THIS IS JUST A SHORT STRING.'
>>> test.lower()
'this is just a short string.'
Alguns métodos para manipular Strings
![Page 16: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/16.jpg)
Removendo whitespace • Dependendo da aplicação, precisaremos remover whitespace no
início ou no fim de um string
• lstrip() e rstrip()removem whitespace à direita ou à esquerda
• strip() Remove whitespace do início e do final
![Page 17: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/17.jpg)
Arquivos
![Page 18: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/18.jpg)
Manipulação de arquivos: a função open() A função open() serve para obter uma referência a um objeto do tipo arquivo. Assumindo que temos um arquivo chamado arquivo.txt, contendo um trecho de um livro famoso, podemos codificar o seguinte exemplo: >>> a = open("arquivo.txt")
>>> print a
<open file 'arquivo.txt', mode 'r' at 0x820b8c8>
Uma vez obtida a referência ao objeto arquivo, podemos usar métodos específicos como o read(), que retorna o conteúdo do arquivo: >>> texto = a.read()
>>> print texto
`...Would you tell me, please,
which way I ought to go from here?'
`That depends a good deal on where you want to get to,'
said the Cat.
`I don't much care where--' said Alice.
`Then it doesn't matter which way you go,' said the Cat.
![Page 19: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/19.jpg)
Manipulação de arquivos: sintaxe da função open()
O formato geral da função open é:
open(nome_do_arquivo, modo)
Ambos os parâmetros são strings. O modo determina a forma como o arquivo será aberto e é composto de uma ou mais letras:
'r' (ou nada) abre para leitura,
'w' abre para escrita, apagando o conteúdo já existente
'a' abre para escrita, com dados escritos acrescentados ao final do
arquivo.
Se um símbolo '+' for agregado ao modo, o arquivo pode ser lido e escrito simultaneamente.
![Page 20: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/20.jpg)
Arquivo: alunos.txt
![Page 21: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/21.jpg)
Manipulação de arquivos: métodos do objeto arquivo
O objeto arquivo possui um conjunto de métodos úteis; os mais importantes são descritos abaixo. Note que o arquivo possui um conceito de posição atual: em um dado momento, operações serão realizadas com base em uma certa posição. Alguns métodos utilizam ou alteram esta posição; outros são operações globais, independentes da posição dela.
read(): retorna uma string única com todo o conteúdo do arquivo.
readline(): retorna a próxima linha do arquivo e incrementa a posição atual.
readlines(): retorna todo o conteúdo do arquivo em uma lista, uma linha do arquivo por elemento da lista.
writelines(data): escreve cada elemento string da lista data na posição atual ou ao final do arquivo, dependendo do modo de abertura.
seek(n): muda a posição atual do arquivo para o valor indicado em n.
close(): fecha o arquivo.
Qualquer arquivo pode ser aberto e lido desta forma; experimente com esta função, abrindo alguns arquivos locais, lendo e modificando-os
![Page 22: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/22.jpg)
Arquivo: alunos.txt
Exemplos de whitespaces que podem ser removidos com o uso de rstrip ou strip ou end=""
![Page 23: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/23.jpg)
end="" para remover o whitespace \n do final de cada linha do arquivo.
![Page 24: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/24.jpg)
arquivo = input("Nome do arquivo: ")
arq = open(arquivo, 'r', encoding="utf8")
nlin = 1
for linha in arq:
print(nlin, ':', linha)
nlin += 1
e1.py
![Page 25: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/25.jpg)
arquivo = input("Nome do arquivo: ")
arq = open(arquivo, 'r', encoding="utf8")
nlin = 1
for linha in arq:
print(nlin, ':', linha, end="")
nlin += 1
![Page 26: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/26.jpg)
arquivo = input("Nome do arquivo: ")
arq = open(arquivo, 'r', encoding="utf8")
nlin = 1
for linha in arq:
print("%6d : %s" %(nlin, linha), end="")
nlin += 1
![Page 27: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/27.jpg)
abriu = False
while not abriu:
arquivo = input("Nome do arquivo: ")
try:
arq = open(arquivo, 'r')
except FileNotFoundError:
print(arquivo, 'não encontrado.')
else:
abriu = True
nlin = 1
for linha in arq:
print('%6d:'%(nlin), end="")
nlin += 1
e1.py
![Page 28: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/28.jpg)
Analise o programa a seguir:
def imprime(p):
for caracter in p:
print(caracter)
palavra=input("digite uma palavra:")
imprime(palavra)
![Page 29: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/29.jpg)
Problema 5.2
a) Escreva uma função separa(texto, sep), que recebe uma frase texto e um caractere separador sep. A função "corta" o texto nos separadores, retornando uma lista com as palavras do texto. Exemplo: para o texto= ",1,,2,3," e sep = , a saída deve ser a lista: ['', '1', '', '2', '3', ''] onde '' indica uma palavra vazia (entre 2 separadores consecutivos).
def separa(texto, sep):
lista = []
palavra = ''
for l in texto:
if l == sep:
lista.append(palavra)
palavra = ''
else:
palavra += l
lista.append(palavra)
return lista
![Page 30: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/30.jpg)
Problema 5.2
b) Escreva um programa que leia uma linha com palavras separadas por vírgula, e determina o comprimento da maior palavra. A linha pode conter palavras vazias.
frase = input("Digite palavras separadas por vírgula: ")
palavras = separa(frase, ',') #função apresentada anteriormente
print (palavras)
if len(palavras) > 0:
maxp = palavras[0]
for p in palavras:
print ("A palavra '%s' tem %d caracteres."%(p, len(p)))
if len(p) > len(maxp):
maxp = p
print("> palavra é:'%s' com %d caracteres." %(maxp, len(maxp)))
else:
print("Não achei nenhuma palavra em sua frase!")
![Page 31: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/31.jpg)
Método split() O método split() separa a string pelos espaços.
Exemplo: teste = 'oi tudo bem?'
print(teste.split())
Saída: >>['oi', 'tudo', 'bem?']
![Page 32: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/32.jpg)
Arquivo Excell salvo no formato CSV (Comma Separated Value)
![Page 33: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/33.jpg)
![Page 34: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/34.jpg)
Arquivo: planilha.csv
![Page 35: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/35.jpg)
Exercício 2: Um arquivo Excell contendo uma planilha de números foi salva no formato CSV (Separado por vírgula) com o nome arqexcell.csv.
Desenvolva um programa que abra o arquivo arqexcell.csv imprima a soma dos números de cada linha e a soma de todos os números do arquivo.
Ao final, o programa deve imprimir também a soma total.
Exemplo: para o arquivo arqexcell com:
A saída deverá ser:
Arqexcell.csv
![Page 36: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/36.jpg)
import sys
nome=input("Forneça nome do arquivo:")
try:
arquivo=open(nome,'r')
except IOError:
print("Problema na abertura do arquivo!!")
sys.exit()
linha=[]
somatotal=0
for linhaarquivo in arquivo:
linha=linhaarquivo.split(";")
somalinha=0
for numero in linha:
somalinha=somalinha+float(numero)
somatotal=somatotal+somalinha
print("Soma linha=", somalinha)
print("Soma Total=", somatotal)
arquivo.close()
![Page 37: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/37.jpg)
PROBLEMA 5.2.
Dada uma sequência de caracteres representando um texto,
determinar a frequência relativa de vogais no texto.
Por exemplo, no texto: "Em terra de cego quem tem um olho e caolho"
essa frequência é 16/42.
texto = input("Digite um texto: ")
nv = 0
vogais = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
for letra in texto:
if letra in vogais:
nv += 1
print ("Frequencia relativa = %d / %d"%(nv, len(texto)))
![Page 38: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/38.jpg)
Dúvida na aula
anterior...
![Page 39: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/39.jpg)
Dúvida na aula anterior
matriz=[[6,5,4],[8,7,6],[4,9,2]]
for linha in matriz:
for coluna in linha:
print(coluna, end=" ")
print()
• Apresentando o conteúdo de uma matriz:
• Somando um a cada elemento da matriz: matriz=[[6,5,4],[8,7,6],[4,9,2]]
for linha in range(len(matriz)):
for coluna in range(len(matriz[linha])):
matriz[linha][coluna]+=1
print(matriz)
![Page 40: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/40.jpg)
Matrizes
![Page 41: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/41.jpg)
Problema 1:
Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais.
Exemplo: A matriz é um quadrado mágico.
Dada uma matriz quadrada Anxn , verificar se A é um quadrado
mágico.
8
0
0
1
7
2
0
1
2
A 4 5 6
3 10 2
![Page 42: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/42.jpg)
def verifica (A):
aux=[]
#verificando linhas
for i in range(len(A)):
soma=0
for j in range (len(A[i])):
soma=soma+A[i][j]
aux.append(soma)
#verificando colunas
for i in range(len(A)):
soma=0
for j in range (len(A[i])):
soma=soma+A[j][i]
aux.append(soma)
#verificando diagonal principal
soma=0
for i in range(len(A)):
soma=soma+A[i][i]
aux.append(soma)
#verificando diagonal secundária
soma=0
c=1
for i in range(len(A)):
soma=soma+A[i][len(a)-c]
c=c+1
aux.append(soma)
#verificando se elementos de aux são iguais
for i in range(len(aux)):
if aux[i] != aux[1]:
return False
return True
#programa principal
a=[[8,0,7],[4,5,6],[3,10,2]]
if verifica(a):
print("É quadrado mágico")
else:
print("Não e quadrado mágico")
Primeira solução!!
Pode ser melhorada....
![Page 43: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/43.jpg)
def verifica (A):
aux=[]
#verificando linhas e colunas
for i in range(len(A)):
soma=0
soma2=0
for j in range (len(A[i])):
soma=soma+A[i][j]
soma2=soma2+A[j][i]
aux.append(soma)
aux.append(soma2)
#verificando diagonal principal e secundária
soma=0
soma2=0
c=1
for i in range(len(A)):
soma=soma+A[i][i]
soma2=soma2+A[i][len(A)-c]
c=c+1
aux.append(soma)
aux.append(soma2)
#verificando se elementos de aux são iguais
for i in range(len(aux)):
if aux[i] != aux[1]:
return False
return True
#programa principal
a=[[8,0,7],[4,5,6],[3,10,2]]
if verifica(a):
print("É quadrado mágico")
else:
print("Não e quadrado mágico")
Segunda solução!!
Pode ser melhorada....
![Page 44: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/44.jpg)
def verifica (A):
aux=[]
#verificando linhas e colunas
soma3=soma4=0
c=1
for i in range(len(A)):
soma=0
soma2=0
soma3=soma3+A[i][i]
soma4=soma4+A[i][len(A)-c]
c=c+1
for j in range (len(A[i])):
soma=soma+A[i][j]
soma2=soma2+A[j][i]
aux.append(soma)
aux.append(soma2)
#verificando se elementos de aux são iguais
for i in range(len(aux)):
if aux[i] != aux[1]:
return False
return True
#programa principal
a=[[8,0,7],[4,5,6],[3,10,2]]
if verifica(a):
print("É quadrado mágico")
else:
print("Não e quadrado mágico")
Terceira solução!!
Pode ser melhorada....
![Page 45: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/45.jpg)
Exercícios com Matrizes:
Entrega na próxima aula
![Page 46: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/46.jpg)
Exercício 1:
Os elementos aij de uma matriz inteira Anxn representam os custos de transporte da cidade i para a cidade j. Dados n itinerários, cada um com k cidades, calcular o custo total para cada itinerário.
Exemplo:
O custo do itinerário 0 3 1 3 3 2 1 0 é
a03 + a31 + a13 + a33 + a32 + a21 + a10 = 3 + 1 + 400 + 5 + 2 + 1 + 5 = 417
4
0
1
1
2
2
0
1
2
a 5 2 1
2 1 1
3
3
400
8
3 7 1 3 5
![Page 47: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/47.jpg)
matriz.txt
![Page 48: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/48.jpg)
Funções com Matrizes Exercício 2: (Compute a matriz de campo minado (minesweeper).)
(a) Escreva uma função que recebe como parâmetros uma matriz inteira Anxm
, 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 Anxm
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.
![Page 49: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/49.jpg)
Exercício 2: Compute a matriz de campo minado (minesweeper). (a)Escreva uma função que recebe como parâmetros uma matriz inteira Anxm e uma posição (i,j) da matriz e retorna quantas posições ao redor da posição (i,j) contém o valor -1.
def campominado(A, i, j):
campominado(A,2,2) 1 campominado(A,7,5) 3 campominado(A,8,3) 6 campominado(A,7,7) 2
2 1
3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
0 -1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 -1 0 0
0 -1 -1 -1 0 0 0 0 0
0 0 0 -1 -1 0 0 -1 0
0 -1 -1 0 0 0 0 0 0
0
1
2
3
4
5
6
7
8
0 1 2 3 4 5 6 7 8
Sem moldura
2 2 2 2 2 2 2 2 2 2 2
2 0 -1 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 -1 0 0 2
2 0 -1 -1 -1 0 0 0 0 0 2
2 0 0 0 -1 -1 0 0 -1 0 2
2 0 -1 -1 0 0 0 0 0 0 2
2 2 2 2 2 2 2 2 2 2 2
0
1
2
3
4
5
6
7
8
9
10
0 1 2 3 4 5 6 7 8 9 10
Com moldura
![Page 50: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/50.jpg)
Exercício 2:
Compute a matriz de campo minado (minesweeper).
b) Escreva um programa que lê uma matriz Anxm de 0's (posições livres) e -1's (minas) de um arquivo texto. Utilizando a função do item anterior, o programa deve computar e imprimir a quantidade minas ao redor de cada posição livre da matriz.
(Obs: Resolver sem moldura e com moldura.)
2 1
3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
0 -1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 -1 0 0
0 -1 -1 -1 0 0 0 0 0
0 0 0 -1 -1 0 0 -1 0
0 -1 -1 0 0 0 0 0 0
0
1
2
3
4
5
6
7
8
0 1 2 3 4 5 6 7 8 2 2 2 2 2 2 2 2 2 2 2
2 0 -1 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 0 0 0 2
2 0 0 0 0 0 0 -1 0 0 2
2 0 -1 -1 -1 0 0 0 0 0 2
2 0 0 0 -1 -1 0 0 -1 0 2
2 0 -1 -1 0 0 0 0 0 0 2
2 2 2 2 2 2 2 2 2 2 2
0
1
2
3
4
5
6
7
8
9
10
0 1 2 3 4 5 6 7 8 9 10
Sem moldura Com moldura
![Page 51: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/51.jpg)
Funções com Matrizes Exercício 3: (a) Escreva uma função que recebe como parâmetros uma matriz real Anxm, 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 Anxm e devolve
uma matriz Amédia, onde Amé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 Anxm , 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.
![Page 52: MAC2166 Introdução à Computaçãomcesar/Aulas_13e14.pdf · Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos](https://reader033.vdocuments.com.br/reader033/viewer/2022042806/5f6a464653f6f500fb2497ea/html5/thumbnails/52.jpg)
Funções com Matrizes
Exercício 4:
Dizemos que uma matriz Anxn é 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 Anxn é um quadrado latino de
ordem n.