Le format d'un bloc Select...EndSelect est présenté ci-dessous :
Select <expression> Case <constante 1> ; Instructions [Case <constante 2> ; Instructions] [Case <constante 3> ; Instructions] ; ... [Case <constante n> ; Instructions] [Default ; Instructions] EndSelectLes opérations effectuées par cette structure sont les suivantes : d'abord la valeur de l'expression est calculée. Cela peut être toute sorte d'expression, pas seulement une comparaison ou une expression logique. Elle est ensuite comparée à chacune des constantes (numériques ou chaînes) qui suivent les mots-clés Case. Si elle correspond à l'une d'entre-elles alors le code suivant le mot-clé Case correspondant est exécuté, jusqu'à ce qu'un autre mot-clé Case soit atteint, et que le programme passe alors à la prochaine instruction située après le mot-clé EndSelect. Si aucune des conditions Case ne correspond alors les instructions situées après le mot-clé Default sont exécutées.
Encore une fois, les crochets indiquent que ces conditions sont facultatives, bien que vous devez avoir au moins une condition Case, et le mot-clé Default (s'il est présent) doit être la dernière condition à l'intérieur du bloc Select...EndSelect.
A l'instar du bloc If...EndIf, vous pouvez imbriquer les blocs Select...EndSelect les uns à l'intérieur des autres ou à l'intérieur de n'importe quels autres blocs ou boucles tant qu'un bloc est entièrement contenu à l'intérieur de l'autre.
L'exemple ci-dessous présente certaines utilisations du bloc Select...EndSelect. Vous pouvez également télécharger les sources à partir d'ici.
If OpenConsole() ; C'est la même chose qu'un des exemples précédents, sauf que ; les comparaisons concernent toujours l'égalité donc nous ne pouvons pas faire le ; même test qu'avec la partie ElseIf nom$<>"John" de l'exemple précédent nom$ = "John" Select nom$ Case "Andrew" PrintN("Vous avez le meme nom que mon frere.") Case "Robert" PrintN("Votre nom vient-il du celebre roi ecossais ?") Case "John" PrintN("Ou pouvons-nous trouver Paul, George et Ringo ?") Default PrintN("Desole, je ne vous reconnais pas.") EndSelect ; Un ensemble simple d'instructions pour les fermiers, suivant l'âge de leurs poules ;) ; (NB : aucun animal n'a été blessé lors du test de cet exemple !) age_poule.w = -1 Select age_poule Case 0 PrintN("C'est plus une poulette qu'une poule") Case 1 PrintN("Utile pour pondre des oeufs") Case 2 PrintN("Age principal pour la viande - tchak ! tchak ! A la hache !") Case 3 PrintN("Elle se fait vieille maintenant, mieux vaut mettre un terme a sa misere - tchak ! tchak ! A la hache !") Default PrintN("On les compte avant qu'elles soient hachees ?") EndSelect PrintN("Appuyez sur ENTREE pour quitter.") Input() CloseConsole() EndIf End
Cet exemple donne également une meilleure idée de l'imbrication des différents types de blocs ou de boucles. Vous noterez que l'ordre de début et fin des mots-clés est If, Select, EndSelect, Select, EndSelect et EndIf. C'est la manière correcte de les imbriquer, avec le bloc Select...EndSelect complètement renfermé à l'intérieur du bloc If...EndIf. Cela eut été une erreur d'avoir écrit le programme de sorte que l'ordre soit (par exemple) If, Select, EndSelect, Select, EndIf et EndSelect.
Sujet précédent | Sommaire | Sujet suivant |
---|---|---|
Choisir d'exécuter quelques instructions (If...Else...EndIf) | Contenu du guide de l'utilisateur | Répéter des instructions un certain nombre de fois (For...Next) |