$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
Snap! (ранее известный как BYOB, Build Your Own Blocks) — реализация языка Scratch, созданная в University of California, Berkeley. Snap! добавляет в язык поддержку простого создания пользовательских блоков, а также списки первого порядка, процедуры первого порядка и продолжения (сохраняемые состояния программы).
Snap! написан на JavaScript и запускается из браузера.
Среда разработки Snap!
Логотип Snap!
В отличие от Scratch, скрипты в Snap! должны начинаться с блока-“шляпы”, определяющего условие их запуска. В данном случае скрипт выполняется при запуске презентации.
Hello, World! на Snap!
Для вывода результатов вычислений в нужной форме используется глобальная переменная — список, которая “показывается” в конце выполнения программы.
Факториал (итеративное вычисление) на Snap!
В этом примере используется рекурсивный способ вычисления факториала. В Snap! существует возможность создания пользовательских блоков, в данном случае — блока factorial
типа reporter
(блок, возвращающий значение, т.е. функция). Созданный блок сразу появляется в палитре блоков, и его можно использовать при редактировании его определения, т.е. для рекурсивных вызовов.
Факториал (рекурсивное вычисление) на Snap!
Этот пример реализует рекурсивное вычисление чисел Фибоначчи. Для ускорения работы программы ранее найденные числа записываются в “кэш” — глобальный список.
Числа Фибоначчи (рекурсивное вычисление) на Snap!
Одна из удобных возможностей Snap! — блок join
позволяет конкатенировать произвольное количество аргументов в одном блоке.
Квадратное уравнение на Snap!
Snap! предоставляет более богатый набор встроенных блоков, чем Scratch, например, в него входят блоки unicode of _
и unicode _ as letter
. Для удобства эти блоки использованы для определения блоков isLetter
, toLower
и toUpper
, аналогичным одноименным функциям в других языках.
CamelCase на Snap!