Você está na página 1de 7

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA*

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

Prova 3 10/12/2022 14:00 –15: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

Página 1 de 7
Questão 1 (5 pontos)

Considere o seguinte programa em Python:

def funcao1(x, y) :
if x > y :
return x+2
else:
return y-1

def funcao2(a, b, c) :
x = funcao1(a, b)
y = funcao1(x, c)
print(x, y)
return y

# programa principal
r = 0
x = 3
y = 9
z = 5
print(r, x, y, z)
r = funcao1(r, z)
print(r, x, y, z)
z = funcao2(x, y, z)
print(r, x, y, z)
print(funcao1(x, y))

Escreva abaixo na “Tela do Computador” qual será a saída exata fornecida pelo programa:
Tela do Computador
0395
4395
8 10
4 3 9 10
8

Rascunho (rastreio das variáveis)


Sugestão: 1 ponto para cada print correto

Página 2 de 7
Questão 2 (6 pontos)
Considere um programa para gerar uma matriz quadrada (arranjo bidimensional com número de
linhas igual ao número de colunas), com números inteiros aleatórios no intervalo [1, 10], cujo
trecho inicial é mostrado a seguir:
import numpy as np
dimensao = 10
# Definir um arranjo bidimensional de inteiros com valores [1, 10]
matriz = np.random.randint(1, 11, (dimensao, dimensao))
somaLin = np.empty(dimensao, dtype=int)

Na sequência, o programa deverá armazenar em cada posição k do arranjo somaLin, a soma dos
valores dos elementos da linha k do arranjo matriz. Analise os códigos da coluna 2 e escreva na
última coluna da tabela abaixo a letra Aou B, de acordo com as opções abaixo:
A: quando o código implementar CORRETAMENTE a tarefa descrita no parágrafo anterior.
B: quando o código estiver fazendo a soma dos elementos das colunas.
# Valor: 2 Pontos para cada item

Código Escreva
(OBS: dimensao = número de linhas = número de colunas (matriz quadrada) A ou B
for i in range( 0, dimensao ):
(1) somaLin[i] = 0
for j in range( 0, dimensao ): B
somaLin[i] = somaLin[i] + matriz[j][i]

for i in range( 0, dimensao ):


(2) somaLin[i] = 0
for j in range( 0, dimensao ): A
somaLin[i] = somaLin[i] + matriz[i][j]

for j in range( 0, dimensao ): A


(3) somaLin[j] = 0
for i in range( 0, dimensao ):
somaLin[j] = somaLin[j] + matriz[j][i]

Página 3 de 7
Questão 3 (6 pontos)
Um arranjo bidimensional de nome Tab é usado para armazenar informações de classificação de um
grupo da primeira fase da Copa do Mundo, onde cada grupo possui 4 seleções. As informações são
organizadas por ordem alfabética dos nomes dos países. A Figura abaixo mostra um exemplo do
arranjo correspondente ao Grupo H, no final da primeira fase. Cada linha do arranjo tem as
informações (Pontos, Gols Marcados, Gols Sofridos e Saldo de Gols) de uma seleção. E cada
coluna contém uma das informações: coluna 0, Pontos; coluna 1, Gols Marcados; coluna 2, Gols
Sofridos; e coluna 3, Saldo de Gols. Portanto, Tab é um arranjo (4x4) de números inteiros .

OBS: Escreva APENAS o código solicitado. Não é permitido o uso de Listas


a) Complete o código Python para criar o arranjo Tab com todos os valores iniciais iguais a zero.
import numpy as np # Valor: 1 Ponto
Tab = np.zeros((4, 4), dtype=int) OU Tab = np.empty( (4, 4), dtype=int)
for i in range (0, 4):
for j in range (0, 4) :
Tab[i][j] = 0

b) Suponha que, ao final da fase de grupos, todas as informações do arranjo Tab estejam
atualizadas, EXCETO a última coluna (Saldo de Gols). Sabendo que o Saldo de Gols é a diferença
entre Gols Marcados e Gols Sofridos, escreva o comando Python para atualizar o valor da última
coluna, para uma linha i. Dica: a solução é apenas 1 linha de código.
Tab[i][3] = Tab[i][1] - Tab[i][2] # Valor 2 Pontos

c) Escreva um trecho de código para determinar o maior número de Gols Marcados do grupo e o
número de seleções que marcaram o maior número de gols (informação da segunda coluna). O
código deve ser genérico, para N linhas, de modo a ser usado depois em campeonatos com 20 times,
por exemplo.

N = 4 # Num. seleções na Copa (mudar para 20, para o camp. brasileiro)


# Valor 3 Pontos
mGM = 0 # maior número de Gols Marcados
for i in range (0, N) :
if Tab[i][1] > mGM : # achou um novo maior
mGM = Tab[i][1]
nSelecoes = 1
elif Tab[i][1] == mGM : # achou outro com mesmo número de Gols Marcados
nSelecoes = nSelecoes + 1

Página 4 de 7
Questão 4 (8 pontos)
O programa (incompleto) mostrado abaixo lê dois valores representando o comprimento e o
peso de um cão, e utiliza duas funções calculaIMCC e classificaIMCC para, respectivamente,
calcular e classificar o Índice de Massa Corporal Canina (IMCC).

######## Programa Principal ############


peso = float(input(‘Informe o peso do cão (kg): ’))
compr = float(input(‘Informe o comprimento do cão (m): ’))
imcc = calculaIMCC(compr, peso)
classe = classificaIMCC(imcc)
print('IMCC = %.1f é classificado como: %s' %(imcc, classe))

Após ser completado corretamente, o programa apresentará um resultado como o mostrado


no exemplo abaixo (os valores informados pelo usuário estão destacados)

Informe o peso do cão(kg): 40.4


Informe o comprimento do cão (m): 1.17
IMCC = 29.5 é classificado como: Normal

Para que o programa funcione corretamente, serão necessárias as implementações das duas
funções descritas nos itens “a” e “b”, a seguir:.

a) Função para cálculo do Índice de Massa Corporal Canina (calculaIMCC):

O Índice de Massa Corporal Canina (IMCC) é definido em função do peso e do comprimento


(medido da pata traseira até a nuca) de um cão, usando a seguinte fórmula:
𝑝𝑒𝑠𝑜
𝐼𝑀𝐶𝐶 = 𝑐𝑜𝑚𝑝𝑟𝑖𝑚𝑒𝑛𝑡𝑜²

Parâmetros de entrada: um valor correspondente ao comprimento de um cão; e um valor


correspondente ao peso do cão.

A função retorna o valor do IMCC calculado.

Use o espaço abaixo para escrever o código Python da função para o cálculo do Índice de
Massa Corporal Canina (IMCC).

def calculaIMCC(a, p) :
return p / a**2 # ou return p/ (a*a)

# sugestão de pontuação:
Uso do nome correto (igual ao do programa principal): 1.0
Número de parâmetros corretos: 1.0
Lógica de Implementação da função: 1.0
Retornando valor correto: 1.0

Página 5 de 7
Página 6 de 7
b) Função para classificação do IMCC (classificaIMCC):

A classificação do IMCC deve ser feita de acordo a tabela a seguir:

Valor do IMCC Classificação


Abaixo de 28,6 Magro
De 28,6 a 34,9 Normal
De 35,0 a 39,9 Sobrepeso
Acima de 39,9 Obeso

Parâmetro de entrada: valor do IMCC

A função retorna um texto (string) correspondente à classificação da tabela acima.

Use o espaço abaixo para escrever o código Python da função para a classificação do Índice de
Massa Corporal Canina (IMCC).

def classificaIMCC(valor) :
if valor < 28.6 :
return ‘Magro’
elif valor < 35 :
return ‘Normal’
elif valor < 40 :
return ‘Sobrepeso’
else :
return ‘Obeso’
# sugestão de pontuação:
Uso do nome correto (igual ao do programa principal): 1.0
Número de parâmetros corretos: 1.0
Lógica de Implementação da função: 1.0
Retornando valor correto: 1.0

Página 7 de 7

Você também pode gostar