Snap!
Реализация языка программирования ScratchSnap! (ранее известный как BYOB, Build Your Own Blocks) — реализация языка Scratch, созданная в University of California, Berkeley. Snap! добавляет в язык поддержку простого создания пользовательских блоков, а также списки первого порядка, процедуры первого порядка и продолжения (сохраняемые состояния программы).
Snap! написан на JavaScript и запускается из браузера.
Среда разработки Snap!
Логотип Snap!
Ссылки:
Примеры:
Hello, World!:
Пример для версий Snap! 4.0В отличие от Scratch, скрипты в Snap! должны начинаться с блока-“шляпы”, определяющего условие их запуска. В данном случае скрипт выполняется при запуске презентации.
Hello, World! на Snap!
Факториал:
Пример для версий Snap! 4.0Для вывода результатов вычислений в нужной форме используется глобальная переменная — список, которая “показывается” в конце выполнения программы.
Факториал (итеративное вычисление) на Snap!
Факториал:
Пример для версий Snap! 4.0В этом примере используется рекурсивный способ вычисления факториала. В Snap! существует возможность создания пользовательских блоков, в данном случае — блока factorial
типа reporter
(блок, возвращающий значение, т.е. функция). Созданный блок сразу появляется в палитре блоков, и его можно использовать при редактировании его определения, т.е. для рекурсивных вызовов.
Факториал (рекурсивное вычисление) на Snap!
Числа Фибоначчи:
Пример для версий Snap! 4.0Этот пример реализует рекурсивное вычисление чисел Фибоначчи. Для ускорения работы программы ранее найденные числа записываются в “кэш” — глобальный список.
Числа Фибоначчи (рекурсивное вычисление) на Snap!
Квадратное уравнение:
Пример для версий Snap! 4.0Одна из удобных возможностей Snap! — блок join
позволяет конкатенировать произвольное количество аргументов в одном блоке.
Квадратное уравнение на Snap!
CamelCase:
Пример для версий Snap! 4.0Snap! предоставляет более богатый набор встроенных блоков, чем Scratch, например, в него входят блоки unicode of _
и unicode _ as letter
. Для удобства эти блоки использованы для определения блоков isLetter
, toLower
и toUpper
, аналогичным одноименным функциям в других языках.
CamelCase на Snap!
Комментарии
]]>blog comments powered by Disqus
]]>