Você está na página 1de 2

Universidade Federal Fluminense

Mestrado em Engenharia de Telecomunicaes


Prof. Natalia Castro Fernandes
Data: 04/06/2013

1 Prova Tcnicas Avanadas de Programao

1. Diga o que o cdigo abaixo imprime na tela e explique a sua resposta.

def troca_tudo(lista,dicionario,inteiro,string):
global vez
L=[]
L.append([inteiro,string])
lista=L
dicionario[vez]=lista
inteiro *= 2
string = "Sucesso"
vez+=1

def troca_posicao(lista):
if len(lista)>1:
lista[0],lista[-1]=lista[-1],lista[0]

L=[1,2,3,4]
d={}
vez=1
inteiro = 19
i=20
string = 'falha'

for i in range(3):
troca_tudo(L,d,i,string)
troca_posicao(L)

print L,d,vez,inteiro,i,string

2. A classe Polinomios realiza diversas operaes com polinmios de diferentes graus.


Escreva o cdigo dessa classe observando todos os pontos a seguir.
a. Crie essa classe, fazendo a sua documentao.
b. Crie um construtor, que receba como parmetros o grau do polinmio, os valores
dos coeficientes (ax) e o valor de K, onde:
a1 * x1 + a2 * x2 + +an * xn = K
Ateno: Os valores de ax no podem ser passados como lista ou dicionrio para o
construtor. Os valores de ax devem ser guardados em alguma estrutura dentro da
classe.
c. Crie um mtodo, chamado de dividir, que realiza a diviso de polinmios. O
Cdigo para realizar essa diviso j est pronto em um mtodo chamado
divide_polinomio de uma classe chamada de Divisao. Essa classe est definida em
um outro arquivo, chamado de modulo_div.py. A sua classe deve herdar a classe
Divisao.
d. Crie um mtodo atualiza_coeficiente que receba uma funo como argumento.
Essa funo deve ser usada para modificar o valor dos coeficientes.
e. Crie um mtodo calcula_uma_raiz que infira recursivamente uma raiz do
polinmio dentro de um determinado intervalo, retornando o valor dessa raiz
(dentro de uma margem de erro). Se no for encontrada raiz, o mtodo deve
retornar None.
O clculo deve ser feito da seguinte forma:
-O intervalo deve ser reduzido de 10-3 em 10-3 at que se encontre um valor positivo e
um valor negativo (o que indica que existe uma raiz entre os valores).
- Aps encontrar limites de intervalo com sinais diferentes, reduzir o valor do intervalo
de 10-4 em 10-4 at os sinais voltem a ficar iguais. Retornar o valor que mudou de sinal.
f. Qual a margem de erro para o resultado real no mtodo criado no tem 1e? Como
esse mtodo poderia ser otimizado para gerar o resultado mais rapidamente?
(Basta explicar, no precisa implementar)

g. Exemplifique o uso de todos os mtodos criados. Crie mais de uma funo que
possa ser passada como argumento para o mtodo atualiza_coeficiente. Essas
funes devem ser criadas utilizando lambda, map e filter (os trs devem ser
utilizados).