Arduino: Operazioni aritmetiche

Gli operatori aritmetici sono addizione, sottrazione, moltiplicazione e divisione. L’operazione restituisce la somma, differenza, prodotto o quoziente (rispettivamente) di due operandi.

y = y + 3;
x = x – 7;
i = j * 6;
r = r / 5;

L’operazione è condotta utilizzando il tipo di dati degli operandi, così, per esempio, 9/4 il risultato è 2 invece di 2,25 perché 9 e 4 sono due interi e quindi non può fornire un risultato con il punto decimale. Questo significa anche che l’operazione può uscire fuori dalla memoria (overflow) se il risultato è più grande di ciò che può essere memorizzato nel tipo di dati.

Se gli operandi sono di tipo diverso, il tipo più grande è utilizzato per il calcolo. Per esempio, se uno dei numeri (operandi) è di tipo float e l’altro di tipo int, il microcontrollore utilizzerà per il calcolo la virgola mobile.

Quindi occorre dimensionare in modo opportuno le variabili in modo da contenere il risultato dal calcolo in modo appropriato.

Conoscere prima a che punto la variabile andrà in errore è importante; anche quando ricomincia il conteggio ciclico. Per i calcoli matematici che richiedono frazioni, è bene utilizzare le variabili float, ma con la consapevolezza del loro svantaggio: grandi dimensioni e velocità di calcolo lento.

Nota: Le variabili possono essere convertite al volo. Per esempio, i = (int) 3,6 imposterà i uguale a 3.

Assegnazioni compound

Si tratta di operatori speciali che si usano per rendere più conciso il codice di programma. Esso combina un’operazione aritmetica con un’assegnazione di variabile. Esempi:

a = a + 1 si può scrivere a++
a = a +2 si può scrivere a += 2

Attenzione! Se scrivo: value++, prima valuta la variabile value e poi la incrementa di 1; se invece scrivo: ++value prima incrementa di 1 e poi lo valuta. Lo stesso vale per –.

Questi operatori speciali si trovano comunemente nei cicli for. Le assegnazioni più comuni includono:

x + + // è uguale a x = x + 1, incrementa la variabile x di +1
x – – // è uguale a x = x – 1, decrementa x di -1
x += y // è uguale a x = x + y, incrementa x di + y
x -= y // è uguale a x = x – y, decrementa x di -y
x *= y // è uguale a x = x * y, moltiplica x per y
x / = y // è uguale a x = x / y, divide x per y

Nota: per esempio, x *= 3 da come risultato il triplo del valore di x e poi viene riassegnato alla variabile x.

Operatori di confronto

Alcune volte si ha bisogno di confrontare una variabile o una costante con un’altra. Il confronto si uso nelle istruzioni condizionate if, while e for per verificare se una determinata condizione è vera. Esempi:

x == y // x è uguale a y
x != y // x è diverso da y
x < y // x è minore di y
x > y // x è maggiore di y
x <= y // x è minore o uguale a y
x >= y // x è maggiore o uguale a y

Gli operatori logici o operatori booleani

Gli operatori logici sono un modo per confrontare due espressioni. Si usano anche quando si vogliono combinare diverse condizioni. Restituiscono una funzione TRUE o FALSE.

Ci sono tre operatori logici AND, OR e NOT, che vengono utilizzati in istruzioni if:

AND logico:

if (x > 0 & & x < 5) // vera solo se entrambe le espressioni sono vere

OR logico:

if (x > 0 || y> 0) // vero se uno delle due espressioni è vera

NOT logico:

if (!x > 0) // vera solo se l’espressione è falsa