segunda-feira, 26 de outubro de 2015

Teste #1 - TP1

Pergunta 2

Era pedido um programa que calculasse a percentagem de ocorrências de caras no lançamento de uma moeda ao ar. O número dos lançamentos era um parâmetro do programa.

Não era preciso pensar muito para perceber que: (a) vamos precisar de simular o lançamento da moeda um número fixo de vezes e, (b) contar o número de vezes em que ocorreu caras. Um modelo inicial de solução poderá ser:
1.def caras(n):
2. # inicializa contagem
3. for i in range(n):
4.  # lança moeda
5.  if #caras?:
6.   # actualiza contagem
7. return #percentagem
Aprofundando um pouco mais a solução, torna-se claro que vamos precisar de um acumulador que conte o número de vezes em que saiu caras:
01.def caras(n):
02. # inicializa contagem
03. conta = 0
04. for i in range(n):
05.  # lança moeda
06.  if #caras?:
07.   # actualiza contagem
08.   conta = conta + 1
09. return conta/n * 100
E estamos perante o padrão ciclo - acumulador!
Simular o lançamento pode ser conseguido recorrendo ao módulo random e ao método randint.
01.import random
02. 
03.def caras(n):
04. # inicializa contagem
05. conta = 0
06. for i in range(n):
07.  # lança moeda
08.  resultado = random.randint(0,1)
09.  if resultado == 0:
10.   # actualiza contagem
11.   conta = conta + 1
12. return conta/n * 100
Nesta solução admitimos que 0 significa caras. Também podíamos usar outra representação, usando agora o método choice.
01.import random
02. 
03.def caras(n):
04. # inicializa contagem
05. conta = 0
06. for i in range(n):
07.  # lança moeda
08.  resultado = random.choice(’caras’,’coroas’)
09.  if resultado == ‘caras’:
10.   # actualiza contagem
11.   conta = conta + 1
12. return conta/n * 100
Pergunta 3

Este problema tinha duas partes. Primeiro, escrever um programa que permite desenhar um quadrado, tendo como parâmetros o tamanho do lado, a cor do traço, a orientação e a posição. Segundo, usar este programa como auxiliar para desenhar vários quadrados, alterando os parâmetros em cada um de modo a desenhar uma forma semelhante a um nautilus. Divididas as questões deste modo a primeira questão era trivial (e já resolvida nas aulas,…).
01.import turtle
02. 
03.def quadrado(lado,orientacao,pos_x,pos_y,cor):
04.    # inicializa tartaruga
05.    turtle.showturtle()
06.    turtle.penup()
07.    turtle.goto(pos_x,pos_y)
08.    turtle.setheading(orientacao)
09.    turtle.colormode(255)
10.    turtle.pencolor(cor)
11.    turtle.pendown()
12.    # desenha quadrado
13.    for i in range(4):
14.        turtle.forward(lado)
15.        turtle.right(90)
16.    turtle.hideturtle()
Como se pode ver, no início inicializamos a tartaruga de acordo com os parâmetros, para de seguida desenhar o quadrado. Não há muito mais que se possa dizer.

Quanto à segunda parte do problema só tínhamos que perceber que se trata de repetir o desenho do quadrado com diferente orientação, posição e tamanho. E foi para isso que escrevemos o primeiro programa…
01.def boneco(lado,orientacao,pos_x,pos_y,cor,n):
02.    for i in range(n):
03.        # Desenha Quadrado
04.        quadrado(lado,orientacao,pos_x,pos_y,cor)
05.        # Actualiza parâmetros
06.        pos_x = pos_x + lado//5
07.        pos_y = pos_y + lado//5
08.        orientacao = orientacao + 15
09.        lado = lado + 10
Muitos não entenderam o significado da expressão “utilize o primeiro programa como auxiliar”. Espero que com o exemplo concreto tenham agora percebido.

Sem comentários:

Enviar um comentário