12+
Знакомьтесь, это Snap!

Бесплатный фрагмент - Знакомьтесь, это Snap!

Блочная среда программирования мощнее Scratch

Объем: 260 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Введение

Описание Snap!

Snap! — блочная среда программирования, разработанная на основе Scratch в Калифорнийском университете в Беркли (University of California at Berkeley).

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

Пример создания цикла for.

Созданный блок for можно использовать наравне с любым встроенным блоком.
Алонзо досчитает до пяти, а затем скажет: «Я иду тебя искать!»

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

Разработчики Snap!

Snap! был разработан Дженсом Монигом (Jens Mönig at MioSoft Corporation, now at SAP), совместно с Брайаном Харви (Brian Harvey at Berkeley), при помощи студентов Калифорнийского университета в Беркли.

Основные отличия от Scratch

Типы данных.

Основным отличием Snap! от Scratch являются типы данных первого класса.

Объектами первого класса называются элементы, которые могут быть присвоены переменной или элементу массива, переданы как параметр и возвращены из функции. Благодаря этому в Snap! появилась возможность создавать двумерные массивы.

Создание двумерного массива.
Двумерный массив.

Также в Snap! в отличие от Scratch функции являются объектами первого класса. Это позволяет передавать функцию как аргумент в другую функцию. В следующем примере мы передаем функции map как аргумент функцию умножить на 10, и функция map производит это действие со всем списком, переданным ей в качестве второго аргумента.

Пример использования функции.

Еще одним удивительным отличием является то, что спрайты, тоже являются объектами первого класса, и могут быть переданы в качестве аргументов.

Спрайт — объект первого класса.

А вот такое возможно в Scratch?

Один спрайт «думает» о другом спрайте.

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

Медиаредакторы.

Графический редактор Snap! не является его сильной стороной и уступает по функционалу Scratch 2.0 и даже Scratch 1.4. В нем отсутствует векторный редактор, а в растровом отсутствует масштабирование, выделение, штамп и поворот.

Редактор звука в Snap! отсутствует полностью.

Я рекомендую импортировать в Snap! изображения и звуки, подготовленные во внешних онлайн реакторах, а в редакторе изображений лишь немного корректировать загруженные изображения.

Совместимость

Совместимость с браузерами.

Snap! может работать в следующих браузерах:

— Chrome, версия не ниже 43 (это рекомендуемый браузер для работы в среде Snap!)

— Safari версия не ниже 8.4;

— Firefox версия не ниже 38;

— Edge версия не ниже 12;

— Opera версия не ниже 32.

Совместимость со Scratch.

Проекты, созданные в Scratch, могут быть импортированы в Snap! с помощью следующего онлайн сервиса http://djdolphin.github.io/Snapin8r2/.

Проекты, созданные на Snap! могут быть сохранены в формате XML, а затем преобразованы в исполняемый EXE файл с помощью онлайн сервиса расположенного по адресу http://snapp.citilab.eu/.

Совместимость с внешними устройствами.

Snap! может быть использован со следующими внешними устройствами, подключаемыми к компьютеру:

— Orbotix Sphero;

— Lego NXT;

— Nintendo Wiimote;

— Finch and Hummingbird robots;

— Parallax S2 robot;

— LEAP Motion;

— Speech synthesis by Connor Hudson;

— Arduino;

— Fischertechnik ROBOTICS TXT Controller;

— Raspberry Pi.

Основные понятия

Создаваемый проект состоит из отдельных спрайтов, которые перемещаются по сцене. Поведение каждого спрайта может быть запрограммировано с помощью скриптов, которых может быть несколько.

Скрипты собираются из отдельных блоков. Наверху каждого скрипта должен быть расположен блок с овальной шапкой. Этот блок содержит условие, при выполнении которого он начнет выполняться. Выполнение скрипта начинается сверху вниз, все блоки выполняются поочередно. Линейное выполнение программы может быть изменено с помощью блоков условия или цикла. Все скрипты проекта постоянно проверяют условия в своих шапках и при их выполнении запускаются одновременно.

Например, один скрипт перемещает спрайт, второй проигрывает звук, а третий изменяет его размер.

Все три скрипта выполняются одновременно.

Помимо прямоугольных блоков существуют овальные и шестиугольные блоки. Овальные блоки являются встроенными переменными, функциями или операторами. Овальные блоки вставляются в окошки других блоков.

Пример использования овального блока.

Шестиугольные блоки — это логические (булевы) переменные, логические операторы или логические выражения (предикаты). Они вставляются в окошки шестиугольной формы.

Пример использования предиката.

Об авторе

Голиков Денис Владимирович.

Окончил МЭИ по специальности промышленная электроника. Автор нескольких учебников по программированию на Scratch.

Сайт scratch4russia.com

Facebook https://www.facebook.com/ScratchBook4u

Страница книг https://www.facebook.com/scratch4you/

Вконтакте https://vk.com/scratch.book

e-mail scratch.book@ya.ru

Источники

При создании книги были использованы материалы следующих сайтов:

http://snap.berkeley.edu

http://progopedia.ru/implementation/snap/

http://scratch4russia.com/

Знакомство с интерфейсом Snap!

Запуск Snap!

Перейдите на сайт http://snap.berkeley.edu/, запустите Snap!

Кнопка запуска Snap!
Интерфейс Snap!

Элементы интерфейса

Интерфейс очень похож на интерфейс Scratch 1.4.

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

Раздел меню для переключения языка.

Я не советую переключать его на русский, так как вся литература, по Snap! на английском языке.

Строка меню. Первая кнопка

Первая кнопка меню.

Первый раздел строки меню содержит следующие команды:

Project notes

Текстовое описание проекта.

New

Создать новый проект.

Open

Открытие проекта. Проекты могут быть сохранены как на локальном компьютере (кнопка Browser), так и в облаке (кнопка Cloud). При сохранении файлов на локальном компьютере доступ к ним возможен только из Snap! Для сохранения в облаке нужно зарегистрироваться.

Окно открытия проекта.

Также есть возможность загрузить готовые примеры (кнопка Examples). Кнопка Share позволяет поделиться проектом. «Расшаренный» проект будет выделен жирным шрифтом. Для того чтобы им поделится, надо скопировать ссылку на проект вида http://snap.berkeley.edu/snapsource/snap.html#present:Username=***&ProjectName=*** из строки браузера и отправить эту ссылку.

Save и Save as

Окно сохранения проекта.

Import

Этот раздел меню позволяет импортировать в проект следующие объекты:

— проект, экспортированный в файл формата XML;

— спрайт, экспортированный в файл формата XML;

— блок, экспортированный в файл формата XML;

— проект из Scratch 1.4 в формате SB;

— проект из Scratch 2.0 в формате SB2;

— проект из BYOB 3.1

— изображения (костюмы спрайтов, фоны сцены) в любом формате, поддерживаемом Вашим браузером.

— звуки в любом формате, поддерживаемом Вашим браузером.

Также для импорта любого файла в Snap! достаточно перетащить его мышкой в окно Snap! в браузере.

Export project…

Экспорт проекта в файл XML.

Export summary…

Экспорт сводной информации о проекте в виде html страницы.

Export blocks…

Этот раздел меню появляется только в случае создания в проекте собственных блоков или импорта блоков из библиотек. Он позволяет сохранить созданные блоки в файл формата XML.

Окно экспорта блоков.

Unused blocks…

Этот раздел меню появляется только в случае создания в проекте собственных блоков или импорта блоков из библиотек. Он позволяет увидеть неиспользованные блоки чтобы удалить их и уменьшить размер готового проекта.

Окно удаления неиспользуемых блоков.

Import tools

Этот раздел позволяет импортировать большое количество полезных блоков созданных на Snap! Подробнее об этих блоках будет рассказано в следующих главах.

Snap! можно сразу запустить с автоматической загрузкой указанных блоков. Для этого на странице http://snap.berkeley.edu/ есть кнопка http://snap.berkeley.edu/init/.

Кнопка запуска Snap! с автоматической загрузкой дополнительных блоков.

Libraries…

Импорт библиотек, расширяющих возможности Snap! и содержащих дополнительные полезные блоки, созданные на Snap!

Импорт библиотек.

Costumes…

Импорт стандартных костюмов спрайтов.

Импорт стандартных костюмов.

Sounds…

Импорт стандартных звуков.

Импорт стандартных звуков.

Строка меню. Вторая кнопка

Вторая кнопка меню.

Login…

Вход в облачный сервис для зарегистрированных пользователей.

Вход в облачный сервис.

Signup…

Регистрация нового пользователя облачного сервиса.

Регистрация в облачном сервисе.

Reset Password…

Сброс пароля зарегистрированного пользователя.

Строка меню. Третья кнопка

Третья кнопка меню.

Language…

Выбор одного из 38 языков интерфейса.

Zoom blocks…

Изменение размера блоков. Стандартный размер равен 1.

Окно изменения размеров блоков.

В выпадающем списке можно выбрать подходящий размер блоков.

Меню выбора размера блоков.

Stage size…

Изменить размеры сцены. Ширина изменяется в пределах от 480 до 1 000 000, а высота от 180 до 1 000 000. Не имеет смысла делать сцену размером больше экрана.

Окно изменения размеров сцены.

Long form input dialog

При создании переменной в пользовательском блоке вы увидите не простую форму ввода имени переменной.

Простая форма создания переменных.

А сразу полную форму, которая появляется при нажатии на раскрывающийся список в предыдущей форме.

Расширенная форма создания переменных.

Рекомендую держать этот параметр всегда включенным.

Plain prototype labels

Убирает плюсики из редактора блоков.

Если немного поводить мышкой над именем блока, то появится плюсик, и можно вводить имена параметров.

Появился плюсик.

Эта функция используется для создания красивых скриншотов при написании руководств и учебников по Snap!

Input sliders

Отображение слайдеров для ввода числовых значений.

Clicking sound

Звук при соединении блоков.

Turbo mode

Включение турбо режима, в котором сложные проекты работают быстрее.

Flat design

Переключение к плоскому дизайну в стиле Scratch 2.0. Далее везде будут использованы скриншоты этого дизайна.

Плоский дизайн в стиле Scratch 2.0

Thread safe scripts

Защита выполнения скрипта. Если скрипт, который начинается с какого либо события, выполняется, и это событие происходит снова, то скрипт начинает выполнение сначала, с самого верхнего блока. Например, если эта функция выключена, то при нажатии на пробел спрайт каждый раз будет начинать движение слава направо из точки (-240; 0). Если же галочка будет установлена, то скрипт будет выполнен до конца, не смотря на нажатия на пробел.

Пример скрипта.

Prefer smooth animations

Изменение частоты обновления сцены до 1/30 секунды, как в Scratch. В обычном режиме работы Snap! Обновляет экран с максимально возможной частотой. Это используется для более плавного отображения анимации движения спрайтов, при использовании большого количества различных подвижных объектов, а также для одинакового отображения анимации на компьютерах различной мощности.

Flat line ends

Закругление концов линий. Линии с закругленными краями выглядят аккуратнее, однако, в случае если надо нарисовать объекты прямоугольной формы, то эту опцию лучше не включать.

Линия с прямоугольным концом.
Линия с закругленным концом.

Codification support

Добавляет экспериментальную функцию позволяющую транслировать скрипты Snap! в программы на других языках программирования. Добавляет 4 блока.

Поддержка трансляции.

Для знакомства с этими экспериментальными возможностями Snap! загрузите пример «Codification».

Часть блока транслирующего блоки в код на JavaScript.
Пример трансляции.

Inheritance support

Поддержка наследования.

Строка меню. Кнопки над сценой

Возврат к стандартному размеру сцены

Кнопка возвращает сцену к стандартному размеру.

Если кликнуть на эту кнопку, удерживая нажатой клавишу Shift, то сцена уменьшится до минимально возможного размера.

На весь экран

Кнопка разворачивает сцену на весь экран. Snap! Переходит в режим презентации.

Кнопка переключения в режим презентации.

Зеленый флажок

Запуск проекта.

Если на зеленый флажок кликнуть, удерживая клавишу Shift, то Snap! перейдет в турбо режим и флажок смениться на зеленую молнию.

Запуск проекта в турбо режиме.

Пауза

Пауза.

Остановка проекта

Остановка проекта.

Кнопка добавить спрайт

Эта кнопка добавляет новый спрайт с костюмом в виде стрелочки. Этот костюм называется костюмом черепашки. Не представляю, что надо было сделать с милым существом, чтобы оно стало таким!

Кнопка добавления спрайта.

Кнопка нарисовать спрайт

При нажатии на эту кнопку откроется графический редактор. В котором можно нарисовать произвольный спрайт.

Кнопка рисования спрайта.

Свойства спрайта

Кнопки и закладки управления свойствами спрайта расположены над областью скриптов.

Свойства спрайта.

Стили вращения спрайта

У спрайта есть три стиля вращения.

Первый стиль вращения — можно вращать. Он устанавливается при помощи кнопки can rotate.

Стиль вращения — можно вращать.

Стиль вращения — вправо-влево.

Стиль вращения — не вращать.

Переименование спрайта

Изменить имя спрайта можно непосредственно в окне с его именем.

Возможность перемещения спрайта мышкой

Возможность перемещения спрайта по сцене с помощью мышки включается и отключается кнопкой draggable под окном с именем спрайта.

Кнопка draggable.

Я рекомендую отключать эту опцию при использовании блока when I am clicked.

Закладка Scripts

Открывает область скриптов в которой происходит формирование скриптов из отдельных блоков.

Закладка Scripts.

Закладка Costumes

Эта закладка позволяет управлять различными костюмами спрайта. По умолчанию у скрипта только костюм черепашки в виде стрелочки. Новые костюмы спрайта можно импортировать с помощью раздела меню Import, или просто перетащив в эту закладку файл и изображением.

Закладка Costumes.

Закладка Sounds

Эта закладка позволяет управлять различными звуками, которые может воспроизводить спрайт. В отличие от Scratch, по умолчанию у скрипта нет звуков. Добавить звуки можно импортировав их с помощью раздела меню Import, или просто перетащив в эту закладку звуковой файл.

Закладка Sounds.

Управление сценой

Управление сценой очень похоже на управление спрайтами, за исключением возможности перемещаться.

Управление сценой.

Переименование сцены

Сцену можно переименовать также как и любой спрайт через окошко с ее именем.

Закладка Scripts

Открывает область скриптов в которой происходит формирование скриптов из отдельных блоков. Отличие сцены в том, что у нее отсутствуют синие блоки движения.

Закладка Scripts.

Закладка Costumes

Эта закладка позволяет управлять различными костюмами (фонами в терминологии Scratch) сцены. По умолчанию у сцены пустой белый фон. Новые костюмы сцены можно импортировать с помощью раздела меню Import, или просто перетащив в эту закладку файл и изображением.

Закладка Costumes.

Закладка Sounds

Эта закладка позволяет управлять различными звуками, которые может воспроизводить спрайт. В отличие от Scratch, по умолчанию у скрипта нет звуков. Добавить звуки можно импортировав их с помощью раздела меню Import, или просто перетащив в эту закладку звуковой файл.

Закладка Sounds.

Знакомство с блоками Snap!

Синие блоки движения

move

Переместить спрайт на 10 шагов в текущем направлении.

turn clockwise

Повернуть спрайт на 15 градусов по часовой стрелке по отношению к текущему направлению спрайта.

turn counterclockwise

Повернуть спрайт на 15 градусов против часовой стрелки по отношению к текущему направлению спрайта.

point in direction

Повернуть спрайт в указанном направлении.

point towards

Повернуться по направлению к одному из спрайтов. Спрайт выбирается из выпадающего списка.

go to X Y

Переместить спрайт в точку с заданными координатами Х и Y.

go to

Переместить спрайт в указатель мышки, либо в центр указанного спрайта.

glide

Плавно переместить спрайт (плыть) в точку с заданными координатами. Время перемещения задаётся в секундах.

change X

Изменить координату Х спрайта на указанную величину. При этом спрайт сместится вправо. При изменении на отрицательную величину, спрайт сместится влево.

set X

Установить новое значение координаты Х спрайта.

change Y

Изменить координату Y спрайта на указанную величину. При этом спрайт сместится вверх. При изменении на отрицательную величину, спрайт сместится вниз.

set Y

Установить новое значение координаты Y спрайта.

if on edge, bounce

Этот блок позволяет спрайту отразиться от границы сцены и продолжить движение в новом направлении.

X position

Встроенная переменная, возвращающая текущее значение координаты Х спрайта.

Y position

Встроенная переменная, возвращающая текущее значение координаты Y спрайта.

direction

Встроенная переменная, возвращающая текущее направление спрайта в градусах.

Фиолетовые блоки внешности

switch to costume

Изменение текущего костюма спрайта на костюм, выбранный из выпадающего списка.

next costume

Изменение текущего костюма на следующий костюм.

costume #

Встроенная переменная, возвращающая цифровое значение текущего номера костюма.

say for

Сказать слово «Hello!» в течение двух секунд, при этом выполнение скрипта будет приостановлено.

say

Сказать слово «Helo!» без остановки выполнения скрипта. Сказанная фраза будет постоянно сопровождать спрайт, пока он не скажет другую фразу.

think for

Думать «Hmm…» в течение двух секунд. При этом выполнение скрипта не будет приостановлено.

think

Думать «Hmm…» без остановки выполнения скрипта. Эта мысль будет постоянно сопровождать спрайт, пока он не подумает о чем-нибудь другом.

change effect

Изменить значение эффекта «призрак» на указанную величину. В этом примере значение эффекта увеличится на 25.

set effect

Изменить значение эффекта «цвет» до указанного значения. В этом примере значение эффекта станет равно нулю.

clear graphic effects

Убрать все графические эффекты.

change size

Изменить размер спрайта на указанное количество процентов. В данном случае на 10%.

set size

Установить размер спрайта в процентах от исходного размера.

size

Встроенная переменная, возвращающая текущий размер спрайта.

show

Сделать спрайт видимым.

hide

Сделать спрайт невидимым.

go to front

Переместить спрайт в самый верхний слой.

go back

Переместить спрайт на один слой назад.

Малиновые блоки звука

play sound

Играть звук, выбранный из библиотеки звуков.

play sound

Играть выбранный звук до завершения.

stop all sounds

Остановить все звуки.

rest

Подождать одну пятую доли такта.

play note

Играть ноту №60 (среднее До) половину доли такта.

change tempo

Изменить темп на 20 ударов в минуту.

set tempo

Установить темп в 60 ударов в минуту.

tempo

Встроенная переменная, возвращающая текущее значение темпа в ударах в минуту.

Зелёные блоки пера

clear

Очистить сцену.

pen down

Опустить перо. После этой команды все перемещения пера будут сопровождаться линией, нарисованной на сцене.

pen up

Поднять перо. После этой команды перемещения пера не будут оставлять следов на сцене.

set pen color

Установить цвет пера. Выбор цвета можно осуществить при помощи курсора.

change pen color

Изменить цвет пера на 10.

set pen color

Установить цвет пера в соответствии с номером.

change pen shade

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.