4.4. Estratégia para resolver um problema de classificação¶
Uma estratégia para resolver um problema de classificação binário (que tem apenas duas classes) é criar uma variável de estado e assumir que o programa está em um dos estados (classes) possíveis, digamos, o mais provável. Um teste deve ser realizado para alterar o estado dessa variável. Considerando o problema anterior, podemos pensar da seguinte forma
Assumir que a pessoa é menor de idade
- Se a idade da pessoa for maior ou igual a 18:
então agora sabemos que a pessoa pode tirar a carteira
senão a nossa hipótese inicial estava correta
Vamos considerar um outro exemplo. Para saber se um aluno está aprovada em uma disciplina, sua nota precisa ser maior ou igual a 5.0.
Podemos considerar então duas classes: aprovado ou reprovado. Vamos construir uma solução agora assumindo que o aluno está em uma classe, digamos aprovado. Podemos indicar isso usando uma variável auxiliar e atribuir um valor booleano True como “aprovado = True”. Mas essa classe inicial pode estar incorreta e, para corrigir isso, “se a nota for menor que cinco”, alteramos a condição do aluno para “aprovado = False”.
Uma outra solução possível é assumir inicialmente que o aluno está reprovado, que podemos indicar com uma variável “aprovado = False”. Essas duas alternativas de solução (algoritmo) estão ilustrados na figura 4.1, na forma de fluxogramas e também de pseudo-código.

Figura 4.1: Fluxogramas e pseudo-código facilitam o pensamento.¶
O fluxograma é uma forma gráfica para pensar como os dados são processados. O “Início” marca o primeiro bloco de instruções a ser executado. Assim, a nota é lida (ainda não se preocupe como, pois se trata de um rascunho) e essa solução assume que o alunos está na situação de “aprovado”.
O losango indica um teste, cujo resultado pode ser verdadeiro (True
) ou falso (False
). Observe que há um “desvio” do fluxo quando o resultado da condição é True
, ou seja, quando a condição é satisfeita, o estado ou classe do aluno (situação) é alterado “reprovado”.
Após a execução condicional desse bloco (ou seja, ele pode não ser executado se a condição for falsa), o processamento volta ao seu curso normal, imprimindo o resultado “aprovado” ou “reprovado”, dependendo do caminho percorrido.
O fluxograma alternativo, à direita na figura, mostra que podemos começar assumindo que o aluno está na situação de “reprovado” e, por isso, é necessário modificar a condição (ou teste), indicado no losango, para “nota >= 5.0”.
Uma outra forma de pensar é usar pseudo-código, como ilustrado na parte inferior da figura 4.1. A ideia é lhe dar liberdade para escrever o que você quiser sem se preocupar com a linguagem, facilitando e dando liberdade ao pensamento. Nesse caso, o “desvio” no fluxo do programa é indicado pela tabulação. Note que a quarta linha no pseudo código fica deslocada por um tab, para indicar que essa instrução só é executada se a condição for satisfeita.
Note que a diferença nas soluções em cada coluna da figura 4.1 está no valor inicial (“default”) da variável situação
. Mas a ideia é basicamente a mesma, precisamos inicializar a variável de estado situaçào
com algum valor (dentre as classes possíveis) e trocar o valor se necessário, dependendo do teste da propriedade nota
. Nesse exemplo, a nota foi “lida”, mas ainda não precisamos nos preocupar como.
A seguir vamos ver como escrever essas ideias, na forma de fluxograma ou pseudo-código, para um script na linguagem Python.