Buscar

P2v2(Gabarito)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal do Rio de Janeiro 
Engenharia de Produção – Turma EP1 
2ª Prova de Computação 1 
7 de março de 2013 
 
Questão 1: Expressões Python simples (3.0 pontos) 
Determine o valor das expressões a seguir. Indique o raciocínio que o levou a cada uma das respostas. 
i. 5.0 + (ord('D') - ord('A')) / 2 
= 5.0 + 3 / 2 
= 5.0 + 1 
= 6.0 
ii. 4 != 4 / 2 or 5 % 2 == 1 and 7 / 3 > 2 
= 4 != 2 or 1 == 1 and 2 > 2 
= True or True and False 
= True or False 
= True 
iii. str((ord('c') - ord('a')) + 3) + "a" 
= str(2 + 3) + "a" 
= str(5) + "a" 
= "5" + "a" 
= "5a" 
 
 
 
 
Questão 2: Um programa simples usando o módulo random (4.0 pontos) 
Escreva um programa que simule uma sequencia de lançamentos de um dado. O tamanho da sequencia deve 
ser parametrizado no código através da variável NUM_LANCAMENTOS. Ao final dos lançamentos, seu 
programa deve determinar o tamanho da maior série de números em ordem crescente. 
Exemplo 1: 
lançamento: 5 
lançamento: 6 
lançamento: 6 
lançamento: 5 
lançamento: 2 
lançamento: 1 
lançamento: 1 
lançamento: 1 
lançamento: 3 
lançamento: 3 
lançamento: 3 
lançamento: 2 
lançamento: 4 
lançamento: 4 
lançamento: 6 
lançamento: 1 
lançamento: 2 
lançamento: 3 
lançamento: 4 
lançamento: 6 
Maior sequencia: 4 
 
Exemplo 2: 
lançamento: 2 
lançamento: 5 
lançamento: 2 
lançamento: 5 
lançamento: 3 
lançamento: 5 
lançamento: 4 
lançamento: 4 
lançamento: 2 
lançamento: 3 
lançamento: 4 
lançamento: 6 
lançamento: 3 
lançamento: 5 
lançamento: 2 
lançamento: 1 
lançamento: 2 
lançamento: 3 
lançamento: 1 
lançamento: 2 
Maior sequencia: 3 
 
 
from random import * 
 
NUM_LANCAMENTOS = 20 
NUM_FACES = 6 
 
tamMaximaSequencia = 0 
tamSequenciaAtual = 0 
ultimoLancamento = -1 # No início, não há um lançamento anterior válido 
for i in range(NUM_LANCAMENTOS): 
 lancamento = randint(1, NUM_FACES) 
 print "lançamento:", lançamento 
 # O lançamento anterior continua a sequencia? 
 if lancamento == (ultimoLancamento + 1): 
 tamSequenciaAtual += 1 
 else: 
 tamSequenciaAtual = 1 # inicia uma nova sequencia 
 
 # verifica se a sequencia atual é maior do que a maior sequencia até agora 
 if tamSequenciaAtual > tamMaximaSequencia: 
 tamMaximaSequencia = tamSequenciaAtual 
 
 ultimoLancamento = lancamento # mantém o registro do último lançamento 
 
# Se nenhuma sequencia foi encontrada, a maior sequencia tem tamanho 1 
if tamMaximaSequencia == 1: 
 print "Não foram encontradas sequencias" 
else: 
 print "Maior sequencia:", tamMaximaSequencia
 
 
Questão 3: Tkinter (3.0 pontos) 
Escreva um aplicativo Tkinter que, após alguns cliques do mouse, mostre ao usuário uma imagem oculta. 
Seu programa deverá inicialmente desenhar no canvas a imagem de fundo. 
 
Figura 1: A imagem de fundo 
Em seguida você deve ocultar a imagem com dezesseis retângulos cinzas, todos do mesmo tamanho. 
 
Figura 2: A imagem encoberta pelos retângulos 
Seu programa deve então entrar mainloop() e esperar pelos eventos provocados pelo usuário. A cada 
clique do mouse o programa deve apagar o retângulo na posição correspondente descobrindo assim partes da 
imagem original. 
 
Figura 3: O canvas após alguns cliques do mouse 
Esteja certo de não apagar a imagem de fundo! 
O seguinte código pode servir de base à sua solução: 
root = Tk() 
 
minerva = PhotoImage(file="minerva.gif") 
 
canvas = Canvas(width=minerva.width(), height=minerva.height()) 
canvas.pack() 
 
# seu código aqui... 
 
mainloop() 
 
 
 
from Tkinter import * 
 
# Nome do arquivo contendo a imagem escondida 
ARQUIVO_IMAGEM = "minerva.gif" 
 
def escondeImagem(): 
 width = canvas.winfo_reqwidth() / 4.0 
 height = canvas.winfo_reqheight() / 4.0 
 for x in range(4): 
 for y in range(4): 
 canvas.create_rectangle(x * width, y * height, 
 (x + 1)*width, (y + 1)*height, 
 outline='white', fill='gray') 
 
def clicouMouse(e): 
 hit = canvas.find_overlapping(e.x, e.y, e.x, e.y) 
 if len(hit) > 1: 
 canvas.delete(hit[1]) 
 
root = Tk() 
 
minerva = PhotoImage(file=ARQUIVO_IMAGEM) 
 
canvas = Canvas(width=minerva.width(), height=minerva.height()) 
canvas.pack() 
 
background = canvas.create_image(minerva.width()/2, 
 minerva.height()/2, image=minerva) 
escondeImagem() 
 
canvas.bind("<1>", clicouMouse) 
 
mainloop()

Continue navegando