Você está na página 1de 10

Desvio Condicional Simples e Composto

Para compreender esses novos conceitos que serão apresentados neste tópico, imagine que você
trabalha em um banco como programador e está desenvolvendo um programa que é responsável pelo
saque de dinheiro. Certo dia, uma pessoa vai ao caixa e pede para sacar 5.000 reais, mas só tem saldo
de 500 reais.

Seu programa não testa se o valor pedido é maior ou igual ao saldo da conta e então permite que o
cliente saque todo o valor pedido. Provavelmente, esse erro vai gerar um problema enorme, não é?

A seguir, entenda como é possível resolver esse tipo de problema através de desvios condicionais
simples e compostos. Dando esse primeiro passo, você poderá desenvolver códigos que testam em
diferentes tipos de cenários.

Para resolver o problema proposto anteriormente, você precisa construir o que chamamos de desvio
condicional. Em um código-fonte, o desvio condicional é um elemento que define a execução de um
determinado bloco de comandos a partir de uma dada condição lógica.

No nosso caso, o bloco de comandos é a sequência de passos necessária para que haja o saque de
dinheiro, e a condição lógica para que esse bloco ocorra é o teste que mostra se o saldo é maior ou
igual ao valor requisitado para saque. Então, para que o bloco seja executado e haja o saque do valor,
o teste tem que resultar em verdadeiro (True).

Em Python, a sintaxe, ou seja, a ordem e a disposição das expressões e das palavras reservadas, ou
dos comandos para esse desvio condicional simples, estão estruturadas no código a seguir:

1 if condição:
2 comando 1

3 comando 2

O desvio é chamado de simples porque trata apenas do caso em que a condição é verdadeira, ou seja,
os comandos 01 e 02 só ocorrerão se (if) a condição for verdadeira. Nesse exemplo, você poderia
escrever o código da seguinte forma:

1 if saldo >= valor_saque:

2 saldo -= valor_saque
3 # comandos para liberar o dinheiro

4 print('Saque efetuado com


sucesso!')

Depois de analisar esse trecho de código, você consegue entender o que está acontecendo?
Acompanhe a seguir a explicação do código.

Na primeira linha, está escrita a palavra reservada “if ”, que define o início de um desvio condicional.
Por palavra reservada, entenda que ela tem um significado especial para a Python e que portanto não
podemos utilizá-la para nomear nossas variáveis e as demais entidades que você aprenderá a criar ao
longo deste curso.

Após o “if”, existe uma expressão seguida de “:”, que indica o fim da expressão e o início de um bloco
de comandos. Essa expressão, quando avaliada, retorna um valor lógico. Ou seja, “saldo >=
valor_saque” só pode retornar “True” ou “False”. Dessa forma, os comandos do bloco definidos pelo
“if” só ocorrem se a condição for “True” (verdadeira).

Analisando o código acima, você pode perceber que o primeiro comando atualiza o valor de saldo da
conta, certo? Um pouco diferente disso, o segundo comando é apenas um comentário em Python e
basicamente uma linha de texto começando com o caractere “#”. Após isso, o texto é somente um
lembrete para que você escreva o código posteriormente.

Depois dessa breve análise, já dá pra saber que os comentários servem apenas como uma referência
para o programador, sendo ignorados pela linguagem Python durante a execução desse script. Na
próxima página, você vai aprender como representar esse mesmo algoritmo utilizando fluxogramas,
vamos lá?

• Nos fluxogramas, o losango é utilizado para representar os desvios condicionais e o texto,


dentro do losango, descreve a condição avaliada. Na imagem abaixo, observe a duas setas que
saem dele: uma para caso a condição seja atendida e outra para o caso contrário. Logo abaixo,
você pode conferir como fica a representação do código anterior em fluxograma.

• De acordo com o fluxo na imagem, a primeira elipse marca o começo do código. O próximo
passo é a decisão, que está representada pelo losango, sobre o saldo. As duas setas que saem
do losango possuem etiquetas indicando qual delas é o caso positivo, “SIM”, e qual delas é o
caso negativo, “NÃO”. Em caso positivo, o saldo é atualizado e uma mensagem é exibida na
tela. Com isso, finalmente você alcançará o fim do código. Em caso negativo, você será
direcionado diretamente para a elipse que marca o fim do fluxograma.

• Assim é possível resolver o problema apresentado caso o saldo na conta seja suficiente. E se
ele for insuficiente, o que você deve fazer? É isso que você aprenderá na próxima página!

• Figura 1 – Fluxograma de representação do desvio condicional simples


Para tratar o problema do que fazer quando o saldo for insuficiente, você deve construir um desvio
condicional composto. Primeiro, é preciso ter em mente que o desvio condicional composto define a
execução de um bloco dependendo da condição lógica (falsa ou verdadeira). Por exemplo, ele
executará um bloco se a condição for verdadeira; ou outro bloco se a condição for falsa. Em Python,
a sintaxe para esse desvio condicional composto é:

1 if condição:
2 comando 01

3 comando 02

4 else:
5 comando 03

6 comando 04

O desvio condicional composto adiciona a palavra reservada “else”, que define um novo bloco: aquele
que será executado quando a condição for falsa. Observe que não se pode escrever nenhuma
expressão entre o “else” e o “:”, uma vez que ele lida com a mesma expressão do “if” correspondente.
Portanto, se a condição tivesse sido verdadeira, os comandos 01 e 02 seriam executados. Caso
contrário, seriam executados os comandos 03 e 04, entendeu?

A única diferença deste fluxograma para o anterior é que, agora, caso a condição testada seja avaliada
como falsa, ao invés de ir diretamente para o fim, existe uma operação de saída com a mensagem que
indica que o saque não foi efetuado e só então o programa se encerra. Em caso positivo, o fluxo
continua o mesmo.

Agora, você deve estar se perguntando, “como ficaria o código do programa para o banco?”.
Figura 2 – Fluxograma de representação do desvio condicional com if e else

A modificação é simples. Você deve apenas adicionar o código referente à condição falsa. Acompanhe
a demonstração a seguir:

1 if saldo >= valor_saque:

2 saldo -= valor_saque
3 # comandos para liberar o dinheiro

4 print('Saque efetuado com sucesso!')


5 else:

6 print('Saque não efetuado: Saldo insuficiente!')

Analisando a modificação realizada, você pode observar que será apresentado o saldo insuficiente ao
usuário caso ele realmente não possua o saldo necessário para realizar o saque desejado. Com isso,
você resolverá o problema em seu programa. Muito prático, não é mesmo?

Antes de aprender sobre tipos de desvios um pouco mais complexos, é importante que você entenda
algumas regras que a linguagem Python segue para a construção de blocos de código.

Como você pôde perceber nos exemplos anteriores, o código pertencente a um bloco era sempre
movido mais à direita em relação ao comando “if” e todas as linhas dentro do bloco iniciavam com a
mesma quantidade de espaços. Isso é chamado de indentação de código.

Na maioria das linguagens de programação, a indentação é usada para deixar o código mais legível,
porque, se todos eles estiverem indentados da mesma forma, fica mais fácil identificar quais
comandos fazem parte de um determinado bloco de código. Em Python, o espaçamento no começo
das linhas também tem um papel sintático, ou seja, seu código não vai funcionar corretamente se não
estiver bem indentado. Acompanhe o exemplo a seguir:

1 aprendendo = True
2 if aprendendo:

3 print('estou aprendendo Python')

4 print('quero aprender ainda mais')

Nesse exemplo, existem dois comandos print dentro do if. Por isso, seria razoável esperar que o código
escrevesse as duas sentenças na tela. No entanto, perceba que o primeiro começa com 4 espaços em
branco e

Perceba que o erro é do tipo “IndentationError”, ou seja, erro de indentação. Então, para
corrigir esse código, basta adicionar os dois espaços que faltam ao segundo comando print. Você
aprendeu que Python é bem sensível quanto à indentação dos seus blocos de código, não é? Para não
cometer erros de indentação, é necessário usar a mesma quantidade de espaços para todas as linhas
dentro de cada bloco, pois a linguagem não vai sinalizar quantos espaços são necessários. Porém, é
preciso saber que eles sempre devem ter a mesma quantidade. Com isso, é possível criar um bloco
indentado com 2 espaços ou com 8, ou até mesmo usar a tecla TAB ao invés de inserir espaços.

Embora você tenha a liberdade para escolher como indentar, a própria linguagem recomenda a
utilização de 4 espaços para indentação. Essa regra é seguida por quase todos os programadores
Python e, sendo assim, recomendo que você também a siga. Pois seu código ficará livre de erros de
indentação e mais fácil de ser lido por outros programadores.

Abaixo, confira um alerta sobre as configurações do ambiente, onde você desenvolve seus códigos
Python, para evitar problemas de indentação:

No Jupyter, que é o ambiente de desenvolvimento utilizado neste curso, ao pressionar a tecla TAB, a
ferramenta automaticamente substitui o TAB por 4 espaços. Por isso, você deve estar atento à forma
como o seu editor lida com TABs e espaços, quando estiver programando em Python, porque misturá-
los também causa erro de indentação.

Desvio Condicional Encadeado


Suponha que o banco onde você trabalha faz estudos com os dados dos clientes usando ferramentas
de data Science, ou Ciência de Dados. Um dia, você descobre que pode emprestar pequenas
quantias de dinheiro para seus clientes cobrando juros em cima desses valores. Com isso, o banco
terá lucro com os juros e os clientes poderão usar o dinheiro quando precisarem. Nesse contexto, o
banco irá liberar dinheiro para o cliente de uma forma mais complexa, tendo em mente os pontos a
seguir:

• Primeiro, o saque só deve ser liberado caso haja saldo em conta;


• Segundo, se o cliente tiver mais de 25 anos (pessoas mais velhas provavelmente tem mais
cuidado com suas finanças) e estiver solicitando no máximo R$ 500,00 a mais que o valor de
saldo em sua conta, o banco dará um empréstimo do valor necessário a este cliente e o
saque é liberado. Ou seja, caso um cliente maior de 25 anos peça R$ 700,00 reais de saque,
mas tenha apenas R$ 400,00 de saldo, o banco empresta R$ 300,00 reais e ele pode sacar os
R$ 700,00 que requisitou, ficando com - R$ 300,00 de saldo em conta.
• Por último, o cenário onde o dinheiro não é liberado.

Para resolver este problema, quando o dinheiro não é liberado pelo banco, você precisa fazer o
encadeamento de condicionais, ou seja, executar uma sequência de “ifs-elses” de tamanho
arbitrário. A seguir, observe a sintaxe para este encadeamento:

Analisando a sintaxe acima, perceba que foi adicionada uma nova palavra reservada, “elif”, que é
seguida por uma condição. Antes de avançarmos na nossa análise, é preciso ter em mente que “elif”
é um “if” que ocorre após um “else”, ou seja, resulta da junção “elif (else + if)”.

Dessa forma, o código funciona assim: primeiro, a condição 01 é testada, certo? Caso ela seja
verdadeira, o bloco 01 é executado. Se a condição 01 for falsa, a condição 02 é testada, e caso esta
seja verdadeira, o bloco 02 é executado. Agora, se a condição 02 for falsa, o bloco 03 é executado. Daí
vem o nome encadeamento, que foi mencionado anteriormente.

Então, depois de conhecer o encadeamento de condicionais e outros conceitos, que tal colocá-los
prática agora? Compreenda, na próxima página, como eles podem ser aplicados ao problema do
banco com código Python e em seguida como o encadeamento de condicionais pode ser representado
utilizando fluxogramas.
A modificação que você deve realizar é simples. Para isso, adicione o código referente à condição que
trata o “cheque especial”, nome dado aos empréstimos de valores mais baixos aplicados pelo banco.
A seguir, acompanhe como o código deve ser escrito:

Pronto, assim, você consegue resolver a questão! Foram realizados 2 testes lógicos. No primeiro,
temos a situação em que o saldo é suficiente; no segundo, a situação em que o saldo adicionado do
valor máximo de empréstimo é suficiente e a idade do usuário libera o empréstimo. Com esse
encadeamento, é possível resolver os 3 resultados que podem ser aplicados para um pedido de saque
de dinheiro.

Neste exemplo, foi preciso apenas um “if”, um “elif” e um “else”, mas caso tivesse sido testada uma
condição após a outra, você poderia ter escrito quantos “elif” fossem necessários. Entretanto, lembre-
se de que sempre haverá apenas um “if” e um “else”.

Os fluxogramas não possuem uma figura especial para representar o “elif”. Ao invés disso, são
utilizadas decisões encadeadas. Assim, para cada decisão, você precisa incluir um losango.

O primeiro losango é idêntico ao dos fluxogramas anteriores. No entanto, dessa vez, para o caso
negativo, teremos um novo losango. Este verifica se o cliente é elegível para solicitar o cheque
especial. Em caso positivo, repare que a seta aponta para o mesmo fluxo, que é seguido caso haja
saldo suficiente. Em caso negativo, deve-se seguir com o mesmo código “else” do fluxograma anterior.

Agora, aprenda a encadear os blocos “if-else” de outra forma. Siga para próxima página e compreenda
como fazer isso.
Figura 3 – Fluxograma de representação dos desvios condicionais encadeados

Este outro meio de se encadear “if” e “else” é chamado de aninhamento. Como foi discutido no início,
um “if”, um “elif” ou um “else” definem um bloco de comandos, correto? Logo, dentro desse bloco,
pode haver qualquer comando, inclusive mais um desvio condicional. Essa estrutura pode ser definida
como na representação abaixo:
Neste momento, pare e tente entender o código acima. Que comandos ocorrem em conjunto?

Os comandos 1 e 2 ocorrem se a condição 01 for verdadeira. Já a execução do comando 03 ocorre se


a condição 01 for verdadeira e a 02 também. Quanto ao comando 04, ele só ocorre se a condição 01
for verdadeira e a 02 falsa. Logo, é possível entender que a condição 02 está aninhada à condição 01,
ou seja, a 02 só é testada se a 01 for verdadeira. Por fim, o comando 05 ocorre se a condição 01 for
falsa.

Em geral, é possível escrever códigos equivalentes utilizando os dois tipos de aninhamento, então,
você vai decidir o que fica melhor para o seu código.

Depois de conhecer o aninhamento, você sabe que existe a possibilidade de aninhar o código do banco
dessa forma como foi apresentada agora? Você consegue imaginar como fazer isso? Essa reescrita
exige que você pense na lógica de como fazer os testes lógicos. Reflita um pouco e compreenda como
fazer essa aplicação na próxima página.

A mudança na lógica de programação é simples e, analisando o código abaixo, você pode percebê-la:

É possível analisar o código destacando que os aninhamentos e as condições foram aplicadas de


formas diferentes. O “if-else” interno é parte do bloco definido pela condição verdadeira testada na
primeira linha do código. Desse modo, que tipo de aninhamento é melhor? Depende, pois em cada
problema que você for desenvolver, vai haver um jeito melhor de se escrever as condições e os desvios
condicionais.
No exemplo estudado, as duas formas são similares, então, fica a seu critério escolher qual delas usar.
O que você acha? Existe uma forma que você considera mais elegante ou você sente que tanto faz?
Fica aí o questionamento!

Confira abaixo mais algumas informações sobre desvios condicionais.

Existem meios ainda mais diferentes de se construir desvios condicionais em Python. Por isso, você
pode pesquisar mais e aprofundar seus conhecimentos nessa área.

Caso tenha interesse, procure por operador ternário em Python e as versões “short hand” do “if” e do
“if-else”. Essas são versões bem compactas de se escrever desvios condicionais em uma linha de
código. O código fica um pouco menos legível, entretanto, bem mais compacto.

Bom, nesta aula, você pôde aprender como representar desvios condicionais em seus códigos Python.
Esses desvios podem ser simples, compostos e encadeados. Cada condição (verdadeira ou falsa),
testada em um desvio condicional, define um novo bloco. Com isso, você pôde entender também
como escrever diversos comandos. No mais, ainda compreendeu como construir fluxogramas que
possam representar os desvios condicionais de seus programas.

Escrever códigos para desvios condicionais depende de como você pensa seus próprios algoritmos.
Como deu para perceber, a sintaxe é sempre fixa, mas as condições lógicas e os comandos executados
dependem do problema que você está tentando resolver.

Então, aprofunde seus conhecimentos, exercitando as diversas formas possíveis de se escrever


desvios condicionais em Python. Você pode escrever estruturas com diversos blocos e expressões para
os testes lógicos simples, ou estruturas com poucos blocos e expressões mais complexas, comparando
as duas opções quanto à legibilidade, afinal é sempre bom desenvolver códigos que sejam fáceis de
ler.

Além disso, se tiver curiosidade, você pode ver como outras linguagens de programação implementam
desvios condicionais. Na linguagem Java, por exemplo, existe um desvio condicional que não há em
Python, o switch. Vale a pena conhecer outras possibilidades para que você possa escolher a melhor
forma de representar problemas em seus programas.

Referências
• https://gabrielschade.github.io/2018/02/12/basics-python-2.html - Acessado em maio/2021.
• https://www.w3schools.com/python/python_conditions.asp – Acessado em maio/2020.
• http://excript.com/python/indentacao-python.html - Acessado em maio/2021.
• https://www.python.org/dev/peps/pep-0008/#indentation - Acessado em maio/2021.

Você também pode gostar