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 > 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 < 10) и ($b == 5)) и ($a < $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 < 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 > 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 > $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 < $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 >= $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 <= $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 > 5 { 1674 напиши "$x больше пяти!" 1675 } 1676 </screen 1677 > В первой строке контейнеру <userinput 1678 >$x</userinput 1679 > присваивается значение 6. Во второй строке <link linkend="comparing-operators" 1680 >оператор сравнения</link 1681 > используется для вычисления <userinput 1682 >$x > 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 > 5 { 1726 напиши "$x больше пяти!" 1727 } 1728 иначе 1729 { 1730 напиши "$x меньше пяти!" 1731 } 1732 </screen 1733 > <link linkend="comparing-operators" 1734 >Оператор сравнения</link 1735 > вычисляет выражение <userinput 1736 >$x > 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 < 5 { 1779 вперёд 10 1780 жди 1 1781 $x = $x + 1 1782 } 1783 </screen 1784 > В первой строке <userinput 1785 >$x</userinput 1786 > присваивается 1. На второй строке выполняется сравнение <userinput 1787 >$x < 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>