Você está na página 1de 5

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA

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

Prova 2 05/11/2022 08:00 – 9:40h

Matrícula:_______________Nome:________________________________________________________________

Marque com um X sua turma TEÓRICA:


Turma Dia da Semana Horário Professor(a)
1 Quinta-feira 10:00 Vladimir
2 Sexta-feira 10:00 Carlos
3 Sexta-feira 08:00 Júlio César
4 Quinta-feira 18:30 Daniel
5 Quinta-feira 14:00 Vítor

OBSERVAÇÕES:
● As questões podem ser resolvidas a lápis.
● As questões devem ser resolvidas escrevendo código Python. Serão aceitos
comandos em pseudo-código caso você não se lembre da sintaxe do comando em
Python. Um comando em pseudo-código deverá estar representado de forma
clara, não ambígua, de modo a poder ser traduzido para uma instrução da
linguagem de programação Python.

A tabela abaixo apresenta a ordem de prioridade dos operadores e comandos Python


mais comuns. Essa informação pode ser útil para você na resolução das questões da
prova.

Prioridade Operador(es) e comando = Exemplo


1 ** x ** 3
2 - (unário) -x
3 * / // % x / y
4 + - x - y
5 < <= > >= == != x < y
6 not not x > 0
7 and x < y and x > 0
8 or x < y or x == 0
9 = x = 2
Questão 1 (4 pontos)

Considere, para o seguinte programa em Python:

N = 4
W = 8
for j in range (0, N):
i = j + 5
print(i, end='')
while i < W :
print('#', end='')
i = i + 1
print(i)

# Dica: a diretiva end=''mantém a próxima impressão na mesma linha

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

Tela do Computador Rascunho (rastreio das variáveis)


5###8 1 ponto para cada linha
6##8 correta.
7#8
88
Questão 2 (6 pontos)
No início de um programa um comando repetitivo será utilizado para ler o preço de uma marca de
shampoo para diferentes supermercados. A quantidade de valores a serem lidos NÃO é conhecida,
pois vai depender do número de supermercados onde o produto foi encontrado. O fim da entrada de
dados é sinalizada com um valor <= 0. A seguir são apresentados dois exemplos de execução deste
trecho de código, no qual os valores fornecidos pelo usuário estão destacados:

Exemplo 1: Exemplo 2:

Preço Shampoo (<= 0 p/ fim): 11.90 Preço Shampoo (<= 0 p/ fim): 0


Preço Shampoo (<= 0 p/ fim): 12.05 Nenhum valor foi fornecido.
Preço Shampoo (<= 0 p/ fim): 11.33
Preço Shampoo (<= 0 p/ fim): -2
O preço médio do Shampoo é: 11.76

Escreva um trecho de código para:


a) Realizar a leitura dos valores, terminando a leitura quando for fornecido um valor menor ou
igual a 0 (zero).
b) Calcular a média dos valores lidos, considerando a possibilidade de não fornecer nenhum
valor válido (vide Exemplo 2). Observe que a impressão da média já está pronta no
programa. Portanto, devem ser considerados os nomes de variáveis presentes no bloco if.

Use as variáveis já definidas no espaço abaixo:

SOLUÇÃO
cont = 0 # inicialização das 2 variáveis 1.0
soma = 0
# primeira leitura fora do laço
valor = float(input('Preço Shampoo (<= 0 p/ fim): '))
while valor > 0 : # estrutura do while + condição 2.0
soma = soma + valor # totalização correta 1.0
cont = cont + 1 # incremento correto 1.0
valor = float(input('Preço Shampoo (<= 0 p/ fim): ')) # leitura no
# while 1.0
# while alternativo: todas as leituras no laço
while True :
valor = float(input('Preço Shampoo (<= 0 p/ fim): '))
if valor <= 0 :
break
soma = soma + valor
cont = cont + 1

if cont > 0 :
print('O preço médio do Shampoo é: %.2f' %(soma/cont))
else :
print('Nenhum valor foi fornecido!')
Questão 3 (7 pontos)

Um programa deve imprimir N linhas, com cada linha contendo os 2N primeiros números pares,
conforme mostrado nos exemplos a seguir. Os valores fornecidos pelo usuário, devem estar entre 4
e 12 e, para melhor compreensão, estão destacados nos exemplos abaixo:

Exemplo 1 Exemplo 2

N = 2 N = 13
Valor deve estar entre (4, 12) Valor deve estar entre (4, 12)
N = 4 N = 3
2 4 6 8 10 12 14 16
2 4 6 8 10 12
2 4 6 8 10 12 14 16
2 4 6 8 10 12
2 4 6 8 10 12 14 16
2 4 6 8 10 12
2 4 6 8 10 12 14 16

a) Escreva o trecho de código para ler e validar o valor de N, no intervalo [4, 12].

N = int(input('N = '))
while N < 4 or N > 12 : # condição correta 1.0
print('Valor deve estar entre (4, 12)') # msg erro 1.0
N = int(input('N = ')) #leitura dentro do while 1.0

b) Escreva abaixo o trecho de código para imprimir os caracteres ‘*’, conforme mostrado nos
Exemplos 1 e 2.
Dica: a diretiva end='' mantém a próxima impressão na mesma linha.

for i in range (0, N) : # número correto de repetições 1.0


for j in range (0, 2*N) : # número correto de repetições 1.0
print(2*(j+1), end='') # print correto 1.0
print() # print para pular 1 linha 1.0
Questão 4 (8 pontos)
Um arranjo com tamanho N (número de posições igual a N) é usado para armazenar o resultado de
uma eleição de primeiro turno para presidente de um clube. Cada posição do arranjo contém o
número de votos de um candidato, já em ordem decrescente (o número de votos do primeiro
colocado está na primeira posição do arranjo). A figura abaixo mostra um exemplo para 6
candidatos.

320 255 64 36 10 5

0 1 2 3 4 5

Escreva um trecho de programa Python, considerando N candidatos, para executar as seguintes


tarefas: a) Determinar se a eleição foi decidida em primeiro turno: sabe-se que, para ser eleito
em primeiro turno, um candidato deve ter mais votos do que a soma de votos dos demais
concorrentes. Em caso positivo, o programa deve informar o número de votos e o percentual de
votos do candidato eleito. Caso contrário, deverá fazer o especificado no item “b”, a seguir.
b) Caso o candidato mais votado não tenha sido eleito no primeiro turno, o programa deverá
calcular e informar o número de votos e o percentual de votos dos dois candidatos mais bem
votados e que irão para o segundo turno.
Para os números de votos do exemplo acima, o programa exibirá a seguinte saída:

Haverá 2o turno:
1o colocado: 320 (46.38%)
2o colocado: 255 (40.80%)

Caso o número de votos do primeiro colocado fosse 420 ao invés de 320, o programa deveria
mostrar a seguinte saída:

Eleição definida em 1o turno:


1o colocado: 420 (53.16%)
Soma dos demais: 370 (46.84%)

SOLUÇÃO (Use o verso da folha)


import numpy as np;
N = 6 # implementação para 6 candidatos
B = np.empty(N, dtype=int)
# código de preenchimento do arranjo foi omitido de propósito e NÃO É NECESSÁRIO fazer

soma = 0 # cálculo do somatório N-1 termos 4.0


for i in range (1, N): # soma dos N-1 candidatos, B[0] fora da soma
soma = soma + B[i]
if B[0] > soma : # comando condicional (estrutura + condição) 2.0
print('Eleição definida em 1o turno: ') # bloco de comandos 1.0
print('1o colocado: %d (%.2f%%)' %(B[0], 100*B[0]/(B[0]+soma)))
print('Soma dos demais: %d (%.2f%%)' %(soma, 100*soma/(B[0]+soma)))
else :
print('Haverá 2o turno: ') # bloco de comandos 1.0
print('1o colocado: %d (%.2f%%) ' %(A[0],100*A[0]/(A[0]+soma)))
print('2o colocado: %d (%.2f%%)' %(A[1], 100*A[1]/(A[1]+soma)))
# ERRO em expressão (ou variável errada) descontar 0.2
# Desconsiderar ERRO de formatação

Você também pode gostar