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