асинхронная школа программирования для детей от 6 лет Московская Область, Люберцы,... 89917884544

Snap! (Снэп)

21.10.2019

Snap! (Снэп) – блочный язык, или среда программирования, разработанный на основе Scratch в Калифорнийском университете в Беркли. Это своеобразный язык-последователь Scratch, «выросший» из него и дополненный функциональным языком программирования Scheme.

Модификации языка Snap! применяют для программирования конструкторов Arduino. С помощью Snap! проводят имитационное моделирование многоагентных систем – когда изучаемая реальная система заменяется моделью. Так моделируют, например, системы ликвидации чрезвычайных ситуаций, системы онлайн-торговли. Возможности Snap! подходят для построения графических изображений самых разных систем, для рисования сложных фигур.

Основное отличие Snap! от Scratch – его расширенный функционал и более мощные возможности, которые он получил благодаря наличию объектов первого класса. Объекты, имеющие этот тип данных, можно присваивать переменной, передавать как параметр и возвращать из функции. Поэтому в Snap! можно создавать двумерные массивы. Функции в Snap! тоже являются объектами первого класса, и их можно передавать как аргумент в другую функцию, то есть использовать «функцию в функции», или рекурсию. И даже спрайты – основные действующие лица при программировании в Snap! тоже имеют тип данных первого класса и могут использоваться как аргумент функции. Например, возможно такое «вложение»: «спрайт1 думает о спрайте2». Эти дополнительные возможности блочного языка Snap! позволяют использовать его не только в школах программирования для детей, но и для обучения старшеклассников и студентов. С помощью Snap! они знакомятся с так называемым функциональным программированием, где можно оперировать значениями путем вычисления результатов функций, без использования присваивания.

Snap! запускается и работает непосредственно в браузере и не требует установки на компьютер пользователя. Интерфейс Snap! очень похож на интерфейс Scratch. По умолчанию здесь установлен английский язык, который можно переключить на один из 38 языков.

Создаваемый в Snap! проект состоит из отдельных спрайтов, которые перемещаются по сцене. Поведение каждого спрайта программируется с помощью скриптов. Скрипты собираются из отдельных блоков в специальной области скриптов. Наверху каждого скрипта расположен блок с условием, при выполнении которого скрипт начнет выполняться. Все скрипты в проекте постоянно проверяют условия у себя в шапках и при их выполнении запускаются одновременно. Например, первый скрипт перемещает спрайт, второй изменяет его размер, третий проигрывает звук. Помимо блоков-условий есть также блоки-переменные, функции, операторы. Они могут вставляться в окошки других блоков. Файл проекта можно сохранять как на локальном компьютере, так и в облаке.

С помощью кнопок меню загружаются готовые примеры, которые позволяют посмотреть, как все устроено. Также есть возможность поделиться своим проектом. В проект можно импортировать изображения (костюмы спрайтов, фоны сцены), звуки и многое другое. В обычном режиме работы Snap! обновляет экран с максимально возможной частотой для более плавного отображения анимации при использовании большого числа подвижных спрайтов. Спрайт в свой проект можно добавить из коллекции Snap!, а можно нарисовать его самостоятельно во встроенном графическом редакторе. Для готового спрайта задается множество разных свойств с помощью специальных кнопок и закладок управления свойствами. Например, стили вращения спрайта, возможность перемещать спрайт мышкой и другие. По умолчанию у спрайта есть только костюм черепашки в виде стрелочки, но костюмы можно менять, импортируя в проект файл с нужным изображением. По умолчанию у скрипта нет звуков, но их также можно добавить, импортировав звуковые файлы.

Snap! дает широкие возможности простым способом drag-and-drop создавать программы из собственных блоков. В школах программирования для детей такой способ на начальном этапе вызывает большой интерес благодаря своей простоте и разнообразию вариантов. А в перспективе знакомство со Snap! может дать толчок к самостоятельному изучению более сложных вещей в области программирования