
Molti conoscono Scratch, l'ambiente di programmazione per bambini, il cui apprendimento di solito si riduce alla creazione di progetti creativi tramite il principio "dal semplice al complesso". Tuttavia, l'"approccio classico" allo studio della programmazione (variabili → ramificazioni → cicli → funzioni → strutture → oggetti → …) è difficile da applicare in Scratch.
Tuttavia, modificare la sequenza di apprendimento dei concetti (chiamiamoli concetti) della programmazione strutturata, orientata agli oggetti e agli eventi, e nasconderli dietro sprite vivaci e animazioni interattive, non significa che non si debba porre enfasi sui concetti. Soprattutto se l'obiettivo non è tanto lo sviluppo delle capacità creative, quanto l'insegnamento della programmazione. Ho cercato di riflettere quest'idea nel mio .
La prima cosa con cui si confronta un principiante in Scratch sono gli sprite. Sebbene in Scratch non ci sia una programmazione orientata agli oggetti nel vero senso della parola, gli sprite possono essere considerati oggetti. In questa fase, l'allievo vede che nel programma possono esserci molti oggetti il cui comportamento è gestito da script esterni. Gli sprite ricevono comandi o, su richiesta, forniscono informazioni sul proprio stato, quindi la programmazione si riduce alla gestione degli oggetti.
La seconda cosa che colpisce immediatamente il giovane programmatore in Scratch è il concetto di multithreading. Ogni sprite può avere diversi script eseguiti simultaneamente. Più sprite possono eseguire i propri programmi contemporaneamente tra di loro. Di conseguenza, organizzare un'esecuzione sequenziale risulta più complesso.


Già alla prima lezione non possiamo evitare di introdurre i cicli. Altrimenti, il gatto non correrà molto. A questo punto, l'introduzione deve rimanere intuitiva e superficiale. Limitiamo l'argomento ai cicli "ripeti sempre" e "ripeti ... volte", che sono più facili da comprendere. Il ciclo condizionale viene studiato in una lezione specifica 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. Eventi di vario tipo possono fungere da condizioni.

A mio avviso, questa sequenza è migliore, poiché per ogni lezione introduciamo un numero minimo di concetti. Inoltre, non si tratta di concetti astratti, ma vediamo subito il loro utilizzo pratico.
Se si inizia a studiare le variabili, è difficile dimostrarne il significato e l'utilità, poiché prima non è stato studiato l'operatore condizionale, l'immissione dei dati e la generazione di numeri casuali.
In Scratch, a parte le liste, il programmatore si imbatte in tre tipi di dati: numeri, stringhe e booleani. Inoltre, il tipo è legato al valore, non alla variabile. Non è necessario convertire le stringhe in numeri e viceversa. Le stringhe non sono racchiuse tra virgolette.
Un blocco che restituisce un valore booleano e ha una forma angolare caratteristica può essere inserito in campi arrotondati. Il contrario non è vero: dove è previsto un'espressione booleana, non è possibile inserire una variabile normale.

Scratch è progettato in modo tale che durante l'esecuzione non si verifichino errori critici. Probabilmente per questo, se si tenta di utilizzare una stringa in un'operazione aritmetica, viene sostituita con zero (vedi il primo screenshot).
Il programmatore deve sapere che le possibilità dei linguaggi di programmazione si ampliano grazie alle librerie. Lavorando in Scratch, lo studente può collegare estensioni che portano all'introduzione di nuovi comandi nell'ambiente.

Le funzioni in Scratch sono implementate nella sezione "Altri blocchi", dove da un lato si crea un proprio blocco, che può essere inserito in altri script. Dall'altro lato, è necessario raccogliere la funzionalità di questo blocco, cioè ciò che farà.

Non c'è restituzione di valori da una funzione di Scratch.
Pertanto, lo studio dei concetti di programmazione in un ambiente orientato agli eventi lascia il suo segno. In sostanza, iniziamo a studiare concetti più complessi e astratti e, approfondendo il processo, passiamo agli elementi della programmazione strutturale. Se questo sia un vantaggio o uno svantaggio per la prima conoscenza è una questione controversa.
Fonte: habr.com
