I contatori, l’inizializzazione e il ciclo for

Oggi illustrerò uno degli elementi più importanti dell’informatica, per scrivere algoritmi e programmi: i contatori. Verso la fine, invece, illustrerò il ciclo for, che permette di utilizzare direttamente i contatori.

I contatori

Come dice la parola stessa, un contatore è un elemento che conta e che ricorda il numero delle istruzioni eseguite.

Prendiamo per esempio un algoritmo che permette di inserire 5 numeri e che ne calcoli la somma.

Seguiamo i passaggi dell’algoritmo.

  1. Inizializzazione del contatore (vedi sotto). contatore = 0;
  2. Inizializzazione della somma (vedi sotto). somma = 0.0;
  3. contatore è minore di 5? SI (è a 0);
  4. Inserisci numero. numero = 10;
  5. somma = somma + numero. somma = 0 + 10 = 10;
  6. contatore = contatore + 1. contatore = 0 + 1 = 1;
  7. contatore è minore di 5? SI (è a 1);
  8. Inserisci numero. numero = 20;
  9. somma = somma + numero. somma = 10 + 20 = 30;
  10. contatore = contatore + 1. contatore = 1 + 1 = 2;
  11. contatore è minore di 5? SI (è a 2);
  12. Inserisci numero. numero = 10;
  13. somma = somma + numero. somma = 30 + 10 = 40;
  14. contatore = contatore + 1. contatore = 2 + 1 = 3;
  15. contatore è minore di 5? SI (è a 3);
  16. Inserisci numero. numero = 50;
  17. somma = somma + numero. somma = 40 + 50 = 90;
  18. contatore = contatore + 1. contatore = 3 + 1 = 4;
  19. contatore è minore di 5? SI (è a 4);
  20. Inserisci numero. numero = 10;
  21. somma = somma + numero. somma = 90 + 10 = 100;
  22. contatore = contatore + 1. contatore = 4 + 1 = 5;
  23. contatore è minore di 5? NO (è a 5. Non è minore ma uguale!);
  24. Output: somma. somma = 100.

Questi sono tutti i passaggi che esegue l’algoritmo. Ho evidenziato in grassetto l’inizio del ciclo (ovvero quando verifica la condizione), in rosso i blocchi interni al ciclo e in verde l’incremento del contatore.

Generalmente la variabile contatore si può chiamare i, j o count.

Inizializzazione

Quando si deve calcolare il valore di un’espressione di tipo “somma = somma + numero”, inizialmente bisogna inizializzare il valore della variabile somma, perché se non è inizializzata, assume un valore dalla memoria del computer, che potrebbe non essere il valore 0.

Prendiamo per esempio il programma spiegato in precedenza, quello sulla somma tra 5 numeri, senza inizializzare la somma.

La variabile somma potrebbe assumere un valore casuale (che in realtà non è casuale, ma segue una logica ben precisa). Per esempio potrebbe assumere il valore 12554. La somma, così, invece di essere 100, come nell’esercizio precedente, risulterebbe essere 12654.

Se utilizzi Algobuild, il programma ti darà errore.

Attenzione!

Le variabili che possono assumere un valore con la virgola nel corso del programma, si devono inizializzare con il punto (la virgola), tipo 0.0 oppure 0.00 ecc…, mentre i valori che sono sempre positivi, come i contatori, possono essere inizializzati solo con lo 0.

Generalmente quando si incrementa un’espressione del tipo “somma = somma + numero”, si inizializza somma a 0.0, perché numero può assumere un valore con la virgola, mentre in “contatore = contatore + 1”, l’1 è sempre intero, ovvero senza virgola, quindi la variabile contatore può essere iniziata solo a 0.

Il ciclo for

Ora che sai cosa è un contatore e come si scrive un’inizializzazione, è il momento di parlare del ciclo for, il terzo e ultimo da imparare.

Quando l’ho introdotto banalmente, ho specificato che è un ciclo completo.

Perché? Perché l’esagono, che si usa al posto del rombo nel ciclo for, oltre che alla condizione, comprende anche l’inizializzazione e l’incremento del contatore.

Ecco la sua costruzione:

Prendiamo sempre l’esercizio sulla somma di 5 numeri, per esempio. Stavolta, però, usiamo un ciclo for.

Somma 5 numeri flow-chart

Spiegazione:

  1. Inizializzazione della somma;
  2. Inizializza la variabile “i” nel ciclo for. i=0;
  3. Verifica la condizione: i è minore di 5? SI (è a 0);
  4. Input numero. numero = 10;
  5. somma = somma + numero. somma = 0 + 10 = 10;
  6. Incrementa i. i = i + 1 —> i = 0 + 1 = 1;
  7. Verifica la condizione: i è minore di 5? SI (è a 1);
  8. Input numero. numero = 10;
  9. somma = somma + numero. somma = 10 + 10 = 20;
  10. Incrementa i. i = i + 1 —> i = 1 + 1 = 2;
  11. Verifica la condizione: i è minore di 5? SI (è a 2);
  12. Input numero. numero = 50;
  13. somma = somma + numero. somma = 20 + 50 = 70;
  14. Incrementa i. i = i + 1 —> i = 2 + 1 = 3;
  15. Verifica la condizione: i è minore di 5? SI (è a 3);
  16. Input numero. numero = 10;
  17. somma = somma + numero. somma = 70 + 10 = 80;
  18. Incrementa i. i = i + 1 —> i = 3 + 1 = 4;
  19. Verifica la condizione: i è minore di 5? SI (è a 4);
  20. Input numero. numero = 20;
  21. somma = somma + numero. somma = 80 + 20 = 100;
  22. Incrementa i. i = i + 1 —> i = 4 + 1 = 5;
  23. Verifica la condizione: i è minore di 5? NO (è a 5);
  24. Stampa somma.

Ho sempre evidenziato in grassetto quando lavora l’esagono.

Come vedete, il ciclo for fa la stessa cosa che può fare un ciclo while, utilizzando lo stesso numero di istruzioni. Il for è più conveniente per una questione di ordine e spazio.

Quando parte il ciclo, solo la prima volta la variabile contatore viene inizializzata, poi l’istruzione di inizializzazione non lavorerà più. Subito dopo verifica la condizione, esegue i blocchi all’interno del ciclo, e una volta finita l’esecuzione di questi, incrementa il contatore. Poi verifica di nuovo la condizione, esegue i blocchi e infine incrementa il contatore, e così via.

Quindi, schematizzando, l’esecuzione di un ciclo for funziona così:

  1. Inizializza
  2. Verifica la condizione
  3. Esegue i blocchi
  4. Incrementa
  5. Verifica la condizione
  6. Esegue i blocchi
  7. Incrementa
  8. Verifica la condizione
  9. Esegue i blocchi
  10. Incrementa
  11. ecc…

Fino a quando la condizione non diventa falsa.

In grassetto ho evidenziato la parte che si ripete finché la condizione non diventa falsa.

Ora sei pronto per creare qualche flow-chart con i cicli.