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: Exemplo de uso de if-else aninhados para classificar um aluno

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.

Você já fez das atividades dessa página