Publicidade

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.

 

One Comment

Deixe um comentário

O seu endereço de e-mail não será publicado.