4.10. Alternativas múltiplas¶
Tipicamente, quando um programa aumenta de complexidade, o número de alternativas cresce.
Por exemplo, além de aprovado ou reprovado, considere que um aluno pode também ficar de recuperação se sua nota estiver entre 3.0 e 5.0. Há várias formas de resolver esse problema. Vamos discutir por hora apenas a forma usando if-else
aninhados para ilustrar outro recurso do Python para tornar a notação desses casos mais compacta e, portanto, mais simples de ler e manter.

Figura 4.3: Fluxogramas e pseudo-código para classificar a situação de um aluno entre aprovado
, reprovado
e de recuperação
.¶
A figura 4.3 exibe um fluxograma e um pseudo-código equivalente para classificar a situação de uma aluna como aprovada, reprovada ou de recuperação.
Uma solução aninhando comandos if-else
seria:
Como funciona esse trecho?
Observe com atenção a tabulação desse programa, que mostra um if-else
na mesma coluna da linha 1 e, dentro do primeiro else
, vemos um outro comando if-else
. Por esse deslocamento sabemos que o segundo if
só será testado caso a condição do primeiro if
(da linha 3) seja falsa.
Vamos simular esse trecho usando 3 testes: nota 2 (que deve resultar em reprovado), nota 4 (que deve resultar em recuperação) e nota 7 que deve resultar em aprovado. Lembre-se de cobrir todas as alternativas ao definir seus testes.
Quando a nota é 7, a condição do primeiro if
é verdadeira e assim o programa guarda que a situação do aluno é “aprovado”.
Quando a condição do if
é verdadeira o else
correspondente não é executado, e o programa termina imprimindo “aprovado”, que é o valor associado à situação
.
Quando a nota é 4, a condição do primeiro if
é falsa e o bloco dentro do else
correspondente (que está na mesma coluna desse if
) é executado, ou seja, o segundo if-else
é executado. Para isso a condição do if
na linha 6 é testada, resultando em verdadeiro. O programa guarda que a situação
do aluno é então de “recuperação”, o else
correspondente não é executado e o programa termina imprimindo “recuperação”, que é o valor associado à situação
.
Finalmente quando a nota é 2, a condição dos dois ifs
é falsa e, nesse caso, o bloco dentro do segundo else
(linha 8) é executado, associando o valor “reprovado” à variável situação
. O programa passa para o final, imprimindo o resultado em situação
.