
Scratch è un ambiente di programmazione riconoscibile da molti, in cui l'insegnamento si concentra generalmente sulla creazione di progetti creativi seguendo il principio "dal semplice al complesso". In questo contesto, il "metodo classico" di apprendimento della programmazione (variabili → ramificazioni → cicli → funzioni → strutture → oggetti → ...) risulta complicato in Scratch.
Tuttavia, cambiare l'ordine con cui si apprendono i concetti (che chiameremo concetti) della programmazione strutturata, orientata agli oggetti e basata sugli eventi, nascondendoli dietro sprite colorati e animazioni interattive, non significa che non ci si debba concentrare sui concetti. Soprattutto se l'obiettivo è non solo sviluppare abilità creative, ma anche insegnare a programmare. Questa idea l'ho cercata di riflettere nel mio .
Il primo aspetto con cui un principiante nello scratching si confronta sono i sprite. Sebbene in Scratch non esista un vero e proprio programmazione orientata agli oggetti, i sprite possono essere considerati oggetti. In questa fase, l'apprendente vede che nel programma possono esserci molti oggetti, il cui comportamento è controllato da script esterni. I sprite ricevono comandi o comunicano, su richiesta, il loro stato, quindi la programmazione si riduce alla gestione degli oggetti.
Il secondo concetto che si abbatte subito sulla testa del giovane programmatore in Scratch è quello della multithreading. Ogni sprite può avere diversi script eseguiti contemporaneamente. Inoltre, più sprite possono eseguire i loro programmi contemporaneamente l'uno con l'altro. Risulta infatti più difficile organizzare l'esecuzione sequenziale.


Già alla prima lezione non possiamo evitare di familiarizzare con i cicli. Altrimenti il gatto non si muoverà troppo. In questa fase, l'introduzione deve rimanere intuitiva e superficiale. La limitiamo a cicli come "ripeti sempre" e "ripeti ... volte", che sono più facili da comprendere. Il ciclo con condizione viene studiato in una lezione appositamente dedicata ai cicli. Questa lezione presuppone la conoscenza delle espressioni logiche e delle variabili.
Poiché Scratch è un ambiente orientato agli eventi, è più conveniente studiare i blocchi dell'operatore condizionale prima delle variabili. Gli eventi possono fungere da condizioni.

A mio avviso, tale sequenza è migliore, poiché per ogni lezione introduciamo il minimo di concetti. Inoltre, non concetti astratti, ma ne vediamo subito l'utilità pratica.
Se iniziamo a studiare le variabili, è difficile dimostrare la loro funzione e utilità, poiché prima non è stato studiato l'operatore condizionale, l'input dei dati e la generazione di numeri casuali.
In Scratch, aside from lists, a programmer deals with three data types: numbers, strings, and booleans. Here, the type is tied to the value, not the variable. There’s no need to convert strings to numbers and back. Strings are not enclosed in quotes.
A block that returns a boolean value and has its characteristic angular shape can be inserted into rounded fields. The reverse is not true: where a boolean expression is expected, a regular variable cannot be inserted.

Scratch is designed to prevent critical errors during execution. This is likely why, if you attempt to use a string in an arithmetic operation, it is replaced with zero (see the first screenshot).
A programmer should know that programming languages are expanded by libraries. While working in Scratch, a student can connect extensions that introduce new commands into the environment.

Le funzionalità in Scratch sono implementate nella sezione "Altri blocchi", dove da un lato crei il tuo blocco personalizzato, che può essere inserito in altri script. Dall'altro lato, devi raccogliere la funzionalità di questo blocco, ovvero ciò che deve fare.

Non ci sono valori di ritorno dalle funzioni di Scratch.
Pertanto, lo studio dei concetti di programmazione in un ambiente orientato agli eventi lascia il suo segno. In sostanza, iniziamo ad apprendere i concetti più complessi e astratti e, solo approfondendo il processo, passiamo agli elementi della programmazione strutturata. Se questo è un vantaggio o uno svantaggio per un primo approccio è una questione discutibile.
Fonte: habr.com
