Você está na página 1de 6

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA

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

Prova 1 21/09/2019 10:00 –11:50h

Matrícula:________________ Nome:______________________________________________

Marque com um X sua turma TEÓRICA:


Turma Dia da Semana Horário Professor
1 Quinta-feira 10:00 Daniela
2 Sexta-feira 10:00 José Elias
3 Sexta-feira 08:00 Carlos
4 Sexta-feira 14:00 Lucas
5 Quinta-feira 14:00 Vitor

OBSERVAÇÕES:
 As questões podem ser resolvidas a lápis.
 Entende-se por algoritmo refinado completo um algoritmo contendo a
representação do código em português, de forma clara, não ambígua, de
modo que cada instrução do algoritmo possa ser traduzida em uma
instrução da linguagem de programação.
 Para a leitura de dados, basta usar instruções em formato algorítmico
como “Leia n”, “Leia A, B, C” etc. Não precisa se preocupar com as
mensagens escritas antes dessas leituras.

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.

Priorida Operador(es) e comando = Exemplo


de

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

Página 1 de 6
Questão 1 (8 pontos)

Considere o seguinte programa em Python:

a=7
b=-1
c=a+2*b
print('a = %d, b = %d, c = %d'%(a,b,c))
b=2
print('c =',c)
while a>0:
if a>5 or b==2:
print('saída 1:',a,b,c)
b=b+1
elif a>0 and b>=a:
print('saída 2:',a,b,c)
c=c+1
a=a-2
print('saída 3:',a,b,c)

Escreva abaixo qual será a saída exata fornecida pelo programa:

Tela do Computador Rascunho (rastreio das variáveis)

a = 7, b = -1, c = 5
c = 5
saída 1: 7 2 5
saída 2: 3 3 5
saída 2: 1 3 6
saída 3: -1 3 7

Página 2 de 6
Questão 2 (10 pontos)
Escreva um programa em Python ou um algoritmo refinado completo que lê
uma data e informa qual foi o dia anterior. Por simplicidade, considere que a
data lida será do ano atual, 2019 (ano não bissexto). Dessa forma:
 o mês de 2 (fevereiro) tem 28 dias;
 os meses 4 (abril), 6 (junho), 9 (setembro) e 11 (novembro) têm 30 dias;
 os demais meses têm 31 dias.
DICA: Não é necessário ler e nem exibir o ano, apenas o dia e mês. Assim, se
a data fornecida for 1 de janeiro, basta exibir 31/12 (31 de dezembro) como
dia anterior.
Não é necessário validar as datas digitadas. Considere que os valores para dia
e mês serão sempre válidos, ou seja, a data lida nunca será, por exemplo,
30/2.
Veja abaixo alguns exemplos das mensagens exibidas pelo programa. Para
melhor compreensão, os valores fornecidos pelo usuário se encontram
destacados.
Exemplo 1: Exemplo 3: Exemplo 5:
dia: 2 dia: 1 dia: 31
mês: 1 mês: 3 mês: 12
1/1 28/2 30/12
Exemplo 2: Exemplo 4: Exemplo 6:
dia: 21 dia: 1 dia: 1
mês: 9 mês: 5 mês: 1
20/9 30/4 31/12
SOLUÇÃO:

d=int(input('dia: '))
m=int(input('mês: '))

if d>1:
d-=1
else:
if m==1:
m=12
else:
m-=1

if m==2:
d=28
elif m== 4 or m==6 or m==9 or m==11:
d=30
else:
d=31

print('%d/%d'%(d,m))

Página 3 de 6
Questão 3 (8 pontos)
Escreva um programa em Python ou um algoritmo refinado completo que
mostra todos os números dentro de um intervalo que são divisíveis por um
número N lido do teclado.
Inicialmente, o programa deve ler o número inteiro N e, na sequência, deve
ler o inteiro que representa o início do intervalo. Finalmente, o programa deve
ler o número inteiro correspondente ao final do intervalo, que deve sempre
ser maior ou igual ao valor fornecido para o início do intervalo, para ser
considerado válido. Caso o valor lido para o final seja inválido, o programa
deve ler novamente até que um valor final válido seja fornecido. Em seguida, o
programa deve imprimir todos os números inteiros dentro do intervalo que
são divisíveis por N.
Veja abaixo alguns exemplos das mensagens exibidas pelo programa. Para
melhor compreensão, os valores fornecidos pelo usuário se encontram
destacados.
Exemplo 1: Exemplo 3:
Mostrar números divisíveis por: 7 Mostrar números divisíveis por: 10
Início do intervalo: 0 Início do intervalo: 15
Final do intervalo: 14 Final do intervalo: 5
0 Final do intervalo: 0
7 Final do intervalo: 13
14 Final do intervalo: 14
Final do intervalo: 20
Exemplo 2:
20
Mostrar números divisíveis por: 8
Início do intervalo: 9
Final do intervalo: 15
SOLUÇÃO:

d=int(input('Mostrar números divisíveis por: '))


ini=int(input('Início do intervalo: '))
fim=int(input('Final do intervalo: '))
while fim < ini:
fim=int(input('Final do intervalo: '))

## ABORDAGEM 1 ##
while ini <= fim:
if ini%d==0:
print(ini)
ini+=1

## OU ##

## ABORDAGEM 2 ##
ini=(ini-1)//d + 1
while ini*d <= fim:
print(ini*d)
ini+=1
Página 4 de 6
Questão 4 (9 pontos)
Escreva um programa em Python ou um algoritmo refinado completo que faz a
contagem de votos em uma eleição com 2 chapas concorrentes. Os votos são
representados apenas pelos números 1 (voto na chapa 1) ou 2 (voto na chapa
2). Números maiores que 2 ou negativos significam que o voto foi anulado.
O programa deverá ler vários votos até que o número 0 (zero) seja digitado,
significando que todos os votos já foram lidos. Em seguida, deverá apresentar
o número de votos em cada chapa, o número de votos nulos, o total de votos e
a chapa vencedora.
Veja abaixo alguns exemplos das mensagens exibidas pelo programa. Para
melhor compreensão, os valores fornecidos pelo usuário se encontram
destacados.
Exemplo 1: Exemplo 2:
Contagem de votos: Contagem de votos:
Digite a chapa (0 para terminar): 1 Digite a chapa (0 para terminar): 1
Digite a chapa (0 para terminar): 1 Digite a chapa (0 para terminar): -
Digite a chapa (0 para terminar): 2 1
Digite a chapa (0 para terminar): 1 Digite a chapa (0 para terminar): 3
Digite a chapa (0 para terminar): 2 Digite a chapa (0 para terminar): 2
Digite a chapa (0 para terminar): 0 Digite a chapa (0 para terminar): 0

Votos para chapa 1 = 3 Votos para chapa 1 = 1


Votos para chapa 2 = 2 Votos para chapa 2 = 1
Votos nulos = 0 Votos nulos = 2
Total de votos = 5 Total de votos = 4

Vencedor: chapa 1 Não houve vencedor

SOLUÇÃO:

(solução na próxima página)

Página 5 de 6
c1=c2=nulos=0
print('Contagem de votos')
v=float(input('Digite a chapa (0 para terminar): '))
while v != 0:
if v==1:
c1+=1
elif v==2:
c2+=1
else:
nulos+=1
v=float(input('Digite a chapa (0 para terminar): '))

print('\nVotos para chapa 1 =',c1)


print('Votos para chapa 2 =',c2)
print('Votos nulos =',nulos)
print('Total de votos =', c1+c2+nulos)

if c1>c2:
print('\nVencedor: chapa 1')
elif c1<c2:
print('\nVencedor: chapa 2')
else:
print('\nNão houve vencedor')

Página 6 de 6

Você também pode gostar