Skip to content
logo9minuti120x48
Menu
  • Home
  • Tutorial
    • Zaini
    • Stampa 3d
    • ebook
    • Informatica
  • Scritti
    • Racconti
    • Articoli
    • Temi
    • Storia
  • Video
  • Progetti
    • Progetto Carcere
    • Progetto Istruzione
    • Progetto Acque pulite
    • Progetto Tecnologia
    • Progetto Casa
    • Progetto Democrazia
    • Progetto Immigrazione
    • Storia
    • Progetto Storia
  • Chi siamo
    • LinkTree
  • Privacy Policy
    • Cookie Policy (EU)
  • Blog
  • Donazioni
Menu

Minivocabolario: le funzioni

Posted on 2 Luglio 201829 Agosto 2022 by Alessandro Oppo

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

Dammi un 5 virtuale, clicca like e condividi.

  • Fai clic qui per condividere su LinkedIn (Si apre in una nuova finestra) LinkedIn
  • Fai clic per condividere su Facebook (Si apre in una nuova finestra) Facebook
  • Fai clic per condividere su X (Si apre in una nuova finestra) X
  • Fai clic qui per condividere su Reddit (Si apre in una nuova finestra) Reddit
  • Fai clic per condividere su WhatsApp (Si apre in una nuova finestra) WhatsApp
  • Fai clic per condividere su Telegram (Si apre in una nuova finestra) Telegram
  • Fai clic per inviare un link a un amico via e-mail (Si apre in una nuova finestra) E-mail

Related

Cosa ne pensi? Fammelo sapere con un messaggioAnnulla risposta

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

Scoprici sui social

  • YouTube
  • Telegram
  • Facebook
  • RSS Feed

    Ultimi post

    • Dave dei Vallanzaska: AI, Milano e venti di guerra – Riflessioni su 30 anni di cambiamenti
    • Libri e Social: Intervista a Sam di Rivista Matrioska | Come Creare un Progetto Culturale Online
    • Solo l’occidente conosce la Storia? Dialogo col Professor Adolfo Scotto Di Luzio
    • Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?
    • Siamo quel che facciamo? – racconto breve
    • Il limite è sempre la mente – Racconto breve
    • L’ultimo giorno del carcere – Racconto breve

    Newsletter

    • YouTube
    • Facebook
    • Telegram
    • Dave dei Vallanzaska: AI, Milano e venti di guerra – Riflessioni su 30 anni di cambiamenti
      di Alessandro Oppo
    • Libri e Social: Intervista a Sam di Rivista Matrioska | Come Creare un Progetto Culturale Online
      di Alessandro Oppo
    • Solo l’occidente conosce la Storia? Dialogo col Professor Adolfo Scotto Di Luzio
      di Alessandro Oppo
    • Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?
      di Alessandro Oppo
    • Siamo quel che facciamo? – racconto breve
      di Alessandro Oppo

    ©2025 9minuti | Design: Newspaperly WordPress Theme
    Manage Cookie Consent
    Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
    Cookie funzionali Sempre attivo
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    Gestisci opzioni Gestisci servizi Gestisci {vendor_count} fornitori Per saperne di più su questi scopi
    Visualizza preference
    {title} {title} {title}