Usina BRGuía AdvPL
Ingresar
← Todos los temas
COMANDOPublicado

IF ... ENDIF

IF <expressão lógica> ... [ELSEIF <expressão>] ... [ELSE ...] ENDIF

Ejecuta un bloque de comandos según el resultado de una expresión lógica.

DecisiónControl de flujoComandos
01 · DESCRIPCIÓN GENERAL

Descripción general

IF ... ENDIF controla la ejecución a partir de una condición. Cuando la expresión es verdadera (.T.), se ejecuta el bloque posterior a IF. Si es falsa (.F.), las cláusulas ELSEIF pueden probar alternativas en orden y ELSE puede proporcionar el camino predeterminado. Después de ejecutar una alternativa, el flujo continúa después de ENDIF.

02 · SINTAXIS

Sintaxis

IF <expressão lógica> ... [ELSEIF <expressão>] ... [ELSE ...] ENDIF

Parámetros

expressão lógica
LógicoObligatorio

Condición que determina si se ejecuta el bloque correspondiente.

ELSEIF
CláusulaOpcional

Permite evaluar condiciones alternativas en secuencia.

ELSE
CláusulaOpcional

Bloque opcional ejecutado cuando ninguna condición anterior devuelve .T.

03 · EJEMPLO PRÁCTICO

Decisión simple con ELSE

User Function ExVencimiento(dVencimiento)
    Local cMensaje := ""

    If Date() > dVencimiento
        cMensaje := "Vencimiento superado"
    Else
        cMensaje := "Dentro del plazo"
    EndIf

    MsgInfo(cMensaje)
Return
Resultado esperado

La comparación determina cuál de los dos bloques asigna el mensaje mostrado al usuario.

04 · EJEMPLO PRÁCTICO

Múltiples alternativas con ELSEIF

User Function ExFaixa(nTotal)
    Local cFaixa := ""

    If nTotal > 100000
        cFaixa := "Especial"
    ElseIf nTotal > 50000
        cFaixa := "Alta"
    ElseIf nTotal > 10000
        cFaixa := "Média"
    Else
        cFaixa := "Padrão"
    EndIf
Return cFaixa
Resultado esperado

La primera condición verdadera define el nivel; las alternativas restantes se ignoran.

05 · EJEMPLO PRÁCTICO

Combinación de operadores lógicos

User Function ExAcesso(lAtivo, nNivel)
    Local lPermitido := .F.

    If lAtivo .And. nNivel >= 3
        lPermitido := .T.
    EndIf
Return lPermitido
Resultado esperado

El acceso solo se permite cuando ambas condiciones son verdaderas.

BUENAS PRÁCTICAS
  • Haz que la condición produzca explícitamente un valor lógico.
  • Utiliza ELSE cuando sea necesario un comportamiento predeterminado.
  • Ordena los ELSEIF desde la condición más específica hasta la más general.
  • Prefiere condiciones cortas y extrae validaciones complejas a funciones con nombres claros.
  • Utiliza DO CASE cuando muchas alternativas dificulten leer una secuencia de ELSEIF.
ERRORES COMUNES
  • Las comparaciones y operadores lógicos mal agrupados pueden seleccionar un camino inesperado.
  • Muchos IF anidados reducen la legibilidad y aumentan el riesgo de cerrar la estructura equivocada.
  • Una condición amplia en un ELSEIF inicial puede hacer inalcanzables las alternativas posteriores.
  • Aunque la documentación histórica indica que NIL se trata como .F. desde Protheus 5.07, depender de ello oculta errores; valida el tipo de la condición.
  • Cada IF necesita su ENDIF correspondiente.

Contenido relacionado

REFERENCIAS
  1. TOTVS. El comando IF...ENDIF. TDN. Creado por Rafaela Rocha Hikiji; última modificación el 21 de mayo de 2012.
  2. TOTVS. Estructuras de decisión en AdvPL. TDN.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR