Main Content

switch, case, otherwise

Ejecutar uno de varios grupos de instrucciones

Sintaxis

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

Descripción

switch switch_expression, case case_expression, end evalúa una expresión y elige ejecutar uno de varios grupos de instrucciones. Cada elección es un caso.

El bloque switch prueba cada caso hasta que una de las expresiones de caso sea verdadera. Un caso es verdadero cuando:

  • Para los números, case_expression == switch_expression.

  • Para los vectores de caracteres, strcmp(case_expression,switch_expression) == 1.

  • Para los objetos compatibles con la función eq, case_expression == switch_expression. La salida de la función eq sobrecargada debe ser un valor lógico o convertible a un valor lógico.

  • Para un arreglo de celdas case_expression, al menos uno de los elementos del arreglo de celdas coincide con switch_expression, como se definió anteriormente para números, vectores de caracteres y objetos.

Cuando una expresión de caso es verdadera, MATLAB® ejecuta las instrucciones correspondientes y sale del bloque switch.

Una switch_expression evaluada debe ser un escalar o un vector de caracteres. Una case_expression evaluada debe ser un escalar, un vector de caracteres o un arreglo de celdas de escalares o vectores de caracteres.

El bloque otherwise es opcional. MATLAB ejecuta las instrucciones solo cuando ningún caso es verdadero.

ejemplo

Ejemplos

contraer todo

Muestre un texto diferente de forma condicional, en función de un valor introducido en la línea de comandos.

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

Escriba el número 1 en la línea de comandos.

positive one

Repita el código y escriba el número 3.

other value

Determine qué tipo de gráfica se debe crear en función del valor de plottype. Si plottype es 'pie' o 'pie3', cree una gráfica circular en 3D. Utilice un arreglo de celdas para contener ambos valores.

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

Figure contains an axes object. The hidden axes object with title Pie Chart contains 12 objects of type patch, surface, text.

Sugerencias

  • Una case_expression no puede incluir operadores relacionales como < o > para la comparación con switch_expression. Para comprobar la desigualdad, utilice las instrucciones if, elseif, else.

  • La instrucción switch de MATLAB no se pierde como una instrucción switch en lenguaje C. Si la primera instrucción case es true, MATLAB no ejecuta las demás instrucciones case. Por ejemplo:

    result = 52;
    
    switch(result)
       case 52
          disp('result is 52')
       case {52, 78}
          disp('result is 52 or 78')
    end
    result is 52
  • Defina todas las variables necesarias para el código en un caso particular dentro de dicho caso. Como MATLAB ejecuta solo un caso de cualquier instrucción switch, las variables definidas dentro de un caso no están disponibles para otros casos. Por ejemplo, si el área de trabajo actual no contiene una variable x, solo los casos que definen x pueden utilizarla:

    switch choice
       case 1
          x = -pi:0.01:pi;
       case 2
          % does not know anything about x
    end
  • La instrucción break de MATLAB termina la ejecución de un bucle for o while, pero no finaliza la ejecución de una instrucción switch. Este comportamiento es diferente al de break y switch en C.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

| | |