sábado, 22 de novembro de 2014

Teste 2 - TP1

P1

Que variantes da instrução de atribuição usual ( = ) conhece? Resposta:

Existem três tipos de variantes para a forma explícita da instrução de atribuição: (a) aumentada: op= que equivale a = op por exemplo: x += 5

(b) em cadeia: x = y = … = que equivale a y = ; x = y para o caso de apenas dpis nomes. Exemplo: x = y = 7

(c) multipla: x, y = , , que equivale a x = ; y = , para o caso de apenas dois nomes. Exemplo: x,y = 4,7



P2

Calcular o valor do seno de um ângulo com uma dada precisão. Apresentar ainda o número de termos usados para obter a precisão pedida. O programa deve recorrer à definição de seno que usa a série infinita.

Este problema tem então dois dados de entrada (o ângulo e a precisão) e dois de saída (o seno e o número de termos). Como nos vamos basear na precisão temos que recorrer a um ciclo while. A garantia de cumprir a precisão desejada é controlada pela diferença do valor de duas somas parciais consecutivas.
import math

def seno(x,prec):
    """ Cálculo do seno com uma dada precisão."""
    res = 0
    dif = 1
    exp = 1
    while dif > prec:
        aux = res
        res += (-1)**(exp -1) * (x**(2*exp - 1) / math.factorial(2**exp - 1))
        dif = abs(res - aux)
        exp += 1
    return res, exp
P3

Dadas duas imagens a preto e branco, representadas por um tuplo de tuplos de uns e de zeros, verifique se são o negativo uma da outra. Assegure-se que as imagens têm o mesmo tamanho, caso contrário deve ser desencadeado um erro.

Para controlar o tamanho usamos a instrução assert, que analisa se têm o mesmo número de linhas e de colunas. Depois temos dois ciclos imbricados e mal se encontrem dois valores na mesma posição das duas imagens iguais podemos abandonar pois já sabemos que não podem ser o negativo uma da outra. Lembrar que apenas existem dois valores: 0 e 1.

def negativo(img_1, img_2):
    """ 
    Verifica se duas imagens são o negativo uma da outra.Verifica as dimensões.
    """ 
    assert (len(img_1) == len(img_2)) and (len(img_1[0]) == len(img_2[0])), “ Erro”
    linhas = len(img_1)
    colunas = len(img_1[0])
    for l in range(linhas):
        for c in range(colunas):
            if img_1[l][c] == img_2[l][c]):
                return False
    return True
   

Sem comentários:

Enviar um comentário