Você está na página 1de 5

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA

INF 100 – Introdução à Programação I SEMESTRE I / 2023

Prova 1a - Gabarito 06/05/2023 08:00 –9:40h

Questão 1 (4 pontos)

Considere, o seguinte programa em Python:


a = 2
b = -2 ** a
c= a * 8 % 4 * 2.5
d= a + 8 // 4 * 2.5
print( 'a = %d, b = %d, c = %.1f, d = %.1f' %(a,b,c,d) )
b = 3
if a>0:
if a>10 and a==b:
print('saída 1:',a,b,c,d)
a=a-2*b
elif a>10 or b<a:
print('saída 2:',a,b,c,d)
a=a-3*b
else:
print('saída 3:',a,b,c,d)
a=a-4*b
c=a-2*b
print('saída 4:',a,b,c,d)
else:
print('saída 5',a,b,c,d)
c=a+5*b
d=5
print('saída 6:',a,b,c,d)

Complete na área “Tela do Computador” escrevendo o resultado que seria exibido para a
execução do código acima
Tela do Computador

a = 2, b = -4, c = 0.0, d = 7.0


saída 3: 2 3 0.0 7.0
saída 4: -10 3 -16 7.0
saída 6: -10 3 -16 5

Rascunho: use a área abaixo para “rastrear” os valores das variáveis

Página 1 de 5
Questão 2 (4 pontos)
Considere um programa para calcular a soma dos primeiros N elementos, chamada de Sn, de uma
Progressão Geométrica (PG). Uma PG é sequência de valores caracterizada pelo fato do valor de
um termo ser igual ao valor do termo anterior multiplicado por uma constante q, chamada de razão.
A seguir são apresentados dois exemplos de Progressão Geométrica, compostas por 4 elementos,
ambas com o primeiro termo (a1) de valor 2:
a) 2, 4, 8, 16. Razão q=2, soma dos 4 termos Sn=30 e a1.=2.
b) 2, 2, 2, 2. Razão q=1, soma dos 4 termos igual a Sn=8 e a1.=2.
A fórmula geral para o cálculo da soma dos n primeiros elementos (Sn) é dada por:

Note que, para o caso do exemplo “b”, a fórmula geral da soma dos n primeiros elementos NÃO
pode ser aplicada, pois daria um erro de divisão por 0. Neste caso, a soma seria dada por: Sn = n.a1
i) Primeiramente, defina e anote no quadro abaixo, onde pedido, um nome para cada uma das 3
variáveis que serão usadas na implementação do trecho de código.
1) variável com o valor do primeiro elemento da PG: a1
2) variável com a razão da PG: q
3) variável com o valor do Número de elementos da PG: n

ii) Escreva um trecho de código Python para calcular, de maneira correta, a soma dos n primeiros
elementos de uma PG qualquer. Escreva APENAS o que está sendo pedido. Suponha que as três
variáveis que você definiu já foram criadas e tiveram seus valores definidos em passos anteriores do
código.

# Escreva, abaixo, o trecho de código p/ o cálculo do somatório dos N


elementos de uma PG

if q == 1 :
Sn = n*a1
else :
Sn = a1 * (q**n - 1) / (q - 1)

Página 2 de 5
Questão 3 (5 pontos)

Um programa deve ler dois valores inteiros “a” e “b” e informar se existe alguma relação entre eles.
As possíveis relações são:
- “a” e “b” são iguais;
- “a” é divisível por “b”;
- “b” é divisível por “a”;
- nenhuma das relações anteriores.
Obs.: Para um número inteiro X ser divisível por outro número inteiro Y, X deve ser maior do que
Y e o resto da divisão inteira de X por Y deve ser igual a 0 (zero).
A seguir são mostrados quatro exemplos de execuções do programa. Para melhor compreensão, os
valores fornecidos pelo usuário se encontram destacados.:
Execução 1 Execução 2
Entre com dois valores quaisquer. Entre com dois valores quaisquer.
a= 9 a= 8
b= 9 b= 7
Os valores são iguais entre si. Não existe relação entre 8 e 7.

Entre com dois valores quaisquer. Entre com dois valores quaisquer.
a= 8 a = 20
b = 16 b= 5
16 é divisível por 8. 20 é divisível por 5.

Escreva os comandos Python, nos quadros a seguir, para completar o programa, de forma que ele
execute as tarefas descritas anteriormente. Antes de cada quadro há um comentário explicitando o
que deve ser feito. Portanto, escreva APENAS os comandos necessários para implementar o que
se pede.

print(‘Entre com dois valores quaisquer:’)


# ler os 2 valores inteiros

a = int( input('a = ') )


b = int( input('b = ') )

# testes das condições e impressão do resultado

if a == b :
print('Os valores são iguais entre si')
elif a > b and a % b == 0 :
print('%d é divisível por %d' %( a, b ) )
elif b > a and b % a == 0 :
print('%d é divisível por %d' %( b, a ) )
else :
print('Não existe relação entre %d e %d' %( a, b ) )

Página 3 de 5
Questão 4 (7 pontos)
Suponha uma máquina automática para venda de garrafas de água mineral ao preço de R$ 5,00
cada. A máquina aceita apenas notas de R$ 100,00, R$ 50,00, R$20,00, R$10,00 e R$ 5,00.
Escreva um programa Python para:
- ler o valor da nota inserida pelo usuário - suponha que o usuário sempre informa o valor correto e
e entre as opções aceitas pela máquina.
- ler o número de garrafas que o usuário quer comprar
- caso a compra não possa ser efetuada, informar que a nota inserida será devolvida
- caso contrário, efetuar a venda e informar: o valor da compra e o valor do troco.
O troco deve ser dado sempre com o menor número de notas possível. Para descobrir a quantidade
de notas de um determinado valor de troco, basta utilizar as operações de divisão inteira (//) e resto
da divisão inteira (%) sucessivamente, começando os testes pelo maior valor de nota (R$ 50,00).

Veja abaixo 4 exemplos de execução do programa. Para melhor compreensão, os valores fornecidos
pelo usuário se encontram destacados:

Exemplo 1 Exemplo 2
Informe o valor da nota: 100 Informe o valor da nota: 100
Informe o número de garrafas: 34 Informe o número de garrafas: 20

Sua compra totaliza R$ 170.00 Sua compra totaliza R$ 100.00


Valor insuficiente. Pegue a sua nota. Não há troco.

Exemplo 3 Exemplo 4
Informe o valor da nota: 100 Informe o valor da nota: 50
Informe o número de garrafas: 3 Informe o número de garrafas: 5

Sua compra totaliza R$ 15,00 Sua compra totaliza R$ 25.00


Seu troco será de R$ 85,00: Seu troco será de R$ 25.00:
1 x R$ 50,00 0 x R$ 50,00
1 x R$ 20,00 1 x R$ 20,00
1 x R$ 10,00 0 x R$ 10,00
1 x R$ 5,00 1 x R$ 5,00

SOLUÇÃO: (Use o verso da folha)

nota = int( input('Informe o valor da nota: ') )


n = int( input('Informe o número de garrafas: ') )
compra = n*5
print()
print('Sua compra totaliza R$ %d,00' %compra)

# continua na próxima página


Página 4 de 5
if compra > nota :
print('Valor insuficiente. Pegue sua nota.')

else :
troco = nota - compra
if troco == 0 :
print('Não há troco.')
else :
print('Seu troco será de R$ %d,00.' %troco)
n50 = troco // 50
n20 = troco % 50 // 20
n10 = troco % 50 % 20 // 10
n5 = troco % 50 % 20 % 10 // 5
print('%d x R$50,00' %n50)
print('%d x R$20,00' %n20)
print('%d x R$10,00' %n10)
print('%d x R$5,00' %n5)

Página 5 de 5

Você também pode gostar