Aula 08: Lógica Booleana (2/2) | Lógica de Programação (c/ Python)
Os operadores lógicos nos permitem combinar diferentes comparações dentro de uma mesma condição. Vimos dois deles: o and e o or.
| Operador | Como funciona |
|---|---|
| and (E lógico) | Retorna true se ambas as condições forem verdadeiras. |
| or (OU lógico) | Retorna true se pelo menos uma das condições for verdadeira. |
Entretanto, existe um terceiro operador lógico que funciona um pouco diferente dos demais: o not.
O not é o operador lógico de negação. Na prática, significa que ele inverte os valores booleanos, ou seja:
not True #False
not False #True
Mas em que cenário seria utilizar este operador?
Se pensarmos em uma analogia, o not é como se fosse interruptor que inverte a luz: se está aceso (True), apaga (False); se está apagado, acende. Ele é útil sempre que quisermos testar se algo não aconteceu, não está presente ou não é verdadeiro.
Vamos aplicar esta ideia em um programa que controla o acesso a uma sala de estudos. para acessar esta sala, é necessário: ter uma carteirinha, estar no horário e não ter sido banido. Vamos representar isso em variáveis:
tem_carteirinha = True
esta_em_horario = False
foi_banido = False
Podemos usar os operadores lógicos para montar a condição que verifica estes itens:
tem_carteirinha = True
esta_em_horario = False
foi_banido = False
if (tem_carteirinha and esta_em_horario) and not foi_banido:
print("Acesso liberado à sala de estudos.")
else:
print("Acesso negado.")
Note que semanticamente, falar que ele não pode ter sido banido fica muito bem representado com a verificação not foi_banido.
Este é o segredo do uso do not!
Para dar outro exemplo, vamos recuperar o código da aula anterior:
idade = int(input("Idade: "))
altura = float(input("Altura: "))
if idade >= 14 and altura >= 1.60:
print("Entrada liberada.")
else:
print("Entrada proibida.")
Podemos melhorar este código dando semântica para as comparações:
idade = int(input("Idade: "))
altura = float(input("Altura: "))
requisitos_atendidos = idade >= 14 and altura >= 1.60
if requisitos_atendidos == True:
print("Entrada liberada.")
else:
print("Entrada proibida.")
Dentro do if uma comparação com valor Booleano é redundante, podemos simplesmente tirar:
idade = int(input("Idade: "))
altura = float(input("Altura: "))
requisitos_atendidos = idade >= 14 and altura >= 1.60
if requisitos_atendidos:
print("Entrada liberada.")
else:
print("Entrada proibida.")
Agora podemos mudar um pouco a lógica deste código usando o operador not:
idade = int(input("Idade: "))
altura = float(input("Altura: "))
requisitos_atendidos = idade >= 14 and altura >= 1.60
if not requisitos_atendidos:
print("Entrada proibida.")
else:
print("Entrada liberada.")
Em resumo:
| Operador | Como funciona |
|---|---|
| and (E lógico) | Retorna true se ambas as condições forem verdadeiras. |
| or (OU lógico) | Retorna true se pelo menos uma das condições for verdadeira. |
| not (NÃO lógico) | Inverte o valor lógico de uma expressão. |