Main Content

switch, case, otherwise

Exécuter un ou plusieurs groupes d’instructions

Syntaxe

switch switch_expression
   case case_expression
      statements
   case case_expression
      statements
    ...
   otherwise
      statements
end

Description

exemple

switch switch_expression, case case_expression, end évalue une expression et choisit d’exécuter un groupe d’instructions parmi plusieurs. Chaque choix est un cas noté « case ».

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) == 1.

  • Pour les objets qui supportent la fonction eq, case_expression == switch_expression. La sortie de la fonction 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

réduire tout

Affichez différents textes conditionnels en fonction d’une valeur saisie dans l’invite de commande.

n = input('Enter a number: ');

switch n
    case -1
        disp('negative one')
    case 0
        disp('zero')
    case 1
        disp('positive one')
    otherwise
        disp('other value')
end

Dans l’invite de commande, saisissez le chiffre 1.

positive one

Répétez le code et saisissez le chiffre 3.

other value

Déterminez le type de tracé à créer en fonction de la valeur de plottype. Si plottype correspond à 'pie' ou 'pie3', créez un diagramme à secteurs 3D. Utilisez un cell array pour contenir les deux valeurs.

x = [12 64 24];
plottype = 'pie3';

switch plottype
    case 'bar' 
        bar(x)
        title('Bar Graph')
    case {'pie','pie3'}
        pie3(x)
        title('Pie Chart')
    otherwise
        warning('Unexpected plot type. No plot created.')
end

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 instructions if, elseif, else.

  • L’instruction MATLAB switch n’échoue pas comme une instruction switch en langage C. Si la première instruction case est true, MATLAB n’exécute pas les autres instructions case. 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 variable x, seuls les cas qui définissent x 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 boucle for ou while, mais pas à l’exécution d’une instruction switch. Ce comportement est différent de celui de break et switch en C.

Capacités étendues

Historique des versions

Introduit avant R2006a

Voir aussi

| | |