Esecuzione condizionale (if e switch)
Se è necessario scegliere tra due opzioni l'istruzione da utilizzare è l'if:
if condizione blocco di istruzioni end
dove il blocco di istruzioni è eseguito se la condizione è vera. Per esempio
>> numero = input('Inserisci un numero: '); >> if numero > 0 >> disp('Positivo'); >> end
il codice visualizzerà "Positivo" nella COMMAND WINDOW se il numero inserito è positivo.
Gli operatori utilizzabili nella costruzione della condizione sono:
< minore
> maggiore
<= minore o uguale
>= maggiore o uguale
== uguale
~= non uguale
Le espressioni possono essere di tipo complesso utilizzando gli operatori logici:
AND
(espressione 1) & (espressione 2)
restituisce vero solo se entrambe le condizioni sono vere
OR
(espressione 1) | (espressione 2)
restituisce vero se almeno una delle condizioni è vera
NOT
~(espressione)
nega il risultato dell'espressione, ovvero restituisce vero se la condizione è falsa
Nel caso sia necessario eseguire un blocco di funzioni diverso nel caso la condizione sia falsa è possibile utilizzare if-else
if condizione blocco di istruzioni se la condizione è vera
else blocco di istruzioni se la condizione è falsa
end
Per esempio:
>> numero = input('Inserisci un numero: ');
>> if numero > 0
>> disp('Positivo');
>> else
>> disp('Negativo o nullo');
>> end
il codice visualizzerà "Positivo" nella COMMAND WINDOW se il numero inserito è positivo, oppure "Negativo o nullo" se non è positivo, ovvero se la condizione "numero > 0" è falsa.
Qualora sia necessario scegliere tra più possibilità esiste la possibilità di usare la struttura if-elseif-else
if condizione1
blocco di istruzioni 1
elseif condizione2
blocco di istruzioni 2
...
else
blocco di istruzioni alternativo
end
>> numero = input('Inserisci un numero: ');Se le alternative sono molte e le scelte si basano sul valore di una variabile (non su una condizione) l'alternativa migliore è il costrutto switch-case:
>> if numero > 0
>> disp('Positivo');
>> elseif numero == 0
>> disp('Nullo');
>> elseif numero < 0
>> disp('Negativo');
>> else
>> disp('Situazione inaspettata');
>> end
switch variabile
case valore1
blocco di istruzioni valore1
case valore2
blocco di istruzioni valore2
...
otherwise
blocco di istruzioni alternativo
end
dove viene valutato il valore contenuto in "variabile", se la variabile assume il "valore1" viene eseguito il blocco di istruzioni relativo a valore1, se assume il "valore2" viene eseguito il blocco relativo al valore 2, ecc. Se il valore della variabile non è presente in uno dei "case", viene eseguito il "blocco di istruzioni alternativo" posto dopo la parola chiave "otherwise". Questo blocco può essere omesso (quando per esempio non deve essere eseguita alcuna istruzione se la variabile non assume un valore tra quelli contemplati nei vari "case").
Si noti che a differenza dell'istruzione switch di C, non è necessario inserire break alla fine del blocco case per far uscire dallo switch, ovvero in quando Matlab trova un nuovo "case" esce automaticamente dallo "switch" corrente.
Ecco un esempio di uso:
>> n = input('Inserisci un mumero: ');
>> switch n
>> case -1
>> disp('Inserito meno uno');
>> case 0
>> disp('Inserito zero');
>> case 1
>> disp('Inserito uno');
>> otherwise
>> disp('Inserito un altro valore');
>> end