Раннее обучение программированию в среде Scratch[1]
В. Г. Рындак, В. О. Дженжер, Л. В. Денисова
Введение
В последнее время утихли споры о том, какой язык программирования изучать в школе или вузе. Каждый из педагогов сделал выбор и имеет все возможности для реализации своих идей. Тем не менее, многие согласятся с тем, что проблема выбора первого языка программирования существует. Эта проблема тесно соприкасается с другими, не менее сложными: когда нужно начинать изучение языка программирования? зачем это делать? на решение каких задач ориентировать ребят? как совместить раннее обучение программированию с плохим знанием математики? как поддержать интерес к программированию? нужно ли учить программированию всех? Подобные проблемы встанут перед каждым, кто решил заняться преподаванием информатики вообще и программирования в частности. Мы для себя ответили на эти вопросы, и ответ получился достаточно простым. Учить детей программированию в начальной школе можно и нужно. Но вместо сотен методик «изучения массивов» или «изучения процедур» и тому подобного необходима одна общая методология и одно единое средство обучения. Здесь хотелось бы обсудить возможность раннего обучения программированию в среде Scratch, а также вопросы межпредметного характера при таком подходе.
Обсуждение
Среда Scratch разработана и поддерживается группой MIT Media Lab из Массачусетского института технологии (http://scratch. mit. edu) и является бесплатным продуктом. Scratch задуман и реализован в соответствии с конструктивистскими педагогическими идеями С. Пейперта: изучить мир можно, построив свой собственный.
Последняя версия Scratch 1.4 дополнена такими важными, на наш взгляд, компонентами языка как текстовый ввод и обработка строк. Помимо этого появились также блоки управления внешне подключаемым мотором (например, из конструктора LEGO WeDo). Начиная с версии 1.3 Scratch поддерживает кириллицу (вместе с несколькими десятками других языков). Таким образом, Scratch имеет богатые возможности, и для работы в этой среде на первых порах требуется только умение читать, поскольку программа составляется из готовых цветных блоков.
Обучение основам программирования в среде Scratch наиболее эффективно при выполнении небольших (поначалу) проектов. При этом естественным образом ученик овладевает интерфейсом новой для него среды, постепенно углубляясь как в возможности Scratch, так и в идеи собственно программирования. Базовый проект един для всех учеников и выполняется совместно с учителем. Затем предлагаются возможные направления развития базового проекта, которые у разных учеников могут быть различными. Опишем несколько ключевых проектов.
Проект 1. Анимация. Бесконечное движение Кота с отражением от стен и сменой костюмов.
Цель: знакомство со средой Scratch.
Направления развития проекта: Кот мяукает во время удара о стену; при нажатии на стрелку вверх Кот меняет цвет или применяется другой эффект; при нажатии на стрелку вниз эффект должен отмениться; при нажатии на пробел Кот говорит «Привет!»; при щелчке мышью по Коту он мурлычет.
Введённый материал и пояснения
Scratch. Элементы интерфейса: сцена; группы блоков; стиль вращения; вкладки скриптов, костюмов и звуков; кнопки Старт и Стоп; смена направления движения спрайта; изменение имени спрайта; режимы просмотра (малый экран, полный экран, режим демонстрации); главное меню (пункт File).
Типы блоков: обычные (stack blocks); С-образные (C-shaped «mouth»); шапочки (hats); логические датчики.
Группы блоков:
контроль: всегда (бесконечный цикл); когда щёлкнут по зелёному флажку; когда клавиша [ ] нажата; ждать [ ] секунд; всегда, если < >; когда щёлкнут по { }.
движение: идти [ ] шагов; если край, оттолкнуться.
внешность: следующий костюм; изменить [ ] эффект на [ ]; говорить [ ] в течение [ ] секунд; думать [ ] [ ] секунд.
звук: играть звук [ ]; играть звук [ ] до завершения.
сенсоры: касается [ ].
Математика. Десятичная дробь.
Информатика. Понятия исполнителя, системы команд исполнителя (СКИ), алгоритма, линейного алгоритма, цикла, события, параллельности. Поля ввода: обычное и со списком. Работа с контекстным меню.
Обратите внимание. Спрайт можно перетаскивать мышкой по сцене.
Выполнить скрипт (или команду) можно двойным щелчком по нему (по ней). Причём команду можно выполнить прямо в панели команд, не перетаскивая её в панель скриптов.
Скрипт, выполняющийся в данный момент, имеет белое обрамление.
Текущее направление движения спрайта показано синим отрезком около изображения спрайта в информационной панели вверху экрана. Его можно изменить перетаскиванием мышкой конца отрезка.
Хорошим тоном является изменение имени спрайта по умолчанию на имя, подходящее к Вашему проекту.
Количество секунд в поле ввода можно задать десятичной дробью.
При щелчке правой кнопкой мыши по скрипту появляется контекстное меню, через которое можно дублировать скрипт, удалить его или получить помощь.
Контекстное меню области создания скриптов позволяет добавлять комментарии к скриптам (желательно приучить детей к комментированию как можно раньше), выстроить скрипты ровно (пункт очистить), а также сохранить изображение скриптов в файл.
Названия многих сенсоров оканчиваются вопросом. Значением такого сенсора является «истина» или «ложь», «да» или «нет».
Проект 2, 3. Анимация с обработкой событий.
Цель: изучение взаимодействия объектов на основе обмена сообщениями.
Ход работы
· Создать объект Лошадка, которая скачет вперёд-назад со звуком «галопа»; при ударе Лошадки о край раздаётся ржание.
· Добавить новый объект lion1-a.
· Изменить имя объекта на «Лев».
· Добавить Льву костюм lion1-b.
· При ударе Лошадки о край Лев должен сказать «Ах ты, бедняжка!».
Направления развития проекта: Лошадка отвечает Льву, поддерживая диалог.
Введённый материал и пояснения
Scratch. Группы блоков: контроль: передать [ ]; когда я получу [ ].
Информатика. Понятие сообщения, обработчика сообщения.
Обратите внимание. При задании имени сообщения можно использовать русские буквы. Название сообщения должно иметь смысл. В блоке когда я получу [ ] можно выбрать только уже существующие сообщения.
Проект 4. Создание своего объекта в графическом редакторе.
Цель: научиться создавать собственные спрайты и анимировать их.
Ход работы
· Нарисовать новый объект: нераспустившийся цветок (бутон).
· Добавить этому объекту несколько (не менее трёх) костюмов, изображающих стадии раскрытия цветка: от бутона (костюм № 1) до полностью раскрытого цветка (последний костюм).
· Произвести анимацию, последовательно сменяя костюмы объекта с небольшой задержкой.
Направления развития проекта: добавить звуковое сопровождение; добавить восход солнца. Распускание цветочка происходит только утром.
Введённый материал и пояснения
Scratch. Элементы интерфейса: кнопка «Рисовать новый объект».
Графический редактор в Scratch: выбор цвета в палитре; инструменты «кисточка», «ластик», «заливка», «прямоугольник», «эллипс», «линия», «пипетка»; выбор размера кисти; кнопки отмена (undo, отменить последнее действие), Отмена (redo, отменить отмену), Очистить; установка центра вращения объекта.
Информатика. Инструменты графического редактора, приёмы создания изображения, способы создания анимации.
Обратите внимание. Первый костюм придётся сделать «с нуля». Но создание каждого следующего костюма нужно проводить на основе предыдущего. Для этого на вкладке «Костюмы» надо нажать кнопку «копировать» у самого нижнего костюма. Появится копия этого костюма, у которой теперь можно нажать кнопку «Редактировать». Удалив при помощи ластика некоторые детали изображения и дорисовав необходимые, получим новый костюм.
Следует обратить внимание всех на плавность анимации с большим числом костюмов.
У каждого нарисованного объекта имеется центр. Его можно увидеть и переместить, нажав на кнопку «Установить центр вращения», расположенную в левом нижнем углу графического редактора. Координаты объекта и центр вращения объекта совпадают с этой точкой. Рассматривать эту возможность нужно только при возникновении соответствующей проблемы.
Проекты 5, 6. Анимированный полёт пчелы; Плавные анимации с использованием параллельности.
Ход работы по этим проектам рассмотрен в [1].
Введённый материал и пояснения
Scratch. Элементы интерфейса: датчики координат мышки и текущего спрайта, главное меню (пункт Файл/Cохранить как).
Группы блоков:
движение: идти в x: [ ] y: [ ]; плыть [ ] секунд в точку x: [ ] y: [ ]; установить x в [ ]; установить y в [ ].
операторы: выдать случайное от [ ] до [ ].
Математика. Понятия отрицательного числа, системы координат (СК), случайного числа.
Обратите внимание. Вначале учитель должен ввести понятие системы координат. Сначала лучше ввести понятие координатной оси и отрицательного числа на примере термометра, а затем системы координат.
Следует обратить внимание детей на то, что изменение координат связано с движением объекта.
Дальнейшее развитие проекта предусматривает поворот Пчелы в направлении движения путём сравнения её старых и новых x_координат. Эти возможности будут рассмотрены позже, после введения понятия переменной.
При введении понятия случайного числа можно привести в качестве примера бросание кубика, монеты. Можно обсудить правила нанесения ударов в игре «Advanced Dungeons & Dragons». Этот последний пример может послужить толчком к созданию множества проектов.
Проект 6. Переменные.
Цели: познакомиться (1) с задачами, в которых возникает необходимость в переменных; (2) с группой блоков переменные.
Ход занятия
· Предварительное задание: разработать программу, в которой Кот ходит по экрану и отражается от его границ.
· Сделать так, чтобы Кот отразился только десять раз, после чего он должен остановиться и сказать: «Ох, устал…».
· Для этого надо завести переменную — счётчик касаний, которая при каждом отражении от стены увеличивается на единицу.
· Удобно использовать блок если < > или < > для различения состояний «касания» и «некасания».
· Добавьте в проект мяч, скачущий по полю и отражающийся от стен. Посчитайте, сколько раз во время своего движения Кот коснётся Мяча.
Введённый материал и пояснения
Scratch. Элементы интерфейса: бегунок (слайдер), флажок (переключатель, чекбокс).
Группы блоков:
контроль: если < > или < >, остановить скрипт, остановить всё.
переменные: кнопка «создать переменную», поставить [ ] в [ ], изменить [ ] на [ ], показать переменную [ ], спрятать переменную [ ].
Обратите внимание. В Scratch очень слабая типизация, но по содержимому или по способу использования переменной (по контексту) можно догадываться, к какому типу она принадлежит. Это может быть число, строка или список.
Переменные могут задаваться или только для одного спрайта (локальные; доступ к ним осуществляется только из скриптов данного спрайта), или для всех (глобальные; их можно использовать из любых скриптов). Всегда следует подумать, какой тип переменной выбрать. В основном возникает необходимость в использовании локальных переменных: это так называемые поля объектов. Работа с глобальными переменными требует особенной аккуратности.
Добавить мяч в проект просто, но правильно подсчитать касания — уже сложнее. Здесь нельзя использовать конструкцию вида «если Кот касается Мяча, то прибавляй к счётчику единицу». Поскольку касание двух спрайтов может длиться довольно долго, всё это время значение счётчика будет увеличиваться. При касании спрайтов нужно увеличивать счётчик касаний, после чего организовать цикл вида 
Проект 7. Повороты.
Цели: познакомиться (1) с градусной мерой углов; (2) с группой блоков перо (аналог языка Logo).
Ход занятия
· Изменить спрайт.
· Добавить в панель скриптов из группы движение блоки идти [ ] шагов и повернуть в направление [ ].
· Изменить величину шага на 50.
· Убедиться, что двойной щелчок по блоку приводит к выполнению соответствующей команды.
· Поменять направление поворота спрайта и выполнить команду двойным щелчком.
· Чередуя повороты в разных направлениях с движением прямо провести Кота по периметру экрана.
· Опустить перо при помощи команды группы перо.
Введённый материал и пояснения
Scratch. Группы блоков:
движение: повернуться на [ ] градусов, повернуть в направление [ ].
перо: очистить, поднять перо, опустить перо.
Математика. Поворот. Направление поворота. Угол. Градусная мера угла. Прямой угол. Полный оборот (360°).
Обратите внимание. Вначале учитель должен рассказать про повороты, углы и градусы, а затем продемонстрировать эти понятия на доске и в среде Scratch. Задание реализуется в режиме непосредственного выполнения команд, а не в режиме программирования.
Следует сменить спрайт на cat2, crab1 или crab2, которые больше подходят для выполнения предлагаемых заданий.
Система угловых координат в Scratch: 0° — вверх; 90° — вправо (направление по умолчанию); 180° — вниз; ‑90° — влево.
Повернуться в каком-либо их этих направлений можно при помощи блока повернуть в направление [ ]. Это поворот в абсолютном направлении. Относительный поворот отсчитывается от текущего направления спрайта. Поворот спрайта может осуществляться как влево, так и вправо (имеются разные блоки). В то же время можно использовать отрицательные углы поворота: в этом случае поворот, например, вправо на (-20°) тождественен повороту влево на (+20°).
Проект 8. Строки и строковые переменные.
Написать программу, ведущую диалог с пользователем от имени Кота.
Цели: (1) изучить тип данных «строка»; (2) познакомится с группой строковых блоков в разделах операторы и сенсоры; (3) научиться использовать строки при создании диалоговых проектов.
Ход занятия
· Определить две строковые переменные: «Собеседник» и «Строка».
· Кот должен поздороваться и спросить имя у пользователя. Это имя нужно поместить в переменную «Собеседник».
· При помощи блока слить [ ] [ ] составить различные фразы, включающие имя собеседника.
Направления развития проекта. При помощи других блоков узнать, чьё имя длиннее; проверить, не начинаются ли имя собеседника и имя Кота на одну и ту же букву.
Введённый материал и пояснения
Scratch. Группы блоков:
операторы: слить [ ] [ ], буква [ ] в [ ], длина строки [ ].
сенсоры: спросить [ ] и ждать, ответ.
Обратите внимание. В Scratch (начиная с версии 1.4) можно вставлять имена переменных в большинство блоков, где это допускается по смыслу. Например, возможен такой вариант:
. В этом случае Кот скажет: «Истина», поскольку истинно приведённое равенство для строк.
Если использовать строковые значения в математических выражениях вместо чисел, то возможно два варианта реакции программы: (1) если строка изображает число по всем правилам, то над ней будут выполнены числовые действия; (2) если строка — это просто последовательность символов, то её значение равно нулю.
Если использовать числовые выражения вместо строк, то они рассматриваются как строки. Например, аналог вывода на печать числовой переменной x может быть таким: говорить [x] в течение [5] секунд.
Можно легко обращаться к цифрам числа как к элементам линейного массива при помощи блока буква [ ] в [ ].
В качестве закрепления навыков работы со строковыми переменными можно разработать два проекта:
· Вычисление суммы цифр введённого пользователем числа.
· Программа-угадыватель задуманного пользователем числа (из заранее оговорённого диапазона; например, [1..100]).
Комбинируя команды обработки строк и списков (из-за ограниченного размера статьи здесь не рассматриваются) можно разрабатывать проекты с элементами баз данных.
Выводы
Мы далеки от мысли, что информатика в школе — это только программирование. Работая в среде Scratch, ученик знакомится не только с языком программирования, но и с текстовым и графическим редакторами, элементами пользовательского интерфейса, логикой, новыми математическими понятиями, элементами проектной деятельности и др. Занятия проходят с положительной мотивацией. Самостоятельно выбранные задачи интересны и, как правило, служат основой для более сложных проектов. Такая деятельность хорошо сочетается у нас с работой по «бескомпьютерным» учебникам А. К. Звонкина, С. К. Ландо, А. Л. Семенова и Т. А. Рудченко.
Литература
1. Денисова Л. В., Дженжер В. О. Пропедевтика идей параллельного программирования в средней школе при помощи среды Scratch / Современные информационные технологии и ИТ-образование: III Межд. науч.-практ. конф., Москва, МГУ имени М. В. Ломоносова, 2008 г.: Сб. докладов: Учебно-методическое пособие / Под ред. В. А. Сухомлина. — М.: МАКС Пресс, 2008. — С 451–459.
[1] Исследования выполнены при поддержке Рособразования в рамках реализации АВЦП «Развитие научного потенциала высшей школы» (2009–2010 годы) (№ 3.1.2/4125).


