Você está na página 1de 57

Fundamentos de Programação de Computadores

Aula #04
Programação: Operadores e Expressões
Operadores disponíveis em Python? Como programar expressões?
Como aplicar tais conceitos no Python?

Eng. Civil - Turma A - 2023/01


Prof. Vinícius Fülber Garcia
Post It da Aula Passada
Tipos de Variávei
Dados s
★ Conceito ★ Con
cei
★ de
Primitivos dado ★ Defi to de variável
e derivad nição de
v
★ Tipos de
dados exp
os ○ Regr ariáveis
lorados as de nom
○ Byte ○ Está e
t ic as v
buição em s. Dinâmicas
○ Lógic ★ Atri
o variáveis
○ Intei ○ Sina
ro l de
○ Real ○ Entre atribuição
va
○ Cara
ctere / ca ○ Valor riáveis
★ Cas deia vs. Referê
ting ncia

2
Expressões Aritméticas
Expressões aritméticas consistem em expressões matemáticas onde os
operadores são aritméticos e os operandos são numéricos

Sendo assim, o resultado de uma expressão aritmética também é sempre


numérico: um dado do tipo inteiro ou real.

Entretanto, antes de compreendermos as expressões aritméticas em si,


precisamos conhecer os operadores aritméticos disponíveis.
3
Expressões Aritméticas
Operadores aritméticos são responsáveis pela execução de operações
matemáticas em um computador.

Operadores aritméticos podem ser binários ou unários:


★ Unários: utilizados na inversão do estado de um dado numérico
(positivo para negativo ou negativo para positivo)
★ Binários: utilizados em operações matemáticas como adição,
subtração, multiplicação, divisão, radiciação, exponenciação…
4
Expressões Aritméticas

Operador Descrição Tipo


+ Manutenção de sinal Unário

- Inversão de sinal Unário

= Atribuição Binário

5
Expressões Aritméticas
Operador Descrição Tipo
+ Adição Binário

- Subtração Binário

* Multiplicação Binário

/ Divisão Binário

// Divisão inteira (piso) Binário

% Divisão inteira (resto) Binário

^ Exponenciação Binário

√ Radiciação Binário

6
Expressões Aritméticas

“As expressões aritméticas são realizadas a partir do relacionamento


existente entre variáveis e constantes numéricas com a utilização de
operadores aritméticos”
Manzano e Oliveira

7
Expressões Aritméticas
5 + 5
C OA C
c = 5 + a * 2
V OA C OA V OA C
a * 10
V OA C
a = 3.1415 * r ^ 2
V OA C OA V OA C
a^b
V OA V
8
Expressões Aritméticas
PRECEDÊNCIA DE OPERADORES

A precedência indica a ordem que os operadores são processados em uma


expressão aritmética

Operadores unários precedem os demais


Operadores binários têm diferentes precedências entre si

9
Expressões Aritméticas

Operador Descrição Tipo Precedência


+ Manutenção de sinal Unário 1 (maior)

- Inversão de sinal Unário 1 (maior)

= Atribuição Binário –

10
Expressões Aritméticas
Operador Descrição Tipo Precedência
+ Adição Binário 4

- Subtração Binário 4

* Multiplicação Binário 3

/ Divisão Binário 3

// Divisão inteira Binário 3

% Módulo Binário 3

^ Exponenciação Binário 2 (maior binário)

√ Radiciação Binário 2 (maior binário)

11
Expressões Aritméticas
Sabendo da precedência dos operadores, é relativamente simples identificar a
ordem de execução das operações na expressão a seguir:

a b c
10 + 2 * 0.5 ^ 2

1º) 10 + 2 * 0.5 ^ 2
2º) 10 + 2 * 0.25
3º) 10 + 0.5
4º) 10.5
12
Expressões Aritméticas
Mas e quando existem múltiplas operações com a mesma precedência na
expressão aritmética?

ASSOCIATIVIDADE

A associatividade determina a ordem de execução de operadores com a mesma


precedência.

13
Expressões Aritméticas
A associatividade pode ser…
★ à esquerda: operações processadas da esquerda para a direita
★ à direita: operações processadas da direita para a esquerda

A associatividade padrão em linguagens de programação é a associatividade à


esquerda.

Note que a escolha por uma associatividade ou outra pode alterar o resultado
da expressão aritmética!
14
Expressões Aritméticas
Associatividade à esquerda Associatividade à direita

a b c a b c
8 / 1 *4 *2 8/1*4*2

1º) 8 / 1 *4 *2 1º) 8 / 1 * 4 * 2
2º) 8 * 4 * 2 2º) 8 / 1 * 8
3º) 32 * 2 3º) 8 / 8
4º) 64 4º) 1
15
Expressões Aritméticas
Porém, a precedência de operadores pode ser alterada utilizando parênteses
nas expressões aritméticas

Os parênteses mais internos de uma expressão aritmética são sempre


resolvidos primeiro!

Nos parênteses, entretanto, valem as mesmas regras de precedência e


associatividade.
16
Expressões Aritméticas
a b c d
10 * ( 2 + 5 - 1) ^ 2

1º) 10 * ( 2 + 5 - 1) ^ 2
2º) 10 * (7 - 1) ^ 2
3º) 10 * 6 ^ 2
4º) 10 * 36
5º) 360
17
Expressões Aritméticas
Qual é o tipo de dados retornado pelas expressões aritméticas em Python?

Depende! Existem dois fatores: o tipo de dados na expressão e as


operações realizadas na mesma

● Se existir um número real na expressão, o resultado será do tipo real (float)


● Se existir uma divisão na expressão, o resultado será do tipo real (float)
● Se existir uma radiciação na expressão, o resultado será do tipo real (float)
● Em qualquer outro caso, o resultado será do tipo inteiro (int)
18
Expressões Aritméticas
A maior parte dos operadores aritméticos vistos até aqui estão nativamente
implementados em Python.

Estão presentes na linguagem todos os operadores unários e os binários de…


● Atribuição (=)
● Adição (+) e subtração (-)
● Multiplicação (*) e divisão (/)
● Divisão inteira em piso (//) e resto da divisão inteira (%)
● Exponenciação (**)
● Unários (+ e -)
19
Expressões Aritméticas
A radiciação não está disponível nativamente na linguagem Python.

Porém, existem duas maneiras comuns de executar a radiciação em Python:


● Através de exponenciação
○ Por exemplo, para obter a raiz quadrada basta definir o expoente
em 0.5
● Através da biblioteca matemática math
○ Importação da biblioteca e utilização da função sqrt para executar
a raiz quadrada
20
Expressões Aritméticas
Nossos exemplos anteriores…

Notação tradicional Notação Python


a = 3.1415 * r ^ 2 a = 3.1415 * r ** 2
10 + 2 * 0.5 ^ 2 10 + 2 * 0.5 ** 2
8 / 1 *4 *2 8 / 1 *4 *2
10 * ( 2 + 5 - 1) ^ 2 10 * ( 2 + 5 - 1) ** 2

21
Expressões Aritméticas
Considere a seguinte expressão aritmética:

10 + (25 - 5 ) * 2 + (10 // 3) ** 2

Faça um algoritmo em Python que mostre na tela todos os resultados parciais


de cada operação realizada. Por exemplo, o primeiro print deve ser:
print(“(25 - 5 )”, 25-5) ou print(“25 - 5”, 20) ou print(“25-5”, parc)

Mostre o resultado final da expressão calculada em Python para conferir o


resultado do seu cálculo.
22
Expressões Relacionais
E se, ao invés de um valor numérico como resultado, obtivéssemos um valor
lógico?

EXPRESSÕES RELACIONAIS

Expressões relacionais se dedicam a comparar os resultados entre


expressões aritméticas, variáveis e constantes, apresentando como
resultado um dado do tipo lógico.
23
Expressões Relacionais: Operadores
Porém, antes de observarmos as expressões relacionais com um maior nível de
detalhe, precisamos conhecer os operadores relacionais:
Operador (símbolo) Descrição

= Igualdade

> Maior que

< Menor que

≥ Maior ou Igual que

≤ Menor ou Igual que

≠ Diferente de

24
Expressões Relacionais
expressão = expressão: retorna verdadeiro quando as expressões resultarem
no mesmo valor; caso contrário retorna falso.
10 = 9 (Falso)
7-2 = 4+1 (Verdadeiro)

expressão > expressão: retorna verdadeiro quando a primeira expressão


resultar em um valor superior ao da segunda; caso contrário retorna falso.
10 > 9 (Verdadeiro)
7-2 > 4+1 (Falso)
25
Expressões Relacionais
expressão < expressão: retorna verdadeiro quando a primeira expressão
resultar em um valor inferior ao da segunda; caso contrário retorna falso.
10 < 9 (Falso)
7-2 < 4+1 (Falso)

expressão ≥ expressão: retorna verdadeiro quando a primeira expressão


resultar em um valor superior ou igual ao da segunda; caso contrário retorna
falso.
10 ≥ 9 (Verdadeiro)
7-2 ≥ 4+1 (Verdadeiro)
26
Expressões Relacionais
expressão ≤ expressão: retorna verdadeiro quando a primeira expressão
resultar em um valor inferior ou igual ao da segunda; caso contrário retorna falso.
10 ≤ 9 (Falso)
7-2 ≤ 4+1 (Verdadeiro)

expressão ≠ expressão: retorna verdadeiro quando a primeira expressão


resultar em um valor diferente ao da segunda; caso contrário retorna falso.
10 ≠ 9 (Verdadeiro)
7-2 ≠ 4+1 (Falso)
27
Expressões Relacionais
Em Python, expressões relacionais podem ser construídas de maneira muito
natural. Porém, a notação utilizada difere um pouco da apresentada até aqui:
Operador (símbolo) Operador (Python) Descrição

= == Igualdade

> > Maior que

< < Menor que

≥ >= Maior ou Igual que

≤ <= Menor ou Igual que

≠ != Diferente de

28
Expressões Relacionais
Assim sendo, qual o resultado das expressões relacionais apresentadas a seguir?

a) 25 < 30? c) a = 10 + 5 * 2 - (2 * 2) ** 2
b = 5 - 4 ** 2 + (16 ** 0.5)
a >= b? a != b?

a) -10 >= -5? d) a = 2 ** 2 == 3 + 1


a?
29
Expressões Relacionais
Apesar de não ser tão comum, expressões relacionais podem contemplar
múltiplas operações relacionais

1 < 2 + 1 == 3

Nesse caso, a expressão será verdadeira apenas se todas as operações binárias


forem verdadeiras!

Todos os operadores relacionais apresentam a mesma precedência e a


associatividade é à esquerda.
30
Expressões Relacionais
Em Python, é possível criar expressões relacionais entre outros tipos de dado:

Tipo de Dado #1 Tipo de Dado #2

int int

float float

int float

bool bool

str str

bytes bytes

31
Expressões Relacionais
int vs. int
Foi como organizamos as expressões relacionais até este momento!
A comparação é feita diretamente pelo valor numérico

float vs. float


Similar à comparação entre valores inteiros, porém agora considera-se valores
fracionários
1.0 != 1.0?
0.27 >= 0.26?
32
Expressões Relacionais
int vs. float
Novamente, a comparação é feita pelo valor numérico. Na prática, o valor inteiro é
castado para real e então a comparação é feita como um float vs. float
1.0 == 1?
-1 >= 0.26?

bool vs. bool


A regra geral nesse caso é: True é maior (>) que False
False <= True?
True == True?
33
Expressões Relacionais
str vs. str
A comparação entre strings é feita considerando seus valores unicode (para os
caracteres usuais, podemos utilizar a tabela ASCII). Ou seja, se uma string
aparecer depois na ordem lexicográfica (de dicionário) em relação a uma
segunda, então a primeira é maior (>) que a segunda
“ab” > “ac”? “oi” > “hi”?
“ab” > “Ac”? “ oi” > “hi”?

A comparação byte vs. byte segue a mesma lógica da str vs. str!
34
Expressões Relacionais
Tentativas de comparação entre tipos de dado “incompatíveis”, em geral,
resultam em erro

TypeError: '>' not supported between instances of


TypeError: '>=' not supported between instances of
TypeError: '<' not supported between instances of
TypeError: '<=' not supported between instances of

A exceção são os operadores de igualdade (==) e diferença (!=), estes funcionam


entre quaisquer tipos de dado.
35
Expressões Relacionais
Faça um algoritmo em Python que atribua dois valores reais, em variáveis
var01 e var02.

Exiba na tela (print) os dois valores lidos e seus respectivos tipos (type).

Concatene o resultado das expressões relacionais das variáveis


intercaladas por todos os operadores relacionais disponíveis (==; >; >=;
<; <=; !=) com a string : “O resultado da expressão var01 *op* var02 é: ” e exiba
(print) na tela.
36
Expressões Lógicas
Expressões lógicas realizam uma ou mais operações lógicas. Operações lógicas
seguem as regras do cálculo proposicional

Uma proposição, nesse contexto, é uma sentença que pode ser avaliada
como verdadeira ou falsa.

Sendo assim, o resultado de uma expressão lógica, assim como nas expressões
relacionais, é um dado do tipo lógico.
37
Expressões Lógicas
[P#1] C#1 (OL) C#2

C#1 = 15 > 10 // C#2 = 2 ** 2 <= 4 ** 0.5


P#n = Proposição (n) [P#1] 15 > 10 (OL) 2 ** 2 <= 4 ** 0.5
C#n = Condição (n) [P#1] 15 > 10 (OL) 4 <= 2
OL = Operador Lógico [P#1] True (OL) False

P#1 será verdadeira ou falsa a depender


do operador lógico (OL) definido!
38
Expressões Lógicas
Para compreendermos as expressões lógicas, precisamos inicialmente entender
cada uma das principais operadores lógicos disponíveis:

Operador (símbolo) Descrição Tipo

∧•& Conjunção Binário

∨ + ǀǀ Disjunção inclusiva Binário

¬˜! Negação Unário

39
Expressões Lógicas
Conjunção (∧): uma conjunção lógica é avaliada verdadeira quando todas as
condições envolvidas na proposição também sejam avaliadas verdadeiras. A
conjunção é tipicamente chamada de E (AND) lógico.
Condição #1 Condição #2 Resultado (∧)

Verdadeira Verdadeira Verdadeira

Verdadeira Falsa Falsa

Falsa Verdadeira Falsa

Falsa Falsa Falsa

40
Expressões Lógicas
Aplicamos a conjunção lógica em vários aspectos da nossa vida cotidiana,
porém de forma bastante natural e transparente.

(Cenário) Ao voltar do almoço, passo na frente de uma sorveteria.


(Proposição) Eu devo tomar um sorvete?
(Condições) Eu tenho vontade de tomar um sorvete?
Eu tenho tempo para tomar um sorvete?
Eu tenho dinheiro para pagar o sorvete?
41
Expressões Lógicas
Eu tenho vontade de tomar um sorvete? ∧ Eu tenho tempo para tomar um
sorvete? ∧ Eu tenho dinheiro para pagar o sorvete?

Sim ∧ Sim ∧ Sim (Eu irei tomar o sorvete)

Sim ∧ Sim ∧ Não (Eu não vou tomar o sorvete)

Sim ∧ Não {∧ Sim} (Eu não irei tomar o sorvete)


42
Expressões Lógicas
Voltando ao nosso exemplo inicial:

[P#1] C#1 (OL) C#2


C#1 = 15 > 10 // C#2 = 2 ** 2 <= 4 ** 0.5
[P#1] True (OL) False

Seja (OL) uma conjunção (∧):

[P#1] True ∧ False


[P#1] False
43
Expressões Lógicas
Disjunção inclusiva (∨): uma disjunção inclusiva é avaliada verdadeira quando
alguma das condições envolvidas na proposição é avaliada como verdadeira. A
disjunção inclusiva é tipicamente chamada de OU (OR) lógico.
Condição #1 Condição #2 Resultado (∨)

Verdadeira Verdadeira Verdadeira

Verdadeira Falsa Verdadeira

Falsa Verdadeira Verdadeira

Falsa Falsa Falsa

44
Expressões Lógicas
Assim como a conjunção lógica, a disjunção inclusiva também é presente em
diferentes momentos da nossa vida.

(Cenário) Eu e um colega estamos nos preparando para uma reunião importante.


(Proposição) Eu devo vestir um traje social?
(Condições) A convocação da reunião pede traje social?
Meu colega de trabalho irá de traje social?
As pessoas que participarão da reunião usam traje social?
45
Expressões Lógicas
A convocação da reunião pede traje social? ∨ Meu colega de trabalho irá de traje
social? ∨ As pessoas que participarão da reunião usarão traje social?

Não ∨ Não ∨ Não (Eu não irei vestir traje social)

Não ∨ Sim {∨ Sim} (Eu irei vestir traje social)

Sim {∨ Sim ∨ Sim} (Eu irei vestir traje social)


46
Expressões Lógicas
Voltando ao nosso exemplo inicial:

[P#1] C#1 (OL) C#2


C#1 = 15 > 10 // C#2 = 2 ** 2 <= 4 ** 0.5
[P#1] True (OL) False

Seja (OL) uma disjunção inclusiva (∨):

[P#1] True ∨ False


[P#1] True
47
Expressões Lógicas
Negação (¬): uma negação é avaliada verdadeira quando uma condição
envolvida na proposição for falsa. A negação é tipicamente chamada NÃO (NOT)
lógico.

Condição Resultado (¬)

Verdadeira Falsa

Falsa Verdadeira

48
Expressões Lógicas

A negação lógica é bastante usada no dia a dia, estando presente em diversos


cenários recorrentes.

(Cenário) O dia está “cinza” e eu vou visitar um amigo.


(Proposição) Se não chover, irei até a sua casa.
(Condições) Choveu?

49
Expressões Lógicas

¬ Choveu?

¬ Sim (Falso, não irei até a casa do meu amigo)

¬ Não (Verdadeiro, irei até a casa do meu amigo)

50
Expressões Lógicas
Por ser um operador lógico unário, a negação não se aplica ao nosso
exemplo inicial!

Porém, podemos aplicar a negação individualmente às condições presentes


na proposição do exemplo:

¬ 15 > 10 ¬ 2 ** 2 <= 4 ** 0.5


¬ True ¬ False
False True
51
Expressões Lógicas
Em Python, a notação dos operadores lógicos e a precedência dos mesmos
são apresentadas na tabela a seguir:

Operador (símbolo) Operador (Python) Precedência

¬˜! not 1 (maior)

∧•& and 2

∨ + ǀǀ or 3

Além disso, cabe ressaltar que a associatividade é à esquerda.


52
Expressões Lógicas
Ainda, podemos utilizar parênteses para modificar a ordem natural de
processamento de uma expressão lógica:

True and True or True and False


True or False
True

(True and True or True) and False


True and False
False
53
Expressões Lógicas
Construa um algoritmo em Python que processe as seguintes expressões
lógicas e exiba (print) os seus resultados:
a) False and False or True or True
b) not True and False or True and not False
c) not not True and False or False

Em seguida, apenas adicionando parênteses às expressões, faça as


mesmas resultarem na negação do valor lógico originalmente obtido.
54
Nota de Rodapé
Além da precedência entre operadores referentes a cada categoria de expressão
estudada até então (aritmética, relacional e lógica), existe uma precedência
entre as próprias expressões:
aritmética > relacional > lógica

5 + 1 >= 3 * 2 and 10 + 4 == 14
6 >= 6 and 14 == 14
True and True
True
55
Exercício #4
Faça um algoritmo em Python que leia o raio de uma circunferência em centímetro a
partir da entrada padrão (input) — armazene o casting (float) do valor na variável r.

Calcule o diâmetro da circunferência em polegadas (1 polegada = 2,54 centímetros).

Crie as expressões relacionais e lógicas que respondam às seguintes questões e exiba


(print) o resultado das mesmas na tela:
a) O diâmetro é maior ou igual que 13 e menor ou igual que 17?
b) O diâmetro é maior que 17 e menor ou igual que 24?
c) O diâmetro é maior que 24 e menor ou igual que 30?
d) O diâmetro é menor que 13 ou maior que 30?
56
Obrigado!
Vinícius Fülber Garcia
inf.ufpr.br/vfgarcia/
viniciusfulber@ufpr.br

Você também pode gostar