UFRJ - Instituto de Matemática – DCC
Programação de Computadores II
Período 2012/1
Lista de Exercícios
Ex 1. Para cada um dos trechos de programa abaixo,
mostre exatamente o que será mostrado pelos mesmos
através dos comandos print.
## trecho 1
L=[8,9,2,23,45,32,21,12]
print L[0]
print L[0:3]
print L[-2]
print L[5:2]
print L[-8]
## trecho 2
L = [0,0]
for i in range(2,8):
L.append (L[i-2] + L[i-1])
print L
## trecho 3
L=[5,3,6,7,8,9,2,23,45,32,21,12]
print L.index(9,0,len(L))
## trecho 4
P = [“A”,”bB”,”CdE”,”;”,”@”]
for x in P:
print x, x.lower(), x.upper(),
print
## trecho 5
import fileinput
s = 1
for L in fileinput.input("enigma.txt"):
if s <> 3:
Q = L.split()
print Q[0], len(Q)
s = s + 1
## trecho 6
x=range(1,11)
y=["ABC","CDE"]
x.append(y)
print x
## trecho 7
L=[1,2,3,4,5,6,7,8,9,10]
L.append(20)
print L
L.insert(2,30)
print L
## trecho 8
L =[1,2,3,4,5]
L.remove (4)
print L
L.remove(4)
## trecho 9
for i in range(1,6):
L.append(1.0/i)
print L
soma=0
for x in range(0,len(L)):
soma = soma + L[x]
print soma
## trecho 10
L=[0,1]
while L[-1] + L[-2] <800:
L.append(L[-1] + L[-2])
print L
print L.index(89)
print L[L.index(89)]
## trecho 11
x=range(1,11)
for i in x:
print i
Considere que o arquivo enigma.txt contém:
Simule um computador chinês.
Pense um pouco mais e #responda?
Continue pensando e confira tudo.
Leia a questão e pense ++ ++++++++.
Ex 2. O programa abaixo identifica os números entre 1 e
4096 que são, ao mesmo tempo, quadrados perfeitos e
cubos perfeitos (N é quadrado perfeito se existe um inteiro
positivo I tal que N = I2 e é um cubo perfeito para J3).
Note que 4096 = 642 = 163
for q in range(1, 65):
for c in range(1,17):
if q*q == c*c*c:
print q*q
a) Reescreva esse programa sem usar comandos for.
b) O programa abaixo é uma versão incompleta do mesmo
programa. Complete os trechos marcados com “___” de
forma que os dois programas produzam rigorosamente o
mesmo resultado.
for q in range(1, 65):
___
while c ___ 17:
if c*c*c == q___2:
print c*c*c
___
Não é permitido alterar os trechos fornecidos e somente as
lacunas devem ser preenchidas. Reescreva todo o programa
na sua resposta.
Ex 3. Escreva um programa Python que mostre todos os
triângulos retângulos cujos lados a, b, c tenham por
comprimento números inteiros entre 1 e 50. O programa
deve mostrar os valores para cada combinação encontrada
e o número de triângulos. Não é preciso eliminar as
soluções simétricas. Formato do resultado:
a=3 b=4 c=5 é um triângulo retângulo
...
a=5 b=4 c=3 é um triângulo retângulo
...
a=10 b=6 c=8 é um triângulo retângulo
...
Encontrados xx triângulos
Ex 4. Observe o programa a seguir.
import math
import locale
x=0.2
while x <= 2:
print
locale.format('%4.1f',x), \
locale.format('%6.4f',math.sqrt(x))
x = x + 0.2
Sabendo que sua execução produz
0.2
0.4
...
2.0
0.4472
0.6325
......
1.4142
apresente uma nova versão do mesmo programa
substituindo o comando de repetição while por um
comando for. O resultado final deve ser idêntico. Dica: o
range do Python só funciona com números inteiros.
Ex 5. A soma dos vinte primeiros termos da série
1 1 1
1
1+ + +
+ L
4 9 16 25
pode ser calculada e exibida pelo trecho de programa a
seguir.
soma=0
for a in range(1,21):
soma = soma + 1./a/a
print soma
Reescreva esse programa de tal forma que a série
considerada seja a que é mostrada a seguir:
1
1
1
1
−
+
−
+L
1 + 1 2 + 8 3 + 27 4 + 64
Ex 6. Observe o programa a seguir.
import math
import locale
x=2.0
while x <= 2:
print
locale.format('%4.1f',x), \
" ", \
locale.format('%6.4f',math.sqrt(x))
x = x - 0.2
Qual é o resultado produzido pelo programa?.
Ex 7. É possível obter uma aproximação de Π pela fórmula
1 
 1 1 1
12.1 − + − + L
 4 9 16 25 
Quanto maior o número de termos utilizados no cálculo,
melhor será a precisão da aproximação obtida. Tomando
como referência um dos programas fornecidos, escreva
uma versão simplificada desse programa que forneça o
valor de uma (somente uma) aproximação de Pi de tal
forma que o algoritmo de aproximação pare quando a
diferença (módulo) entre o termoi+1 e o termoi for menor
que 10-8.
Ex 8.
a) Escreva um programa Python que apresente os números
de Armstrong entre 000 e 999. 153 é um número de
Armstrong, porque 13 + 53 + 33 = 1 + 125 + 27 = 153. Ou
seja, a soma dos seus três dígitos elevados ao cubo é igual
ao próprio número. Para repetição, use comandos for.
b) Escreva o mesmo programa usando comandos while.
Ex 9. Esta questão trata de um procedimento que testa se
um número n é primo ou não. Construa um algoritmo que
decida isso (pode ser simples, desde que funcione) e
escreva uma função Python que o implemente de acordo
com a seguinte definição.
def numero_eh_primo(n):
n é sempre um número inteiro e a função
numero_eh_primo retorna True se n é primo e False se n
não é primo.
Ex 10. No programa abaixo as palavras aparecem em
linhas, da esquerda para a direita, de cima para baixo.
Altere o programa para que as palavras apareçam em
colunas, de cima para baixo, da esquerda para a direita, em
três colunas.
import fileinput
palavras=[]
contagem=[]
for S in fileinput.input("Japao.txt"):
L = S.split()
for i in range(0,len(L)):
if not (L[i] in palavras):
palavras.append(L[i])
contagem.append(1)
else:
j = palavras.index(L[i])
contagem[j] = contagem[j] + 1
for i in range(0,len(palavras)):
tamanho=len(palavras[i])
print palavras[i],contagem[i], \
(15-tamanho)*" ",
if ((i+1) % 4) == 0:
print
Ex 11. Observe a função Python mostrada a seguir.
def xpto(n):
if n<0:
return -1
elif n = 0:
return 0
else:
return 5 + xpto(n-3)
Com base nesse exemplo, escreva uma função Python que
calcule o fatorial de um número inteiro n, n ≥ 0.
Ex 12. a) Escreva um função Python que calcule uma
aproximação de Π com a fórmula do exercicio 7. A função
deve receber como parâmetro o número de termos a serem
considerados; b) repita o exercício, agora calculando
termos até que a diferença seja menor que o limite passado
como parâmetro.
Download

Ex 1. Para cada um dos trechos de programa abaixo - DCC