La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
switch, case, otherwise
Exécuter un ou plusieurs groupes d’instructions
Syntaxe
switchswitch_expression
casecase_expression
statements
casecase_expression
statements
... otherwisestatements
end
Description
switch
évalue une expression et choisit d’exécuter un groupe d’instructions parmi plusieurs. Chaque choix est un cas noté « case ». switch_expression
, case case_expression
, end
Le bloc switch
teste chaque cas jusqu’à ce que l’une des expressions de cas soit vraie. Un cas est vrai dans les cas suivants :
Pour les nombres,
.case_expression
==switch_expression
Pour les vecteurs de caractères,
strcmp(
.case_expression
,switch_expression
) == 1Pour les objets qui supportent la fonction
eq
,
. La sortie de la fonctioncase_expression
==switch_expression
eq
surchargée doit être une valeur logique ou convertible en valeur logique.Pour une
case_expression
utilisant un cell array, au moins un des éléments du cell array correspond àswitch_expression
, comme défini ci-dessus pour les nombres, les vecteurs de caractères et les objets.
Lorsqu’une expression de cas est vraie, MATLAB® exécute les instructions correspondantes et quitte le bloc switch
.
Une switch_expression
évaluée doit être un scalaire ou un vecteur de caractères. Une case_expression
évaluée doit être un scalaire, un vecteur de caractères ou un cell array de scalaires ou de vecteurs de caractères.
Le bloc otherwise
est facultatif. MATLAB exécute uniquement les instructions lorsqu’aucun cas n’est vrai.
Exemples
Conseils
Une
case_expression
ne peut pas inclure d’opérateurs relationnels tels que<
ou>
à des fins de comparaison par rapport àswitch_expression
. Pour tester l’inégalité, utilisez les instructionsif, elseif, else
.L’instruction MATLAB
switch
n’échoue pas comme une instructionswitch
en langage C. Si la première instructioncase
esttrue
, MATLAB n’exécute pas les autres instructionscase
. Par exemple :result = 52; switch(result) case 52 disp('result is 52') case {52, 78} disp('result is 52 or 78') end
result is 52
Définissez toutes les variables nécessaires pour le code dans un cas particulier au sein de ce cas. Puisque MATLAB n’exécute qu’un seul cas d’une instruction
switch
, les variables définies au sein d’un cas ne sont pas visibles pour les autres. Par exemple, si votre espace de travail actuel ne contient pas de variablex
, seuls les cas qui définissentx
peuvent l’utiliser :switch choice case 1 x = -pi:0.01:pi; case 2 % does not know anything about x end
L’instruction MATLAB
break
met fin à l’exécution d’une bouclefor
ouwhile
, mais pas à l’exécution d’une instructionswitch
. Ce comportement est différent de celui debreak
etswitch
en C.
Capacités étendues
Historique des versions
Introduit avant R2006a