Imparare dagli errori

Il coding come palestra mentale

Webinar con Pierluigi Crescenzi e Linda Pagli

Firenze e Pisa, 27 Febbraio 2018

Obiettivo

  • Descrivere alcuni strumenti e metodologie che possono rendere la gestione e la correzione degli errori più piacevoli
    • Senza entrare nel panico
    • Per imparare dagli errori stessi
  • Vedremo come
    • Scomporre un problema in sotto-problemi più semplici
      • Approccio dall'alto verso il basso
    • Realizzare frammenti di programma (funzioni) per risolvere i sotto-problemi
      • Approccio dal basso verso l'alto
    • Utilizzare la console per rilevare errori spesso "sintattici"
      • E correggerli (sapendo leggere i messaggi)
    • Utilizzare il debugger per correggere errori più "logici"
      • Osservando i valori delle variabili
      • Prevedendo il comportamento dell'utente

Un esempio: il gioco del tris

Dove siamo

In esecuzione

Scacchiera piena?

C'è un tris?

C'è un tris in una riga?

C'è un tris in una colonna?

C'è un tris in una diagonale?

Tris in prima riga?

Tris in seconda riga?

Tris in terza  riga?

Tris in prima colonna?

Tris in seconda colonna?

Tris in terza colonna?

Tris in prima diagonale?

Tris in seconda diagonale?

Decidere se la partita è finita

Tris in prima riga?

Verificare tris in prima riga

Un bottone che si attiva

con il colore del vincitore

Verificare tris in prima riga

Verifica che i colori dei tre pulsanti in prima riga siano uguali

La console ci aiuta

Verificare tris in prima riga

C'è un errore: andiamo a scovarlo e correggerlo

Osserviamo le variabili

Fermiamo il programma all'inizio della funzione...

...e passo passo vediamone l'esecuzione tenendo sott'occhio le variabili...

...e ci accorgiamo che... ma certo!

Scacchiera piena?

C'è un tris?

C'è un tris in una riga?

C'è un tris in una colonna?

C'è un tris in una diagonale?

Tris in prima riga?

Tris in seconda riga?

Tris in terza  riga?

Tris in prima colonna?

Tris in seconda colonna?

Tris in terza colonna?

Tris in prima diagonale?

Tris in seconda diagonale?

Verso il programma finale

Verificare scacchiera piena

Eppure...

  • Saper gestire gli errori richiede anche
    • Saper prevedere le mosse dell'utente
  • Nel nostro caso, cosa succede se un giocatore clicca sulla scacchiera anche se la partita è finita?
    • Se scacchiera piena, nulla di grave
    • Ma se esiste tris e scacchiera non piena...
      • Come risolvere quest'errore?

Per finire

  • Cosa fa il pulsante di fine partita se premuto?
    • Inizia nuova partita