|
|
<!--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 параметром, в нашем случае — это 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
|
|
|
> — команда, которой передаётся строка <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
|
|
|
>Черепашка — это спрайт</title>
|
|
|
<para
|
|
|
>Большинство людей и понятия не имеют, что такое спрайты, так вот, спрайты — это маленькие картинки, которые можно перемещать по экрану. Так что Черепашка — <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
|
|
|
>Команда, которая «бросает игральную кость» для вас — <userinput
|
|
|
>random</userinput
|
|
|
>: полезна для получения неожиданных результатов.</para>
|
|
|
<variablelist>
|
|
|
<varlistentry
|
|
|
>
|
|
|
<term
|
|
|
>случайное</term>
|
|
|
<listitem
|
|
|
><para
|
|
|
><screen
|
|
|
>случайное X,Y</screen>
|
|
|
<userinput
|
|
|
>случайное</userinput
|
|
|
> — команда, которая имеет входные и выходные параметры. На входе требуются два числа, первое (X) задаёт нижний порог получаемых чисел (минимум), второе (Y) задаёт верхний порог (максимум). Выходной параметр — это псевдослучайное число, которое не меньше минимума и не больше максимума. Вот маленький пример:<screen>
|
|
|
повтори 500 [
|
|
|
x = случайное 1,20
|
|
|
вперёд x
|
|
|
налево 10 - x
|
|
|
]
|
|
|
</screen
|
|
|
>Используя <userinput
|
|
|
>случайное</userinput
|
|
|
>, вы можете привнести немного «хаоса» в вашу программу.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
</variablelist>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="dialogs">
|
|
|
<title
|
|
|
>Взаимодействие через диалоги</title>
|
|
|
<para
|
|
|
>Диалог — небольшое всплывающее окно. Оно выводит сообщение или запрашивает что-либо. В &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
|
|
|
>Контейнеры — это символы или слова, которые используются программистом для хранения чисел или текста. Контейнеры, содержащие числа, называются переменными, а содержащие текст — <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. Остальное в примере — три команды печати на холсте с командой <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
|
|
|
>Эта программа спрашивает ваше имя. Когда вы вводите, к примеру, имя «Павел», программа выводит на печать «Привет, Павел. Как дела?». Пожалуйста, не забывайте, что «+» — единственная математическая операция, которая может использоваться при работе со строками.</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 > 5 [
|
|
|
напиши "hello"
|
|
|
]
|
|
|
</screen
|
|
|
> В данном примере вопросом является <userinput
|
|
|
>x > 5</userinput
|
|
|
>. Если будет получен ответ «истина» (true), будут выполнены команды в скобках. Вопросы — важная часть программирования. Чаще всего они используются вместе с <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 > 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 >= 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>
|
|
|
</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 < 5) и (b == 5) [
|
|
|
напиши "hello"
|
|
|
]
|
|
|
</screen
|
|
|
> В этом вопросе «склеивающее слово» — <userinput
|
|
|
>и</userinput
|
|
|
>, оно используется, чтобы совместить два вопроса (a < 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 < 10) и (b == 5)) и (a < b) [
|
|
|
напиши "хм"
|
|
|
]
|
|
|
</screen
|
|
|
></para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="or">
|
|
|
<title
|
|
|
>или</title>
|
|
|
<para
|
|
|
>Если ответ хотя бы на один из вопросов — «истина», то и общий ответ будет таким же, например: <screen>
|
|
|
a = 1
|
|
|
b = 5
|
|
|
если ((a < 10) или (b == 10)) или (a == 0) [
|
|
|
напиши "хм"
|
|
|
]
|
|
|
</screen
|
|
|
></para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="not">
|
|
|
<title
|
|
|
>не</title>
|
|
|
<para
|
|
|
>Это специальная приставка, меняющая ответ на противоположный, например: <screen>
|
|
|
a = 1
|
|
|
b = 5
|
|
|
если не ((a < 10) и (b == 5)) [
|
|
|
напиши "хм"
|
|
|
]
|
|
|
иначе
|
|
|
[
|
|
|
напиши "не хм ;-)"
|
|
|
]
|
|
|
</screen
|
|
|
> В этом примере ответ на заданный вопрос — «истина», а приставка <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 > 5 [
|
|
|
напиши "x больше пяти!"
|
|
|
]
|
|
|
</screen
|
|
|
> В первой строке контейнеру <userinput
|
|
|
>x</userinput
|
|
|
> присваивается 6. Во второй задаётся <link linkend="questions"
|
|
|
>вопрос</link
|
|
|
> <userinput
|
|
|
>x > 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 < 5 [
|
|
|
вперёд 10
|
|
|
жди 1
|
|
|
x = x + 1
|
|
|
]
|
|
|
</screen
|
|
|
> В первой строке <userinput
|
|
|
>x</userinput
|
|
|
> присваивается 1. Во второй строке задаётся <link linkend="questions"
|
|
|
>вопрос</link
|
|
|
> <userinput
|
|
|
>x < 5</userinput
|
|
|
>. Так как ответ на этот вопрос — «истина», оператор <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 > 5 [
|
|
|
напиши "x больше пяти!"
|
|
|
]
|
|
|
иначе
|
|
|
[
|
|
|
напиши "x меньше пяти!"
|
|
|
]
|
|
|
</screen
|
|
|
> Оператор <userinput
|
|
|
>если</userinput
|
|
|
> ставит <link linkend="questions"
|
|
|
>вопрос</link
|
|
|
>, больше ли <userinput
|
|
|
>x</userinput
|
|
|
> чем 5. Так как <userinput
|
|
|
>x</userinput
|
|
|
> равно 4, ответ на вопрос — «ложь». Поэтому выполняется код в скобках после <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
|
|
|
> — это цикл «со счётчиком». <screen>
|
|
|
для x = 1 до 10 [
|
|
|
напиши x * 7
|
|
|
вперёд 15
|
|
|
]
|
|
|
</screen
|
|
|
> Каждый раз, когда выполняется код в скобках, значение <userinput
|
|
|
>x</userinput
|
|
|
> увеличивается на 1. Выполнение цикла продолжиться, пока <userinput
|
|
|
>x</userinput
|
|
|
> не станет равным 10. Код в скобках выводит на печать произведение <userinput
|
|
|
>x</userinput
|
|
|
> и 7. Результат работы этой программы — таблица умножения на 7.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
</variablelist>
|
|
|
</sect2>
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
<sect1 id="learn">
|
|
|
<title
|
|
|
>Создавайте свои собственные команды</title>
|
|
|
<para
|
|
|
><userinput
|
|
|
>Выучи</userinput
|
|
|
> — особенная команда, потому что она предназначена для создания ваших собственных команд. Создаваемые вами команды могут <glossterm linkend="input-output"
|
|
|
>принимать входные параметры и возвращать различные значения</glossterm
|
|
|
>. Давайте посмотрим, как создаются собственные команды: <screen>
|
|
|
выучи круг x [
|
|
|
повтори 36 [
|
|
|
вперёд x
|
|
|
налево 10
|
|
|
]
|
|
|
]
|
|
|
</screen
|
|
|
> Новая команда называется <userinput
|
|
|
>круг</userinput
|
|
|
>. Её <glossterm linkend="input-output"
|
|
|
>входным параметром</glossterm
|
|
|
> является число — размер круга. Теперь команду <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>
|