quarta-feira, 22 de outubro de 2014

Teste 1 - TP2

Teste 1 - TP2

P1

Os programas são construídos e são executados. Quando os desenvolvemos através de um def eles podem ter argumentos que são nomes. Aos argumentos que aparecem nas definições chamamos parâmetros formais. Quando executamos um programa recorremos ao nome do programa colocando entre parênteses expressões que quando avaliadas correspondem a objectos. Essas expressões são designadas por parâmetros reais.
def xpto(x,y):
 return 2*x*y

print(xpto(4,8))
No exemplo a acima, x e y são parâmetros formais, enquanto 4 e 5 são parâmetros reais. P2

Determinar se a distância entre dois pontos é inferior a um dado limiar consiste em calcular a distância e comparar com o limiar.
import math

def perigo(x1,y1,x2,y2,limiar):
    """ Determina se a distância entre dois pontos é inferior a um dado limiar."""
    dist = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
    if dist < limiar:
        return True
    else:
        return False
P3

Este programa tem duas partes. A primeira consiste em construir um programa que permita desenhar um rectângulo, controlando a posição, a orientação o comprimento dos lados e a cor. à semelhança do que foi feito nas aulas para o caso dos polígonos regulares, temos uma solução simples.
import turtle

def vela(posx, posy, orienta, lado1 ,lado2, cor):
    turtle.penup()
    turtle.goto(posx,posy)
    turtle.pendown()
    turtle.setheading(orienta)
    turtle.fillcolor(cor)
    turtle.begin_fill()
    for i in range(2):
        turtle.forward(lado1)
        turtle.left(90)
        turtle.forward(lado2)
        turtle.left(90)
    turtle.end_fill()
    turtle.hideturtle()
A segunda pergunta recorre ao primeiro programa e é trivial. Ter um ciclo em que vamos desenhando rectângulos desfasados de um dado ângulo.
def moinho(posx, posy,orienta, lado1, lado2, cor, n,afastamento):
    """ desenha as velas de um moinho"""
    angulo = orienta
    for i in range(n):
        vela(posx,posy, angulo, lado1,lado2,cor)
        angulo = angulo + afastamento
    turtle.hideturtle()
    turtle.exitonclick()

Teste 1 - TP1

Teste # 1 - TP1

P1

Em Python todos os programas que escrevemos quando são executados são-no num dado ambiente. Esse ambiente é composto pelo espaço de nomes, o lugar da memória onde se encontram os nomes activos, e o espaço dos objectos, o lugar da memória onde se encontram os objectos descritos através dos seus atributos.

Os dois espaços estão ligados entre si, no sentido de que os nomes estão associados a objectos. essa associação é feita através da instrução de atribuição (explicita ou implícita). Um exemplo simples:

Depois de fazermos a = 5 o nome a passa a existir no espaço de nomes, associado ao objecto de valor 5.

P2

Este problema é muito simples. Escrevo um programa que recebe como entrada o número de tentativas e o número em que digo que acerto. Depois tenho um ciclo que pode ser executado um número máximo de vezes igual ao número de tentativas e que termina com verdadeiro se sair o número, falso no caso contrário.
def aposta(n,m):
    for i in range(m):
        num = random.randint(1,6)
        if num == n:
            return True
    return False
P3

Este programa tem duas partes. Comecemos pela primeira: desenhar um losango colorido, numa dada posição e orientação e com um dado tamanho. Este problema não é muito diferente do que foi feito nas aulas envolvendo polígonos regulares. Daí a solução:
import turtle

def petala(posx, posy, orienta, lado, cor):
    turtle.penup()
    turtle.goto(posx,posy)
    turtle.pendown()
    turtle.setheading(orienta)
    turtle.fillcolor(cor)
    turtle.begin_fill()
    for i in range(2):
        turtle.forward(lado)
        turtle.left(60)
        turtle.forward(lado)
        turtle.left(120)
    turtle.end_fill()
Começamos por levantar a caneta, posicionar a tartaruga, orientá-la e definir a cor. Depois é só executar as operações de avanço e rotação.

A segunda parte é mais fácil pois consiste em repetir o desenho dos losangos, mantendo a posição de referência e rodando o losango.
def flor(posx, posy,orienta, lado, cor, n,afastamento):
    """ desenha uma flor com n pétalas."""
    angulo = orienta
    for i in range(n):
        petala(posx,posy, angulo, lado,cor)
        angulo = angulo + afastamento
    turtle.hideturtle()
    turtle.exitonclick()