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.
01.import math
02. 
03.def seno(x,prec):
04.    """ Cálculo do seno com uma dada precisão."""
05.    res = 0
06.    dif = 1
07.    exp = 1
08.    while dif > prec:
09.        aux = res
10.        res += (-1)**(exp -1) * (x**(2*exp - 1) / math.factorial(2**exp - 1))
11.        dif = abs(res - aux)
12.        exp += 1
13.    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.

01.def negativo(img_1, img_2):
02.    """
03.    Verifica se duas imagens são o negativo uma da outra.Verifica as dimensões.
04.    """
05.    assert (len(img_1) == len(img_2)) and (len(img_1[0]) == len(img_2[0])), “ Erro”
06.    linhas = len(img_1)
07.    colunas = len(img_1[0])
08.    for l in range(linhas):
09.        for c in range(colunas):
10.            if img_1[l][c] == img_2[l][c]):
11.                return False
12.    return True

Sem comentários:

Enviar um comentário