La sintaxis de la estructura condicional Case of...Else...End case es la siguiente:
Case of
:(Expresion_Booleana)
instrucción(es)
:(Expresion_Booleana)
instrucción(es)
.
.
.
:(Expresion_Booleana)
instrucción(es)
Else
instrucción(es)
End case
Observe que la parte Else es opcional; puede escribir:
Case of
:(Expresion_Booleana)
instrucción(es)
:(Expresion_Booleana)
instrucción(es)
.
.
.
:(Expresion_Booleana)
instrucción(es)
End case
Como en la estructura If...Else...End if, la estructura Case of...Else...End case también le permite a su método elegir entre acciones alternativas. A diferencia de la estructura If...Else...End if, la estructura Case of...Else...End case puede probar un número ilimitado de expresiones booleanas y ejecutar la secuencia de instrucción correspondiente al valor TRUE.
Cada expresión booleana comienza con dos puntos (:). Esta combinación de dos puntos y una expresión booleana se llama caso. Por ejemplo, la siguiente línea es un caso:
:(bValidar=1)
Sólo las instrucciones después del primer caso TRUE (y hasta el siguiente caso) serán ejecutadas. Si ninguno de los casos es TRUE, ninguna de las instrucciones se ejecutará (si no está incluida la parte Else).
Puede incluir una instrucción Else después del último caso. Si todos los casos son FALSE, las instrucciones después de Else serán ejecutadas.
Este ejemplo prueba una variable numérica y muestra una caja de diálogo de alerta con una palabra en ella:
Case of
:(vResult=1)
ALERT("Uno.")
:(vResult=2)
ALERT("Dos.")
:(vResult=3)
ALERT("Tres.")
Else
ALERT("No es ni uno, ni dos, ni tres.")
End case
Para comparar, esta es la versión con If...Else...End if del mismo método:
If(vResult=1)
ALERT("Uno.")
Else
If(vResult=2)
ALERT("Dos.")
Else
If(vResult=3)
ALERT("Tres.")
Else
ALERT("No es ni uno, ni dos, ni tres.")
End if
End if
End if
Recuerde que con una estructura Case of...Else...End case, sólo el primer caso TRUE se ejecuta. Incluso si dos o mas casos son TRUE, sólo las instrucciones después del primer caso TRUE se ejecutarán.
Por lo tanto, cuando quiera implementar pruebas jerárquicas, debe asegurarse de que las instrucciones de condición que están más abajo en el esquema jerárquico aparezcan primero en la secuencia de prueba. Por ejemplo, la prueba de la presencia de la condicion1 cubre la prueba de la presencia de la condicion1&condicion2 y por lo tanto debe estar ubicada al final en la secuencia de prueba. Por ejemplo, el siguiente código nunca verá su última condición detectada:
Case of
:(vResult=1)
...
:((vResult=1) & (vCondicion#2))
...
End case
.
En el código anterior, la presencia de la segunda condición no se detecta ya que la prueba "vResult=1" desvía el código anter de realizar más pruebas. Para que el código funcione correctamente, puede escribirlo de la siguiente manera:
Case of
:((vResult=1) & (vCondicion#2))
...
:(vResult=1)
...
End case
.
Igualmente, si quiere implementar pruebas jerárquicas, podría considerar utilizar código jerárquico.
Consejo: la bifurcación puede realizarse sin instrucciones a ejecutar en un caso u otro. Cuando desarrolla un algoritmo o una aplicación especializada, nada evita que escriba:
Case of
:(Expresion_Booleana)
:(Expresion_Booleana)
.
.
.
:(Expresion_Booleana)
instrucción(es)
Else
instrucción(es)
End case
o:
Case of
:(Expresion_Booleana)
:(Expresion_Booleana)
instrucción(es)
.
.
.
:(Expresion_Booleana)
instrucción(es)
Else
End case
o:
Case of
Else
instrucción(es)
End case