Algoritmi e pensiero computazionale
Prima di scrivere una sola riga di codice bisogna avere chiarissimi i passi da compiere. Pensa all'app che ti dice quando passa l'autobus: qualcuno ha dovuto spiegare al telefono, passo dopo passo, come trovare l'orario giusto. Quell'elenco di passi esatti (per esempio: «scegli la stazione di partenza, trova la linea, scendi alla fermata di arrivo» in metropolitana) è un algoritmo, e il modo di ragionare per costruirlo si chiama pensiero computazionale. Alla fine della pagina vedrai come si spiega a una macchina anche una cosa semplice come distribuire dei panini in mensa.
Che cos'è un algoritmo
Scrivi l'algoritmo, come elenco di passi numerati, per preparare un panino al formaggio, in modo che una persona che non ne ha mai fatto uno possa seguirlo senza dubbi.…
Scrivi l'algoritmo, come elenco di passi numerati, per preparare un panino al formaggio, in modo che una persona che non ne ha mai fatto uno possa seguirlo senza dubbi. Rivedi il tuo elenco e verifica che non manchino passi che davi per scontati.
Nella ricetta «friggere un uovo» individua l'ingresso (gli ingredienti e gli utensili), l'elaborazione (i passi con il fuoco e la padella) e l'uscita (il risultato).…
Nella ricetta «friggere un uovo» individua l'ingresso (gli ingredienti e gli utensili), l'elaborazione (i passi con il fuoco e la padella) e l'uscita (il risultato). Spiega perché ragionare così aiuta a scrivere algoritmi chiari.
Una ricetta dice «mescola la salsa finché si addensa». Spiega perché un algoritmo deve sempre terminare e che cosa potrebbe succedere se la salsa non si addensasse mai.…
Una ricetta dice «mescola la salsa finché si addensa». Spiega perché un algoritmo deve sempre terminare e che cosa potrebbe succedere se la salsa non si addensasse mai. Riscrivi quel passo in modo che il cuoco non resti a mescolare per sempre.
Scrivi l'algoritmo per preparare un bicchiere di latte al cacao in sei o otto passi, così precisi che potrebbe seguirli un robot: quantità, ordine dei passi e come…
Scrivi l'algoritmo per preparare un bicchiere di latte al cacao in sei o otto passi, così precisi che potrebbe seguirli un robot: quantità, ordine dei passi e come verificare che il cacao si sia sciolto prima di finire.
Una ricetta dice: «aggiungi sale e lascia cuocere un po' a fuoco medio». Spiega perché un computer non potrebbe seguire quell'istruzione e riscrivila come un passo di…
Una ricetta dice: «aggiungi sale e lascia cuocere un po' a fuoco medio». Spiega perché un computer non potrebbe seguire quell'istruzione e riscrivila come un passo di algoritmo preciso, indicando quantità, tempi e come verificare che il passo sia terminato.
Diagrammi di flusso: sequenza, selezione e iterazione
Ogni algoritmo si costruisce con tre strutture: la sequenza (un passo dopo l'altro), la selezione (si sceglie tra due strade in base a una condizione) e l'iterazione, o ciclo (si ripetono dei passi). Il diagramma di flusso (o diagramma a blocchi) le disegna con forme precise. Lo useremo per ricette, percorsi in metropolitana o l'orario del treno regionale: ogni situazione con passi e decisioni.
Nella ripetizione conta sempre la condizione di arresto: è lei che dice quando il ciclo finisce. «Finché ci sono carte in mano, dai una carta» termina quando non restano più carte in mano.
Gli stessi passi con i blocchi incastrati
Molti ambienti di programmazione (come Scratch) non usano il diagramma di flusso, ma blocchi che si incastrano uno sotto l'altro. Sono lo stesso algoritmo in un'altra forma: il blocco «se… allora… altrimenti» è il rombo (selezione), il blocco «ripeti finché…» è il ciclo con la sua condizione di arresto, e i blocchi impilati sono la sequenza. Per leggerli si va dall'alto verso il basso, entrando nei blocchi a «C» quando la condizione lo richiede.
Questi passi dell'algoritmo «andare a scuola» sono in disordine: (a) entrare in classe, (b) alzarsi, (c) fare colazione, (d) uscire di casa, (e) vestirsi, (f) camminare…
Questi passi dell'algoritmo «andare a scuola» sono in disordine: (a) entrare in classe, (b) alzarsi, (c) fare colazione, (d) uscire di casa, (e) vestirsi, (f) camminare fino a scuola. Mettili nell'ordine corretto e aggiungi all'algoritmo una decisione: che cosa fare se piove quando esci di casa.
La figura mostra, con blocchi incastrati, l'algoritmo di una lampada da lettura automatica che deve accendersi solo quando c'è poca luce, ma manca un blocco. Indica…
La figura mostra, con blocchi incastrati, l'algoritmo di una lampada da lettura automatica che deve accendersi solo quando c'è poca luce, ma manca un blocco.
Indica quale blocco metteresti nello spazio vuoto e spiega con parole tue come funziona l'algoritmo completo, passo dopo passo.
Leggi questo algoritmo: (1) prendi il mazzo di carte, (2) finché ci sono carte in mano, dai una carta a ciascun giocatore partendo dalla tua sinistra, (3) quando non ci…
Leggi questo algoritmo: (1) prendi il mazzo di carte, (2) finché ci sono carte in mano, dai una carta a ciascun giocatore partendo dalla tua sinistra, (3) quando non ci sono più carte, annuncia «distribuite». Spiega con una frase che cosa fa l'algoritmo e indica quale parte è la ripetizione e quando termina.
Molti apparecchi di uso quotidiano seguono algoritmi. Scegline due da questo elenco —lavatrice, forno a microonde, semaforo— e descrivi per ciascuno quali dati riceve…
Molti apparecchi di uso quotidiano seguono algoritmi. Scegline due da questo elenco —lavatrice, forno a microonde, semaforo— e descrivi per ciascuno quali dati riceve (ingresso), che cosa decide o ripete (elaborazione) e che cosa fa alla fine (uscita).
Fai la traccia di esecuzione di questo algoritmo con $n = 7$: (1) parti dal valore $n$, (2) ripeti tre volte: aggiungi 2, (3) sottrai 5, (4) scrivi il risultato. Annota…
Fai la traccia di esecuzione di questo algoritmo con $n = 7$: (1) parti dal valore $n$, (2) ripeti tre volte: aggiungi 2, (3) sottrai 5, (4) scrivi il risultato. Annota il valore dopo ogni passo, dai il risultato finale e spiega che cos'è una traccia di esecuzione e a che cosa serve farla a mano.
Scrivi l'algoritmo per contare quante persone entrano dalla porta dell'aula usando solo una variabile «contatore» che parte da 0: che cosa fai ogni volta che entra…
Scrivi l'algoritmo per contare quante persone entrano dalla porta dell'aula usando solo una variabile «contatore» che parte da 0: che cosa fai ogni volta che entra qualcuno, come sai quando smettere di contare e quale valore avrà il contatore alla fine.
Scomporre, riconoscere schemi e astrarre
Scomporre. «Organizzare la festa di fine anno» spaventa; ma diviso in musica, cibo, inviti e allestimento diventa quattro lavori piccoli, che si possono affidare a persone diverse. Se due compiti non dipendono l'uno dall'altro (spremere il succo e apparecchiare) si possono fare in contemporanea; se uno dipende dall'altro (servire il caffè dopo averlo fatto) l'ordine è obbligato.
Riconoscere schemi. La sequenza $5, 10, 15, 20, \dots$ segue la regola «aggiungi 5»; la sequenza $100, 90, 80, \dots$ segue «sottrai 10». Trovata la regola, puoi prevedere qualunque termine, e un ciclo la può ripetere.
Astrarre. Astrarre significa tenere solo gli elementi essenziali di un problema e lasciare da parte i dettagli inutili, come vedrai nell'esempio della metropolitana qui sotto.
Più algoritmi, stesso problema. Una stessa soluzione può essere raggiunta con algoritmi diversi: per cercare «pipistrello» in un dizionario puoi sfogliare una pagina alla volta, oppure aprire a metà e scartare ogni volta la metà che non interessa (funziona solo se le parole sono in ordine alfabetico). Il secondo metodo è più efficiente: con 500 pagine servono circa 9 aperture (le pagine si dimezzano: $500 \to 250 \to 125 \to \dots$), contro le 500 del primo nel caso peggiore (stima: circa 9). Per stimarle, chiediti quante volte puoi dimezzare 500 pagine prima di restare con una sola: $500 \to 250 \to 125 \to 63 \to 32 \to 16 \to 8 \to 4 \to 2 \to 1$, cioè circa 9 dimezzamenti, e quindi circa 9 aperture.
Scomponi il problema «organizzare la festa di fine anno» in quattro sottoproblemi più piccoli e scrivi due passi concreti per risolvere ciascuno. Spiega quale vantaggio…
Scomponi il problema «organizzare la festa di fine anno» in quattro sottoproblemi più piccoli e scrivi due passi concreti per risolvere ciascuno. Spiega quale vantaggio ha dividere così un problema grande.
Riconoscere gli schemi significa trovare la regola che si ripete. Scopri lo schema di queste tre sequenze ed esprimilo come regola chiara: (a) 5, 10, 15, 20, …, (b) 100,…
Riconoscere gli schemi significa trovare la regola che si ripete. Scopri lo schema di queste tre sequenze ed esprimilo come regola chiara: (a) 5, 10, 15, 20, …, (b) 100, 90, 80, 70, …, (c) lunedì: 1 flessione, martedì: 2, mercoledì: 4, giovedì: 8, … Indica quale valore verrebbe dopo in ciascuna.
Per ordinare un mazzo di carte esistono diversi algoritmi, e alcuni sono più rapidi di altri. Spiega con un esempio della vita quotidiana che uno stesso problema può…
Per ordinare un mazzo di carte esistono diversi algoritmi, e alcuni sono più rapidi di altri. Spiega con un esempio della vita quotidiana che uno stesso problema può avere più algoritmi che lo risolvono e che cosa significa che uno sia «migliore» di un altro.
La mappa della metropolitana non disegna la città reale: elimina distanze, curve e strade, e tiene solo stazioni e collegamenti. Spiega che cos'è l'astrazione usando…
La mappa della metropolitana non disegna la città reale: elimina distanze, curve e strade, e tiene solo stazioni e collegamenti. Spiega che cos'è l'astrazione usando questo esempio e applicala poi alla pianta della tua scuola: quali tre cose includeresti e quali tre cose elimineresti.
Puoi farlo su carta e inviare una foto con la tua risposta.
Cerchi la parola «pipistrello» in un dizionario di 500 pagine. Confronta questi due algoritmi: aprire dalla prima pagina e avanzare una pagina alla volta, oppure aprire…
Cerchi la parola «pipistrello» in un dizionario di 500 pagine. Confronta questi due algoritmi: aprire dalla prima pagina e avanzare una pagina alla volta, oppure aprire a metà e scartare via via la metà che non interessa. Spiega quale è più efficiente, perché funziona solo se le pagine sono ordinate e stima quante «aperture» richiede ciascun metodo.
Due persone preparano insieme la colazione per quattro ospiti: bisogna fare il caffè, tostare il pane, spremere il succo e apparecchiare la tavola. Distribuisci i…
Due persone preparano insieme la colazione per quattro ospiti: bisogna fare il caffè, tostare il pane, spremere il succo e apparecchiare la tavola. Distribuisci i compiti tra i due rispettando le dipendenze (non si può servire il caffè prima di averlo fatto) e spiega quali compiti possono essere svolti contemporaneamente e quali no, indicandone l'ordine.
Casi limite ed errori negli algoritmi
Questo algoritmo per «fare il bucato» ha un errore: (1) mettere tutti i vestiti in lavatrice, bianchi e colorati insieme, (2) aggiungere il detersivo, (3) scegliere il…
Questo algoritmo per «fare il bucato» ha un errore: (1) mettere tutti i vestiti in lavatrice, bianchi e colorati insieme, (2) aggiungere il detersivo, (3) scegliere il programma lungo ad acqua calda, (4) stendere. Trova due passi problematici, spiega che cosa può andare storto in ciascuno e riscrivi l'algoritmo corretto con un passo di selezione preliminare.
L'algoritmo di una mensa distribuisce un panino a ciascun partecipante, ma non funziona quando i partecipanti sono più dei panini. Spiega che cos'è un «caso limite» in…
L'algoritmo di una mensa distribuisce un panino a ciascun partecipante, ma non funziona quando i partecipanti sono più dei panini. Spiega che cos'è un «caso limite» in un algoritmo, proponi come dovrebbe comportarsi la distribuzione in quella situazione e riscrivi il passaggio problematico in modo che l'algoritmo non fallisca.
Uno sportello bancomat ha solo banconote da $20\ \text{€}$ e il suo algoritmo distribuisce l'importo richiesto in banconote. Spiega che cosa succede quando qualcuno…
Uno sportello bancomat ha solo banconote da $20\ \text{€}$ e il suo algoritmo distribuisce l'importo richiesto in banconote. Spiega che cosa succede quando qualcuno richiede $75\ \text{€}$, perché è un caso limite e riscrivi le regole del bancomat in modo che risponda sempre qualcosa di ragionevole.
Progetta l'algoritmo completo, con passi numerati che comprendano decisioni e ripetizioni, di un semaforo pedonale a pulsante: che cosa accade da quando qualcuno preme…
Progetta l'algoritmo completo, con passi numerati che comprendano decisioni e ripetizioni, di un semaforo pedonale a pulsante: che cosa accade da quando qualcuno preme il pulsante fino a quando il semaforo torna allo stato iniziale, compresi i tempi di ciascuna luce.
Pensa a un programma che gioca a tris. Descrivi la strategia che seguirebbe a ogni turno: quali dati della griglia deve osservare, in quale ordine e quali regole…
Pensa a un programma che gioca a tris. Descrivi la strategia che seguirebbe a ogni turno: quali dati della griglia deve osservare, in quale ordine e quali regole useresti per decidere dove collocare il segno. Non serve scrivere codice: bastano le regole in linguaggio naturale.
La figura mostra, con blocchi incastrati, lo scheletro di un gioco in cui si deve indovinare un numero segreto, ma all'interno del ciclo manca un pezzo affinché il gioco…
La figura mostra, con blocchi incastrati, lo scheletro di un gioco in cui si deve indovinare un numero segreto, ma all'interno del ciclo manca un pezzo affinché il gioco dia indizi al giocatore.
Descrivi quale blocco (o quali blocchi) inseriresti nello spazio vuoto affinché il gioco dica al giocatore se il suo numero è maggiore o minore di quello segreto, e spiega il funzionamento completo dell'algoritmo: che cosa si ripete, quando termina e che cosa succede se il giocatore indovina al primo tentativo.
Per la raccolta differenziata della classe si propongono due algoritmi: (a) ogni giorno, la persona responsabile separa tutti i rifiuti del giorno nei tre contenitori, e…
Per la raccolta differenziata della classe si propongono due algoritmi: (a) ogni giorno, la persona responsabile separa tutti i rifiuti del giorno nei tre contenitori, e (b) ogni settimana, a turno, una coppia classifica quanto accumulato. Valuta entrambi con criteri di tempo totale, errori di classificazione e ripartizione dello sforzo, e scegline uno giustificando la scelta.
Vuelve al principio: per far distribuire i panini a una macchina bisogna scomporre il compito, prevedere il caso «panini finiti» e dire quando il ciclo si ferma.