
Багатьом знаком Scratch – дитяче середовище програмування, навчання в якому зазвичай зводиться до створення творчих проектів за принципом від простого до складного. При цьому «класичний підхід» до вивчення програмування (змінні → розгалуження → цикли → функції → структури → об'єкти → …) у Scratch скрутний.
Однак зміна послідовності вивчення понять (назвемо їх концепціями) структурного, об'єктно- та подієво-орієнтованого програмування, їх приховування за яскравими спрайтами та інтерактивною анімацією, не означає, що на концепціях не слід наголошувати. Особливо якщо метою ставиться не стільки розвиток творчих здібностей, скільки навчання програмуванню. Цю ідею я постаралася відобразити у своєму .
Першим, з чим стикається скретчер-початківець, є спрайти. Хоча у Scratch як такого об'єктно-орієнтованого програмування немає, спрайт можна вважати об'єктами. На цьому етапі той, хто навчає, бачить, що в програмі може бути безліч об'єктів, поведінкою яких управляють зовнішні для них скрипти. Спрайти одержують команди або на вимогу передають інформацію про свій стан, тобто програмування зводиться до управління об'єктами.
Другим, що в Scratch відразу звалюється на голову молодого програміста, є уявлення про багатопоточність. Кожен спрайт може мати кілька скриптів, виконуваних одночасно. Декілька спрайтів також можуть виконувати свої програми одночасно один з одним. Причому виявляється складніше організувати послідовне виконання.


Вже першому занятті ми можемо уникнути знайомства з циклами. Інакше кіт особливо не розбіжиться. На цьому етапі знайомство доводиться залишати інтуїтивним та поверховим. Ми обмежуємо його циклами «повторювати завжди» та «повторити … раз», які простіші для розуміння. Цикл із умовою вивчається в уроці, спеціально присвяченому циклам. Цей урок передбачає знання логічних виразів та змінних.
Оскільки Scratch подієво-орієнтоване середовище, блоки умовного оператора зручніше вивчити до змінних. Умовою можуть бути ті чи інші події.

На мій погляд, така послідовність краща, тому що за кожен урок ми вводимо мінімум понять. Причому не абстрактних, а одразу бачимо їхню практичну користь.
Якщо ж спочатку вивчати змінні, їх призначення і користь складно продемонструвати, оскільки до цього не вивчено умовний оператор, введення даних і генерація випадкових чисел.
У Scratch, крім списків, програміст стикається з трьома типами даних: числами, рядками і булевим типом. У цьому тип прив'язаний до значення, а чи не змінної. Перетворювати рядки на числа і назад не потрібно. Рядки в лапки не укладаються.
Блок, що повертає логічне значення і мають характерну йому незграбну форму, можна вставляти в округлі поля. Зворотне не вірно: там, де передбачається логічний вираз, не можна вставити звичайну змінну.

Scratch реалізований так, щоб у процесі виконання не виникало критичних помилок. Мабуть тому, якщо спробувати використати рядок в арифметичній операції, він замінюється нулем (див. перший скрін).
Програміст повинен знати, що можливості мов програмування розширюються бібліотеками. Працюючи у Scratch, учень може підключати доповнення, які призводять до появи в середовищі нових команд.

Функції Scratch реалізовані в розділі «Інші блоки», де з одного боку ви створюєте власний блок, який можна вставляти в інші скрипти. З іншого боку – маємо зібрати функціональність цього блоку, тобто те, що він робитиме.

Повернення значення зі скретч-функції немає.
Таким чином, вивчення концепцій програмування в подієво-орієнтованому середовищі накладає свій відбиток. По суті, ми спочатку вивчаємо більш складні та абстрактні поняття і, лише заглиблюючись у процес, переходимо до елементів структурного програмування. Плюс це чи мінус для першого знайомства – питання спірне.
Джерело: habr.com
