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 procedure

Posted on 2 Luglio 201829 Agosto 2022 by Alessandro Oppo

Le procedure sono dei brani di codice che possono servire più e più volte all’interno del nostro programma.
La procedura si dichiara al di fuori del loop() e del setup() ed è composta da tre parti: dichiarazione, parametro/i, corpo.

void nomeFunzione (primoParametro, secondoParamentro, etc){

   corpo della procedura;

}

Avrete notato, spero, la parola void scritta prima di nomeFunzione, questa è la parolina magica che ci fa capire che si tratta appunto di una procedura e non di una funzione.

Per fare un esempio pratico proviamo a scrivere una procedura semplice semplice.

//Procedure 9minuti.it

void aggiungiUno(){

   int numero = 0;
   numero = numero + 1;

   Serial.println(numero);

}


void setup() {
  
  Serial.begin(9600);
}

void loop() {

  aggiungiUno();
  
  delay(1000);      
}

3 – Dichiariamo la procedura e non mettiamo alcun parametro, già, perché non sono assolutamente obbligatori.
5 – Dichiariamo una variabile chiamata numero e la inizializziamo a 0
6 – Sommiamo alla variabile numero quanto essa vale più uno. Colgo l’occasione per dire che se avessimo scritto

numero++;

 

avremmo ottenuto lo stesso effetto.
8 – Stampiamo a monitor il valore della variabile numero.
13 – Ora dovreste dirmi. <<Ferma, ferma Alessandro… Ma quindi anche void setup() e void loop() sono delle procedure?>> Assolutamente sì, seppur di tipo particolare.
15 – Chiamata del metodo begin() dell’oggetto Serial con parametro 9600. In parole povere questa riga ci serve per avviare la comunicazione seriale e poter leggere quello che il nostro Arduino scriverà.
20 – Chiamata della nostra procedura aggiungiUno(). L’utilizzo di una procedura, di una funzione o di un metodo si chiama chiamata alla funzione.
22
– Piccolo delay da 1 secondo

Vi invito a provare questo codice. In teoria, se tutto va come ci si aspetta, dovrebbe stampare a video 1, 2, 3 e così via. Questo perché la procedura loop() viene rieseguita ogni secondo e con lei il codice che contiene al suo interno.

Ora, se siete tornati qui, è perché avete eseguito lo sketch e siete arrabbiati. Com’è che non funziona? Perché stampa solamente 1, 1 e di nuovo 1? Non avete sbagliato, mi sono solo dimenticato apposta di dirvi una cosa molto importante.

Le variabili contenute all’interno delle procedure, delle funzioni, dei metodi sono valide solo all’interno della funzione ed ogni volta che la procedura viene chiamata è come se partisse tutto da zero.
Però, come avete potuto notare, la prima somma viene eseguita senza problemi. 🙂

Ecco questa volta il codice funzionante.

//Procedure 9minuti.it

int numero = 0;

void aggiungiUno(){

  numero = numero + 1;

  Serial.println(numero);

}


void setup() {

  Serial.begin(9600);
}

void loop() {

  aggiungiUno();

  delay(1000);      
}

Come potete vedere, cambia ben poco. Non nel risultato però, perché questa volta funzionerà perfettamente.
L’unica differenza fra questo codice e il precedente sta nella dichiarazione della variabile numero.

Una variabile dichiarata all’esterno da qualsiasi parentesi graffa si chiama variabile globale ed è visibile da tutto il programma.

Se noi

int numero = 0;

 

l’avessimo scritto dentro il setup() poi né il loop() e né la nostra procedura aggiungiUno() l’avrebbero potuta vedere.


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}