Impariamo a programmare con Arduino 02 – Le funzioni

Impariamo a programmare in C con Arduino - Lezione 2 le funzioni

Nell’articolo precedente abbiamo visto gli sketch, come sono strutturati e gli elementi che li compongono. In questo secondo articolo sulla programmazione con Arduino vedremo un’altro elemento fondamentale: le funzioni e il ruolo che svolgono all’interno di uno sketch. Alla fine di questa lezione, sarai in grado di riconoscere una funzione all’interno del codice e avrai tutte le conoscenze necessarie su come definirle e utilizzarle per i tuoi scopi e progetti.

Learn how to program in C with Arduino - Lesson 2 Functions m

Dichiarazione e chiamata di una funzione

Nell’articolo precedente abbiamo visto come all’interno del codice di uno sketch siano presenti alcuni elementi come i blocchi di istruzioni. Abbiamo anche visto due  funzioni che giocano il ruolo principale della struttura di uno sketch: setup() e loop(). Queste due funzioni definiscono due blocchi di istruzioni ognuna delle quali svolge una particolare attività: setup() per l’inizializzazione del programma e loop() per l’esecuzione in ciclo del programma vero e proprio.

Arduino sketch

Ora il passo seguente nella programmazione di uno sketch è quello di definire delle ulteriori funzioni. Questo significa substrutturare lo schema di partenza setup-loop visto nella prima lezione, allo scopo di creare un programma più complesso, più gestibile e soprattutto più efficiente.

Il primo passo da fare è quello di comprendere il loro corretto uso all’interno di uno sketch, o programma in generale.

Le funzioni sono in realtà dei blocchi di istruzioni che vengono identificati da un particolare nome (dichiarazione della funzione), come setup e loop, e che vengono eseguite ogni volta che si utilizzerà il loro nome (chiamata della funzione) all’interno del programma.

Vediamo meglio in dettaglio. La dichiarazione della funzione non è altro che l’assegnazione di un nome ad un blocco di istruzioni. Generalmente si sceglie un nome inerente o indicativo delle operazioni svolte dal blocco di istruzioni.

Arduino sketch - dichiarazione di una funzione

Da questo momento in poi, si potranno eseguire tutte le istruzioni contenute all’interno del blocco solamente scrivendo il nome della funzione seguito dalle due parentesi tonde, senza dover più scrivere il blocco di istruzioni. Questa è la chiamata della funzione.

nome_funzione();

Una funzione può essere chiamata infinite volte all’interno dello stesso programma.

Ripetiamo il concetto in generale.

Arduino sketch - dichiarazione e chiamate di una funzione
dichiarazione e chiamate di una funzione in uno sketch

Questa strutturazione delle funzioni all’interno di un programma non è un concetto ristretto al mondo degli sketch di Arduino, ma è un concetto dell’informatica in generale, nato da tanti anni di affinamenti e perfezionamenti sulla strutturazione più efficiente di un programma. La programmazione funzionale è infatti stata uno dei più grandi avanzamenti nella programmazione che ha portato a codici molto più piccoli ed efficienti, più facili da comprendere e da scrivere. E di conseguenza, alla possibilità di sviluppare programmi più complessi.

Le funzioni – Parametri e valori restituiti

Le funzioni sono quindi dei blocchi di istruzioni che vengono eseguiti ogni volta che vengono chiamati. Ma spesso può accadere che le istruzioni all’interno abbiano bisogno di valori definiti o in qualche modo elaborati all’esterno del blocco per poter operare. Si parla quindi di valori in ingresso.

Altre volte invece siamo noi ad aver bisogno di un eventuale risultato di una elaborazione effettuata all’interno di un blocco di istruzioni e quindi si parla di valori in uscita.

Arduino sketch - y funzione di x

Valori in uscita

Vediamo dapprima come gestire i valori in uscita. Questi generalmente vengono riferiti come valori restituiti o valori di ritorno. Per definire quale sia il valore di ritorno si inserisce la tipologia prima del nome della funzione.

Mettiamo il caso che all’interno di una funzione una serie di calcoli matematici portino ad un risultato a cui siamo interessati, che per esempio potrebbe essere un numero intero. Nella dichiarazione di una funzione definiremo come tipologia della funzione il valore int.

Arduino sketch - valore restituito intero

Si dichiarerà il valore restituito solo nella fase dichiarazione, poi non sarà più necessario riferirsi ad esso. Durante la chiamata il valore restituito potrà essere racchiuso all’interno di una variabile

result = funzione();

oppure ignorato

funzione();

In questo caso, il valore restituito si cancellerà dalla memoria.

Nel caso in cui la funzione non restituisse alcun valore, allora si dovrà definire la tipologia void all’inizio della dichiarazione.

Arduino sketch - valore restituito void

Quindi il valore restituito, sia se presente o meno (void) dovrà assolutamente essere specificato durante la dichiarazione tramite la sua tipologia immediatamente prima del nome della funzione.

Valori in entrata

Adesso vediamo come si gestiscono i valori in entrata nella dischiarazione di una funzione.

I valori in entrata vengono definiti parametri, e sono indicati all’interno delle parentesi tonde subito dopo il nome della funzione. I parametri vengono definiti in sequenza, specificando dapprima la tipologia di valore e poi un nome di riferimento. Questi parametri verranno poi utilizzati all’interno delle istruzioni del blocco per eseguire determinate operazioni.

Arduino sketch - parametri in ingresso

La presenza dei parametri non è obbligatoria. Infatti alcune funzioni non hanno bisogno di valori definiti o calcolati all’esterno del blocco di istruzioni. In questo caso si lasciano vuote le parentesi tonde.

Arduino sketch - no parametri in ingresso

Conclusioni

In questo articolo hai visto cosa sono le funzioni e come vengono utilizzate all’interno di uno sketch tramite la dichiarazione e le chiamate. Nella prossima lezione introdurremo le costanti che nella programmazione con Arduino assumono un ruolo importantissimo. Vedremo infatti come in questo tipo di programmazione le costanti siano correlate a dei concetti di elettronica, con termini e funzionalità specifiche.

Lascia un commento