← Torna al blog Programmazione · 8 min di lettura

Le tre strutture di base: sequenza, selezione e ciclo

📅 15 giugno 2026 — di Alessandro Simone

C'è una cosa che sorprende chi inizia a programmare: per quanto un programma possa sembrare complicato, è sempre costruito con soli tre tipi di mattoni. Si chiamano sequenza, selezione e iterazione, e sono le strutture di base della programmazione. Capirle bene significa avere in mano la grammatica con cui si scrive qualsiasi codice. In questa guida le vediamo una per una, ciascuna come diagramma di flusso e come codice Python.

Cosa sono le strutture di base?

Le strutture di base sono i tre modi fondamentali in cui si possono organizzare le istruzioni di un programma. Qualunque algoritmo, dal più semplice al più complesso, si costruisce combinando solo queste tre: eseguire istruzioni in ordine (sequenza), scegliere tra strade diverse (selezione), ripetere operazioni (iterazione).

Non è un'opinione, è un teorema. Due matematici, Böhm e Jacopini, hanno dimostrato negli anni Sessanta che queste tre strutture bastano a scrivere qualsiasi programma, per quanto complesso. È il fondamento di quella che si chiama programmazione strutturata. Per te, in pratica, significa una buona notizia: non devi imparare cento costrutti, te ne bastano tre.

La sequenza: un'istruzione dopo l'altra

La sequenza è la struttura più semplice: le istruzioni vengono eseguite una dopo l'altra, nell'ordine in cui sono scritte, dall'alto verso il basso. Nessuna scelta, nessuna ripetizione: solo passi in fila.

Istruzione 1 Istruzione 2 Istruzione 3
La sequenza: i passi si eseguono in ordine, uno dopo l'altro.

In Python la sequenza è semplicemente scrivere le righe una sotto l'altra:

# Calcolo l'area di un rettangolo: tre passi in sequenza
base = 5
altezza = 3
area = base * altezza
print("Area:", area)   # Area: 15

Python esegue queste righe nell'ordine esatto in cui sono scritte: prima assegna la base, poi l'altezza, poi calcola, poi stampa. Cambiare l'ordine, ad esempio calcolare l'area prima di aver definito la base, darebbe errore.

La selezione: scegliere tra due strade

La selezione serve quando il programma deve prendere una decisione: a seconda che una condizione sia vera o falsa, si esegue un blocco di istruzioni oppure un altro. Nel diagramma di flusso è il rombo; in Python è il costrutto if... else.

Condizione vera? Blocco A no Blocco B
La selezione: la condizione decide quale blocco eseguire.
# Decido se uno studente è promosso in base alla media
media = 7

if media >= 6:
    print("Promosso")     # blocco A: condizione vera
else:
    print("Rimandato")    # blocco B: condizione falsa

Se la condizione media >= 6 è vera, Python esegue il primo blocco; altrimenti esegue quello dopo else. Solo uno dei due viene eseguito, mai entrambi. È esattamente il rombo del diagramma di flusso, lo stesso che abbiamo usato nell'esempio della media dei voti.

L'iterazione: ripetere finché serve

L'iterazione, cioè il ciclo, serve a ripetere un blocco di istruzioni più volte. Nel diagramma di flusso è quel percorso che torna su sé stesso finché una condizione resta vera; in Python si realizza con il for o con il while.

Condizione vera? Ripeti le istruzioni no esci
L'iterazione: finché la condizione è vera si ripete, poi si esce.
# Stampo i voti di uno studente, uno per uno
voti = [7, 8, 6, 9]

for voto in voti:
    print("Voto:", voto)   # questo blocco si ripete per ogni voto

Il blocco dentro il for viene ripetuto per ogni elemento della lista. Ho dedicato una guida completa a questa struttura nell'articolo sul ciclo for in Python, dove vedi anche la funzione range e gli errori più comuni.

Come si combinano le tre strutture?

Il bello arriva ora: le tre strutture si annidano una dentro l'altra, e da questa combinazione nasce qualsiasi programma. Puoi avere una selezione dentro un ciclo, o un ciclo dentro un ramo di una selezione. Ecco un esempio che le usa tutte e tre insieme:

# Conto quanti studenti sono promossi in una classe
voti = [7, 4, 8, 5, 6]   # sequenza: preparo i dati
promossi = 0             # sequenza: inizializzo il contatore

for voto in voti:        # iterazione: scorro i voti
    if voto >= 6:        # selezione: controllo se è sufficiente
        promossi = promossi + 1

print("Promossi:", promossi)   # Promossi: 3

Guarda la struttura: c'è la sequenza (le prime righe in ordine), dentro c'è un'iterazione (il for che scorre i voti), e dentro il ciclo c'è una selezione (l'if che controlla ogni voto). Tre mattoni semplici che, combinati, risolvono un problema reale. Questo è il senso della programmazione strutturata.

In sintesi

Qualsiasi programma si costruisce con tre sole strutture: la sequenza (istruzioni in ordine), la selezione (l'if, per decidere) e l'iterazione (il ciclo, per ripetere). Lo dice il teorema di Böhm-Jacopini, e lo confermi tu stesso ogni volta che scrivi codice. Le hai viste come diagrammi di flusso e come Python, e hai visto che si combinano tra loro. Da qui, il passo naturale è approfondire i due tipi di ciclo, il for e il while, per capire quando usare l'uno e quando l'altro.

Domande frequenti

Quali sono le tre strutture di base della programmazione? +

Le tre strutture di base sono la sequenza, la selezione e l'iterazione. La sequenza è l'esecuzione delle istruzioni una dopo l'altra, nell'ordine in cui sono scritte. La selezione è la scelta tra due strade in base a una condizione, e corrisponde al costrutto if... else. L'iterazione è la ripetizione di un blocco di istruzioni, realizzata con i cicli for o while. Secondo il teorema di Böhm-Jacopini, queste tre strutture bastano a costruire qualsiasi programma, per quanto complesso. È il fondamento della programmazione strutturata: non servono decine di costrutti diversi, ne bastano tre combinati tra loro.

Cos'è il teorema di Böhm-Jacopini? +

È un teorema dimostrato dai matematici Corrado Böhm e Giuseppe Jacopini negli anni Sessanta, secondo cui qualsiasi algoritmo può essere realizzato usando solo tre strutture di controllo: la sequenza, la selezione e l'iterazione. In altre parole, non occorrono salti arbitrari nel codice per scrivere un programma, per quanto complesso: bastano questi tre mattoni combinati e annidati tra loro. Questo teorema è il fondamento teorico della programmazione strutturata, l'approccio che rende il codice ordinato, leggibile e privo di salti caotici. Per chi studia, è la garanzia che imparare bene tre sole strutture è sufficiente per programmare qualsiasi cosa.

Qual è la differenza tra selezione e iterazione? +

La selezione serve a scegliere: in base a una condizione, il programma esegue un blocco di istruzioni oppure un altro, una sola volta. È il costrutto if... else, e nel diagramma di flusso è il rombo da cui escono i rami "sì" e "no". L'iterazione invece serve a ripetere: lo stesso blocco di istruzioni viene eseguito più volte, finché una condizione resta vera. Sono realizzate con i cicli for e while. La differenza chiave è che la selezione decide una volta quale strada prendere, mentre l'iterazione torna indietro e ripete. Spesso si combinano: ad esempio una selezione dentro un ciclo, per controllare ogni elemento mentre lo si scorre.

Cos'è la programmazione strutturata? +

La programmazione strutturata è un modo di scrivere programmi usando solo le tre strutture di base, sequenza, selezione e iterazione, evitando i salti arbitrari nel codice. Nasce dal teorema di Böhm-Jacopini e si è affermata perché rende il codice ordinato, leggibile e più facile da correggere. Prima della sua diffusione si usavano istruzioni di salto che rendevano i programmi caotici e difficili da seguire, il cosiddetto "codice spaghetti". Programmare in modo strutturato significa costruire l'algoritmo combinando e annidando i tre mattoni fondamentali, ed è l'approccio che si insegna a scuola e che useresti naturalmente scrivendo in Python.

Come si combinano le tre strutture in un programma? +

Le tre strutture si annidano una dentro l'altra, e da questa combinazione nasce qualsiasi programma. Si può avere una selezione dentro un ciclo, ad esempio per controllare ogni elemento mentre lo si scorre, oppure un ciclo dentro un ramo di una selezione. Un esempio tipico: per contare quanti studenti sono promossi, si prepara la lista dei voti (sequenza), si scorrono i voti uno per uno (iterazione) e per ciascuno si controlla se raggiunge la sufficienza (selezione). Tre mattoni semplici che, combinati, risolvono un problema reale. Imparare a riconoscere e combinare queste strutture è la vera abilità di base del programmatore.

Continua il percorso

Hai visto che il ciclo è una delle tre strutture. Ora scopri i due modi di realizzarlo in Python e quando usare l'uno o l'altro.

Vai al ciclo for →