Introdução à Programação - minor

Propaganda
Introdução à Programação - minor
João Pedro PEDROSO
Departamento de Ciência de Computadores
Faculdade de Ciências da Universidade de Porto
Ano lectivo de 2012/2013
[email protected]
Aula número 5
Nos seus programas, utilize o padrão
if __name__ == "__main__":
# teste
...
para escrever código de teste às funções implementadas. Verifique que esse teste não é executado quando importa
esse ficheiro (ou módulo) noutros programas.
Revisões
1. O método de Newton, aplicado para encontrar o valor da raiz quadrada de um número, consiste no seguinte:
(a) primeira aproximação: x = n/2
(b) aproximações seguintes: x0 = 12 (x + nx )
Escreva uma função que devolve o valor aproximado,
ao fim da décima iteração.
2. Modifique a função para que o resultado seja x,
quando este valor deixa de ser alterado (i.e, quando
se atingiu o limite de precisão do computador).
3. A série de Fibonacci é a seguinte:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . .
ou seja, qualquer valor além dos dois primeiros é
obtido à custa da soma dos dois anteriores.
(a) Implemente uma função recursiva que dado um
inteiro n calcule o n-èsimo número da série.
(b) Utilize essa função para calcular os primeiros 50 números da série. Faça um comentário
acerca da eficiência desse cálculo.
(c) Implemente uma função não recursiva para
efectuar o mesmo cálculo, e compare a sua eficiência com a da anterior.
4. Um pai tem n bolos e k filhos.
(a) Determine como os deve distribuir pelos filhos
sem os partir, por forma a que cada um dos
filhos fique, no máximo, com um bolo a mais
ou a menos do que qualquer um dos outros.
(b) Implemente uma função f (n, k) que, dados n e
k, imprima o número de bolos que cada filho
terá.
(c) Teste a sua função com os seguintes valores:
(a) n = 12, k = 4
(b) n = 5, k = 3
(c) n = 7, k = 6
(d) n = 7, k = 2
(e) n = 2, k = 7
Iteração, padrão acumulador
5. O número de Neper pode ser aproximado por
e=1+
1
1
1
+ + + ...
1! 2! 3!
Implemente a função neper(k) cujo resultado é somatório dos primeiros k termos desta série. (Nota:
implemente e utilize a função auxiliar factorial.)
Turtle
6. Escreva um programa para desenhar um mostrador
de relógio, como na figura que se segue.
7. Desenhe as duas espirais que se seguem. Note que
elas diferem apenas no ângulo que a tartaruga roda.
Expressões lógicas e condições
8. Pesquise na Internet o que são números triangulares.
Implemente a função
print_triangular_numbers(n) que imprime os
primeiros n números triangulares; por exemplo,
print_triangular_numbers(5) deverá produzir:
1
2
3
4
5
1
3
6
10
15
9. Escreva uma função is_divisible(x,y) que devolve o valor lógico verdadeiro se x for divisível por
y, e falso no caso contrário.
10. Escreva a função is_prime(n) que devolve o valor
lógico verdadeiro de n for primo, e falso no caso contrário.
11. Escreva uma função que devolve o número de algarismos num número inteiro.
Exercício a apresentar: um os seguintes, indicados a itálico, a ser sorteado.
Nota: em todos os exercícios precisa de implementar uma função auxiliar para calcular o fatorial, que deverá
submeter juntamente com a função que lhe for atribuída.
12. A expansão da função erro erf numa série de Taylor
ao redor do ponto z é dada por
∞
2 X (−1)n z 2n+1
erf(z) = √
π n=0 n!(2n + 1)
2
z3
z5
z7
z9
=√
z−
+
−
+
− ···
3
10 42 216
π
Implemente a função erro(x,k) que devolve a
soma dos primeiros k termos da série avaliados
em x; por exemplo,
erro(1,3) deverá devolver
1
1
√2
1
−
+
=
0.865090
...
3
10
π
13. Implemente a função ssum(n,k) que retorna a soma
do fatorial de i, desde i = 1 até n, para os valores
i divisíveis por k. Por exemplo ssum(6,2) deverá
retornar 2! + 4! + 6!
14. O número de permutações de n elementos k a k é
dado por:
n
n!
=
(n − k)!k!
k
Num estudo em análise combinatória é necessário
conhecer a soma de todas as permutações, ou seja,
n X
n
k=0
k
Implemente a função tperm(n) que retorna esse número.
Download