- Introduzione
- Gli esercizi
- Allenarsi a programmare: modellazione e sintassi
- Obiettivi degli esercizi
- Materiali
- Regole
- Come mai queste regole
Uno dei motivi per cui imparare a programmare è difficile è perché tutto sembra sconosciuto. Per un principiante, il codice sembra un incantesimo magico. "In che modo questa pila di if
, for
e function
fa fare al computer quello che voglio?"
Quando impari la tua prima lingua straniera, hai almeno una lingua madre che puoi usare come riferimento. Quando impari il tuo primo linguaggio di programmazione, cosa potresti usare come riferimento? Questi esercizi hanno lo scopo di darti quel riferimento.
Ti daremo alcuni problemi molto semplici e ti chiederemo di risolverli utilizzando materiali fisici di uso quotidiano come schede, post-it e penne. Questi problemi chiederanno cose come "Trova il numero più grande in questo elenco di numeri" o "Dimmi quanti numeri in questo elenco di numeri sono maggiori di 10".
I problemi sono pensati per essere semplici in modo che tu possa esercitarti nella parte più difficile e meno familiare: descrivere passo dopo passo il processo che hai usato per risolvere ogni problema. Dopo aver confrontato la tua descrizione con il codice che implementa lo stesso processo, scoprirai che il codice sembra meno un incantesimo magico e più una frase in una lingua straniera.
Prima di tuffarti negli esercizi leggi anche le prossime sezioni.
- Trova il numero più grande
- Trova il numero più piccolo
- E' in lista
- Somma i numeri
- Trova il numero pari più grande
- Trova il numero dispari più grande
- Trova il secondo numero più grande
- Conta dei numeri specifici
- Conta i numeri positivi
- Conta i numeri negativi
- Conta i maggiori di 10
- Conta i minori di 10
- Conta i maggiori di X
- Conta i minori di Y
🚨Concetti cardine🚨
I principianti si concentrano troppo sulla sintassi e non abbastanza sulla modellazione. Ciò è comprensibile poiché la sintassi è nuova, estranea e peculiare per la programmazione. La maggior parte dei curriculum rinforzano questo atteggiamento organizzando tutto in base alla sintassi.
Che cos'è il "modello"? Ricorda, i computer sono stupidi ma veloci. Possono eseguire miliardi di operazioni al secondo, ma quelle operazioni sono così specifiche e così meccaniche che non penseresti quasi mai di doverle spiegare quando parli con un altro essere umano.
Questo non significa che i computer siano limitati. Possiamo comporre infiniti brani con un numero finito di note e possiamo comporre infiniti programmi con un numero finito di operazioni.
La programmazione è l'arte/scienza di far sì che i computer risolvano i problemi per nostro conto. Le due abilità fondamentali sono:
-
Modellazione
Comprendere un problema così a fondo da poterlo risolvere in termini di quelle operazioni super-specifiche che un computer può eseguire. La comprensione che ne abbiamo è una sorta di immagine del problema nella nostra mente, chiamata un modello mentale.
-
Codifica + Sintassi
Tradurre il tuo modello mentale del problema in codice che un computer può eseguire
Se esiste un "teorema fondamentale dell'imparare a programmare" è questo:
- Se hai un modello mentale chiaro e sufficiente conoscenza della sintassi, saprai esattamente quale codice scrivere.
Equivalentemente:
- Se non sai che codice scrivere allora il tuo modello mentale non è così chiaro come credi o non hai sufficiente conoscenza della sintassi (o probabilmente una combinazione di entrambe le cose).
Quindi, ricorda: i principianti si concentrano troppo sulla sintassi e non abbastanza sulla modellazione. Ciò è comprensibile poiché la sintassi è nuova, estranea e peculiare per la programmazione. La maggior parte dei curriculum rinforzano questo atteggiamento organizzando tutto in base alla sintassi.
Introdurre un piccolo pezzo di sintassi dopo l'altro rende difficile avere una visione completa di ciò che fa un programmatore. "Come si collega questo a qualcos'altro? Come farò a ricordare tutto questo?", potresti chiederti.
Questi esercizi sono stati pensati per farti giocare l'intero gioco senza farti travolgere dalla sintassi. Ti faremo risolvere i problemi come farebbe un computer e poi ti presenteremo la sintassi effettiva che il computer richiede.
Nello specifico, questi esercizi sono progettati per:
- Presentarti i ~5 blocchi che fanno da fondamenta a qualsiasi programma che scriverai
- Farti modellare e risolvere problemi che sai già come risolvere utilizzando quei blocchi.
- Introdurre la sintassi di Javascript traducendo le tue soluzioni in codice funzionante
Ogni esercizio richiede i seguenti materiali:
- Un mazzo di ~20 carte con numeri casuali compresi tra -100 e 100 stampati su un lato
- Post-it o piccoli pezzi di carta da scarabocchiare
- Una penna o una matita
Non scriveremo neanche una riga di codice.
Hai un pacchetto di post-it e una penna. All'inizio dell'esercizio, tu...
- riceverai un mazzo di carte con dei numeri stampati su un lato
- ti verrà posta una domanda riguardo ai numeri nel mazzo
Usando i post-it come foglio per gli appunti (and solo i post-it) il tuo compito è di rispondere alla domanda, scrivere la risposta su un post-it e restituirlo.
Ci sono tre regole:
-
Puoi girare e guardare una sola carta per volta.
Non si può sparpagliarle sul pavimento e, per esempio, fare affidamento sil tuo colpo d'occhio per rispondere alla domanda.
-
Ogni post-it può avere scritto solo una parola o numero.
-
Per scrivere su un un post-it puoi o
- scrivere una nuova parola o numero su un nuovo post-it
- sostituire una parola o un numero su un post-it già scritto
Queste regole sono studiate per impedirti di usare delle capacità umane che un computer semplicemente non ha.
Per esempio, se ti viene consegnato un mazzo di carte con i numeri e ti viene chiesto di trovare il numero più grande, potresti sparpagliarle sul pavimento con i numeri rivolti in su. Poi daresti un'occhiata alle carte e prenderesti il numero più grande in base ad euristiche come
- Ignorare i numeri negativi
- Cercare numeri con più cifre
- Cercare numeri che iniziano per 9 o 8
Usando queste euristiche, potresti trovare un probabile candidato per "il numero più grande" e poi verificare brevemente controllando tutte le altre carte per vedere se ce ne è uno maggiore.
Ma questo è troppo intelligente per un computer!
Quindi, cominciamo a fare pratica con [gli esercizi](#Gli esercizi).