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 […]