Vous êtes sur la page 1sur 2

Computação I

Prof.: Anamaria Martins Moreira


P1 - 15 de setembro de 2014
Duração: 2h

Aluno:

1. O critério de aprovação de Comp1 (simplificado) inclui o cálculo da média final do aluno


como a média ponderada da nota teórica T , com peso 8, e da nota prática P R, com peso
2. A nota teórica T é calculada pela média ponderada da nota P 1, com peso 4 e da maior
dentre as notas das provas P 2 e P 3, com peso 6.

(a) (1,5 pt) Defina uma função que receba as 4 notas P 1, P 2, P 3 e P R e calcule e retorne
a média final do aluno de acordo com o critério de aprovação acima. Para escolher a
maior nota entre P 2 e P 3 use a função max definida em Python, que retorna o maior
de seus argumentos.
(b) (1,0 pt) Defina uma outra versão da mesma função sem usar a função max (e nem
min).

2. Considere a função total aprazo que, dados o valor a vista de um produto, a taxa de
juros mensal e o número de meses do parcelamento, devolve o custo final do produto.

def total_aprazo(valor_original, taxa_mensal, meses):


total = valor_original * (1 + taxa_mensal) ** meses
return total

(a) (1,0 pt) Usando a função total aprazo, defina uma função que calcule e retorne o
acréscimo anual ao preço à vista e a taxa de juros anual dados o preço à vista e a
taxa de juros mensal.
Chamada de função Valor de retorno
total aprazo(10, 0.1, 2)
(b) (1,5 pt) Complete a tabela a seguir:
total aprazo(10.0, 0.1, 2)
total aprazo(10.0, 0.1, "2")

3. (3,0 pt) A função datas a recebe duas datas no formato ”DD/MM/AAAA”e devolve o
número de dias passados da primeira para a segunda data (é assumido que a segunda
data é sempre posterior à primeira).

def datas(data1,data2):
dias1 = int(data1[:2]) + int(data1[3:5])*30 + (int(data1[6:])-1)*365
dias2 = int(data2[:2]) + int(data2[3:5])*30 + (int(data2[6:])-1)*365
return "O total de dias eh " + str(dias2 - dias1)
A função tempo a seguir usa a função datas e deveria calcular o número de minutos
passados a partir da primeira data e hora até a segunda data e hora recebidas como
argumentos. O formato de data1 e data2 é exatamente o especificado em datas e hora1
e hora2 seguem o formato ”HH:MM”. Não há restrição de ordem entre hora1 e hora2.

def tempo(data1, hora1, data2, hora2):


dias = int(datas(data1,data2)[19:])

h1=int(hora1[0:2])
m1=int(hora1[3:])
h2=int(hora2[0:2])
m2=int(hora2[3:])

if h2 > h1:
dif = 60*(h2-h1) + m2 - m1
elif h2 == h1 and m2 > m1 or m2 < m1 or m2 == m1:
dif = m2 - m1
else:
dif = 60*(h1-h2) + m1 - m2

return 3600*dias + dif

A função tempo possui no entanto 3 defeitos.

(a) Forneça 4 casos de teste (chamada, resultado esperado e resultado obtido com a
função), sendo que pelo menos um deles não deve fazer aparecer os defeitos e pelo
menos um deles deve ter o resultado influenciado por cada um dos defeitos.
Chamada de função Valor de retorno esperado Valor de retorno obtido

(b) Indique as correções necessárias para os defeitos identificados.

4. (2,0 pt) Defina uma função que, dado o diâmetro de uma bola e as 3 dimensões de uma
caixa (altura, largura e profundidade), diz se a bola de boliche cabe dentro da caixa ou não.
A entrada é fornecida através de 2 argumentos: (1) uma string com o formato ”diametro:
D”ou ”diametro: DD”, etc. (tantas posições quantas forem necessárias para representar
o diâmetro, que será sempre um valor inteiro) e (2) uma tupla de três elementos (já
numéricos) contendo respectivamente a altura, a largura e a profundidade da caixa. Todas
as medidas são em centı́metros. A resposta deve conter a informação sobre o diâmetro
da bola.

Vous aimerez peut-être aussi