Immaginate di voler organizzare una lista di lettura: quali libri avete già finito, quali non avete ancora iniziato e come salvare i progressi per riprenderli la volta successiva?
Con un solo libro, bastano poche righe di codice. Aggiungetene dieci e servirà memorizzare più record; per filtrare le voci non lette dovrete esplicitare un criterio; e solo dopo aver chiuso il programma scoprirete che le modifiche appena fatte non sono state salvate.
Una necessità molto piccola ha già messo in primo piano alcuni problemi centrali della programmazione. Il corso AI001 «Introduzione alla programmazione in Python» di EvoClass organizza dieci lezioni attorno a queste competenze di base, passando dalla sintassi e dal flusso di controllo a liste, funzioni, dizionari, moduli e lettura/scrittura di file.
Come fa un programma a sapere qual è il prossimo passo
Quando una persona guarda una lista, di solito riesce a decidere naturalmente da quali voci iniziare. Un programma, invece, ha bisogno di condizioni e passaggi espliciti.
Nella Lezione 2: Flusso di controllo e logica il corso passa dall'esecuzione sequenziale alle condizioni, alle espressioni booleane e alla selezione tra più rami, sottolineando anche i blocchi di codice delimitati dall'indentazione.
Tornando alla lista di lettura, si può iniziare con una sola domanda: qual è lo stato di un record? È «non letto»? In base alla risposta si decide se tenerlo o saltarlo, poi si applica la stessa regola agli altri record.
In questa fase vale la pena esercitarsi a trasformare richieste vaghe in criteri espliciti. Per esempio, «trovare le voci utili» è ancora troppo generico, mentre «mantenere le voci il cui stato è non letto» è già una regola verificabile.
Quando i dati aumentano, pensare prima a come organizzarli
Quando le voci non sono più una sola, il modo in cui i dati sono organizzati inizia a influenzare il modo in cui si scrive il programma.
La Lezione 3: Usare le liste tratta gli insiemi ordinati, gli indici, lo slicing e l'aggiunta o rimozione di elementi. Un gruppo di titoli di libri può essere inserito in una lista e poi elaborato voce per voce con un ciclo.
Ma un libro può avere anche un autore, uno stato di lettura e una data di registrazione. In questo caso, ricordare «che cos'è il secondo elemento» solo in base alla posizione rende più faticose le modifiche successive. La Lezione 8: Usare i dizionari introduce chiavi e valori, dando ai campi nomi espliciti.
Mettere un dizionario per ogni voce della lista è un modo di organizzare l'esercizio che si può provare. È solo un suggerimento di studio, il cui scopo è capire che la scelta della struttura dati rende alcune operazioni più dirette e influenza anche il modo in cui gli altri leggono il programma.
Fare più volte la stessa cosa, riducendo le copie
Se la regola di filtro viene copiata ogni volta che si mostra qualcosa a schermo, si esporta la lista o si contano le voci, cambiare il criterio richiederà di controllare più punti contemporaneamente.
La Lezione 5: Usare le funzioni per riutilizzare il codice verte sulla definizione delle funzioni, sui parametri, sulle chiamate e sui valori di ritorno, e discute come organizzare un'operazione correlata in un'unità riutilizzabile.
L'operazione di filtro nella lista di lettura può diventare un esercizio: riceve un insieme di record e restituisce i risultati che soddisfano il criterio. Chi la chiama si occupa di mostrarli o salvarli, mentre il filtro mantiene responsabilità chiare.
Una volta definiti nome, input e output della funzione, anche la verifica diventa più concreta. Che cosa restituisce quando non ci sono record? Che cosa succede se tutti i libri sono già stati letti? Questi casi limite aiutano spesso a capire il programma più di un'esecuzione andata a buon fine.
Dopo aver chiuso il programma, come restano i risultati
I dati conservati nelle variabili durante l'esecuzione non diventano automaticamente record che esistono anche alla successiva apertura del programma.
La Lezione 9: Input e output su file porta l'apprendimento fuori dal programma: leggere e scrivere testo, gestire le risorse dei file e avvicinarsi a formati di dati comuni come CSV e JSON.
La lista di lettura può essere perfezionata lungo questo percorso: prima leggere dal file, poi elaborare i record, infine scrivere i risultati da conservare. In fase di scrittura occorre anche distinguere sovrascrittura e aggiunta, per evitare che l'esecuzione successiva modifichi dati che si voleva mantenere.
Questa lista è un'ipotesi didattica che collega le conoscenze, non un progetto completo già offerto dal corso, né un test software realizzato in questo articolo. Il suo valore sta nel far corrispondere ogni nuovo concetto a un'esigenza concreta, invece di trattare i punti di sintassi come una lista separata.
Nella pagina del corso AI001 si può imparare partendo dalle basi, oppure tornare ai capitoli pertinenti con un proprio piccolo compito. Alla fine, quelle poche righe di codice funzionante potrebbero diventare uno strumento che si è in grado di capire, modificare e riutilizzare la volta successiva.
Questo articolo è redatto sulla base del programma e dei materiali didattici attuali di EvoClass; i link alle lezioni rimandano a materiali in inglese. La lista di lettura è un suggerimento di studio: l'articolo non esegue esperimenti del corso né promette che completarlo consenta di realizzare software di produzione; le condizioni per l'accesso completo e per l'uso delle funzionalità di programmazione sono quelle indicate nella pagina.