Olá, Vinícius! Tudo bem?
Ótima pergunta! Você está pensando nos possíveis cenários do código e tentando encontrar brechas na lógica. Esse tipo de raciocínio é essencial no desenvolvimento.
A sua interpretação faz sentido do ponto de vista matemático. De fato, a recuperação acontece entre 5.0 e 6.9. Porém, na lógica de programação, o algoritmo do instrutor funciona corretamente por causa de um detalhe fundamental: o SENÃO (else).
Quando usamos uma estrutura condicional encadeada (se → senão se → senão), o computador avalia as condições em ordem e, no momento em que encontra uma condição verdadeira, todo o restante é ignorado.
Vamos imaginar a nota 4.5.
O algoritmo primeiro pergunta se a nota é menor que 5.0. Como essa condição é verdadeira, ele exibe “Reprovado” e encerra a verificação. As próximas condições simplesmente não são mais lidas.
O problema que você imaginou, o sistema exibir duas mensagens, só aconteceria se os testes fossem feitos com se independentes, sem o senão. Nesse caso, o computador avaliaria tudo separadamente e poderia, sim, entrar em mais de uma condição.
Já no código do instrutor, o senão se funciona como uma proteção: a verificação da recuperação só acontece se a primeira condição for falsa. Isso garante automaticamente que a nota já é 5.0 ou maior.
Por isso, escrever senão se nota < 7.0 é apenas uma forma mais elegante e enxuta de dizer:
“a nota é maior ou igual a 5.0 e menor que 7.0”.
No fim, é tudo uma questão de fluxo: quem entra na primeira porta, não chega a passar pela segunda.
Exemplo:

Bons estudos!
Sucesso ✨