
Mnogima je poznat Scratch – okruženje za programiranje za djecu, čije se učenje obično svodi na stvaranje kreativnih projekata prema principu „od jednostavnog do složenog“. Pri tome je „klasični pristup“ učenju programiranja (varijable → grananja → petlje → funkcije → strukture → objekti → …) u Scratchu otežan.
Međutim, promjena redoslijeda učenja pojmova (nazovimo ih konceptima) strukturnog, objektno- i događajno-orijentiranog programiranja, njihovo skrivanje iza šarenih spritova i interaktivne animacije ne znači da na konceptima ne treba raditi. Pogotovo ako je cilj ne toliko razvoj kreativnih sposobnosti, koliko učenje programiranja. Tu ideju sam pokušala prikazati u svom .
Prvo s čime se suočava početni Scratch korisnik su spritovi. Iako u Scratchu ne postoji objektno-orijentirano programiranje u pravom smislu te riječi, spritove možemo smatrati objektima. U ovoj fazi učenik vidi da program može imati mnogo objekata, čijim ponašanjem upravljaju vanjski skripti. Spritovi primaju naredbe ili na zahtjev prenose informacije o svom stanju, što znači da se programiranje svodi na upravljanje objektima.
Drugo što se u Scratchu odmah nameće mladom programeru je pojam o višethreadingu. Svaki sprit može imati nekoliko skripti koje se izvršavaju istovremeno. Više spritova također može izvoditi svoje programe istovremeno jedni s drugima. Naime, teže je organizirati sekvencijalno izvršavanje.


Već na prvom satu ne možemo izbjeći upoznavanje s petljama. Inače mačka nećemo moći dovoljno razgibati. U ovoj fazi upoznavanje ostavljamo intuitivnim i površinskim. Ograničavamo ga na petlje „ponavljaj uvijek“ i „ponovi … puta“, koje su lakše za razumijevanje. Petlja s uvjetom proučava se u lekciji koja je posebno posvećena petljama. Ova lekcija pretpostavlja poznavanje logičkih izraza i varijabli.
Budući da je Scratch događajno-orijentirano okruženje, blokovi uvjetnog operatora lakše se proučavaju prije varijabli. Uvjeti mogu biti razna događanja.

Po mom mišljenju, takav redoslijed je bolji jer tijekom svake lekcije uvodimo minimalni broj pojmova. Osim toga, ne radi se o apstraktnim pojmovima, već odmah vidimo njihovu praktičnu korist.
Ako prvo učimo o varijablama, teško je pokazati njihovu svrhu i korist, jer prije toga nismo proučili uvjetne operatore, unos podataka i generiranje slučajnih brojeva.
U Scratchu, osim lista, programer se susreće s tri tipa podataka: brojevima, stringovima i boolean tipom. Pri tome je tip vezan uz vrijednost, a ne uz varijablu. Nije potrebno pretvarati stringove u brojeve i obratno. Stringovi se ne stavljaju u navodnike.
Blok koji vraća logičku vrijednost i ima karakterističan kutni oblik može se umetnuti u okrugle okvire. Suprotno nije istina: tamo gdje se očekuje logički izraz, ne može se umetnuti obična varijabla.

Scratch je implementiran tako da tijekom izvođenja ne nastaju kritične pogreške. Vjerojatno zato, ako pokušate koristiti string u aritmetičkoj operaciji, on se zamjenjuje nulom (vidi prvi screenshot).
Programer mora znati da se mogućnosti programskih jezika proširuju bibliotekama. Radom u Scratchu, učenik može dodavati proširenja koja uvode nove komande u okruženje.

Funkcije u Scratchu implementirane su u odjeljku 'Ostali blokovi', gdje s jedne strane kreirate vlastiti blok koji se može umetnuti u druge skripte. S druge strane, morate skupiti funkcionalnost tog bloka, odnosno ono što će on raditi.

Nema povratka vrijednosti iz Scratch funkcije.
Dakle, učenje koncepcija programiranja u okruženju orijentiranom na događaje ostavlja svoj trag. U suštini, prvo proučavamo složenije i apstraktnije pojmove, a tek produbljujući proces prelazimo na elemente strukturiranog programiranja. Je li to prednost ili nedostatak za prvo upoznavanje – pitanje je sporno.
Izvor: habr.com
