Controle da Execução do Programa

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:

  • Instrução If...Then...Else
  • Instrução Select Case

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.