Minivocabolario: le funzioni

0
(0)

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

Votalo e aiutami a migliorare!

Rating medio 0 / 5. Numero di voti 0

Nessun voto per il momento, vuoi essere il primo?

Clicca sul tuo social preferito.

Cosa ho sbagliato?

Hai qualche consiglio per migliorare la qualità?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.