Case of...Else...End case

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 6.0


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.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente