Buscar

Furg - AlgoEst1 14 - Segunda avaliação - Lista de questões

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

FURG - C3 
Algoritmos e Estruturas de Dados I 
Profs. Alessandro de L. Bicho, Edwilson S. V. Junior e Marcelo de G. Malheiros 
 
SEGUNDA AVALIAÇÃO - LISTA DE QUESTÕES 
 
ORIENTAÇÕES 
 
● O estudante deve responder apenas às questões sorteadas. 
● As questões devem ser respondidas em um único ​notebook​ do Colaboratory. 
● O código deve ser explicado usando comentários do Python (usando ​# ​). 
● Compartilhe o ​notebook​ e poste apenas o ​link​ no AVA. 
 
PARTE A 
 
Questão 1: Escreva um programa que define a quilometragem e o consumo em litros em cada                               
abastecimento de uma determinada viagem, armazenados em duas listas. Então calcule e mostre                         
o consumo médio por quilômetro de cada segmento da viagem. Também calcule e mostre o                             
consumo médio cumulativo ao final de cada trecho (ou seja, a cada abastecimento). 
 
O consumo médio é obtido pela diferença de quilometragem entre dois abastecimentos,                       
dividindo-a pelo número de litros do último abastecimento. O consumo médio cumulativo é                         
calculado com a diferença entre a quilometragem de um abastecimento e a quilometragem do                           
início da viagem, dividindo-a pela soma dos litros de todos os abastecimentos até então. 
 
Teste com os seguintes dados de uma viagem de automóvel: 
odômetro (km): 22495, 22841, 23185, 23400, 23772, 24055, 24434, 24804 e 25276 
consumo (l): 36.6, 33.9, 31.5, 33.0, 36.6, 44.1, 42.9 e 45.6 
 
Questão 2: Escreva um programa que usa três listas de valores, de mesmo tamanho, para                             
representar fichas com informações sobre os bebês recém-nascidos. Uma destas listas deve conter                         
a identificação de cada bebê (um número inteiro positivo), a segunda lista deve registrar o nome                               
de cada bebê, enquanto a terceira lista deve conter o seu respectivo peso. O programa deve ler                                 
estas informações continuamente, parando quando for dado um número de identificação zero.                       
Após, o programa deve exibir: 
a) o número de bebês registrados; 
b) o número, nome e o peso do bebê mais gordo; 
c) o número, nome e o peso do bebê mais magro; 
d) a média de peso dos bebês. 
 
Questão 3: Escreva um programa que, a partir da altura, do sexo e do peso informados pelo                                 
usuário, calcule e exiba o peso ideal e o respectivo intervalo de variação (8% para mais e para                                   
menos). Então informe se a pessoa está com peso elevado, normal ou inferior, levando-se em                             
consideração o intervalo calculado. Para homens utilize a fórmula (72,7 * h) – 58, enquanto para                               
mulheres use (62,1 * h) – 44,7. 
 
Questão 4: Escreva um programa que calcule e mostre a tabela de depreciação por ano de um                                 
determinado equipamento, a partir das informações fornecidas pelo usuário (valor da compra do                         
equipamento e taxa de depreciação por ano). Por exemplo, uma máquina comprada por                         
R$28.000,00, se deprecia a uma taxa de R$4.000,00, por ano. A tabela de depreciação seria de sete                                 
anos, apresentando os seguintes valores: 
Ano Depreciação Valor no fim do ano Depreciação acumulada 
1 4000  24000  4000 
2 4000  20000  8000 
3 4000  16000  12000 
4 4000  12000  16000 
5 4000  8000  20000 
6 4000  4000  24000 
7 4000  0  28000 
Verifique que o equipamento não pode ter valor negativo e, neste caso, será necessário que o                               
usuário informe um valor maior que zero. No último ano, a depreciação pode ser maior que o                                 
valor residual do equipamento. 
 
 
PARTE B 
 
Questão 1: Faça um procedimento que receba como parâmetro uma lista com valores numéricos                           
reais positivos e encontre tanto a maior como a segunda maior diferença entre dois elementos                             
consecutivos nesta lista (em valor absoluto). Exiba então quais são os dois pares de elementos e                               
qual a diferença (em valor absoluto) entre eles. Valide este procedimento fazendo ​uma chamada                           
de teste. 
 
Questão 2: Faça um procedimento que receba como parâmetro uma ​string e um número inteiro ​n​,                               
então encontrando na ​string uma sequência de ​n caracteres iguais ou indicando que tal sequência                             
não existe. Valide este procedimento fazendo três ​ chamadas de teste. 
 
Questão 3: Faça um procedimento que implementa o Código de César. O código de César é uma                                 
técnica simples de criptografia onde cada letra de um texto é substituída pela que está ​n posições                                 
à frente do alfabeto (considere apenas as 26 letras maiúsculas, sem acentuação). Esse critério “dá                             
a volta” após a letra Z. O procedimento deve então receber como parâmetro uma string e um                                 
inteiro, imprimindo a versão codificada. Valide este procedimento fazendo ​duas chamadas de                       
teste. 
 
Questão 4: Faça um procedimento que receba como parâmetro uma lista de ​N valores reais e                               
então imprima o tamanho, soma total, média aritmética e desvio padrão populacional de seus                           
elementos (ou seja, use a fórmula com fator ​1/N ​). Valide este procedimento fazendo ​três                           
chamadas de teste, onde uma delas deve ter soma zero (mas desvio padrão positivo) e outra deve                                 
ter soma positiva (mas desvio padrão zero). 
 
 
PARTE C 
 
Questão 1: Faça uma função que receba como parâmetro uma ​string e avalia expressões                           
aritméticas simples envolvendo apenas dois valores reais. Essa função deve aceitar as operações                         
de soma, subtração, multiplicação e divisão, e opcionalmente um parênteses em torno da                         
expressão. Ao final, a função deve retornar o valor calculado. Valide esta função fazendo                           
chamadas de teste com as ​strings ​ '123+456', '(3.54-6.87)', '47.9*21' e '7/2.35'. 
 
Questão 2: Faça uma função que recebe como parâmetro uma string e verifica se esta é um                                 
número hexadecimal válido (portanto contendo apenas os dígitos 0-9 e os caracteres de 'A' até                             
'F'). Se não for válido, retorna zero, caso contrário esta string deve ser convertida para um número                                 
inteiro, que é então retornado. Não é permitido usar as operações de conversão do Python. Valide                               
esta função fazendo ​quatro ​ chamadas de teste. 
 
Questão 3: Faça uma função que recebe como parâmetros uma lista de números inteiros. Esta                             
função deve testar individualmente os valores desta lista para identificar se são primos ou não. Ao                               
final, a função deve retornar uma lista de valores booleanos, com o mesmo tamanho da lista de                                 
números, indicando se cada um é ou não primo. Valide esta função fazendo ​três chamadas de                               
teste. 
 
Questão 4: ​Faça uma função que recebe um número inteiro positivo ​n e retorne uma lista com os                                   
seus fatores primos. Os fatores primos de um número são os divisores do número que também são                                 
números primos. Se o número ​n for primo, então ele tem um único fator primo que é ele mesmo.                                     
Por exemplo, os fatores primos de 12 são 2 e 3, pois os outros divisores (1, 4, 6, e 12) não sãoprimos. Valide esta função fazendo ​cinco​ chamadas de teste. 
 
 
PARTE D 
 
Questão 1: Um projeto exige fazer operações entre vetores de valores, tal como na Álgebra                             
Linear. Então você deve projetar funções que recebem duas listas de valores como parâmetro e                             
que calculam sua adição, subtração e produto interno (também chamado de produto escalar). Os                           
vetores devem ter o mesmo tamanho (valide antes de fazer o cálculo e imprima uma mensagem de                                 
alerta se for o caso). Escreva então um programa de teste que define três vetores ​a​, ​b e ​c (de                                       
tamanho quatro) e que calcula o resultado da seguinte expressão matemática: ​(a + b) • (c - a)​,                                   
usando as funções implementadas anteriormente (não é permitido usar funções de biblioteca do                         
Python). 
 
Questão 2: Um projeto exige validação de frases escritas em português. Para isso são necessárias                             
funções que recebem ​strings como parâmetro e retornam verdadeiro apenas se forem válidas. A                           
primeira deve testar se apenas a inicial da frase está em letra maiúscula. Outra função deve                               
validar se a frase termina usando os caracteres '.', '?' ou '!' (ponto final, interrogação ou                               
exclamação), além de garantir que estes não ocorrem em nenhuma outra parte da frase.                           
Finalmente, uma terceira função deve garantir que os caracteres ':', ';' e ',' sejam usados                             
corretamente dentro da frase (caso presentes, não podem estar no final da mesma). Escreva então                             
um programa que lê uma frase do usuário e indica quais os testes em que a frase passou e quais                                       
em que ela falhou. 
 
Questão 3: Um projeto exige a interação com o usuário através de um menu de opções em modo                                   
texto. Para isso é necessário uma função genérica que recebe como parâmetro uma lista de ​strings                               
(correspondendo às opções de um menu) e imprime na tela um menu numerado (a primeira opção                               
corresponde ao valor 1). Ao final, a opção de sair com zero deve ser impressa também. Esta função                                   
deve então ficar em repetição, solicitando ao usuário um inteiro e testando se este é válido entre                                 
as escolhas possíveis (incluindo zero). Se a entrada for inválida, deve exibir novamente o menu e                               
fazer uma nova pergunta. Se for válida deve retornar a escolha feita. Escreva então um programa                               
para testar essa função de menu, e que implementa as seguintes funcionalidades: “Definir inteiro                           
A”, “Definir inteiro B”, “Exibir o mínimo múltiplo comum (MMC) entre A e B” e “Exibir o máximo                                   
divisor comum (MDC) entre A e B”. 
 
Questão 4: Um projeto exige imprimir um calendário mensal com formato adequado. Para isso é                             
preciso definir primeiro uma função que recebe como parâmetro um inteiro entre 1 e 12 e retorna                                 
o nome em português do mês correspondente. Uma outra função deve receber o mesmo                           
parâmetro inteiro, mas retornar o número de dias correspondente ao mês (suponha Fevereiro                         
sempre com 28 dias). Finalmente, é preciso implementar um procedimento que recebe como                         
parâmetro o ano, o número do mês e o número do dia da semana em que cai o dia primeiro                                       
(segunda-feira é 0 e domingo é 6). Ao ser chamado, esse procedimento se utiliza dos dois                               
anteriores e exibe uma saída como exemplificado abaixo (supondo ano 2020, mês 12 e dia inicial                               
terça-feira). Teste este procedimento em ​três ​ meses distintos. 
 
Dezembro 2020 
seg ter qua qui sex sab dom 
  1 2 3 4 5 6 
 7 8 9 10 11 12 13 
 14 15 16 17 18 19 20 
 21 22 23 24 25 26 27 
 28 29 30 31

Continue navegando