Anteprima della struttura

Dal problema all’algoritmo: sequenze, decisioni e cicli

Costruire istruzioni ordinate, scegliere con SE/ALTRIMENTI e ripetere con RIPETI o FINCHÉ. Esempi umano/macchina e laboratorio Guida il robot.

Sezione: Pensiero computazionale Aggiornato:
Articoli /dal-problema-algoritmo-sequenze-decisioni-cicli
Un piccolo robot di legno su una griglia con un percorso, due ostacoli e tessere con frecce
Un’idea diventa un percorso quando le istruzioni indicano che cosa fare, quando scegliere e quando ripetere.

15 min

Questa seconda lezione prosegue il percorso iniziato con Il pensiero computazionale: dall’intuizione alla precisione degli algoritmi.

Nel primo articolo abbiamo trasformato operazioni intuitive sulle cifre in procedure precise. Ora facciamo il passo successivo: impariamo a costruire un algoritmo. Non iniziamo da un linguaggio di programmazione, ma dalle tre strutture che useremo per organizzare le azioni: sequenza, decisione e ripetizione.

Continuiamo a confrontare soluzione umana e soluzione macchina. La prima colonna descrive un ragionamento intuitivo possibile, la seconda un procedimento esplicito. Non sono capacità esclusive: una persona può seguire l’algoritmo e un problema può ammettere più soluzioni corrette.

Apri il laboratorio Guida il robot

Prima delle istruzioni: definire il problema

Un algoritmo è un procedimento formato da istruzioni precise. Per progettarlo dobbiamo stabilire l’ingresso, cioè i dati disponibili, e l’uscita, cioè il risultato atteso. Occorre anche esplicitare le condizioni iniziali: sapere dove si trova un robot non basta, se non sappiamo in quale direzione guarda.

Lo stato è l’insieme delle informazioni che possono cambiare durante l’esecuzione: posizione, direzione, oggetti ancora da sistemare, contatore delle ripetizioni. A ogni passaggio chiediamoci quali informazioni cambiano e quali restano uguali.

Esempio: per calcolare una tariffa inventata per un esercizio, non basta dire «i bambini pagano meno». Bisogna fissare l’età limite, dire se è inclusa, assegnare i prezzi e decidere come trattare un dato non valido. Specificare il problema fa già parte della soluzione.

Sequenza: l’ordine delle azioni

Problema. Preparare lo zaino usando un elenco già disponibile di libri e quaderni, poi chiuderlo.

Soluzione umanaSoluzione macchina
Immaginiamo lo zaino pronto e raccogliamo ciò che serve. Con l’esperienza correggiamo spontaneamente un’azione fuori posto, per esempio riaprendo lo zaino se manca un libro.Prima prepara e controlla l’elenco, poi inserisce gli oggetti indicati e solo alla fine chiude lo zaino. L’ordine è esplicito: chiuderlo prima di inserire gli oggetti richiederebbe una nuova apertura.
  1. Prepara l’elenco
  2. Controlla gli oggetti disponibili
  3. Metti nello zaino gli oggetti dell’elenco
  4. Chiudi lo zaino
Sequenza dall’inizio alla preparazione dell’elenco, inserimento degli oggetti, chiusura dello zaino e fine
Sequenza: le azioni seguono l’ordine delle frecce.

Una sequenza esegue un’istruzione dopo l’altra. Ma frasi come «metti gli oggetti» sono ancora azioni di alto livello: se l’esecutore non le sa compiere, dobbiamo scomporle. Il grado di dettaglio dipende dalle operazioni che l’esecutore comprende.

Nel laboratorio le azioni elementari sono precise: Avanza di una casella, Gira a sinistra di 90°, Gira a destra di 90°. Girare non sposta il robot: modifica soltanto la direzione. Dopo una svolta, Avanza può quindi portare in una direzione diversa da prima.

Decisione: SE… ALTRIMENTI

Problema. Per una visita immaginaria, chi ha fino a 12 anni compresi paga 3 €, chi ha più di 12 anni paga 5 €. Data un’età intera non negativa, determinare il prezzo.

Soluzione umanaSoluzione macchina
Riconosciamo se la persona rientra nella fascia ridotta e scegliamo 3 € oppure 5 €. A 12 anni applichiamo ancora il prezzo ridotto.Verifica prima che l’età sia ammessa. Poi valuta la condizione età ≤ 12: se è vera assegna 3 al prezzo, altrimenti assegna 5. Esegue un solo ramo, non entrambi.
SE età ≤ 12:
    prezzo = 3
ALTRIMENTI:
    prezzo = 5
Decisione su un’età validata: fino a 12 anni prezzo 3 euro, altrimenti 5 euro
Decisione: si esegue uno solo dei due rami.

SE… ALTRIMENTI permette di scegliere fra due percorsi. La condizione deve avere un esito valutabile come vero o falso. «È abbastanza giovane» è ambiguo; età ≤ 12, nel modello dichiarato, non lo è.

Il confine è importante: con età = 12 scegliamo 3, con età = 13 scegliamo 5. Un’età negativa o non intera non deve entrare in questo schema: è un errore nei dati in ingresso. Il diagramma parte dunque da un’età già validata. Non stiamo descrivendo una tariffa reale.

Ripetizione contata: RIPETI

Problema. Preparare cinque scatole, mettendo tre matite in ciascuna.

Soluzione umanaSoluzione macchina
Riconosciamo cinque gruppi uguali: servono 5 × 3 = 15 matite. Ripetiamo la stessa operazione per ogni scatola.Usa un contatore i che parte da 1. Ripete cinque volte l’istruzione «metti tre matite nella scatola i», aumentando i di uno dopo ogni giro.
i = 1
RIPETI 5 VOLTE:
    Metti 3 matite nella scatola i
    i = i + 1

Qui il numero di ripetizioni è noto in partenza. Il corpo del ciclo è il gruppo di istruzioni ripetute; il contatore permette di distinguere i cinque giri. Si visitano le scatole 1, 2, 3, 4 e 5. Dopo l’ultimo incremento i vale 6, ma non viene eseguito un sesto giro.

Il ciclo evita di scrivere cinque copie delle istruzioni. Non elimina il lavoro materiale: le matite da sistemare rimangono quindici. Nel laboratorio RIPETI n volte segue la stessa regola e mostra il giro corrente.

Ripetizione condizionata: FINCHÉ

Problema. Mettere nello zaino tutti gli oggetti di un elenco, senza conoscere in anticipo quanti siano.

Soluzione umanaSoluzione macchina
Continuiamo a prendere ciò che manca finché non vediamo più oggetti da sistemare.Controlla se l’elenco contiene ancora oggetti. Se sì, inserisce il primo nello zaino, lo rimuove dall’elenco e ricontrolla la condizione. Se l’elenco è vuoto, esce dal ciclo.
FINCHÉ l’elenco non è vuoto:
    Metti il primo oggetto nello zaino
    Rimuovi quell’oggetto dall’elenco
Ciclo che controlla se rimangono oggetti, ne inserisce uno, lo rimuove dall’elenco e ricontrolla
Ciclo: il controllo viene ripetuto dopo ogni modifica dell’elenco.

La condizione viene verificata prima di ogni giro. Se l’elenco è vuoto all’inizio, il corpo non viene eseguito neppure una volta. Con tre oggetti, dopo ogni giro ne restano rispettivamente due, uno e zero: questa diminuzione spiega perché il procedimento termina, assumendo che nessuno aggiunga nuovi oggetti.

Se dimentichiamo di rimuovere l’oggetto dall’elenco, la condizione può restare sempre vera. Non basta scrivere FINCHÉ per garantire l’arresto: dobbiamo capire che cosa cambia nel corpo e perché rende possibile uscire. A differenza di RIPETI, il numero di giri non è un dato fissato all’inizio.

Laboratorio: guida il robot

Il laboratorio mette queste idee su una griglia 6 × 6. Il robot ha una posizione e una direzione; alcune caselle sono ostacoli e una contiene l’obiettivo. Il compito è terminare il programma sull’obiettivo. Passarci sopra e poi allontanarsi non basta.

Nella prima missione l’esempio è una sequenza: tre avanzamenti, una svolta a sinistra e altri due avanzamenti. Nella seconda usiamo RIPETI per cinque avanzamenti e poi per quattro, con una svolta fra i due gruppi. Nella terza combiniamo un ciclo e una decisione.

FINCHÉ non sei sull’obiettivo:
    SE davanti è libero:
        Avanza di una casella
    ALTRIMENTI:
        Gira a sinistra di 90°

«Davanti è libero» controlla la casella adiacente nella direzione attuale; anche il bordo è un impedimento. Non cerca un percorso completo. La strategia dell’esempio funziona sulla terza griglia predisposta: non garantisce di risolvere qualunque labirinto. Modificando gli ostacoli potresti ottenere un percorso impossibile o una ripetizione senza fine.

Il laboratorio arresta l’esecuzione dopo un limite di sicurezza di 400 passaggi. È una protezione del browser, non una dimostrazione matematica di ciclo infinito. Per garantire l’arresto serve un ragionamento sul programma e sui suoi dati.

  1. Scegli la missione e osserva partenza, direzione e obiettivo.
  2. Prima di eseguire, prova a prevedere il percorso.
  3. Premi Un passo: si evidenzia il blocco corrente e compare ciò che è stato eseguito o controllato.
  4. Usa Avvia per l’animazione, Pausa per fermarla e Indietro per rivedere uno stato precedente.
  5. Aggiungi istruzioni, cambia il tipo di blocco, riordina con le frecce o elimina con ×. I blocchi condizionali hanno due rami separati.
  6. Tocca una casella libera per aggiungere un ostacolo e verifica se il programma continua a funzionare. Carica esempio e Ripristina ostacoli permettono di ripartire.

Apri il laboratorio Guida il robot

Verificare e correggere un algoritmo

Verificare significa confrontare il risultato con la richiesta, non soltanto osservare che qualcosa si muove. Un errore può essere nell’enunciato, nei dati, nell’ordine delle istruzioni o nella condizione. Riprodurre l’esecuzione passo passo permette di trovare il primo punto in cui lo stato reale differisce da quello previsto.

ProvaRisultato da controllare
Età 12 e 13Prezzi rispettivamente 3 € e 5 €: il confine è incluso correttamente.
Elenco vuotoIl ciclo FINCHÉ non esegue il corpo.
Ostacolo subito davantiAvanza segnala il blocco; SE davanti è libero sceglie ALTRIMENTI.
Gira a sinistraLa direzione cambia, la posizione resta uguale.
Ciclo senza cambiamenti utiliCercare perché la condizione non diventa falsa; non affidarsi soltanto al limite di sicurezza.

Meno blocchi o meno azioni?

Un algoritmo corretto e uno breve non sono la stessa cosa. Nella seconda missione, nove avanzamenti e una svolta possono essere scritti come dieci istruzioni elementari. Con due blocchi RIPETI, i due corpi e la svolta bastano cinque blocchi scritti, ma le azioni eseguite restano dieci.

Nel laboratorio i passaggi comprendono anche le verifiche delle condizioni e il controllo delle ripetizioni; le azioni contano soltanto avanzamenti e svolte. Non bisogna confrontare questi numeri come se misurassero la stessa cosa. Prima controlliamo la correttezza; poi specifichiamo che cosa vogliamo ridurre: lunghezza del programma, azioni, memoria o tempo.

Usare l’IA per ragionare, non soltanto rispondere

Possiamo chiedere all’IA: «Proponi le istruzioni per questa griglia, indica la direzione iniziale, spiega ogni svolta e dimostra quali condizioni permettono di terminare». La precisione della richiesta aiuta a rendere visibili le ipotesi, ma non garantisce una risposta corretta.

Un buon controllo consiste nel cercare un controesempio: che cosa succede se aggiungo un ostacolo, se parto già sull’obiettivo o se il corpo del ciclo è vuoto? La spiegazione va confrontata con l’esecuzione e con il significato delle istruzioni. L’IA è un interlocutore per ragionare; non sostituisce la verifica.

Conclusione: prevedere, eseguire, spiegare

Sequenza, decisione e ripetizione permettono di costruire procedure più ricche delle singole operazioni. Il punto non è imparare tre parole, ma saper descrivere quali dati cambiano, quale strada viene scelta e perché il procedimento finisce.

L’abitudine da allenare è semplice: prevedere il risultato, eseguire i passaggi, spiegare quello che è accaduto e correggere le differenze. È il collegamento fra intuizione, algoritmo e controllo consapevole della tecnologia.

Apri il laboratorio Guida il robot · Rileggi la prima lezione