Categories: ArduinoInformatica

Minivocabolario: le procedure

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);      
}

3Dichiariamo 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

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…

12 mesi ago

Siamo quel che facciamo? – racconto breve

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

1 anno ago

Il limite è sempre la mente – Racconto breve

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

1 anno ago

L’ultimo giorno del carcere – Racconto breve

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

1 anno ago

Riflessioni sul carcere

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

2 anni ago

Come dovremmo dialogare secondo me

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

2 anni ago