Warning, /education/kturtle/po/uk/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.

0001 <chapter id="reference">
0002 <title
0003 >Довідка з програмування на &turtlescript;</title>
0004 <para
0005 >Тут наведено довідник з мови &kturtle;, &turtlescript;. У першому розділі цієї глави ми поглянемо на деякі з аспектів <link linkend="grammar"
0006 >граматики</link
0007 > програм &turtlescript;. Другий розділ присвячено <link linkend="mathematical-operators"
0008 >математичним операторам</link
0009 >, <link linkend="boolean-operators"
0010 >булевим (логічним) операторам</link
0011 > і <link linkend="comparing-operators"
0012 >операторам порівняння</link
0013 >. Третій розділ є величезним списком всіх <link linkend="commands"
0014 >команд</link
0015 > з почерговим їх обговоренням. У четвертому розділі наведено пояснення щодо <link linkend="assignment-of-variables"
0016 >надання</link
0017 > значень <link linkend="assignment-of-variables"
0018 >змінним</link
0019 >. Нарешті, ми пояснимо як впорядкувати виконання команд за допомогою <link linkend="controlling-execution"
0020 >інструкцій регулювання виконання</link
0021 > у п’ятому розділі і як створювати власні команди за допомогою команди <link linkend="learn"
0022 ><userinput
0023 >вивчи</userinput
0024 ></link
0025 > у розділі під номером шість.</para>
0026 
0027 <sect1 id="grammar">
0028 <title
0029 >Граматика &turtlescript;</title>
0030 <para
0031 >Як і у будь-якій мові, у &turtlescript; існують різні типи слів і символів. В українській ми відрізняємо дієслова (наприклад «йти» або «співати») та іменники (наприклад «сестра» або «будинок»). Ці слова використовують з різною метою. &turtlescript; — це мова програмування, за її посередництвом ви можете повідомити &kturtle; про потрібні вам дії.</para>
0032 <para
0033 >У цьому розділі ми коротко зупинимося на деяких з різних типів слів та символів &turtlescript;. Ми надамо пояснення щодо <link linkend="comment"
0034 >коментарів</link
0035 >, <link linkend="command"
0036 >команд</link
0037 > та трьох інших типів буквених виразів: <link linkend="number"
0038 >чисел</link
0039 >, <link linkend="string"
0040 >рядків</link
0041 > і <link linkend="boolean-value"
0042 >булевих (так/ні) значень</link
0043 >.</para>
0044 
0045 
0046 <sect2 id="comment">
0047 <title
0048 >Коментарі</title>
0049 <para
0050 >Програма складається з інструкцій, які виконуються після запуску команди, і так званих коментарів. Коментарі не виконуються, &kturtle; просто ігнорує їх під час виконання програми. Коментарі призначено для програмістів: вони допомагають їм краще розуміти програму. Все, що буде вказано після символу <userinput
0051 >#</userinput
0052 > у &turtlescript; вважається коментарем. Ось приклад невеличкої програми, яка не виконує жодних дій: <screen>
0053 # ця невеличка програма нічого не робить, вона складається лише з коментаря!
0054 </screen
0055 > Програма, хоч і зовсім непотрібна, але добре пояснює суть коментарів.</para>
0056 <para
0057 >Коментарі є дуже корисними, якщо програма стає трохи складнішою. Коментарі є «порадником» для інших програмістів. У наведеній нижче програмі коментарі використано разом з командою <link linkend="print"
0058 >напиши</link
0059 >. <screen>
0060 # Цю програму було створено Cies Breijs.
0061 напиши "цей текст буде написано на полотні"
0062 # попередній рядок не є коментарем, а наступний — коментар:
0063 # напиши "цей текст не буде написано!"
0064 </screen
0065 > У першому рядку наведено опис програми. Другий рядок буде виконано &kturtle;: черепашка намалює напис <userinput
0066 >цей текст буде написано на полотні</userinput
0067 > на полотні. Третій рядок є коментарем. У четвертому рядку наведено коментар з фрагментом коду &turtlescript;, якщо вилучити символ <userinput
0068 >#</userinput
0069 > з четвертого рядка, &kturtle; виконає інструкцію з друку. Програмісти кажуть: інструкцію «напиши» у четвертому рядку було «закоментовано».</para>
0070 <para
0071 >Закоментовані рядки <glossterm
0072 >підсвічуються</glossterm
0073 > світло-сірим кольором у <link linkend="the-editor"
0074 >редакторі коду</link
0075 >.</para>
0076 </sect2>
0077 
0078 <sect2 id="command">
0079 <title
0080 >Команди</title>
0081 <para
0082 >За допомогою команди ви можете повідомити черепашці або &kturtle; про те, що слід виконати певну дію. Для деяких команд потрібні вхідні дані, деякі команди самі виводять дані. <screen>
0083 # для команди вперед потрібні вхідні дані, у нашому випадку ними є число 100:
0084 вперед 100
0085 </screen
0086 > Перший рядок програми є <link linkend="comment"
0087 >коментарем</link
0088 >. У другому рядку міститься команда <userinput
0089 >вперед</userinput
0090 > і <link linkend="number"
0091 >число</link
0092 > <userinput
0093 >100</userinput
0094 >. Число не є частиною команди, воно є «вхідними даними» команди.</para>
0095 <para
0096 >Для роботи деяких команд, наприклад <userinput
0097 >перейди</userinput
0098 >, потрібно декілька вхідних значень. Ці декілька значень слід відокремлювати між собою символом <userinput
0099 >,</userinput
0100 > (комою).</para>
0101 <para
0102 >Щоб прочитати детальний огляд всіх команд, які підтримує &kturtle;, перейдіть за цим <link linkend="commands"
0103 >посиланням</link
0104 >. Вбудовані команди буде <glossterm
0105 >підсвічено</glossterm
0106 > темно-синім.</para>
0107 </sect2>
0108 
0109 <sect2 id="number">
0110 <title
0111 >Числа</title>
0112 <para
0113 >Скоріше за все, ви вже знаєте дещо про числа. Спосіб, у який числа використовуються у &kturtle;, не дуже відрізняється від розмовної мови або математики.</para>
0114 <para
0115 >Існують так звані натуральні числа: <userinput
0116 >0</userinput
0117 >, <userinput
0118 >1</userinput
0119 >, <userinput
0120 >2</userinput
0121 >, <userinput
0122 >3</userinput
0123 >, <userinput
0124 >4</userinput
0125 >, <userinput
0126 >5</userinput
0127 > тощо. Від’ємні числа: <userinput
0128 >-1</userinput
0129 >, <userinput
0130 >-2</userinput
0131 >, <userinput
0132 >-3</userinput
0133 > тощо. Крім того, існують десяткові дроби або числа з крапкою: <userinput
0134 >0.1</userinput
0135 >, <userinput
0136 >3.14</userinput
0137 >, <userinput
0138 >33.3333</userinput
0139 >, <userinput
0140 >-5.05</userinput
0141 >, <userinput
0142 >-1.0</userinput
0143 >. Символ <userinput
0144 >.</userinput
0145 > (крапка) є символом, що використовується для відокремлення дробової частини. </para>
0146 <para
0147 >Числа можна використовувати у <link linkend="mathematical-operators"
0148 >математичних операторах</link
0149 > і <link linkend="comparing-operators"
0150 >операторах порівняння</link
0151 >. Їх також можна зберігати у <link linkend="assignment-of-variables"
0152 >змінних</link
0153 >. Числа буде <glossterm
0154 >підсвічено</glossterm
0155 > темно-червоним кольором.</para>
0156 </sect2>
0157 
0158 <!-- constants like pi? -->
0159 
0160 <sect2 id="string">
0161 <title
0162 >Рядки</title>
0163 <para
0164 >Спочатку наведемо приклад: <screen>
0165 напиши "Привіт, я — рядок."
0166 </screen
0167 > У цьому прикладі <userinput
0168 >напиши</userinput
0169 > — команда, а <userinput
0170 >"Привіт, я — рядок."</userinput
0171 > — рядок. Рядки починаються і закінчуються позначкою лапок, <userinput
0172 >"</userinput
0173 >, за цими позначками і розпізнає рядки програма &kturtle;.</para>
0174 <para
0175 >Рядки можна зберігати у <link linkend="assignment-of-variables"
0176 >змінних</link
0177 >, подібно до <link linkend="number"
0178 >чисел</link
0179 >. Але, на відміну від чисел, рядки не можна використовувати у <link linkend="mathematical-operators"
0180 >математичних діях</link
0181 > або <link linkend="comparing-operators"
0182 >діях з порівняння</link
0183 >. Рядки буде <glossterm
0184 >підсвічено</glossterm
0185 > червоним кольором.</para>
0186 </sect2>
0187 
0188 <sect2 id="boolean-value">
0189 <title
0190 >Булеві (так/ні) значення</title>
0191 <para
0192 >Існує лише два булевих значення: <userinput
0193 >так</userinput
0194 ><indexterm
0195 ><primary
0196 >так</primary
0197 ></indexterm
0198 > і <userinput
0199 >ні</userinput
0200 ><indexterm
0201 ><primary
0202 >ні</primary
0203 ></indexterm
0204 >. У цих значень є і інші назви: увімкнути і вимкнути, одиниця і нуль. Але у &turtlescript; ми завжди називатимемо їх <userinput
0205 >так</userinput
0206 > і <userinput
0207 >ні</userinput
0208 >. Погляньте на цей фрагмент коду &turtlescript;: <screen>
0209 $a = так
0210 </screen
0211 > Якщо ви зазирнете до вікна <link linkend="the-inspector"
0212 >інспектора</link
0213 > ви побачите, що значенням <link linkend="assignment-of-variables"
0214 >змінної</link
0215 > <userinput
0216 >$a</userinput
0217 > є <userinput
0218 >так</userinput
0219 >, і що ця змінна належить до булевого типу.</para>
0220 <para
0221 >Часто булеві значення є результатом обчислення <link linkend="comparing-operators"
0222 >оператора порівняння</link
0223 >, наприклад, у такому фрагменті коду &turtlescript;: <screen>
0224 $відповідь = 10 &gt; 3
0225 </screen
0226 > Значенням <link linkend="assignment-of-variables"
0227 >змінної</link
0228 > <userinput
0229 >$відповідь</userinput
0230 > буде <userinput
0231 >так</userinput
0232 >, оскільки <userinput
0233 >10</userinput
0234 > більше за <userinput
0235 >3</userinput
0236 >.</para>
0237 <para
0238 >Булеві значення, <userinput
0239 >так</userinput
0240 > і <userinput
0241 >ні</userinput
0242 >, буде <glossterm
0243 >підсвічено</glossterm
0244 > темно-червоним.</para>
0245 </sect2>
0246 
0247 </sect1>
0248 
0249 
0250 
0251 <sect1 id="operators">
0252 <title
0253 >Математичні, булеві оператори та оператори порівняння</title>
0254 <para
0255 >Заголовок цього розділу наче натякає на щось складне, але все не так складно, як здається.</para>
0256 
0257 <sect2 id="mathematical-operators">
0258 <title
0259 >Математичні оператори</title>
0260 <para
0261 >Ось основні математичні символи: додавання (<userinput
0262 >+</userinput
0263 >), віднімання (<userinput
0264 >-</userinput
0265 >), множення (<userinput
0266 >*</userinput
0267 >), ділення (<userinput
0268 >/</userinput
0269 >) і піднесення до степеня (<userinput
0270 >^</userinput
0271 >).</para>
0272 
0273 <para
0274 >Ось невеличкий приклад математичних операторів, якими ви можете скористатися у &turtlescript;: <screen>
0275 $add      = 1 + 1
0276 $subtract = 20 - 5
0277 $multiply = 15 * 2
0278 $divide   = 30 / 30
0279 $power    = 2 ^ 2
0280 </screen
0281 > Результат виконання математичних операцій слід <link linkend="assignment-of-variables"
0282 >призначати</link
0283 > різноманітним <link linkend="assignment-of-variables"
0284 >змінним</link
0285 >. За допомогою <link linkend="the-inspector"
0286 >інспектора</link
0287 > ви зможете переглянути ці змінні.</para>
0288 <para
0289 >Якщо вам потрібно виконати прості обчислення, ви можете зробити щось на зразок цього: <screen
0290 >напиши 2010-12
0291 </screen
0292 ></para>
0293 <para
0294 >А тепер приклад з дужками: <screen>
0295 напиши ( ( 20 - 5 ) * 2 / 30 ) + 1
0296 </screen
0297 > Спочатку буде обчислено вираз у дужках. У нашому випадку, буде обчислено 20-5, потім це значення буде помножено на 2, поділено на 30, і додано до нього 1 (у результаті отримаємо 2). Дужками можна скористатися і у інших випадках.</para>
0298 <para
0299 >У &kturtle; передбачено і додаткові математичні можливості у формі команд. Нижче наведено список команд, але без означення способу, у який вони працюють: <link linkend="round"
0300 >округли</link
0301 >, <link linkend="random"
0302 >випадкове</link
0303 >, <link linkend="sqrt"
0304 >корінь</link
0305 >, <link linkend="pi"
0306 >пі</link
0307 >, <link linkend="sin"
0308 >sin</link
0309 >, <link linkend="cos"
0310 >cos</link
0311 >, <link linkend="tan"
0312 >tg</link
0313 >, <link linkend="arcsin"
0314 >arcsin</link
0315 >, <link linkend="arccos"
0316 >arccos</link
0317 >, <link linkend="arctan"
0318 >arctg</link
0319 >.</para>
0320 </sect2>
0321 
0322 <sect2 id="boolean-operators">
0323 <title
0324 >Булеві (так/ні) оператори</title>
0325 <para
0326 >Тоді як <link linkend="mathematical-operators"
0327 >математичні оператори</link
0328 > в основному призначено для <link linkend="number"
0329 >чисел</link
0330 >, булеві оператори призначено для <link linkend="boolean-value"
0331 >булевих значень</link
0332 > (<userinput
0333 >так</userinput
0334 > і <userinput
0335 >ні</userinput
0336 >). Передбачено лише три булеві оператори, а саме: <userinput
0337 >та</userinput
0338 ><indexterm
0339 ><primary
0340 >та</primary
0341 ></indexterm
0342 >, <userinput
0343 >або</userinput
0344 ><indexterm
0345 ><primary
0346 >або</primary
0347 ></indexterm
0348 > і <userinput
0349 >ні</userinput
0350 ><indexterm
0351 ><primary
0352 >ні</primary
0353 ></indexterm
0354 >. У наведеному нижче фрагменті &turtlescript; показано використання всіх цих операторів: <screen>
0355 $та_1_1 = так та так    # -> так
0356 $та_1_0 = так та ні   # -> ні
0357 $та_0_1 = ні та так   # -> ні
0358 $та_0_0 = ні та ні  # -> ні
0359 
0360 $або_1_1 = так або так    # -> так
0361 $або_1_0 = так або ні   # -> так
0362 $або_0_1 = ні або так   # -> так
0363 $або_0_0 = ні або ні  # -> ні
0364 
0365 $не_1 = не так   # -> ні
0366 $не_0 = не ні  # -> так
0367 </screen
0368 > За допомогою <link linkend="the-inspector"
0369 >інспектора</link
0370 > ви зможете переглянути значення, крім того, ми навели результати виконання дій у коментарях. Результат застосування <userinput
0371 >та</userinput
0372 > дорівнює <userinput
0373 >так</userinput
0374 >, лише якщо з обох боків від нього стоять значення <userinput
0375 >так</userinput
0376 >. Результатом застосування <userinput
0377 >або</userinput
0378 > буде <userinput
0379 >так</userinput
0380 >, якщо з одного з боків від оператора стоїть <userinput
0381 >так</userinput
0382 >. Оператор <userinput
0383 >не</userinput
0384 > перетворює <userinput
0385 >так</userinput
0386 > на <userinput
0387 >ні</userinput
0388 >, а <userinput
0389 >ні</userinput
0390 > на <userinput
0391 >так</userinput
0392 >.</para>
0393 <para
0394 >Булеві оператори буде <glossterm
0395 >підсвічено</glossterm
0396 > рожевим.</para>
0397 
0398 <sect3 id="boolean-operators-advanced-examples">
0399 <title
0400 >Декілька додаткових прикладів</title>
0401 <para
0402 >Розглянемо наведений нижче приклад з <userinput
0403 >та</userinput
0404 >: <screen>
0405 $a = 1
0406 $b = 5
0407 якщо (($a &lt; 10) та ($b == 5)) та ($a &lt; $b) {
0408   напиши "привіт"
0409 }
0410 </screen
0411 > У цьому фрагменті &turtlescript; результат застосування трьох <link linkend="comparing-operators"
0412 >операторів порівняння</link
0413 > буде об’єднано за допомогою операторів <userinput
0414 >та</userinput
0415 >. Це означає, що для того, щоб черепашка написала «привіт», потрібно, щоб всі дії з порівняння давали результат «так».</para>
0416 
0417 <para
0418 >Приклад з <userinput
0419 >або</userinput
0420 >: <screen>
0421 $n = 1
0422 якщо ($n &lt; 10) або ($n == 2) {
0423   напиши "привіт"
0424 }
0425 </screen
0426 > У цьому фрагменті коду &turtlescript; частина, розташована ліворуч від <userinput
0427 >або</userinput
0428 >, дає «так», а частина, розташована праворуч, — «ні». Оскільки одна з двох частин виразу у операторі <userinput
0429 >або</userinput
0430 > дорівнює «так», результатом обчислення <userinput
0431 >або</userinput
0432 > буде «так». Це означає, що черепашка напише «привіт».</para>
0433 
0434 <para
0435 >І нарешті, приклад з <userinput
0436 >не</userinput
0437 >, у якому ми змінними «так» на «ні», а «ні» — на «так». Дивіться: <screen
0438 >$n = 1
0439 якщо не ($n == 3) {
0440   напиши "привіт"
0441 } інакше {
0442   напиши "не привіт ;-)"
0443 }
0444 </screen
0445 ></para>
0446 </sect3>
0447 </sect2>
0448 
0449 <sect2 id="comparing-operators">
0450 <title
0451 >Оператори порівняння</title>
0452 <para
0453 >Розглянемо таке елементарне порівняння: <screen>
0454 $answer = 10 &gt; 3
0455 </screen
0456 > Тут ми порівнюємо <userinput
0457 >10</userinput
0458 > з <userinput
0459 >3</userinput
0460 > за допомогою оператора «більше, ніж». Результатом цього порівняння буде <link linkend="boolean-value"
0461 >булеве значення</link
0462 > <userinput
0463 >так</userinput
0464 >, яке буде збережено у <link linkend="assignment-of-variables"
0465 >змінній</link
0466 > <userinput
0467 >$answer</userinput
0468 >.</para>
0469 <para
0470 >Всі <link linkend="number"
0471 >числа</link
0472 > і <link linkend="assignment-of-variables"
0473 >змінні</link
0474 > (які містять числа) можна порівнювати за допомогою операторів порівняння.</para>
0475 <para
0476 >Ось список можливих операторів порівняння: <table
0477 > <title
0478 >Типи питань</title
0479 > <tgroup cols="3"
0480 > <tbody
0481 > <row
0482 > <entry
0483 ><userinput
0484 >$A == $B</userinput
0485 ></entry
0486 > <entry
0487 >дорівнює</entry
0488 > <entry
0489 >відповіддю буде <quote
0490 >так</quote
0491 >, якщо <userinput
0492 >$A</userinput
0493 > рівне <userinput
0494 >$B</userinput
0495 ></entry
0496 > </row
0497 > <row
0498 > <entry
0499 ><userinput
0500 >$A != $B</userinput
0501 ></entry
0502 > <entry
0503 >не дорівнює</entry
0504 > <entry
0505 >відповіддю буде <quote
0506 >так</quote
0507 >, якщо <userinput
0508 >$A</userinput
0509 > не дорівнює <userinput
0510 >$B</userinput
0511 ></entry
0512 > </row
0513 > <row
0514 > <entry
0515 ><userinput
0516 >$A &gt; $B</userinput
0517 ></entry
0518 > <entry
0519 >більше, ніж</entry
0520 > <entry
0521 >відповіддю буде <quote
0522 >так</quote
0523 >, якщо <userinput
0524 >$A</userinput
0525 > більше, ніж <userinput
0526 >$B</userinput
0527 ></entry
0528 > </row
0529 > <row
0530 > <entry
0531 ><userinput
0532 >$A &lt; $B</userinput
0533 ></entry
0534 > <entry
0535 >менше, ніж</entry
0536 > <entry
0537 >відповіддю буде <quote
0538 >так</quote
0539 >, якщо <userinput
0540 >$A</userinput
0541 > менше, ніж <userinput
0542 >$B</userinput
0543 ></entry
0544 > </row
0545 > <row
0546 > <entry
0547 ><userinput
0548 >$A &gt;= $B</userinput
0549 ></entry
0550 > <entry
0551 >більше або дорівнює</entry
0552 > <entry
0553 >відповіддю буде <quote
0554 >так</quote
0555 >, якщо <userinput
0556 >$A</userinput
0557 > більше або дорівнює <userinput
0558 >$B</userinput
0559 ></entry
0560 > </row
0561 > <row
0562 > <entry
0563 ><userinput
0564 >$A &lt;= $B</userinput
0565 ></entry
0566 > <entry
0567 >менше або дорівнює</entry
0568 > <entry
0569 >відповіддю буде <quote
0570 >так</quote
0571 >, якщо <userinput
0572 >$A</userinput
0573 > менше або дорівнює <userinput
0574 >$B</userinput
0575 ></entry
0576 > </row
0577 > </tbody
0578 > </tgroup
0579 > </table
0580 > Будь ласка, зауважте, що <userinput
0581 >$A</userinput
0582 > і <userinput
0583 >$B</userinput
0584 > мають бути <link linkend="number"
0585 >числами</link
0586 > або <link linkend="assignment-of-variables"
0587 >змінними</link
0588 >, які містять числа.</para>
0589 </sect2>
0590 
0591 
0592 </sect1>
0593 
0594 
0595 
0596 <sect1 id="commands">
0597 <title
0598 >Команди</title>
0599 <para
0600 >За допомогою команд ви наказуєте черепашці або програмі &kturtle; виконати якусь дію. Деяким з команд потрібні вхідні дані, деякі — самі виводять дані. У цьому розділі буде пояснено всі вбудовані команди, які можна використовувати у &kturtle;. Крім того, ви можете скористатися командою <link linkend="learn"
0601 ><userinput
0602 >вивчи</userinput
0603 ></link
0604 >, щоб створити власні команди. Вбудовані команди, які ми тут обговорюємо, <glossterm
0605 >підсвічуються</glossterm
0606 > темно-синім кольором.</para>
0607 
0608 <sect2 id="moving-the-turtle">
0609 <title
0610 >Пересування черепашки</title>
0611 <para
0612 >Існує декілька команд для пересування черепашки екраном.</para>
0613 
0614   <variablelist>
0615     <anchor id="forward"/>
0616     <varlistentry
0617 > 
0618       <term
0619 >вперед (вп)<indexterm
0620 ><primary
0621 >вперед (вп)</primary
0622 ></indexterm
0623 ></term>
0624       <listitem
0625 ><para
0626 ><screen
0627 >вперед X</screen>
0628 <userinput
0629 >вперед</userinput
0630 > наказує черепашці просунутися вперед на X пікселів. Якщо перо опущено, черепашка залишатиме по собі слід у вигляді лінії. Команду <userinput
0631 >вперед</userinput
0632 > можна скоротити до <userinput
0633 >вп</userinput
0634 >.</para
0635 ></listitem>
0636     </varlistentry>
0637   </variablelist>
0638   <variablelist>
0639     <anchor id="backward"/>
0640     <varlistentry
0641 >  
0642       <term
0643 >назад (нд)<indexterm
0644 ><primary
0645 >назад (нд)</primary
0646 ></indexterm
0647 ></term>
0648       <listitem
0649 ><para
0650 ><screen
0651 >назад X</screen>
0652 Команда <userinput
0653 >назад</userinput
0654 > наказує черепашці просунутися назад на X пікселів. Якщо перо опущено, черепашка залишатиме по собі слід у вигляді лінії. Команду <userinput
0655 >назад</userinput
0656 > можна скоротити до <userinput
0657 >нд</userinput
0658 ></para
0659 ></listitem>
0660     </varlistentry>
0661   </variablelist>
0662   <variablelist>
0663     <anchor id="turnleft"/>
0664     <varlistentry
0665 > 
0666       <term
0667 >ліворуч (лв)<indexterm
0668 ><primary
0669 >ліворуч (tl)</primary
0670 ></indexterm
0671 ></term>
0672       <listitem
0673 ><para
0674 ><screen
0675 >ліворуч X</screen>
0676 Команда <userinput
0677 >ліворуч</userinput
0678 > наказує черепашці повернутися на X градусів ліворуч. Команду <userinput
0679 >ліворуч</userinput
0680 > можна скоротити до <userinput
0681 >лв</userinput
0682 >.</para
0683 ></listitem>
0684     </varlistentry>
0685   </variablelist>
0686   <variablelist>
0687     <anchor id="turnright"/>
0688     <varlistentry
0689 > 
0690       <term
0691 >праворуч (пр)<indexterm
0692 ><primary
0693 >праворуч (пв)</primary
0694 ></indexterm
0695 ></term>
0696       <listitem
0697 ><para
0698 ><screen
0699 >праворуч X</screen>
0700 Команда <userinput
0701 >праворуч</userinput
0702 > наказує черепашці повернутися на X градусів праворуч. Команду <userinput
0703 >праворуч</userinput
0704 > можна скоротити до <userinput
0705 >пв</userinput
0706 >.</para
0707 ></listitem>
0708     </varlistentry>
0709   </variablelist>
0710   <variablelist>
0711     <anchor id="direction"/>
0712     <varlistentry
0713 > 
0714       <term
0715 >напрямок (нпр)<indexterm
0716 ><primary
0717 >напрямок (нпр)</primary
0718 ></indexterm
0719 ></term>
0720       <listitem
0721 ><para
0722 ><screen
0723 >напрямок X</screen>
0724 Команда <userinput
0725 >напрямок</userinput
0726 > спрямовує черепашку у напрямку X градусів, відрахованих від нульового напрямку, безвідносно від попереднього напрямку, куди її було спрямовано. Команду <userinput
0727 >напрямок</userinput
0728 > можна скоротити до <userinput
0729 >нпр</userinput
0730 >.</para
0731 ></listitem>
0732     </varlistentry>
0733   </variablelist>
0734   <variablelist>
0735     <anchor id="getdirection"/>
0736     <varlistentry
0737 > 
0738       <term
0739 >візьми_напрям<indexterm
0740 ><primary
0741 >візьми_напрям</primary
0742 ></indexterm
0743 ></term>
0744       <listitem
0745 ><para
0746 ><screen
0747 >візьми_напрям</screen>
0748 Команда <userinput
0749 >візьми_напрям</userinput
0750 > повертає напрямок черепашки у форматі градусів, відрахованих від нульового напрямку, де нулеві відповідає напрямок вгору.</para
0751 ></listitem>
0752     </varlistentry>
0753   </variablelist>
0754   <variablelist>
0755     <anchor id="center"/>
0756     <varlistentry
0757 > 
0758       <term
0759 >центр<indexterm
0760 ><primary
0761 >центр</primary
0762 ></indexterm
0763 ></term>
0764       <listitem
0765 ><para
0766 ><screen
0767 >центр</screen>
0768 Команда <userinput
0769 >центр</userinput
0770 > пересуває черепашку у центр полотна.</para
0771 ></listitem>
0772     </varlistentry>
0773   </variablelist>
0774   <variablelist>
0775     <anchor id="go"/>
0776     <varlistentry
0777 > 
0778       <term
0779 >перейди<indexterm
0780 ><primary
0781 >перейди</primary
0782 ></indexterm
0783 ></term>
0784       <listitem
0785 ><para
0786 ><screen
0787 >перейди X,Y</screen>
0788 Команда <userinput
0789 >перейди</userinput
0790 > наказує черепашці перейти до вказаного місця на полотні. Це місце знаходиться у X <glossterm linkend="pixels"
0791 >пікселях</glossterm
0792 > від лівого краю полотна, і у Y <glossterm linkend="pixels"
0793 >пікселях</glossterm
0794 > від верхнього краю полотна.</para
0795 ></listitem>
0796     </varlistentry>
0797   </variablelist>
0798   <variablelist>
0799     <anchor id="gox"/>
0800     <varlistentry
0801 > 
0802       <term
0803 >перейди_x<indexterm
0804 ><primary
0805 >перейди_x (пx)</primary
0806 ></indexterm
0807 ></term>
0808       <listitem
0809 ><para
0810 ><screen
0811 >перейди_x X</screen>
0812 Команда <userinput
0813 >перейди_x</userinput
0814 > наказує черепашці перейти до точки, розміщеної за X <glossterm linkend="pixels"
0815 >пікселів</glossterm
0816 > від лівого краю полотна, залишаючись на тій самій висоті. Команду <userinput
0817 >перейди_x</userinput
0818 > можна скоротити до <userinput
0819 >пx</userinput
0820 >.</para
0821 ></listitem>
0822     </varlistentry>
0823   </variablelist>
0824   <variablelist>
0825     <anchor id="goy"/>
0826     <varlistentry
0827 > 
0828       <term
0829 >перейди_y<indexterm
0830 ><primary
0831 >перейди_y (пy)</primary
0832 ></indexterm
0833 ></term>
0834       <listitem
0835 ><para
0836 ><screen
0837 >перейди_y Y</screen>
0838 Команда <userinput
0839 >перейди_y</userinput
0840 > наказує черепашці перейти до точки, розміщеної за Y <glossterm linkend="pixels"
0841 >пікселів</glossterm
0842 > від верхнього краю полотна, залишаючись на тій же відстані від його лівого краю. Команду <userinput
0843 >перейди_y</userinput
0844 > можна скоротити до <userinput
0845 >пy</userinput
0846 >.</para
0847 ></listitem>
0848     </varlistentry>
0849   </variablelist>
0850   <note
0851 ><para
0852 >Під час виконання команд <userinput
0853 >перейди</userinput
0854 >, <userinput
0855 >перейди_x</userinput
0856 >, <userinput
0857 >перейди_y</userinput
0858 > і <userinput
0859 >центр</userinput
0860 > черепашка не малюватиме лінії, незалежно від того, піднято чи опущено перо.</para>
0861   </note>
0862 </sect2>
0863 
0864 <sect2 id="locate-the-turtle">
0865 <title
0866 >Де знаходиться черепашка?</title>
0867 <para
0868 >Існує дві команди, які повертають позицію черепашки на екрані.</para>
0869 
0870   <variablelist>
0871     <anchor id="getx"/>
0872     <varlistentry
0873 > 
0874       <term
0875 >візьми_x<indexterm
0876 ><primary
0877 >візьми_x</primary
0878 ></indexterm
0879 ></term>
0880       <listitem
0881 ><para
0882 ><userinput
0883 >візьми_x</userinput
0884 > повертає кількість пікселів від лівого краю полотна до поточної позиції черепашки.</para
0885 ></listitem>
0886     </varlistentry>
0887   </variablelist>
0888   <variablelist>
0889     <anchor id="gety"/>
0890     <varlistentry
0891 > 
0892       <term
0893 >візьми_y<indexterm
0894 ><primary
0895 >візьми_y</primary
0896 ></indexterm
0897 ></term>
0898       <listitem
0899 ><para
0900 ><userinput
0901 >візьми_y</userinput
0902 > повертає кількість пікселів від верхнього краю полотна до поточної позиції черепашки.</para
0903 ></listitem>
0904     </varlistentry>
0905   </variablelist>
0906 </sect2>
0907 
0908 <sect2 id="pen">
0909 <title
0910 >У черепашки є перо</title>
0911 <para
0912 >У черепашки є перо, яке малює лінію під час руху черепашки. Існує декілька команд, які керують цим пером. У цьому розділі пояснено зміст цих команд.</para>
0913   <variablelist>
0914     <anchor id="penup"/>
0915     <varlistentry
0916 > 
0917       <term
0918 >підніми_перо (пп)<indexterm
0919 ><primary
0920 >підніми_перо (пп)</primary
0921 ></indexterm
0922 ></term>
0923       <listitem
0924 ><para
0925 ><screen
0926 >підніми_перо</screen>
0927 Команда <userinput
0928 >підніми_перо</userinput
0929 > піднімає перо над полотном. Якщо перо <quote
0930 >піднято</quote
0931 > під час руху черепашки лінії не малюватиметься. Прочитайте також інформацію щодо команди <userinput
0932 >опусти_перо</userinput
0933 >. Команду <userinput
0934 >підніми_перо</userinput
0935 > можна скоротити до <userinput
0936 >pu</userinput
0937 >.</para
0938 ></listitem>
0939     </varlistentry>
0940   </variablelist>
0941   <variablelist>
0942     <anchor id="pendown"/>
0943     <varlistentry
0944 > 
0945       <term
0946 >опусти_перо (оп)<indexterm
0947 ><primary
0948 >опусти_перо (оп)</primary
0949 ></indexterm
0950 ></term>
0951       <listitem
0952 ><para
0953 ><screen
0954 >опусти_перо</screen>
0955 Команда <userinput
0956 >опусти_перо</userinput
0957 > опускає перо на полотно. Якщо перо <quote
0958 >опущено</quote
0959 > на полотно, під час рухів, черепашка лишатиме по собі слід. Прочитайте також інформацію щодо команди <userinput
0960 >підніми_перо</userinput
0961 >. Команду <userinput
0962 >опусти_перо</userinput
0963 > можна скоротити до <userinput
0964 >оп</userinput
0965 >.</para
0966 ></listitem>
0967     </varlistentry>
0968   </variablelist>
0969   <variablelist>
0970     <anchor id="setpenwidth"/>
0971     <varlistentry
0972 > 
0973       <term
0974 >розмір_пера (рп)<indexterm
0975 ><primary
0976 >розмір_пера (рп)</primary
0977 ></indexterm
0978 ></term>
0979       <listitem
0980 ><para
0981 ><screen
0982 >розмір_пера X</screen>
0983 Команда <userinput
0984 >розмір_пера</userinput
0985 > встановлює товщину лінії, яку лишає перо, у значення X <glossterm linkend="pixels"
0986 >пікселів</glossterm
0987 >. Команду <userinput
0988 >розмір_пера</userinput
0989 > можна скоротити до <userinput
0990 >рп</userinput
0991 >.</para
0992 ></listitem>
0993     </varlistentry>
0994   </variablelist>
0995   <variablelist>
0996     <anchor id="setfgcolor"/>
0997     <varlistentry
0998 > 
0999       <term
1000 >колір_пера (кп)<indexterm
1001 ><primary
1002 >колір_пера (кп)</primary
1003 ></indexterm
1004 ></term>
1005       <listitem
1006 ><para
1007 ><screen
1008 >колір_пера R,G,B</screen>
1009 Команда <userinput
1010 >колір_пера</userinput
1011 > встановлює колір лінії, яку лишає по собі перо. Команда <userinput
1012 >колір_пера</userinput
1013 > отримує дані для кольору у вигляді <glossterm linkend="rgb"
1014 >RGB-комбінації</glossterm
1015 >. Команду <userinput
1016 >колір_пера</userinput
1017 > можна скоротити до <userinput
1018 >кп</userinput
1019 >.</para
1020 ></listitem>
1021     </varlistentry>
1022   </variablelist>
1023 </sect2>
1024 
1025 <sect2 id="canvas">
1026 <title
1027 >Команди керування полотном</title>
1028 <para
1029 >Існує декілька команд, які надають можливість керувати полотном.</para>
1030   <variablelist>
1031     <anchor id="resizecanvas"/>
1032     <varlistentry>
1033       <term
1034 >розмір_полотна (рпл)<indexterm
1035 ><primary
1036 >розмір_полотна (рпл)</primary
1037 ></indexterm
1038 ></term>
1039       <listitem
1040 ><para
1041 ><screen
1042 >розмір_полотна X,Y</screen>
1043 За допомогою команди <userinput
1044 >розмір_полотна</userinput
1045 > ви можете встановити розмір полотна. Ця команда отримує вхідні значення X і Y, де X — нова ширина полотна у <glossterm linkend="pixels"
1046 >пікселях</glossterm
1047 >, а Y — нова висота полотна у <glossterm linkend="pixels"
1048 >пікселях</glossterm
1049 >. Команду <userinput
1050 >розмір_полотна</userinput
1051 > можна скоротити до <userinput
1052 >рпл</userinput
1053 >.</para
1054 ></listitem>
1055     </varlistentry>
1056   </variablelist>
1057   <variablelist>
1058     <anchor id="setbgcolor"/>
1059     <varlistentry
1060 > 
1061       <term
1062 >колір_полотна (кпл)<indexterm
1063 ><primary
1064 >колір_полотна (кпл)</primary
1065 ></indexterm
1066 ></term>
1067       <listitem
1068 ><para
1069 ><screen
1070 >колір_полотна R,G,B</screen>
1071 Команда <userinput
1072 >колір_полотна</userinput
1073 > встановлює колір тла полотна. Команда <userinput
1074 >колір_полотна</userinput
1075 > отримує вхідні дані у вигляді <glossterm linkend="rgb"
1076 >RGB-комбінації</glossterm
1077 >. Команду <userinput
1078 >колір_полотна</userinput
1079 > можна скоротити до <userinput
1080 >кпл</userinput
1081 >.</para
1082 ></listitem>
1083     </varlistentry>
1084   </variablelist>
1085 </sect2>
1086 
1087 <sect2 id="clean">
1088 <title
1089 >Команди для очищення</title>
1090 <para
1091 >Існує дві команди для очищення полотна, у разі якщо ви зробили помилку.</para>
1092   <variablelist>
1093     <anchor id="clear"/>
1094     <varlistentry
1095 > 
1096       <term
1097 >зітри (зтр)<indexterm
1098 ><primary
1099 >зітри (зтр)</primary
1100 ></indexterm
1101 ></term>
1102       <listitem
1103 ><para
1104 ><screen
1105 >зітри</screen>
1106 За допомогою команди <userinput
1107 >зітри</userinput
1108 > ви можете витерти всі малюнки з полотна. При цьому всі інші параметри, позиція і напрямок черепашки, колір тла полотна, видимість черепашки і розмір полотна, залишаться незмінними:</para
1109 ></listitem>
1110     </varlistentry>
1111   </variablelist>
1112   <variablelist>
1113     <anchor id="reset"/>
1114     <varlistentry
1115 > 
1116       <term
1117 >перезапусти<indexterm
1118 ><primary
1119 >перезапусти</primary
1120 ></indexterm
1121 ></term>
1122       <listitem
1123 ><para
1124 ><screen
1125 >перезапусти</screen>
1126 Команда <userinput
1127 >перезапусти</userinput
1128 > очищує все набагато ґрунтовніше за команду <userinput
1129 >зітри</userinput
1130 >. Після виконання команди <userinput
1131 >перезапусти</userinput
1132 > все виглядатиме так, неначе ви тільки-но запустили &kturtle;. Черепашку буде розташовано по центру екрана, колір тла стане білим, черепашка малюватиме чорну лінію на полотні, а саме полотно матиме розмір 400 на 400 пікселів.</para
1133 ></listitem>
1134     </varlistentry>
1135   </variablelist>
1136 </sect2>
1137 
1138 <sect2 id="sprites">
1139 <title
1140 >Черепашка — це спрайт</title>
1141 <para
1142 >Спочатку, коротеньке пояснення того, що таке спрайти: спрайти — це маленькі зображення, які можна пересувати екраном, які ми часто бачимо у комп’ютерних іграх. Наша черепашка — також спрайт. Докладнішу інформацію ви зможете отримати з розділу глосарія, присвяченого <glossterm linkend="sprites"
1143 >спрайтам</glossterm
1144 >.</para>
1145 <para
1146 >Далі, ви зможете ознайомитися з повним списком всіх команд для роботи зі спрайтами.</para>
1147 <note
1148 ><para
1149 >Поточна версія &kturtle; ще не підтримує використання інших спрайтів, окрім черепашки. У майбутніх версіях ви зможете змінити черепашку на щось інше, що вам сподобається.</para
1150 ></note>
1151   <variablelist>
1152     <anchor id="spriteshow"/>
1153     <varlistentry
1154 > 
1155       <term
1156 >покажи_черепашку (пч)<indexterm
1157 ><primary
1158 >покажи_черепашку (пч)</primary
1159 ></indexterm
1160 ></term>
1161       <listitem
1162 ><para
1163 ><screen
1164 >покажи_черепашку</screen>
1165 Команда <userinput
1166 >покажи_черепашку</userinput
1167 > робить черепашку знову видимою після того, як її було сховано. Команду <userinput
1168 >покажи_черепашку</userinput
1169 > можна скоротити до <userinput
1170 >пч</userinput
1171 >.</para
1172 ></listitem>
1173     </varlistentry>
1174   </variablelist>
1175   <variablelist>
1176     <anchor id="spritehide"/>
1177     <varlistentry
1178 > 
1179       <term
1180 >сховай_черепашку (сч)<indexterm
1181 ><primary
1182 >сховай_черепашку (сч)</primary
1183 ></indexterm
1184 ></term>
1185       <listitem
1186 ><para
1187 ><screen
1188 >сховай_черепашку</screen>
1189 Команда <userinput
1190 >сховай_черепашку</userinput
1191 > ховає черепашку. Цією командою можна скористатися, якщо черепашка не вписується у ваш малюнок. Команду <userinput
1192 >сховай_черепашку</userinput
1193 > можна скоротити до <userinput
1194 >сч</userinput
1195 >.</para
1196 ></listitem>
1197     </varlistentry>
1198   </variablelist>
1199 </sect2>
1200 
1201 <sect2 id="writing">
1202 <title
1203 >Чи може черепашка писати?</title>
1204 <para
1205 >Відповідь: <quote
1206 >так</quote
1207 >. Черепашка може писати: вона напише для вас все, що ви їй накажете написати.</para>
1208   <variablelist>
1209     <anchor id="print"/>
1210     <varlistentry
1211 > 
1212       <term
1213 >напиши<indexterm
1214 ><primary
1215 >напиши</primary
1216 ></indexterm
1217 ></term>
1218       <listitem
1219 ><para
1220 ><screen
1221 >напиши X</screen>
1222 Команда <userinput
1223 >напиши</userinput
1224 > використовується для того, щоб наказати черепашці написати щось на полотні. Команда <userinput
1225 >напиши</userinput
1226 > отримує числа і рядки як вхідні дані. Ви можете <userinput
1227 >писати</userinput
1228 > комбінації з чисел і рядків за допомогою символу <quote
1229 >+</quote
1230 >. Ось подивіться на цей приклад: <screen
1231 >$рік = 2003
1232 $автор = "Сіес"
1233 напиши $автор + " почав роботу над проєктом KTurtle у " + $year + "році, і все ще отримує задоволення від роботи над ним!"
1234 </screen>
1235       </para
1236 ></listitem>
1237     </varlistentry>
1238   </variablelist>
1239   <variablelist>
1240     <anchor id="fontsize"/>
1241     <varlistentry
1242 > 
1243       <term
1244 >розмір_літер<indexterm
1245 ><primary
1246 >розмір_літер</primary
1247 ></indexterm
1248 ></term>
1249       <listitem
1250 ><para
1251 ><screen
1252 >розмір_літер X</screen>
1253 Команда <userinput
1254 >розмір_літер</userinput
1255 > встановлює розмір шрифту, який використовуватиме команда <userinput
1256 >напиши</userinput
1257 >. Команда <userinput
1258 >розмір_літер</userinput
1259 > отримує одне вхідне значення, ним має бути число. Розмір встановлюється у <glossterm linkend="pixels"
1260 >пікселях</glossterm
1261 >.</para
1262 ></listitem>
1263     </varlistentry>
1264   </variablelist>
1265 </sect2>
1266 
1267 <sect2 id="math-commands">
1268 <title
1269 >Математичні команди</title>
1270 <para
1271 >Наведені нижче команди є додатковими математичними командами &kturtle;.</para>
1272   <variablelist>
1273     <anchor id="round"/>
1274     <varlistentry>
1275       <term
1276 >округли<indexterm
1277 ><primary
1278 >округли</primary
1279 ></indexterm
1280 ></term>
1281       <listitem
1282 ><para
1283 ><screen
1284 >округли(x)</screen>
1285 округлює задане число до найближчого цілого. <screen>
1286 напиши округли(10.8)
1287 вперед 20
1288 напиши округли(10.3)
1289 </screen
1290 > Виконуючи цей код, черепашка напише числа 11 і 10.</para
1291 ></listitem>
1292     </varlistentry>
1293   </variablelist>
1294   <variablelist>
1295     <anchor id="random"/>
1296     <varlistentry
1297 > 
1298       <term
1299 >випадкове (вип)<indexterm
1300 ><primary
1301 >випадкове (вип)</primary
1302 ></indexterm
1303 ></term>
1304       <listitem
1305 ><para
1306 ><screen
1307 >випадкове X,Y</screen>
1308 Команда <userinput
1309 >випадкове</userinput
1310 > отримує вхідні дані і виводить вихідні. Як вхідні дані їй потрібні два числа, перше (X) вказує на мінімальне значення числа, яке можна вивести, а друге (Y) — встановлює максимальне значення цього числа. У результаті дії команди буде виведено випадково вибране число, яке буде більше або рівне за мінімальне значення і менше або рівне за максимальне значення. Ось невеликий приклад: <screen>
1311 повтори 500 {
1312   $x = випадкове 1,20
1313   вперед $x
1314   ліворуч 10 - $x
1315 }
1316 </screen
1317 > За допомогою команди <userinput
1318 >випадкове</userinput
1319 > ви можете ввести елемент випадковості у вашу програму.</para
1320 ></listitem>
1321     </varlistentry>
1322   </variablelist>
1323   <variablelist>
1324     <anchor id="mod"/>
1325     <varlistentry
1326 > 
1327       <term
1328 >mod<indexterm
1329 ><primary
1330 >mod</primary
1331 ></indexterm
1332 ></term>
1333       <listitem
1334 ><para
1335 ><screen
1336 >mod X,Y</screen>
1337 Команда <userinput
1338 >mod</userinput
1339 > повертає залишок від ділення першого числа на друге.</para
1340 ></listitem>
1341     </varlistentry>
1342   </variablelist>
1343   <variablelist>
1344     <anchor id="sqrt"/>
1345     <varlistentry
1346 > 
1347       <term
1348 >корінь<indexterm
1349 ><primary
1350 >корінь</primary
1351 ></indexterm
1352 ></term>
1353       <listitem
1354 ><para
1355 ><screen
1356 >корінь X</screen>
1357 Команду <userinput
1358 >корінь</userinput
1359 > призначено для обчислення квадратного кореня з числа, X.</para
1360 ></listitem>
1361     </varlistentry>
1362   </variablelist>
1363 <!--
1364   <variablelist>
1365     <anchor id="exp"/>
1366     <varlistentry
1367 > 
1368       <term
1369 >exp<indexterm
1370 ><primary
1371 >exp</primary
1372 ></indexterm
1373 ></term>
1374       <listitem
1375 ><para
1376 ><screen
1377 >sqrt X</screen>
1378       </para
1379 ></listitem>
1380     </varlistentry>
1381   </variablelist>
1382 -->
1383   <variablelist>
1384     <anchor id="pi"/>
1385     <varlistentry
1386 > 
1387       <term
1388 >пі<indexterm
1389 ><primary
1390 >пі</primary
1391 ></indexterm
1392 ></term>
1393       <listitem
1394 ><para
1395 ><screen
1396 >пі</screen>
1397 Ця команда повертає сталу &pi;, <userinput
1398 >3.14159</userinput
1399 >.</para
1400 ></listitem>
1401     </varlistentry>
1402   </variablelist>
1403   <variablelist>
1404     <anchor id="sin"/>
1405     <anchor id="cos"/>
1406     <anchor id="tan"/>
1407     <varlistentry>
1408       <term
1409 >sin<indexterm
1410 ><primary
1411 >sin</primary
1412 ></indexterm
1413 >, cos<indexterm
1414 ><primary
1415 >cos</primary
1416 ></indexterm
1417 >, tg<indexterm
1418 ><primary
1419 >tg</primary
1420 ></indexterm
1421 ></term>
1422       <listitem
1423 ><para>
1424 <screen
1425 >sin X
1426 cos X
1427 tg X
1428 </screen>
1429 За допомогою цих команд задаються три відомі тригонометричні функції <userinput
1430 >sin</userinput
1431 >, <userinput
1432 >cos</userinput
1433 > і <userinput
1434 >tg</userinput
1435 >. Вхідним параметром для всіх цих команд, X, є <link linkend="number"
1436 >число</link
1437 >.</para
1438 ></listitem>
1439     </varlistentry>
1440   </variablelist>
1441   <variablelist>
1442     <anchor id="arcsin"/>
1443     <anchor id="arccos"/>
1444     <anchor id="arctan"/>
1445     <varlistentry>
1446       <term
1447 >arcsin<indexterm
1448 ><primary
1449 >arcsin</primary
1450 ></indexterm
1451 >, arccos<indexterm
1452 ><primary
1453 >arccos</primary
1454 ></indexterm
1455 >, arctg<indexterm
1456 ><primary
1457 >arctg</primary
1458 ></indexterm
1459 ></term>
1460       <listitem
1461 ><para>
1462 <screen
1463 >arcsin X
1464 arccos X
1465 arctg X
1466 </screen>
1467 Ці команди є оберненими функціями <link linkend="sin"
1468 >sin</link
1469 >, <link linkend="cos"
1470 >cos</link
1471 > і <link linkend="tan"
1472 >tg</link
1473 >. Вхідним параметром для всіх цих команд, X, є <link linkend="number"
1474 >число</link
1475 >.</para
1476 ></listitem>
1477     </varlistentry>
1478   </variablelist>
1479 </sect2>
1480 
1481 <sect2 id="dialogs">
1482 <title
1483 >Введення і отримання інформації за допомогою діалогових вікон</title>
1484 <para
1485 >Діалогове вікно — це невеличке контекстне вікно, у якому розміщено деяку інформацію від програми, або у яке слід ввести деяку інформацію, потрібну програмі. У &kturtle; є дві команди для виклику діалогових вікон, а саме: <userinput
1486 >повідом</userinput
1487 > і <userinput
1488 >спитай</userinput
1489 ></para>
1490   <variablelist>
1491     <anchor id="message"/>
1492     <varlistentry
1493 > 
1494       <term
1495 >повідом<indexterm
1496 ><primary
1497 >повідом</primary
1498 ></indexterm
1499 ></term>
1500       <listitem
1501 ><para
1502 ><screen
1503 >повідом X</screen>
1504 Команда <userinput
1505 >повідом</userinput
1506 > отримує як вхідні дані <link linkend="string"
1507 >рядок</link
1508 >. У результаті виконання команди буде показано контекстне вікно з текстом, який визначає вхідний <link linkend="string"
1509 >рядок</link
1510 >. <screen
1511 >повідом "Сієс почав роботу над проєктом KTurtle у 2003 році, і все ще отримує задоволення від роботи над ним!"
1512 </screen>
1513       </para
1514 ></listitem>
1515     </varlistentry>
1516   </variablelist>
1517   <variablelist>
1518     <anchor id="ask"/>
1519     <varlistentry
1520 > 
1521       <term
1522 >спитай<indexterm
1523 ><primary
1524 >спитай</primary
1525 ></indexterm
1526 ></term>
1527       <listitem
1528 ><para
1529 ><screen
1530 >спитай X</screen>
1531 Команда <userinput
1532 >спитай</userinput
1533 > отримує вхідні дані у вигляді <link linkend="string"
1534 >рядка</link
1535 >. У результаті виконання команди буде показано діалогове вікно, у якому міститиметься текст з рядка, точно так само як і у команді <link linkend="message"
1536 >повідом</link
1537 >. Але, окрім цього, у вікні буде і поле для введенні інформації. У це поле введення користувач може ввести <link linkend="number"
1538 >число</link
1539 > або <link linkend="string"
1540 >рядок</link
1541 >, який можна зберегти у <link linkend="assignment-of-variables"
1542 >змінній</link
1543 > або передано, як параметр, <link linkend="commands"
1544 >команді</link
1545 >. Приклад: <screen>
1546 $питання = спитай "Скільки вам років?"
1547 $роки = 2003 - $in
1548 напиши "У 2003 році вам було " + $роки + " років."
1549 </screen
1550 > Якщо користувач закриває діалогове вікно введення або нічого не вводить у поле для введення, <link linkend="assignment-of-variables"
1551 >змінній</link
1552 > надається порожнє значення.</para
1553 ></listitem>
1554     </varlistentry>
1555   </variablelist>
1556 </sect2>
1557 
1558 </sect1>
1559 
1560 
1561 
1562 <sect1 id="assignment-of-variables">
1563 <title
1564 >Присвоювання змінним значень</title>
1565 <para
1566 >Спочатку ми розглянемо змінні, а потім поговоримо про те, як надати цим змінним значень. </para>
1567 
1568 <para
1569 >Змінними є слова, що починаються на <quote
1570 >$</quote
1571 >, у <link linkend="the-editor"
1572 >редакторі</link
1573 > ці слова <glossterm
1574 >підсвічуються</glossterm
1575 > пурпуровим кольором.</para>
1576 
1577 <para
1578 >Змінні можуть містити будь-які <link linkend="number"
1579 >числа</link
1580 >, <link linkend="string"
1581 >рядки</link
1582 > або <link linkend="boolean-value"
1583 >булеві значення</link
1584 >. За допомогою оператора присвоювання, <userinput
1585 >=</userinput
1586 >, ви можете надати змінній її значення. Змінна зберігатиме свій вміст до завершення виконання програми або до зміни значення змінної на якесь інше.</para>
1587 
1588 <para
1589 >Після надання значень ви можете використовувати змінні так, неначебто вони збігаються з власним вмістом. Ось приклад з фрагментом коду &turtlescript;: <screen>
1590 $x = 10
1591 $x = $x / 3
1592 напиши $x
1593 </screen
1594 > Спочатку змінній <userinput
1595 >$x</userinput
1596 > надано значення <userinput
1597 >10</userinput
1598 >. Потім <userinput
1599 >$x</userinput
1600 > надано значення цієї ж змінної, поділеної на <userinput
1601 >3</userinput
1602 > — тобто <userinput
1603 >$x</userinput
1604 > надано значення частки <userinput
1605 >10 / 3</userinput
1606 >. Нарешті, <userinput
1607 >$x</userinput
1608 > буде намальовано черепашкою. Ви можете бачити, що у рядках два і три <userinput
1609 >$x</userinput
1610 > використано замість вмісту змінної.</para>
1611 
1612 <para
1613 >Для того, щоб змінними можна було користуватися, цим змінним слід надати значення. Приклад: <screen>
1614 напиши $n
1615 </screen
1616 > Результатом виконання буде повідомлення про помилку.</para>
1617 
1618 <para
1619 >Будь ласка, погляньте на цей приклад &turtlescript;: <screen>
1620 $a = 2004
1621 $b = 25
1622 
1623 # наступна команда намалює рядок "2029"
1624 напиши $a + $b
1625 назад 30
1626 # а ця команда надрукує "2004 плюс 25 дорівнює 2029":
1627 напиши $a + " плюс " + $b + " дорівнює " + ($a + $b)
1628 </screen
1629 > У перших двох рядках встановлено значення змінних <userinput
1630 >$a</userinput
1631 > і <userinput
1632 >$b</userinput
1633 > 2004 і 25. Далі йдуть дві команди <userinput
1634 >напиши</userinput
1635 > з командою <userinput
1636 >назад 30</userinput
1637 > між ними. Коментарі перед командами <userinput
1638 >напиши</userinput
1639 > пояснюють призначення цих команд. Команду <userinput
1640 >назад 30</userinput
1641 > додано для того, щоб забезпечити вивід кожної з порцій даних у окремому рядку. Як бачите змінними можна користуватися як замінниками їх вмісту, ви можете використовувати змінні з будь-якими <link linkend="operators"
1642 >операторами</link
1643 > або передавати їх як вхідні дані під час виклику<link linkend="commands"
1644 >команд</link
1645 >.</para>
1646 
1647 <para
1648 >Ще один приклад: <screen>
1649 $ім’я = спитай "Як вас звати?"
1650 напиши "Привіт, " + $ім’я + "! Успіхів у вивченні мистецтва програмування..."
1651 </screen
1652 > Досить зрозуміло. Знову ж таки, змінну <userinput
1653 >$ім’я</userinput
1654 > використано як рядок.</para>
1655 
1656 <para
1657 ><link linkend="the-inspector"
1658 >Інспектор</link
1659 > буде дуже корисним під час роботи зі змінними. Цей інструмент покаже вам значення всіх використаних у програмі змінних.</para>
1660 </sect1>
1661 
1662 
1663 
1664 <sect1 id="controlling-execution">
1665 <title
1666 >Контроль над виконанням</title>
1667 <para
1668 >Регулятори виконання надають вам змогу &mdash; як це і випливає з їх назви &mdash; керувати виконанням програми.</para>
1669 <para
1670 >Команди керування виконанням <glossterm
1671 >підсвічуються</glossterm
1672 > темно-зеленим кольором і виокремлюються жирним шрифтом. З регуляторами виконання використовують і фігурні дужки, які <glossterm
1673 >підсвічуються</glossterm
1674 > чорним кольором і виокремлюються чорним шрифтом.</para>
1675 
1676 <sect2 id="wait">
1677 <title
1678 >Черепашко, зачекай!</title>
1679 <para
1680 >Якщо ви вже повправлялися у програмуванні у &kturtle;, ви, мабуть зауважили, що черепашка малює дуже швидко. Ця команда примушує черепашку почекати деякий проміжок часу.</para>
1681   <variablelist>
1682     <varlistentry>
1683       <term
1684 >чекай<indexterm
1685 ><primary
1686 >чекай</primary
1687 ></indexterm
1688 ></term>
1689       <listitem
1690 ><para
1691 ><screen
1692 >чекай X</screen>
1693 Команда <userinput
1694 >чекай</userinput
1695 > наказує черепашці чекати X секунд. <screen>
1696 повтори 36 {
1697   вперед 5
1698   праворуч 10
1699   чекай 0.5
1700 }
1701 </screen
1702 > За допомогою цього коду малюється коло, але черепашка чекатиме по пів секунди перш ніж перейти до наступного кроку. Це створює враження черепашки, що рухається повільно.</para
1703 ></listitem>
1704     </varlistentry>
1705   </variablelist>
1706 </sect2>
1707 
1708 <sect2 id="if">
1709 <title
1710 >Виконання <quote
1711 >якщо</quote
1712 ></title>
1713   <variablelist>
1714     <varlistentry>
1715       <term
1716 >якщо<indexterm
1717 ><primary
1718 >якщо</primary
1719 ></indexterm
1720 ></term>
1721       <listitem
1722 ><para
1723 ><screen
1724 >якщо <link linkend="boolean-value"
1725 >булеве значення</link
1726 > { ... }</screen>
1727 Код між двома фігурними дужками буде виконано, лише <userinput
1728 >якщо</userinput
1729 > (якщо) результат обчислення <link linkend="boolean-value"
1730 >булевого значення</link
1731 > дорівнюватиме <quote
1732 >так</quote
1733 >. <screen>
1734 $x = 6
1735 якщо $x &gt; 5 {
1736   напиши "$x більше за п’ять!"
1737 }
1738 </screen
1739 > У першому рядку змінній <userinput
1740 >$x</userinput
1741 > надається значення 6. У другому рядку використано <link linkend="comparing-operators"
1742 >оператор порівняння</link
1743 > для знаходження значення <userinput
1744 >$x &gt; 5</userinput
1745 >. Оскільки відповіддю на це питання є <quote
1746 >так</quote
1747 > регулятор виконання <userinput
1748 >якщо</userinput
1749 > дозволить виконання коду між фігурними дужками.</para
1750 ></listitem>
1751     </varlistentry>
1752   </variablelist>
1753 </sect2>
1754 
1755 <sect2 id="else">
1756 <title
1757 >Якщо «ні», значить «інакше»</title>
1758   <variablelist>
1759     <varlistentry>
1760       <term
1761 >інакше<indexterm
1762 ><primary
1763 >інакше</primary
1764 ></indexterm
1765 ></term>
1766       <listitem
1767 ><para
1768 ><screen
1769 >якщо <link linkend="boolean-value"
1770 >булеве значення</link
1771 > { ... } інакше { ... }</screen>
1772 Команду <userinput
1773 >інакше</userinput
1774 > можна використовувати як додаток до регулятора виконання <link linkend="if"
1775 ><userinput
1776 >якщо</userinput
1777 ></link
1778 >. код між фігурними дужками після <userinput
1779 >інакше</userinput
1780 > виконуватиметься, лише якщо <link linkend="boolean-value"
1781 >булеве значення</link
1782 > дорівнюватиме <quote
1783 >ні</quote
1784 >. <screen>
1785 перезапусти
1786 $x = 4
1787 якщо $x &gt; 5 {
1788   напиши "$x більше за п’ять!"
1789 } інакше {
1790   напиши "$x менше за шість!"
1791 }
1792 </screen
1793 > <link linkend="comparing-operators"
1794 >Оператор порівняння</link
1795 > обчислює значення <userinput
1796 >$x &gt; 5</userinput
1797 >. Оскільки 4 не перевищує 5 значенням буде <quote
1798 >ні</quote
1799 >. Це означає, що буде виконано код між фігурними дужками після команди <userinput
1800 >інакше</userinput
1801 >.</para
1802 ></listitem>
1803     </varlistentry>
1804   </variablelist>
1805 </sect2>
1806 
1807 <sect2 id="while">
1808 <title
1809 >Цикл «поки»</title>
1810   <variablelist>
1811     <varlistentry>
1812       <term
1813 >поки<indexterm
1814 ><primary
1815 >поки</primary
1816 ></indexterm
1817 ></term>
1818       <listitem
1819 ><para
1820 ><screen
1821 >поки <link linkend="boolean-value"
1822 >булеве значення</link
1823 > { ... }</screen>
1824 Регулятор виконання <userinput
1825 >поки</userinput
1826 > багато у чому схожий на <link linkend="if"
1827 ><userinput
1828 >якщо</userinput
1829 ></link
1830 >. Різниця між ними полягає у тому, що <userinput
1831 >поки</userinput
1832 > продовжує виконання коду між фігурними дужками (цикл), аж доки <link linkend="boolean-value"
1833 >булевий вираз</link
1834 > не дорівнюватиме <quote
1835 >ні</quote
1836 >. <screen>
1837 $x = 1
1838 поки $x &lt; 5 {
1839   вперед 10
1840   чекай 1
1841   $x = $x + 1
1842 }
1843 </screen
1844 > У першому рядку змінній <userinput
1845 >$x</userinput
1846 > надано значення 1. У другому рядку виконано порівняння <userinput
1847 >$x &lt; 5</userinput
1848 >. Оскільки відповіддю на це питання буде <quote
1849 >так</quote
1850 > регулятор виконання <userinput
1851 >поки</userinput
1852 > починатиме виконання коду між фігурними дужками з початку, до того часу, коли значенням <userinput
1853 >$x &lt; 5</userinput
1854 > не стане <quote
1855 >ні</quote
1856 >. У нашому випадку, код між фігурними дужками буде виконано чотири рази, оскільки кожного разу, коли виконується п’ятий рядок <userinput
1857 >$x</userinput
1858 > збільшується на 1.</para
1859 ></listitem>
1860     </varlistentry>
1861   </variablelist>
1862 </sect2>
1863 
1864 <sect2 id="repeat">
1865 <title
1866 >Цикл «повтори»</title>
1867   <variablelist>
1868     <varlistentry>
1869       <term
1870 >повтори<indexterm
1871 ><primary
1872 >повтори</primary
1873 ></indexterm
1874 ></term>
1875       <listitem
1876 ><para
1877 ><screen
1878 >повтори <link linkend="number"
1879 >число</link
1880 > { ... }</screen>
1881 Регулятор виконання <userinput
1882 >повтори</userinput
1883 > дуже схожий на <link linkend="while"
1884 ><userinput
1885 >поки</userinput
1886 ></link
1887 >. Різниця полягає у тому, що <userinput
1888 >повтори</userinput
1889 > повторює виконання команд (цикл) задану кількість разів.</para
1890 ></listitem>
1891     </varlistentry>
1892   </variablelist>
1893 </sect2>
1894 
1895 <sect2 id="for">
1896 <title
1897 >Цикл з лічильником, «для»</title>
1898   <variablelist>
1899     <varlistentry>
1900       <term
1901 >для<indexterm
1902 ><primary
1903 >для</primary
1904 ></indexterm
1905 ><indexterm
1906 ><primary
1907 >до</primary
1908 ></indexterm
1909 ><indexterm
1910 ><primary
1911 >крок</primary
1912 ></indexterm
1913 ></term>
1914       <listitem
1915 ><para
1916 ><screen
1917 >для <link linkend="assignment-of-variables"
1918 >змінна</link
1919 > = <link linkend="number"
1920 >число</link
1921 > до <link linkend="number"
1922 >число</link
1923 > { ... }</screen>
1924 Цикл <userinput
1925 >для</userinput
1926 > — це <quote
1927 >цикл з лічильником</quote
1928 >, тобто він лічить повтори за вас. Перше число вказує значення змінної під час першого виконання циклу. Під час кожного виконання це число збільшується, аж доки не досягне другого числа.<screen>
1929 для $x = 1 до 10 {
1930   напиши $x * 7
1931   вперед 15
1932 }
1933 </screen
1934 > Кожне виконання коду між фігурними дужками збільшує значення <userinput
1935 >$x</userinput
1936 > на 1, до того часу, коли <userinput
1937 >$x</userinput
1938 > досягне значення 10. Код між фігурними дужками пише на полотні значення <userinput
1939 >$x</userinput
1940 > помноженого на 7. Після виконання програми ви побачите на полотні таблицю множення на 7. </para>
1941      <para
1942 >Типовим розміром кроку циклу є 1, але ви можете використовувати інше значення за допомогою команди на зразок <screen
1943 >для <link linkend="assignment-of-variables"
1944 >змінна</link
1945 > = <link linkend="number"
1946 >число</link
1947 > до <link linkend="number"
1948 >число</link
1949 > крок <link linkend="number"
1950 >число</link
1951 > { ... }</screen
1952 ></para
1953 ></listitem>
1954     </varlistentry>
1955   </variablelist>
1956 </sect2>
1957 
1958 <sect2 id="break">
1959 <title
1960 >Полишити цикл</title>
1961   <variablelist>
1962     <varlistentry>
1963       <term
1964 >перерви<indexterm
1965 ><primary
1966 >перерви</primary
1967 ></indexterm
1968 ></term>
1969       <listitem
1970 ><para
1971 ><screen
1972 >перерви</screen>
1973 Негайно припиняє виконання програми у рамках циклу і передає керування команді, яку розташовано одразу за поточним циклом.</para
1974 ></listitem>
1975     </varlistentry>
1976   </variablelist>
1977 </sect2>
1978 
1979 <sect2 id="exit">
1980 <title
1981 >Перервати виконання вашої програми</title>
1982   <variablelist>
1983     <varlistentry>
1984       <term
1985 >зупини<indexterm
1986 ><primary
1987 >зупини</primary
1988 ></indexterm
1989 ></term>
1990       <listitem
1991 ><para
1992 ><screen
1993 >зупини</screen>
1994 Завершує виконання вашої програми.</para
1995 ></listitem>
1996     </varlistentry>
1997   </variablelist>
1998 </sect2>
1999 
2000 <sect2 id="assert">
2001 <title
2002 >Перевірка умови під час виконання програми</title>
2003   <variablelist>
2004     <varlistentry>
2005       <term
2006 >перевір<indexterm
2007 ><primary
2008 >перевір</primary
2009 ></indexterm
2010 ></term>
2011       <listitem
2012 ><para
2013 ><screen
2014 >перевір <link linkend="boolean-value"
2015 >булеве значення</link
2016 ></screen>
2017 Може бути використано для перевірки правильності роботи програми або введених даних. <screen
2018 >$введення = ask "У якому році ви народилися?"
2019 # рік має бути вказано як додатне значення
2020 перевір $введення 
2021 > 0
2022 </screen
2023 ></para
2024 ></listitem>
2025     </varlistentry>
2026   </variablelist>
2027 </sect2>
2028 </sect1>
2029 
2030 
2031 <sect1 id="learn">
2032 
2033 <title
2034 >Створення власних команд за допомогою <quote
2035 >вивчи</quote
2036 ></title>
2037 <para
2038 ><userinput
2039 >вивчи</userinput
2040 ><indexterm
2041 ><primary
2042 >вивчи</primary
2043 ></indexterm
2044 > є дуже особливою командою, оскільки цю команду використовують для створення нових команд. Команда, яку ви створюєте за її допомогою може отримувати <glossterm linkend="input-output"
2045 >вхідні дані</glossterm
2046 > і повертати <glossterm linkend="input-output"
2047 >вихідні дані</glossterm
2048 >. Давайте поглянемо як створюється нова команда: <screen>
2049 вивчи circle $x {
2050   повтори 36 {
2051     вперед $x
2052     ліворуч 10
2053   }
2054 }
2055 </screen
2056 > Нова команда називається <userinput
2057 >circle</userinput
2058 >. Команда <userinput
2059 >circle</userinput
2060 > отримує одне <glossterm linkend="input-output"
2061 >вхідне значення</glossterm
2062 >, параметр, який задає розмір кола. <userinput
2063 >circle</userinput
2064 > не повертає ніяких <glossterm linkend="input-output"
2065 >вихідних даних</glossterm
2066 >. Тепер у решті коду можна використовувати команду <userinput
2067 >circle</userinput
2068 > як звичайну команду. Ось приклад: <screen
2069 >вивчи коло $X {
2070   повтори 36 {
2071     вперед $X 
2072     ліворуч 10 
2073   }
2074 }
2075 
2076 перейди 200,200 
2077 коло 20
2078 
2079 перейди 300,200 
2080 коло 40  
2081 </screen>
2082 </para>
2083 <para
2084 >У наступному прикладі буде створено команду, яка повертає<indexterm
2085 ><primary
2086 >поверни</primary
2087 ></indexterm
2088 > значення. <screen>
2089 вивчи факторіал $x {
2090   $r = 1
2091   для $i = 1 до $x {
2092     $r = $r * $i
2093   }
2094   поверни $r
2095 }
2096 
2097 напиши факторіал 5
2098 </screen
2099 > У цьому прикладі створено нову команду з назвою <userinput
2100 >faculty</userinput
2101 >. Якщо вхідними даними цієї команди буде число <userinput
2102 >5</userinput
2103 >, буде повернуто <userinput
2104 >5*4*3*2*1</userinput
2105 >. З допомогою команди <userinput
2106 >поверни</userinput
2107 > можна вказати <glossterm linkend="input-output"
2108 >вихідне значення</glossterm
2109 > і повернути його програмі.</para>
2110 <para
2111 >Команди можуть приймати і по декілька <glossterm linkend="input-output"
2112 >вхідних значень</glossterm
2113 >. У наступному прикладі буде створено команду, яка малює прямокутник. <screen>
2114 вивчи прямокутник $x, $y {
2115   вперед $y
2116   праворуч 90
2117   вперед $x
2118   праворуч 90
2119   вперед $y
2120   праворуч 90
2121   вперед $x
2122   праворуч 90
2123 }
2124 </screen
2125 > Тепер ви можете виконати команду <userinput
2126 >прямокутник 50, 100</userinput
2127 >, і черепашка намалює на полотні прямокутник. </para>
2128   
2129 </sect1>
2130 
2131 </chapter>