Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

switch, case, otherwise

Eseguire uno dei diversi gruppi di dichiarazioni

Sintassi

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

Descrizione

esempio

switch switch_expression, case case_expression, end valuta un'espressione e sceglie di eseguire uno dei diversi gruppi di dichiarazioni. Ciascuna scelta rappresenta un caso.

Il blocco switch verifica ciascun caso finché una delle espressioni di caso non è vera. Un caso è vero quando:

  • Per i numeri, case_expression == switch_expression.

  • Per i vettori di caratteri, strcmp(case_expression,switch_expression) == 1.

  • Per gli oggetti che supportano la funzione eq, case_expression == switch_expression. L’output della funzione eq sovraccaricata deve essere un valore logico o un valore convertibile in un valore logico.

  • Per un array di celle case_expression, almeno uno degli elementi dell’array di celle corrisponde a switch_expression, come sopra definito per i numeri, i vettori di caratteri e gli oggetti.

Quando un'espressione di caso è vera, MATLAB® esegue le dichiarazioni corrispondenti ed esce dal blocco switch.

Una switch_expression valutata deve essere uno scalare o un vettore di caratteri. Una case_expression valutata deve essere uno scalare, un vettore di caratteri o un array di celle di scalari o di vettori di caratteri.

Il blocco otherwise è opzionale. MATLAB esegue le dichiarazioni solo quando nessun caso è vero.

Esempi

comprimi tutto

Visualizzare un testo diverso in modo condizionato, a seconda di un valore inserito dal prompt dei comandi.

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

Dal prompt dei comandi, inserire il numero 1.

positive one

Ripetere il codice e inserire il numero 3.

other value

Determinare il tipo di grafico da creare in base al valore di plottype. Se plottype è 'pie' o 'pie3', creare un grafico a torta tridimensionale. Utilizzare un array di celle per comprendere entrambi i valori.

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

Suggerimenti

  • Una case_expression non può includere operatori relazionali come < o > per il confronto con switch_expression. Per verificare la disuguaglianza, utilizzare le dichiarazioni if, elseif, else.

  • La dichiarazione switch di MATLAB non passa inosservata come una dichiarazione switch in linguaggio C. Se la prima dichiarazione case è true, MATLAB non esegue le altre dichiarazioni case. Ad esempio:

    result = 52;
    
    switch(result)
       case 52
          disp('result is 52')
       case {52, 78}
          disp('result is 52 or 78')
    end
    result is 52
  • Definire tutte le variabili necessarie per il codice di un caso specifico all'interno di quel caso. Poiché MATLAB esegue solo un caso di qualsiasi dichiarazione switch, le variabili definite in un caso non sono disponibili per gli altri casi. Ad esempio, se il workspace corrente non contiene una variabile x, solo i casi che definiscono x possono utilizzarla:

    switch choice
       case 1
          x = -pi:0.01:pi;
       case 2
          % does not know anything about x
    end
  • La dichiarazione break di MATLAB termina l’esecuzione di un for loop o di un while loop, ma non termina l’esecuzione di una dichiarazione switch. Questo comportamento è diverso da quello di break e switch in linguaggio C.

Funzionalità estese

Cronologia versioni

Introduzione prima di R2006a

Vedi anche

| | |