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
dove il "blocco di istruzioni 1" verrà eseguito solo se condizione1 risulta essere vera, il "blocco di istruzioni 2" solo se condizione1 risulta essere falsa e condizione2 vera e così via. Il "blocco di istruzioni alternativo" che segue else è eseguito soltanto se nessuna delle precedenti condizioni risulta essere vera . Per esempio:
 

 

>> numero = input('Inserisci un numero: ');
>> if numero > 0
>> disp('Positivo');
>> elseif numero == 0
>> disp('Nullo');
>> elseif numero < 0
>> disp('Negativo');
>> else
>> disp('Situazione inaspettata');
>> end
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:

 

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
Ultime modifiche: domenica, 31 dicembre 2023, 18:09