4D v16.3

Case of...Else...End case

Página Inicial

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

Case of...Else...End case  


 

 

A sintaxe formal da estrutura de controle de fluxo  é:

 Case of
    :(Expressão Booleana)
       instrução(ções)
    :(Expressão Booleana)
       instrução(ções)
       .
       .
       .
 
    :(Expressão Booleana)
       instrução(ções)
    Else
       instrução(ções)
 End case

Observe que a parte Else é opcional, você pode escrever:

 Case of
    :(Expressão Booleana)
       instrução(ções)
    :(Expressão Booleana)
       instrução(ções)
       .
       .
       .
 
    :(Expressão Booleana)
       instrução(ções)
 End case

Assim como a estrutura , a estrutura também permite que o seu método escolha entre alternativas de ação. Ao contrário da estrutura , a estrutura pode testar um número ilimitado de expressões booleanas e agir, dependendo de qual delas seja VERDADEIRA.

Cada expressão booleana é antecedida por dois pontos (:). Esta combinação de dois pontos e a expressão booleana é chamado de caso. Por exemplo, a linha a seguir é um caso:

:(bValidar=1)

Apenas as declarações seguintes do primeiro caso TRUE (e até o próximo caso) será executada. Se nenhum dos casos for VERDADEIRO, nenhuma das declarações será executada (se o Else não estiver incluído).

Você pode incluir uma declaração Else após o último caso. Se todos os casos são FALSOS, a declaração Else será executada.

Exemplo  

Este exemplo testa uma variável numérica e exibe uma caixa de alerta com uma palavra nela:

 Case of
    :(vResult=1) ` Testa se o número é 1
       ALERT("um.") ` Se for 1, mostra um alerta
    :(vResult=2) ` Testa se o número é 2
       ALERT("dois.") ` Se for 2, mostra um alerta
    :(vResult=3) ` Testa se o número é 3
       ALERT("três.") ` Se for 3, mostra um alerta
    Else ` Se não for 1, 2 ou 3, exibe um alerta
       ALERT("Não foi um, nem dois, nem três.")
 End case

Para efeito de comparação, aqui é a versão do mesmo método:

 If(vResult=1) ` Testa se o número é 1
    ALERT("Uno.") ` Se for 1, mostra um alerta
 Else
    If(vResult=2) ` Testa se o número é 2
       ALERT("Dos.") ` Se for 2, mostra um alerta
    Else
       If(vResult=3) ` Testa se o número é 3
          ALERT("Tres.") ` Se for 3, mostra um alerta
       Else ` Se não for 1, 2 ou 3, exibe um alerta
          ALERT("Não foi um, nem dois, nem três.")
       End if
    End if
 End if

Lembre-se que com uma estrutura Case of...Else...End case, apenas o primeiro caso TRUE é executado. Mesmo que dois ou mais casos sejam verdadeiros, apenas as instruções seguintes ao primeiro caso TRUE será executada.

Conseqüentemente, quando você deseja implementar testes hierárquico, deve certificar-se das declarações desde que sejam menores no esquema hierárquico aparecem primeiro na sequência do teste. Por exemplo, o teste para a presença da condition1 abrange o teste para a presença de condition1 & condition2 e deve ser localizado passado a sequência do teste. Por exemplo, o seguinte código nunca irá ver a sua última condição detectada:

 Case of
    :(vResult=1)
       ... `instrução(ções)
    :((vResult=1) & (vCondição#2)) `este caso não será detectado
       ... `instrução(ções)
 End case
 .


No código acima, a presença do segundo requisito não é detectada já que o teste vResult = "1" é detectado antes de qualquer teste adicional. Para o código funcionar corretamente, você pode escrever como a seguir:

 Case of
    :((vResult=1) & (vCondição#2)) `este caso será detectado primeiro
       ... `instrução(ções)
    :(vResult=1)
       ... `instrução(ções)
 End case
 .

Além disso, se você quiser implementar testes hierárquicos, você pode considerar o uso de código hierárquico.

Conselho: Um teste condicional pode ser realizado sem instruções a serem executadas em um caso ou outro. Ao desenvolver um algoritmo ou uma aplicação especializada, nada o impede de escrever:

 Case of
    :(Expressão_Booleana)
    :(Expressão_Booleana)
 
       .
       .
       .
 
    :(Expressão_Booleana)
       instrução(ções)
    Else
       instrução(ções)
 End case

ou:

 Case of
    :(Expressão_Booleana)
    :(Expressão_Booleana)
       instrução(ções)
       .
       .
       .
 
    :(Expressão_Booleana)
       instrução(ções)
    Else
 End case

ou:

 Case of
    Else
       instrução(ções)
 End case



Ver também 

Controle de fluxo
For...End for
If...Else...End if
Repeat...Until
While...End while

 
PROPRIEDADES 

Produto: 4D
Tema: Apresentação da linguagem

 
HISTÓRIA 

 
ARTICLE USAGE

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