From Test-Scratch-Wiki

< Ukr:Довідка:Scratchblocks

(incomplete, WIP)
 
(final translation version (from real en))
 
Line 45: Line 45:
  
 
===Текстовий ввод===
 
===Текстовий ввод===
Поле для текстового вводу задається квадратними дужками: <code>[lorem ipsum]</code>
+
Поле для текстового вводу задається квадратними дужками: <code>[Привіт]</code>
  
 
<pre>говорити [Привіт]</pre>
 
<pre>говорити [Привіт]</pre>
Line 63: Line 63:
  
 
<scratchblocks>
 
<scratchblocks>
if <<мишку натиснуто?> і <(образ #) = [1]>> then
+
якщо <<мишку натиснуто?> і <(образ #) = [1]>> то
 
     штамп
 
     штамп
 
end
 
end
Line 157: Line 157:
  
 
==Користувацькі блоки==
 
==Користувацькі блоки==
If one tries to show a custom block, it will appear obsolete (red) because it has not been defined.
+
Якщо спробувати створити відображення власного блоку (нерозпізнаваного ані Скретч, ані блоковим розширенням), від відобразиться червоним (і за замовчуванням буде зчіплюючого типу).
  
<pre>jump</pre>
+
<pre>стрибнути</pre>
  
<scratchblocks>jump</scratchblocks>
+
<scratchblocks>стрибнути</scratchblocks>
  
A definition can be created by writing "define" followed by the name of the block:
+
Можна створити визначення блоку (користувацький блок) за допомогою псевдокоду "визначити", за яким іде назва нового блоку:
  
<pre>define jump
+
<pre>визначити стрибнути
repeat (10)
+
повторити (10)
     change y by (4)
+
     змінити y на (4)
 
end</pre>
 
end</pre>
  
 
<scratchblocks>
 
<scratchblocks>
define jump
+
визначити стрибнути
repeat (10)
+
повторити (10)
     change y by (4)
+
     змінити y на (4)
 
end
 
end
 
</scratchblocks>
 
</scratchblocks>
  
Number, boolean, and string arguments can be added:
+
Можна додати перелік аргументів – числових, булевих, текстових:
  
<pre>define jump (height) <gravity on?> [message]</pre>
+
<pre>визначити стрибнути (висота) <тяжіння ввімкнене?> [повідомлення]</pre>
  
<scratchblocks>define jump (height) <gravity on?> [message]</scratchblocks>
+
<scratchblocks>визначити стрибнути (висота) <тяжіння ввімкнене?> [повідомлення]</scratchblocks>
  
Once a define hat has been made, one can then use the block ''inside the same &lt;scratchblocks&gt; tag'', and it will no longer appear obsolete.
+
Таке визначення можна застосовувати ''всередині того самого тегу &lt;scratchblocks&gt;'', де воно зроблене, і новий блок виглядатиме як розпізнаваний Скретч та Scratchblocks.
  
<pre>jump
+
<pre>стрибнути
  
define jump
+
визначити стрибнути
repeat (10)
+
повторити (10)
     change y by (4)
+
     змінити y на (4)
 
end</pre>
 
end</pre>
  
 
<scratchblocks>
 
<scratchblocks>
jump
+
стрибнути
  
define jump
+
визначити стрибнути
repeat (10)
+
повторити (10)
     change y by (4)
+
     змінити y на (4)
 
end
 
end
 
</scratchblocks>
 
</scratchblocks>
  
=== Custom Block Inputs ===
+
===Користувацькі блоки вводу===
If one tries to use an input reporter without making a block definition first, it will appear as a [[variable]].
+
Якщо спробувати написати блок-репортер без попереднього його визначення, він відобразиться як звичайна змінна.
  
<pre>say (height)</pre>
+
<pre>говорити (висота)</pre>
  
<scratchblocks>say (height)</scratchblocks>
+
<scratchblocks>говорити (висота)</scratchblocks>
  
But if it is put below a block definition, it will render as an input reporter:
+
Але якщо подібний запис зробити всередині визначення користувацького блоку, отримаємо відображення блока-репортера:
  
<pre>define jump (height)
+
<pre>визначити стрибнути (висота)
say (input)</pre>
+
говорити (висота)</pre>
  
 
<scratchblocks>
 
<scratchblocks>
define jump (height)
+
визначити стрибнути (висота)
say (height)
+
говорити (висота)
 
</scratchblocks>
 
</scratchblocks>
  
== List Reporters ==
+
==Спискові блоки-репортери==
If one tries to write a list reporter, it will look like a variable reporter, because the plugin has no way of telling them apart.
+
Якщо спробувати записати списковий блок-репортер, він відобразиться як репортер із простою змінною, бо розширення не аналізує код програми й тому не може розрізнити просту й спискову змінну.
  
<pre>say (list of Scratch team members)</pre>
+
<pre>говорити (список команди Скретч)</pre>
  
<scratchblocks>say (list of Scratch team members)</scratchblocks>
+
<scratchblocks>говорити (список команди Скретч)</scratchblocks>
  
However, if one has used the list in a '''list block''' ''inside the same &lt;scratchblocks&gt; tag'', then it will render correctly:
+
Але якщо ''всередині того самого тега'' &lt;scratchblocks&gt; застосувати до змінної дії як до списка, тобто використати її у '''блоці списка''', отримаємо коректне відображення:
  
<pre>add [mres] to [list of Scratch team members v]
+
<pre>додати [mres] до [список команди Скретч v]
add [paddle2see] to [list of Scratch team members v]
+
додати [paddle2see] до [список команди Скретч v]
add [harakou] to [list of Scratch team members v]
+
додати [harakou] до [список команди Скретч v]
say (list of Scratch team members)</pre>
+
говорити (список команди Скретч)</pre>
  
 
<scratchblocks>
 
<scratchblocks>
add [mres] to [list of Scratch team members v]
+
додати [mres] до [список команди Скретч v]
add [paddle2see] to [list of Scratch team members v]
+
додати [paddle2see] до [список команди Скретч v]
add [harakou] to [list of Scratch team members v]
+
додати [harakou] до [список команди Скретч v]
say (list of Scratch team members)
+
говорити (список команди Скретч)
 
</scratchblocks>
 
</scratchblocks>
  
If a list block is not wanted or needed inside the same &lt;scratchblocks&gt; tag, <code>:: list</code> can be used:
+
Якщо таке використання змінної видається зайвим, можна для неї безпосередньо вказати тип <code>:: list</code>:
  
<pre>say (list of Scratch team members :: list)</pre>
+
<pre>говорити (список команди Скретч :: list)</pre>
  
 
<scratchblocks>
 
<scratchblocks>
say (list of Scratch team members :: list)
+
говорити (список команди Скретч :: list)
 
</scratchblocks>
 
</scratchblocks>
  
== Shortening Source Code ==
+
==Скорочення запису псевдокоду==
It is possible to make the source of ScratchBlocks code slightly shorter by removing unnecessary code. No spaces are necessary between an insert and the block text. Also, closing brackets (<code>]</code>) and parentheses (<code>)</code>) can be left off at the end of a line. Therefore, the following two snippets render identically, though the first is 226 characters, and the second only 183:
+
Можна скоротити псевдокод ScratchBlocks, прибравши необов'язкові символи. Це закінчення охоплюючих блоків наприкінці скрипта, дужки та лапки для закривання виразів наприкінці рядку, пропуски між полями вводу та текстом блоку. Отже, ці два фрагменти псевдокоду дають одне й те саме відображення:
  
<pre>when gf clicked
+
{| class="wikitable"
ask [n=] and wait
+
|-
set [n v] to (answer)
+
|Повний запис||Скорочений запис
set [i v] to [0]
+
|-
repeat until <(n) = [1]>
+
|<pre>коли @greenFlag натиснуто
if <((n) mod (2)) = [0]> then
+
запитати [n=] і чекати
set [n v] to ((n) / (2))
+
надати [n v] значення (відповідь)
else
+
надати [i v] значення [0]
set [n v] to (((3) * (n)) + (1))
+
повторити до <(n) = [1]>
 +
якщо <(остача (n) на (2)) = [0]> то
 +
надати [n v] значення ((n) / (2))
 +
інакше
 +
надати [n v] значення (((3) * (n)) + (1))
 
end
 
end
change [i v] by (1)
+
змінити [i v] на (1)
 
end
 
end
say (i)</pre>
+
говорити (i)</pre>
<pre>when gf clicked
+
|<pre>коли @greenFlag натиснуто
ask[n=]and wait
+
запитати[n=]і чекати
set[n v]to(answer
+
надати[n v]значення(відповідь
set[i v]to[0
+
надати[i v]значення[0
repeat until<(n)=[1
+
повторити до<(n)=[1
if<((n)mod(2))=[0]>then
+
якщо<(остача(n)на(2))=[0]>то
set[n v]to((n)/(2
+
надати[n v]значення((n)/(2
else
+
інакше
set[n v]to(((3)*(n))+(1
+
надати[n v]значення(((3)*(n))+(1
 
end
 
end
change[i v]by(1
+
змінити[i v]на(1
 
end
 
end
say(i</pre>
+
говорити(i</pre>
 +
|}
  
 
<scratchblocks>
 
<scratchblocks>
when gf clicked
+
коли @greenFlag натиснуто
ask[n=]and wait
+
запитати[n=]і чекати
set[n v]to(answer
+
надати[n v]значення(відповідь
set[i v]to[0
+
надати[i v]значення[0
repeat until<(n)=[1
+
повторити до<(n)=[1
if<((n)mod(2))=[0]>then
+
якщо<(остача(n)на(2))=[0]>то
set[n v]to((n)/(2
+
надати[n v]значення((n)/(2
else
+
інакше
set[n v]to(((3)*(n))+(1
+
надати[n v]значення(((3)*(n))+(1
 
end
 
end
change[i v]by(1
+
змінити[i v]на(1
 
end
 
end
say(i
+
говорити(i
 
</scratchblocks>
 
</scratchblocks>
  
However, this is considered poor style and is not recommended.
+
Пропуски незначущі в багатьох мовах програмування, тож це питання особистих вподобань автора. Але інші синтаксичні зміни погано виглядають, знижують зрозумілість псевдокоду та вкрай не рекомендовані.
  
== Hacks ==
+
==Ручна розмітка==
The blocks plugin offers hacks to allow representation of scripts from [[Scratch Modifications]] and old or unreleased versions of Scratch.
+
Блокове розширення надає можливість детальної ручної розмітки (це називають ''хаком''), аби відображувати блоки й скрипті із [[Ukr:Модифікації Скретч|модифікацій Скретч]] та застарілих і невипущених версій Скретч.
  
For a full tutorial on how to use scratchblocks hacks, see [[topic:55586|this topic]].
+
Повне роз'яснення застосування хаків наведено [[topic:55586|на форумі]].
  
=== Color and Shape Changing ===
+
===Зміна кольору та форми===
The color and shape of a block can be changed. This can be useful for forcing non-Scratch blocks to appear correctly. Note that only color changing with the legacy syntax works in the old version. The legacy syntax is obsolete (it no longer works since scratchblocks3).
+
Ти можеш змінити колір та форму відображення блоку. Це буває необхідним, коли слід відобразити блоки, що не належать до Скретч, правильним чином.
  
 
<div style="overflow:auto">
 
<div style="overflow:auto">
 
{| class="wikitable"
 
{| class="wikitable"
! width="30%" | Feature
+
! width="30%" | Дія
! width="50%" | Code
+
! width="50%" | Код
! width="20%" | Result
+
! width="20%" | Відображення
 
|-
 
|-
| Changing category (works for any kind of block)
+
| Зміна категорії (будь-якого блоку)
| <pre>abc :: looks
+
| <pre>блок :: looks
say [I'm not a Motion block!] :: motion
+
говорити [Я не блок руху!] :: motion
eat (pen color :: pen) :: control
+
з'їсти (колір олівця :: pen) :: control
if <touching [mouse pointer v] :: list> then
+
якщо <торкається [вказівник миші v] ? :: list> то
     die :: grey
+
     померти :: grey
 
end</pre>
 
end</pre>
 
| <scratchblocks>
 
| <scratchblocks>
abc :: looks
+
блок :: looks
say [I'm not a Motion block!] :: motion
+
говорити [Я не блок руху!] :: motion
eat (pen color :: pen) :: control
+
з'їсти (колір олівця :: pen) :: control
if <touching [mouse pointer v] ? :: list> then
+
якщо <торкається [вказівник миші v] ? :: list> то
     die :: grey
+
     померти :: grey
 
end
 
end
 
</scratchblocks>
 
</scratchblocks>
 
|-
 
|-
| Changing color
+
| Зміна кольору
| <pre>think [Arbitrary colors?] :: #228b22</pre>
+
| <pre>подумати [Довільні кольори?] :: #228b22</pre>
| <scratchblocks>think [Arbitrary colors?] :: #228b22</scratchblocks>
+
| <scratchblocks>подумати [Довільні кольори?] :: #228b22</scratchblocks>
 
|-
 
|-
| Changing shape
+
| Зміна форми
| <pre>abc :: events hat
+
| <pre>блок1 :: events hat
def :: motion stack
+
блок2 :: motion stack
ghi :: pen reporter
+
блок3 :: pen reporter
jkl :: operators boolean</pre>
+
блок4 :: operators boolean</pre>
 
| <scratchblocks>
 
| <scratchblocks>
abc :: events hat
+
блок1 :: events hat
def :: motion stack
+
блок2 :: motion stack
ghi :: pen reporter
+
блок3 :: pen reporter
jkl :: operators boolean
+
блок4 :: operators boolean
 
</scratchblocks>
 
</scratchblocks>
 
|-
 
|-
| Creating C blocks and changing category
+
| Створення охоплюючого блоку й зміна категорії
| <pre>mno {
+
| <pre>мійблок {
 
     ...
 
     ...
 
} :: sensing</pre>
 
} :: sensing</pre>
 
| <scratchblocks>
 
| <scratchblocks>
mno {
+
мійблок {
 
     ...
 
     ...
 
} :: sensing
 
} :: sensing
 
</scratchblocks>
 
</scratchblocks>
 
|-
 
|-
| C blocks with multiple branches
+
| Охоплюючий блок з кількома розвилками
 
| <pre>pqr {
 
| <pre>pqr {
 
     ...
 
     ...
Line 365: Line 370:
 
</scratchblocks>
 
</scratchblocks>
 
|-
 
|-
| C block with cap
+
| Охоплюючий блок-шляпа
| <pre>yz {
+
| <pre>шляпа {
 
     ...
 
     ...
 
} :: motion cap</pre>
 
} :: motion cap</pre>
 
| <scratchblocks>
 
| <scratchblocks>
yz {
+
шляпа {
 
     ...
 
     ...
 
} :: motion cap
 
} :: motion cap
 
</scratchblocks>
 
</scratchblocks>
 
|-
 
|-
| Adding icons
+
| Додавання піктограм
 
| <pre>@greenFlag @turnRight @loopArrow :: grey</pre>
 
| <pre>@greenFlag @turnRight @loopArrow :: grey</pre>
 
| <scratchblocks>@greenFlag @turnRight @loopArrow :: grey</scratchblocks>
 
| <scratchblocks>@greenFlag @turnRight @loopArrow :: grey</scratchblocks>
Line 382: Line 387:
  
 
=== Snap! ===
 
=== Snap! ===
{{see also|Snap!}}
+
{{see also|en:Snap!}}
 
+
Поточна версія розширення також підтримує можливості, специфічні для Snap!, як-от "кільцевання". Інші блоки Snap! можна створити за допомогою описаних вище хаків кольору та форми.
The new plugin also supports features specific to Snap!, such as "rings". Other blocks in Snap! can be created using the color/shape hacks above.
 
  
 
<pre>run ({create clone :: control} @addInput :: grey ring) :: control
 
<pre>run ({create clone :: control} @addInput :: grey ring) :: control
Line 401: Line 405:
  
 
warp {
 
warp {
   move (10) steps
+
   перемістити на (10) кроків
 
} :: grey
 
} :: grey
  
report [Done!] :: control cap
+
report [Все!] :: control cap
  
(<> @addInput) // without even the :: grey ring</pre>
+
(<> @addInput) // навіть без :: grey ring</pre>
which produces these blocks:
+
Таким псевдокодом створюється наступне відображення:
 
<scratchblocks>
 
<scratchblocks>
 
run ({create clone :: control} @addInput :: grey ring) :: control
 
run ({create clone :: control} @addInput :: grey ring) :: control
Line 424: Line 428:
  
 
warp {
 
warp {
   move (10) steps
+
   перемістити на (10) кроків
 
} :: grey
 
} :: grey
  
report [Done!] :: control cap
+
report [Все!] :: control cap
  
(<> @addInput) // without even the :: grey ring
+
(<> @addInput) // навіть без :: grey ring
 
</scratchblocks>
 
</scratchblocks>
  
 
=== GP ===
 
=== GP ===
 
+
Поточна версія розширення включає також хаки, специфічні для [[en:GP]].
This plugin also includes hacks to [[GP]].
 
 
<scratchblocks>
 
<scratchblocks>
 
when tracking (mouse x :: variables) (mouse y :: variables) :: hat control
 
when tracking (mouse x :: variables) (mouse y :: variables) :: hat control
Line 440: Line 443:
 
((1) != (0) :: operators)
 
((1) != (0) :: operators)
  
define(a function :: motion) :: custom hat
+
define(функція :: motion) :: custom hat
 
return (1) :: control
 
return (1) :: control
  
say (pi :: operators) :: motion
+
говорити (pi :: operators) :: motion
  
when I receive [go] :: control
+
коли я отримую [go] :: control
  
wait @addInput :: control
+
чекати @addInput :: control
  
 
(isNil [obj v] :: operators)
 
(isNil [obj v] :: operators)
  
(touching mouse :: sensing)
+
(торкається вказівника миші :: sensing)
  
 
((--( :: #ffffff) :: operators) :: operators)
 
((--( :: #ffffff) :: operators) :: operators)
Line 459: Line 462:
 
</scratchblocks>
 
</scratchblocks>
  
[[Category:Ukr/Довідка]]
+
[[Category:Ukr/Довідка|Розширення Scratchblocks]]

Latest revision as of 09:06, 4 September 2020

Псевдокод для графічного відображення оточується тегами:

Спрощене пояснення можна знайти на форумі (англ.)

Текст кожного блоку починається з нового рядку і має бути написаний саме так, як він виглядає у Скретч. Приміром:

Код Відображення
[scratchblocks]
коли @greenFlag натиснуто
завжди
    поворот @turnRight на (15) градусів
    говорити [Привіт!] (2) сек
    якщо <мишку натиснуто?> то
        змінити [натиск миші v] на (1)
    end
end
[/scratchblocks]
коли @greenFlag натиснуто
завжди
    поворот @turnRight на (15) градусів
    говорити [Привіт!] (2) сек
    якщо <мишку натиснуто?> то
        змінити [натиск миші v] на (1)
    end
end

Аргументи

Аргументи, тобто вхідні дані для блоку, представляються у псевдокоді за допомогою певної розмітки.

Числовий ввод

Поле для суто числового вводу, кругле, задається звичайними дужками: (10).

перемістити на (10) кроків
перемістити на (10) кроків

Текстовий ввод

Поле для текстового вводу задається квадратними дужками: [Привіт]

говорити [Привіт]
говорити [Привіт]
подумати [бувай]
подумати [бувай]

Блоковий ввод

Булеві блоки та блоки-репортери задаються такою розміткою: <булевий> та (репортер) відповідно.

якщо <<мишку натиснуто?> і <(образ #) = [1]>> то
    штамп
end
якщо <<мишку натиснуто?> і <(образ #) = [1]>> то
    штамп
end

Свого часу булеві блоки відображувалися круглими, наче репортери. Це було виправлено у scratchblocks3.

Ввод кольору

SandCastleIcon.png This page has links to outside of the Scratch website or Wikipedia. Remember to stay safe when using the internet as we can't guarantee the safety of other sites.

Поле для вводу кольору задається розміткою [#hexcode]. Тут #hexcode – 16-річний RGB код кольору.

задати колір олівця [#00ff00]
задати колір олівця [#00ff00]

Сайт colorpicker.com може допомогти записати правильний код для обраного кольору.

Випадаючий список

Позначка випадаючого меню зі списком задається символом "v": [вибір v]. Звісно, відображення не призначене для змінювання читачем, тож насправді розкрити цей список на веб-сторінці неможливо. У псевдокоді наводиться єдине, обране автором програми, значення.

зупинити [все v]
зупинити [все v]

Можна задати кругле відображення цього поля в такий спосіб: (вибір v).

оповістити (старт v)
оповістити (старт v)

Спеціальні блоки

Певні блоки задаються особливою розміткою, зокрема ті, які всередині містять зображення-піктограми.

Блоки-шляпи

Блок Коли зелений прапорець натиснуто задається особливим синтаксисом (внаслідок можливості багатомовної локалізації):

коли @greenFlag натиснуто
коли @greenFlag натиснуто

Для блоку Коли спрайт натиснуто попередня версія блокового розширення вимагала, аби назву спрайту було вказано у квадратних дужках. Тепер це вже не потрібно, оскільки назва спрайта більше не є параметром, блок діє на той спрайт, у скрипті якого він знаходиться:

коли спрайт натиснуто
коли спрайт натиснуто

Блок Коли клавішу () натиснуто використовує випадаючий список:

коли клавішу [пропуск v] натиснуто
коли клавішу [пропуск v] натиснуто

Зчіплюючі блоки

Блок Поворот на () градусів потребує вказівки напрямку поворота. У псевдокоді напрямок позначається спеціальними словами: @turnRight (за годинниковою стрілкою, англ. clockwise); @turnLeft (проти годинникової стрілки, англ. counterclockwise).

поворот @turnRight на () градусів
поворот @turnRight на () градусів
поворот @turnLeft на () градусів
поворот @turnLeft на () градусів

Охоплюючі блоки

Охоплюючий блок має бути закритий псевдокодом "end" після останнього блоку, який має бути охоплений цип блоком. Виняток – охоплюючий блок наприкінці псевдокоду скрипта, там він буде закритий автоматично. Приміром:

повторити (10)
    перемістити на (5) кроків
    штамп
end
повторити (10)
    перемістити на (10) кроків
    штамп

відображується як:

повторити (10)
    перемістити на (5) кроків
    штамп
end
повторити (10)
    перемістити на (10) кроків
    штамп

Коментарі

Коментарі додаються до псевдокоду після повного вмісту блоку за двома косими рисками: // коментар. Вони увійдуть у графічне відображення.

перемістити на (10) кроків // чи не занадто далеко?
перемістити на (10) кроків // чи не занадто далеко?

Користувацькі блоки

Якщо спробувати створити відображення власного блоку (нерозпізнаваного ані Скретч, ані блоковим розширенням), від відобразиться червоним (і за замовчуванням буде зчіплюючого типу).

стрибнути
стрибнути

Можна створити визначення блоку (користувацький блок) за допомогою псевдокоду "визначити", за яким іде назва нового блоку:

визначити стрибнути
повторити (10)
    змінити y на (4)
end
визначити стрибнути
повторити (10)
    змінити y на (4)
end

Можна додати перелік аргументів – числових, булевих, текстових:

визначити стрибнути (висота) <тяжіння ввімкнене?> [повідомлення]
визначити стрибнути (висота) <тяжіння ввімкнене?> [повідомлення]

Таке визначення можна застосовувати всередині того самого тегу <scratchblocks>, де воно зроблене, і новий блок виглядатиме як розпізнаваний Скретч та Scratchblocks.

стрибнути

визначити стрибнути
повторити (10)
    змінити y на (4)
end
стрибнути

визначити стрибнути
повторити (10)
    змінити y на (4)
end

Користувацькі блоки вводу

Якщо спробувати написати блок-репортер без попереднього його визначення, він відобразиться як звичайна змінна.

говорити (висота)
говорити (висота)

Але якщо подібний запис зробити всередині визначення користувацького блоку, отримаємо відображення блока-репортера:

визначити стрибнути (висота)
говорити (висота)
визначити стрибнути (висота)
говорити (висота)

Спискові блоки-репортери

Якщо спробувати записати списковий блок-репортер, він відобразиться як репортер із простою змінною, бо розширення не аналізує код програми й тому не може розрізнити просту й спискову змінну.

говорити (список команди Скретч)
говорити (список команди Скретч)

Але якщо всередині того самого тега <scratchblocks> застосувати до змінної дії як до списка, тобто використати її у блоці списка, отримаємо коректне відображення:

додати [mres] до [список команди Скретч v]
додати [paddle2see] до [список команди Скретч v]
додати [harakou] до [список команди Скретч v]
говорити (список команди Скретч)
додати [mres] до [список команди Скретч v]
додати [paddle2see] до [список команди Скретч v]
додати [harakou] до [список команди Скретч v]
говорити (список команди Скретч)

Якщо таке використання змінної видається зайвим, можна для неї безпосередньо вказати тип :: list:

говорити (список команди Скретч :: list)
говорити (список команди Скретч :: list)

Скорочення запису псевдокоду

Можна скоротити псевдокод ScratchBlocks, прибравши необов'язкові символи. Це закінчення охоплюючих блоків наприкінці скрипта, дужки та лапки для закривання виразів наприкінці рядку, пропуски між полями вводу та текстом блоку. Отже, ці два фрагменти псевдокоду дають одне й те саме відображення:

Повний запис Скорочений запис
коли @greenFlag натиснуто
запитати [n=] і чекати
надати [n v] значення (відповідь)
надати [i v] значення [0]
повторити до <(n) = [1]>
якщо <(остача (n) на (2)) = [0]> то
надати [n v] значення ((n) / (2))
інакше
надати [n v] значення (((3) * (n)) + (1))
end
змінити [i v] на (1)
end
говорити (i)
коли @greenFlag натиснуто
запитати[n=]і чекати
надати[n v]значення(відповідь
надати[i v]значення[0
повторити до<(n)=[1
якщо<(остача(n)на(2))=[0]>то
надати[n v]значення((n)/(2
інакше
надати[n v]значення(((3)*(n))+(1
end
змінити[i v]на(1
end
говорити(i
коли @greenFlag натиснуто
запитати[n=]і чекати
надати[n v]значення(відповідь
надати[i v]значення[0
повторити до<(n)=[1
якщо<(остача(n)на(2))=[0]>то
надати[n v]значення((n)/(2
інакше
надати[n v]значення(((3)*(n))+(1
end
змінити[i v]на(1
end
говорити(i

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

Ручна розмітка

Блокове розширення надає можливість детальної ручної розмітки (це називають хаком), аби відображувати блоки й скрипті із модифікацій Скретч та застарілих і невипущених версій Скретч.

Повне роз'яснення застосування хаків наведено на форумі.

Зміна кольору та форми

Ти можеш змінити колір та форму відображення блоку. Це буває необхідним, коли слід відобразити блоки, що не належать до Скретч, правильним чином.

Дія Код Відображення
Зміна категорії (будь-якого блоку)
блок :: looks
говорити [Я не блок руху!] :: motion
з'їсти (колір олівця :: pen) :: control
якщо <торкається [вказівник миші v] ? :: list> то
    померти :: grey
end
блок :: looks
говорити [Я не блок руху!] :: motion
з'їсти (колір олівця :: pen) :: control
якщо <торкається [вказівник миші v] ? :: list> то
    померти :: grey
end
Зміна кольору
подумати [Довільні кольори?] :: #228b22
подумати [Довільні кольори?] :: #228b22
Зміна форми
блок1 :: events hat
блок2 :: motion stack
блок3 :: pen reporter
блок4 :: operators boolean
блок1 :: events hat
блок2 :: motion stack
блок3 :: pen reporter
блок4 :: operators boolean
Створення охоплюючого блоку й зміна категорії
мійблок {
    ...
} :: sensing
мійблок {
    ...
} :: sensing
Охоплюючий блок з кількома розвилками
pqr {
    ...
} stu {
    ...
} vwx :: sound
pqr {
    ...
} stu {
    ...
} vwx :: sound
Охоплюючий блок-шляпа
шляпа {
    ...
} :: motion cap
шляпа {
    ...
} :: motion cap
Додавання піктограм
@greenFlag @turnRight @loopArrow :: grey
@greenFlag @turnRight @loopArrow :: grey

Snap!

See also:

Поточна версія розширення також підтримує можливості, специфічні для Snap!, як-от "кільцевання". Інші блоки Snap! можна створити за допомогою описаних вище хаків кольору та форми.

run ({create clone :: control} @addInput :: grey ring) :: control

<() @addInput :: grey ring>

say (http:// [snap.berkeley.edu] :: sensing)

((6) × (7) :: operators)

(join [hello ] [world] @delInput @addInput :: operators)

script variables ((foo) :: grey) ((bar) :: grey) @delInput @addInput :: grey

(all but first of (list) :: list)

warp {
  перемістити на (10) кроків
} :: grey

report [Все!] :: control cap

(<> @addInput) // навіть без :: grey ring

Таким псевдокодом створюється наступне відображення:

run ({create clone :: control} @addInput :: grey ring) :: control

<() @addInput :: grey ring>

say (http:// [snap.berkeley.edu] :: sensing)

((6) × (7) :: operators)

(join [hello ] [world] @delInput @addInput :: operators)

script variables ((foo) :: grey) ((bar) :: grey) @delInput @addInput :: grey

(all but first of (list) :: list)

warp {
  перемістити на (10) кроків
} :: grey

report [Все!] :: control cap

(<> @addInput) // навіть без :: grey ring

GP

Поточна версія розширення включає також хаки, специфічні для.

when tracking (mouse x :: variables) (mouse y :: variables) :: hat control

((1) != (0) :: operators)

define(функція :: motion) :: custom hat
return (1) :: control

говорити (pi :: operators) :: motion

коли я отримую [go] :: control

чекати @addInput :: control

(isNil [obj v] :: operators)

(торкається вказівника миші :: sensing)

((--( :: #ffffff) :: operators) :: operators)

if (--( :: #ffffff) :: operators) {
} @addInput :: control