]]> ]]>

Scratch

Реализация языка программирования Scratch

Единственная реализация языка Scratch.

Примеры:

Hello, World!:

Пример для версий Scratch 1.4

Летучая мышь — спрайт, ассоциированный скрипт которого состоит из единственного блока — вывода “Hello, World!”. Приведены две версии примера — для англоязычного интерфейса и локализованная.

say Hello, World!

Hello, World! на Scratch
Hello, World! на Scratch

Hello, World! на Scratch (рус.)
Hello, World! на Scratch (рус.)

Факториал:

Пример для версий Scratch 1.4

strs — массив строк переменной длины. Блок delete all необходим, чтобы очистить массив перед повторным запуском программы. repeat — цикл, повторяющий свое тело заданное количество раз. join — блок конкатенации аргументов. hide скрывает аватар спрайта (чтобы освободить больше места).

Scratch не поддерживает ни стандартный поток вывода, ни возможность “сказать” сообщение из нескольких строк, поэтому для вывода примера в нужной форме использовался массив.

delete all of strs
set i to 0
set f to 1
repeat 17
   add (join i (join (! = ) f)) to strs
   set i to (i + 1)
   set f to (f * i)
hide

Факториал на Scratch
Факториал на Scratch

Числа Фибоначчи:

Пример для версий Scratch 1.4

В Scratch нет простого способа определить функцию, поэтому используется итеративное определение чисел Фибоначчи.

set f1 to 1
set f2 to 1
set str to f1
repeat 15
   set f3 to (f1 + f2)
   set f1 to f2
   set f2 to f3
   set str to join (str (join (,) f1))
say join (str (...))

Числа Фибоначчи на Scratch
Числа Фибоначчи на Scratch

Квадратное уравнение:

Пример для версий Scratch 1.4

Этот пример демонстрирует использование ввода пользовательских данных в Scratch командой ask "..." and wait. В результате этой команды спрайт “говорит” заданное сообщение (приглашение к вводу), и под спрайтом показывается окно ввода. Когда информация введена, ее можно получить через предопределенную переменную answer. При вводе нескольких значений подряд каждое из них следует скопировать в локальную переменную, прежде чем переходить ко вводу следующего.

ask "A = ?" and wait
set A to answer
if A = 0
   say "Not a quadratic equation"
else
   ask "B = ?" and wait
   set B to answer
   ask "C = ?" and wait
   set C to answer
   set D to B*B + (-4)*A*C
   set re to B/(-2*A)
   if D = 0
      say join ("x = " re)
   else
      set im to (sqrt of (abs of D)) / (2*A)
      if D > 0
         say join (join ("x1 = " (re+im)) join (", x2 = " (re-im)))
      else
         say join (join ("x1 = (" join (re join (", " im))) join ("), x2 = (" join (re join (", -" join (im ")")))))

Квадратное уравнение на Scratch
Квадратное уравнение на Scratch

CamelCase:

Пример для версий Scratch 1.4

Эту задачу нельзя решить с использованием только стандартных блоков Scratch; придется воспользоваться скрытыми возможностями среды разработки. В этом руководстве детально описано, как добавить к стандартным блокам еще два, которые будут преобразовывать символ в его ASCII-код (блок “ascii code of _”) и наоборот (“ascii _ as letter”). После добавления этих блоков остаток программы вполне тривиален.

Отметим, что индекс массива начинается с 1, а в условиях циклов и условных переходов логические значения приходится сравнивать с true и false в явном виде.

CamelCase на Scratch
CamelCase на Scratch


Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам