Arduino IDE: cosa sono le funzioni #9

Arduino IDE

Nei precedenti articoli della guida abbiamo visto programmi caratterizzati dalla soluzione di problemi semplici. Nel momento in cui il livello di complessità del problema aumenta, conviene suddividere il programma in sottoprogrammi.

Si tratta in sostanza di definire quali siano le parti fondamentali di cui si compone il programma e procedere poi al dettaglio in ogni singola parte. Il problema e il programma viene scomposto in moduli funzionalmente indipendenti.

Nel linguaggio di programmazione di Arduino IDE i sottoprogrammi sono rappresentati attraverso le funzioni.

Ogni funzione riceve in ingresso un insieme di argomenti detti parametri e restituisce un valore.

funzioni

Le funzioni in Arduino IDE sono utilizzate per evitare di replicare porzioni di codice; infatti invocare un sottoprogramma vuol dire mandare in esecuzione la porzione di codice ad esso relativa. Una funzione può essere invocata più volte.

Prima di utilizzare una funzione occorre dichiararla come si fa per le variabili. A differenza della dichiarazione delle variabili non è sempre necessario dichiarare una funzione prima di poterla invocare. La dichiarazione ci permette di capire unicamente come invocarla, ma non è obbligatoria. Essa infatti specifica quali e quanti argomenti prende in input, oltre al tipo del valore di ritorno.

La sintassi è dunque questa:

Il primo elemento della dichiarazione è il tipo del valore restituito. Esso è seguito dal nome della funzione e da una lista di zero o più parametri tra parentesi tonde, separati da virgole. Per ognuno di essi si indica il tipo ed il nome. La dichiarazione è terminata dal simbolo “;”. Il nome scelto per la funzione dovrebbe dare un’idea del tipo di operazione che essa espleta.

Ecco alcuni esempi:

  • double cubo(float c);
  • int max(int x, int y);
  • int minimo(double x, double y);
  • void calcola_area (float a, float b);

Una funzione può essere definita anche dopo il void loop. Le funzioni si definiscono in questo modo:

L’invocazione, ovvero la chiamata di funzione, è un’istruzione che permette l’esecuzione della funzione. Viene effettuata all’interno del main() o del loop(). Occorre specificare il nome della funzione seguita dall’eventuale elenco, tra parentesi tonde, dei valori da assegnare ai parametri della funzione. Anche se non vi sono parametri, le parentesi che seguono il nome della funzione sono obbligatorie:

Al momento della chiamata il compilatore esegue il controllo di corrispondenza tra i parametri specificati nella definizione della funzione e i valori passati alla funzione.

I parametri sono detti anche argomenti: sono i dati che vengono “passati” alla funzione al momento della chiamata. 

I parametri formali sono quelli definiti nell’intestazione. I parametri attuali sono quelli utilizzzati nella chiamata vera e propria e possono avere un nome diverso dai parametri formali.  I due tipi di parametri devono corrispondere IN NUMERO (se la funzione prevede due parametri, bisogna passargliene due), IN TIPO (es se il primo è int e il secondo char, occorre passarglieli in questo modo) e IN ORDINE (es. se i parametri sono prima la base e poi l’esponente, occorre seguire il medesimo ordine)

Una funzione di tipo void è una funzione che non restituisce nessun valore. In tal caso l’istruzione return è omessa. La funzione void è anche definita procedura, in quanto non restituisce nessun valore ma esegue le istruzioni all’interno delle funzioni. Il nome procedura è mutuato da linguaggi di programmazione più anziani, come il Pascal.

Link guida:

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.