CodeGym /Cursos /C# SELF /Tipo lógico bool e operações lógicas

Tipo lógico bool e operações lógicas

C# SELF
Nível 3 , Lição 3
Disponível

1. Tipo de dado lógico: bool

Como já vimos, no C# tem um operador bem útil — if-else. Ele executa um bloco de comandos se a condição entre parênteses for verdadeira, e outro bloco se for falsa.

Pra facilitar a vida com expressões que podem ser verdadeiras ou falsas, no C# criaram um tipo especial — bool. O lance principal dele é que variáveis desse tipo só podem ter dois valores: true (verdadeiro) e false (falso).

Não dá pra colocar nenhum outro valor numa variável do tipo bool. O compilador não deixa.

Exemplos de variáveis do tipo bool:

bool isAdult = true;
bool hasMoney = false;
Exemplo de declaração de variáveis do tipo bool

Uma variável do tipo bool só tem dois valores — true (verdadeiro) e false (falso). Só isso! Tipo teste automatizado: ou "passou", ou "quebrou" (ops).

2. Operações de comparação

E pra que serve um tipo tão simples? O poder do bool aparece quando a gente monta expressões lógicas. Normalmente elas aparecem usando operadores de comparação.

Operador Significado Exemplo Valor
== Igual
a == b
true ou false
!= Diferente
a != b
true ou false
> Maior
a > b
true ou false
< Menor
a < b
true ou false
>= Maior ou igual
a >= b
true ou false
<= Menor ou igual
a <= b
true ou false

Exemplo:

int age = 20;
bool isAdult = age >= 18;   // true (20 maior ou igual a 18)
bool isTeenager = age >= 13 && age < 18; // false (20 não é menor que 18)
bool isEven = age % 2 == 0; // true (20 é divisível por 2)

isAdult aqui vai ser true, porque 20 – é idade de "adulto" mesmo.

Detalhe importante 1:

Operadores que têm dois símbolos não podem ser separados.


a < = 10
speed > = max
age = = 18
time ! = 0
Não pode escrever assim! Operadores de comparação têm que ser juntos: <=, >=, ==, !=

Detalhe importante 2:

Repara que não existem operadores => e =<: só tem <= e >=. Se tu escrever a =< 3, teu código nem compila.

Detalhe importante 3:

No C# tu não pode escrever uma expressão tipo 18 < age < 65. Porque 18 < age vai dar true ou false. E comparar true < 65 (tipos diferentes) não rola. Pelo menos, não no C#.

3. Operações lógicas

No C# não dá pra escrever 18 < age < 65 — isso é sintaticamente errado e o programa nem compila.

Mas dá pra escrever assim:


(18 < age) E (age < 65)
Expressão lógica com duas condições (em russo)

Claro, no lugar da palavra E vai outro operador lógico, e é disso que vamos falar agora.

No C# tem três operadores lógicos: AND (e), OR (ou) e NOT (não).

Notícia boa: usando parênteses, tu pode montar expressões lógicas do jeito que quiser.
Notícia ruim: os devs do C# decidiram usar os símbolos do C++ no lugar das palavras and, or e not.

Operador lógico Esperado Realidade
E (∧) and &&
OU (∨) or ||
NÃO (¬) not !

Aqui vão uns exemplos de operadores lógicos no C#:

Expressão Tradução Explicação
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) E (a < 100)
(!a) && (!b) (not a) and (not b) (NÃO a) E (NÃO b)
!(!a || !b) not((not a) or (not b)) NÃO((NÃO a) OU (NÃO b))

4. Tabelas verdade

Rapidinho sobre operações lógicas.

Operador AND

O operador AND, também chamado de E, &&, conjunção, multiplicação lógica.

Expressão Resultado
true && true true
true && false false
false && true false
false && false false

Ou seja, o resultado da expressão é true (verdadeiro) só se os dois valores forem true (verdadeiro). Qualquer outro caso é false (falso).

Operador OR

O operador OR, também chamado de OU, ||, disjunção, soma lógica.

Expressão Resultado
true || true true
true || false true
false || true true
false || false false

Ou seja, o resultado da expressão é true (verdadeiro) sempre que pelo menos um valor for true (verdadeiro). Só dá false se os dois forem false.

Operador NOT

O operador NOT, também chamado de NÃO, !, inversão.

Expressão Resultado
! true false
! false true

Troca true por false e vice-versa.

Expressões úteis:

Expressão Resultado
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b

5. Exemplos de operações lógicas: and, or, not

Operação "E", AND, é &&

O resultado é verdadeiro só quando as duas variáveis são verdadeiras.

int age = 16;
bool hasTicket = true;
bool canAttend = age >= 14 && hasTicket; // true (16 maior que 14 E tem ingresso)

Se tu tem 14 E tem ingresso — pode entrar!

Operação "OU", OR, é (||)

O resultado é verdadeiro se pelo menos uma condição for verdadeira.

bool isAdmin = false;
bool isModerator = true;
bool canEdit = isAdmin || isModerator; // true (pode editar se qualquer um for true)

Se tu é admin OU moderador — pode apertar os botões!

Operação "NÃO", NOT, é (!)

O inversor troca verdadeiro por falso e vice-versa.

bool isWeekend = false;
bool shouldGoToWork = !isWeekend; // true (se não é fim de semana, trabalha)

Se NÃO é fim de semana — bora levantar!

Combinando: monte condições do jeito que quiser

Dá pra combinar quantas operações lógicas quiser (só não exagera pra não virar aquele "se ele não NÃO não NÃO não é admin..."). Pode (e deve!) usar parênteses pra deixar claro.

Exemplo:

int age = 17;
bool hasTicket = false;
bool isVip = true;

bool canGo = (age >= 18 && hasTicket) || isVip; // true, porque isVip = true

Nesse exemplo a lógica é: se a pessoa for maior de idade e tiver ingresso, ou se for VIP — entra. Se não for VIP — só entra se for adulto e tiver ingresso.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION