Control de la ejecución del programa

Mediante el uso de sentencias condicionales, puede escribir código BSL que tome decisiones y repita acciones. Las siguientes sentencias condicionales están disponibles en BSL:

  • Sentencia If...Then...Else
  • Sentencia Select Case

Nota:

La sentencia If...Then...Else se utiliza para evaluar si una condición es True o False y, según el resultado, para especificar una o más sentencias para su ejecución. Normalmente, la condición es una expresión que utiliza un operador de comparación para comparar un valor o variable con otro. Para obtener más información sobre los operadores de comparación, consulte Operadores de comparación. Las sentencias If...Then...Else se pueden anidar en tantos niveles como sea necesario.

Ejecución de sentencias si una condición es True

Para ejecutar solo una sentencia cuando una condición es True, utilice la sintaxis de una sola línea para la sentencia If...Then...Else. En el siguiente ejemplo se muestra la sintaxis de una sola línea.

En este ejemplo, se omite la palabra clave Else.

Sub Test()
    Dim myNumber
    myNumber = 10
    If myNumber < 15 Then myNumber = 15
    'myNumber: 15
End Sub

Para ejecutar más de una línea de código, debe utilizar la sintaxis de varias líneas (o de bloque). Esta sintaxis incluye la sentencia End If, como se muestra en el siguiente ejemplo:

Sub Test()
    Dim myNumber
    myNumber = 10
    If myNumber < 15 Then 
        myNumber = 15
    End If
    'myNumber: 15
End Sub

Ejecución de determinadas sentencias si una condición es True y ejecución de otras si una condición es False

Puede utilizar una sentencia If...Then...Else para definir dos bloques de sentencias ejecutables: un bloque que se ejecuta si la condición es True y otro bloque que se ejecuta si la condición es False.

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

Decisión entre varias alternativas

Una variación de la sentencia If...Then...Else permite elegir entre varias alternativas. La adición de cláusulas ElseIf amplía la funcionalidad de la sentencia If...Then...Else para que pueda controlar el flujo de programa en función de diferentes posibilidades. Por ejemplo:

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

Puede agregar tantas cláusulas ElseIf como necesite para proporcionar opciones alternativas. El uso extensivo de las cláusulas ElseIf suele ser engorroso. Una mejor manera de elegir entre varias alternativas es la sentencia 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

Toma de decisiones con Select Case

La estructura Select Case proporciona una alternativa a If...Then...ElseIf para ejecutar de forma selectiva un bloque de sentencias de entre varios bloques de sentencias. Una sentencia Select Case es similar a la sentencia If...Then...Else, pero hace que el código sea más eficiente y legible.

Una estructura Select Case funciona con una única expresión de prueba que se evalúa una vez, en la parte superior de la estructura. El resultado de la expresión se compara con los valores de cada elemento Case de la estructura. Si hay una coincidencia, se ejecuta el bloque de sentencias asociado a ese elemento Case, como en el siguiente ejemplo.

En los siguientes ejemplos se muestra el uso de Select Case:

Ejemplo 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

Ejemplo 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:

La estructura Select Case evalúa una expresión una vez en la parte superior de la estructura. Por el contrario, la estructura If...Then...ElseIf puede evaluar una expresión diferente para cada sentencia ElseIf. Puede reemplazar una estructura If...Then...ElseIf por una estructura Select Case solo si cada sentencia ElseIf evalúa la misma expresión.