Com instruções condicionais, você pode escrever um código BSL que toma decisões e repete ações. As seguintes instruções condicionais estão disponíveis no BSL:
Nota:
A instrução If...Then...Else é usada para avaliar se uma condição é True ou False e, dependendo do resultado, especificar uma ou mais instruções a serem executadas. Em geral, a condição é uma expressão que usa um operador de comparação para comparar um valor ou uma variável com outro. Para obter informações sobre operadores de comparação, consulte Operadores de Comparação. As instruções If...Then...Else podem ser aninhadas em quantos níveis forem necessários.
Execução de Instruções Quando uma Condição for Verdadeira
Para executar apenas uma instrução quando uma condição for Verdadeira, use a sintaxe de linha única para a instrução If...Then...Else. O exemplo a seguir mostra a sintaxe de linha única.
Este exemplo omite a palavra-chave Else.
Sub Test()
Dim myNumber
myNumber = 10
If myNumber < 15 Then myNumber = 15
'myNumber: 15
End Sub
Para executar mais de uma linha de código, você deve usar a sintaxe de várias linhas (ou de bloco). Essa sintaxe inclui a instrução End If, conforme mostrado no exemplo a seguir:
Sub Test()
Dim myNumber
myNumber = 10
If myNumber < 15 Then
myNumber = 15
End If
'myNumber: 15
End Sub
Execução de Determinadas Instruções Quando a Condição for Verdadeira e de Outras Quando a Condição for Falsa
Você pode usar uma instrução If...Then...Else para definir dois blocos de instruções executáveis: um bloco a ser executado se a condição for Verdadeira e outro bloco a ser executado se a condição for Falsa.
Sub Test(value)
If value = 0 Then
value = 10
Else
value = 20
End If
' Outputs: value: 10 if value was 0, otherwise 20
End Sub
Decisão Entre Várias Alternativas
Uma variação na instrução If...Then...Else permite a escolha entre várias alternativas. A adição de cláusulas ElseIf expande a funcionalidade da instrução If...Then...Else para que você possa controlar o fluxo do programa com base em diferentes possibilidades. Por exemplo:
Sub ReportValue(value)
If value = 0 Then
value = 10
ElseIf value = 1 Then
value = 20
ElseIf value = 2 Then
value = 30
Else
value = 40
End If
'value: 20
End Sub
ReportValue(1) ' Condition ElseIf value = 1 is met and value will be set to 20
Você pode adicionar quantas cláusulas ElseIf forem necessárias para fornecer outras opções. O uso extensivo de cláusulas ElseIf geralmente aumenta a complexidade do código. A melhor maneira de escolher entre várias alternativas é a instrução Select Case.
Sub NestedIf(value)
If value < 10 Then
If value < 5 Then
'value is less than 5
Else
'value is between 5 and 9
End If
Else
'value is 10 or greater
End If
End Sub
NestedIf(6) ' Triggers the logic: value is between 5 and 9
Tomada de Decisões com a Instrução Select Case
A estrutura Select Case fornece uma alternativa à instrução If...Then...ElseIf na execução seletiva de um bloco de instruções entre vários blocos de instruções. A instrução Select Case fornece recursos semelhantes aos da instrução If...Then...Else, mas torna o código mais eficiente e legível.
A estrutura Select Case funciona com uma única expressão de teste que é avaliada uma vez, na parte superior da estrutura. Em seguida, o resultado da expressão é comparado com os valores de cada Caso na estrutura. Se houver uma correspondência, o bloco de instruções associado a esse Caso será executado, como no exemplo a seguir.
Os exemplos a seguir ilustram o uso da instrução Select Case.
Exemplo 1:
Dim age
age = (30/6) * 6 ' age = 30
Select Case True
Case age < 18
'You're a minor Section
Case age >= 18 And age <= 65
'You're an adult Section
Case Else
'You're a senior citizen Section
End Select
Exemplo 2:
Dim grade
grade = "B"
Select Case grade
Case "A", "B", "C"
'Pass Section
Case "D"
'Barely Passed Section
Case "F"
'Fail Section
Case Else
'Invalid grade Section
End Select
Nota:
A estrutura Select Case avalia a expressão uma vez, na parte superior da estrutura. Por outro lado, a estrutura If...Then...ElseIf pode avaliar outra expressão para cada instrução ElseIf. Você só poderá substituir a estrutura If...Then...ElseIf pela estrutura Select Case se todas as instruções ElseIf avaliarem a mesma expressão.