Oi, tudo bem?
Excelente raciocínio, você captou bem a essência da tomada de decisão por meio de condicionais. O pensamento computacional nos ajuda a transformar uma regra de negócio (como uma norma escolar) em um passo a passo que uma máquina consiga processar.
Para que seu algoritmo funcione sem ambiguidades, precisamos apenas ajustar um detalhe importante na lógica da recuperação.
Refinando a Lógica de Intervalos
No seu exemplo da recuperação, você utilizou o operador lógico "ou" para verificar se a média está entre 5,1 e 7,0. Na programação, o uso dos operadores faz toda a diferença:
- O problema do "Ou": Se a nota for 10, ela é maior que 5,1. Portanto, a condição seria verdadeira e o aluno de nota 10 receberia a mensagem de recuperação.
- A solução com "E": Para definir um intervalo fechado, precisamos que as duas condições sejam verdadeiras ao mesmo tempo.
Veja como essa estrutura ficaria escrita de forma mais próxima à lógica de programação:
- Se $X \geq 7,0$: "Parabéns! Você foi aprovado."
- Senão, se $X \geq 5,1$ e $X < 7,0$: "Você está de recuperação."
- Senão: "Você está reprovado."
Por que usar o "Senão, se" (elif)?
Ao utilizar a estrutura encadeada, o computador testa as condições em ordem. Se o aluno tirar 8, ele entra na primeira condição e o algoritmo para ali. Ele nem chega a testar se o aluno está de recuperação ou reprovado.
Isso torna o processo mais limpo e evita que duas mensagens diferentes sejam exibidas para a mesma nota.
Aplicando a abstração
Você aplicou muito bem o pilar da Abstração ao definir "Média = X". Ao simplificar o problema e focar no que importa (o valor numérico da média), você consegue criar uma regra que serve para qualquer nota digitada, independentemente de qual seja o aluno ou a matéria.
Esse é o primeiro passo para criar sistemas flexíveis. Você já pensou em como o algoritmo deveria se comportar caso alguém digitasse uma nota maior que 10 ou um número negativo por engano?
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!