domingo, 15 de novembro de 2009

Problema 6.13

Este problema vai ajudar a exercitar alguns aspectos. Desde logo o modo como guardamos os dados num dicionário. Mas também a possibilidade de usar o módulo cTurtle para visualizar os dados. Segue-se o programa.


import cTurtle

def le_ficheiro(nome):
f_in = open(nome,'r')
dados = []
linha = f_in.readline()
while linha !='' and linha != '\n':
pos = linha[:-1].split()
dados.append((int(pos[0]), int(pos[1])))
linha = f_in.readline()

f_in.close()
return dados


def analisa_frequencias(dados):
frequencias={}
for par in dados:
for i in range(2):
frequencias[par[i]]=frequencias.get(par[i],0)+1
return frequencias


def desenha_coluna(tartaruga, numero, altura):
x=(numero-1)*20 # para começar no inicio do eixo
y=altura *10

# escrever número no eixo
tartaruga.up()
tartaruga.goto(x+5,-20)
tartaruga.down()
tartaruga.write(str(numero), move=False, align='left', font=('Arial', 18, 'normal'))

#desenhar coluna
tartaruga.up()
tartaruga.goto(x+2,0)
tartaruga.down()
tartaruga.goto(x+2,y)
tartaruga.goto(x+18,y)
tartaruga.goto(x+18,0)

# escrever número da frequência
tartaruga.up()
tartaruga.goto(x+5,y+5)
tartaruga.down()
tartaruga.write(str(altura), move=False, align='left', font=('Arial', 10, 'normal'))


def visualiza_frequencias(tartaruga,frequencias):
# desenhar eixo dos x
tartaruga.up()
tartaruga.goto(0,0)
tartaruga.down()
tartaruga.goto(20*6,0)

# desenhar frequências
for i in range(1,7):
desenha_coluna(tartaruga,i,frequencias.get(i))

tartaruga.hideturtle()


def main613(ficheiro):
# Leitura dos dados
pares = le_ficheiro(ficheiro)
# Análise de frequências
frequencias=analisa_frequencias(pares)
# Visualização de frequências
tartaruga= cTurtle.Turtle()
visualiza_frequencias(tartaruga,frequencias)
tartaruga.exitOnClick()



A leitura de dados a partir de um ficheiro já é uma questão resolvida em problemas anteriores. Segue-se depois a contagem do número de ocorrências. Usamos um dicionário em que a chave é o número e o valor é igual ao número de vezes que ocorreu. A visualização é desdobrada em duas operações: uma, permite desenhar uma coluna e é usada por outra definição (visualiza_frequências) que percorre com um ciclo for os 6 números, imprimindo a coluna correspondente. Note-se o uso do comando de escrita de texto na tela e as suas opções (write).

Só falta transcrever o programa, executar e ... visualizar!

Sem comentários:

Enviar um comentário