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;
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 | |
true ou false |
| != | Diferente | |
true ou false |
| > | Maior | |
true ou false |
| < | Menor | |
true ou false |
| >= | Maior ou igual | |
true ou false |
| <= | Menor ou igual | |
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
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)
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.
GO TO FULL VERSION