Expressões boolianas (Visual Basic)
Uma expressão Booliana é uma expressão que é avaliada como um valor do Tipo de Dados Booliano: True
ou False
. Expressões Boolean
podem tomar várias formas. A mais simples é a comparação direta do valor de uma variável Boolean
com um Boolean
literal, conforme mostrado no exemplo a seguir.
If newCustomer = True Then
' Insert code to execute if newCustomer = True.
Else
' Insert code to execute if newCustomer = False.
End If
Dois Significados do Operador =
Observe que a instrução de atribuição newCustomer = True
tem a mesma aparência da expressão no exemplo anterior, mas ela executa uma função diferente e é usada de maneira diferente. No exemplo anterior, a expressão newCustomer = True
representa um valor Booliano e o sinal =
é interpretado como um operador de comparação. Em uma instrução autônoma, o sinal =
é interpretado como um operador de atribuição e atribui o valor à direita à variável à esquerda. O exemplo a seguir ilustra essa situação.
If newCustomer = True Then
newCustomer = False
End If
Para obter mais informações, consulte Comparações de Valor e Instruções.
Operadores de comparação
Operadores de comparação, como =
, <
, >
, <>
, <=
e >=
produzem expressões Boolianas comparando a expressão no lado esquerdo do operador com a expressão no lado direito do operador e avaliando o resultado como True
ou False
. O exemplo a seguir ilustra essa situação.
42 < 81
Como 42 é menor que 81, a expressão Booliana no exemplo anterior é avaliada como True
. Para obter mais informações sobre esse tipo de expressão, consulte Comparações de Valor.
Operadores de Comparação Combinados com Operadores Lógicos
Expressões de comparação podem ser combinadas usando operadores lógicos para produzir expressões Boolianas mais complexas. O exemplo a seguir demonstra o uso de operadores de comparação em conjunto com um operador lógico.
x > y And x < 1000
No exemplo anterior, o valor da expressão geral depende dos valores das expressões em cada lado do operador And
. Se ambas as expressões forem True
, a expressão geral será avaliada como True
. Se uma das expressões for False
, a expressão inteira será avaliada como False
.
Operadores de Curto-circuito
Os operadores lógicos AndAlso
e OrElse
apresentam o comportamento conhecido como curto-circuito. Um operador de curto-circuito avalia primeiro o operando esquerdo. Se o operando esquerdo determinar o valor da expressão inteira, a execução do programa continuará sem avaliar a expressão direita. O exemplo a seguir ilustra essa situação.
If 45 < 12 AndAlso testFunction(3) = 81 Then
' Add code to continue execution.
End If
No exemplo anterior, o operador avalia a expressão à esquerda, 45 < 12
. Como a expressão à esquerda é avaliada como False
, toda a expressão lógica precisa ser avaliada como False
. Assim, a execução do programa ignora a execução do código dentro do bloco If
sem avaliar a expressão direita, testFunction(3)
. Este exemplo não chama testFunction()
, porque a expressão esquerda falsifica toda a expressão.
Da mesma forma, se a expressão esquerda em uma expressão lógica usando OrElse
é avaliada como True
, a execução prossegue para a próxima linha de código sem avaliar a expressão direita, pois a expressão esquerda já validou toda a expressão.
Comparação com Operadores que não de Curto-circuito
Por outro lado, ambos os lados do operador lógico são avaliados quando os operadores lógicos And
e Or
são usados. O exemplo a seguir ilustra essa situação.
If 45 < 12 And testFunction(3) = 81 Then
' Add code to continue execution.
End If
O exemplo anterior chama testFunction()
mesmo que a expressão esquerda seja avaliada como False
.
Expressões Entre Parênteses
Você pode usar parênteses para controlar a ordem de avaliação de expressões Boolianas. As expressões entre parênteses são avaliadas primeiro. Para vários níveis de aninhamento, a precedência é concedida às expressões mais profundamente aninhadas. Dentro dos parênteses, a avaliação prossegue de acordo com as regras de precedência do operador. Para obter mais informações, consulte Precedência do Operador no Visual Basic.