4D v16.3

Case of...Else...End case

Inicio

 
4D v16.3
Case of...Else...End case

Case of...Else...End case  


 

 

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.

Ejemplo  

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) ` Prueba si el número es 1
       ALERT("Uno.") ` Si es 1, muestra una alerta
    :(vResult=2) ` Prueba si el número es 2
       ALERT("Dos.") ` Si es 2, muestra una alerta
    :(vResult=3) ` Prueba si el número es 3
       ALERT("Tres.") ` Si es 3, muestra una alerta
    Else ` Si no es 1, 2, o 3, muestra una alerta
       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) ` Prueba si el número es 1
    ALERT("Uno.") ` Si es 1, muestra una alerta
 Else
    If(vResult=2) ` Prueba si el número es 2
       ALERT("Dos.") ` Si es 2, muestra una alerta
    Else
       If(vResult=3) ` Prueba si el número es 3
          ALERT("Tres.") ` Si es 3, muestra una alerta
       Else ` Si no es 1, 2, o 3, muestra una alerta
          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)
       ... `instrucción(es)
    :((vResult=1) & (vCondicion#2)) `este caso nunca será detectado
       ... `instrucción(es)
 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)) `este caso será detectado primero
       ... `instrucción(es)
    :(vResult=1)
       ... `instrucción(es)
 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



Ver también 

Condiciones y bucles
For...End for
If...Else...End if
Repeat...Until
While...End while

 
PROPIEDADES 

Producto: 4D
Tema: Presentación del lenguaje

 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)