Operatore condizionale if.
L'operatore condizionale if ("se") permette di diramare l'esecuzione del programma a seconda dei valori logici, ovvero i risultati degli operatori di confronto, oltre che direttamente dalle variabili booleane.
if (booleano)
{
// eseguito se booleano è true
}
L'operatore condizionale
else ("altrimenti
") funziona in tandem con l'istruzione if e consente di fornire un'azione nel caso in cui l'if non venga eseguito:
if (booleano
)
{
// eseguito se booleano è
- true
}
else
{
// eseguito se booleano è
- false
}
C'è anche un terzo costrutto che ti permette di ramificare ancora di più il codice,
viene chiamato else if (altrimenti se):
if (booleano1)
{
// eseguito se booleano1 - true
}
else if (booleano2)
{
// eseguito se booleano2 - true
}
else
{
// eseguito in modo diverso
}
Vediamo tutti questi operatori in azione:
if(a > b) c = 5; // se a è maggiore di b, allora c = 5
else c = 7; // se no, allora c = 7
Quando si esegue un'azione all'interno della condizione, {} sono facoltativi.
Invece del confronto, puoi usare una variabile booleana
boolean myFlag1;
boolean
myFlag2;
if (myFlag1) c = 5; // se myFlag1 è true, imposta c su 5
if (myflag1 && myFlag2) c = 5; // se entrambi i flag sono veri, imposta c su 5
Quando si eseguono due o più azioni all'interno della condizione, {} sono obbligatori.
if (myFlag1)
{
a = 5;
b = a;
}
else
{
a = 7;
b = a;
}
byte btnState;
if (btnState
== 1) a = 5; // se btnState
è uguale a 1 a = 5
else if (btnState
== 2) a = 7; // se no, ma se btnState è uguale a 2 a = 7
else
a = 32; // se questo non è true, allora a = 32
Ecco come funziona l'istruzione if, che consente di controllare il programma e creare azioni ramificate a seconda delle diverse condizioni.
Caratteristica booleana - boolean restituisce true se gli si assegna un numero diverso da zero, il che significa che qualsiasi numero può essere inserito nell'operatore condizionale if e restituirà true in ogni caso tranne zero.
Questo è utile in alcuni casi, ma può anche portare a bug difficili da rilevare.
Ordine delle condizioni - l'ordine delle condizioni gioca un ruolo molto importante nell'ottimizzazione del codice e nel tentativo di renderlo più veloce in alcuni casi. L'essenza è molto semplice: le espressioni/valori logici vengono controllati da sinistra a destra e se almeno un valore rende l'intera espressione errata (false), l'ulteriore verifica delle condizioni si interrompe. Ad esempio, se nell'espressione:
if (a && b && c)
{
// fare qualcosa
}
Anche se a è falso, le restanti espressioni (b e c) non vengono più verificate. Quando può essere importante: ad esempio, c'è una sorta di flag e un'espressione che viene calcolata direttamente nella condizione e viene immediatamente verificata. In questo caso, se il flag viene omesso, il microcontrollore non perderà tempo in calcoli inutili. Per esempio:
if (flag && analogRead(0) > 500)
{
// fare qualcosa
}
Se il flag viene omesso, il microcontrollore non impiegherà ulteriori 100 µs lavorando con l'ADC e ignorerà immediatamente il resto delle espressioni logiche. Questo è ovviamente molto picco, ma a volte decide anche 100 µs, ricorda solo che l'ordine delle condizioni è importante.