Acerca de las instrucciones condicionales de iLogic

iLogic proporciona instrucciones condicionales que se pueden utilizar en el cuadro de diálogo Editar regla.

Las instrucciones se colocan en las reglas (pequeños programas de Visual Basic) definidas para su modelo. Las instrucciones condicionales, como If-Then-Else, permiten que las reglas realicen acciones en función de unos criterios determinados.

Instrucción If-Then-Else de iLogic

En la instrucción If-Then-Else, se ejecuta un conjunto de acciones si la condición es verdadera, y otro distinto si la condición es falsa.

Tras ejecutarse las instrucciones de verdadero o falso, el control de programa continúa con la siguiente instrucción.

En iLogic, se puede utilizar el modo de bloque o línea múltiple para implementar la estructura If-Then-Else.

Por ejemplo:

If size = “small” Then
length = 6.0
Else
length = 12
End If

Si la expresión condicional es verdadera, se ejecutan las instrucciones entre las palabras clave Then y Else. Las instrucciones entre las palabras clave Else y End if se ignoran. Si la expresión condicional es falsa, se ejecutan las instrucciones entre las palabras clave Else y End if. Las instrucciones entre las palabras clave Then y Else se ignoran. En todos los casos, el control del programa continúa con la instrucción que sigue a End if.

Instrucción If-Then de iLogic

En una instrucción If-Then-Else, la acción se lleva a cabo independientemente de si la condición es verdadera o falsa. Sin embargo, en algunos casos puede realizar una acción o conjunto de acciones solo si la condición es verdadera, y no realizar ninguna si la condición es falsa.

Puede omitir la parte Else de la estructura de bloque If. Por ejemplo:

If size = “small” Then
length = 6.0
End If

Conjuntos de acciones null o empty de iLogic

También puede utilizar los conjuntos de acciones null o empty en el modo de bloque de la instrucción If. Por ejemplo, puede establecer: "si una condición es verdadera, no hacer nada; de lo contrario, hacer algo", como en el siguiente bloque:

If length  > 20 Then
Else MessageBox.Show(" Invalid Size.Length must be at least 20 in. ", "Title")
End If

Al utilizar un conjunto vacío de acciones, se puede mejorar la legibilidad incluyendo un comentario en el lugar donde las instrucciones true suelen ir:

If length  > 20 Then ’do nothing
Else MessageBox.Show(" Invalid Size.Length must be at least 20 in ", "Title")
End If

Uso de la instrucción If como instrucción de línea única

Aunque el modo de bloque de la instrucción If mejora la legibilidad, también puede escribir la instrucción If como línea única. En este formato, la instrucción End if no se utiliza.

Estos son algunos ejemplos:

If length < 20 Then MessageBox.Show("Length is Too Short", "Title")
If mass < 1000 Then length =20 Else length =40

Uso de variables booleanas en expresiones condicionales

Una variable booleana, que puede contener el valor True o False, puede ser utilizada siempre que sea posible una expresión relacional.

Por ejemplo, las dos instrucciones que aparecen a continuación son equivalentes:

If Feature.IsActive("Fillet1") = true Then . . .
If Feature.IsActive("Fillet1") Then . . .

En la segunda instrucción, el valor True está implícito.

De forma similar, las dos instrucciones que aparecen a continuación se pueden utilizar indistintamente para comprobar si una variable booleana es falsa:

If Feature.IsActive("Fillet1") = false Then . . .
If Not Feature.IsActive("Fillet1") Then . . .

Estos ejemplos muestran el resultado de una función. Otros ejemplos son el uso de un nombre de parámetro como variable booleana o el uso de una variable local para contener un valor booleano.

Estructura case en instrucciones condicionales de iLogic

La estructura case permite elegir entre más de dos alternativas.

La estructura case se puede implementar mediante una estructura If de bloque expandido o mediante la estructura de instrucción Select case.

Instrucción If de bloque expandido (If-Then-ElseIf) de iLogic

La instrucción If de bloque expandido utiliza una o más cláusulas ElseIf, anidadas entre la primera cláusula If y la última cláusula Else. La palabra clave ElseIf es una sola palabra.

Por ejemplo:

If material = "Steel" Then
density = 0.284
ElseIf material = "Copper" Then
density = 0.323
ElseIf material = "Aluminum" Then
density = 0.098
End If

En este formato, el programa ejecuta las instrucciones asociadas a la primera expresión condicional verdadera que encuentra. A continuación, el programa continúa con la instrucción que sigue a End If. Utilice la última instrucción Else para detectar los errores que se producen cuando se encuentran condiciones inesperadas que no coinciden con las condiciones If o ElseIf anteriores.

Al usar ElseIf se pierde la necesidad de codificar varias instrucciones End if en una estructura anidada If. Con el fin de establecer una comparación, el ejemplo anterior también se puede escribir como:

If material = "Steel" Then
density = 0.284
Else
If material = "Copper" Then
density = 0.323
Else
If material = "Aluminum" Then
density = 0.098
End If
End If
End If

Instrucción Select Case de iLogic

Select Case es una potente instrucción con varias opciones.

Por ejemplo:

Select Case material
Case “Steel”
density =0.284
Case “ Copper”
density = 0.323
Case “Aluminum”
density = 0.098
Case Else
density = 0
MessageBox.Show("not a valid material" , "Warning")
End Select

En este formato, la instrucción Select Case especifica una expresión para probarla. Cada cláusula Case posterior especifica una o varias expresiones para compararla con la expresión de prueba. Se ejecutan las acciones asociadas a la primera cláusula Case que contenga una expresión que coincida con la expresión de prueba. A continuación, el control del programa se ramifica hacia la instrucción que sigue a la instrucción End Select. La última cláusula Case Else detecta los errores que se producen cuando un valor inesperado de la expresión de prueba no coincide con la lista de expresiones de ninguna de las cláusulas Case anteriores.

La expresión de prueba que sigue a Select Case puede ser una expresión más compleja, como:

Select Case radius +1
Select Case  MinOfMany(x,y,z)

La lista de expresiones de una cláusula Case puede seguir cualquiera de los siguientes formatos:

Formato Ejemplos
<expresión>[,expresión,...] Case 1, 10, 100

Case "Y", "y"

<expresión> A <expresión> Case 1 A 9

Case “A” To “C”

Es<expresión del operador relacional> Case Is >= 21
(una combinación de cualquiera de las anteriores) Case Is <= 5, 20 To 29, 43

Por ejemplo:

Select Case width
Case 1,2,3,4,5
MessageBox.Show("Small Plate", "Size")
Case 6 to 15
MessageBox.Show("Medium Plate", "Size") 
Case Is > 15
MessageBox.Show("Large Plate", "Size")
End Select

La instrucción Select Case no requiere la asociación con una variable o expresión concreta. Se puede utilizar para evaluar cualquier número de condiciones, utilizando el siguiente formato:

Select Case True
Case length >= 10
width = length -1
thickness = length/5
Case length < 10
width = length - .75
thickness = length/6
End Select