diff options
Diffstat (limited to 'tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook')
-rw-r--r-- | tde-i18n-ru/docs/tdeedu/kturtle/programming-reference.docbook | 1529 |
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 параметром, в нашем случае — это 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> |