Warning, /education/kturtle/po/pl/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.

0001 <chapter id="reference">
0002 <title
0003 >Dokumentacja programistyczna języka &turtlescript;</title>
0004 <para
0005 >To jest dokumentacja &turtlescript;. W pierwszej części tego rozdziału poznasz reguły  <link linkend="grammar"
0006 >składni</link
0007 > programów pisanych w &turtlescript;. Druga część opisuje wyłącznie <link linkend="mathematical-operators"
0008 >operatory matematyczne</link
0009 >, <link linkend="boolean-operators"
0010 >operatory logiczne (prawda/fałsz)</link
0011 > i <link linkend="comparing-operators"
0012 >operatory porównania</link
0013 >. Trzecia część to po prostu wielki wykaz wszystkich <link linkend="commands"
0014 >poleceń</link
0015 > omówionych po kolei. Część czwarta wyjaśnia jak <link linkend="assignment-of-variables"
0016 >przypisać</link
0017 > wartości do <link linkend="assignment-of-variables"
0018 >zmiennych</link
0019 >. Na koniec, w części piątej wyjaśnimy, jak zorganizować wykonanie poleceń używając <link linkend="controlling-execution"
0020 >elementów sterujących</link
0021 > oraz w części szóstej jak tworzyć własne polecenia z użyciem  <link linkend="learn"
0022 >poznaj</link
0023 >.</para>
0024 
0025 <sect1 id="grammar">
0026 <title
0027 >Składnia &turtlescript;</title>
0028 <para
0029 >Podobnie jak inne języki, &turtlescript; posiada różne typy słów i symboli. W języku polskim rozróżniamy czasowniki (przykładowo 'chodzić', czy 'śpiewać') i rzeczowniki (jak 'siostra' lub 'dom'), których używamy do różnych celów. &turtlescript; jest językiem programowania, który jest wykorzystywany do nauczenia &kturtle;, co ma robić.</para>
0030 <para
0031 >W tej części niektóre typy słów i symboli języka &turtlescript; zostaną krótko omówione. Wyjaśnimy <link linkend="comment"
0032 >komentarze</link
0033 >, <link linkend="command"
0034 >polecenia</link
0035 > i trzy rodzaje danych: <link linkend="number"
0036 >liczby</link
0037 >, <link linkend="string"
0038 >teksty</link
0039 > i <link linkend="boolean-value"
0040 >wartości logiczne (prawda/fałsz)</link
0041 >.</para>
0042 
0043 
0044 <sect2 id="comment">
0045 <title
0046 >Komentarze</title>
0047 <para
0048 >Program zawiera instrukcje, które są wykonywane podczas działania programu i tzw. komentarze. Komentarze nie są wykonywane, &kturtle; po prostu ignoruje je, kiedy program jest wykonywany. Komentarze są po to, aby ułatwić innym programistom zrozumienie Twojego programu. W języku &turtlescript; wszystko za znakiem <userinput
0049 >#</userinput
0050 > jest uznane za komentarz. Dla przykładu program, który nic nie robi: <screen>
0051 # ten mały program nic nie robi, to tylko komentarz!
0052 </screen
0053 >Jest on trochę bezużyteczny, ale świetnie wyjaśnia zasadę.</para>
0054 <para
0055 >Komentarze są bardzo użyteczne, kiedy program staje się trochę bardziej skomplikowany. To może pomóc innym programistom. W poniższym programie widać komentarze użyte razem z poleceniem <link linkend="print"
0056 >pisz</link
0057 >.<screen>
0058 # ten program został napisany przez Cies Breijs.
0059 pisz "ten tekst zostanie wypisany na płótnie"
0060 # poprzedni wiersz nie jest komentarzem, ale następny jest:
0061 # pisz "ten tekst nie zostanie wypisany!"
0062 </screen
0063 > Pierwszy wiersz opisuje program. Drugi jest wykonany przez &kturtle;, który wypisuje <userinput
0064 >ten tekst zostanie wypisany na płótnie</userinput
0065 > na płótnie. Trzeci wiersz to komentarz. Czwarty też jest komentarzem, który zawiera w sobie polecenie języka &turtlescript;. Jeśli symbol <userinput
0066 >#</userinput
0067 > zostanie usunięty z ostatniego wiersza, to polecenie pisz zostanie wykonane przez  &kturtle;. Programiści mówią: polecenie pisz z czwartego wiersza zostało 'odkomentarzowane'.</para>
0068 <para
0069 >W <link linkend="the-editor"
0070 >edytorze kodów</link
0071 > komentarze są <glossterm
0072 >podświetlone</glossterm
0073 > na kolor jasnoszary.</para>
0074 </sect2>
0075 
0076 <sect2 id="command">
0077 <title
0078 >Polecenia</title>
0079 <para
0080 >Używając poleceń mówisz żółwiowi lub programowi &kturtle;, co ma robić. Niektóre polecenia wymagają wejścia, niektóre zwracają wyjście. <screen>
0081 # naprzód jest poleceniem wymagającym wejścia, tutaj test to liczba 100:
0082 naprzód 100
0083 </screen
0084 > Pierwszy wiersz to <link linkend="comment"
0085 >komentarz</link
0086 >. Drugi zawiera polecenie <userinput
0087 >naprzód</userinput
0088 > i  <link linkend="number"
0089 >liczbę</link
0090 > <userinput
0091 >100</userinput
0092 >.  Liczba nie jest częścią polecenia, jest to wejście polecenia.</para>
0093 <para
0094 >Szczegółowy opis wszystkich poleceń &kturtle; znajduje się <link linkend="commands"
0095 >tutaj</link
0096 >. Wbudowane polecenia są  <glossterm
0097 >podświetlane</glossterm
0098 > kolorem ciemnoniebieskim.</para>
0099 </sect2>
0100 
0101 <sect2 id="number">
0102 <title
0103 >Liczby</title>
0104 <para
0105 >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>
0106 <para
0107 >Mamy liczby naturalne: <userinput
0108 >0</userinput
0109 >, <userinput
0110 >1</userinput
0111 >, <userinput
0112 >2</userinput
0113 >, <userinput
0114 >3</userinput
0115 >, <userinput
0116 >4</userinput
0117 >, <userinput
0118 >5</userinput
0119 >, itd. Liczby ujemne: <userinput
0120 >-1</userinput
0121 >, <userinput
0122 >-2</userinput
0123 >, <userinput
0124 >-3</userinput
0125 >, itd. Oraz liczby dziesiętne np: <userinput
0126 >0.1</userinput
0127 >, <userinput
0128 >3.14</userinput
0129 >, <userinput
0130 >33.3333</userinput
0131 >, <userinput
0132 >-5.05</userinput
0133 >, <userinput
0134 >-1.0</userinput
0135 >. </para>
0136 <para
0137 >Liczby mogą być używane z <link linkend="mathematical-operators"
0138 >operatorami matematycznymi</link
0139 > i <link linkend="comparing-operators"
0140 >operatorami porównania</link
0141 >. Możesz je również przechowywać w <link linkend="assignment-of-variables"
0142 >zmiennych</link
0143 >. Liczby są <glossterm
0144 >podświetlane</glossterm
0145 > kolorem ciemnoczerwonym.</para>
0146 </sect2>
0147 
0148 <!-- constants like pi? -->
0149 
0150 <sect2 id="string">
0151 <title
0152 >Teksty</title>
0153 <para
0154 >Najpierw przykład: <screen>
0155 pisz "Cześć, Jestem tekstem."
0156 </screen
0157 > W tym przykładzie <userinput
0158 >pisz</userinput
0159 > jest poleceniem, a <userinput
0160 >"Cześć, Jestem tekstem."</userinput
0161 > tekstem. Tekst zaczyna i kończy się znakiem <userinput
0162 >"</userinput
0163 >, dzięki niemu &kturtle; rozpoznaje tekst.</para>
0164 <para
0165 >Teksty mogą być umieszczane w <link linkend="assignment-of-variables"
0166 >zmiennych</link
0167 >, tak jak <link linkend="number"
0168 >liczby</link
0169 >, ale w przeciwieństwie do nich, teksty nie mogą być używane z <link linkend="mathematical-operators"
0170 >operatorami matematycznymi</link
0171 > i <link linkend="comparing-operators"
0172 >operatorami porównania</link
0173 >. Teksty są <glossterm
0174 >podświetlone</glossterm
0175 > kolorem czerwonym.</para>
0176 </sect2>
0177 
0178 <sect2 id="boolean-value">
0179 <title
0180 >Wartości logiczne (prawda/fałsz)</title>
0181 <para
0182 >Są tylko dwie wartości logiczne: <userinput
0183 >prawda</userinput
0184 > i <userinput
0185 >fałsz</userinput
0186 >. Czasami są nazywane: włączone i wyłączone, tak i nie, jeden i zero, ale w języku &turtlescript; nazywamy je zawsze <userinput
0187 >prawda</userinput
0188 > i <userinput
0189 >fałsz</userinput
0190 >. Spójrz na ten fragment kodu &turtlescript;: <screen>
0191 $a = prawda
0192 </screen
0193 > Patrząc na <link linkend="the-inspector"
0194 >podgląd</link
0195 > zobaczysz, że <link linkend="assignment-of-variables"
0196 >zmienna</link
0197 > <userinput
0198 >$a</userinput
0199 > ma wartość <userinput
0200 >prawda</userinput
0201 > i typ "wartość logiczna".</para>
0202 <para
0203 >Często wartości logiczne są wyjściem <link linkend="comparing-operators"
0204 >operatorów porównania</link
0205 >, tak jak w poniższym fragmencie kodu &turtlescript;: <screen>
0206 $odpowiedź = 10 &gt; 3
0207 </screen
0208 > <link linkend="assignment-of-variables"
0209 >Zmienna</link
0210 > <userinput
0211 >$odpowiedź</userinput
0212 > na wartość <userinput
0213 >prawda</userinput
0214 >, ponieważ <userinput
0215 >10</userinput
0216 > jest większe od <userinput
0217 >3</userinput
0218 >.</para>
0219 <para
0220 >Wartości logiczne, <userinput
0221 >prawda</userinput
0222 > i <userinput
0223 >fałsz</userinput
0224 >, są <glossterm
0225 >podświetlone</glossterm
0226 > kolorem ciemnoczerwonym.</para>
0227 </sect2>
0228 
0229 </sect1>
0230 
0231 
0232 
0233 <sect1 id="operators">
0234 <title
0235 >Operatory matematyczne, logiczne i porównania</title>
0236 <para
0237 >Tytuł tej części może brzmieć tajemniczo, ale to tylko pozory.</para>
0238 
0239 <sect2 id="mathematical-operators">
0240 <title
0241 >Operatory matematyczne</title>
0242 <para
0243 >Rozpoznawane są proste operatory matematyczne takie jak: dodawanie (<userinput
0244 >+</userinput
0245 >), odejmowanie (<userinput
0246 >-</userinput
0247 >), mnożenie (<userinput
0248 >*</userinput
0249 >), dzielenie (<userinput
0250 >/</userinput
0251 >) i potęgowanie (<userinput
0252 >^</userinput
0253 >).</para>
0254 
0255 <para
0256 >Oto prosty przykład użycia operatorów matematycznych w języku &turtlescript;: <screen>
0257 $dodawanie     = 1 + 1
0258 $odejmowanie   = 20 - 5
0259 $mnożenie      = 15 * 2
0260 $dzielenie     = 30 / 30
0261 $potęgowanie   = 2 ^ 2
0262 </screen
0263 > Rezultaty działań zostały <link linkend="assignment-of-variables"
0264 >przypisane</link
0265 > do <link linkend="assignment-of-variables"
0266 >zmiennych</link
0267 >. Używając <link linkend="the-inspector"
0268 >podglądu</link
0269 > możesz zobaczyć ich wartości.</para>
0270 <para
0271 >Chcąc dokonać prostego obliczenia wpisujemy po prostu: <screen
0272 >pisz 2010-12
0273 </screen
0274 ></para>
0275 <para
0276 >Teraz przykład z nawiasami: <screen>
0277 pisz ( ( 20 - 5 ) * 2 / 30 ) + 1
0278 </screen
0279 > 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). Nawiasy mogą być użyte także w innych sytuacjach.</para>
0280 <para
0281 >&kturtle; posiada także bardziej zaawansowane działania w formie poleceń. Spójrz na poniższe polecenia, pamiętaj, że dotyczą zaawansowanych operacji: <link linkend="round"
0282 >zaokrąglij</link
0283 >, <link linkend="random"
0284 >los</link
0285 >, <link linkend="sqrt"
0286 >sqrt</link
0287 > , <link linkend="pi"
0288 >pi</link
0289 >, <link linkend="sin"
0290 >sin</link
0291 >, <link linkend="cos"
0292 >cos</link
0293 >, <link linkend="tan"
0294 >tan</link
0295 >, <link linkend="arcsin"
0296 >arcsin</link
0297 >, <link linkend="arccos"
0298 >arccos</link
0299 >, <link linkend="arctan"
0300 >arctan</link
0301 >.</para>
0302 </sect2>
0303 
0304 <sect2 id="boolean-operators">
0305 <title
0306 >Operatory logiczne (prawda/fałsz)</title>
0307 <para
0308 ><link linkend="mathematical-operators"
0309 >Operatory matematyczne</link
0310 > są stosowane głównie do <link linkend="number"
0311 >liczb</link
0312 >, a operatory logiczne do <link linkend="boolean-value"
0313 >wartości logicznych</link
0314 > (<userinput
0315 >prawda</userinput
0316 > i <userinput
0317 >fałsz</userinput
0318 >). Są tylko trzy operatory logiczne, mianowicie: <userinput
0319 >i</userinput
0320 >, <userinput
0321 >lub</userinput
0322 > oraz <userinput
0323 >nie</userinput
0324 >. Poniższy fragment kodu &turtlescript; pokazuje, jak je stosować: <screen>
0325 $i_1_1 = prawda i prawda  # -> prawda
0326 $i_1_0 = prawda i fałsz   # -> fałsz
0327 $i_0_1 = fałsz i prawda   # -> fałsz
0328 $i_0_0 = fałsz i fałsz    # -> fałsz
0329 
0330 $lub_1_1 = prawda lub prawda  # ->prawda
0331 $lub_1_0 = prawda lub fałsz   # -> prawda
0332 $lub_0_1 = fałsz lub prawda   # -> prawda
0333 $lub_0_0 = fałsz lub fałsz    # -> fałsz
0334 
0335 $nie_1 = nie prawda  # -> fałsz
0336 $nie_0 = nie fałsz   # -> prawda
0337 </screen
0338 > Używając <link linkend="the-inspector"
0339 >podglądu</link
0340 > zobaczysz wartości, ponadto dopisaliśmy je w małych komentarzach na  końcach wierszy. <userinput
0341 >i</userinput
0342 > zwraca <userinput
0343 >prawda</userinput
0344 > tylko, kiedy po oby stronach jest <userinput
0345 >prawda</userinput
0346 >. <userinput
0347 >lub</userinput
0348 > zwraca <userinput
0349 >prawda</userinput
0350 > jeśli przynajmniej jedna strona to <userinput
0351 >prawda</userinput
0352 >. Operator <userinput
0353 >nie</userinput
0354 > zamienia <userinput
0355 >prawda</userinput
0356 > na <userinput
0357 >fałsz</userinput
0358 > oraz <userinput
0359 >fałsz</userinput
0360 > na <userinput
0361 >prawda</userinput
0362 >.</para>
0363 <para
0364 >Operatory logiczne są <glossterm
0365 >podświetlone</glossterm
0366 > kolorem różowym.</para>
0367 
0368 <sect3 id="boolean-operators-advanced-examples">
0369 <title
0370 >Więcej, bardziej zaawansowanych przykładów</title>
0371 <para
0372 >Przemyśl poniższy przykład, który korzysta z <userinput
0373 >i</userinput
0374 >: <screen>
0375 $a = 1
0376 $b = 5
0377 jeśli (($a &lt; 10) i ($b == 5)) i ($a &lt; $b) {
0378   pisz "cześć"
0379 }
0380 </screen
0381 > W tym fragmencie programu &turtlescript; trzy wyniki <link linkend="comparing-operators"
0382 >operatorów porównania</link
0383 > są połączone operatorem <userinput
0384 >i</userinput
0385 >. To znaczy, że wszystkie trzy muszą mieć wartość "prawda", aby wypisać napis "cześć".</para>
0386 
0387 <para
0388 >Przykład z użyciem <userinput
0389 >lub</userinput
0390 >: <screen>
0391 $n = 1
0392 jeśli ($n &lt; 10) lub ($n == 2) {
0393   pisz "cześć"
0394 }
0395 </screen
0396 > W tym programie &turtlescript; lewa strona <userinput
0397 >lub</userinput
0398 > ma wartość 'prawda', a prawa 'fałsz'. Ponieważ chociaż jedna strona operatora <userinput
0399 >lub</userinput
0400 > ma wartość 'prawda', <userinput
0401 >lub</userinput
0402 > zwraca prawda. To znaczy, że napis "cześć" jest wypisany.</para>
0403 
0404 <para
0405 >Ostatni przykład, tym razem z użyciem operatora <userinput
0406 >nie</userinput
0407 >, który zmienia "prawda" na "fałsz" i "fałsz" na "prawda". Spójrz: <screen
0408 >$n = 1
0409 jeśli nie ($n == 3) {
0410   pisz "cześć"
0411 } jeśliNie {
0412   pisz "nie cześć ;-)"
0413 }
0414 </screen
0415 ></para>
0416 </sect3>
0417 </sect2>
0418 
0419 <sect2 id="comparing-operators">
0420 <title
0421 >Operatory porównania</title>
0422 <para
0423 >Rozważ te proste porównanie: <screen>
0424 $odpowiedź = 10 &gt; 3
0425 </screen
0426 > Tutaj <userinput
0427 >10</userinput
0428 > jest porównane z <userinput
0429 >3</userinput
0430 > poprzez operator "większy od". Wynik tego porównania to  <link linkend="boolean-value"
0431 >wartość logiczna</link
0432 > <userinput
0433 >prawda</userinput
0434 >, która jest przypisana do <link linkend="assignment-of-variables"
0435 >zmiennej</link
0436 > <userinput
0437 >$odpowiedź</userinput
0438 >.</para>
0439 <para
0440 >Wszystkie <link linkend="number"
0441 >liczby</link
0442 > i <link linkend="assignment-of-variables"
0443 >zmienne</link
0444 > (zawierające liczby) mogą być porównywane dzięki operatorom porównania.</para>
0445 <para
0446 >Oto wszystkie możliwe operatory porównania: <table
0447 > <title
0448 >Typy pytań</title
0449 > <tgroup cols="3"
0450 > <tbody
0451 > <row
0452 > <entry
0453 ><userinput
0454 >$A == $B</userinput
0455 ></entry
0456 > <entry
0457 >równy</entry
0458 > <entry
0459 >wynikiem jest <quote
0460 >prawda</quote
0461 >, kiedy <userinput
0462 >$A</userinput
0463 > jest równe <userinput
0464 >$B</userinput
0465 ></entry
0466 > </row
0467 > <row
0468 > <entry
0469 ><userinput
0470 >$A != $B</userinput
0471 ></entry
0472 > <entry
0473 >nierówny</entry
0474 > <entry
0475 >wynikiem jest <quote
0476 >prawda</quote
0477 >, kiedy <userinput
0478 >$A</userinput
0479 > jest różne od <userinput
0480 >$B</userinput
0481 ></entry
0482 > </row
0483 > <row
0484 > <entry
0485 ><userinput
0486 >$A &gt; $B</userinput
0487 ></entry
0488 > <entry
0489 >większe od</entry
0490 > <entry
0491 > wynikiem jest <quote
0492 >prawda</quote
0493 >, kiedy <userinput
0494 >$A</userinput
0495 > jest większe od <userinput
0496 >$B</userinput
0497 ></entry
0498 > </row
0499 > <row
0500 > <entry
0501 ><userinput
0502 >$A &lt; $B</userinput
0503 ></entry
0504 > <entry
0505 >mniejsze od</entry
0506 > <entry
0507 >wynikiem jest <quote
0508 >prawda</quote
0509 >, kiedy <userinput
0510 >$A</userinput
0511 > jest mniejsze od <userinput
0512 >$B</userinput
0513 ></entry
0514 > </row
0515 > <row
0516 > <entry
0517 ><userinput
0518 >$A &gt;= $B</userinput
0519 ></entry
0520 > <entry
0521 >większe od lub równe</entry
0522 > <entry
0523 >wynikiem jest <quote
0524 >prawda</quote
0525 >, kiedy <userinput
0526 >$A</userinput
0527 > jest większe lub równe <userinput
0528 >$B</userinput
0529 ></entry
0530 > </row
0531 > <row
0532 > <entry
0533 ><userinput
0534 >$A &lt;= $B</userinput
0535 ></entry
0536 > <entry
0537 >mniejsze od lub równe</entry
0538 > <entry
0539 >wynikiem jest <quote
0540 >prawda</quote
0541 >, kiedy <userinput
0542 >$A</userinput
0543 > jest mniejsze lub  równe <userinput
0544 >$B</userinput
0545 ></entry
0546 > </row
0547 > </tbody
0548 > </tgroup
0549 > </table
0550 > Pamiętaj, że $A i $B muszą być <link linkend="number"
0551 >liczbami</link
0552 > lub <link linkend="assignment-of-variables"
0553 >zmiennymi</link
0554 >, które zawierają liczby.</para>
0555 </sect2>
0556 
0557 
0558 </sect1>
0559 
0560 
0561 
0562 <sect1 id="commands">
0563 <title
0564 >Polecenia</title>
0565 <para
0566 >Używając poleceń mówimy żółwiowi lub &kturtle; by wykonywał konkretne rozkazy. Niektóre polecenia wymagają argumentów wyjściowych, a niektóre dają coś na wyjściu. W tej sekcji wyjaśniamy działanie wszystkich wbudowanych poleceń używanych przez &kturtle;. Możesz również użyć <link linkend="learn"
0567 >poznaj</link
0568 > do tworzenia własnych poleceń. Wbudowane polecenia są <glossterm
0569 >podświetlone</glossterm
0570 > kolorem ciemnoniebieskim.</para>
0571 
0572 <sect2 id="moving-the-turtle">
0573 <title
0574 >Poruszanie żółwia</title>
0575 <para
0576 >Do poruszania żółwia po ekranie służy kilka poleceń.</para>
0577 
0578   <variablelist>
0579     <anchor id="forward"/>
0580     <varlistentry
0581 > 
0582       <term
0583 >naprzód (np)<indexterm
0584 ><primary
0585 >naprzód (np)</primary
0586 ></indexterm
0587 ></term>
0588       <listitem
0589 ><para
0590 ><screen
0591 >naprzód X</screen>
0592 <userinput
0593 >naprzód</userinput
0594 > przesuwa żółwia do przodu o X pikseli. Gdy ołówek jest skierowany w dół żółw zostawia ślad. <userinput
0595 >naprzód</userinput
0596 > może być użyty za pomocą skrótu <userinput
0597 >np</userinput
0598 ></para
0599 ></listitem>
0600     </varlistentry>
0601   </variablelist>
0602   <variablelist>
0603     <anchor id="backward"/>
0604     <varlistentry
0605 >  
0606       <term
0607 >wstecz (ws)<indexterm
0608 ><primary
0609 >wstecz (ws)</primary
0610 ></indexterm
0611 ></term>
0612       <listitem
0613 ><para
0614 ><screen
0615 >wstecz X</screen>
0616 <userinput
0617 >wstecz</userinput
0618 > przesuwa żółwia do tyłu o X pikseli. Gdy ołówek jest skierowany w dół żółw zostawia ślad. <userinput
0619 >wstecz</userinput
0620 > może być użyty za pomocą skrótu <userinput
0621 >ws</userinput
0622 >.</para
0623 ></listitem>
0624     </varlistentry>
0625   </variablelist>
0626   <variablelist>
0627     <anchor id="turnleft"/>
0628     <varlistentry
0629 > 
0630       <term
0631 >lewo (lw)<indexterm
0632 ><primary
0633 >lewo (lw)</primary
0634 ></indexterm
0635 ></term>
0636       <listitem
0637 ><para
0638 ><screen
0639 >lewo X</screen>
0640 <userinput
0641 >lewo</userinput
0642 > powoduje, że żółw skręca w lewo o X stopni. <userinput
0643 >lewo</userinput
0644 > może być użyty za pomocą skrótu <userinput
0645 >lw</userinput
0646 >.</para
0647 ></listitem>
0648     </varlistentry>
0649   </variablelist>
0650   <variablelist>
0651     <anchor id="turnright"/>
0652     <varlistentry
0653 > 
0654       <term
0655 >prawo (pw)<indexterm
0656 ><primary
0657 >prawo (pw)</primary
0658 ></indexterm
0659 ></term>
0660       <listitem
0661 ><para
0662 ><screen
0663 >prawo X</screen>
0664 <userinput
0665 >prawo</userinput
0666 > powoduje, że żółw skręca w prawo o X stopni. <userinput
0667 >prawo</userinput
0668 > może być użyty za pomocą skrótu <userinput
0669 >pw</userinput
0670 >.</para
0671 ></listitem>
0672     </varlistentry>
0673   </variablelist>
0674   <variablelist>
0675     <anchor id="direction"/>
0676     <varlistentry
0677 > 
0678       <term
0679 >ustalKierunek (uk)<indexterm
0680 ><primary
0681 >ustalKierunek (uk)</primary
0682 ></indexterm
0683 ></term>
0684       <listitem
0685 ><para
0686 ><screen
0687 >ustalKierunek X</screen>
0688 <userinput
0689 >ustalKierunek</userinput
0690 > ustawia kierunek ruchu żółwia na X stopni licząc od zera, nie wiąże się to z poprzednim kierunkiem ruchu żółwia. <userinput
0691 >ustalKierunek</userinput
0692 > może być użyty za pomocą skrótu <userinput
0693 >uk</userinput
0694 >.</para
0695 ></listitem>
0696     </varlistentry>
0697   </variablelist>
0698   <variablelist>
0699     <anchor id="center"/>
0700     <varlistentry
0701 > 
0702       <term
0703 >środek<indexterm
0704 ><primary
0705 >środek</primary
0706 ></indexterm
0707 ></term>
0708       <listitem
0709 ><para
0710 ><screen
0711 >środek</screen>
0712 <userinput
0713 >środek</userinput
0714 > przesuwa żółwia na środek płótna.</para
0715 ></listitem>
0716     </varlistentry>
0717   </variablelist>
0718   <variablelist>
0719     <anchor id="go"/>
0720     <varlistentry
0721 > 
0722       <term
0723 >idź<indexterm
0724 ><primary
0725 >idź</primary
0726 ></indexterm
0727 ></term>
0728       <listitem
0729 ><para
0730 ><screen
0731 >idź X,Y</screen>
0732 Polecenie <userinput
0733 >idź</userinput
0734 > przesuwa żółwia na wskazaną lokalizację na płótnie. Ta lokalizacja to X <glossterm linkend="pixels"
0735 >pikseli</glossterm
0736 > od lewej strony płótna oraz Y <glossterm linkend="pixels"
0737 >pikseli</glossterm
0738 > od góry płótna. </para
0739 ></listitem>
0740     </varlistentry>
0741   </variablelist>
0742   <variablelist>
0743     <anchor id="gox"/>
0744     <varlistentry
0745 > 
0746       <term
0747 >idźx<indexterm
0748 ><primary
0749 >idźx</primary
0750 ></indexterm
0751 ></term>
0752       <listitem
0753 ><para
0754 ><screen
0755 >idźx X</screen>
0756 <userinput
0757 >idźx</userinput
0758 > powoduje przesunięcie żółwia do pozycji X <glossterm linkend="pixels"
0759 >pikseli</glossterm
0760 > od lewej strony płótna, podczas gdy wysokość pozostaje bez zmiany.</para
0761 ></listitem>
0762     </varlistentry>
0763   </variablelist>
0764   <variablelist>
0765     <anchor id="goy"/>
0766     <varlistentry
0767 > 
0768       <term
0769 >idźy<indexterm
0770 ><primary
0771 >idźy</primary
0772 ></indexterm
0773 ></term>
0774       <listitem
0775 ><para
0776 ><screen
0777 >idźy Y</screen>
0778 <userinput
0779 >idźy</userinput
0780 > powoduje przesunięcie żółwia do pozycji Y <glossterm linkend="pixels"
0781 >pikseli</glossterm
0782 > od góry płótna, podczas gdy odległość od lewego brzegu pozostaje bez zmian.</para
0783 ></listitem>
0784     </varlistentry>
0785   </variablelist>
0786   <note
0787 ><para
0788 >Polecenia <userinput
0789 >idź</userinput
0790 >, <userinput
0791 >idźx</userinput
0792 >, <userinput
0793 >idźy</userinput
0794 > i <userinput
0795 >środek</userinput
0796 > nie rysują linii, niezależnie od tego, czy pisak jest włączony, czy nie.</para>
0797   </note>
0798 </sect2>
0799 
0800 <sect2 id="locate-the-turtle">
0801 <title
0802 >Gdzie jest żółw?</title>
0803 <para
0804 >Istnieją dwa polecenia, zwracające pozycję żółwia na ekranie.</para>
0805 
0806   <variablelist>
0807     <anchor id="getx"/>
0808     <varlistentry
0809 > 
0810       <term
0811 >pozx<indexterm
0812 ><primary
0813 >pozx</primary
0814 ></indexterm
0815 ></term>
0816       <listitem
0817 ><para
0818 ><userinput
0819 >pozx</userinput
0820 > zwraca liczbę pikseli od lewej na płótnie do bieżącej pozycji żółwia.</para
0821 ></listitem>
0822     </varlistentry>
0823   </variablelist>
0824   <variablelist>
0825     <anchor id="gety"/>
0826     <varlistentry
0827 > 
0828       <term
0829 >pozy<indexterm
0830 ><primary
0831 >pozy</primary
0832 ></indexterm
0833 ></term>
0834       <listitem
0835 ><para
0836 ><userinput
0837 >pozy</userinput
0838 > zwraca liczbę pikseli od góry płótna do bieżącej pozycji żółwia.</para
0839 ></listitem>
0840     </varlistentry>
0841   </variablelist>
0842 </sect2>
0843 
0844 <sect2 id="pen">
0845 <title
0846 >Żółw posiada ołówek</title>
0847 <para
0848 >Żółw posiada ołówek, który rysuje linię gdy żółw się przesuwa. Istnieje kilka poleceń zarządzających ołówkiem. W tej sekcji wyjaśniamy te polecenia.</para>
0849   <variablelist>
0850     <anchor id="penup"/>
0851     <varlistentry
0852 > 
0853       <term
0854 >podnieś (pod)<indexterm
0855 ><primary
0856 >podnieś (pod)</primary
0857 ></indexterm
0858 ></term>
0859       <listitem
0860 ><para
0861 ><screen
0862 >podnieś</screen>
0863 <userinput
0864 >podnieś</userinput
0865 > podnosi ołówek z płótna. Gdy ołówek jest <quote
0866 >podniesiony</quote
0867 >, nie będzie rysowana linia w czasie poruszania się żółwia. Zobacz także <userinput
0868 >opuść</userinput
0869 >. <userinput
0870 >podnieś</userinput
0871 > może być użyte za pomocą skrótu <userinput
0872 >pod</userinput
0873 >.</para
0874 ></listitem>
0875     </varlistentry>
0876   </variablelist>
0877   <variablelist>
0878     <anchor id="pendown"/>
0879     <varlistentry
0880 > 
0881       <term
0882 >opuść (opu)<indexterm
0883 ><primary
0884 >opuść (opu)</primary
0885 ></indexterm
0886 ></term>
0887       <listitem
0888 ><para
0889 ><screen
0890 >opuść</screen>
0891 <userinput
0892 >opuść</userinput
0893 > kładzie ołówek na płótnie. Gdy ołówek jest <quote
0894 >położony</quote
0895 >, będzie rysowana linia w czasie poruszania się żółwia. Zobacz także <userinput
0896 >podnieś</userinput
0897 >. <userinput
0898 >opuść</userinput
0899 > może być użyte za pomocą skrótu <userinput
0900 >opu</userinput
0901 >.</para
0902 ></listitem>
0903     </varlistentry>
0904   </variablelist>
0905   <variablelist>
0906     <anchor id="setpenwidth"/>
0907     <varlistentry
0908 > 
0909       <term
0910 >ustalGrubość (ugp)<indexterm
0911 ><primary
0912 >ustalGrubość (ugp)</primary
0913 ></indexterm
0914 ></term>
0915       <listitem
0916 ><para
0917 ><screen
0918 >ustalGrubość X</screen>
0919 <userinput
0920 >ustalGrubość</userinput
0921 > ustawia grubość ołówka (grubość rysowanej linii) na X <glossterm linkend="pixels"
0922 >pikseli</glossterm
0923 >. <userinput
0924 >ustalGrubość</userinput
0925 > może być użyte za pomocą skrótu <userinput
0926 >ugp</userinput
0927 >.</para
0928 ></listitem>
0929     </varlistentry>
0930   </variablelist>
0931   <variablelist>
0932     <anchor id="setfgcolor"/>
0933     <varlistentry
0934 > 
0935       <term
0936 >ustalKolPis (ukp)<indexterm
0937 ><primary
0938 >ustalKolPis (ukp)</primary
0939 ></indexterm
0940 ></term>
0941       <listitem
0942 ><para
0943 ><screen
0944 >ustalKolPis R,G,B</screen>
0945 <userinput
0946 >ustalKolPis</userinput
0947 > ustawia kolor ołówka. <userinput
0948 >ustalKolPis</userinput
0949 > przyjmuje <glossterm linkend="rgb"
0950 >kombinację RGB</glossterm
0951 > jako argument wejściowy. <userinput
0952 >ustalKolPis</userinput
0953 > może być użyty za pomocą skrótu <userinput
0954 >ukp</userinput
0955 >.</para
0956 ></listitem>
0957     </varlistentry>
0958   </variablelist>
0959 </sect2>
0960 
0961 <sect2 id="canvas">
0962 <title
0963 >Polecenia do zarządzania płótnem</title>
0964 <para
0965 >Istnieje kilka poleceń sterujących płótnem.</para>
0966   <variablelist>
0967     <anchor id="resizecanvas"/>
0968     <varlistentry>
0969       <term
0970 >ustalRozmiar (urt)<indexterm
0971 ><primary
0972 >ustalRozmiar (urt)</primary
0973 ></indexterm
0974 ></term>
0975       <listitem
0976 ><para
0977 ><screen
0978 >ustalRozmiar X,Y</screen>
0979 Za pomocą polecenia <userinput
0980 >ustalRozmiar</userinput
0981 > można ustawić rozmiar płótna. Polecenie przyjmuje jako argumenty wejściowe liczby X i Y, gdzie X jest nową szerokością płótna w <glossterm linkend="pixels"
0982 >pikselach</glossterm
0983 >, a Y jest nową wysokością płótna w <glossterm linkend="pixels"
0984 >pikselach</glossterm
0985 >. <userinput
0986 >ustalRozmiar</userinput
0987 > może być użyte za pomocą skrótu <userinput
0988 >urt</userinput
0989 >.</para
0990 ></listitem>
0991     </varlistentry>
0992   </variablelist>
0993   <variablelist>
0994     <anchor id="setbgcolor"/>
0995     <varlistentry
0996 > 
0997       <term
0998 >ustalKolTła (ukt)<indexterm
0999 ><primary
1000 >ustalKolTła (ukt)</primary
1001 ></indexterm
1002 ></term>
1003       <listitem
1004 ><para
1005 ><screen
1006 >ustalKolTła R,G,B</screen>
1007 Polecenie <userinput
1008 >ustalKolTła</userinput
1009 > ustawia kolor płótna. <userinput
1010 >ustalKolTła</userinput
1011 > przyjmuje <glossterm linkend="rgb"
1012 >kombinację RGB</glossterm
1013 > jako argument wejściowy. <userinput
1014 >ustalKolTła</userinput
1015 > może być użyty za pomocą skrótu <userinput
1016 >ukt</userinput
1017 >.</para
1018 ></listitem>
1019     </varlistentry>
1020   </variablelist>
1021 </sect2>
1022 
1023 <sect2 id="clean">
1024 <title
1025 >polecenia czyszczenia</title>
1026 <para
1027 >Istnieją dwa polecenia czyszczące płótno.</para>
1028   <variablelist>
1029     <anchor id="clear"/>
1030     <varlistentry
1031 > 
1032       <term
1033 >zmaż (cbg)<indexterm
1034 ><primary
1035 >zmaż (cbg)</primary
1036 ></indexterm
1037 ></term>
1038       <listitem
1039 ><para
1040 ><screen
1041 >zmaż</screen>
1042 Polecenie <userinput
1043 >zmaż</userinput
1044 > 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.</para
1045 ></listitem>
1046     </varlistentry>
1047   </variablelist>
1048   <variablelist>
1049     <anchor id="reset"/>
1050     <varlistentry
1051 > 
1052       <term
1053 >czyść<indexterm
1054 ><primary
1055 >czyść</primary
1056 ></indexterm
1057 ></term>
1058       <listitem
1059 ><para
1060 ><screen
1061 >czyść</screen>
1062 Polecenie <userinput
1063 >czyść</userinput
1064 > czyści bardziej dokładnie niż polecenie <userinput
1065 >zmaż</userinput
1066 >. Po wykonaniu polecenia <userinput
1067 >czyść</userinput
1068 > 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ę na płótnie, a rozmiar płótna jest ustawiony na 400 x 400 pikseli.</para
1069 ></listitem>
1070     </varlistentry>
1071   </variablelist>
1072 </sect2>
1073 
1074 <sect2 id="sprites">
1075 <title
1076 >Żółw jest sprajtem</title>
1077 <para
1078 >Najpierw krótkie wytłumaczenie, 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"
1079 >sprajty</glossterm
1080 >. </para>
1081 <para
1082 >Poniżej znajduje się pełen przegląd poleceń do pracy ze sprajtami.</para>
1083 <para
1084 >[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>
1085   <variablelist>
1086     <anchor id="spriteshow"/>
1087     <varlistentry
1088 > 
1089       <term
1090 >pokaż (pż)<indexterm
1091 ><primary
1092 >pokaż (pż)</primary
1093 ></indexterm
1094 ></term>
1095       <listitem
1096 ><para
1097 ><screen
1098 >pokaż</screen>
1099 Polecenie <userinput
1100 >pokaż</userinput
1101 > sprawia, że żółw staje się widoczny (gdy był ukryty). <userinput
1102 >pokaż</userinput
1103 > może być użyty za pomocą skrótu <userinput
1104 >pż</userinput
1105 >.</para
1106 ></listitem>
1107     </varlistentry>
1108   </variablelist>
1109   <variablelist>
1110     <anchor id="spritehide"/>
1111     <varlistentry
1112 > 
1113       <term
1114 >ukryj (sż)<indexterm
1115 ><primary
1116 >ukryj (sż)</primary
1117 ></indexterm
1118 ></term>
1119       <listitem
1120 ><para
1121 ><screen
1122 >ukryj</screen>
1123 Polecenie <userinput
1124 >ukryj</userinput
1125 > sprawia, że żółw jest ukrywany. Opcja używana gdy żółw nie pasuje do rysunku. <userinput
1126 >ukryj</userinput
1127 > może być użyty za pomocą skrótu <userinput
1128 >sż</userinput
1129 >.</para
1130 ></listitem>
1131     </varlistentry>
1132   </variablelist>
1133 </sect2>
1134 
1135 <sect2 id="writing">
1136 <title
1137 >Czy żółw może pisać?</title>
1138 <para
1139 >Odpowiedź brzmi: <quote
1140 >tak</quote
1141 >. Żółw potrafi pisać: wszystko co każe mu się pisać.</para>
1142   <variablelist>
1143     <anchor id="print"/>
1144     <varlistentry
1145 > 
1146       <term
1147 >pisz<indexterm
1148 ><primary
1149 >pisz</primary
1150 ></indexterm
1151 ></term>
1152       <listitem
1153 ><para
1154 ><screen
1155 >pisz X</screen>
1156 <userinput
1157 >pisz</userinput
1158 > każe żółwiowi pisać podany tekst na płótnie. <userinput
1159 >pisz</userinput
1160 > przyjmuje jako argumenty wejściowe liczby i/lub teksty. Używając symbolu <quote
1161 >+</quote
1162 > można <userinput
1163 >napisać</userinput
1164 > kilka liczb i tekstów. Oto mały przykład: <screen
1165 >$rok = 2003
1166 $autor = "Cies"
1167 pisz $autor + " rozpoczął projekt KTurtle w roku " + $rok + " i dalej z radością nad nim pracuje!"
1168 </screen>
1169       </para
1170 ></listitem>
1171     </varlistentry>
1172   </variablelist>
1173   <variablelist>
1174     <anchor id="fontsize"/>
1175     <varlistentry
1176 > 
1177       <term
1178 >rozmiarTekstu<indexterm
1179 ><primary
1180 >rozmiarTekstu</primary
1181 ></indexterm
1182 ></term>
1183       <listitem
1184 ><para
1185 ><screen
1186 >rozmiarTekstu X</screen>
1187 <userinput
1188 >rozmiarTekstu</userinput
1189 > ustawia rozmiar czcionki używany przy poleceniu <userinput
1190 >pisz</userinput
1191 >. <userinput
1192 >rozmiarTekstu</userinput
1193 > przyjmuje liczbę jako argument wejściowy. Rozmiar czcionki podawany jest w <glossterm linkend="pixels"
1194 >pikselach</glossterm
1195 >.</para
1196 ></listitem>
1197     </varlistentry>
1198   </variablelist>
1199 </sect2>
1200 
1201 <sect2 id="math-commands">
1202 <title
1203 >Polecenia matematyczne</title>
1204 <para
1205 >Poniższe polecenia programu &kturtle; służą do bardziej zaawansowanych operacji matematycznych.</para>
1206   <variablelist>
1207     <anchor id="round"/>
1208     <varlistentry>
1209       <term
1210 >zaokrąglij<indexterm
1211 ><primary
1212 >zaokrąglij</primary
1213 ></indexterm
1214 ></term>
1215       <listitem
1216 ><para
1217 ><screen
1218 >zaokrąglij(x)</screen>
1219 <userinput
1220 >zaokrąglij</userinput
1221 > daną liczbę do najbliższej liczby całkowitej. <screen>
1222 pisz zaokrąglij(10.8)
1223 naprzód 20
1224 pisz zaokrąglij(10.3)
1225 </screen
1226 >Ten kod spowoduje wypisanie przez żółwia liczb 11 i 10.</para
1227 ></listitem>
1228     </varlistentry>
1229   </variablelist>
1230   <variablelist>
1231     <anchor id="random"/>
1232     <varlistentry
1233 > 
1234       <term
1235 >losowa (los)<indexterm
1236 ><primary
1237 >losowa (los)</primary
1238 ></indexterm
1239 ></term>
1240       <listitem
1241 ><para
1242 ><screen
1243 >losowa X,Y</screen>
1244 <userinput
1245 >losowa</userinput
1246 > 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>
1247 powtórz 500 {
1248   $x = losowa 1,20
1249   naprzód $x
1250   lewo 10 - $x
1251 }
1252 </screen
1253 > Używając polecenia <userinput
1254 >losowa</userinput
1255 > można dodać odrobiny chaosu do programu.</para
1256 ></listitem>
1257     </varlistentry>
1258   </variablelist>
1259   <variablelist>
1260     <anchor id="sqrt"/>
1261     <varlistentry
1262 > 
1263       <term
1264 >sqrt<indexterm
1265 ><primary
1266 >sqrt</primary
1267 ></indexterm
1268 ></term>
1269       <listitem
1270 ><para
1271 ><screen
1272 >sqrt X</screen>
1273 Polecenie <userinput
1274 >sqrt</userinput
1275 > służy do znalezienia pierwiastka kwadratowego liczby X.</para
1276 ></listitem>
1277     </varlistentry>
1278   </variablelist>
1279 <!--
1280   <variablelist>
1281     <anchor id="exp"/>
1282     <varlistentry
1283 > 
1284       <term
1285 >exp<indexterm
1286 ><primary
1287 >exp</primary
1288 ></indexterm
1289 ></term>
1290       <listitem
1291 ><para
1292 ><screen
1293 >sqrt X</screen>
1294       </para
1295 ></listitem>
1296     </varlistentry>
1297   </variablelist>
1298 -->
1299   <variablelist>
1300     <anchor id="pi"/>
1301     <varlistentry
1302 > 
1303       <term
1304 >pi<indexterm
1305 ><primary
1306 >pi</primary
1307 ></indexterm
1308 ></term>
1309       <listitem
1310 ><para
1311 ><screen
1312 >pi</screen>
1313 To polecenie zwraca stałą Pi, czyli <userinput
1314 >3.14159</userinput
1315 >.</para
1316 ></listitem>
1317     </varlistentry>
1318   </variablelist>
1319   <variablelist>
1320     <anchor id="sin"/>
1321     <anchor id="cos"/>
1322     <anchor id="tan"/>
1323     <varlistentry>
1324       <term
1325 >sin<indexterm
1326 ><primary
1327 >sin</primary
1328 ></indexterm
1329 >, cos<indexterm
1330 ><primary
1331 >cos</primary
1332 ></indexterm
1333 >, tan<indexterm
1334 ><primary
1335 >tan</primary
1336 ></indexterm
1337 ></term>
1338       <listitem
1339 ><para>
1340 <screen
1341 >sin X
1342 cos X
1343 tan X
1344 </screen>
1345 Te trzy polecenia reprezentują znane na całym świecie funkcje trygonometryczne <userinput
1346 >sin</userinput
1347 >, <userinput
1348 >cos</userinput
1349 > i <userinput
1350 >tan</userinput
1351 >. Wejściem tych poleceń jest <link linkend="number"
1352 >liczba</link
1353 > X.</para
1354 ></listitem>
1355     </varlistentry>
1356   </variablelist>
1357   <variablelist>
1358     <anchor id="arcsin"/>
1359     <anchor id="arccos"/>
1360     <anchor id="arctan"/>
1361     <varlistentry>
1362       <term
1363 >arcsin<indexterm
1364 ><primary
1365 >arcsin</primary
1366 ></indexterm
1367 >, arccos<indexterm
1368 ><primary
1369 >arccos</primary
1370 ></indexterm
1371 >, arctan<indexterm
1372 ><primary
1373 >arctan</primary
1374 ></indexterm
1375 ></term>
1376       <listitem
1377 ><para>
1378 <screen
1379 >arcsin X
1380 arccos X
1381 arctan X
1382 </screen>
1383 Te trzy polecenia są odwrotnościami funkcji <link linkend="sin"
1384 >sin</link
1385 >, <link linkend="cos"
1386 >cos</link
1387 > i <link linkend="tan"
1388 >tan</link
1389 >. Wejściem tych poleceń jest <link linkend="number "
1390 >liczba</link
1391 > X.</para
1392 ></listitem>
1393     </varlistentry>
1394   </variablelist>
1395 </sect2>
1396 
1397 <sect2 id="dialogs">
1398 <title
1399 >Argumenty wejściowe i pomoc przez okna dialogowe</title>
1400 <para
1401 >Okno dialogowe jest małym, wyskakującym okienkiem, które zawiera pomoc dotyczącą argumentów wejściowych. &kturtle; posiada dwa polecenia do okien dialogowych, mianowicie: <userinput
1402 >wiadomość</userinput
1403 > i <userinput
1404 >spytaj</userinput
1405 ></para>
1406   <variablelist>
1407     <anchor id="message"/>
1408     <varlistentry
1409 > 
1410       <term
1411 >wiadomość<indexterm
1412 ><primary
1413 >wiadomość</primary
1414 ></indexterm
1415 ></term>
1416       <listitem
1417 ><para
1418 ><screen
1419 >wiadomość X</screen>
1420 Polecenie <userinput
1421 >wiadomość</userinput
1422 > przyjmuje jako argument wejściowy <link linkend="string"
1423 >tekst</link
1424 >. Pokazuje się okno dialogowe zawierające właśnie ten <link linkend="string"
1425 >tekst</link
1426 >. <screen
1427 >wiadomość "Cies rozpoczął projekt KTurtle w roku 2003 i dalej z radością nad nim pracuje!"
1428 </screen>
1429       </para
1430 ></listitem>
1431     </varlistentry>
1432   </variablelist>
1433   <variablelist>
1434     <anchor id="ask"/>
1435     <varlistentry
1436 > 
1437       <term
1438 >spytaj<indexterm
1439 ><primary
1440 >spytaj</primary
1441 ></indexterm
1442 ></term>
1443       <listitem
1444 ><para
1445 ><screen
1446 >spytaj X</screen>
1447 <userinput
1448 >spytaj</userinput
1449 > przyjmuje jako wejście <link linkend="string"
1450 >tekst</link
1451 >. Pokazuje go w oknie dialogowym (podobnie jak <link linkend="message"
1452 >wiadomość</link
1453 >), ale zawiera dodatkowo pole wejściowe. Po wpisaniu tam przez użytkownika <link linkend="number"
1454 >liczby</link
1455 > lub <link linkend="string"
1456 >tekstu</link
1457 >, zostanie on zapisany do <link linkend="assignment-of-variables"
1458 >zmiennej</link
1459 > lub zwrócony jako wejście dla innego <link linkend="commands"
1460 >polecenia</link
1461 >. Na przykład: <screen>
1462 $wejście = spytaj "W którym roku się urodziłeś?"
1463 $wyjście = 2003 - $wejście
1464 pisz "W 2003 roku miałeś " + $wyjście + " lat."
1465 </screen
1466 > Jeśli użytkownik anuluje okno lub nie wprowadzi  nic, <link linkend="assignment-of-variables"
1467 >zmienna</link
1468 > będzie pusta.</para
1469 ></listitem>
1470     </varlistentry>
1471   </variablelist>
1472 </sect2>
1473 
1474 </sect1>
1475 
1476 
1477 
1478 <sect1 id="assignment-of-variables">
1479 <title
1480 >Przypisanie do zmiennych</title>
1481 <para
1482 >Najpierw zobaczmy jak wyglądają zmienne, a później jak przypisywać do nich wartości. </para>
1483 
1484 <para
1485 >Zmienne są słowami, które zaczynają się znakiem <quote
1486 >$</quote
1487 >, w <link linkend="the-editor"
1488 >edytorze</link
1489 > są <glossterm
1490 >podświetlone</glossterm
1491 > kolorem purpurowym.</para>
1492 
1493 <para
1494 >Zmienne mogą przechowywać <link linkend="number"
1495 >liczby</link
1496 >, <link linkend="string"
1497 >teksty</link
1498 > lub <link linkend="boolean-value"
1499 >wartości logiczne (prawda/fałsz)</link
1500 >. Dzięki przypisaniu, <userinput
1501 >=</userinput
1502 >,  zmienne zyskują wartość. Przechowują ją, dopóki program działa lub do czasu, kiedy zostanie przypisana inna wartość.</para>
1503 
1504 <para
1505 >Możesz używać raz przypisanych zmiennych, jakby były wartościami.  Przykładowo jak w poniższym fragmencie kodu &turtlescript;: <screen>
1506 $x = 10
1507 $x = $x / 3
1508 pisz $x
1509 </screen
1510 > Na początku do zmiennej <userinput
1511 >$x</userinput
1512 > jest przypisana liczba <userinput
1513 >10</userinput
1514 >. Później <userinput
1515 >$x</userinput
1516 > jest nadpisana jej wartością podzieloną przez <userinput
1517 >3</userinput
1518 > &mdash;  <userinput
1519 >$x</userinput
1520 >, czyli wynikiem działania <userinput
1521 >10 / 3</userinput
1522 >. Na koniec <userinput
1523 >$x</userinput
1524 > jest wypisywana. W wierszu drugim i  trzecim możesz zobaczyć jak <userinput
1525 >$x</userinput
1526 > jest użyte jako wartość.</para>
1527 
1528 <para
1529 >Zmienne muszą mieć przypisane wartości, przed użyciem. Na przykład: <screen>
1530 wypisz $n
1531 </screen
1532 > Wystąpi błąd przy wykonaniu.</para>
1533 
1534 <para
1535 >Zwróć uwagę na następujący fragment kodu &turtlescript;: <screen>
1536 $a = 2004
1537 $b = 25
1538 
1539 # następne polecenie wypisze "2029"
1540 pisz $a + $b
1541 wstecz 30
1542 # następne polecenie wypisze "2004 plus 25 równa się 2029"
1543 pisz $a + " plus " + $b + " równa się " + ($a + $b)
1544 </screen
1545 > W pierwszych dwóch wierszach do <userinput
1546 >$a</userinput
1547 > i <userinput
1548 >$b</userinput
1549 > są przypisane na 2004 i 25. Następnie są dwa polecenia <userinput
1550 >pisz</userinput
1551 > oraz <userinput
1552 >wstecz 30</userinput
1553 > pomiędzy nimi. Komentarze przed <userinput
1554 >pisz</userinput
1555 > wyjaśniają, co mają robić.  Polecenie <userinput
1556 >wstecz 30</userinput
1557 > sprawia, że każde wypisanie jest w osobnym wierszu. Jak widzisz zmienne mogą być użyte, jak to co zawierają, mogą być łączone z każdego rodzaju <link linkend="operators"
1558 >operatorami</link
1559 > lub być wejściem przy wywołaniu <link linkend="commands"
1560 >poleceń</link
1561 >.</para>
1562 
1563 <para
1564 >Jeszcze jeden przykład: <screen>
1565 $imię = spytaj "Jakie jest Twoje imię?"
1566 pisz "Cześć " + $imię + "! Powodzenia w w czasie nauki  programowania..."
1567 </screen
1568 > Całkiem prosty. Ponownie możesz zobaczyć jak zmienna <userinput
1569 >$imię</userinput
1570 > jest traktowana jak tekst.</para>
1571 
1572 <para
1573 >Kiedy używasz zmiennych, <link linkend="the-inspector"
1574 >podgląd</link
1575 > jest bardzo pomocny. Pokazuje wartości zmiennych, które są aktualnie używane.</para>
1576 </sect1>
1577 
1578 
1579 
1580 <sect1 id="controlling-execution">
1581 <title
1582 >Kontrola wykonywania</title>
1583 <para
1584 >Kontrolery wykonania umożliwiają użytkownikowi sterowanie wykonywaniem programu przez &mdash;.</para>
1585 <para
1586 >Polecenia kontrolujące wykonanie programu  <glossterm
1587 >podświetlone</glossterm
1588 > są na ciemnozielony kolor oraz mają pogrubioną czcionkę. Nawiasy używane są głównie z poleceniami kontrolującymi wykonanie i są <glossterm
1589 >podświetlone</glossterm
1590 > na czarno.</para>
1591 
1592 <sect2 id="wait">
1593 <title
1594 >Zatrzymanie żółwia</title>
1595 <para
1596 >Napisawszy jakiś program w &kturtle; można zauważyć, że żółw bardzo szybko wykonuje rysunki. Poniższe polecenie zatrzymuje żółwia na określoną ilość czasu.</para>
1597   <variablelist>
1598     <varlistentry>
1599       <term
1600 >czekaj<indexterm
1601 ><primary
1602 >czekaj</primary
1603 ></indexterm
1604 ></term>
1605       <listitem
1606 ><para
1607 ><screen
1608 >czekaj X</screen>
1609 <userinput
1610 >czekaj</userinput
1611 > zatrzymuje żółwia na X sekund. <screen>
1612 powtórz 36 {
1613   naprzód 5
1614   prawo 10
1615   czekaj 0.5
1616 }
1617 </screen
1618 > 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
1619 ></listitem>
1620     </varlistentry>
1621   </variablelist>
1622 </sect2>
1623 
1624 <sect2 id="if">
1625 <title
1626 >Instrukcja "jeśli"</title>
1627   <variablelist>
1628     <varlistentry>
1629       <term
1630 >jeśli<indexterm
1631 ><primary
1632 >jeśli</primary
1633 ></indexterm
1634 ></term>
1635       <listitem
1636 ><para
1637 ><screen
1638 >if <link linkend="boolean-value"
1639 >wartość logiczna</link
1640 > { ... }</screen>
1641 Kod umieszczony w nawiasach jest wykonywany jedynie wtedy,  <userinput
1642 >jeśli</userinput
1643 > <link linkend="boolean-value"
1644 >wartość logiczna</link
1645 > to <quote
1646 >prawda</quote
1647 >. <screen>
1648 $x = 6
1649 jeśli $x &gt; 5 {
1650   pisz "$x jest większe od 5!"
1651 }
1652 </screen
1653 > W pierwszym wierszu <userinput
1654 >$x</userinput
1655 > jest ustawione jako 6. W drugim wierszu <link linkend="comparing-operators"
1656 >operator porównania</link
1657 > jest wykorzystany do sprawdzenia <userinput
1658 >$x &gt; 5</userinput
1659 >. Jako, że wartością jest <quote
1660 >prawda</quote
1661 >, bo 6 jest większe od 5, kontroler wykonania <userinput
1662 >jeśli</userinput
1663 > pozwoli na wykonanie kodu pomiędzy nawiasami. </para
1664 ></listitem>
1665     </varlistentry>
1666   </variablelist>
1667 </sect2>
1668 
1669 <sect2 id="else">
1670 <title
1671 >Jeżeli nie, innymi słowy: "przeciwnie"</title>
1672   <variablelist>
1673     <varlistentry>
1674       <term
1675 >jeśliNie<indexterm
1676 ><primary
1677 >jeśliNie</primary
1678 ></indexterm
1679 ></term>
1680       <listitem
1681 ><para
1682 ><screen
1683 >jeśli <link linkend="boolean-value"
1684 >wartość logiczna</link
1685 > { ... } jeśliNie { ... }</screen>
1686 <userinput
1687 >jeśliNie</userinput
1688 > może być użyte w dodatku do wyrażenia sterującego <link linkend="if"
1689 ><userinput
1690 >jeśli</userinput
1691 ></link
1692 >. Kod pomiędzy nawiasami po <userinput
1693 >jeśliNie</userinput
1694 > jest wykonany tylko wtedy, gdy <link linkend="boolean-value"
1695 >wartość logiczna</link
1696 > to <quote
1697 >fałsz</quote
1698 >. <screen>
1699 czyść
1700 $x = 4
1701 jeśli $x &gt; 5 {
1702   pisz "$x jest większe od 5!"
1703 } jeśliNie {
1704   pisz "$x jest mniejsze od 5!"
1705 }
1706 </screen
1707 > <link linkend="comparing-operators"
1708 >Operator porównania</link
1709 > sprawdza wartość <userinput
1710 >$x &gt; 5</userinput
1711 >. Jako że 4 nie jest większe od 5 przyjmuje wartość <quote
1712 >fałsz</quote
1713 >. To znaczy, że kod pomiędzy nawiasami po <userinput
1714 >jeśliNie</userinput
1715 > zostaje wykonana.</para
1716 ></listitem>
1717     </varlistentry>
1718   </variablelist>
1719 </sect2>
1720 
1721 <sect2 id="while">
1722 <title
1723 >Pętla "dopóki"</title>
1724   <variablelist>
1725     <varlistentry>
1726       <term
1727 >dopóki<indexterm
1728 ><primary
1729 >dopóki</primary
1730 ></indexterm
1731 ></term>
1732       <listitem
1733 ><para
1734 ><screen
1735 >dopóki <link linkend="boolean-value"
1736 >wartość logiczna</link
1737 > { ... }</screen>
1738 Wyrażenie sterujące <userinput
1739 >dopóki</userinput
1740 > jest podobne do <link linkend="if"
1741 ><userinput
1742 >jeśli</userinput
1743 ></link
1744 >. Różnica polega na tym, że <userinput
1745 >dopóki</userinput
1746 > powtarza wykonywanie kodu między nawiasami dopóki <link linkend="boolean-value"
1747 >wartość logiczna</link
1748 > nie będzie <quote
1749 >fałszem</quote
1750 >. <screen>
1751 $x = 1
1752 dopóki $x &lt; 5 {
1753   naprzód 10
1754   czekaj 1
1755   $x = $x + 1
1756 }
1757 </screen
1758 > W pierwszym wierszu <userinput
1759 >$x</userinput
1760 > zyskuje wartość 1. W następnym wierszu <userinput
1761 >$x &lt; 5</userinput
1762 > jest sprawdzane. Jako, że to wyrażenie  jest <quote
1763 >prawdą</quote
1764 > wyrażenie sterujące <userinput
1765 >dopóki</userinput
1766 > rozpoczyna wykonywanie kodu między nawiasami dopóki wartość <userinput
1767 >$x &lt; 5</userinput
1768 > nie będzie <quote
1769 >fałszem</quote
1770 >. W tym przypadku kod w nawiasie zostanie wykonany 4 razy, gdyż po każdym wykonaniu piątym wierszu <userinput
1771 >$x</userinput
1772 > wzrasta o 1.</para
1773 ></listitem>
1774     </varlistentry>
1775   </variablelist>
1776 </sect2>
1777 
1778 <sect2 id="repeat">
1779 <title
1780 >Pętla "powtórz"</title>
1781   <variablelist>
1782     <varlistentry>
1783       <term
1784 >powtórz<indexterm
1785 ><primary
1786 >powtórz</primary
1787 ></indexterm
1788 ></term>
1789       <listitem
1790 ><para
1791 ><screen
1792 >powtórz <link linkend="number"
1793 >liczba</link
1794 > { ... }</screen>
1795 Kontroler wykonawczy <userinput
1796 >powtórz</userinput
1797 > przypomina w dużej mierze <link linkend="while"
1798 ><userinput
1799 >dopóki</userinput
1800 ></link
1801 >. Różnica polega na tym, że <userinput
1802 >powtórz</userinput
1803 > powtarza (w pętli) kod między nawiasami tyle razy, jaką ma wartość przekazana liczba.</para
1804 ></listitem>
1805     </varlistentry>
1806   </variablelist>
1807 </sect2>
1808 
1809 <sect2 id="for">
1810 <title
1811 >Pętla "dla", pętla zliczająca</title>
1812   <variablelist>
1813     <varlistentry>
1814       <term
1815 >dla<indexterm
1816 ><primary
1817 >dla</primary
1818 ></indexterm
1819 ><indexterm
1820 ><primary
1821 >co</primary
1822 ></indexterm
1823 ></term>
1824       <listitem
1825 ><para
1826 ><screen
1827 >dla <link linkend="assignment-of-variables"
1828 >zmienna</link
1829 > = <link linkend="number"
1830 >liczba</link
1831 > do <link linkend="number"
1832 >liczba</link
1833 > { ... }</screen>
1834 Pętla <userinput
1835 >dla</userinput
1836 > jest <quote
1837 >pętlą zliczającą</quote
1838 >, czyli zlicza za użytkownika. Pierwsza liczba przypisywana jest do zmiennej przy pierwszym obiegu pętli. W każdym obiegu liczba jest powiększana aż do osiągnięcia wartości drugiej liczby.<screen>
1839 dla $x = 1 do 10 {
1840   pisz $x * 7
1841   naprzód 15
1842 }
1843 </screen
1844 > Za każdym razem gdy kod w nawiasach jest wykonywany wartość zmiennej <userinput
1845 >$x</userinput
1846 > zwiększa się o 1, dopóki zmienna <userinput
1847 >$x</userinput
1848 > nie osiągnie wartości 10. Kod w nawiasach wypisuje wartość zmiennej <userinput
1849 >$x</userinput
1850 > pomnożonej przez 7. Po wykonaniu programu na płótnie będzie można zobaczyć tabele wielokrotności liczby 7. </para>
1851      <para
1852 >Domyślny rozmiar polecenia co pętli to 1 możesz użyć innej wartości z <screen
1853 >dla <link linkend="assignment-of-variables"
1854 >zmienna</link
1855 > = <link linkend="number"
1856 >liczba</link
1857 > do <link linkend="number"
1858 >liczba</link
1859 > co <link linkend="number"
1860 >liczba</link
1861 > { ... }</screen
1862 ></para
1863 ></listitem>
1864     </varlistentry>
1865   </variablelist>
1866 </sect2>
1867 
1868 <sect2 id="break">
1869 <title
1870 >Zostaw pętlę</title>
1871   <variablelist>
1872     <varlistentry>
1873       <term
1874 >przerwij<indexterm
1875 ><primary
1876 >przerwij</primary
1877 ></indexterm
1878 ></term>
1879       <listitem
1880 ><para
1881 ><screen
1882 >przerwij</screen>
1883 Kończy niezwłocznie bieżącą pętlę i przenosi kontrolę do wyrażenia obecnego przy tej pętli.</para
1884 ></listitem>
1885     </varlistentry>
1886   </variablelist>
1887 </sect2>
1888 
1889 <sect2 id="exit">
1890 <title
1891 >Zatrzymanie wykonania Twojego programu</title>
1892   <variablelist>
1893     <varlistentry>
1894       <term
1895 >wyjdź<indexterm
1896 ><primary
1897 >wyjdź</primary
1898 ></indexterm
1899 ></term>
1900       <listitem
1901 ><para
1902 ><screen
1903 >wyjdź</screen>
1904 Kończy wykonywanie Twojego programu.</para
1905 ></listitem>
1906     </varlistentry>
1907   </variablelist>
1908 </sect2>
1909 </sect1>
1910 
1911 
1912 <sect1 id="learn">
1913 
1914 
1915 <!--<sect2 id="name">
1916 <title
1917 >Names</title>
1918 <para
1919 >When using the &turtlescript; programming language you create new things. If you write a program you will often need <link linkend="containers"
1920 >containers</link
1921 > and in some cases you need <link linkend="learn"
1922 >learn</link
1923 > to create new commands. When making a new command with <link linkend="learn"
1924 >learn</link
1925 > you will have to specify a name.</para>
1926 <para
1927 >You can choose any name, as long as it does not already have a meaning. For instance you cannot name a function <link linkend="forward"
1928 >forward</link
1929 >, since that name is already used for an internal command.
1930 <screen
1931 >
1932 # here forward is used as a new command, 
1933 # but it already has a meaning so 
1934 # this will produce an error:
1935 learn forward {
1936   print "this is invalid"
1937 }
1938 
1939 # this works:
1940 learn myforward {
1941   print "this is ok"
1942 }
1943 </screen>
1944 Names can contain only letters, numbers and underscores (_). Yet they have to start with a letter. Container names have to start with the container prefix ($).
1945 <screen
1946 >
1947 # here forward is used as a container, 
1948 # starting with the $ prefix, so it does
1949 # not conflict with the forward command
1950 $forward = 20
1951 print $forward
1952 </screen>
1953 </para>
1954 <para
1955 >Containers are <glossterm
1956 >highlighted</glossterm
1957 > with bolded purple in the <link linkend="the-editor"
1958 >code editor</link
1959 >.</para>
1960 <para>
1961 Please read the documentation on <link linkend="containers"
1962 >containers</link
1963 > and the <link linkend="learn"
1964 >learn</link
1965 > command for a better explanation and more examples.
1966 </para>
1967 </sect2
1968 >-->
1969 
1970 
1971 
1972 
1973 
1974 <title
1975 >Tworzenie własnych poleceń za pomocą <quote
1976 >nauczyciela</quote
1977 ></title>
1978 <para
1979 ><userinput
1980 >poznaj</userinput
1981 > jest specjalnym poleceniem, służącą do tworzenia własnych poleceń. Utworzone polecenia mogą przyjmować argumenty <glossterm linkend="input-output"
1982 >wejściowe</glossterm
1983 > i zwracać <glossterm linkend="input-output"
1984 >argumenty wyjściowe</glossterm
1985 >. Zobaczmy jak tworzone są nowe polecenia: <screen>
1986 poznaj okrąg $x {
1987   powtórz 36 {
1988     naprzód $x
1989     lewo 10
1990   }
1991 }
1992 </screen
1993 > Nowe polecenie zostanie nazwane <userinput
1994 >okrąg</userinput
1995 >. <userinput
1996 >okrąg</userinput
1997 > oczekuje jednego <glossterm linkend="input-output"
1998 >argumentu wejściowego</glossterm
1999 >, liczby określającej rozmiar okręgu. <userinput
2000 >okrąg</userinput
2001 > nie zwraca żadnego <glossterm linkend="input-output"
2002 >argumentu wyjściowego</glossterm
2003 >. Polecenie <userinput
2004 >okrąg</userinput
2005 > może być teraz używane jak normalne polecenie w reszcie kodu. Oto przykład: <screen
2006 >poznaj okrąg $X {
2007   powtórz 36 { 
2008     naprzód $X 
2009     lewo 10 
2010   } 
2011 } 
2012 
2013 idź 200,200 
2014 okrąg 20
2015 
2016 idź 300,200 
2017 okrąg 40  
2018 </screen>
2019 </para>
2020 <para
2021 >W następnym przykładzie tworzone jest polecenie zwracające wartość. <screen>
2022 poznaj silnia $x {
2023   $s = 1
2024   dla $i = 1 do $x {
2025     $s = $s * $i
2026   }
2027   wynik $s
2028 }
2029 
2030 pisz silnia 5
2031 </screen
2032 > W tym przykładzie zostało stworzone nowe polecenie o nazwie <userinput
2033 >silnia</userinput
2034 >. Jeśli wejściem tego polecenia jest <userinput
2035 >5</userinput
2036 >, to wyjściem jest <userinput
2037 >5*4*3*2*1</userinput
2038 >. Dzięki użyciu <userinput
2039 >wynik</userinput
2040 > <glossterm linkend="input-output"
2041 >wyjście</glossterm
2042 > jest określone i zwracane przy wykonaniu.</para>
2043 <para
2044 >Polecenia mogą mieć więcej niż jedno <glossterm linkend="input-output"
2045 > wejście</glossterm
2046 >. W następnym przykładzie utworzona zostanie polecenie rysujące prostokąt. <screen>
2047 poznaj prostokąt $x, $y {
2048   naprzód $y
2049   prawo 90
2050   naprzód $x
2051   prawo 90
2052   naprzód $y
2053   prawo 90
2054   naprzód $x
2055   prawo 90
2056 }
2057 </screen
2058 > Możesz teraz uruchomić <userinput
2059 >prostokąt 50, 100</userinput
2060 >, a żółw narysuje prostokąt na płótnie. </para>
2061   
2062 </sect1>
2063 
2064 </chapter>