Sintaxe

 

IF <condição>

          ...

          < instruções >

          ...

[ ELSE ]

          ...

          < instruções >

          ...

ENDIF

 

Propósito

 

O comando IF ... ENDIF é um comando de programação estruturada que permite executar condicionalmente um bloco de instruções. É conhecido também como desvio condicional.

 

Argumentos

 

<condição>

 

É uma expressão lógica de controle que será avaliada como verdadeira (.T.) ou falsa (.F.). Se for verdadeira, o bloco de instruções entre o IF e o ELSE ou o ENDIF será executado

 

ELSE

 

Identifica o bloco de instruções que será executado caso a condição do IF seja falsa (.F.). Neste caso, serão executadas as instruções entre o ELSE e o ENDIF. Caso não exista o ELSE, o fluxo do processamento é desviado para a primeira instrução após o ENDIF.

 

Utilização

 

Este comando permite, por meio de uma condição, selecionar ou não um bloco de instruções a ser executado. Deve sempre ser finalizado com um ENDIF.

 

Qualquer outro comando de programação estruturada (WHILE, DO CASE e FOR ... NEXT) dentro de um IF ... ENDIF deve ser intercalado corretamente. Ou seja, o início e o fim devem estar entre o IF e o ENDIF. Intercalações de vários comandos IF também são permitidas, desde que cada IF possua o seu próprio ENDIF.

 

A cláusula ELSE inicia o bloco de comandos que será executado caso a condição do IF seja avaliada como falsa (.F.). Se existirem múltiplos comandos IF em uma estrutura de comandos, um ELSE sempre se referirá ao IF imediatamente anterior.

 

Exemplos

 

O exemplo abaixo verifica se há dados para o cálculo. Caso não exista, mostra uma mensagem para o usuário. Caso exista, invoca a função CalcGrao().

 

// Chamada da função de cálculo

FUNCTION Main(aEstoque)

 

LOCAL nReserva := 0

 

IF EMPTY(aEstoque)

          MSGALERT(“Não existem dados para o cálculo”)

ELSE

          nReserva := CalcGrao(1900, aEstoque)

ENDIF

 

RETURN NIL

 

 

Exemplo de estrutura para a intercalação de vários comandos IF:

 

IF <condição>

          IF <condição>

                    ...

                    <instruções>

                    ...

          ELSE

                    IF <condição>

                              ...

                              <instruções>

                              ...

                    ENDIF

          ENDIF

ELSE

          IF <condição>

                    ...

                    <instruções>

                    ...

          ENDIF

ENDIF

 

  • Sem rótulos