Um algoritmo recebe uma coleção de temperaturas em Celsius e atualmente converte todos os valores para…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Comparar diferentes casos particulares (instâncias) de um mesmo problema, identificando as semelhanças e diferenças entre eles, e criar um algoritmo para resolver todos, fazendo uso de variáveis (parâmetros) para permitir o tratamento de todos os casos de forma genérica.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Um algoritmo recebe uma coleção de temperaturas em Celsius e atualmente converte todos os valores para Fahrenheit com fórmula fixa. Para transformar essa rotina em uma função única que realize conversões entre Celsius, Fahrenheit e Kelvin, qual parâmetro deve ser adicionado à assinatura do algoritmo e por quê?
- A) Modificar a fórmula fixa para incluir opções de escala na mesma linha de código.
- B) Adicionar o parâmetro 'tipo_conversao' (boolean) para verificar se a conversão é Celsius ou Fahrenheit.
- C) Adicionar o parâmetro 'escala_fonte' (string) para dizer de onde a temperatura vem.
- D) Adicionar o parâmetro 'unidade_destino' (string) que indica a escala alvo.
- E) Adicionar o parâmetro 'historico' (lista) para armazenar as temperaturas convertidas.
✅ Resposta correta: alternativa D
Resolução passo a passo
- A rotina atual sempre converte de Celsius para Fahrenheit, ou seja, a origem (Celsius) e o destino (Fahrenheit) estão fixos no código. Para generalizar a função para Celsius, Fahrenheit e Kelvin, precisamos tornar variável a escala de saída, que é a parte que hoje está presa à fórmula. Passo 2: O parâmetro 'unidade_destino' (string) indica a escala alvo, por exemplo 'F', 'K' ou 'C'. Com ele, a função escolhe internamente qual fórmula aplicar (C para F: F = C x 9/5 + 32; C para K: K = C + 273,15; e as conversões inversas), sem precisar de uma função nova para cada par de escalas. Passo 3: Por que as outras estão erradas. A: colocar opções de escala dentro da mesma linha de código mistura as fórmulas e não cria uma assinatura de função com parâmetro, sendo uma solução frágil. B: um boolean só distingue duas possibilidades e não consegue representar três escalas. C: 'escala_fonte' informa a origem, mas como as temperaturas de entrada já são em Celsius, essa informação não resolve o que precisa mudar na saída; é um complemento útil para generalizar totalmente, mas não é o parâmetro que a questão pede. E: um histórico de temperaturas é um recurso de armazenamento e não define a conversão. Passo 4: Dúvida registrada: em uma versão totalmente genérica, também faria sentido receber a escala de origem, pois a função poderia converter de qualquer escala para qualquer outra. Porém, dentro do enunciado, a pergunta pede o parâmetro que resolve a limitação atual, que é a escala de destino fixa.
💡 Dica: Considere os tipos de temperatura e como a função deve se comportar.
Alternativa por alternativa
Acredita que basta colocar condicionais ou opções dentro da fórmula existente para ter várias escalas, sem alterar a assinatura da função para receber a informação de fora.
Imagina que um único valor booleano pode representar a escolha entre as escalas, confundindo a necessidade de três opções com uma escolha binária.
Entende que a origem da temperatura é o que precisa ser informado, esquecendo que a entrada já é em Celsius e o problema atual está na saída fixa em Fahrenheit.
Por que engana: Escolher um parâmetro que não permite identificar a escala de destino, dificultando a conversão correta.
O parâmetro permite escolher a fórmula correta em tempo de execução, tornando a mesma rotina genérica para todas as escalas e evitando duplicação de código.
Confunde a função de conversão com a de armazenamento, achando que guardar o resultado em uma lista define qual escala de saída será usada.
Raio-X da questão
conversão de temperaturas
fixacao
funções em programação · conversão de unidades
Revisar as fórmulas de conversão entre Celsius, Fahrenheit e Kelvin.
Escolher um parâmetro que não permite identificar a escala de destino, dificultando a conversão correta.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Considere um algoritmo que percorre uma lista de temperaturas e conta quantos valores excedem um limite. Para…
- Você escreveu uma função que converte Celsius para Fahrenheit. O que é possível fazer para reutilizar essa função em…
- Dado um algoritmo que recebe uma lista de temperaturas em Celsius, converte cada valor para Fahrenheit e em seguida…
- Crie um algoritmo simples para classificar a temperatura em 'Frio', 'Morno' ou 'Quente' baseado na temperatura…
- Considere um algoritmo que encontra rotas em uma rede (grafo). Para generalizá-lo a diferentes métricas de custo (tempo…
- Em um algoritmo para classificar temperaturas, qual a estrutura condicional adequada para indicar se está frio, morno ou…
Todas as questões de Estratégias de solução de problemas - Generalização
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
