summaryrefslogtreecommitdiffstats
path: root/tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook
diff options
context:
space:
mode:
Diffstat (limited to 'tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook')
-rw-r--r--tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook1529
1 files changed, 1529 insertions, 0 deletions
diff --git a/tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook b/tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook
new file mode 100644
index 00000000000..3d8374fc55e
--- /dev/null
+++ b/tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook
@@ -0,0 +1,1529 @@
+<!--Dear translator: please NEVER translate the id or anything inside the tags as they are needed in english by the application
+ Thanks a lot in advance.-->
+<chapter id="reference">
+<title
+>Справочник &logo; для &kturtle;</title>
+<para
+>Эта глава начинается с краткого описания <link linkend="different-instructions"
+>различных типов инструкций</link
+>. Потом идёт подробное описание каждой <link linkend="commands"
+>команды</link
+>, затем описываются <link linkend="containers"
+>контейнеры</link
+>, <link linkend="math"
+>математические операции</link
+>, <link linkend="questions"
+>ответы на вопросы</link
+> и <link linkend="controlling-execution"
+>операторы условного выполнения</link
+>. В конце даётся несколько примеров создания собственных команд с помощью команды <link linkend="learn"
+>выучи</link
+>.</para>
+
+<sect1 id="different-instructions">
+<title
+>Типы инструкций</title>
+<para
+>Как и любой другой язык, Logo содержит различные типы слов и символов. Ниже вкратце объясняется различие между типами.</para>
+
+<sect2 id="command">
+<title
+>Команды</title>
+<para
+>Используя команды, вы предписываете Черепашке или &kturtle; выполнить какое-либо действие. Некоторые команды нуждаются во входных параметрах, некоторые возвращают результат. В данном разделе объясняются все команды, используемые в KTurtle. <screen
+># вперёд - это команда, c параметром, в нашем случае &mdash; это 100:
+вперёд 100
+</screen>
+</para>
+<para
+>Подробное описание всех команд, поддерживаемых &kturtle;, находится <link linkend="commands"
+>здесь</link
+>.</para>
+</sect2>
+
+<sect2 id="number">
+<title
+>Числа</title>
+<para
+>Числа, используемые с &kturtle;, не отличаются от математических. </para>
+<para
+>В Logo есть натуральные числа: <userinput
+>0</userinput
+>, <userinput
+>1</userinput
+>, <userinput
+>2</userinput
+>, <userinput
+>3</userinput
+>, <userinput
+>4</userinput
+>, <userinput
+>5</userinput
+>, ...; отрицательные: <userinput
+>-1</userinput
+>, <userinput
+>-2</userinput
+>, <userinput
+>-3</userinput
+>, ...; и десятичные дроби: <userinput
+>0.1</userinput
+>, <userinput
+>3.14</userinput
+>, <userinput
+>33.3333</userinput
+>, <userinput
+>-5.05</userinput
+>, <userinput
+>-1.0</userinput
+>. </para>
+<para
+>Числа используются в <link linkend="math"
+>математических расчётах</link
+> и <link linkend="questions"
+>вопросах</link
+>. они могут помещаться в <link linkend="containers"
+>контейнеры</link
+>.</para>
+<para
+>Числа <glossterm
+>выделяются</glossterm
+> синим цветом в <link linkend="the-code-editor"
+>редакторе кода</link
+>.</para>
+</sect2>
+
+<sect2 id="string">
+<title
+>Строки</title>
+<para
+>Пример: <screen>
+напиши "Привет, я строка."
+</screen
+> В этом примере <userinput
+>напиши</userinput
+> &mdash; команда, которой передаётся строка <userinput
+>"Привет, я строка."</userinput
+>. Строки начинаются и заканчиваются на <userinput
+>"</userinput
+>, так &kturtle; может определить, что это строка.</para>
+<para
+>Строки можно помещать в <link linkend="containers"
+>контейнеры</link
+>.</para>
+<para
+>Строки <glossterm
+>выделяются</glossterm
+> тёмно-красным в <link linkend="the-code-editor"
+>редакторе кода</link
+>.</para>
+</sect2>
+
+
+<sect2 id="name">
+<title
+>Имена</title>
+<para
+>Имена можно давать <link linkend="containers"
+>контейнерам</link
+> (переменным) и <link linkend="learn"
+>новым командам</link
+>.</para>
+<para
+>Имена не могут совпадать с именами команд. Например, нельзя назвать контейнер <link linkend="forward"
+>вперёд</link
+>.<screen>
+# попытка использовать вперёд в качестве имени,
+# но оно уже занято командой, так что при выполнении получим ошибку
+вперёд = 20
+
+# это работает:
+вперёд 20
+</screen
+> Имена могут состоять из букв, цифр и символа подчёркивания (_), но первой всегда должна быть буква. </para>
+<para
+>Подробно это изложено в разделе «<link linkend="containers"
+>Контейнеры</link
+>» и справке по команде «<link linkend="learn"
+>выучи</link
+>». </para>
+</sect2>
+
+<sect2 id="assignment">
+<title
+>Присваивание</title>
+<para
+>Присваивание производится символом <userinput
+>=</userinput
+>. В большинстве языков программирования лучше читать один символ <userinput
+>=</userinput
+> не как «равно», а как «становится». Слово «равно» больше подходит к <userinput
+>==</userinput
+>, это используется в <link linkend="questions"
+>вопросах</link
+>.</para>
+<para
+>Присваивание служит для помещения значения в <link linkend="containers"
+>контейнер</link
+> и изменения значения в нём, например: <screen
+>x = 10
+# контейнер x теперь содержит число 10
+W = "Сейчас мне столько лет: "
+# контейнер W теперь содержит строку "Сейчас мне столько лет: "
+# это выводит на экран содержимое контейнеров W и x
+напиши W + x
+</screen>
+</para>
+<para
+>Другие примеры приведены в разделе «<link linkend="containers"
+>Контейнеры</link
+>».</para>
+</sect2>
+
+<sect2 id="math-symbols">
+<title
+>Математические знаки</title>
+<para
+>&kturtle; поддерживает все основные математические операции: сложение (<userinput
+>+</userinput
+>), вычитание (<userinput
+>-</userinput
+>), умножение (<userinput
+>*</userinput
+>), деление (<userinput
+>/</userinput
+>), использование скобок <userinput
+>(</userinput
+> и <userinput
+>)</userinput
+>.</para>
+<para
+>Описание использования и дополнительные примеры вы найдёте в разделе «<link linkend="math"
+>Математические вычисления</link
+>».</para>
+</sect2>
+
+<sect2 id="question">
+<title
+>Вопросы</title>
+<para
+>У программы можно спрашивать вопросы и получать на них ответы (истина или ложь).</para>
+<para
+>Использование вопросов подробно описано в <link linkend="questions"
+>соответствующем разделе</link
+>.</para>
+</sect2>
+
+<sect2 id="questions-glue">
+<title
+>Склеивающие слова в вопросах</title>
+<para
+>С помощью них можно соединять несколько вопросов. Это могут быть слова <userinput
+>и</userinput
+>, <userinput
+>или</userinput
+>, а также специальное слово <userinput
+>не</userinput
+>.</para>
+<para
+>Использование склеивающих слов подробно описано в <link linkend="question-glue"
+>соответствующем разделе</link
+>.</para>
+</sect2>
+
+
+<sect2 id="comment">
+<title
+>Комментарии</title>
+<para
+>Комментарии - это строки, начинающиеся с <userinput
+>#</userinput
+>. Например:<screen>
+# это комментарий!
+напиши "это не комментарий"
+# напиши "а это - комментарий"
+</screen
+> Комментарии могут содержать разъяснения к коду, ещё комментарием можно сделать какую-то команду, чтобы она не выполнялась.</para>
+<para
+>Комментарии <glossterm
+>выделяются</glossterm
+> тёмно-жёлтым в <link linkend="the-code-editor"
+>редакторе кода</link
+>.</para>
+</sect2>
+
+</sect1>
+
+
+<sect1 id="commands">
+<title
+>Команды</title>
+<para
+>Разные команды делают разные вещи, одни из них требуют дополнительную информацию, некоторые возвращают её. Далее мы опишем каждую из поддерживаемых команд. Заметьте, что такие команды <glossterm
+>выделяются</glossterm
+> тёмно-зелёным в <link linkend="the-code-editor"
+>редакторе кода</link
+>.</para>
+
+<sect2 id="moving-the-turtle">
+<title
+>Двигаем Черепашку</title>
+<para
+>Существует несколько команд для перемещения Черепашки по холсту.</para>
+
+<sect3 id="forward">
+ <title
+>вперёд (вп)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>вперёд</term>
+ <listitem
+><para
+><screen
+>вперёд X</screen>
+<userinput
+>вперёд</userinput
+> перемещает Черепашку на X пикселей вперёд. Когда перо опущено, Черепашка будет оставлять за собой след. Эта команда также может записываться как <userinput
+>вп</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="backward">
+ <title
+>назад (нд)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>назад</term>
+ <listitem
+><para
+><screen
+>назад X</screen>
+<userinput
+>назад</userinput
+> перемещает Черепашку назад на X пикселей. Когда перо опущено, Черепашку будет оставлять за собой след. Может так же записываться как <userinput
+>нд</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="turnleft">
+ <title
+>налево (лв)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>налево</term>
+ <listitem
+><para
+><screen
+>налево X</screen>
+Предписывает Черепашке повернуть на X градусов налево. Может записываться как <userinput
+>лв</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="turnright">
+ <title
+>направо (пр)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>направо</term>
+ <listitem
+><para
+><screen
+>направо X</screen>
+Предписывает Черепашке повернуть на X градусов направо. Может записываться как <userinput
+>пр</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="direction">
+ <title
+>направление (нпр)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>направление</term>
+ <listitem
+><para
+><screen
+>направление X</screen>
+Устанавливает направление Черепашки на X градусов относительно 0, а не относительно предыдущего направления. Может записываться как <userinput
+>нпр</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="center">
+ <title
+>центр</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>центр</term>
+ <listitem
+><para
+><screen
+>центр</screen>
+Перемещает Черепашку в центр холста.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="go">
+ <title
+>иди</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>иди</term>
+ <listitem
+><para
+><screen
+>иди X,Y</screen>
+Предписывают Черепашке занять определённое место на холсте. Это место находится на X пикселей от левой границы и на Y пикселей от верхней границы холста. Примечание: при перемещении Черепашка не будет оставлять след.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="gox">
+ <title
+>иди_гор</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>иди_гор</term>
+ <listitem
+><para
+><screen
+>иди_гор X</screen>
+<userinput
+>иди_гор</userinput
+> используется для перемещения Черепашки на X <glossterm linkend="pixels"
+>пикселей</glossterm
+> от левой границы холста, высота остаётся неизменной.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="goy">
+ <title
+>иди_верт</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>иди_верт</term>
+ <listitem
+><para
+><screen
+>иди_верт Y</screen>
+Используется для перемещения Черепашки на Y <glossterm linkend="pixels"
+>пикселей</glossterm
+> от верхней границы холста, положение относительно левой границы остаётся неизменным.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+<sect2 id="pen">
+<title
+>У Черепашки есть перо</title>
+<para
+>У Черепашки есть перо, которым она рисует линию во время перемещения. Есть несколько команд для управления пером. В данном разделе они будут описаны подробно.</para>
+<sect3 id="penup">
+ <title
+>перо_подними (пп)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>перо_подними</term>
+ <listitem
+><para
+><screen
+>перо_подними</screen>
+<userinput
+>перо_подними</userinput
+> отрывает перо от холста. Пока перо оторвано, Черепашка не будет рисовать линию во время перемещений. Может записываться и как <userinput
+>пп</userinput
+>. См. также <userinput
+>перо_опусти</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="pendown">
+ <title
+>перо_опусти (по)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>перо_опусти</term>
+ <listitem
+><para
+><screen
+>перо_опусти</screen>
+<userinput
+>перо_опусти</userinput
+> опускает перо на холст. Когда перо опущено, Черепашка рисует линию при перемещениях. Может записываться и как <userinput
+>по</userinput
+>. См. также <userinput
+>перо_подними</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="setpenwidth">
+ <title
+>нов_ширина_пера (ншп)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>нов_ширина_пера</term>
+ <listitem
+><para
+><screen
+>нов_ширина_пера X</screen>
+<userinput
+>нов_ширина_пера</userinput
+> устанавливает ширину пера (толщину линии) в X <glossterm linkend="pixels"
+>пикселей</glossterm
+>. Может записываться и как <userinput
+>ншп</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="setfgcolor">
+ <title
+>нов_цвет_пера (нцп)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>нов_цвет_пера</term>
+ <listitem
+><para
+><screen
+>нов_цвет_пера R,G,B</screen>
+<userinput
+>нов_цвет_пера</userinput
+> устанавливает цвет пера. В качестве параметров указывается интенсивность <glossterm linkend="rgb"
+>красной, зелёной и синей</glossterm
+> составляющих цвета (0..255). Может записываться и как <userinput
+>нцп</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+<sect2 id="canvas">
+<title
+>Команды для работы с холстом</title>
+<para
+>Существует несколько команд для работы с холстом.</para>
+<sect3 id="resizecanvas">
+ <title
+>нов_размер_холста (нрх)</title>
+ <variablelist>
+ <varlistentry>
+ <term
+>нов_размер_холста</term>
+ <listitem
+><para
+><screen
+>нов_размер_холста X,Y</screen>
+С помощью этой команды можно поменять размер холста. В качестве входных параметров задаются ширина X и высота Y в <glossterm linkend="pixels"
+>пикселях</glossterm
+>. Может записываться и как <userinput
+>нрх</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="setbgcolor">
+ <title
+>нов_цвет_холста (нцх)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>нов_цвет_холста</term>
+ <listitem
+><para
+><screen
+>нов_цвет_холста R,G,B</screen>
+<userinput
+>нов_цвет_холста</userinput
+> устанавливает цвет холста. Входными параметрами является <glossterm linkend="rgb"
+>комбинация RGB</glossterm
+>. Может записываться и как <userinput
+>нцх</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="wrapon">
+ <title
+>обёртка_вкл</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>обёртка_вкл</term>
+ <listitem
+><para
+><screen
+>обёртка_вкл</screen>
+Этой командой вы устанавливаете <glossterm linkend="wrapping"
+>обёртку холста</glossterm
+>. Это значит, что при достижении края холста Черепашка не исчезнет, а окажется на его противоположной стороне.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="wrapoff">
+ <title
+>обёртка_выкл</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>обёртка_выкл</term>
+ <listitem
+><para
+><screen
+>обёртка_выкл</screen>
+Этой командой вы отключаете <glossterm linkend="wrapping"
+>обёртку холста</glossterm
+>. Это значит, что Черепашка может выйти за границы холста и «исчезнуть».</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+<sect2 id="clean">
+<title
+>Команды очистки</title>
+<para
+>Существуют две команды очистки холста.</para>
+<sect3 id="clear">
+ <title
+>очисти (очс)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>очисти</term>
+ <listitem
+><para
+><screen
+>очисти</screen>
+Этой командой вы можете очистить холст от всех следов. Все остальное останется по-прежнему: позиция и угол направления Черепашки, цвет холста, видимость Черепашки и размер холста. Может записываться и как <userinput
+>очс</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="reset">
+ <title
+>сброс</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>сброс</term>
+ <listitem
+><para
+><screen
+>сброс</screen>
+Очищает более объёмно, нежели команда <userinput
+>очисти</userinput
+>. После выполнения этой команды всё будет выглядеть так, как будто вы только что запустили KTurtle. Черепашка будет расположена в центре экрана, цвет холста будет белым, Черепашка рисует чёрную линию.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+<sect2 id="sprites">
+<title
+>Черепашка &mdash; это спрайт</title>
+<para
+>Большинство людей и понятия не имеют, что такое спрайты, так вот, спрайты &mdash; это маленькие картинки, которые можно перемещать по экрану. Так что Черепашка &mdash; <glossterm linkend="sprites"
+>спрайт</glossterm
+>. </para>
+<para
+>Ниже будет дано подробное описание всех команд работы со спрайтами.</para>
+<para
+>Текущая версия &kturtle; пока не поддерживает использование спрайтов, отличных от Черепашки. В ближайшем будущем вы сможете заменить Черепашку на любой другой персонаж какой хотите.</para>
+<sect3 id="spriteshow">
+ <title
+>покажи</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>покажи (пж)</term>
+ <listitem
+><para
+><screen
+>покажи</screen>
+Делает Черепашку видимой после того, как она была скрыта. Так же может записываться как <userinput
+>пж</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="spritehide">
+ <title
+>спрячь (сч)</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>спрячь</term>
+ <listitem
+><para
+><screen
+>спрячь</screen>
+Скрывает Черепашку. Это полезно, когда Черепашка неуместна в ваших рисунках. Может записываться и как <userinput
+>сч</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+<sect2 id="writing">
+<title
+>Может ли Черепашка печатать на холсте?</title>
+<para
+>Черепашка может написать всё, что вы ей прикажете.</para>
+<sect3 id="print">
+ <title
+>напиши</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>напиши</term>
+ <listitem
+><para
+><screen
+>напиши X</screen>
+Команда <userinput
+>напиши</userinput
+> используется для указания Черепашки написать что-либо на холсте. В качестве входных параметров можно передавать строки или числа. Вы можете печатать различные числа и строки, комбинируя их вместе оператором «+». Вот маленький пример. <screen
+>год = 2003
+автор = "Сиес"
+напиши автор + " начал проект KTurtle в " + год + " году и до сих пор с удовольствием работает над ним!"
+</screen>
+ </para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="fontsize">
+ <title
+>нов_размер_шрифта</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>нов_размер_шрифта</term>
+ <listitem
+><para
+><screen
+>нов_размер_шрифта X</screen>
+Устанавливает размер шрифта, используемого для печати. Входной параметр один, он должен быть числом. Размер задаётся в <glossterm linkend="pixels"
+>пикселях</glossterm
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+<sect2 id="random">
+<title
+>Команды для получения случайных чисел</title>
+<para
+>Команда, которая «бросает игральную кость» для вас &mdash; <userinput
+>random</userinput
+>: полезна для получения неожиданных результатов.</para>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>случайное</term>
+ <listitem
+><para
+><screen
+>случайное X,Y</screen>
+<userinput
+>случайное</userinput
+> &mdash; команда, которая имеет входные и выходные параметры. На входе требуются два числа, первое (X) задаёт нижний порог получаемых чисел (минимум), второе (Y) задаёт верхний порог (максимум). Выходной параметр &mdash; это псевдослучайное число, которое не меньше минимума и не больше максимума. Вот маленький пример:<screen>
+повтори 500 [
+ x = случайное 1,20
+ вперёд x
+ налево 10 - x
+]
+</screen
+>Используя <userinput
+>случайное</userinput
+>, вы можете привнести немного «хаоса» в вашу программу.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect2>
+
+<sect2 id="dialogs">
+<title
+>Взаимодействие через диалоги</title>
+<para
+>Диалог &mdash; небольшое всплывающее окно. Оно выводит сообщение или запрашивает что-либо. В &kturtle; есть две команды для диалогов: <userinput
+>сообщение</userinput
+> и <userinput
+>окно_вопроса</userinput
+>.</para>
+<sect3 id="message">
+ <title
+>сообщение</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>сообщение</term>
+ <listitem
+><para
+><screen
+>сообщение X</screen>
+Команде <userinput
+>сообщение</userinput
+> требуется передать <link linkend="string"
+>строку</link
+>, она будет показана в появившемся окне. <screen
+>год = 2003
+автор = "Сиес"
+напиши автор + " начал проект KTurtle в " + год + " году и до сих пор с удовольствием работает над ним!"
+</screen>
+ </para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+<sect3 id="inputwindow">
+ <title
+>окно_вопроса</title>
+ <variablelist>
+ <varlistentry
+>
+ <term
+>окно_вопроса</term>
+ <listitem
+><para
+><screen
+>окно_вопроса X</screen>
+Команде <userinput
+>окно_вопроса</userinput
+> требуется передать <link linkend="string"
+>строку</link
+>, она будет показана в появившемся окне, аналогично команде <link linkend="message"
+>сообщение</link
+>. Но, кроме этого, в окне будет поле для ввода <link linkend="number"
+>числа</link
+> или <link linkend="string"
+>текста</link
+>. Например <screen>
+результат = окно_вопроса "Сколько вам лет?"
+осталось = 18 - результат
+напиши "Через " + осталось + " лет вам будет разрешено водить машину."
+</screen
+> Если пользователь ничего не введёт и просто закроет окно, <link linkend="containers"
+>контейнер</link
+> <userinput
+>осталось</userinput
+> будет пустой.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect3>
+</sect2>
+
+</sect1>
+
+
+
+<sect1 id="containers">
+<title
+>Контейнеры</title>
+<para
+>Контейнеры &mdash; это символы или слова, которые используются программистом для хранения чисел или текста. Контейнеры, содержащие числа, называются переменными, а содержащие текст &mdash; <link linkend="string"
+>строками</link
+>.</para>
+
+<para
+>Контейнеры до первого их использования ничего не содержат. Вот пример:<screen>
+напиши N
+</screen
+> Не будет ничего напечатано. Если мы будет использовать <link linkend="math"
+>математические</link
+> операции с пустыми контейнерами, то получим ошибки. </para>
+
+<sect2 id="variables">
+<title
+>Переменные: числовые контейнеры</title>
+<para
+>Давайте начнём с небольшого примера: <screen>
+x = 3
+напиши x
+</screen
+> В первой строке символ <userinput
+>x</userinput
+> объявляется переменной (числовым контейнером). Как вы можете увидеть, значение переменной <userinput
+>x</userinput
+> устанавливается равной трём. На второй строке это значение выводится на печать.</para>
+<para
+>Помните, что если мы хотим напечатать не содержимое контейнера, а строку «x», мы должны написать <screen
+>напиши "x"
+</screen>
+</para>
+<para
+>Это было совсем просто, вот пример посложнее: <screen>
+A = 2004
+B = 25
+C = A + B
+
+# следующая команда напечатает "2029"
+напиши C
+назад 30
+# следующая команда напечатает "2004 плюс 25"
+напиши A + " плюс " + B
+назад 30
+# следующая команда напечатает "1979"
+напиши A - B
+</screen
+> В первых двух строках переменные <userinput
+>A</userinput
+> и <userinput
+>B</userinput
+> устанавливаются равными 2004 и 25. В третьей строке переменной <userinput
+>С</userinput
+> присваивается результат <userinput
+>A + B</userinput
+>, который равен 2029. Остальное в примере &mdash; три команды печати на холсте с командой <userinput
+>назад 30</userinput
+> между ними. Команда <userinput
+>назад 30</userinput
+> используется здесь для уверенности в том, что текст будет выводится на новой строке. В данном примере также демонстрируется, как переменные могут быть использованы в <link linkend="math"
+>математических</link
+> расчётах.</para>
+</sect2>
+
+<sect2 id="strings">
+<title
+>Строки: текстовые контейнеры</title>
+<para
+>Обычный текст заключается в кавычки, например: <screen>
+напиши "Привет, программист!"
+</screen
+> То, что между кавычками, называется <link linkend="strings"
+>строкой</link
+>.</para>
+<para
+>Строки во многом похожи на <link linkend="containers"
+>переменные</link
+>. Главное же отличие состоит в том, что строки не могут быть использованы в <link linkend="math"
+>математических выражениях</link
+> и <link linkend="questions"
+>вопросах</link
+>. Пример использования строк: <screen>
+x = "Привет "
+имя = окно_вопроса "Введите своё имя..."
+напиши x + ", " + имя + ". Как дела?"
+</screen
+> В первой строке x присваивается текст «Привет». Затем строке <userinput
+>name</userinput
+> присваивается результат выполнения команды <userinput
+>окно_вопроса</userinput
+> и на холсте печатается комбинация четырёх строк.</para>
+<para
+>Эта программа спрашивает ваше имя. Когда вы вводите, к примеру, имя «Павел», программа выводит на печать «Привет, Павел. Как дела?». Пожалуйста, не забывайте, что «+» &mdash; единственная математическая операция, которая может использоваться при работе со строками.</para>
+</sect2>
+</sect1>
+
+<sect1 id="math">
+<title
+>Может ли Черепашка делать вычисления?</title>
+<para
+>Да, Черепашке под силу заниматься математическими вычислениями. Вы можете складывать (+), вычитать (-), умножать (*) и делить (/). Вот пример, демонстрирующий использование всех этих команд.<screen>
+a = 20 - 5
+b = 15 * 2
+c = 30 / 30
+d = 1 + 1
+напиши "a: "+a+", b: "+b+", c: "+c+", d: "+d
+</screen
+> Знаете ли вы, какие значения примут a, b, c и d? Обратите внимание на использование символа <link linkend="assignment"
+>присваивания</link
+> <userinput
+>=</userinput
+>.</para>
+<para
+>Если в программе вам нужно вычислить простое выражение, вы можете поступать следующим образом: <screen
+>напиши 2004-12
+</screen
+></para>
+<para
+>Вот пример с приоритетом вычислений: <screen>
+напиши ( ( 20 - 5 ) * 2 / 30 ) + 1
+</screen
+> Выражение в скобках будет вычислено первым. В данном примере сначала будет получена разность 20 – 5, затем полученное значение будет умножено на 2, поделено на 30, и напоследок будет добавлена единица (результат равен 2).</para>
+</sect1>
+
+<sect1 id="questions">
+<title
+>Задаём вопросы, получаем ответы...</title>
+<para
+>В следующем разделе мы обсудим команды <link linkend="controlling-execution"
+>контроля выполнения</link
+>: <link linkend="if"
+><userinput
+>если</userinput
+></link
+> и <link linkend="while"
+><userinput
+>пока</userinput
+></link
+>. В этом разделе мы будем использовать команду <userinput
+>если</userinput
+> для объяснения вопросов.</para>
+<sect2 id="q">
+<title
+>Вопросы</title>
+<para
+>Простой пример с вопросом: <screen>
+x = 6
+если x &gt; 5 [
+ напиши "hello"
+]
+</screen
+> В данном примере вопросом является <userinput
+>x &gt; 5</userinput
+>. Если будет получен ответ «истина» (true), будут выполнены команды в скобках. Вопросы &mdash; важная часть программирования. Чаще всего они используются вместе с <link linkend="controlling-execution"
+>операторами контроля</link
+>, такими как <link linkend="if"
+><userinput
+>если</userinput
+></link
+>. Все числа и <link linkend="variables"
+>переменные</link
+> (числовые контейнеры) могут сравниваться друг с другом с помощью вопросов.</para>
+<para
+>Вот возможные вопросы: <table>
+<title
+>Типы вопросов</title>
+<tgroup cols="3">
+<tbody>
+<row>
+<entry
+><userinput
+>a == b</userinput
+></entry>
+<entry
+>равенство</entry>
+<entry
+>ответ «истина» («true»), если <userinput
+>a</userinput
+> равно <userinput
+>b</userinput
+></entry>
+</row>
+<row>
+<entry
+><userinput
+>a != b</userinput
+></entry>
+<entry
+>неравенство</entry>
+<entry
+>ответ «истина» («true»), если <userinput
+>a</userinput
+> не равно <userinput
+>b</userinput
+></entry>
+</row>
+<row>
+<entry
+><userinput
+>a &gt; b</userinput
+></entry>
+<entry
+>больше</entry>
+<entry
+>ответ «истина» («true»), если <userinput
+>a</userinput
+> больше <userinput
+>b</userinput
+></entry>
+</row>
+<row>
+<entry
+><userinput
+>a &lt; b</userinput
+></entry>
+<entry
+>меньше</entry>
+<entry
+>ответ «истина» («true»), если <userinput
+>a</userinput
+> меньше <userinput
+>b</userinput
+></entry>
+</row>
+<row>
+<entry
+><userinput
+>a &gt;= b</userinput
+></entry>
+<entry
+>больше или равно</entry>
+<entry
+>ответ «истина» («true»), если <userinput
+>a</userinput
+> больше или равно <userinput
+>b</userinput
+></entry>
+</row>
+<row>
+<entry
+><userinput
+>a &lt;= b</userinput
+></entry>
+<entry
+>меньше или равно</entry>
+<entry
+>ответ «истина» («true»), если <userinput
+>a</userinput
+> меньше или равно <userinput
+>b</userinput
+></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+</para>
+<para
+>Вопросы <glossterm
+>подсвечиваются</glossterm
+> (выделяются) голубым в <link linkend="the-code-editor"
+>редакторе кода</link
+>.</para
+>
+</sect2>
+
+<sect2 id="question-glue">
+<title
+>Вопросный клей</title>
+<para
+>Вопросы также могут быть совмещены друг с другом с помощью клея. Это позволяет использовать несколько вопросов как один большой. <screen>
+a = 1
+b = 5
+если (a &lt; 5) и (b == 5) [
+ напиши "hello"
+]
+</screen
+> В этом вопросе «склеивающее слово» &mdash; <userinput
+>и</userinput
+>, оно используется, чтобы совместить два вопроса (a &lt; 5, b==5) вместе. Если с одной стороны результатом будет «ложь», то и ответ на весь вопрос будет «ложь», потому, что с этим «склеивающим словом» обе стороны должны быть равны «истина» для получения ответа на весь вопрос «истина». Не забывайте использовать скобки для выставления приоритетов вопросов.</para>
+
+<para
+>Вот краткий обзор управляющих операторов, более детально они описаны ниже: <table>
+<title
+>«Склеивающие слова» для вопросов</title>
+<tgroup cols="2">
+<tbody>
+<row>
+<entry
+><userinput
+>и</userinput
+></entry>
+<entry
+>Обе стороны должны быть равны «истина» для получения ответа «истина» на весь вопрос.</entry>
+</row>
+<row>
+<entry
+><userinput
+>или</userinput
+></entry>
+<entry
+>Если хотя бы одна сторона равна «истина», то и ответ будет «истина».</entry>
+</row>
+<row>
+<entry
+><userinput
+>не</userinput
+></entry>
+<entry
+>Только если обе стороны «ложь», ответ будет «ложь».</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+</para>
+<para
+>Склеивающие слова <glossterm
+>подсвечиваются</glossterm
+> фиолетовым в <link linkend="the-code-editor"
+>редакторе кода</link
+>.</para>
+
+<sect3 id="and">
+<title
+>и</title>
+<para
+>Если вопросы соединяются при помощи <userinput
+>и</userinput
+>, для получения общего ответа «истина», они все должны быть истинными, например: <screen>
+a = 1
+b = 5
+если ((a &lt; 10) и (b == 5)) и (a &lt; b) [
+ напиши "хм"
+]
+</screen
+></para>
+</sect3>
+
+<sect3 id="or">
+<title
+>или</title>
+<para
+>Если ответ хотя бы на один из вопросов &mdash; «истина», то и общий ответ будет таким же, например: <screen>
+a = 1
+b = 5
+если ((a &lt; 10) или (b == 10)) или (a == 0) [
+ напиши "хм"
+]
+</screen
+></para>
+</sect3>
+
+<sect3 id="not">
+<title
+>не</title>
+<para
+>Это специальная приставка, меняющая ответ на противоположный, например: <screen>
+a = 1
+b = 5
+если не ((a &lt; 10) и (b == 5)) [
+ напиши "хм"
+]
+иначе
+[
+ напиши "не хм ;-)"
+]
+</screen
+> В этом примере ответ на заданный вопрос &mdash; «истина», а приставка <userinput
+>не</userinput
+> изменяет это на «ложь», так что на <link linkend="the-canvas"
+>холсте</link
+> будет напечатано <userinput
+>"не хм ;-)"</userinput
+>.</para>
+</sect3>
+
+</sect2>
+
+</sect1>
+
+<sect1 id="controlling-execution">
+<title
+>Контроль над выполнением</title>
+<para
+>Управляющие операторы позволяют вам контролировать процесс выполнения (о чём говорит само их название).</para>
+<para
+>Управляющие операторы <glossterm
+>выделяются</glossterm
+> тёмно-зелёным цветом и полужирным начертанием шрифта. Квадратные скобки, используемые вместе с ними, выделяются светло-зелёным.</para>
+
+<sect2 id="wait">
+<title
+>Может ли Черепашка ждать?</title>
+<para
+>Если вы уже немного попрактиковались в программировании в KTurtle, вы могли заметить, что Черепашка может рисовать чересчур быстро. Следующая команда позволяет избежать этого.</para>
+ <variablelist>
+ <varlistentry>
+ <term
+>жди</term>
+ <listitem
+><para
+><screen
+>жди X</screen>
+<userinput
+>жди</userinput
+> указывает Черепашке подождать X секунд.<screen>
+повтори 36 [
+ вперёд 5
+ направо 10
+ жди 0.5
+]
+</screen
+> Данный код рисует круг, при этом после каждого шага Черепашка будет ждать полсекунды. Это создаёт впечатление неторопливого движения.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect2>
+
+<sect2 id="if">
+<title
+>Условное выполнение</title>
+ <variablelist>
+ <varlistentry>
+ <term
+>если</term>
+ <listitem
+><para
+><screen
+>если <link linkend="questions"
+>вопрос</link
+> [ ... ]</screen>
+Код, расположенный между скобками, будет выполнен только тогда, когда ответом на вопрос будет «истина». Для более подробной информации прочитайте раздел «<link linkend="questions"
+>Вопросы</link
+>».<screen>
+x = 6
+если x &gt; 5 [
+ напиши "x больше пяти!"
+]
+</screen
+> В первой строке контейнеру <userinput
+>x</userinput
+> присваивается 6. Во второй задаётся <link linkend="questions"
+>вопрос</link
+> <userinput
+>x &gt; 5</userinput
+>. Если ответом на него будет «истина», управляющий оператор <userinput
+>если</userinput
+> позволит выполнить код, расположенный между скобками.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect2>
+
+<sect2 id="while">
+<title
+>Цикл «пока»</title>
+ <variablelist>
+ <varlistentry>
+ <term
+>пока</term>
+ <listitem
+><para
+><screen
+>пока <link linkend="questions"
+>вопрос</link
+> [ ... ]</screen>
+Управляющий оператор <userinput
+>пока</userinput
+> немного похож на <link linkend="if"
+><userinput
+>если</userinput
+></link
+>. Разница в том, что <userinput
+>пока</userinput
+> будет повторять код (цикл), расположенный между скобками, до тех пор, пока ответом на <link linkend="questions"
+>вопрос</link
+> не станет «ложь».<screen>
+x = 1
+пока x &lt; 5 [
+ вперёд 10
+ жди 1
+ x = x + 1
+]
+</screen
+> В первой строке <userinput
+>x</userinput
+> присваивается 1. Во второй строке задаётся <link linkend="questions"
+>вопрос</link
+> <userinput
+>x &lt; 5</userinput
+>. Так как ответ на этот вопрос &mdash; «истина», оператор <userinput
+>пока</userinput
+> начнёт выполнять код между скобками, пока ответом на вопрос не станет «ложь». В данном случае код между скобками будет выполнен 4 раза потому, что на каждом прогоне в пятой строке <userinput
+>x</userinput
+> будет увеличиваться на 1.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect2>
+
+<sect2 id="else">
+<title
+>Если нет, «иначе»</title>
+ <variablelist>
+ <varlistentry>
+ <term
+>иначе</term>
+ <listitem
+><para
+><screen
+>если вопрос [ ... ] иначе [ ... ]</screen>
+Может быть дополнением к оператору условного выполнения <link linkend="if"
+><userinput
+>если</userinput
+></link
+>. Код между скобками, расположенными после <userinput
+>иначе</userinput
+> будет выполнен тогда, когда ответом на <link linkend="questions"
+>вопрос</link
+> будет «ложь». <screen>
+сброс
+x = 4
+если x &gt; 5 [
+ напиши "x больше пяти!"
+]
+иначе
+[
+ напиши "x меньше пяти!"
+]
+</screen
+> Оператор <userinput
+>если</userinput
+> ставит <link linkend="questions"
+>вопрос</link
+>, больше ли <userinput
+>x</userinput
+> чем 5. Так как <userinput
+>x</userinput
+> равно 4, ответ на вопрос &mdash; «ложь». Поэтому выполняется код в скобках после <userinput
+>иначе</userinput
+>.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect2>
+
+<sect2 id="for">
+<title
+>Считающий цикл «для»</title>
+ <variablelist>
+ <varlistentry>
+ <term
+>для</term>
+ <listitem
+><para
+><screen
+>для <userinput
+>начальное число</userinput
+> до <userinput
+>конечное число</userinput
+> [ ... ]</screen>
+Цикл <userinput
+>для</userinput
+> &mdash; это цикл «со счётчиком». <screen>
+для x = 1 до 10 [
+ напиши x * 7
+ вперёд 15
+]
+</screen
+> Каждый раз, когда выполняется код в скобках, значение <userinput
+>x</userinput
+> увеличивается на 1. Выполнение цикла продолжиться, пока <userinput
+>x</userinput
+> не станет равным 10. Код в скобках выводит на печать произведение <userinput
+>x</userinput
+> и 7. Результат работы этой программы &mdash; таблица умножения на 7.</para
+></listitem>
+ </varlistentry>
+ </variablelist>
+</sect2>
+
+</sect1>
+
+
+<sect1 id="learn">
+<title
+>Создавайте свои собственные команды</title>
+<para
+><userinput
+>Выучи</userinput
+> &mdash; особенная команда, потому что она предназначена для создания ваших собственных команд. Создаваемые вами команды могут <glossterm linkend="input-output"
+>принимать входные параметры и возвращать различные значения</glossterm
+>. Давайте посмотрим, как создаются собственные команды: <screen>
+выучи круг x [
+ повтори 36 [
+ вперёд x
+ налево 10
+ ]
+]
+</screen
+> Новая команда называется <userinput
+>круг</userinput
+>. Её <glossterm linkend="input-output"
+>входным параметром</glossterm
+> является число &mdash; размер круга. Теперь команду <userinput
+>круг</userinput
+> можно использовать как же, как и обычные команды: <screen
+>выучи круг X [
+ повтори 36 [
+ вперёд X
+ налево 10
+ ]
+]
+
+иди 30,30
+круг 20
+
+иди 40,40
+круг 50
+</screen>
+</para>
+<para
+>В следующем примере будет создана команда, возвращающая значение.<screen>
+сброс
+
+выучи квадрат_числа n [
+ r = n * n
+ верни r
+]
+i = окно_вопроса "Введите число и нажмите OK"
+напиши i + ", умноженное на себя: " + квадрат_числа i
+</screen
+> В данном примере создана новая команда с именем<userinput
+>квадрат_числа</userinput
+>. Ей передаётся число, а она возвращает его квадрат. </para>
+</sect1>
+
+</chapter>