Árvore de páginas

Sintaxis

 

IF <condición>

          ...

          < instrucciones >

          ...

[ ELSEIF <condición> ]

          ...

          < instrucciones >

          ...

[ ELSEIF <condición> ]

          ...

          < instrucciones >

          ...

[ ELSE ]

          ...

          < instrucciones >

          ...

ENDIF

 

 

Propósito

 

El comando IF ... ELSEIF ... El ENDIF es un comando de programación estructurada que selecciona una alternativa entre un conjunto de caminos para el curso del flujo de ejecución del programa. El camino seleccionado es el primero en el cual la condición especificada se evalúa como verdadera.

 

 

Argumentos

 

<condición>

 

Define una expresión lógica de control. Si se evalúa como verdadera (.T.), todas las instrucciones entre esta y el próximo ELSEIF, ELSE o ENDIF se ejecutarán.

 

ELSEIF

 

Identifica el bloque de instrucciones que se ejecutará si la condición asociada se evalúa como verdadera y las condiciones de los comandos IF o ELSEIF precedentes se evaluaron como falsas.

 

No hay limite de condiciones (ELSEIF) dentro de una estructura de control IF ... ELSEIF ... ENDIF.

 

ELSE

 

Identifica el bloque de instrucciones que se ejecutará si ninguna de las condiciones asociadas a los comandos IF o ELSEIF precedentes se evalúa como verdadera. En este caso, se ejecutarán las instrucciones que estén entre el ELSE y el ENDIF.

 

 

Utilización

 

Es obligatoria al existencia del ENDIF (final del IF) al final de la estructura del comando IF ... ELSEIF ... ENDIF.

 

La cláusula ELSE especifica el bloque de instrucciones alternativo que se ejecutará si ninguna condición expresada en los comandos ELSEIF se haya evaluado como verdadera. Si todos los comandos ELSEIF fueran falsos y exista el ELSE, se ejecutarán las instrucciones que estén entre el ELSE y el ENDIF. En caso contrario, el flujo de ejecución se desviará a la primera línea después del ENDIF.

 

Comandos IF ... ELSEIF ... ENDIF intercalados, es decir, unos dentro de los otros, se permiten, siempre y cuando estén intercalados correctamente. Al incluirse pares de otras estructuras de comandos, como DO CASE ... ENDCASE, IF ... ENDIF, WHILE ... ENDDO y FOR ... NEXT, dentro de un IF ... ELSEIF .. ENDIF principal, estas deben iniciarse y finalizarse dentro de la estructura IF ... ELSEIF ... El ENDIF donde se encuentren contenidas.

 

No hay límite con respecto al número de estructuras de comandos que pueden intercalarse. Sin embargo, se sugiere que la profundidad al intercalar no sea exagerada. Un buen número es tener, como máximo, 5 niveles.

 

Tampoco hay límite para el número de ELSEIF que puede existir dentro de una estructura IF ... ELSEIF ... ENDIF.

 

 

Sugerencias

 

La cláusula ELSEIF <condición> define una declaración condicional que se evaluará como falsa o verdadera. Esta condición debe ser una expresión lógica, tal como en los siguientes ejemplos:

 

  • A == B
  • nVar1 < 11
  • nVop == 1
  • cNome == “Cosentino”

 

Si la condición de un ELSEIF se evalúa como verdadera, todos los comandos que están entre esta y el próximo ELSEIF, ELSE o ENDIF se ejecutan. En este caso, no se evaluará ningún otro ELSEIF y el flujo de ejecución pasará directamente a la primera línea de instrucción después del ENDIF.

 

Si no se evalúa ningún ELSEIF como verdadero y la cláusula ELSE no existe, el flujo de ejecución del programa se desvía directamente a la primera línea de  instrucción después del ENDIF.

 

La estructura del IF ... El ELSEIF ... ENDIF puede utilizarse cuando hay un determinado número de excepciones con relación a una regla de ejecución por seguirse. Los IF ... ELSEIF <condición> representarán estas excepciones, mientras que el ELSE representará la situación más común.

 

El comando IF ... El ELSEIF ... ENDIF es exactamente equivalente al comando DO CASE ... CASE ... ENDCASE. Por lo tanto, no hay ninguna ventaja en la utilización de uno sobre el otro.

 

 

Ejemplos

 

La siguiente función decide sobre el porcentaje de descuento que se aplicará sobre el sueldo de los empleados, de acuerdo con cada nivel salarial:

 

FUNCTION CalcDesc(nSalario)

 

LOCAL nDescont := 0

 

IF nSalario > 12000 .AND. nSalario < 20000

         nDescont := nSalario * 0.10

 

ELSEIF nSalario >= 20000 .AND. nSalario < 40000

         nDescont := nSalario * 0.15

 

ELSEIF nSalario >= 40000 .AND. nSalario < 60000

         nDescont := nSalario * 0.20

 

ELSEIF nSalario >= 60000 .AND. nSalario < 90000

         nDescont := nSalario * 0.25

 

ELSEIF nSalario >= 90000 .AND. nSalario < 150000

         nDescont := nSalario * 0.30

 

ELSEIF nSalario >= 150000 .AND. nSalario < 200000

         nDescont := nSalario * 0.40

 

ELSE

         nDescont := nSalario * 0.50

ENDIF

 

RETURN nDescont

  • Sem rótulos