You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1728 lines
41 KiB
1728 lines
41 KiB
<!--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
|
|
>Dokumentacja programistyczna języka &logo; &kturtle;</title>
|
|
<para
|
|
>Poniżej znajduje się dokumentacja języka &logo; używanego przez &kturtle;. W tym rozdziale najpierw zostaną krótko wymienione <link linkend="different-instructions"
|
|
>różne typy instrukcji</link
|
|
>. Następnie zostaną objaśnione <link linkend="commands"
|
|
>komendy</link
|
|
>. Po nich <link linkend="containers"
|
|
>kontenery</link
|
|
>, <link linkend="math"
|
|
>terminy matematyczne</link
|
|
>, <link linkend="questions"
|
|
>zapytania</link
|
|
> oraz <link linkend="controlling-execution"
|
|
>kontrolery wykonawcze</link
|
|
>. Na końcu pokazane zostanie jak za pomocą <link linkend="learn"
|
|
>nauczyciela</link
|
|
> tworzyć własne komendy.</para>
|
|
|
|
<sect1 id="different-instructions">
|
|
<title
|
|
>Różne typy instrukcji</title>
|
|
<para
|
|
>Jak każdy inny język programowania ,LOGO posiada różne typy wyrazów i symboli. Oto różnice pomiędzy typami i krótkie wyjaśnienia.</para>
|
|
|
|
<sect2 id="command">
|
|
<title
|
|
>Komendy</title>
|
|
<para
|
|
>Przy użyciu komend wskazujemy &kturtle; czynności do wykonania. Niektóre z komend potrzebują argumentów wejściowych a inne wyjściowych. <screen
|
|
># naprzód to komenda z argumentem wejściowym, tutaj jest to liczba 100:
|
|
naprzód 100
|
|
</screen>
|
|
</para>
|
|
<para
|
|
>Szczegółowy opis wszystkich komend &kturtle; znajduje się <link linkend="commands"
|
|
>tutaj</link
|
|
>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="number">
|
|
<title
|
|
>Liczby</title>
|
|
<para
|
|
>Każdy użytkownik z pewnością wie trochę o liczbach. Sposób w jaki liczby używane są przez &kturtle; niezbyt różni się od języka mówionego czy matematyki. </para>
|
|
<para
|
|
>Mamy liczby naturalne: <userinput
|
|
>0</userinput
|
|
>, <userinput
|
|
>1</userinput
|
|
>, <userinput
|
|
>2</userinput
|
|
>, <userinput
|
|
>3</userinput
|
|
>, <userinput
|
|
>4</userinput
|
|
>, <userinput
|
|
>5</userinput
|
|
>, itd. Liczby ujemne: <userinput
|
|
>-1</userinput
|
|
>, <userinput
|
|
>-2</userinput
|
|
>, <userinput
|
|
>-3</userinput
|
|
>, itd. Oraz liczby dziesiętne np: <userinput
|
|
>0.1</userinput
|
|
>, <userinput
|
|
>3.14</userinput
|
|
>, <userinput
|
|
>33.3333</userinput
|
|
>, <userinput
|
|
>-5.05</userinput
|
|
>, <userinput
|
|
>-1.0</userinput
|
|
>. </para>
|
|
<para
|
|
>Liczby mogą być używane w <link linkend="math"
|
|
>obliczeniach matematycznych</link
|
|
> oraz <link linkend="questions"
|
|
>zapytaniach</link
|
|
>. Mogą być również wkładane do <link linkend="containers"
|
|
>kontenerów</link
|
|
>.</para>
|
|
<para
|
|
>W <link linkend="the-code-editor"
|
|
>edytorze kodów</link
|
|
> liczby są <glossterm
|
|
>podświetlone</glossterm
|
|
> na niebiesko.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="string">
|
|
<title
|
|
>Łańcuchy znaków</title>
|
|
<para
|
|
>Najpierw przykład: <screen>
|
|
pisz "Cześć, Jestem łańcuchem znaków."
|
|
</screen
|
|
> W tym przykładzie <userinput
|
|
>pisz</userinput
|
|
> jest komendą a <userinput
|
|
>"Cześć, Jestem łańcuchem znaków."</userinput
|
|
> łańcuchem znaków. Łańcuch zaczyna i kończy się znakiem <userinput
|
|
>"</userinput
|
|
>, dzięki niemu &kturtle; rozpoznaje łańcuch znakowy.</para>
|
|
<para
|
|
>Łańcuchy mogą być wkładane do <link linkend="containers"
|
|
>kontenerów</link
|
|
>. ale nie mogą być używane w <link linkend="math"
|
|
>obliczeniach matematycznych</link
|
|
> i <link linkend="questions"
|
|
>zapytaniach</link
|
|
>.</para>
|
|
<para
|
|
>W <link linkend="the-code-editor"
|
|
>edytorze kodów</link
|
|
> liczby są <glossterm
|
|
>podświetlone</glossterm
|
|
> na kolor ciemnoczerwony.</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="name">
|
|
<title
|
|
>Nazwy</title>
|
|
<para
|
|
>Przy użyciu języka programowania &logo; tworzy się nowe obiekty. Pisząc programy często potrzebować będziemy <link linkend="containers"
|
|
>kontenerów</link
|
|
> a w niektórych przypadkach <link linkend="learn"
|
|
>nauczyciela</link
|
|
> do tworzenia nowych komend. Tworząc <link linkend="containers"
|
|
>kontener</link
|
|
> lub nową komendę za pomocą <link linkend="learn"
|
|
>nauczyciela</link
|
|
> należy określić ich nazwę.</para>
|
|
<para
|
|
>Można wybrać dowolną nazwę, pod warunkiem, iż nie odnosi się ona już do niczego. Np. nie można nazwać kontenera <link linkend="forward"
|
|
>naprzód</link
|
|
>, jako, że jest to nazwa komendy. <screen>
|
|
# tutaj naprzód jest używane jako kontener, ale ta nazwa jest już używana jako komenda
|
|
# zatem pokaże się komunikat błędu:
|
|
naprzód = 20
|
|
|
|
# natomiast działać będzie:
|
|
naprzód 20
|
|
</screen
|
|
> Nazwy mogą zawierać tylko litery, cyfry oraz linie poziome (_). ale muszą zaczynać się od litery. </para>
|
|
<para
|
|
>Więcej przykładów oraz dokładniejsze wyjaśnienie znajduje się w dokumentacji <link linkend="containers"
|
|
>kontenerów</link
|
|
> oraz <link linkend="learn"
|
|
>nauczyciela</link
|
|
>. </para>
|
|
</sect2>
|
|
|
|
<sect2 id="assignment">
|
|
<title
|
|
>Przypisania</title>
|
|
<para
|
|
>Przypisań dokonuje się za pomocą symbolu <userinput
|
|
>=</userinput
|
|
>. W językach programowania zaleca się czytanie symbolu <userinput
|
|
>=</userinput
|
|
> nie jako równa się ale jako oznacza. Zwrot równa się bardziej odpowiada symbolowi <userinput
|
|
>==</userinput
|
|
> będącemu <link linkend="questions"
|
|
>zapytaniem</link
|
|
>.</para>
|
|
<para
|
|
>Przypisań dokonuje się z dwóch powodów, (1) by dodać zawartość do <link linkend="containers"
|
|
>kontenerów</link
|
|
>, oraz (2) by zmodyfikować zawartość kontenerów. Na przykład: <screen
|
|
>x = 10
|
|
# kontener x zawiera teraz liczbę 10
|
|
W = "Mój wiek to: "
|
|
# kontener W zawiera teraz łańcuch"Mój wiek to: "
|
|
# poniższa instrukcja drukuje na płótnie zawartość kontenerów 'W' i 'x'
|
|
pisz W + x
|
|
</screen>
|
|
</para>
|
|
<para
|
|
>Więcej przykładów znajduje się z sekcji wyjaśniającej <link linkend="containers"
|
|
>kontenery</link
|
|
>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="math-symbols">
|
|
<title
|
|
>Symbole matematyczne</title>
|
|
<para
|
|
>&kturtle; rozpoznaje wszystkie podstawowe symbole matematyczne: plus (<userinput
|
|
>+</userinput
|
|
>), minus (<userinput
|
|
>-</userinput
|
|
>), mnożenie (<userinput
|
|
>*</userinput
|
|
>), dzielenie (<userinput
|
|
>/</userinput
|
|
>) oraz nawiasy <userinput
|
|
>(</userinput
|
|
> i <userinput
|
|
>)</userinput
|
|
>.</para>
|
|
<para
|
|
>Dokładniejsze wyjaśnienie i więcej przykładów znajduje się w sekcji <link linkend="math"
|
|
>matematyka</link
|
|
>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="question">
|
|
<title
|
|
>Zapytania</title>
|
|
<para
|
|
>Możemy zadać proste pytania, na które możliwe są jedynie odpowiedzi 'prawda' lub 'fałsz'.</para>
|
|
<para
|
|
>Użycie pytań jest dokładniej wyjaśnione w sekcji <link linkend="questions"
|
|
>zapytania</link
|
|
>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="questions-glue">
|
|
<title
|
|
>Wyrazy łączące pytania</title>
|
|
<para
|
|
>Zapytania mogą być składane razem dzięki tak zwanym wyrazom łączącym. Takimi wyrazami są <userinput
|
|
>i</userinput
|
|
>, <userinput
|
|
>lub</userinput
|
|
>, oraz: <userinput
|
|
>nie</userinput
|
|
>.</para>
|
|
<para
|
|
>Użycie wyrazów łączących pytania wyjaśnione jest w sekcji <link linkend="question-glue"
|
|
>Łączenie pytań</link
|
|
>.</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="comment">
|
|
<title
|
|
>Komentarze</title>
|
|
<para
|
|
>Komentarzami są linie zaczynające się od <userinput
|
|
>#</userinput
|
|
>. Na przykład: <screen>
|
|
# to jest komentarz!
|
|
pisz "to nie jest komentarz"
|
|
# poprzednia linia nie jest komentarzem natomiast wcześniejsza jest:
|
|
# pisz "to nie jest komentarz"
|
|
</screen
|
|
> Do kodu możemy dodawać komentarze dla nas bądź dla innych czytających. Komentarzy używa się do: (1) dodawania krótkich opisów programu, (2) wyjaśniania jak działa dany fragment kodu, oraz (3) wykomentowania linii kodu, które powinny być ignorowane (chwilowo) (patrz ostatnia linia przykładu).</para>
|
|
<para
|
|
>W <link linkend="the-code-editor"
|
|
>edytorze kodów</link
|
|
> komentarze są <glossterm
|
|
>podświetlone</glossterm
|
|
> na kolor ciemnożółty.</para>
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="commands">
|
|
<title
|
|
>Komendy</title>
|
|
<para
|
|
>Używając komend mówimy żółwiowi lub &kturtle; by wykonywał konkretne polecenia. Niektóre komendy wymagają argumentów wyjściowych a niektóre dają coś na wyjściu. W tej sekcji wyjaśniamy działanie wszystkich komend używanych przez &kturtle;. Należy zauważyć, że wszystkie omawiane tutaj wbudowane komendy są w <link linkend="the-code-editor"
|
|
>edytorze kodu</link
|
|
> <glossterm
|
|
>podświetlone</glossterm
|
|
> na kolor ciemnozielony, co pomaga je rozróżnić.</para>
|
|
|
|
<sect2 id="moving-the-turtle">
|
|
<title
|
|
>Poruszanie żółwia</title>
|
|
<para
|
|
>Do poruszania żółwia po ekranie służy kilka komend</para>
|
|
|
|
<sect3 id="forward">
|
|
<title
|
|
>naprzód (np)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>naprzód</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>naprzód X</screen>
|
|
<userinput
|
|
>naprzód</userinput
|
|
> przesuwa żółwia do przodu o X pikseli. Gdy ołówek jest skierowany w dół żółw zostawia ślad. <userinput
|
|
>naprzód</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>np</userinput
|
|
></para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="backward">
|
|
<title
|
|
>wstecz (ws)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>w tył</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>wstecz X</screen>
|
|
<userinput
|
|
>wstecz</userinput
|
|
> przesuwa żółwia do tyłu o X pikseli. Gdy ołówek jest skierowany w dół żółw zostawia ślad. <userinput
|
|
>wstecz</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>ws</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="turnleft">
|
|
<title
|
|
>obróć_w_lewo (lw)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>skręć w lewo</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>obróć_w_lewo X</screen>
|
|
<userinput
|
|
>obróć_w_lewo</userinput
|
|
> powoduje, że żółw skręca w lewo o X stopni. <userinput
|
|
>obróć_w_lewo</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>lw</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="turnright">
|
|
<title
|
|
>obróć_w_prawo (pw)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>skręć w prawo</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>obróć_w_prawo X</screen>
|
|
<userinput
|
|
>obróć_w_prawo</userinput
|
|
> powoduje, że żółw skręca w prawo o X stopni. <userinput
|
|
>obróć_w_prawo</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>pw</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="direction">
|
|
<title
|
|
>kierunek (kie)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>kierunek</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>kierunek X</screen>
|
|
<userinput
|
|
>kierunek</userinput
|
|
> ustawia kierunek ruchu żółwia na X stopni licząc od zera, nie wiąże się to z poprzednim kierunkiem ruchu żółwia. <userinput
|
|
>kierunek</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>kie</userinput
|
|
></para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="center">
|
|
<title
|
|
>środek</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>środek</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>środek</screen>
|
|
<userinput
|
|
>środek</userinput
|
|
> przesuwa żółwia na środek płótna.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="go">
|
|
<title
|
|
>idź</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>idź</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>idź X,Y</screen>
|
|
Komenda <userinput
|
|
>idź</userinput
|
|
> przesuwa żółwia na wskazaną lokalizację na płótnie. Ta lokalizacja to X <glossterm linkend="pixels"
|
|
>pikseli</glossterm
|
|
> od lewej strony płótna oraz Y <glossterm linkend="pixels"
|
|
>pikseli</glossterm
|
|
> od góry płótna. Użycie komendy <userinput
|
|
>idź</userinput
|
|
> nie powoduje, że żółw rysuje linie.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="gox">
|
|
<title
|
|
>idźx</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>idźx</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>idźx X</screen>
|
|
<userinput
|
|
>idźx</userinput
|
|
> powoduje przesunięcie żółwia do pozycji X <glossterm linkend="pixels"
|
|
>pikseli</glossterm
|
|
> od lewej strony płótna, podczas gdy wysokość pozostaje bez zmiany.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="goy">
|
|
<title
|
|
>idźy</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>idźy</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>idźy Y</screen>
|
|
<userinput
|
|
>idźy</userinput
|
|
> powoduje przesunięcie żółwia do pozycji Y <glossterm linkend="pixels"
|
|
>pikseli</glossterm
|
|
> od góry płótna, podczas gdy odległość od lewego brzegu pozostaje bez zmian.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="pen">
|
|
<title
|
|
>Żółw posiada ołówek</title>
|
|
<para
|
|
>Żółw posiada ołówek, który rysuje linię gdy żółw się przesuwa. Istnieje kilka komend zarządzających ołówkiem. W tej sekcji wyjaśniamy te komendy.</para>
|
|
<sect3 id="penup">
|
|
<title
|
|
>podnieś (pod)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>podnieś</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>podnieś</screen>
|
|
<userinput
|
|
>podnieś</userinput
|
|
> podnosi ołówek z płótna. Gdy ołówek jest <quote
|
|
>podniesiony</quote
|
|
> nie będzie rysowana linia gdy porusza się żółw. Zobacz także <userinput
|
|
>opuść</userinput
|
|
>. <userinput
|
|
>podnieś</userinput
|
|
> może być użyte za pomocą skrótu <userinput
|
|
>pod</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="pendown">
|
|
<title
|
|
>opuść (opu)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>opuść</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>opuść</screen>
|
|
<userinput
|
|
>opuść</userinput
|
|
> kładzie ołówek na płótnie. Gdy ołówek jest <quote
|
|
>położony</quote
|
|
> będzie rysowana linia gdy porusza się żółw. Zobacz także <userinput
|
|
>podnieś</userinput
|
|
>. <userinput
|
|
>opuść</userinput
|
|
> może być użyte za pomocą skrótu <userinput
|
|
>opu</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="setpenwidth">
|
|
<title
|
|
>ustaw_grubość_pisaka (ugp)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>ustaw_grubość_pisaka</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>ustaw_grubość_pisaka X</screen>
|
|
<userinput
|
|
>ustaw_grubość_pisaka</userinput
|
|
> ustawia grubość ołówka (grubość rysowanej linii) na X <glossterm linkend="pixels"
|
|
>pikseli</glossterm
|
|
>. <userinput
|
|
>ustaw_grubość_pisaka</userinput
|
|
> może być użyte za pomocą skrótu<userinput
|
|
>ugp</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="setfgcolor">
|
|
<title
|
|
>kolor_pisaka (kp)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>kolor ołówka</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>kolor_pisaka R,G,B</screen>
|
|
<userinput
|
|
>kolor_pisaka</userinput
|
|
> ustawia kolor ołówka. <userinput
|
|
>kolor_pisaka</userinput
|
|
> przyjmuje <glossterm linkend="rgb"
|
|
>kombinację RGB</glossterm
|
|
> jako argument wejściowy. <userinput
|
|
>kolor_pisaka</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>kp</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="canvas">
|
|
<title
|
|
>Komendy do zarządzania płótnem</title>
|
|
<para
|
|
>Istnieje kilka komend sterujących płótnem.</para>
|
|
<sect3 id="resizecanvas">
|
|
<title
|
|
>przeskaluj_tło (pt)</title>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term
|
|
>przeskaluj_tło</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>przeskaluj_tło X,Y</screen>
|
|
Za pomocą komendy <userinput
|
|
>przeskaluj_tło</userinput
|
|
> można ustawić rozmiar płótna. Komenda przyjmuje jako argumenty wejściowe liczby X i Y, gdzie X jest nową szerokością płótna w <glossterm linkend="pixels"
|
|
>pikselach</glossterm
|
|
>, a Y jest nową wysokością płótna w <glossterm linkend="pixels"
|
|
>pikselach</glossterm
|
|
>. <userinput
|
|
>przeskaluj_tło</userinput
|
|
> może być użyte za pomocą skrótu <userinput
|
|
>pt</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="setbgcolor">
|
|
<title
|
|
>kolor_tła (kt)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>kolor_tła</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>kolor_tła R,G,B</screen>
|
|
Komenda <userinput
|
|
>kolor_tła</userinput
|
|
> ustawia kolor płótna. <userinput
|
|
>kolor_tła</userinput
|
|
> przyjmuje <glossterm linkend="rgb"
|
|
>kombinację RGB</glossterm
|
|
> jako argument wejściowy. <userinput
|
|
>kolor_tła</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>kt</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="wrapon">
|
|
<title
|
|
>zawijaj</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>zawijaj</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>zawijaj</screen>
|
|
Przy pomocy komendy <userinput
|
|
>zawijaj</userinput
|
|
> można <quote
|
|
>włączyć</quote
|
|
> <glossterm linkend="wrapping"
|
|
>zawijanie</glossterm
|
|
> płótna. Znaczenie terminu <glossterm linkend="wrapping"
|
|
>zawijania</glossterm
|
|
> znajduje się w słowniku.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="wrapoff">
|
|
<title
|
|
>nie_zawijaj</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>nie_zawijaj</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>nie_zawijaj</screen>
|
|
Przy pomocy komendy <userinput
|
|
>zawijaj</userinput
|
|
> można <quote
|
|
>wyłączyć</quote
|
|
> <glossterm linkend="wrapping"
|
|
>zawijanie</glossterm
|
|
> płótna. Oznacza to, że żółw może wyjść poza płótno i <quote
|
|
>zgubić się</quote
|
|
>. Znaczenie terminu <glossterm linkend="wrapping"
|
|
>zawijania</glossterm
|
|
> znajduje się w słowniku.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="clean">
|
|
<title
|
|
>Komendy czyszczenia</title>
|
|
<para
|
|
>Istnieją dwie komendy czyszczące płótno.</para>
|
|
<sect3 id="clear">
|
|
<title
|
|
>czyść (cs)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>czyść</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>czyść</screen>
|
|
Komenda <userinput
|
|
>czyść</userinput
|
|
> usuwa wszystkie rysunki z płótna. Pozostałe rzeczy zostają: pozycja i kąt ruchu żółwia, kolor płótna, widoczność żółwia, i rozmiar płótna. <userinput
|
|
>czyść</userinput
|
|
> może być użyta za pomocą skrótu <userinput
|
|
>cs</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="reset">
|
|
<title
|
|
>zeruj</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>zeruj</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>zeruj</screen>
|
|
Komenda<userinput
|
|
>zeruj</userinput
|
|
> czyści bardziej dokładnie niż komenda <userinput
|
|
>czyść</userinput
|
|
>. Po wykonaniu komendy <userinput
|
|
>zeruj</userinput
|
|
> płótno wygląda jak po rozpoczęciu pracy &kturtle;. Żółw umieszczony jest na środku ekranu, kolor płótna jest biały, żółw rysuje czarną linię.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="sprites">
|
|
<title
|
|
>Żółw jest sprajtem</title>
|
|
<para
|
|
>Najpierw krótkie wytłumaczenia czym jest sprajt: sprajty to małe obrazki, które mogą być przesuwane po ekranie, jak często to widzimy w grach komputerowych. Nasz żółwik jest także sprajtem. Dokładniejsze wyjaśnienie znajduje się w słowniku pod hasłem <glossterm linkend="sprites"
|
|
>sprajty</glossterm
|
|
>. </para>
|
|
<para
|
|
>Poniżej znajduje się pełen przegląd komend do pracy ze sprajtami.</para>
|
|
<para
|
|
>[Obecna wersja &kturtle; nie obsługuje jeszcze użycia sprajtów innych niż żółw. Kolejne wersje będą umożliwiać zmianę żółwia na coś zaprojektowanego przez siebie]</para>
|
|
<sect3 id="spriteshow">
|
|
<title
|
|
>pokaż</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>pokaż (pk)</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>pokaż</screen>
|
|
Komenda <userinput
|
|
>pokaż</userinput
|
|
> sprawia, że żółw staje się widoczny (gdy był ukryty). <userinput
|
|
>pokaż</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>pk</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="spritehide">
|
|
<title
|
|
>ukryj (uk)</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>ukryj</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>ukryj</screen>
|
|
Komenda <userinput
|
|
>ukryj</userinput
|
|
> sprawia, że żółw jest ukrywany. Opcja używana gdy żółw nie pasuje do rysunku. <userinput
|
|
>pokaż</userinput
|
|
> może być użyty za pomocą skrótu <userinput
|
|
>uk</userinput
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="writing">
|
|
<title
|
|
>Czy żółw może pisać?</title>
|
|
<para
|
|
>Odpowiedź brzmi: <quote
|
|
>tak</quote
|
|
>. Żółw potrafi pisać: wszystko co każe mu się pisać.</para>
|
|
<sect3 id="print">
|
|
<title
|
|
>pisz</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>pisz</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>pisz X</screen>
|
|
<userinput
|
|
>pisz</userinput
|
|
> każe żółwiowi pisać podany tekst na płótnie. <userinput
|
|
>pisz</userinput
|
|
> przyjmuje jako argumenty wejściowe liczy i łańcuchy znaków. Używając symbolu <quote
|
|
>+</quote
|
|
> można <userinput
|
|
>napisać</userinput
|
|
> kilka liczb i łańcuchów znaków. Oto mały przykład: <screen
|
|
>rok = 2003
|
|
autor = "Cies"
|
|
wypisuje autor + " rozpoczął projekt KTurtle w roku " + rok + " i dalej z radością nad nim pracuje!"
|
|
</screen>
|
|
</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="fontsize">
|
|
<title
|
|
>wielkość_czcionki</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>wielkość_czcionki</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>wielkość_czcionki X</screen>
|
|
<userinput
|
|
>wielkość_czcionki</userinput
|
|
> ustawia rozmiar czcionki używany przy<userinput
|
|
>wypisywaniu</userinput
|
|
>. <userinput
|
|
>wielkość_czcionki</userinput
|
|
> przyjmuje liczbę jako argument wejściowy. Rozmiar czcionki podawany jest w <glossterm linkend="pixels"
|
|
>pikselach</glossterm
|
|
>.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="random">
|
|
<title
|
|
>Komenda rzucająca kości za użytkownika</title>
|
|
<para
|
|
>Komenda rzucająca kości za użytkownika, nazywa się <userinput
|
|
>losowo</userinput
|
|
>, i jest bardzo użyteczna różnych przypadkach.</para>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>losowo</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>losowo X,Y</screen>
|
|
<userinput
|
|
>losowo</userinput
|
|
> przyjmuje argumenty wejściowe i daje argumenty wyjściowe. Jako argumenty wejściowe wymagane są dwie liczby, pierwsza (X) określa minimum argumentu wyjściowego, natomiast druga (Y) określa maksimum. Argument wyjściowy jest losowo wybraną liczbą z przedziału ograniczonego przez podane minimum i maksimum. Oto przykład: <screen>
|
|
powtórz 500 [
|
|
x = losowo 1,20
|
|
naprzód x
|
|
obróć_w_lewo 10 - x
|
|
]
|
|
</screen
|
|
> Używając komendy <userinput
|
|
>losowo</userinput
|
|
> można dodać odrobiny chaosu do programu.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="dialogs">
|
|
<title
|
|
>Argumenty wejściowe i pomoc przez okna dialogowe</title>
|
|
<para
|
|
>Okno dialogowe jest małym wyskakującym okienkiem, które zawiera pomoc dotyczącą argumentów wejściowych. &kturtle; posiada dwie komendy do okien dialogowych, mianowicie: <userinput
|
|
>wiadomość</userinput
|
|
> i <userinput
|
|
>okno_wejścia</userinput
|
|
></para>
|
|
<sect3 id="message">
|
|
<title
|
|
>wiadomość</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>wiadomość</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>wiadomość X</screen>
|
|
Komenda <userinput
|
|
>wiadomość</userinput
|
|
> przyjmuje jako argument wejściowy <link linkend="string"
|
|
>łańcuch znaków</link
|
|
>. Pokazuje się okno dialogowe zawierające tekst z <link linkend="string"
|
|
>łańcucha</link
|
|
>. <screen
|
|
>rok = 2003
|
|
autor = "Cies"
|
|
wypisuje autor + " rozpoczął projekt KTurtle w roku " + rok + " i dalej z radością nad nim pracuje!"
|
|
</screen>
|
|
</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
<sect3 id="inputwindow">
|
|
<title
|
|
>okno_wejścia</title>
|
|
<variablelist>
|
|
<varlistentry
|
|
>
|
|
<term
|
|
>okno_wejścia</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>okno_wejścia X</screen>
|
|
<userinput
|
|
>okno_wejścia</userinput
|
|
> jako argument wejściowy przyjmuje <link linkend="string"
|
|
>łańcuch znaków</link
|
|
>. Pokazuje się wyskakujące okno dialogowe zawierające tekst z łańcucha, tak jak <link linkend="message"
|
|
>wiadomość</link
|
|
>. Dodatkowo dodaje to pole wejściowe do okna. Przez to pole użytkownik może wprowadzić <link linkend="number"
|
|
>liczbę</link
|
|
> lub <link linkend="string"
|
|
>łańcuch</link
|
|
> który może być przechowywany w <link linkend="containers"
|
|
>kontenerze</link
|
|
>. Na przykład <screen>
|
|
wejście = okno_wejścia "Jaki jest Twój wiek?"
|
|
wyjście = 2003 - wejście
|
|
pisz "W 2003 będziesz mieć " + wyjście + " lat."
|
|
</screen
|
|
> Gdy użytkownik kasuje okno dialogowe, lub nie wprowadza niczego <link linkend="containers"
|
|
>kontener</link
|
|
> jest opróżniany.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="containers">
|
|
<title
|
|
>Kontenery</title>
|
|
<para
|
|
>Kontenery są znakami bądź wyrazami używanymi przez programistów do przechowywania liczb lub tekstu. Kontenery zawierające liczby nazywane są <link linkend="variables"
|
|
>zmiennymi</link
|
|
>, kontenery zawierające tekst nazywane są <link linkend="string"
|
|
>łańcuchami</link
|
|
>.</para>
|
|
|
|
<para
|
|
>Kontenery nie używane nie zawierają niczego. Przykład: <screen>
|
|
pisz N
|
|
</screen
|
|
> Nie zostanie wyświetlone nic. Jeżeli spróbujemy wykonać jakieś <link linkend="math"
|
|
>działanie matematyczne</link
|
|
> z pustym kontenerem pojawi się komunikat błędu. </para>
|
|
|
|
<sect2 id="variables">
|
|
<title
|
|
>Zmienne: kontenery liczbowe</title>
|
|
<para
|
|
>Rozpoczniemy od przykładu: <screen>
|
|
x = 3
|
|
pisz x
|
|
</screen
|
|
> W pierwszej linii litera <userinput
|
|
>x</userinput
|
|
> staje się zmienną (kontenerem liczbowym). Jak widać wartość zmiennej <userinput
|
|
>x</userinput
|
|
> ustawiona jest na 3. W drugiej linii wartość jest wypisywana.</para>
|
|
<para
|
|
>Jeżeli chcielibyśmy wypisać znak <quote
|
|
>x</quote
|
|
> powinniśmy napisać <screen
|
|
>pisz "x"
|
|
</screen>
|
|
</para>
|
|
<para
|
|
>To było łatwe, teraz trudniejszy przykład: <screen>
|
|
A = 2004
|
|
B = 25
|
|
C = A + B
|
|
|
|
# kolejna komenda wyświetli "2029"
|
|
pisz C
|
|
wstecz 30
|
|
# kolejna komenda wyświetli "2004 plus 25"
|
|
pisz A + " plus " + B
|
|
wstecz 30
|
|
# kolejna komenda wyświetli "1979"
|
|
pisz A - B
|
|
</screen
|
|
> W dwóch pierwszych linijkach zmienne <userinput
|
|
>A</userinput
|
|
> i <userinput
|
|
>B</userinput
|
|
> zostają ustawione na 2004 i 25. W trzeciej linii <userinput
|
|
>C</userinput
|
|
> zostaje ustawiona jako <userinput
|
|
>A + B</userinput
|
|
>, co wynosi 2029. Reszta przykładu składa się z 3 komend <userinput
|
|
>pisz</userinput
|
|
> z <userinput
|
|
>wstecz 30</userinput
|
|
> pomiędzy. <userinput
|
|
>wstecz 30</userinput
|
|
> zapewnia, że każde wyjście drukowane jest w nowej linii. W przykładzie można zaobserwować użycie zmiennych w <link linkend="math"
|
|
>obliczeniach matematycznych</link
|
|
>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="strings">
|
|
<title
|
|
>Kontenery zawierające tekst (łańcuchy)</title>
|
|
<para
|
|
>W kodzie programistycznym zwykły tekst rozpoczyna się i kończy zazwyczaj cudzysłowami. Do tej pory widzieliśmy: <screen>
|
|
pisz "Cześć programisto!"
|
|
</screen
|
|
> Tekst jest ograniczony cudzysłowami. Kawałki tego tekstu nazywamy <link linkend="strings"
|
|
>łańcuchami</link
|
|
>.</para>
|
|
<para
|
|
>Łańcuchy mogą być przechowywane w <link linkend="containers"
|
|
>kontenerach</link
|
|
> tak jak <link linkend="number"
|
|
>liczby</link
|
|
>. Łańcuchy są bardzo podobne do zmiennych. Największą różnicą jest to, że zamiast liczb zawierają tekst. Z tego powodu łańcuchy nie mogą być używane w <link linkend="math"
|
|
>wyrażeniach matematycznych</link
|
|
> i <link linkend="questions"
|
|
>pytaniach</link
|
|
>. Przykład użycia łańcuchów: <screen>
|
|
x = "Cześć "
|
|
imię = okno_wejścia "Podaj swoje imię..."
|
|
pisz x + imię + ", jak się masz?"
|
|
</screen
|
|
> W pierwszej linii <userinput
|
|
>x</userinput
|
|
> jest ustawiane jako <quote
|
|
>Cześć </quote
|
|
>. W drugiej linii łańcuch <userinput
|
|
>imię</userinput
|
|
> jest ustawiany jako wyjście komendy <userinput
|
|
>okno_wejścia</userinput
|
|
>. W kolejnej linii program wypisuje kompozycję trzech linii na płótnie.</para>
|
|
<para
|
|
>Program poprosi o podanie imienia. Po wprowadzeniu np. imienia <quote
|
|
>Paweł</quote
|
|
>, program wypisuje <quote
|
|
>Cześć Paweł jak się masz?</quote
|
|
>. Należy zauważyć, że plus (+) jest jedynym symbolem matematycznym używanym z łańcuchami.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="math">
|
|
<title
|
|
>Czy żółw zna matematykę?</title>
|
|
<para
|
|
>Tak, &kturtle; zna matematykę. Potrafi dodawać (+), odejmować (-), mnożyć (*), a także dzielić (/). Oto przykład, który korzysta ze wszystkich tych działań: <screen>
|
|
a = 20 - 5
|
|
b = 15 * 2
|
|
c = 30 / 30
|
|
d = 1 + 1
|
|
pisz "a: "+a+", b: "+b+", c: "+c+", d: "+d
|
|
</screen
|
|
> Czy wiesz jakie wartości mają zmienne a, b, c oraz d? Proszę zauważyć <link linkend="assignment"
|
|
>przypisanie wartości zmiennej</link
|
|
> za pomocą symbolu <userinput
|
|
>=</userinput
|
|
>.</para>
|
|
<para
|
|
>Chcąc dokonać prostego obliczenia wpisujemy po prostu: <screen
|
|
>pisz 2004-12
|
|
</screen
|
|
></para>
|
|
<para
|
|
>Teraz przykład z nawiasami: <screen>
|
|
pisz ( ( 20 - 5 ) * 2 / 30 ) + 1
|
|
</screen
|
|
> Wyrażenia wewnątrz nawiasów obliczane są najpierw. W tym przykładzie, najpierw zostanie obliczone 20-5, później pomnożone 2, podzielone przez 30, i zostanie dodane 1(co daje 2).</para>
|
|
</sect1>
|
|
|
|
<sect1 id="questions">
|
|
<title
|
|
>Zadawanie pytań, otrzymywanie odpowiedzi...</title>
|
|
<para
|
|
><link linkend="if"
|
|
><userinput
|
|
>jeśli</userinput
|
|
></link
|
|
> i <link linkend="while"
|
|
><userinput
|
|
>dopóki</userinput
|
|
></link
|
|
> są <link linkend="controlling-execution"
|
|
>instrukcjami sterującymi</link
|
|
> które będą omawiane w następnej sekcji. W tej sekcji używamy instrukcji <link linkend="if"
|
|
><userinput
|
|
>jeśli</userinput
|
|
></link
|
|
> by wyjaśnić zapytania.</para>
|
|
<sect2 id="q">
|
|
<title
|
|
>Zapytania</title>
|
|
<para
|
|
>Przykład prostego pytania: <screen>
|
|
x = 6
|
|
jeśli x > 5 [
|
|
pisz "cześć"
|
|
]
|
|
</screen
|
|
> Pytaniem w tym przykładzie jest <userinput
|
|
>x > 5</userinput
|
|
> . Jeżeli odpowiedź jest prawdziwa wykonywany jest kod w nawiasach. Zapytania są bardzo istotną częścią częścią programowania i są często używane z <link linkend="controlling-execution"
|
|
>instrukcjami sterującymi</link
|
|
>, jak np. <link linkend="if"
|
|
><userinput
|
|
>jeśli</userinput
|
|
></link
|
|
>. Wszystkie liczby i <link linkend="variables"
|
|
>zmienne</link
|
|
> (kontenery liczbowe) mogą być porównywane ze sobą przy pomocy zapytań.</para>
|
|
<para
|
|
>Poniżej znajdują się wszystkie możliwe pytania: <table>
|
|
<title
|
|
>Typy zapytań</title>
|
|
<tgroup cols="3">
|
|
<tbody>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>a == b</userinput
|
|
></entry>
|
|
<entry
|
|
>równa się</entry>
|
|
<entry
|
|
>odpowiedź jest <quote
|
|
>prawdą</quote
|
|
> gdy <userinput
|
|
>a</userinput
|
|
> równa się <userinput
|
|
>b</userinput
|
|
></entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>a != b</userinput
|
|
></entry>
|
|
<entry
|
|
>nie równe</entry>
|
|
<entry
|
|
>odpowiedź jest <quote
|
|
>prawdą</quote
|
|
> gdy <userinput
|
|
>a</userinput
|
|
> nie równa się <userinput
|
|
>b</userinput
|
|
></entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>a > b</userinput
|
|
></entry>
|
|
<entry
|
|
>większe niż</entry>
|
|
<entry
|
|
>odpowiedź jest <quote
|
|
>prawdą</quote
|
|
> gdy <userinput
|
|
>a</userinput
|
|
> jest większe niż <userinput
|
|
>b</userinput
|
|
></entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>a < b</userinput
|
|
></entry>
|
|
<entry
|
|
>mniejsze niż</entry>
|
|
<entry
|
|
>odpowiedź jest <quote
|
|
>prawdą</quote
|
|
> gdy <userinput
|
|
>a</userinput
|
|
> jest mniejsze niż <userinput
|
|
>b</userinput
|
|
></entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>a >= b</userinput
|
|
></entry>
|
|
<entry
|
|
>większe lub równe</entry>
|
|
<entry
|
|
>odpowiedź jest <quote
|
|
>prawdą</quote
|
|
> gdy <userinput
|
|
>a</userinput
|
|
> jest większe lub równe <userinput
|
|
>b</userinput
|
|
></entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>a <= b</userinput
|
|
></entry>
|
|
<entry
|
|
>mniejsze lub równe</entry>
|
|
<entry
|
|
>odpowiedź jest <quote
|
|
>prawdą</quote
|
|
> gdy <userinput
|
|
>a</userinput
|
|
> mniejsze lub równe <userinput
|
|
>b</userinput
|
|
></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
<para
|
|
>W <link linkend="the-code-editor"
|
|
>edytorze kodu</link
|
|
> pytania są <glossterm
|
|
>podświetlone</glossterm
|
|
> na kolor jasno niebieski.</para
|
|
>
|
|
</sect2>
|
|
|
|
<sect2 id="question-glue">
|
|
<title
|
|
>Łączniki pytań</title>
|
|
<para
|
|
>Wyrazy łączące pytania umożliwiają łączenie kilku małych pytań w jedno duże. <screen>
|
|
a = 1
|
|
b = 5
|
|
jeśli (a < 5) i (b == 5) [
|
|
pisz "cześć"
|
|
]
|
|
</screen
|
|
> W tym przykładzie wyraz łączący <userinput
|
|
>i</userinput
|
|
> jest użyty do połączenia dwóch pytań (<userinput
|
|
>a < 5</userinput
|
|
>, <userinput
|
|
>b == 5</userinput
|
|
>). Jeżeli po jednej stronie <userinput
|
|
>i</userinput
|
|
> odpowiedź będzie <quote
|
|
>fałszywa</quote
|
|
> odpowiedź na całe pytanie będzie <quote
|
|
>fałszem</quote
|
|
>, gdyż używając wyrazu <userinput
|
|
>i</userinput
|
|
> obie strony muszą być <quote
|
|
>prawdziwe</quote
|
|
> by całe pytanie było <quote
|
|
>prawdą</quote
|
|
>. Proszę nie zapominać o użyciu nawiasów wokół pytań!</para>
|
|
|
|
<para
|
|
>Poniżej znajduje się schematyczne wytłumaczenie: <table>
|
|
<title
|
|
>Wyrazy łączące pytania</title>
|
|
<tgroup cols="2">
|
|
<tbody>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>i</userinput
|
|
></entry>
|
|
<entry
|
|
>By wyrażenie było prawdziwe obie strony muszą być prawdziwe</entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>lub</userinput
|
|
></entry>
|
|
<entry
|
|
>By wyrażenie było prawdziwe, wystarczy by jedna strona była prawdziwa</entry>
|
|
</row>
|
|
<row>
|
|
<entry
|
|
><userinput
|
|
>nie</userinput
|
|
></entry>
|
|
<entry
|
|
>Wyjątkowy przypadek: działa jedynie z pytaniami! Zmienia prawdę na fałsz a fałsz na prawdę.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
<para
|
|
>W <link linkend="the-code-editor"
|
|
>edytorze kodu</link
|
|
> wyrazy łączące pytania są <glossterm
|
|
>podświetlone</glossterm
|
|
> na purpurowo.</para>
|
|
|
|
<sect3 id="and">
|
|
<title
|
|
>i</title>
|
|
<para
|
|
>Gdy dwa pytania są połączone za pomocą <userinput
|
|
>i</userinput
|
|
>, obie strony <userinput
|
|
>i</userinput
|
|
> muszą być prawdziwe by wynik był prawdziwy. Na przykład: <screen>
|
|
a = 1
|
|
b = 5
|
|
jeśli ((a < 10) i (b == 5)) i (a < b) [
|
|
pisz "cześć"
|
|
]
|
|
</screen
|
|
> W tym przykładzie można zaobserwować pytanie zagnieżdżone w pytaniu.</para>
|
|
</sect3>
|
|
|
|
<sect3 id="or">
|
|
<title
|
|
>lub</title>
|
|
<para
|
|
>Gdy jedno z dwóch wyrażeń połączonych wyrazem <userinput
|
|
>lub</userinput
|
|
> jest prawdziwe wynik jest prawdziwy. Na przykład: <screen>
|
|
a = 1
|
|
b = 5
|
|
jeśli ((a < 10) lub (b == 10)) lub (a == 0) [
|
|
pisz "cześć"
|
|
]
|
|
</screen
|
|
> W tym przykładzie można zaobserwować pytanie zagnieżdżone w pytaniu.</para>
|
|
</sect3>
|
|
|
|
<sect3 id="not">
|
|
<title
|
|
>nie</title>
|
|
<para
|
|
><userinput
|
|
>nie</userinput
|
|
> jest specjalnym wyrazem, gdyż odnosi się tylko do jednego wyrażenia. <userinput
|
|
>nie</userinput
|
|
> zamienia fałsz na prawdę a prawdę na fałsz. Na przykład: <screen>
|
|
a = 1
|
|
b = 5
|
|
jeśli nie ((a < 10) i (b == 5)) [
|
|
pisz "cześć"
|
|
] przeciwnie [
|
|
pisz "nie cześć ;-)"
|
|
]
|
|
</screen
|
|
> W tym przykładzie wyrażenie jest prawdziwe, ale <userinput
|
|
>nie</userinput
|
|
> zamienia je na fałszywe. Więc na końcu na<link linkend="the-canvas"
|
|
>płótnie</link
|
|
><userinput
|
|
>"nie cześć ;-)"</userinput
|
|
>.</para>
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="controlling-execution">
|
|
<title
|
|
>Kontola wykonywania</title>
|
|
<para
|
|
>Kontrolery wykonania umożliwiają użytkownikowi sterowanie wykonywaniem programu przez —.</para>
|
|
<para
|
|
>Komendy kontrolujące wykonanie programu <glossterm
|
|
>podświetlone</glossterm
|
|
> są na ciemnozielony kolor oraz mają pogrubioną czcionkę. Nawiasy kwadratowe używane są głównie z komendami kontrolującymi wykonanie i są <glossterm
|
|
>podświetlone</glossterm
|
|
> na jasno zielono.</para>
|
|
|
|
<sect2 id="wait">
|
|
<title
|
|
>Zatrzymanie żółwia</title>
|
|
<para
|
|
>Napisawszy jakiś program w &kturtle; można zauważyć, że żółw bardzo szybko wykonuje rysunki. Poniższa komenda zatrzymuje żółwia na określoną ilość czasu.</para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term
|
|
>czekaj</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>czekaj X</screen>
|
|
<userinput
|
|
>czekaj</userinput
|
|
> zatrzymuje żółwia na X sekund. <screen>
|
|
powtórz 36 [
|
|
naprzód 5
|
|
obróć_w_prawo 10
|
|
czekaj 0.5
|
|
]
|
|
</screen
|
|
> Kod powoduje rysowanie okręgu, ale po każdym kroku żółw zatrzymuje się na pół sekundy. Daje to wrażenie poruszania się żółwia w zwolnionym tempie.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="if">
|
|
<title
|
|
>Instrukcja "jeśli"</title>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term
|
|
>jeśli</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>jeśli <link linkend="questions"
|
|
>pytanie</link
|
|
> [ ... ]</screen>
|
|
Kod umieszczony w nawiasach jest wykonywany jedynie wtedy gdy <userinput
|
|
>jeśli</userinput
|
|
> wartość <link linkend="questions"
|
|
>wyrażenia</link
|
|
> jest <quote
|
|
>prawdziwa</quote
|
|
>. Więcej informacji na temat <link linkend="questions"
|
|
>wyrażeń</link
|
|
> znaleźć można w <link linkend="questions"
|
|
>sekcji wyrażenia</link
|
|
>. <screen>
|
|
x = 6
|
|
jeśli x > 5 [
|
|
pisz "x jest większe niż pięć!"
|
|
]
|
|
</screen
|
|
> W pierwszej linijce <userinput
|
|
>x</userinput
|
|
> jest ustawiane jako 6. W drugiej linijce, znajduje się <link linkend="questions"
|
|
>pytanie</link
|
|
> <userinput
|
|
>x > 5</userinput
|
|
>. Jako, że wyrażenie to jest <quote
|
|
>prawdziwe</quote
|
|
> kontroler wykonania <userinput
|
|
>jeśli</userinput
|
|
> zezwala na wykonanie kodu w nawiasie.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="while">
|
|
<title
|
|
>Pętla "dopóki"</title>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term
|
|
>dopóki</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>dopóki <link linkend="questions"
|
|
>wyrażenie</link
|
|
> [ ... ]</screen>
|
|
Wyrażenie sterujące <userinput
|
|
>dopóki</userinput
|
|
> jest podobne do <link linkend="if"
|
|
><userinput
|
|
>jeśli</userinput
|
|
></link
|
|
>. Różnica polega na tym, że <userinput
|
|
>dopóki</userinput
|
|
> powtarza wykonywanie kodu między nawiasami dopóki wartość <link linkend="questions"
|
|
>wyrażenia</link
|
|
> nie będzie <quote
|
|
>fałszywa</quote
|
|
>. <screen>
|
|
x = 1
|
|
dopóki x < 5 [
|
|
naprzód 10
|
|
czekaj 1
|
|
x = x + 1
|
|
]
|
|
</screen
|
|
> W pierwszej linii zmienna <userinput
|
|
>x</userinput
|
|
> ustawiana jest na 1. W drugiej linii znajduje się <link linkend="questions"
|
|
>wyrażenie</link
|
|
> <userinput
|
|
>x < 5</userinput
|
|
>. Jako, że wyrażenie to jest <quote
|
|
>prawdziwe</quote
|
|
> wyrażenie sterujące <userinput
|
|
>dopóki</userinput
|
|
> rozpoczyna wykonywanie kodu między nawiasami dopóki wartość <link linkend="questions"
|
|
>wyrażenia</link
|
|
> nie będzie <quote
|
|
>fałszywa</quote
|
|
>. W tym przypadku kod w nawiasie zostanie wykonany 4 razy, gdyż po każdym wykonaniu piątej linii <userinput
|
|
>x</userinput
|
|
> wzrasta o 1.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="else">
|
|
<title
|
|
>Jeżeli nie, innymi słowami: "przeciwnie"</title>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term
|
|
>przeciwnie</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>jeśli wyrażenie [ ... ] przeciwnie [ ... ]</screen>
|
|
<userinput
|
|
>przeciwnie</userinput
|
|
> może być użyte w dodatku do wyrażenia sterującego <link linkend="if"
|
|
><userinput
|
|
>jeśli</userinput
|
|
></link
|
|
>. Kod pomiędzy nawiasami po <userinput
|
|
>przeciwnie</userinput
|
|
> zostanie tylko wtedy gdy wartość <link linkend="questions"
|
|
>wyrażenia</link
|
|
> jest <quote
|
|
>fałszywa</quote
|
|
>. <screen>
|
|
zeruj
|
|
x = 4
|
|
jeśli x > 5 [
|
|
pisz "x jest większe niż pięć!"
|
|
] przeciwnie [
|
|
pisz "x jest mniejsze niż 6!"
|
|
]
|
|
</screen
|
|
> <link linkend="questions"
|
|
>Wyrażenie</link
|
|
> sprawdza czy <userinput
|
|
>x</userinput
|
|
> jest większy niż 5. Ponieważ w pierwszej linijce <userinput
|
|
>x</userinput
|
|
> wynosi 4, wartość wyrażenia jest <quote
|
|
>fałszywa</quote
|
|
>. Oznacza to, że kod w nawiasach po <userinput
|
|
>przeciwnie</userinput
|
|
> zostanie wykonany.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="for">
|
|
<title
|
|
>Pętla "dla", pętla zliczająca</title>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term
|
|
>dla</term>
|
|
<listitem
|
|
><para
|
|
><screen
|
|
>dla <userinput
|
|
>punkt początkowy</userinput
|
|
> do <userinput
|
|
>punkt końcowy</userinput
|
|
> [ ... ]</screen>
|
|
Pętla <userinput
|
|
>dla</userinput
|
|
> jest <quote
|
|
>pętlą zliczającą</quote
|
|
>, &ie; zlicza za użytkownika. <screen>
|
|
dla x = 1 do 10 [
|
|
pisz x * 7
|
|
naprzód 15
|
|
]
|
|
</screen
|
|
> Za każdym razem gdy kod w nawiasach jest wykonywany wartość zmiennej <userinput
|
|
>x</userinput
|
|
> zwiększa się o 1, dopóki zmienna <userinput
|
|
>x</userinput
|
|
> nie osiągnie wartości 10. Kod w nawiasach wypisuje wartość zmiennej <userinput
|
|
>x</userinput
|
|
> pomnożonej przez 7. Po wykonaniu programu na płótnie będzie można zobaczyć tabele wielokrotności liczby 7.</para
|
|
></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="learn">
|
|
<title
|
|
>Tworzenie własnych komend za pomocą <quote
|
|
>nauczyciela</quote
|
|
></title>
|
|
<para
|
|
><userinput
|
|
>nauczyciel</userinput
|
|
> jest specjalną komendą, służącą do tworzenia własnych komend. Utworzone komendy mogą przyjmować argumenty <glossterm linkend="input-output"
|
|
>wejściowe</glossterm
|
|
> i zwracać <glossterm linkend="input-output"
|
|
>argumenty wyjściowe</glossterm
|
|
>. Zobaczmy jak tworzone są nowe komendy: <screen>
|
|
poznaj okrąg x [
|
|
powtórz 36 [
|
|
naprzód x
|
|
obróć_w_lewo 10
|
|
]
|
|
]
|
|
</screen
|
|
> Nowa komenda zostanie nazwana <userinput
|
|
>okrąg</userinput
|
|
>. <userinput
|
|
>okrąg</userinput
|
|
> oczekuje jednego <glossterm linkend="input-output"
|
|
>argumentu wejściowego</glossterm
|
|
>, liczby określającej rozmiar okręgu. <userinput
|
|
>okrąg</userinput
|
|
> nie zwraca żadnego <glossterm linkend="input-output"
|
|
>argumentu wyjściowego</glossterm
|
|
>. Komenda <userinput
|
|
>okrąg</userinput
|
|
> może być teraz używana jak normalna komenda w reszcie kodu. Oto przykład: <screen
|
|
>poznaj okrąg X [
|
|
powtórz 36 [
|
|
naprzód X
|
|
obróć_w_lewo 10
|
|
]
|
|
]
|
|
|
|
idź 30,30
|
|
okrąg 20
|
|
|
|
idź 40,40
|
|
okrąg 50
|
|
</screen>
|
|
</para>
|
|
<para
|
|
>W następnym przykładzie tworzona jest komenda zwracająca wartość. <screen>
|
|
zeruj
|
|
|
|
poznaj pomnóżPrzezSiebie n [
|
|
r = n * 1
|
|
r = n * n
|
|
powrót r
|
|
]
|
|
i = okno_wejścia "Proszę wprowadzić liczbę i wcisnąć Enter"
|
|
pisz i + " pomnożone przez siebie daje: " + pomnóżPrzezSiebie i
|
|
</screen
|
|
> W przykładzie tworzona jest komenda <userinput
|
|
>pomnóżPrzezSiebie</userinput
|
|
>. Argument wejściowy komendy jest mnożony przez siebie i zwracany, za pomocą komendy <anchor id="return"/><userinput
|
|
>powrót</userinput
|
|
>. Komenda <userinput
|
|
>powrót</userinput
|
|
> umożliwia zwrócenie wartość z utworzonej własnej funkcji. </para>
|
|
</sect1>
|
|
|
|
</chapter>
|