Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Rio de Janeiro Engenharia de Produção – Turma EP1 3ª Prova de Computação 1 17 de dezembro de 2010 Duração: 2 horas Jonas Knopman Questão 1: Lists (0.0 pontos) 9 linhas Você tem um List de tamanho N cujas posições armazenam os números de 0 a 1−N em ordem aleatória. Digamos, por exemplo, que o List se pareça com: Nessa figura os índices estão escritos acima dos retângulos, e os valores em cada uma das posições, no interior dos mesmos. Você quer percorrer um caminho pelo List, a partir de uma origem qualquer, indo de cada posição até a posição seguinte, cujo índice é dado pelo valor da posição atual. Vamos supor, por exemplo, que a posição inicial é a posição 0. Na posição 0. O valor de lista[0] é 5. Indo para a posição 5 Na posição 5. O valor de lista[5] é 2. Indo para a posição 2 Na posição 2. O valor de lista[2] é 3. Indo para a posição 3 Na posição 3. O valor de lista[3] é 0. Indo para a posição 0 Como podemos observar, são necessários quatro passos para retornar à origem na posição 0. Se a posição inicial fosse a posição 1, teríamos: Na posição 1. O valor de lista[1] é 4. Indo para a posição 4 Na posição 4. O valor de lista[4] é 1. Indo para a posição 1 Teríamos, nesse caso, um ciclo de tamanho 2 Sua tarefa: escreva uma função: def tamanhoCiclo(lista, inicio): que, dados um List de inteiros de 0 a 1−N , e um índice inicial, calcule o número de passos necessários para retornar à origem. Observação: Não é necessário imprimir o caminho, apenas o tamanho do ciclo. Sua função aplicada ao primeiro exemplo geraria como saída o número 4 (quatro). Quando aplicada ao segundo exemplo, a função geraria como saída o número 2 (dois). Questão 2: Processamento de Strings (0.0 pontos) 7 linhas Parâmetros de uma requisição são parâmetros adicionados a uma URL para especificar ou restringir os dados que devem ser retornados de uma requisição HTTP. Por exemplo, se eu quiser ler uma mensagem privada em minha conta no Facebook, basta clicar sobre o aviso da mensagem. A URL gerada no browser será: http://www.facebook.com/?page=1&sk=messages&tid=1443661022838 Observe que o Facebook está acrescentando algumas informações à requisição. Através do parâmetro sk ele especifica que eu quero ler uma mensagem cujo identificador único é dado pelo parâmetro tid De uma maneira mais geral, os parâmetros de uma requisição em uma URL têm a forma: http://www.website.com/?param1=valor1¶m2=valor2¶m3=valor3... Sua tarefa: escreva uma função: def getParametrosRequisicao(url): que imprime todos os parâmetros de requisição de uma URL recebida como parâmetro. Para o exemplo acima, a saída da função deveria ser: page : 1 sk : messages tid : 1443661022838 Questão 3: Um programa gráfico e eventos do mouse (0.0 pontos) 25 linhas Nessa questão você construirá um jogo em que uma bola desenhada no canvas persegue os cliques do mouse. Suas tarefas: • Desenhe um círculo de diâmetro DIAMETRO, em uma posição aleatória do canvas. O círculo deverá estar totalmente visível no canvas. • A cada clique no canvas, o círculo muda de direção (ou inicia o movimento, no caso do primeiro clique) e passa a se dirigir à posição do clique. Se o usuário não tornar a clicar sobre uma nova posição no canvas, o centro do círculo atinge a posição destino em NUM_PASSOS intervalos de animação. • O jogo termina quando existe uma interseção entre a bola e a posição de destino. Para facilitar sua tarefa, o programa principal e as constantes usadas no programa são fornecidos a seguir. from random import * from Tkinter import * from time import * # diametro da bola em pixels DIAMETRO = 80 # pausa entre animações PAUSA = 0.08 # número de intervalos de animação para que a bola # alcance a posição do clique do mouse NUM_PASSOS = 15 def getX(obj): [x0, y0, x1, y1] = canvas.coords(obj) return (x0 + x1)/2.0 # seu código aqui setup() while True: canvas.move(bola, dx, dy) sleep(PAUSA) canvas.update() if alcancouObjetivo(): break mainloop()
Compartilhar