
Il punto e virgola è usato come segno di terminazione istruzione, ma non è da usare nelle istruzioni composte: if, for, while, do while e la direttiva per il preprocessore #define.
Di seguito alcuni esempi che mettono in evidenza questo tipico errore.
Versione non corretta
3 | digitalWrite (normaleTemp, LOW); |
4 | digitalWrite (allarmeTemp, HIGH); |
7 | for ( int i = 0; i < 15; i++); |
8 | digitalWrite (i, HIGH); |
I punti e virgola indicati nell’esempio sopra terminano le istruzioni “if” e “for” e ciò non permetterà l’esecuzione delle istruzioni che sono presenti nel corpo delle rispettive istruzioni.
Versione corretta
3 | digitalWrite (normaleTemp, LOW); |
4 | digitalWrite (allarmeTemp, HIGH); |
7 | for ( int i = 0; i < 15; i++) |
In questo caso le istruzioni presenti nel corpo della if vengono eseguite se la condizione temperatura>25 è vera, nel secondo caso, nel for, sarà eseguita l’istruzione che segue fino a quando la condizioni<15 risulta vera.
Come si può notare nel for, nel caso in cui sia presente una sola istruzione nel corpo, non è indispensabile inserire le parentesi graffe, non è comunque un errore inserirle e scrivere:
2 | for ( int i = 0; i < 15; i++) |
4 | digitalWrite (i, HIGH); |
Errore simile viene spesso commesso quando si usa il #define
Versione non corretta
1 | #define PIN_LED 8; // non bisogna inserire il punto e virgola |
2 | #define PIN_LED = 8; // non bisogna inserire ne = e ne ; |
Versione corretta
il #define non richiede il punto e virgola.
Possiamo ottenere lo stesso risultato dell’istruzione precedente utilizzando const:
Questa scrittura rimane coerente rispetto alla scrittura delle variabili che fa uso dei simboli = e ; ma non efficiente dal punto dello spazio di memoria utilizzata rispetto alla #define.
Buon Coding a tutti 