Categories: ArduinoInformatica

Minivocabolario: le funzioni

Le funzioni sono molto simili alla procedure ma differiscono visivamente in due particolari:
– hanno, anziché void, un tipo, proprio come se fossero delle variabili
– in fondo al corpo, appena prima della fine, hanno un return

tipo nomeFunzione (primoParametro, secondoParamentro, etc){

   corpo della funzione;

   return nomeVariabile;
}

La funzione, esattamente come una procedura, viene chiamata ed esegue il codice contenuto nel proprio corpo. Una volta arrivata al return prende la variabile posta alla sua destra e la restituisce a chi ha chiamato la funzione.

Il tipo posto in testa alla dichiarazione della funzione è il tipo che corrisponde alla variabile che verrà ‘ritornata’ dalla funzione.

Il seguente esempio è basato sul precedente ma leggermente modificato.
La variabile numero viene incrementata di 0,5 ad ogni ciclo e allo stesso tempo viene eseguita una divisione per due di numero.
Entrambi i risultati vengono stampati.

//Funzioni 9minuti.it

float numero = 0;
float incremento = 0.5;
float numDiviso;

float aggiungiNumero(float incremento){

  numero += incremento;

  return numero / 2;

}

void setup() {

  Serial.begin(9600);
}

void loop() {
  
  Serial.print("Numero incrementato: ");
  Serial.println(numero);
  
  numDiviso = aggiungiNumero(incremento);
  
  Serial.print("Numero diviso 2: ");
  Serial.println(numDiviso);
  
  delay(1000);      
}

3 – 5 Dichiarazione di tre variabili di tipo float. Questo tipo serve quando necessitiamo di salvare dei numeri reali, ovvero quelli con la virgola.
7 – Dichiarazione della funzione, usiamo anche qui float come tipo perché il nostro incremento sarà di 0,5
9 – Sommiamo incremento a numero.
11 – return di numero / 2   Questa operazione non viene effettuata veramente su numero.
22 – Stampa della stringa  Numero incrementato:
23 – Stampa della variabile numero
25 – Alla variabile numDiviso viene assegnato il valore del nostro return
27 – Stampa della stringa Numero diviso 2:
29 – Stampa della variabile numDiviso

Vi ripropongo ora lo stesso esempio pulito un po’. L’effetto prodotto è il medesimo ma è stata rimossa la variabile numDiviso.

//Funzioni 9minuti.it

float numero = 0;
float incremento = 0.5;

float aggiungiNumero(float incremento){

  numero += incremento;

  return numero / 2;
}

void setup() {

  Serial.begin(9600);
}

void loop() {
  
  Serial.print("Numero incrementato: ");
  Serial.println(numero);
  
  Serial.print("Numero diviso 2: ");
  Serial.println(aggiungiNumero(incremento));
  
  delay(1000);      
}

24 – Si può notare il passaggio cruciale, ovvero una chiamata alla funzione come parametro di un’altra chiamata alla funzione.
Il codice va letto dall’interno verso l’esterno, ovvero prima

aggiungiNumero(incremento)

e il return diventa il parametro di

Serial.println(returnDiAggiungiNumero);

in aggiornamento

Alessandro Oppo

Alessandro è un milanese che vorrebbe scappare da Milano, è appassionato di informatica ma vorrebbe vivere senza telefono, è un artigiano eppure vorrebbe robotizzare tutto, impara una cosa e già vorrebbe studiare dell’altro. Autodidatta da sempre, gli piace sbattere la testa finché tutto non funziona come vuole lui, spesso ci riesce anche! Visita il suo blog personale alexoppo.com Il motto che si ripete dentro la testa è: “Se ci sono riusciti gli altri ci posso riuscire anche io”.

Recent Posts

Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?

Poco prima di Natale ho avuto la fortuna di poter partecipare a un evento chiamato…

4 mesi ago

Siamo quel che facciamo? – racconto breve

Armando quel giorno era particolarmente stanco. Tutto, per quanto andasse bene, sembrava metterlo sotto pressione.…

9 mesi ago

Il limite è sempre la mente – Racconto breve

Armando guardò l’orologio e vide il proprio riflesso sul quadrante bianco. Il riflesso però non…

10 mesi ago

L’ultimo giorno del carcere – Racconto breve

I muri sono muri, lo sono sempre, anche quando le porte sono aperte. Era la…

10 mesi ago

Riflessioni sul carcere

Pochi di noi riflettono sull’esistenza nella nostra società del carcere. Il carcere è la concretizzazione…

12 mesi ago

Come dovremmo dialogare secondo me

Spesso intraprendiamo delle conversazioni e delle chiacchierate piuttosto inconsapevolmente. Voglio dire che non siamo molto…

12 mesi ago