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