# Довідка з програмування на &turtlescript;

Тут наведено довідник з мови &kturtle;, &turtlescript;. У першому розділі цієї глави ми поглянемо на деякі з аспектів граматики програм &turtlescript;. Другий розділ присвячено математичним операторам, булевим (логічним) операторам і операторам порівняння. Третій розділ є величезним списком всіх команд з почерговим їх обговоренням. У четвертому розділі наведено пояснення щодо надання значень змінним. Нарешті, ми пояснимо як впорядкувати виконання команд за допомогою інструкцій регулювання виконання у п’ятому розділі і як створювати власні команди за допомогою команди `вивчи` у розділі під номером шість.

## Граматика &turtlescript;

Як і у будь-якій мові, у &turtlescript; існують різні типи слів і символів. В українській ми відрізняємо дієслова (наприклад «йти» або «співати») та іменники (наприклад «сестра» або «будинок»). Ці слова використовують з різною метою. &turtlescript; — це мова програмування, за її посередництвом ви можете повідомити &kturtle; про потрібні вам дії.

У цьому розділі ми коротко зупинимося на деяких з різних типів слів та символів &turtlescript;. Ми надамо пояснення щодо коментарів, команд та трьох інших типів буквених виразів: чисел, рядків і булевих (так/ні) значень.

### Коментарі

Програма складається з інструкцій, які виконуються після запуску команди, і так званих коментарів. Коментарі не виконуються, &kturtle; просто ігнорує їх під час виконання програми. Коментарі призначено для програмістів: вони допомагають їм краще розуміти програму. Все, що буде вказано після символу `#` у &turtlescript; вважається коментарем. Ось приклад невеличкої програми, яка не виконує жодних дій:

    # ця невеличка програма нічого не робить, вона складається лише з коментаря!

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

Коментарі є дуже корисними, якщо програма стає трохи складнішою. Коментарі є «порадником» для інших програмістів. У наведеній нижче програмі коментарі використано разом з командою напиши.

    # Цю програму було створено Cies Breijs.
    напиши "цей текст буде написано на полотні"
    # попередній рядок не є коментарем, а наступний — коментар:
    # напиши "цей текст не буде написано!"

У першому рядку наведено опис програми. Другий рядок буде виконано &kturtle;: черепашка намалює напис `цей текст буде написано на полотні` на полотні. Третій рядок є коментарем. У четвертому рядку наведено коментар з фрагментом коду &turtlescript;, якщо вилучити символ `#` з четвертого рядка, &kturtle; виконає інструкцію з друку. Програмісти кажуть: інструкцію «напиши» у четвертому рядку було «закоментовано».

Закоментовані рядки підсвічуються світло-сірим кольором у редакторі коду.

### Команди

За допомогою команди ви можете повідомити черепашці або &kturtle; про те, що слід виконати певну дію. Для деяких команд потрібні вхідні дані, деякі команди самі виводять дані.

    # для команди вперед потрібні вхідні дані, у нашому випадку ними є число 100:
    вперед 100

Перший рядок програми є коментарем. У другому рядку міститься команда `вперед` і число `100`. Число не є частиною команди, воно є «вхідними даними» команди.

Для роботи деяких команд, наприклад `перейди`, потрібно декілька вхідних значень. Ці декілька значень слід відокремлювати між собою символом `,` (комою).

Щоб прочитати детальний огляд всіх команд, які підтримує &kturtle;, перейдіть за цим посиланням. Вбудовані команди буде підсвічено темно-синім.

### Числа

Скоріше за все, ви вже знаєте дещо про числа. Спосіб, у який числа використовуються у &kturtle;, не дуже відрізняється від розмовної мови або математики.

Існують так звані натуральні числа: `0`, `1`, `2`, `3`, `4`, `5` тощо. Від’ємні числа: `-1`, `-2`, `-3` тощо. Крім того, існують десяткові дроби або числа з крапкою: `0.1`, `3.14`, `33.3333`, `-5.05`, `-1.0`. Символ `.` (крапка) є символом, що використовується для відокремлення дробової частини.

Числа можна використовувати у математичних операторах і операторах порівняння. Їх також можна зберігати у змінних. Числа буде підсвічено темно-червоним кольором.

### Рядки

Спочатку наведемо приклад:

    напиши "Привіт, я — рядок."

У цьому прикладі `напиши` — команда, а `"Привіт, я — рядок."` — рядок. Рядки починаються і закінчуються позначкою лапок, `"`, за цими позначками і розпізнає рядки програма &kturtle;.

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

### Булеві (так/ні) значення

Існує лише два булевих значення: `так`
і `ні`
. У цих значень є і інші назви: увімкнути і вимкнути, одиниця і нуль. Але у &turtlescript; ми завжди називатимемо їх `так` і `ні`. Погляньте на цей фрагмент коду &turtlescript;:

    $a = так

Якщо ви зазирнете до вікна інспектора ви побачите, що значенням змінної `$a` є `так`, і що ця змінна належить до булевого типу.

Часто булеві значення є результатом обчислення оператора порівняння, наприклад, у такому фрагменті коду &turtlescript;:

    $відповідь = 10 > 3

Значенням змінної `$відповідь` буде `так`, оскільки `10` більше за `3`.

Булеві значення, `так` і `ні`, буде підсвічено темно-червоним.

## Математичні, булеві оператори та оператори порівняння

Заголовок цього розділу наче натякає на щось складне, але все не так складно, як здається.

### Математичні оператори

Ось основні математичні символи: додавання (`+`), віднімання (`-`), множення (`*`), ділення (`/`) і піднесення до степеня (`^`).

Ось невеличкий приклад математичних операторів, якими ви можете скористатися у &turtlescript;:

    $add      = 1 + 1
    $subtract = 20 - 5
    $multiply = 15 * 2
    $divide   = 30 / 30
    $power    = 2 ^ 2

Результат виконання математичних операцій слід призначати різноманітним змінним. За допомогою інспектора ви зможете переглянути ці змінні.

Якщо вам потрібно виконати прості обчислення, ви можете зробити щось на зразок цього:

    напиши 2010-12

А тепер приклад з дужками:

    напиши ( ( 20 - 5 ) * 2 / 30 ) + 1

Спочатку буде обчислено вираз у дужках. У нашому випадку, буде обчислено 20-5, потім це значення буде помножено на 2, поділено на 30, і додано до нього 1 (у результаті отримаємо 2). Дужками можна скористатися і у інших випадках.

У &kturtle; передбачено і додаткові математичні можливості у формі команд. Нижче наведено список команд, але без означення способу, у який вони працюють: округли, випадкове, корінь, пі, sin, cos, tg, arcsin, arccos, arctg.

### Булеві (так/ні) оператори

Тоді як математичні оператори в основному призначено для чисел, булеві оператори призначено для булевих значень (`так` і `ні`). Передбачено лише три булеві оператори, а саме: `та`
, `або`
і `ні`
. У наведеному нижче фрагменті &turtlescript; показано використання всіх цих операторів:

    $та_1_1 = так та так    # -> так
    $та_1_0 = так та ні   # -> ні
    $та_0_1 = ні та так   # -> ні
    $та_0_0 = ні та ні  # -> ні

    $або_1_1 = так або так    # -> так
    $або_1_0 = так або ні   # -> так
    $або_0_1 = ні або так   # -> так
    $або_0_0 = ні або ні  # -> ні

    $не_1 = не так   # -> ні
    $не_0 = не ні  # -> так

За допомогою інспектора ви зможете переглянути значення, крім того, ми навели результати виконання дій у коментарях. Результат застосування `та` дорівнює `так`, лише якщо з обох боків від нього стоять значення `так`. Результатом застосування `або` буде `так`, якщо з одного з боків від оператора стоїть `так`. Оператор `не` перетворює `так` на `ні`, а `ні` на `так`.

Булеві оператори буде підсвічено рожевим.

#### Декілька додаткових прикладів

Розглянемо наведений нижче приклад з `та`:

    $a = 1
    $b = 5
    якщо (($a < 10) та ($b == 5)) та ($a < $b) {
      напиши "привіт"
    }

У цьому фрагменті &turtlescript; результат застосування трьох операторів порівняння буде об’єднано за допомогою операторів `та`. Це означає, що для того, щоб черепашка написала «привіт», потрібно, щоб всі дії з порівняння давали результат «так».

Приклад з `або`:

    $n = 1
    якщо ($n < 10) або ($n == 2) {
      напиши "привіт"
    }

У цьому фрагменті коду &turtlescript; частина, розташована ліворуч від `або`, дає «так», а частина, розташована праворуч, — «ні». Оскільки одна з двох частин виразу у операторі `або` дорівнює «так», результатом обчислення `або` буде «так». Це означає, що черепашка напише «привіт».

І нарешті, приклад з `не`, у якому ми змінними «так» на «ні», а «ні» — на «так». Дивіться:

    $n = 1
    якщо не ($n == 3) {
      напиши "привіт"
    } інакше {
      напиши "не привіт ;-)"
    }

### Оператори порівняння

Розглянемо таке елементарне порівняння:

    $answer = 10 > 3

Тут ми порівнюємо `10` з `3` за допомогою оператора «більше, ніж». Результатом цього порівняння буде булеве значення `так`, яке буде збережено у змінній `$answer`.

Всі числа і змінні (які містять числа) можна порівнювати за допомогою операторів порівняння.

Ось список можливих операторів порівняння:

#### Типи питань

`$A == $B` | дорівнює | відповіддю буде так, якщо `$A` рівне `$B`
`$A != $B` | не дорівнює | відповіддю буде так, якщо `$A` не дорівнює `$B`
`$A > $B` | більше, ніж | відповіддю буде так, якщо `$A` більше, ніж `$B`
`$A < $B` | менше, ніж | відповіддю буде так, якщо `$A` менше, ніж `$B`
`$A >= $B` | більше або дорівнює | відповіддю буде так, якщо `$A` більше або дорівнює `$B`
`$A <= $B` | менше або дорівнює | відповіддю буде так, якщо `$A` менше або дорівнює `$B`

Будь ласка, зауважте, що `$A` і `$B` мають бути числами або змінними, які містять числа.

## Команди

За допомогою команд ви наказуєте черепашці або програмі &kturtle; виконати якусь дію. Деяким з команд потрібні вхідні дані, деякі — самі виводять дані. У цьому розділі буде пояснено всі вбудовані команди, які можна використовувати у &kturtle;. Крім того, ви можете скористатися командою `вивчи`, щоб створити власні команди. Вбудовані команди, які ми тут обговорюємо, підсвічуються темно-синім кольором.

### Пересування черепашки

Існує декілька команд для пересування черепашки екраном.

вперед (вп)

      вперед X

  `вперед` наказує черепашці просунутися вперед на X пікселів. Якщо перо опущено, черепашка залишатиме по собі слід у вигляді лінії. Команду `вперед` можна скоротити до `вп`.

назад (нд)

      назад X

  Команда `назад` наказує черепашці просунутися назад на X пікселів. Якщо перо опущено, черепашка залишатиме по собі слід у вигляді лінії. Команду `назад` можна скоротити до `нд`

ліворуч (лв)

      ліворуч X

  Команда `ліворуч` наказує черепашці повернутися на X градусів ліворуч. Команду `ліворуч` можна скоротити до `лв`.

праворуч (пр)

      праворуч X

  Команда `праворуч` наказує черепашці повернутися на X градусів праворуч. Команду `праворуч` можна скоротити до `пв`.

напрямок (нпр)

      напрямок X

  Команда `напрямок` спрямовує черепашку у напрямку X градусів, відрахованих від нульового напрямку, безвідносно від попереднього напрямку, куди її було спрямовано. Команду `напрямок` можна скоротити до `нпр`.

візьми_напрям

      візьми_напрям

  Команда `візьми_напрям` повертає напрямок черепашки у форматі градусів, відрахованих від нульового напрямку, де нулеві відповідає напрямок вгору.

центр

      центр

  Команда `центр` пересуває черепашку у центр полотна.

перейди

      перейди X,Y

  Команда `перейди` наказує черепашці перейти до вказаного місця на полотні. Це місце знаходиться у X пікселях від лівого краю полотна, і у Y пікселях від верхнього краю полотна.

перейди_x

      перейди_x X

  Команда `перейди_x` наказує черепашці перейти до точки, розміщеної за X пікселів від лівого краю полотна, залишаючись на тій самій висоті. Команду `перейди_x` можна скоротити до `пx`.

перейди_y

      перейди_y Y

  Команда `перейди_y` наказує черепашці перейти до точки, розміщеної за Y пікселів від верхнього краю полотна, залишаючись на тій же відстані від його лівого краю. Команду `перейди_y` можна скоротити до `пy`.

Під час виконання команд `перейди`, `перейди_x`, `перейди_y` і `центр` черепашка не малюватиме лінії, незалежно від того, піднято чи опущено перо.

### Де знаходиться черепашка?

Існує дві команди, які повертають позицію черепашки на екрані.

візьми_x

  `візьми_x` повертає кількість пікселів від лівого краю полотна до поточної позиції черепашки.

візьми_y

  `візьми_y` повертає кількість пікселів від верхнього краю полотна до поточної позиції черепашки.

### У черепашки є перо

У черепашки є перо, яке малює лінію під час руху черепашки. Існує декілька команд, які керують цим пером. У цьому розділі пояснено зміст цих команд.

підніми_перо (пп)

      підніми_перо

  Команда `підніми_перо` піднімає перо над полотном. Якщо перо піднято під час руху черепашки лінії не малюватиметься. Прочитайте також інформацію щодо команди `опусти_перо`. Команду `підніми_перо` можна скоротити до `pu`.

опусти_перо (оп)

      опусти_перо

  Команда `опусти_перо` опускає перо на полотно. Якщо перо опущено на полотно, під час рухів, черепашка лишатиме по собі слід. Прочитайте також інформацію щодо команди `підніми_перо`. Команду `опусти_перо` можна скоротити до `оп`.

розмір_пера (рп)

      розмір_пера X

  Команда `розмір_пера` встановлює товщину лінії, яку лишає перо, у значення X пікселів. Команду `розмір_пера` можна скоротити до `рп`.

колір_пера (кп)

      колір_пера R,G,B

  Команда `колір_пера` встановлює колір лінії, яку лишає по собі перо. Команда `колір_пера` отримує дані для кольору у вигляді RGB-комбінації. Команду `колір_пера` можна скоротити до `кп`.

### Команди керування полотном

Існує декілька команд, які надають можливість керувати полотном.

розмір_полотна (рпл)

      розмір_полотна X,Y

  За допомогою команди `розмір_полотна` ви можете встановити розмір полотна. Ця команда отримує вхідні значення X і Y, де X — нова ширина полотна у пікселях, а Y — нова висота полотна у пікселях. Команду `розмір_полотна` можна скоротити до `рпл`.

колір_полотна (кпл)

      колір_полотна R,G,B

  Команда `колір_полотна` встановлює колір тла полотна. Команда `колір_полотна` отримує вхідні дані у вигляді RGB-комбінації. Команду `колір_полотна` можна скоротити до `кпл`.

### Команди для очищення

Існує дві команди для очищення полотна, у разі якщо ви зробили помилку.

зітри (зтр)

      зітри

  За допомогою команди `зітри` ви можете витерти всі малюнки з полотна. При цьому всі інші параметри, позиція і напрямок черепашки, колір тла полотна, видимість черепашки і розмір полотна, залишаться незмінними:

перезапусти

      перезапусти

  Команда `перезапусти` очищує все набагато ґрунтовніше за команду `зітри`. Після виконання команди `перезапусти` все виглядатиме так, неначе ви тільки-но запустили &kturtle;. Черепашку буде розташовано по центру екрана, колір тла стане білим, черепашка малюватиме чорну лінію на полотні, а саме полотно матиме розмір 400 на 400 пікселів.

### Черепашка — це спрайт

Спочатку, коротеньке пояснення того, що таке спрайти: спрайти — це маленькі зображення, які можна пересувати екраном, які ми часто бачимо у комп’ютерних іграх. Наша черепашка — також спрайт. Докладнішу інформацію ви зможете отримати з розділу глосарія, присвяченого спрайтам.

Далі, ви зможете ознайомитися з повним списком всіх команд для роботи зі спрайтами.

Поточна версія &kturtle; ще не підтримує використання інших спрайтів, окрім черепашки. У майбутніх версіях ви зможете змінити черепашку на щось інше, що вам сподобається.

покажи_черепашку (пч)

      покажи_черепашку

  Команда `покажи_черепашку` робить черепашку знову видимою після того, як її було сховано. Команду `покажи_черепашку` можна скоротити до `пч`.

сховай_черепашку (сч)

      сховай_черепашку

  Команда `сховай_черепашку` ховає черепашку. Цією командою можна скористатися, якщо черепашка не вписується у ваш малюнок. Команду `сховай_черепашку` можна скоротити до `сч`.

### Чи може черепашка писати?

Відповідь: так. Черепашка може писати: вона напише для вас все, що ви їй накажете написати.

напиши

      напиши X

  Команда `напиши` використовується для того, щоб наказати черепашці написати щось на полотні. Команда `напиши` отримує числа і рядки як вхідні дані. Ви можете `писати` комбінації з чисел і рядків за допомогою символу +. Ось подивіться на цей приклад:

      $рік = 2003
      $автор = "Сіес"
      напиши $автор + " почав роботу над проєктом KTurtle у " + $year + "році, і все ще отримує задоволення від роботи над ним!"

розмір_літер

      розмір_літер X

  Команда `розмір_літер` встановлює розмір шрифту, який використовуватиме команда `напиши`. Команда `розмір_літер` отримує одне вхідне значення, ним має бути число. Розмір встановлюється у пікселях.

### Математичні команди

Наведені нижче команди є додатковими математичними командами &kturtle;.

округли

      округли(x)

  округлює задане число до найближчого цілого.

      напиши округли(10.8)
      вперед 20
      напиши округли(10.3)

  Виконуючи цей код, черепашка напише числа 11 і 10.

випадкове (вип)

      випадкове X,Y

  Команда `випадкове` отримує вхідні дані і виводить вихідні. Як вхідні дані їй потрібні два числа, перше (X) вказує на мінімальне значення числа, яке можна вивести, а друге (Y) — встановлює максимальне значення цього числа. У результаті дії команди буде виведено випадково вибране число, яке буде більше або рівне за мінімальне значення і менше або рівне за максимальне значення. Ось невеликий приклад:

      повтори 500 {
        $x = випадкове 1,20
        вперед $x
        ліворуч 10 - $x
      }

  За допомогою команди `випадкове` ви можете ввести елемент випадковості у вашу програму.

mod

      mod X,Y

  Команда `mod` повертає залишок від ділення першого числа на друге.

корінь

      корінь X

  Команду `корінь` призначено для обчислення квадратного кореня з числа, X.

пі

      пі

  Ця команда повертає сталу π, `3.14159`.

sin
, cos
, tg

      sin X
      cos X
      tg X

  За допомогою цих команд задаються три відомі тригонометричні функції `sin`, `cos` і `tg`. Вхідним параметром для всіх цих команд, X, є число.

arcsin
, arccos
, arctg

      arcsin X
      arccos X
      arctg X

  Ці команди є оберненими функціями sin, cos і tg. Вхідним параметром для всіх цих команд, X, є число.

### Введення і отримання інформації за допомогою діалогових вікон

Діалогове вікно — це невеличке контекстне вікно, у якому розміщено деяку інформацію від програми, або у яке слід ввести деяку інформацію, потрібну програмі. У &kturtle; є дві команди для виклику діалогових вікон, а саме: `повідом` і `спитай`

повідом

      повідом X

  Команда `повідом` отримує як вхідні дані рядок. У результаті виконання команди буде показано контекстне вікно з текстом, який визначає вхідний рядок.

      повідом "Сієс почав роботу над проєктом KTurtle у 2003 році, і все ще отримує задоволення від роботи над ним!"

спитай

      спитай X

  Команда `спитай` отримує вхідні дані у вигляді рядка. У результаті виконання команди буде показано діалогове вікно, у якому міститиметься текст з рядка, точно так само як і у команді повідом. Але, окрім цього, у вікні буде і поле для введенні інформації. У це поле введення користувач може ввести число або рядок, який можна зберегти у змінній або передано, як параметр, команді. Приклад:

      $питання = спитай "Скільки вам років?"
      $роки = 2003 - $in
      напиши "У 2003 році вам було " + $роки + " років."

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

## Присвоювання змінним значень

Спочатку ми розглянемо змінні, а потім поговоримо про те, як надати цим змінним значень.

Змінними є слова, що починаються на $, у редакторі ці слова підсвічуються пурпуровим кольором.

Змінні можуть містити будь-які числа, рядки або булеві значення. За допомогою оператора присвоювання, `=`, ви можете надати змінній її значення. Змінна зберігатиме свій вміст до завершення виконання програми або до зміни значення змінної на якесь інше.

Після надання значень ви можете використовувати змінні так, неначебто вони збігаються з власним вмістом. Ось приклад з фрагментом коду &turtlescript;:

    $x = 10
    $x = $x / 3
    напиши $x

Спочатку змінній `$x` надано значення `10`. Потім `$x` надано значення цієї ж змінної, поділеної на `3` — тобто `$x` надано значення частки `10 / 3`. Нарешті, `$x` буде намальовано черепашкою. Ви можете бачити, що у рядках два і три `$x` використано замість вмісту змінної.

Для того, щоб змінними можна було користуватися, цим змінним слід надати значення. Приклад:

    напиши $n

Результатом виконання буде повідомлення про помилку.

Будь ласка, погляньте на цей приклад &turtlescript;:

    $a = 2004
    $b = 25

    # наступна команда намалює рядок "2029"
    напиши $a + $b
    назад 30
    # а ця команда надрукує "2004 плюс 25 дорівнює 2029":
    напиши $a + " плюс " + $b + " дорівнює " + ($a + $b)

У перших двох рядках встановлено значення змінних `$a` і `$b` 2004 і 25. Далі йдуть дві команди `напиши` з командою `назад 30` між ними. Коментарі перед командами `напиши` пояснюють призначення цих команд. Команду `назад 30` додано для того, щоб забезпечити вивід кожної з порцій даних у окремому рядку. Як бачите змінними можна користуватися як замінниками їх вмісту, ви можете використовувати змінні з будь-якими операторами або передавати їх як вхідні дані під час викликукоманд.

Ще один приклад:

    $ім’я = спитай "Як вас звати?"
    напиши "Привіт, " + $ім’я + "! Успіхів у вивченні мистецтва програмування..."

Досить зрозуміло. Знову ж таки, змінну `$ім’я` використано як рядок.

Інспектор буде дуже корисним під час роботи зі змінними. Цей інструмент покаже вам значення всіх використаних у програмі змінних.

## Контроль над виконанням

Регулятори виконання надають вам змогу — як це і випливає з їх назви — керувати виконанням програми.

Команди керування виконанням підсвічуються темно-зеленим кольором і виокремлюються жирним шрифтом. З регуляторами виконання використовують і фігурні дужки, які підсвічуються чорним кольором і виокремлюються чорним шрифтом.

### Черепашко, зачекай!

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

чекай

      чекай X

  Команда `чекай` наказує черепашці чекати X секунд.

      повтори 36 {
        вперед 5
        праворуч 10
        чекай 0.5
      }

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

### Виконання якщо

якщо

      якщо булеве значення { ... }

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

      $x = 6
      якщо $x > 5 {
        напиши "$x більше за п’ять!"
      }

  У першому рядку змінній `$x` надається значення 6. У другому рядку використано оператор порівняння для знаходження значення `$x > 5`. Оскільки відповіддю на це питання є так регулятор виконання `якщо` дозволить виконання коду між фігурними дужками.

### Якщо «ні», значить «інакше»

інакше

      якщо булеве значення { ... } інакше { ... }

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

      перезапусти
      $x = 4
      якщо $x > 5 {
        напиши "$x більше за п’ять!"
      } інакше {
        напиши "$x менше за шість!"
      }

  Оператор порівняння обчислює значення `$x > 5`. Оскільки 4 не перевищує 5 значенням буде ні. Це означає, що буде виконано код між фігурними дужками після команди `інакше`.

### Цикл «поки»

поки

      поки булеве значення { ... }

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

      $x = 1
      поки $x < 5 {
        вперед 10
        чекай 1
        $x = $x + 1
      }

  У першому рядку змінній `$x` надано значення 1. У другому рядку виконано порівняння `$x < 5`. Оскільки відповіддю на це питання буде так регулятор виконання `поки` починатиме виконання коду між фігурними дужками з початку, до того часу, коли значенням `$x < 5` не стане ні. У нашому випадку, код між фігурними дужками буде виконано чотири рази, оскільки кожного разу, коли виконується п’ятий рядок `$x` збільшується на 1.

### Цикл «повтори»

повтори

      повтори число { ... }

  Регулятор виконання `повтори` дуже схожий на `поки`. Різниця полягає у тому, що `повтори` повторює виконання команд (цикл) задану кількість разів.

### Цикл з лічильником, «для»

для

      для змінна = число до число { ... }

  Цикл `для` — це цикл з лічильником, тобто він лічить повтори за вас. Перше число вказує значення змінної під час першого виконання циклу. Під час кожного виконання це число збільшується, аж доки не досягне другого числа.

      для $x = 1 до 10 {
        напиши $x * 7
        вперед 15
      }

  Кожне виконання коду між фігурними дужками збільшує значення `$x` на 1, до того часу, коли `$x` досягне значення 10. Код між фігурними дужками пише на полотні значення `$x` помноженого на 7. Після виконання програми ви побачите на полотні таблицю множення на 7.

  Типовим розміром кроку циклу є 1, але ви можете використовувати інше значення за допомогою команди на зразок

      для змінна = число до число крок число { ... }

### Полишити цикл

перерви

      перерви

  Негайно припиняє виконання програми у рамках циклу і передає керування команді, яку розташовано одразу за поточним циклом.

### Перервати виконання вашої програми

зупини

      зупини

  Завершує виконання вашої програми.

### Перевірка умови під час виконання програми

перевір

      перевір булеве значення

  Може бути використано для перевірки правильності роботи програми або введених даних.

      $введення = ask "У якому році ви народилися?"
      # рік має бути вказано як додатне значення
      перевір $введення
      > 0

## Створення власних команд за допомогою вивчи

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

    вивчи circle $x {
      повтори 36 {
        вперед $x
        ліворуч 10
      }
    }

Нова команда називається `circle`. Команда `circle` отримує одне вхідне значення, параметр, який задає розмір кола. `circle` не повертає ніяких вихідних даних. Тепер у решті коду можна використовувати команду `circle` як звичайну команду. Ось приклад:

    вивчи коло $X {
      повтори 36 {
        вперед $X
        ліворуч 10
      }
    }

    перейди 200,200
    коло 20

    перейди 300,200
    коло 40

У наступному прикладі буде створено команду, яка повертає
значення.

    вивчи факторіал $x {
      $r = 1
      для $i = 1 до $x {
        $r = $r * $i
      }
      поверни $r
    }

    напиши факторіал 5

У цьому прикладі створено нову команду з назвою `faculty`. Якщо вхідними даними цієї команди буде число `5`, буде повернуто `5*4*3*2*1`. З допомогою команди `поверни` можна вказати вихідне значення і повернути його програмі.

Команди можуть приймати і по декілька вхідних значень. У наступному прикладі буде створено команду, яка малює прямокутник.

    вивчи прямокутник $x, $y {
      вперед $y
      праворуч 90
      вперед $x
      праворуч 90
      вперед $y
      праворуч 90
      вперед $x
      праворуч 90
    }

Тепер ви можете виконати команду `прямокутник 50, 100`, і черепашка намалює на полотні прямокутник.