0% acharam este documento útil (0 voto)
76 visualizações10 páginas

1.3. Introdução À Lógica de Programação em Python

O documento discute implementar algoritmos complexos em Python, como calcular o volume de um paralelepípedo e resolver a fórmula de Bhaskara. Ele explica os passos de entrada, processamento e saída de um algoritmo e como expressar sequências de operações matemáticas em uma linha de código Python usando precedência de operadores.

Enviado por

Samantha Raziel
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
76 visualizações10 páginas

1.3. Introdução À Lógica de Programação em Python

O documento discute implementar algoritmos complexos em Python, como calcular o volume de um paralelepípedo e resolver a fórmula de Bhaskara. Ele explica os passos de entrada, processamento e saída de um algoritmo e como expressar sequências de operações matemáticas em uma linha de código Python usando precedência de operadores.

Enviado por

Samantha Raziel
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 10

Planejando e implementando algoritmos complexos em Python

Considere a seguinte situação: suponha que você foi contratado para trabalhar em uma empresa de
engenharia. Lá, sua primeira tarefa vai ser construir o algoritmo que calcula o volume de um
paralelepípedo, cujas características (base, largura e altura) serão apresentadas pelo usuário.

Se você voltar ao tempo de ensino fundamental, nas aulas de Matemática, vai lembrar que a equação
do volume de um paralelepípedo é:

volume do paralelepípedo = base * largura * altura

Verificando mais precisamente, essa equação possui 2 operações de multiplicação e 3 operadores: a


base, a largura e a altura. A partir desse cálculo, você vai construir o algoritmo para executá-lo. Ah,
lembre-se de que um algoritmo é composto por 3 etapas: a entrada, o processamento e a saída.
Portanto, separe o algoritmo conforme a lista a seguir:

• Entrada: Leia os valores de base, de largura e de altura do paralelepípedo;


• Processamento: Calcule o valor do volume desse paralelepípedo e o armazene em uma
variável;
• Saída: Apresente o resultado ao usuário.

Com esses 3 grupos definidos, fica fácil também construir o fluxograma desse algoritmo, conforme
apresentado:

Perceba que há um algoritmo com um processamento levemente mais complexo. Contudo, se você
seguir um passo a passo de entendimento e escrita dele, fica fácil entender o seu funcionamento.
Então, agora que o algoritmo foi descrito detalhadamente, que tal implementá-lo? Confira como fazer
isso na próxima página.

Primeiro, você pode criar uma célula no Jupyter Notebook para cada uma das fases listadas
anteriormente. A célula contendo a parte da entrada contém três linhas, conforme apresentado a
seguir:

1 base = float(input('Digite o valor da base do paralelepípedo:'))


2 largura = float(input('Digite o valor da largura do paralelepípedo:'))
3 altura = float(input('Digite o valor da altura do paralelepípedo:'))

Na primeira linha, é apresentado ao usuário a mensagem “Digite o valor da base do paralelepípedo:”,


e o usuário digitará o valor referente a essa dimensão. Feito isso, o valor digitado é transformado para
float, para que possa ser utilizado em operações aritméticas. Esse mesmo processo é repetido para
largura e altura.

Vencida a fase de entrada do algoritmo, siga para a parte de processamento. Ela contém uma linha de
código conforme apresentado a seguir:

4 volume = base * largura * altura

Nessa única linha, foram feitas 2 operações de multiplicação e atribuído o valor resultante à variável
volume. Ela é um bom exemplo de uma expressão complexa contendo mais de uma operação sendo
executada em uma linha de código. Por isso, Python e muitas outras linguagens possibilitam a
construção de expressões com diversos operadores. Por fim, você pode apresentar o resultado por
meio das duas linhas a seguir:

5 print('O volume calculado é:')

6 print(volume)

Assim, nas duas linhas finais do trecho de código, é impressa em tela a mensagem 'O volume calculado
é:', e na linha a seguir é impresso o valor armazenado em volume. Bem simples, não é mesmo? Pronto,
como você fez essa tarefa super bem, vamos retornar à situação proposta, pois eles pedirão para que
você faça um cálculo mais complexo. Confira qual será essa próxima tarefa na página seguinte.

Sabendo que você estudou bastante e que um colega teve que assumir outras atividades, você
precisou continuar a implementação da fórmula de Bhaskara. Revendo seus livros de Matemática,
você se lembrou da fórmula que é apresentada a seguir:

Δ = b² - 4 a c x¹ = -b + √∆ __________ 2a
x² = +b + √∆ __________ 2a

Felizmente, como você vai continuar a implementação, a fase de entrada do algoritmo já está
implementada! Seu colega já fez a leitura dos valores de a, b e c e até já fez o primeiro passo do
processamento, calculando o valor de delta e armazenando o valor da raiz quadrada de delta na
variável raiz_delta. Assim, o próximo passo é calcular o valor de x’. Aí começarão os desafios.

Você sabe fazer no papel uma sequência de operações de multiplicação, divisão e soma, para chegar
ao resultado correto de x’ e de x” , mas como expressar isso em uma linha de código Python? Essa é
uma questão importante de se responder.

A seguir, você vai estudar como expressar uma sequência de operações e como Python as interpreta.
O mecanismo utilizado é chamado de precedência de operadores e define em que ordem as
operações serão executadas em uma dada expressão. Conheça, logo mais, a lista dos operadores
disponíveis em Python e descubra qual a precedência deles. Depois desse estudo, retornaremos essa
implementação e você vai conseguir entender cada pedaço de código. Vamos lá?

Operadores em Python

Conhecer todos os operadores disponíveis em uma linguagem de programação é extremamente


importante. Já sabemos um pouco como utilizar operadores aritméticos para efetuar operações com
variáveis numéricas. Além desses, com a linguagem Python, você vai implementar um conjunto maior
de operadores para que através deles seja possível processar variáveis de diferentes tipos. A seguir,
você poderá conhecê-los e isso lhe ajudará a traduzir suas ideias para códigos em Python.

Podemos dividir os operadores existentes em Python em alguns grupos, são eles:

• Aritméticos: Nos ajudam a fazer cálculos matemáticos;


• Atribuição: Nos ajudam a armazenar dados e facilmente modificar variáveis em memória;
• Lógicos: Como o próprio nome já anuncia, possibilitam a construção de expressões lógicas;
• Comparação ou relacionais: Nos ajudam a comparar valores e expressões;
• Lógicos bit-a-bit: Avaliam cada um dos bits das variáveis que os utilizam;
• Identidade e de pertencimento: Nos ajudam a comparar variáveis e a saber se elas estão no
mesmo local da memória do computador.
Muitos desses operadores são comuns a outras linguagens de programação e ao que é estudado em
Lógica de Programação. Assim, fica mais fácil entender a definição desses operadores. Então, vamos
estudar cada um desses diferentes grupos de operadores?

O primeiro grupo que será apresentado é o dos operadores aritméticos, que operam sobre duas
variáveis, ou seja, são binários, e retornam um terceiro valor resultante da operação. Acompanhe o
quadro a seguir, onde a primeira coluna (da esquerda) apresenta um operador aritmético válido em
Python, a segunda (do meio) contém a definição da operação aritmética e a terceira coluna (da direita)
apresenta a forma como são escritas as operações em uma expressão Python, sendo x e y variáveis
quaisquer.

Os cinco primeiros operadores da tabela são autoexplicativos, mas é importante descrever os


operadores da divisão inteira e o resto da divisão. Em primeiro lugar, a divisão inteira é um operador
que retorna o valor inteiro resultante da divisão de x por y, descartando-se os dígitos depois do ponto
decimal. Portanto, se 10 / 4 = 2.5, então 10 // 4 = 2. % é o módulo retorna o valor residual (resto) de
uma divisão inteira. Por exemplo, 7 % 3 é 1, pois é o resto da divisão inteira de 7 por 3. Não estamos
acostumados a usar esse operador, mas você pode definir uma sequência para calcular seu resultado.
Primeiro, calcule o valor da divisão inteira das duas variáveis envolvidas, x e y. No exemplo, 7 // 3 =
2. Feito isso, multiplique y pelo valor resultante, no caso 3 * 2 = 6. Por fim, subtraia de x esse valor, 7
- 6 = 1. Pronto, você tem o resultado do uso do operador %.

A seguir temos uma tabela onde, para cada linha, existe um operador aritmético, uma operação, uma
expressão e, por fim, uma célula vazia. Assumindo que x é uma variável com valor 1.0 e y tem valor
4.0, qual o resultado das operações listadas a seguir? Preencha as células vazias e verifique suas
respostas.

Operador Operação Forma Valor calculado


+ Soma x+y 5.0
- Subtração x-y -3.0
* Multiplicação x*y 4.0
/ Divisão (𝑥⁄𝑦) x/y 0.25
** Exponenciação (𝑥 )y x ** y 1.0
// Divisão inteira x // y 0.0
% Resto da divisão x%y 1.0
Uma coisa importante de se perceber é que foi descrito explicitamente que x = 1.0 e y = 4.0, lembrando
que foi usado o ponto para separar a parte inteira e decimal do número, pois Python segue essa
representação. Mas será que existe alguma razão para termos definido x = 1.0, e não termos
simplificado isso para x = 1? Python, assim como muitas outras linguagens de programação, é bastante
rigoroso em como devem ser escritos os numerais e efetuadas as operações aritméticas. Portanto, é
preciso prestar atenção a isso para que os cálculos tenham seus resultados calculados de forma certa.
Precisamos escrever explicitamente que x = 1.0 e y = 4.0 para garantir que Python armazene esses
dados como números de ponto flutuante, e não inteiros. Assim, os resultados das operações serão
também números de ponto flutuante. Caso tivéssemos definido x = 1 e y = 4, Python teria armazenado
esses valores como inteiros e, assim, todos os resultados também seriam inteiros. Esses são detalhes
que temos que ficar atentos. Caso uma das variáveis fosse inteira e a outra ponto flutuante, o
resultado seria um valor ponto flutuante.

Além disso, os operadores de soma (+) e de subtração (–) também podem ser utilizados de forma
unária, ou seja, apenas com um operando. O sinal de mais unário gera o mesmo valor do operando
em que é aplicado, já o de subtração unário troca o sinal do valor numérico. Por exemplo, caso a
variável x tenha valor -1, + x retorna -1 e –x retorna 1, ou seja, troca-se o sinal de x.

Já os operadores de atribuição, como o próprio nome anuncia, atribuem valores a variáveis. Além
disso, em suas versões mais complexas, eles servem para fazer uma operação aritmética com o valor
de uma variável e depois armazenar o resultado na própria variável. Pense nesse conceito como sendo
a atualização do valor armazenado em uma variável. A tabela a seguir apresenta 4 colunas, a primeira
(à esquerda) contém um operador de atribuição, a segunda coluna (ao lado) contém a descrição da
operação de atribuição efetuada quando se usa tal operador, a terceira (posterior) contém um
exemplo de como utilizá-lo e a quarta (à direita) apresenta a interpretação de como deve ser
entendido o exemplo. Essa interpretação também é uma expressão válida em Python!

Operador Operação Exemplo Interpretação


= Atribuição simples x=2 x=2
+= Soma e atribuição x += 2 x=x+2
-= Subtração e atribuição x -= 2 x=x-2
Multiplicação e
*= x *= 2 x=x*2
atribuição
/= Divisão e atribuição x /= 2 x=x/2
Exponenciação e
**= x **= 2 x = x ** 2
atribuição
Divisão inteira e
//= x //= 1 x = x // 2
atribuição
Resto da divisão e
%= x %= 2 x=x%2
atribuição
Você compreende o que significa dizer “servem para fazer uma operação aritmética com o valor de
uma variável e depois armazenar o resultado na própria variável”? Nos exemplos apresentados, a
interpretação dos operadores de atribuição é de efetuar uma operação aritmética com o valor da
variável x e de armazenar o resultado na mesma variável. Pare um pouco e perceba que o operador
simplesmente apresenta uma operação um pouco complexa de forma bem resumida. Além disso, eles
operam com valores fixos e variáveis. Por exemplo, podemos substituir o numeral 2 por uma variável
qualquer y. Assim, o operador multiplicação e atribuição (*=), que multiplica e depois atribui,
funcionaria como x *= y e seria interpretado como x = x * y. Isso funciona para todos os operadores
de atribuição.

Quando perguntam se você está com fome, só há duas respostas possíveis: sim ou não. Chamamos
valores dos tipos Sim ou Não, Verdadeiro ou Falso e 0 ou 1 de valores lógicos ou booleanos. Em Python,
variáveis do tipo bool armazenam valores booleanos, podendo ser True (verdadeiro) ou False (falso).
Assim, se você quiser que a variável x armazene um valor verdadeiro, você deve escrever x = True,
caso contrário x = False.

Sabendo que há variáveis booleanas, você vai aprender a usar operadores que as manipulam, os
chamados operadores lógicos. Eles testam condições lógicas e retornam um valor do tipo bool, uma
variável booleana. Em Python, eles são apenas 3 e são exatamente a tradução para inglês do que
fazem. Lembre-se de que variáveis booleanas só podem ser True ou False. Então, a aplicação desses
operadores também apenas retorna True ou False:

x and y: o operador and (e) testa se as variáveis x e y são verdadeiras. Caso as duas sejam verdadeiras,
ele retorna True. Se pelo menos uma delas for falsa, ele retorna False.

x or y: o operador or (ou) testa se a variável x é verdadeira ou se a variável y é verdadeira. Se pelo


menos uma delas for verdadeira, ou as duas forem verdadeiras, ele retorna True. Portanto, ele só
retorna False caso as duas sejam falsas.

not x: o operador not (não) retorna a negação da variável x. Caso ela seja verdadeira, o operador
retorna False. Caso seja falsa, ele retorna True.

A tabela, a seguir, resume a explicação apresentada e reforça a interpretação do uso destes


operadores:

Operador Operação Exemplo Interpretação


and E lógico x and y xey
or OU lógico x or y x ou y
not NÃO lógico not x negue x
Conheça, agora, os operadores de comparação ou relacionais. Através deles, é possível comparar duas
expressões, valores ou variáveis e obter um resultado em um valor do tipo bool, True para verdadeiro
e False para falso.

Geralmente, esses operadores são utilizados quando é necessário alguma decisão a partir da
comparação de dois valores quaisquer. Quando você estiver estudando desvios condicionais, eles
serão muito uteis! A tabela a seguir apresenta 4 colunas: a primeira (à esquerda) contém um operador
relacional, a segunda coluna (ao lado) contém a descrição da operação de comparação efetuada
quando se usa tal operador, a terceira (posterior) contém um exemplo de como utilizá-lo e a quarta
(à direita) apresenta a interpretação de como deve ser entendido o exemplo. Conheça cada um e
compreenda como podem ser aplicados.

Operador Operação Exemplo Interpretação


== Igualdade x == y x é igual a y?
!= Diferença x != y x é diferente de y?
> Maior que x>y x é maior que y?
>= Maior ou igual x >= y x é maior ou igual a y?
< Menor que x<y x é menor que y?
<= Menor ou igual x <= y x é menor ou igual a y?
Agora que listamos os operadores e suas interpretações, vamos exercitar um pequeno teste? Faça
isso na próxima página.

A seguir temos uma tabela onde, para cada linha, existe um operador relacional, uma expressão e por
fim uma célula vazia. Assumindo que x é uma variável contendo o valor 2, e y é outra contendo 3,
calcule os resultados das operações relacionais de cada um dos operadores listados na tabela a seguir.
Operador Exemplo Valor calculado (True ou False)
== x == y False
!= x != y True
> x>y False
>= x >= y False
< x<y True
<= x <= y True
Um dado importante, discutido brevemente nas páginas anteriores, é que os computadores utilizam
o sistema binário, também chamado de base binária, para representar números. Nesse sistema,
qualquer valor numérico é armazenado como uma sequência de 0’s e 1’s. Já os humanos utilizam o
sistema decimal para tal representação. Sem aprofundar na Matemática necessária para converter
valores entre o sistema decimal e o sistema binário, temos a informação de que 4 (quatro) na base
binária é representado por 100 (cem), 14 (quatorze) é representado por 1110 (mil cento e dez), 25
(vinte e cinco) é 11001 (onze mil e um) e assim por diante.

Nos computadores, utiliza-se um número fixo de dígitos para representar um valor numérico. Assim,
em computadores que usam 16 bits para essa representação, deve-se adicionar zeros à esquerda até
que 16 dígitos sejam escritos. Por exemplo, 4 (quatro) passa a ser 0000000000000100, 14 (quatorze)
vira 0000000000001110 e assim por diante. Já os computadores mais modernos utilizam 32 ou 64
bits. Também é possível colocar um prefixo 0b caso você queira mostrar que está escrevendo um valor
binário, assim x = 0b10 é igual a x = 2.

Caso você queira profundar seus conhecimentos nesse processo de conversão, visite o link Como
funciona o sistema binário?, do Canaltech, indicado nas referências! Vamos então entender como
manipular esses valores no nível de representação binário?

Os operadores lógicos bit-a-bit operam sobre cada um dos dígitos, interpretando 0 como um estado,
e 1 como outro. 0 também pode ser interpretado como negativo (False), e 1 como positivo (True). A
partir desse entendimento, as duas tabelas a seguir, cujas colunas contêm um operador lógico bit a
bit, um exemplo e a interpretação da operação definida, apresentam o conjunto completo desses
operadores disponíveis em Python.

Operador Exemplo Interpretação


Execute uma operação lógica E
& x&y em cada um dos bits da
representação de x e y
Execute uma operação lógica
| x|y OU em cada um dos bits da
representação de x e y
Execute uma operação lógica
^ x^y OU EXCLUSIVO em cada um dos
bits da representação de x e y
Execute uma operação lógica
~ ~x NEGAÇÃO em cada um dos bits
da representação de x
Também existem os operadores de deslocamento, que são apresentados na tabela a seguir:

Operador Exemplo Interpretação


Pegue a representação binária
<< x << 2
de x e desloque 2 posições para
a esquerda, inserindo 2 zeros
nas posições mais à direita
Pegue a representação binária
de x e desloque 2 posições para
>> x >> 2
a direita, inserindo 2 zeros nas
posições mais à esquerda
Este primeiro contato precisa de concentração, tente memorizar a definição dos operadores e exercite
o funcionamento deles. De forma simplificada, 4 & 3 = 0, visto que 4 é 100 e 3 é 011. Logo, se você
fizer a comparação bit a bit, sempre terá 0 & 1, que é igual a 0 (False). Assim, você tem 000. Da mesma
forma, 4 | 3 = 7, visto que as comparações que você terá bit a bit são 0 | 1, que resulta em 1. Portanto,
há 111 em binário que, quando convertido para decimal, é igual a 7.

Como estamos acostumados a efetuar operações aritméticas há muito tempo, é fácil compreender a
função desses operadores em Python. Já para entender operadores bit a bit, você precisa passar por
diversos passos até que eles façam parte do seu repertório. Vamos definir um caminho para você
entender mais sobre esses operadores? Operadores bit a bit ainda são pouco comuns para você, mas
existe um caminho que pode ser percorrido para se aprofundar no assunto.

Em primeiro lugar, você deve aprofundar seu estudo sobre como converter valores do sistema decimal
para o sistema binário, e vice-versa. Quando você estiver entendendo isso profundamente, vai ficar
mais fácil de compreender e utilizar operadores bit a bit nos seus códigos Python!

Dando continuidade, conheça agora os operadores de identidade. De maneira geral, eles testam se as
variáveis com nomes diferentes se referem ao mesmo local de memória. Esses operadores serão mais
úteis quando você já estiver utilizando e se acostumando aos conceitos de Orientação a Objetos, até
lá eles não têm muita utilidade, mas devem ser informados. Após essa informação, entenda quais são
esses operadores e como eles são interpretados em Python.

Nos dois quadros a seguir temos uma coluna (à esquerda) que contém um operador de identidade,
um exemplo (no meio) e a interpretação da operação definida (à direita).

Operador Exemplo Interpretação


x e y estão endereçando o
is x is y
mesmo local de memória?
x e y não estão endereçando o
is not x is not y
mesmo local de memória?
Por fim, os operadores de pertencimento testam se o primeiro operando faz parte, ou está no, do
segundo operando. Você vai utilizá-los bastante quando estiver estudando estruturas de dados em
Python. Por isso, tente relembrar suas características. Nessa categoria, também só existem dois
operadores e eles estão apresentados no próximo quadro, que tem a mesma estrutura do quadro
anterior.

Operador Exemplo Interpretação


in x in y x faz parte de y? x está em y?
x não faz parte de y? x não está
not in x not in y
em y?
Bom, agora que você pôde aprender quais são os operadores básicos utilizados em Python e como
eles são aplicados, você deve estar pronto para compreender, no próximo tópico, como funciona a
precedência em operadores nessa linguagem.

Precedência de operadores
Você acabou de conhecer a diversa gama de operadores de Python. Com esses operadores, é possível
escrever expressões cada vez mais complexas em seus programas, mas para isso é necessário ter
cuidado. Por exemplo, analise a expressão a seguir e pense qual seria o resultado correto para ela:

x=2+3*5

A variável x será inicializada com o valor 17 ou 25? Se você respondeu 17, você usou a convenção que
afirma que a operação de multiplicação tem maior prioridade sobre a soma, logo ela ocorre primeiro.
Se você respondeu 25, você usou a convenção que assegura que a primeira operação a aparecer na
expressão é a que deve ocorrer primeiro, logo você somou 2 + 3 e depois multiplicou por 5. Se você
chegou a outro resultado, você pode ter utilizado alguma convenção não prevista, mas o ponto que
deve ser destacado aqui é que, seja você ou seja o Python, todos precisam de convenções para decidir
como expressões são computadas.

Em linguagens de programação, a convenção que dita quais operadores ocorrem prioritariamente em


uma dada expressão é chamada de precedência de operadores. Dessa forma, quanto maior a
precedência de um operador, mais cedo a operação que ele executa será efetuada. Caso existam dois
operadores de mesma precedência em uma expressão, o operador mais à esquerda da expressão é o
que é executado prioritariamente.

Perceba na tabela, a seguir, a precedência de operadores em Python dentre aqueles que você já
conheceu. Assim, quanto mais ao topo desta tabela o operador estiver, maior é a prioridade
(precedência), logo, mais cedo ele será executado em uma expressão. A tabela a seguir possui 3
colunas, uma indicando a precedência de um conjunto de operadores (à esquerda), outra indicando
que operadores têm tal precedência (no meio) e a última descrevendo o nome desses operadores (à
direita).

Ranking/Precedência Operadores Nomes


1 (máxima) ** Exponenciação
Positivo, Negativo, negação bit-
2 +x , -x , ~x
a-bit
Multiplicação, divisão, divisão
3 *, /, //, %
inteira e resto da divisão
4 +, - Adição, subtração
5 <<, >> Deslocamento bit-a-bit
6 & E lógico bit-a-bit
7 ^ OU exclusivo lógico bit-a-bit
8 | Ou lógico bit-a-bit
9 <, <=, >, >=, !=, == Operadores de comparação
10 not x Negação lógica
11 and E lógico
12 (Mínima) or OU lógico
A lista completa de precedência em Python contêm outros tipos de elementos além de operadores,
como funções, agrupamentos e utilização de funções. É algo que você deve ter em mente! Para
aprofundar seus conhecimentos, estude esses elementos novos e entenda como eles funcionam para,
em seguida, conhecer a precedência aplicada em Python.

Agora, você entendeu a razão pela qual, em Python, a expressão x = 2 + 3 * 5 resulta em 17. Ora, e se
você quisesse utilizar os mesmos termos mas forçar que a soma 2 + 3 ocorra antes da multiplicação?
Para fazer isto, deve utilizar parênteses (), pois servem para quebrar a precedência normal em Python.
O uso de parênteses diz que todas as computações existentes em uma expressão, que estão
localizadas entre parênteses, ocorrerão antes das que estão fora dos parênteses. Assim, sua nova
expressão deve ficar:

x = (2 + 3) * 5

para que o valor 25 seja atribuído a x. Tranquilo, não é?

Parênteses são o mecanismo utilizado para se quebrar a precedência de operadores, mas preste
atenção, pois toda expressão dentro dos parênteses segue a precedência de operadores usuais. Logo,
se houvesse uma multiplicação e uma soma dentro dos parênteses, a multiplicação ocorreria primeiro.
Assim, para fixar esse conhecimento, perceba que as expressões a seguir são expressões válidas em
Python:

x = (2 + 3 * 8) * 5

x = (2 + 3) * (8 * 5)

Você já estudou bastante, mas é importante retornar ao desenvolvimento do algoritmo que foi pedido
a você na sua empresa. Vamos revisá-lo para que você se lembre do que havia sido pedido. Para isso,
tome como ponto de partida a fórmula de Bhaskara, que é novamente apresentada a seguir:

Δ = b² - 4 a c x¹ = -b + √∆ __________ 2a x² = +b + √∆
__________ 2a

Além disso, partindo de um código que já faz a leitura dos valores de a, b e c, também faz o primeiro
passo do processamento, calculando o valor de delta e armazenando o valor da raiz quadrada de delta
na variável raiz_delta, aí você tem que calcular o valor de x’ e x”. Agora que você já estudou os
operadores e a precedência de operadores, perceba, seguindo as regras definidas pelo Python, como
é fácil completar a fase de processamento do algoritmo proposto. Assim, basta você adicionar a linha
a seguir para calcular o valor de x’:

x_linha = (-b + raiz_delta) / (2 * a)

Nesta linha, fizemos uso dos parênteses para controlar a sequência da execução das operações. Da
mesma forma, é preciso calcular o valor de x”, conforme o trecho do seguinte código:

x_duas_linhas = (b + raiz_delta) / (2 * a)

Já nesta linha, foi definida a mesma sequência de passos e somente trocado o sinal de b. Foi
importante estudar tudo isso antes de construir esse código, não foi? Mas que prática você pode ter
na hora de escrever expressões complexas? Vamos discutir isso na próxima página.

Legibilidade de código-fonte é um conceito importante que deve ser seguido para escrever bons
programas. Um primeiro passo é escrever uma expressão longa e complexa, mas de uma forma que
um colega que for ler seu código possa compreender tudo o que foi escrito. Então, fique atento e veja
como fazer isso no boxe a seguir:

Sempre que você escrever uma expressão longa e complexa, não escreva tudo em uma linha de
código. Divida essa expressão em pedaços menores, para que possa ser entendido individualmente,
por exemplo: relembre o caso da fórmula de Bhaskara, uma parte importante dela é calcular o valor
de ∆ (delta), correto? Se você colocar esse cálculo dentro da expressão da raiz, ela ficará bem grande,
mas se você calcular o valor de delta separado, armazená-lo em uma variável e depois utilizá-lo na
expressão de cálculo da raiz, seu código ficará muito mais legível e menos propenso a falhas, não é
mesmo? Tente aplicar essa lógica em seus códigos!

Bem, até aqui, você pôde aprender diversos elementos relacionados a operadores em Python.
Partindo de expressões simples, contendo apenas operadores aritméticos, agora você sabe como
encadear esses e outros operadores para que possa elaborar algoritmos mais complexos. Fazendo
isso, você vai poder automatizar tarefas do dia a dia, seja em casas ou no trabalho.

Ah, no mais, vale destacar que você foi apresentado aos principais grupos de operadores em Python
e a cada uma das suas características. Depois, você estudou a precedência de operadores em Python
para entender como antecipar qualquer erro de construção de expressões, pois, como foi estudado,
pode acontecer de o programador entender a expressão de uma forma e o Python a interpretá-la de
outra, não é mesmo?

Referências
• CANAL TECH. Como funciona o sistema binário? Disponível em:
https://canaltech.com.br/produtos/como-funciona-o-sistema-binario/. Acesso em: 20 maio
2021.
• DATA FLAIR. Python Operator – Types of Operators in Python. Disponível em: https://data-
flair.training/blogs/python-operator/. Acesso em: 31 maio 2020.
• DVMEDIA. Abstração, Encapsulamento e Herança: Pilares da POO em Java . Disponível em:
https://www.devmedia.com.br/abstracao-encapsulamento-e-heranca-pilares-da-poo-em-
java/26366. Acesso em: 31 maio 2020.
• DVMEDIA. Como criar minha primeira classe em Python. Disponível em:
https://www.devmedia.com.br/como-criar-minha-primeira-classe-em-python/38912.
Acesso em: 31 maio 2020.
• PANDA. Conversão de Decimal para Binário. Disponível em:
https://panda.ime.usp.br/panda/static/pythonds_pt/03-EDBasicos/08-
DecimalParaBinario.html. Acesso em: 20 maio 2021.
• PYTHON. Operator – Standard Operators as functions. Disponível em:
https://docs.python.org/3/library/operator.html. Acesso em: 31 maio 2020.
• W3SCHOOLS. Python Classes and Objects. Disponível em:
https://www.w3schools.com/python/python_classes.asp. Acesso em: 31 maio 2020.
• W3SCHOOLS. Python Operators. Disponível em:
https://www.w3schools.com/python/python_operators.asp. Acesso em: 31 maio 2020.

Você também pode gostar