Operadores lógicos em C#, VB.NET
Olá pessoa.
Hoje vou falar de operadores lógicos em 2 linguagens diferentes.
Vou utilizar C# e VB.NET que são 2 linguagens que compartilham os mesmos operadores lógicos com muitas outras linguagens, além disso, as operações lógicas se aplicam de forma igual a qualquer linguagem de programação.
E o que são as operações lógicas?
Operações lógicas são testes que fazemos no nosso código, estes testes devem atender certas condições para ser validados como verdadeiro ou falso de forma a executar as operações seguintes de acordo com esse teste, vamos a um exemplo na vida real e faremos após em código.
Vamos supor que você tenta acender uma lâmpada e ao apertar o interruptor, a mesma não acende! Existem alguns testes lógicos que podemos fazer para descobrir porque ela não acende:

No exemplo acima, verificamos se a lâmpada acende ou não ao apertar o interruptor, se ela acende está tudo OK, se não acende, verificamos se a mesma está corretamente fixada no soquete, se não está, fixamos a lâmpada corretamente e reiniciamos o teste, se ela está corretamente fixada, então a substituímos e reiniciamos o teste.
Com essa idéia em mente podemos montar nossos testes lógicos. Vamos ver no código:
if (lampada == acende)
{
mensagem = "OK";
}
else
{
if (lampada == fixada)
{
mensagem = "Substituir lâmpada";
}
else
{
mensagem = "Fixá-la corretamente";
}
}
O exemplo acima é simples e em C#, a lógica é igual para VB.NET, porém, os operadores são diferentes:
if lampada = acende then
mensagem = "OK"
elseif lampada = fixada then
mensagem = "Substituir lâmpada"
else
mensagem = "Fixá-la corretamente"
end if
Reparem que em C# o operador para igualdade é “==”, enquanto que em VB.NET o operador de igualdade é “=”.
Vocês devem ter notado que os operadores lógicos usados na condições acima são bem didáticos, então vamos a listinha de operadores utilizados nas duas linguagens:
C# "==" Operador de igualdade, para testar se 2 elementos são iguais "!=" Operador de desigualdade, para testar se 2 elementos são diferentes "<" Menor que, usado para testar se o elemento a esquerda é menor que o elemento da direita ">" Maio que, usado para testar se o elemento da esquerda é maior que o elemento da direita "&&" É o operador "and", ele soma duas operações lógicas "|" É o operador "or" e alterna duas operações lógicas VB.NET "=" Operador de igualdade, para testar se 2 elementos são iguais "<>" Operador de desigualdade, para testar se 2 elementos são diferentes "<" Menor que, usado para testar se o elemento a esquerda é menor que o elemento da direita ">" Maio que, usado para testar se o elemento da esquerda é maior que o elemento da direita "and" É o operador "and", ele soma duas operações lógicas "or" É o operador "or" e alterna duas operações lógicas
No exemplo da lampada utilizamos somente o operador “==”/”=”, que é o operador de igualdade, ele testa se dois valores são iguais. Vamos a outro exemplo:
C#
if (idade == 18)
{
mensagem = "A idade é igual a 18 anos";
}
else
{
mensagem = "A idade é diferente de 18 anos";
}
VB.NET
if idade = 18 then
mensagem = "A idade é igual a 18 anos"
else
mensagem = "A idade é diferente de 18 anos"
end if
Agora vamos ao mesmo exemplo com o operador de desigualdade, o operador “diferente”, “!=”/”<>”.
C#
if (idade != 18)
{
mensagem = "A idade é diferente de 18 anos";
}
else
{
mensagem = "A idade é igual a 18 anos";
}
VB.NET
if idade <> 18 then
mensagem = "A idade é diferente de 18 anos"
else
mensagem = "A idade é igual a 18 anos"
end if
Reparem que a mensagem resultante fica invertida no “IF”, pois ao invés de testar se as idades são iguais, testamos quando as idades são diferentes.
E se quisermos fazer um teste só para maiores de 18 anos? Fazemos assim:
C#
if (idade > 18)
{
mensagem = "A idade é maior que 18 anos";
}
else
{
mensagem = "A idade é menor ou igual a 18 anos";
}
VB.NET
if idade > 18 then
mensagem = "A idade é maior que 18 anos"
else
mensagem = "A idade é menor ou igual a 18 anos"
end if
Reparem que a mensagem diz que a idade é “maior que 18 anos” e “menor ou igual a 18 anos” pois o operador sózinho testa se “idade” é maior que 18, mas e se quisermos que a idade 18 anos seja válida na operação? Usamos o operador de maior “>” junto com o operador de igualdade “=”, dessa forma:
C#
if (idade >= 18)
{
mensagem = "A idade é maior ou igual a 18 anos";
}
else
{
mensagem = "A idade é menor que 18 anos";
}
VB.NET
if idade >= 18 then
mensagem = "A idade é maior ou igual a 18 anos"
else
mensagem = "A idade é menor que 18 anos"
end if
Assim temos uma operação onde a idade é maior que 18 anos mas que também permite 18 anos e que não permite idades menores que 18 anos, ou seja, dos 17 anos para baixo.
O operador “<” e “<=” funciona da mesma forma mas validando que o valor a esquerda seja menor que o valor da direita.
Agora temos os operadores “&&”/”and” e “|”/”or”, que somam ou alternam entre condições. Por exemplo, se alem de validar a idade, quisermos validar o sexo, como em um software de alistamento militar, onde somente homens com 18 ou mais anos de idade podem se alistar, nosso código ficaria assim:
C#
if (idade >= 18 && sexo == "masculino")
{
mensagem = "A pessoa é homem com 18 ou mais anos";
}
else
{
mensagem = "A pessoa é mulher ou possui menos do que 18 anos, ou os dois";
}
VB.NET
if idade >= 18 and sexo = "masculino" then
mensagem = "A pessoa é homem com 18 ou mais anos"
else
mensagem = "A pessoa é mulher ou possui menos do que 18 anos, ou os dois"
end if
O operador “e”, representado por “&&”/”and”, faz a comparação de 18 anos e sexo masculino, validando as duas juntas, caso uma seja inválida, o teste falha, mas não sabemos se falhou porque a pessoa possui menos de 18 anos ou por ser do sexo feminino, assim, dentro do bloco de código da condição de falha, devemos fazer mais alguns testes:
C#
if (idade >= 18 && sexo == "masculino")
{
mensagem = "A pessoa é homem com 18 ou mais anos";
}
else
{
if (idade < 18 && sexo == "feminino")
{
mensagem = "A pessoa é mulher ou possui menos do que 18 anos, ou os dois";
}
else
{
if (idade < 18)
{
mensagem = "A pessoa possui menos de 18 anos";
}
else
{
mensagem = "A pessoa é do sexo feminino";
}
}
}
VB.NET
if idade >= 18 and sexo = "masculino" then
mensagem = "A pessoa é homem com 18 ou mais anos"
else
if idade < 18 and sexo = "feminino" then
mensagem = "A pessoa é mulher ou possui menos do que 18 anos, ou os dois"
else if idade < 18 then
mensagem = "A pessoa possui menos de 18 anos"
else
mensagem = "A pessoa é do sexo feminino"
end if
end if
Vimos que além de testar idade e sexo, testamos quando as regras não são atendidas, qual regra falhou.
Agora vamos ao operador “ou”, “|”/”or”, este operador alterna entre as condições, permitindo uma ou outra, no caso do exemplo acima, se utilizarmos o “ou” ao invés de “e”, permitiremos que seja validado quando a pessoa for maior de 18 anos ou quando for do sexo feminino, e somente serão rejeitados quando a pessoa for menor de 18 anos e do sexo feminino, como segue:
C#
if (idade >= 18 | sexo == "masculino")
{
mensagem = "A pessoa é homem ou possui 18 ou mais anos";
}
else
{
mensagem = "A pessoa é mulher e possui menos do que 18 anos";
}
VB.NET
if idade >= 18 or sexo = "masculino" then
mensagem = "A pessoa é homem ou possui 18 ou mais anos"
else
mensagem = "A pessoa é mulher e possui menos do que 18 anos"
end if
No caso acima, estamos permitindo tanto homens quanto pessoas com 18 anos ou mais e rejeitando somente quando for mulher e possuir menos de 18 anos.
Bom, esse é o básico de operadores condicionais, ainda existem muitas outras regras e operadores, que abordarei em outro momento, por enquanto estes 6 operadores já vão ajudar vocês na grande maioria das vezes, pois os “IFs” e “ELSEs” nos acompanham por toda vida!
Logo mais escreverei um post explicando como utilizar estes operadores em laços de repetição e seleções.
Dúvidas, comentei aqui embaixo.
Abraços.


[…] Operadores lógicos em C#, VB.NET […]