{ }^{32}. Questão: Implemente uma função chamada ponto_extra que receba a porcentagem de participação de um aluno e a quantidade de questões respondidas em atividades da disciplina. A função deve calcular a bonificação extra do aluno de acordo com os seguintes critérios: \mathbf{1} ponto extra: participação igual ou superior a 90 e a quantidade de questões respondidas for igual ou superior a 8; 0,5 ponto extra: participação igual ou superior a 75 e a quantidade de questões respondidas for igual ou superior a 5; caso contrário, não recebe bonificação. A função deve retornar o valor da bonificação.

Passo 1

O enunciado pede que seja implementada uma função chamada ponto_extra que receba duas informações e retorne a bonificação. Vou listar claramente o que é dado e o que é pedido:
  • Entradas (dados fornecidos):
    • porcentagem de participação do aluno: chamarei aqui de p (um número que representa porcentagem, por exemplo 90 significa 90\%);
    • quantidade de questões respondidas em atividades: chamarei aqui de q (um número inteiro, por exemplo 8).
  • Saída (o que a função deve retornar):
    • valor da bonificação extra do aluno (um número que pode ser 1, 0,5 ou 0).
  • Critérios para a bonificação:
    • retornar 1 ponto extra se p \ge 90 e q \ge 8;
    • retornar 0,5 ponto extra se p \ge 75 e q \ge 5;
    • caso contrário, retornar 0.

Passo 2

Entendendo a lógica e a ordem das checagens (por que a ordem importa):
  • Existem dois níveis de bonificação, sendo 1 o maior e 0,5 o menor.
  • Se primeiro testarmos apenas a condição menor ( p \ge 75 e q \ge 5), um aluno com p=90 e q=8 também satisfaziria a condição menor e então poderia ser classificado erroneamente como 0,5 em vez de 1.
  • Portanto a regra prática é: testar primeiro a condição que dá a maior bonificação ( 1), e só se não passar nela testar a condição da bonificação menor ( 0,5). Isso garante que um aluno que deva receber 1 não fique “preso” na condição 0,5.

Passo 3

Expressando as condições em forma lógica (para implementar no código):
  • Condição para 1: p \ge 90 \land q \ge 8.
  • Condição para 0,5: p \ge 75 \land q \ge 5.
  • Caso contrário: retorno 0.
Aqui \land significa “e” lógico (as duas partes precisam ser verdadeiras simultaneamente).

Passo 4

Decisão sobre detalhes de implementação:
  • Retorno: usar números de ponto flutuante para as bonificações (por exemplo 1.0, 0.5, 0.0) é prático em código.
  • Não vamos transformar tipos automaticamente; assumimos que o chamador fornece p como número (int/float) e q como int. Poder-se-ia acrescentar validação (por exemplo garantir que 0 \le p \le 100 e q \ge 0), mas o enunciado não exige validação, então implementaremos a função simples e direta.
  • Ordem das checagens: primeiro a condição de 1, depois a de 0,5, por último retornar 0.

Passo 5

Pseudocódigo passo a passo (para entender antes do código real):
  1. Receber p e q.
  2. Se p \ge 90 e q \ge 8, retornar 1{,}0.
  3. Senão, se p \ge 75 e q \ge 5, retornar 0{,}5.
  4. Senão, retornar 0{,}0.

Passo 6

Implementação em Python da função ponto_extra (essa função segue exatamente a lógica acima):
def ponto_extra(porcentagem, num_questoes):
    """
    Retorna a bonificação extra conforme:
    - 1.0 ponto se porcentagem >= 90 e num_questoes >= 8
    - 0.5 ponto se porcentagem >= 75 e num_questoes >= 5
    - 0.0 caso contrário
    """
    if porcentagem >= 90 and num_questoes >= 8:
        return 1.0
    if porcentagem >= 75 and num_questoes >= 5:
        return 0.5
    return 0.0

Passo 7

Testes de exemplo (para você saber o que esperar ao rodar a função):
  • p=92,\\ q=9 deve retornar 1{,}0.
  • p=90,\\ q=8 deve retornar 1{,}0 (limite incluso).
  • p=90,\\ q=6 deve retornar 0{,}5 (passa no segundo critério porque p\ge75 e q\ge5).
  • p=76,\\ q=5 deve retornar 0{,}5.
  • p=74,\\ q=10 deve retornar 0{,}0 (porcentagem abaixo de 75).
  • p=80,\\ q=4 deve retornar 0{,}0 (questões abaixo de 5).

Resposta

def ponto_extra(porcentagem, num_questoes):
    """
    Retorna a bonificação extra conforme:
    - 1.0 ponto se porcentagem >= 90 e num_questoes >= 8
    - 0.5 ponto se porcentagem >= 75 e num_questoes >= 5
    - 0.0 caso contrário
    """
    if porcentagem >= 90 and num_questoes >= 8:
        return 1.0
    if porcentagem >= 75 and num_questoes >= 5:
        return 0.5
    return 0.0

Exercícios relacionados