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