4D v16.3

Case of...Else...End case

Accueil

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

Case of...Else...End case  


 

 

La syntaxe de la structure conditionnelle Case of...Else...End case est la suivante :

 Case of
    :(Expression_booléenne)
       instruction(s)
    :(Expression_booléenne)
       instruction(s)
       .
       .
       .
 
    :(Expression_booléenne)
       instruction(s)
    Else
       instruction(s)
 End case

A noter que l'élément Sinon est optionnel, vous pouvez donc écrire :

 Case of
    :(Expression_booléenne)
       instruction(s)
    :(Expression_booléenne)
       instruction(s)
       .
       .
       .
 
    :(Expression_booléenne)
       instruction(s)
 End case

Tout comme la structure Si...Sinon...Fin de si, la structure Case of...Else...End case permet également à votre méthode de choisir parmi plusieurs séquences d’instructions. A la différence de la structure précédente, le Case of...Else...End case peut tester un nombre illimité d’expressions booléennes et exécuter la séquence d’instructions correspondant à la valeur VRAI.

Chaque expression booléenne débute par le caractère deux points (:). La combinaison de deux points et d’une expression booléenne est appelé un cas. Par exemple, la ligne suivante est un cas :

:(bValider=1)

Seules les instructions suivant le premier cas VRAI (et ce, jusqu’au cas suivant) seront exécutées. Si aucun des cas n’est VRAI, aucune instruction n’est exécutée (s'il n'y a pas d'élément Sinon).

Vous pouvez placer une instruction Sinon après le dernier cas. Si tous les cas sont FAUX, les instructions suivant le Sinon seront exécutées.

Exemple  

Cet exemple teste une variable numérique et affiche une boîte de dialogue d’alerte comportant un simple mot :

 Case of
    :(vRésult=1) ` Test si le numéro est 1
       ALERT("Un.") ` Si c’est 1, afficher une alerte
    :(vRésult=2) ` Test si le numéro est 2
       ALERT("Deux.") ` Si c’est 2, afficher une alerte
    :(vRésult=3) ` Test si le numéro est 3
       ALERT("Trois.") ` Si c’est 3, afficher une alerte
    Else ` Si ce n’est ni 1 ni 2 ni 3, afficher une alerte
       ALERT("Ce n’est ni un, ni deux, ni trois.")
 End case

A titre de comparaison, voici la version avec Si...Sinon...Fin de si de la même méthode :

 If(vRésult=1) ` Test si le numéro est 1
    ALERT("Un.") ` Si c’est 1, afficher une alerte
 Else
    If(vRésult=2) ` Test si le numéro est 2
       ALERT("Deux.") ` Si c’est 2, afficher une alerte
    Else
       If(vRésult=3) ` Test si le numéro est 3
          ALERT("Trois.") ` Si c’est 3, afficher une alerte
       Else ` Si ce n’est ni 1, 2 ni 3, afficher l’alerte
          ALERT("Ce n’est ni un, ni deux, ni trois.")
       End if
    End if
 End if

Rappelez-vous qu’avec une structure de type Case of...Else...End case, seul le premier cas VRAI rencontré est exécuté. Même si d’autres cas sont VRAIS, seules les instructions suivant le premier cas VRAI seront prises en compte.

Par conséquent, lorsque vous testez dans la même méthode des cas simples et des cas complexes, vous devez placer les cas complexes avant les cas simples, sinon ils ne seront jamais exécutés. Par exemple, si vous souhaitez traiter le cas simple (vRésult=1) et le cas complexe (vRésult=1) & (vDemande#2) et que vous structurez la méthode de la manière suivante :

 Case of
    :(vRésult=1)
       ... `instruction(s)
    :((vRésult=1) & (vDemande#2)) `<-- Les instructions suivant ce cas ne seront JAMAIS exécutées
       ... `instruction(s)
 End case

... les instructions associées au cas complexe ne seront jamais exécutées. En effet, pour que ce cas soit VRAI, ses deux conditions booléennes doivent l’être. Or, la première condition est celle du cas simple situé précédemment. Lorsqu'elle est VRAIE, le cas simple est exécuté et 4D sort de la structure conditionnelle, sans évaluer le cas complexe. Pour que ce type de méthode fonctionne, vous devez écrire :

 Case of
    :(vRésult=1) & (vDemande#2) `<-- Les cas complexes doivent toujours être placés en premier
       ... `Instruction(s)
    :(vRésult=1)
       ... `Instruction(s)
 End case

Astuce :Il n'est pas obligatoire que des instructions soient exécutées dans toutes les alternatives. Lorsque vous développez un algorithme, ou lorsque vous poursuivez un but particulier, rien ne vous empêche d'écrire :

 Case of
    :(Expression_booléenne)
    :(Expression_booléenne)
 
       .
       .
       .
 
    :(Expression_booléenne)
       instruction(s)
    Else
       instruction(s)
 End case

ou :

 Case of
    :(Expression_booléenne)
    :(Expression_booléenne)
       instruction(s)
       .
       .
       .
 
    :(Expression_booléenne)
       instruction(s)
    Else
 End case

ou :

 Case of
    Else
       instruction(s)
 End case



Voir aussi  

Boucle...Fin de boucle
Conditions et boucles
If...Else...End if
Repeat...Until
While...End while

 
PROPRIÉTÉS 

Produit : 4D
Thème : Présentation du langage

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)