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

0001 <chapter id="reference">
0002 <title
0003 >&turtlescript;'i käskude seletused</title>
0004 <para
0005 >Alljärgnev on &kturtle;'i &turtlescript;i seletus. Peatüki esimeses osas tutvustame &turtlescript;i programmide <link linkend="grammar"
0006 >grammatika</link
0007 > mõningaid külgi. Teises osas on juttu eranditult <link linkend="mathematical-operators"
0008 >matemaatilistest tehetest</link
0009 >, <link linkend="boolean-operators"
0010 >tõeväärtustehetest</link
0011 > ja <link linkend="comparing-operators"
0012 >võrdlustehetest</link
0013 >. Kolmas osa kujutab endast hiiglaslikku kõigi <link linkend="commands"
0014 >käskude</link
0015 > seletust. Neljandas osas selgitatakse, kuidas <link linkend="assignment-of-variables"
0016 >omistada</link
0017 > väärtusi <link linkend="assignment-of-variables"
0018 >muutujatele</link
0019 >. Lõpuks seletame viiendas osas, kuidas korraldada käskude täitmist <link linkend="controlling-execution"
0020 >täitmise kontrollimise lausetega</link
0021 >, ning kuuendas osas, kuidas luua omaenda käske käsuga <link linkend="learn"
0022 >learn</link
0023 >.</para>
0024 
0025 <sect1 id="grammar">
0026 <title
0027 >&turtlescript;i grammatika</title>
0028 <para
0029 >Nagu igas keeles, on ka &turtlescript;il omad sõnad ja sümbolid. Tavalises keeles eristatakse näiteks tegusõnu ("käima", "laulma") ja nimisõnu ("õde", "maja"), mida kasutatakse eri eesmärgil. &turtlescript; on programmeerimiskeel, mida kasutatakse &kturtle;'i juhendamiseks, mida ette võtta.</para>
0030 <para
0031 >Käesolevas osas selgitatakse lühidalt &turtlescript;i sõnade ja sümbolite tüüpe. Me tutvustame <link linkend="comment"
0032 >kommentaare</link
0033 >, <link linkend="command"
0034 >käske</link
0035 > ja kolme eri laadi literaale: <link linkend="number"
0036 >arvud</link
0037 >, <link linkend="string"
0038 >stringid</link
0039 > ja <link linkend="boolean-value"
0040 >tõeväärtused (tõene/väär)</link
0041 >.</para>
0042 
0043 
0044 <sect2 id="comment">
0045 <title
0046 >Kommentaarid</title>
0047 <para
0048 >Programm koosneb instruktsioonidest, mis täidetakse programmi töötamisel, ja niinimetatud kommentaaridest. Kommentaare ei täideta, &kturtle; lihtsalt eirab neid töötamise ajal. Kommentaarid on mõeldud teistele programmeerijatele, et nad saaksid paremini programmist aru. Kõik, mis järgneb sümbolile <userinput
0049 >#</userinput
0050 >, on &turtlescript;i seisukohalt kommentaar. Näiteks see pisike programm ei tee midagi: <screen>
0051 # see väike programm ei tee midagi, see ongi ainult kommentaar!
0052 </screen
0053 > See on vahest mõttetu, aga selgitab kenasti asja olemust.</para>
0054 <para
0055 >Kommentaarid on väga kasulikud, kui programm on vähegi keerukam. Need on suureks abiks teistele programmeerijatele. Järgmises programmis kasutatakse kommentaare koos käsuga <link linkend="print"
0056 >print</link
0057 >. <screen>
0058 # selle programmi tegi Cies Breijs.
0059 print "seda teksti näidatakse lõuendil"
0060 # eelmine rida ei olnud kommenaar, aga järgmine rida on:
0061 # print "seda teksti ei näidata!"
0062 </screen
0063 >  Programm esimene rida kirjeldab programmi. Teise rea &kturtle; täidab ning näitab lõuendil teksti <userinput
0064 >seda teksti näidatakse lõuendil</userinput
0065 >. Kolmas rida on kommentaar. Neljas rida on samuti kommentaar, mis aga sisaldab &turtlescript;i, nii et kui sümbol <userinput
0066 >#</userinput
0067 > neljanda rea eest eemaldada, täidab &kturtle; ka selle näitamiskäsu. Programmeerijate kõnepruugis on neljanda rea näitamiskäsk "välja kommenteeritud".</para>
0068 <para
0069 >Kommenteeritud read on <link linkend="the-editor"
0070 >redaktoris</link
0071 > <glossterm
0072 >esile tõstetud</glossterm
0073 > helehalli värviga.</para>
0074 </sect2>
0075 
0076 <sect2 id="command">
0077 <title
0078 >Käsud</title>
0079 <para
0080 >Käskudega antakse kilpkonnale ehk &kturtle;'ile korraldus midagi teha. Mõned käsud vajavad sisendit, teised annavad väljundit. <screen>
0081 # forward on käsk, mis vajab sisendit, antud juhul arvu 100:
0082 forward 100
0083 </screen
0084 > Esimene rida on <link linkend="comment"
0085 >kommentaar</link
0086 >. Teine rida sisaldab käsku <userinput
0087 >forward</userinput
0088 > ja <link linkend="number"
0089 >arvu</link
0090 > <userinput
0091 >100</userinput
0092 >. Arv ei ole käsu osa, seda käsitletakse käsu "sisendina".</para>
0093 <para
0094 >Mõned käsud, nt. <userinput
0095 >go</userinput
0096 >, vajavad rohkem kui üht sisendväärtust. Mitut väärtust saab sisestada neid komaga (<userinput
0097 >,</userinput
0098 >) eraldades.</para>
0099 <para
0100 >Täpsemalt kirjeldatakse kõiki käske, mida &kturtle; toetab, <link linkend="commands"
0101 >siin</link
0102 >. Sisseehitatud käsud on <glossterm
0103 >esile tõstetud</glossterm
0104 > tumesinise värviga.</para>
0105 </sect2>
0106 
0107 <sect2 id="number">
0108 <title
0109 >Arvud</title>
0110 <para
0111 >Arvatavasti oled juba koolis õppinud, mis asjad on arvud või mingil muul moel osanud selle välja uurida. &kturtle; kasutab arve üsna sarnaselt sellele, kuidas kasutatakse neid matemaatikas või kas või tavalises kõnepruugis. </para>
0112 <para
0113 >Me kasutamine niinimetatud naturaalarve: <userinput
0114 >0</userinput
0115 >, <userinput
0116 >1</userinput
0117 >, <userinput
0118 >2</userinput
0119 >, <userinput
0120 >3</userinput
0121 >, <userinput
0122 >4</userinput
0123 >, <userinput
0124 >5</userinput
0125 > jne. Samuti negatiivseid arve: <userinput
0126 >-1</userinput
0127 >, <userinput
0128 >-2</userinput
0129 >, <userinput
0130 >-3</userinput
0131 > jne. Aga ka murdarve, näiteks: <userinput
0132 >0.1</userinput
0133 >, <userinput
0134 >3.14</userinput
0135 >, <userinput
0136 >33.3333</userinput
0137 >, <userinput
0138 >-5.05</userinput
0139 >, <userinput
0140 >-1.0</userinput
0141 >. Kümnendkoha eraldajana kasutatakse punkti (<userinput
0142 >.</userinput
0143 >). </para>
0144 <para
0145 >Arve saab pruukida <link linkend="mathematical-operators"
0146 >matemaatilistes tehetes</link
0147 > ja <link linkend="comparing-operators"
0148 >võrdlustehetes</link
0149 >. Neid saab lisada ka salvestada <link linkend="assignment-of-variables"
0150 >muutujatesse</link
0151 >. Arvud on <glossterm
0152 >esile tõstetud</glossterm
0153 > tumepunase värviga.</para>
0154 </sect2>
0155 
0156 <!-- constants like pi? -->
0157 
0158 <sect2 id="string">
0159 <title
0160 >Stringid</title>
0161 <para
0162 >Kõigepealt näide: <screen>
0163 print "Hei, mina olen string."
0164 </screen
0165 > Selles näites on <userinput
0166 >print</userinput
0167 > käsk, <userinput
0168 >"Hei, mina olen string."</userinput
0169 > aga string. Stringide alguses ja lõpus seisab <userinput
0170 >"</userinput
0171 >, mille järgi &kturtle; tunneb ära, et tegemist on stringiga.</para>
0172 <para
0173 >Stringid võivad esineda <link linkend="assignment-of-variables"
0174 >muutujates</link
0175 > nagu <link linkend="number"
0176 >arvudki</link
0177 >. Aga erinevalt arvudest ei saa stringe kasutada <link linkend="mathematical-operators"
0178 >matemaatilistes tehetes</link
0179 > ega <link linkend="comparing-operators"
0180 >võrdlustehetes</link
0181 >. Stringid on <glossterm
0182 >esiletõstetud</glossterm
0183 > punase värviga.</para>
0184 </sect2>
0185 
0186 <sect2 id="boolean-value">
0187 <title
0188 >Tõeväärtused (tõene/väär)</title>
0189 <para
0190 >Tõeväärtusi on ainult kaks: <userinput
0191 >tõene</userinput
0192 > ja <userinput
0193 >väär</userinput
0194 >. Mõnikord kasutatakse nende kohta ka muid nimetusi: sees ja väljas, jah ja ei, üks ja null. Kuid &turtlescript;is on nad alati <userinput
0195 >tõene</userinput
0196 > ja <userinput
0197 >väär</userinput
0198 >. Vaatame killukest &turtlescript;i: <screen>
0199 $a = true
0200 </screen
0201 > Kui vaadata <link linkend="the-inspector"
0202 >inspektorit</link
0203 >, näeb, et <link linkend="assignment-of-variables"
0204 >muutuja</link
0205 > <userinput
0206 >$a</userinput
0207 > väärtuseks on määratud <userinput
0208 >tõene</userinput
0209 > ja see on tõeväärtus.</para>
0210 <para
0211 >Tõeväärtused on sageli <link linkend="comparing-operators"
0212 >võrdlustehte</link
0213 > tulemus, nagu järgmises &turtlescript;i killukeses: <screen>
0214 $answer = 10 &gt; 3
0215 </screen
0216 > <link linkend="assignment-of-variables"
0217 >Muutuja</link
0218 > <userinput
0219 >$answer</userinput
0220 > väärtuseks on määratud <userinput
0221 >tõene</userinput
0222 >, sest <userinput
0223 >10</userinput
0224 > on suurem kui <userinput
0225 >3</userinput
0226 >.</para>
0227 <para
0228 >Tõeväärtused <userinput
0229 >tõene</userinput
0230 > ja <userinput
0231 >väär</userinput
0232 > on <glossterm
0233 >esile tõstetud</glossterm
0234 > tumepunase värviga.</para>
0235 </sect2>
0236 
0237 </sect1>
0238 
0239 
0240 
0241 <sect1 id="operators">
0242 <title
0243 >Matemaatika-, tõeväärtus- ja võrdlustehted</title>
0244 <para
0245 >Selle osa pealkiri võib tunduda raskepärasena, aga tegelikult pole siin midagi väga keerulist.</para>
0246 
0247 <sect2 id="mathematical-operators">
0248 <title
0249 >Matemaatilised tehted</title>
0250 <para
0251 >Need on põhilised matemaatikasümbolid: liitmine (<userinput
0252 >+</userinput
0253 >), lahutamine (<userinput
0254 >-</userinput
0255 >), korrutamine (<userinput
0256 >*</userinput
0257 >), jagamine (<userinput
0258 >/</userinput
0259 >) ja astendamine (<userinput
0260 >^</userinput
0261 >).</para>
0262 
0263 <para
0264 >Väike näide matemaatikatehetest &turtlescript;is: <screen>
0265 $add      = 1 + 1
0266 $subtract = 20 - 5
0267 $multiply = 15 * 2
0268 $divide   = 30 / 30
0269 $power    = 2 ^ 2
0270 </screen
0271 > Matemaatikatehete tulemused <link linkend="assignment-of-variables"
0272 >omistatakse</link
0273 > eri <link linkend="assignment-of-variables"
0274 >muutujatele</link
0275 >. Väärtusi näeb <link linkend="the-inspector"
0276 >inspektori</link
0277 > abil.</para>
0278 <para
0279 >Kui soovid väga lihtsat tehet teha, siis see käib umbes nii: <screen
0280 >print 2010-12
0281 </screen
0282 ></para>
0283 <para
0284 >Ja nüüd näide sulgudega: <screen>
0285 print ( ( 20 - 5 ) * 2 / 30 ) + 1
0286 </screen
0287 > Sulgudes olevad tehted sooritatakse esimestena. Antud näites arvutatakse 20-5, siis korrutatakse 2-ga, jagatakse 30-ga ning seejärel liidetakse 1 (tulemuseks on 2). Sulge võib kasutada ka muudel juhtudel.</para>
0288 <para
0289 >&kturtle; pakub käskudes teistegi matemaatiliste võimaluste kasutamist. Uuri näiteks järgmisi käske (kuid arvesta, et tegemist on keerukamate tehetega): <link linkend="round"
0290 >round</link
0291 >, <link linkend="random"
0292 >random</link
0293 >, <link linkend="sqrt"
0294 >sqrt</link
0295 > , <link linkend="pi"
0296 >pi</link
0297 >, <link linkend="sin"
0298 >sin</link
0299 >, <link linkend="cos"
0300 >cos</link
0301 >, <link linkend="tan"
0302 >tan</link
0303 >, <link linkend="arcsin"
0304 >arcsin</link
0305 >, <link linkend="arccos"
0306 >arccos</link
0307 >, <link linkend="arctan"
0308 >arctan</link
0309 >.</para>
0310 </sect2>
0311 
0312 <sect2 id="boolean-operators">
0313 <title
0314 >Tõeväärtustehted</title>
0315 <para
0316 >Kui <link linkend="mathematical-operators"
0317 >matemaatilised tehted</link
0318 > on mõeldud eelkõige <link linkend="number"
0319 >arvudele</link
0320 >, siis tõeväärtustehteid tehakse <link linkend="boolean-value"
0321 >tõeväärtustega</link
0322 > (<userinput
0323 >tõene</userinput
0324 > ja <userinput
0325 >väär</userinput
0326 >) Tõeväärtustehteid on ainult kolm, nimelt <userinput
0327 >and</userinput
0328 >, <userinput
0329 >or</userinput
0330 > ja <userinput
0331 >not</userinput
0332 >. Järgnev &turtlescript;i killuke seletab nende kasutamist: <screen>
0333 $and_1_1 = true and true    # -> true
0334 $and_1_0 = true and false   # -> false
0335 $and_0_1 = false and true   # -> false
0336 $and_0_0 = false and false  # -> false
0337 
0338 $or_1_1 = true or true    # -> true
0339 $or_1_0 = true or false   # -> true
0340 $or_0_1 = false or true   # -> true
0341 $or_0_0 = false or false  # -> false
0342 
0343 $not_1 = not true   # -> false
0344 $not_0 = not false  # -> true
0345 </screen
0346 > <link linkend="the-inspector"
0347 >Inspektoris</link
0348 > näeb ka väärtusi, kuid me andsime tulemused ka lühikommentaarina ridade lõpus. <userinput
0349 >and</userinput
0350 > on <userinput
0351 >tõene</userinput
0352 > ainult siis,  kui mõlemad pooled on <userinput
0353 >tõesed</userinput
0354 >. <userinput
0355 >or</userinput
0356 > on <userinput
0357 >tõene</userinput
0358 > siis, kui üks pooltest on <userinput
0359 >tõene</userinput
0360 >. <userinput
0361 >not</userinput
0362 > aga muudab <userinput
0363 >tõese</userinput
0364 > <userinput
0365 >vääraks</userinput
0366 > ja <userinput
0367 >väära</userinput
0368 > <userinput
0369 >tõeseks</userinput
0370 >.</para>
0371 <para
0372 >Tõeväärtustehted on <glossterm
0373 >esile tõstetud</glossterm
0374 > roosa värviga.</para>
0375 
0376 <sect3 id="boolean-operators-advanced-examples">
0377 <title
0378 >Mõned keerukamad näited</title>
0379 <para
0380 >Üks näide tehte <userinput
0381 >and</userinput
0382 > kohta: <screen>
0383 $a = 1
0384 $b = 5
0385 if (($a &lt; 10) and ($b == 5)) and ($a &lt; $b) {
0386   print "hello"
0387 }
0388 </screen
0389 > Selles &turtlescript;i killukeses ühendatakse kolm <link linkend="comparing-operators"
0390 >võrdlustehet</link
0391 > tehte <userinput
0392 >and</userinput
0393 > abil. See tähendab, et kõik kolm peavad olema "tõesed", et näidataks teksti "hello".</para>
0394 
0395 <para
0396 >Näide tehtega <userinput
0397 >or</userinput
0398 >: <screen>
0399 $n = 1
0400 if ($n &lt; 10) or ($n == 2) {
0401   print "hello"
0402 }
0403 </screen
0404 > Selles &turtlescript;i killukeses on <userinput
0405 >or</userinput
0406 > vasak pool "tõene", parem pool aga "väär". Et <userinput
0407 >or</userinput
0408 > üks pool on siiski "tõene", on ka tehte <userinput
0409 >or</userinput
0410 > tulemus "tõene" ning järelikult näidatakse teksti "hello".</para>
0411 
0412 <para
0413 >Lõpuks ka näide tehtega <userinput
0414 >not</userinput
0415 >, mis muudab "tõese" "vääraks" ja "väära" "tõeseks": <screen
0416 >$n = 1
0417 if not ($n == 3) {
0418   print "hello"
0419 } else {
0420   print "not hello ;-)"
0421 }
0422 </screen
0423 ></para>
0424 </sect3>
0425 </sect2>
0426 
0427 <sect2 id="comparing-operators">
0428 <title
0429 >Võrdlustehted</title>
0430 <para
0431 >Vaatleme lihtsat võrdlust: <screen>
0432 $answer = 10 &gt; 3
0433 </screen
0434 > Siin võrreldakse arvu <userinput
0435 >10</userinput
0436 > arvuga <userinput
0437 >3</userinput
0438 > "suurem kui" tehtega. Võrdluse tulemus, <link linkend="boolean-value"
0439 >tõeväärtus</link
0440 > <userinput
0441 >tõene</userinput
0442 > salvestatakse <link linkend="assignment-of-variables"
0443 >muutujasse</link
0444 > <userinput
0445 >$answer</userinput
0446 >.</para>
0447 <para
0448 >Võrdlustehetega saab omavahel võrrelda kõiki <link linkend="number"
0449 >arve</link
0450 > ja <link linkend="assignment-of-variables"
0451 >muutujaid</link
0452 > (mis sisaldavad arve).</para>
0453 <para
0454 >Toome ära kõik võimalikud võrdlustehted: <table
0455 > <title
0456 >Küsimuste tüübid</title
0457 > <tgroup cols="3"
0458 > <tbody
0459 > <row
0460 > <entry
0461 ><userinput
0462 >$A == $B</userinput
0463 ></entry
0464 > <entry
0465 >võrdub</entry
0466 > <entry
0467 >vastus on <quote
0468 >tõene</quote
0469 >, kui <userinput
0470 >$A</userinput
0471 > võrdub <userinput
0472 >$B</userinput
0473 ></entry
0474 > </row
0475 > <row
0476 > <entry
0477 ><userinput
0478 >$A != $B</userinput
0479 ></entry
0480 > <entry
0481 >ei võrdu</entry
0482 > <entry
0483 >vastus on <quote
0484 >tõene</quote
0485 >, kui <userinput
0486 >$A</userinput
0487 > ei võrdu <userinput
0488 >$B</userinput
0489 >-ga</entry
0490 > </row
0491 > <row
0492 > <entry
0493 ><userinput
0494 >$A &gt; $B</userinput
0495 ></entry
0496 > <entry
0497 >suurem kui</entry
0498 > <entry
0499 >vastus on <quote
0500 >tõene</quote
0501 >, kui <userinput
0502 >$A</userinput
0503 > on suurem kui <userinput
0504 >$B</userinput
0505 ></entry
0506 > </row
0507 > <row
0508 > <entry
0509 ><userinput
0510 >$A &lt; $B</userinput
0511 ></entry
0512 > <entry
0513 >väiksem kui</entry
0514 > <entry
0515 >vastus on <quote
0516 >tõene</quote
0517 >, kui <userinput
0518 >$A</userinput
0519 > on väiksem kui <userinput
0520 >$B</userinput
0521 ></entry
0522 > </row
0523 > <row
0524 > <entry
0525 ><userinput
0526 >$A &gt;= $B</userinput
0527 ></entry
0528 > <entry
0529 >suurem kui või võrdne</entry
0530 > <entry
0531 >vastus on <quote
0532 >tõene</quote
0533 >, kui <userinput
0534 >$A</userinput
0535 > on suurem kui või võrdub <userinput
0536 >$B</userinput
0537 >-ga</entry
0538 > </row
0539 > <row
0540 > <entry
0541 ><userinput
0542 >$A &lt;= $B</userinput
0543 ></entry
0544 > <entry
0545 >väiksem kui või võrdne</entry
0546 > <entry
0547 >vastus on <quote
0548 >tõene</quote
0549 >, kui <userinput
0550 >$A</userinput
0551 > on väiksem kui või võrdub <userinput
0552 >$B</userinput
0553 >-ga</entry
0554 > </row
0555 > </tbody
0556 > </tgroup
0557 > </table
0558 > Palun arvesta, et $A ja $B peavad olema <link linkend="number"
0559 >arvud</link
0560 > või <link linkend="assignment-of-variables"
0561 >muutujad</link
0562 >, mis sisaldavad arve.</para>
0563 </sect2>
0564 
0565 
0566 </sect1>
0567 
0568 
0569 
0570 <sect1 id="commands">
0571 <title
0572 >Käsud</title>
0573 <para
0574 >Just käskudega saab panna kilpkonna või &kturtle;'i midagi tegema. Osa käske eeldab sisendit, osa annab väljundi. Selles osas kirjeldame kõiki &kturtle;'i sisseehitatud käske. Lisaks saab oma käske luua käsuga <link linkend="learn"
0575 >learn</link
0576 >. Käsitletavad sisseehitatud käsud on <glossterm
0577 >esile tõstetud</glossterm
0578 > tumesinise värviga.</para>
0579 
0580 <sect2 id="moving-the-turtle">
0581 <title
0582 >Kilpkonna liigutamine</title>
0583 <para
0584 >Kilpkonna saab lõuendil liigutada mitme käsuga.</para>
0585 
0586   <variablelist>
0587     <anchor id="forward"/>
0588     <varlistentry
0589 > 
0590       <term
0591 >forward (fw)<indexterm
0592 ><primary
0593 >forward (fw)</primary
0594 ></indexterm
0595 ></term>
0596       <listitem
0597 ><para
0598 ><screen
0599 >forward X</screen>
0600 <userinput
0601 >forward</userinput
0602 > paneb kilpkonna otse edasi liikuma X piksli võrra. Kui pliiats on sees, jätab kilpkonna ka jälje maha. <userinput
0603 >forward</userinput
0604 > asemel võib kasutada lühendit <userinput
0605 >fw</userinput
0606 >.</para
0607 ></listitem>
0608     </varlistentry>
0609   </variablelist>
0610   <variablelist>
0611     <anchor id="backward"/>
0612     <varlistentry
0613 >  
0614       <term
0615 >backward (bw)<indexterm
0616 ><primary
0617 >backward (bw)</primary
0618 ></indexterm
0619 ></term>
0620       <listitem
0621 ><para
0622 ><screen
0623 >backward X</screen>
0624 <userinput
0625 >backward</userinput
0626 > paneb kilpkonna otse tagasi liikuma X piksli võrra. Kui pliiats on sees, jätab kilpkonna ka jälje maha. <userinput
0627 >backward</userinput
0628 > asemel võib kasutada lühendit <userinput
0629 >bw</userinput
0630 >.</para
0631 ></listitem>
0632     </varlistentry>
0633   </variablelist>
0634   <variablelist>
0635     <anchor id="turnleft"/>
0636     <varlistentry
0637 > 
0638       <term
0639 >turnleft (tl)<indexterm
0640 ><primary
0641 >turnleft (tl)</primary
0642 ></indexterm
0643 ></term>
0644       <listitem
0645 ><para
0646 ><screen
0647 >turnleft X</screen>
0648 <userinput
0649 >turnleft</userinput
0650 > paneb kilpkonna X kraadi võrra vasakule pöörama. <userinput
0651 >turnleft</userinput
0652 > asemel võib kasutada lühendit <userinput
0653 >tl</userinput
0654 >.</para
0655 ></listitem>
0656     </varlistentry>
0657   </variablelist>
0658   <variablelist>
0659     <anchor id="turnright"/>
0660     <varlistentry
0661 > 
0662       <term
0663 >turnright (tr)<indexterm
0664 ><primary
0665 >turnright (tr)</primary
0666 ></indexterm
0667 ></term>
0668       <listitem
0669 ><para
0670 ><screen
0671 >turnright X</screen>
0672 <userinput
0673 >turnright</userinput
0674 > paneb kilpkonna X kraadi võrra paremale pöörama. <userinput
0675 >turnright</userinput
0676 > asemel võib kasutada lühendit <userinput
0677 >tr</userinput
0678 >.</para
0679 ></listitem>
0680     </varlistentry>
0681   </variablelist>
0682   <variablelist>
0683     <anchor id="direction"/>
0684     <varlistentry
0685 > 
0686       <term
0687 >direction (dir)<indexterm
0688 ><primary
0689 >direction (dir)</primary
0690 ></indexterm
0691 ></term>
0692       <listitem
0693 ><para
0694 ><screen
0695 >direction X</screen>
0696 <userinput
0697 >direction</userinput
0698 > määrab kilpkonna suunaks X kraadi arvestades nullist, see ei ole seotud kilpkonna varasema suunaga. <userinput
0699 >direction</userinput
0700 > asemel võib kasutada lühendit <userinput
0701 >dir</userinput
0702 >.</para
0703 ></listitem>
0704     </varlistentry>
0705   </variablelist>
0706   <variablelist>
0707     <anchor id="getdirection"/>
0708     <varlistentry
0709 > 
0710       <term
0711 >getdirection<indexterm
0712 ><primary
0713 >getdirection</primary
0714 ></indexterm
0715 ></term>
0716       <listitem
0717 ><para
0718 ><screen
0719 >getdirection</screen>
0720 <userinput
0721 >getdirection</userinput
0722 > tagastab kilpkonna suuna kraadidena arvestades nullist, kus null on suund, millega kilpkonn suundub üles.</para
0723 ></listitem>
0724     </varlistentry>
0725   </variablelist>
0726   <variablelist>
0727     <anchor id="center"/>
0728     <varlistentry
0729 > 
0730       <term
0731 >center<indexterm
0732 ><primary
0733 >center</primary
0734 ></indexterm
0735 ></term>
0736       <listitem
0737 ><para
0738 ><screen
0739 >center</screen>
0740 <userinput
0741 >center</userinput
0742 > sunnib kilpkonna liikuma lõuendi keskpunkti.</para
0743 ></listitem>
0744     </varlistentry>
0745   </variablelist>
0746   <variablelist>
0747     <anchor id="go"/>
0748     <varlistentry
0749 > 
0750       <term
0751 >go<indexterm
0752 ><primary
0753 >go</primary
0754 ></indexterm
0755 ></term>
0756       <listitem
0757 ><para
0758 ><screen
0759 >go X,Y</screen>
0760 <userinput
0761 >go</userinput
0762 > paneb kilpkonna liikuma lõuendi konkreetsesse punkti. See asub X <glossterm linkend="pixels"
0763 >piksli</glossterm
0764 > kaugusel lõuendi vasakust servast ja Y <glossterm linkend="pixels"
0765 >piksli</glossterm
0766 > kaugusel lõuendi ülaservast.</para
0767 ></listitem>
0768     </varlistentry>
0769   </variablelist>
0770   <variablelist>
0771     <anchor id="gox"/>
0772     <varlistentry
0773 > 
0774       <term
0775 >gox<indexterm
0776 ><primary
0777 >gox (gx)</primary
0778 ></indexterm
0779 ></term>
0780       <listitem
0781 ><para
0782 ><screen
0783 >gox X</screen>
0784 <userinput
0785 >gox</userinput
0786 > paneb kilpkonna samal kõrgusel liikuma X <glossterm linkend="pixels"
0787 >piksli</glossterm
0788 > kaugusele lõuendi vasakust servast. <userinput
0789 >gox</userinput
0790 > asemel võib kasutada lühemat <userinput
0791 >gx</userinput
0792 >.</para
0793 ></listitem>
0794     </varlistentry>
0795   </variablelist>
0796   <variablelist>
0797     <anchor id="goy"/>
0798     <varlistentry
0799 > 
0800       <term
0801 >goy<indexterm
0802 ><primary
0803 >goy (gy)</primary
0804 ></indexterm
0805 ></term>
0806       <listitem
0807 ><para
0808 ><screen
0809 >goy Y</screen>
0810 <userinput
0811 >goy</userinput
0812 > paneb kilpkonna samal laiusel (kaugusel vasakust servast) liikuma Y <glossterm linkend="pixels"
0813 >piksli</glossterm
0814 > kaugusele lõuendi ülaservast. <userinput
0815 >goy</userinput
0816 > asemel võib kasutada lühemat <userinput
0817 >gy</userinput
0818 >.</para
0819 ></listitem>
0820     </varlistentry>
0821   </variablelist>
0822   <note
0823 ><para
0824 >Käskudega <userinput
0825 >go</userinput
0826 >, <userinput
0827 >gox</userinput
0828 >, <userinput
0829 >goy</userinput
0830 > ja <userinput
0831 >center</userinput
0832 > ei joonista kilpkonn joont, olgu pliiats üleval või all.</para>
0833   </note>
0834 </sect2>
0835 
0836 <sect2 id="locate-the-turtle">
0837 <title
0838 >Kus on kilpkonn?</title>
0839 <para
0840 >Kilpkonna asukohta lõuendil saab teada kahe käsuga.</para>
0841 
0842   <variablelist>
0843     <anchor id="getx"/>
0844     <varlistentry
0845 > 
0846       <term
0847 >getx<indexterm
0848 ><primary
0849 >getx</primary
0850 ></indexterm
0851 ></term>
0852       <listitem
0853 ><para
0854 ><userinput
0855 >getx</userinput
0856 > tagastab pikslite arvu lõuendi vasakust servast kilpkonna asukohani.</para
0857 ></listitem>
0858     </varlistentry>
0859   </variablelist>
0860   <variablelist>
0861     <anchor id="gety"/>
0862     <varlistentry
0863 > 
0864       <term
0865 >gety<indexterm
0866 ><primary
0867 >gety</primary
0868 ></indexterm
0869 ></term>
0870       <listitem
0871 ><para
0872 ><userinput
0873 >gety</userinput
0874 > tagastab pikslite arvu lõuendi ülemisest servast kilpkonna asukohani.</para
0875 ></listitem>
0876     </varlistentry>
0877   </variablelist>
0878 </sect2>
0879 
0880 <sect2 id="pen">
0881 <title
0882 >Kilpkonn pliiatsiga</title>
0883 <para
0884 >Kilpkonnal on pliiats, millega ta liikudes joont veab. Pliiatsit saab juhtida mitme käsuga, mida siin tutvustamegi.</para>
0885   <variablelist>
0886     <anchor id="penup"/>
0887     <varlistentry
0888 > 
0889       <term
0890 >penup (pu)<indexterm
0891 ><primary
0892 >penup (pu)</primary
0893 ></indexterm
0894 ></term>
0895       <listitem
0896 ><para
0897 ><screen
0898 >penup</screen>
0899 <userinput
0900 >penup</userinput
0901 > tõstab pliiatsi lõuendilt ja kuni see on <quote
0902 >üleval</quote
0903 >, ei tõmba kilpkonn liikudes ühtki joont. Vaata ka <userinput
0904 >pendown</userinput
0905 >. <userinput
0906 >penup</userinput
0907 > asemel võib kasutada lühendit <userinput
0908 >pu</userinput
0909 >.</para
0910 ></listitem>
0911     </varlistentry>
0912   </variablelist>
0913   <variablelist>
0914     <anchor id="pendown"/>
0915     <varlistentry
0916 > 
0917       <term
0918 >pendown (pd)<indexterm
0919 ><primary
0920 >pendown (pd)</primary
0921 ></indexterm
0922 ></term>
0923       <listitem
0924 ><para
0925 ><screen
0926 >pendown</screen>
0927 <userinput
0928 >pendown</userinput
0929 > surub pliiatsi lõuendi vastu ja kuni see on <quote
0930 >all</quote
0931 >, tõmbab kilpkonn liikudes joone. Vaata ka <userinput
0932 >penup</userinput
0933 >. <userinput
0934 >pendown</userinput
0935 > asemel võib kasutada ka lühendit <userinput
0936 >pd</userinput
0937 >.</para
0938 ></listitem>
0939     </varlistentry>
0940   </variablelist>
0941   <variablelist>
0942     <anchor id="setpenwidth"/>
0943     <varlistentry
0944 > 
0945       <term
0946 >penwidth (pw)<indexterm
0947 ><primary
0948 >penwidth (pw)</primary
0949 ></indexterm
0950 ></term>
0951       <listitem
0952 ><para
0953 ><screen
0954 >penwidth X</screen>
0955 <userinput
0956 >penwidth</userinput
0957 > määrab pliiatsi tõmmatava joone laiuseks X <glossterm linkend="pixels"
0958 >pikslit</glossterm
0959 >. <userinput
0960 >penwidth</userinput
0961 > asemel võib kasutada ka lühendit <userinput
0962 >pw</userinput
0963 >.</para
0964 ></listitem>
0965     </varlistentry>
0966   </variablelist>
0967   <variablelist>
0968     <anchor id="setfgcolor"/>
0969     <varlistentry
0970 > 
0971       <term
0972 >pencolor (pc)<indexterm
0973 ><primary
0974 >pencolor (pc)</primary
0975 ></indexterm
0976 ></term>
0977       <listitem
0978 ><para
0979 ><screen
0980 >pencolor R,G,B</screen>
0981 <userinput
0982 >pencolor</userinput
0983 > määrab pliitsi tõmmatava joone värvi. <userinput
0984 >pencolor</userinput
0985 > tahab saada sisendina <glossterm linkend="rgb"
0986 >RGB värvikoodi</glossterm
0987 >. <userinput
0988 >pencolor</userinput
0989 > asemel võib kasutada ka lühendit <userinput
0990 >pc</userinput
0991 >.</para
0992 ></listitem>
0993     </varlistentry>
0994   </variablelist>
0995 </sect2>
0996 
0997 <sect2 id="canvas">
0998 <title
0999 >Lõuendiga seotud käsud</title>
1000 <para
1001 >Lõuendi omadusi saab muuta mitme käsuga.</para>
1002   <variablelist>
1003     <anchor id="resizecanvas"/>
1004     <varlistentry>
1005       <term
1006 >canvassize (cs)<indexterm
1007 ><primary
1008 >canvassize (cs)</primary
1009 ></indexterm
1010 ></term>
1011       <listitem
1012 ><para
1013 ><screen
1014 >canvassize X,Y</screen>
1015 Käsk <userinput
1016 >canvassize</userinput
1017 > määrab lõuendi suuruse. Käsu sisendiks on X ja Y, kus X on uue lõuendi laius <glossterm linkend="pixels"
1018 >pikslites</glossterm
1019 > ja Y uue lõuendi kõrgus samuti <glossterm linkend="pixels"
1020 >pikslites</glossterm
1021 >. <userinput
1022 >canvassize</userinput
1023 > asemel võib kasutada lühendit <userinput
1024 >cs</userinput
1025 >.</para
1026 ></listitem>
1027     </varlistentry>
1028   </variablelist>
1029   <variablelist>
1030     <anchor id="setbgcolor"/>
1031     <varlistentry
1032 > 
1033       <term
1034 >canvascolor (cc)<indexterm
1035 ><primary
1036 >canvascolor (cc)</primary
1037 ></indexterm
1038 ></term>
1039       <listitem
1040 ><para
1041 ><screen
1042 >canvascolor R,G,B</screen>
1043 Käsk <userinput
1044 >canvascolor</userinput
1045 > määrab lõuendi värvi. <userinput
1046 >canvascolor</userinput
1047 > tahab saada sisendina <glossterm linkend="rgb"
1048 >RGB värvikoodi</glossterm
1049 >. <userinput
1050 >canvascolor</userinput
1051 > asemel võib kasutada ka lühendit <userinput
1052 >cc</userinput
1053 >.</para
1054 ></listitem>
1055     </varlistentry>
1056   </variablelist>
1057 </sect2>
1058 
1059 <sect2 id="clean">
1060 <title
1061 >Puhastamiskäsud</title>
1062 <para
1063 >Kahe käsuga saab lõuendi puhastada sellest, mida sa sinna oled valmis meisterdanud.</para>
1064   <variablelist>
1065     <anchor id="clear"/>
1066     <varlistentry
1067 > 
1068       <term
1069 >clear (ccl)<indexterm
1070 ><primary
1071 >clear (ccl)</primary
1072 ></indexterm
1073 ></term>
1074       <listitem
1075 ><para
1076 ><screen
1077 >clear</screen>
1078 Käsk <userinput
1079 >clear</userinput
1080 > puhastab lõuendilt kogu joonistatu. Muud asjad jäävad püsima: kilpkonna asukoht ja nurk, lõuendivärv, kilpkonna nähaolek ja lõuendi suurus.</para
1081 ></listitem>
1082     </varlistentry>
1083   </variablelist>
1084   <variablelist>
1085     <anchor id="reset"/>
1086     <varlistentry
1087 > 
1088       <term
1089 >reset<indexterm
1090 ><primary
1091 >reset</primary
1092 ></indexterm
1093 ></term>
1094       <listitem
1095 ><para
1096 ><screen
1097 >reset</screen>
1098 Käsk <userinput
1099 >reset</userinput
1100 > puhastab palju rohkem asju kui <userinput
1101 >clear</userinput
1102 >. Pärast käsku <userinput
1103 >reset</userinput
1104 > on kõik taas selline, nagu &kturtle;'i käivitamisel: kilpkonn on lõuendi keskel, lõuendi värv on valge, kilpkonn hakkab liikudes vedama musta joont ja lõuendi suurus on 400 x 400 pikslit.</para
1105 ></listitem>
1106     </varlistentry>
1107   </variablelist>
1108 </sect2>
1109 
1110 <sect2 id="sprites">
1111 <title
1112 >Kilpkonn on sprait</title>
1113 <para
1114 >Vaevalt et paljud teavad, mis õieti on sprait, nii et ütleme siis saladuse välja: sprait on väike pilt, mida saab ekraanil liigutada. Täpsemalt vaata sõnastikust mõiste <glossterm linkend="sprites"
1115 >sprait</glossterm
1116 > kirjeldust. See tähendab, et meie kilpkonn on sprait! </para>
1117 <para
1118 >Toome siin ära kõik käsud, mida saab spraidi puhul kasutada.</para>
1119 <para
1120 >[&kturtle;'i praegune versioon toetab spraidina ainult kilpkonna kasutamist. Aga tulevikus võib olla vägagi võimalik, et võid kilpkonna oma soovi kohaselt millegi muuga asendada.]</para>
1121   <variablelist>
1122     <anchor id="spriteshow"/>
1123     <varlistentry
1124 > 
1125       <term
1126 >spriteshow (ss)<indexterm
1127 ><primary
1128 >spriteshow (ss)</primary
1129 ></indexterm
1130 ></term>
1131       <listitem
1132 ><para
1133 ><screen
1134 >spriteshow</screen>
1135 Käsk <userinput
1136 >spriteshow</userinput
1137 > muudab kilpkonna uuesti nähtavaks pärast tema peitmist. <userinput
1138 >spriteshow</userinput
1139 > asemel võib kasutada ka lühendit <userinput
1140 >ss</userinput
1141 >.</para
1142 ></listitem>
1143     </varlistentry>
1144   </variablelist>
1145   <variablelist>
1146     <anchor id="spritehide"/>
1147     <varlistentry
1148 > 
1149       <term
1150 >spritehide (sh)<indexterm
1151 ><primary
1152 >spritehide (sh)</primary
1153 ></indexterm
1154 ></term>
1155       <listitem
1156 ><para
1157 ><screen
1158 >spritehide</screen>
1159 <userinput
1160 >spritehide</userinput
1161 > peidab kilpkonna. Seda on mõtet kasutada siis, kui kilpkonn kohe kuidagi ei taha sinu joonistusele sobida. <userinput
1162 >spritehide</userinput
1163 > asemel võib kasutada ka lühendit <userinput
1164 >sh</userinput
1165 >.</para
1166 ></listitem>
1167     </varlistentry>
1168   </variablelist>
1169 </sect2>
1170 
1171 <sect2 id="writing">
1172 <title
1173 >Kas kilpkonn oskab ka kirjutada?</title>
1174 <para
1175 >Õige vastus: <quote
1176 >jah, muidugi</quote
1177 >. Kilpkonn võib kirjutada küll, aga mõistagi pead sina talle ütlema, mida kirjutada.</para>
1178   <variablelist>
1179     <anchor id="print"/>
1180     <varlistentry
1181 > 
1182       <term
1183 >print<indexterm
1184 ><primary
1185 >print</primary
1186 ></indexterm
1187 ></term>
1188       <listitem
1189 ><para
1190 ><screen
1191 >print X</screen>
1192 <userinput
1193 >print</userinput
1194 > annab kilpkonnale käsu midagi lõuendile kirjutada. <userinput
1195 >print</userinput
1196 > sisendiks võivad olla nii numbrid kui stringid. Sümbolit <quote
1197 >+</quote
1198 > kasutades saab käsuga <userinput
1199 >print</userinput
1200 > lasta kirjutada mitmesuguseid numbreid ja stringe. Toome siin väikese näite: <screen
1201 >$year = 2003
1202 $author = "Cies"
1203 print $author + " alustas KTurtle'i projekti aastal " + $year + "  ja ta töötab endiselt rõõmuga selle kallal!"
1204 </screen>
1205       </para
1206 ></listitem>
1207     </varlistentry>
1208   </variablelist>
1209   <variablelist>
1210     <anchor id="fontsize"/>
1211     <varlistentry
1212 > 
1213       <term
1214 >fontsize<indexterm
1215 ><primary
1216 >fontsize</primary
1217 ></indexterm
1218 ></term>
1219       <listitem
1220 ><para
1221 ><screen
1222 >fontsize X</screen>
1223 <userinput
1224 >fontsize</userinput
1225 > määrab fondi suuruse, mida <userinput
1226 >print</userinput
1227 > kirjutamisel kasutab. <userinput
1228 >fontsize</userinput
1229 > sisend peab olema number. Suurus määratakse <glossterm linkend="pixels"
1230 >pikslites</glossterm
1231 >.</para
1232 ></listitem>
1233     </varlistentry>
1234   </variablelist>
1235 </sect2>
1236 
1237 <sect2 id="math-commands">
1238 <title
1239 >Matemaatilised käsud</title>
1240 <para
1241 >Järgmised käsud on &kturtle;'i keerukamad matemaatilised käsud.</para>
1242   <variablelist>
1243     <anchor id="round"/>
1244     <varlistentry>
1245       <term
1246 >round<indexterm
1247 ><primary
1248 >round</primary
1249 ></indexterm
1250 ></term>
1251       <listitem
1252 ><para
1253 ><screen
1254 >round(x)</screen>
1255 <userinput
1256 >round</userinput
1257 > ümardab antud arvu lähima täisarvuni. <screen>
1258 print round(10.8)
1259 forward 20
1260 print round(10.3)
1261 </screen
1262 > Selle koodiga kirjutab kilpkonn arvud 11 ja 10.</para
1263 ></listitem>
1264     </varlistentry>
1265   </variablelist>
1266   <variablelist>
1267     <anchor id="random"/>
1268     <varlistentry
1269 > 
1270       <term
1271 >random (rnd)<indexterm
1272 ><primary
1273 >random (rnd)</primary
1274 ></indexterm
1275 ></term>
1276       <listitem
1277 ><para
1278 ><screen
1279 >random X,Y</screen>
1280 <userinput
1281 >random</userinput
1282 > on käsk, mis tahab saada sisendit ja annab kohe ka väljundi. Sisendiks on kaks arvu, milles üks (X) määrab minimaalse ja teine (Y) maksimaalse väljundi. Väljund on juhuslik arv, mis on miinimumiga võrdne või suurem ning maksimumiga võrdne või väiksem. Üks väike näide: <screen>
1283 repeat 500 {
1284   $x = random 1,20
1285   forward $x
1286   turnleft 10 - $x
1287 }
1288 </screen
1289 > Käsuga <userinput
1290 >random</userinput
1291 > saab oma programmi veidi kaootilisemaks muuta.</para
1292 ></listitem>
1293     </varlistentry>
1294   </variablelist>
1295   <variablelist>
1296     <anchor id="mod"/>
1297     <varlistentry
1298 > 
1299       <term
1300 >mod<indexterm
1301 ><primary
1302 >mod</primary
1303 ></indexterm
1304 ></term>
1305       <listitem
1306 ><para
1307 ><screen
1308 >mod X,Y</screen>
1309 Käsk <userinput
1310 >mod</userinput
1311 > tagastab esimese arvu jagamisel teisega tekkiva jäägi.</para
1312 ></listitem>
1313     </varlistentry>
1314   </variablelist>
1315   <variablelist>
1316     <anchor id="sqrt"/>
1317     <varlistentry
1318 > 
1319       <term
1320 >sqrt<indexterm
1321 ><primary
1322 >sqrt</primary
1323 ></indexterm
1324 ></term>
1325       <listitem
1326 ><para
1327 ><screen
1328 >sqrt X</screen>
1329 Käsk <userinput
1330 >sqrt</userinput
1331 > peab leidma arvu X ruutjuure.</para
1332 ></listitem>
1333     </varlistentry>
1334   </variablelist>
1335 <!--
1336   <variablelist>
1337     <anchor id="exp"/>
1338     <varlistentry
1339 > 
1340       <term
1341 >exp<indexterm
1342 ><primary
1343 >exp</primary
1344 ></indexterm
1345 ></term>
1346       <listitem
1347 ><para
1348 ><screen
1349 >sqrt X</screen>
1350       </para
1351 ></listitem>
1352     </varlistentry>
1353   </variablelist>
1354 -->
1355   <variablelist>
1356     <anchor id="pi"/>
1357     <varlistentry
1358 > 
1359       <term
1360 >pi<indexterm
1361 ><primary
1362 >pi</primary
1363 ></indexterm
1364 ></term>
1365       <listitem
1366 ><para
1367 ><screen
1368 >pi</screen>
1369 See käsk tagastab konstandi pii <userinput
1370 >3,14159</userinput
1371 >.</para
1372 ></listitem>
1373     </varlistentry>
1374   </variablelist>
1375   <variablelist>
1376     <anchor id="sin"/>
1377     <anchor id="cos"/>
1378     <anchor id="tan"/>
1379     <varlistentry>
1380       <term
1381 >sin<indexterm
1382 ><primary
1383 >sin</primary
1384 ></indexterm
1385 >, cos<indexterm
1386 ><primary
1387 >cos</primary
1388 ></indexterm
1389 >, tan<indexterm
1390 ><primary
1391 >tan</primary
1392 ></indexterm
1393 ></term>
1394       <listitem
1395 ><para>
1396 <screen
1397 >sin X
1398 cos X
1399 tan X
1400 </screen>
1401 Need kolm käsku esindavad maailmakuulsaid trigonomeetrilisi funktsioone <userinput
1402 >sin</userinput
1403 >, <userinput
1404 >cos</userinput
1405 > ja <userinput
1406 >tan</userinput
1407 >. Nende käskude sisendargument X on <link linkend="number"
1408 >arv</link
1409 >.</para
1410 ></listitem>
1411     </varlistentry>
1412   </variablelist>
1413   <variablelist>
1414     <anchor id="arcsin"/>
1415     <anchor id="arccos"/>
1416     <anchor id="arctan"/>
1417     <varlistentry>
1418       <term
1419 >arcsin<indexterm
1420 ><primary
1421 >arcsin</primary
1422 ></indexterm
1423 >, arccos<indexterm
1424 ><primary
1425 >arccos</primary
1426 ></indexterm
1427 >, arctan<indexterm
1428 ><primary
1429 >arctan</primary
1430 ></indexterm
1431 ></term>
1432       <listitem
1433 ><para>
1434 <screen
1435 >arcsin X
1436 arccos X
1437 arctan X
1438 </screen>
1439 Need käsud on funktsioonide <link linkend="sin"
1440 >sin</link
1441 >, <link linkend="cos"
1442 >cos</link
1443 > and <link linkend="tan"
1444 >tan</link
1445 > pöördväärtused. Nende käskude sisendargument X on <link linkend="number"
1446 >arv</link
1447 >.</para
1448 ></listitem>
1449     </varlistentry>
1450   </variablelist>
1451 </sect2>
1452 
1453 <sect2 id="dialogs">
1454 <title
1455 >Sisend ja tagasiside dialoogide kaudu</title>
1456 <para
1457 >Dialoog on väike hüpikaken, mis annab teatud tagasisidet või soovib saada mingit sisendit. &kturtle; kasutab dialoogidele kaht käsku: <userinput
1458 >message</userinput
1459 > ja <userinput
1460 >ask</userinput
1461 >.</para>
1462   <variablelist>
1463     <anchor id="message"/>
1464     <varlistentry
1465 > 
1466       <term
1467 >message<indexterm
1468 ><primary
1469 >message</primary
1470 ></indexterm
1471 ></term>
1472       <listitem
1473 ><para
1474 ><screen
1475 >message X</screen>
1476 Käsk <userinput
1477 >message</userinput
1478 > vajab sisendina <link linkend="string"
1479 >stringi</link
1480 >. See näitab hüpikdialoogi, mis sisaldab <link linkend="string"
1481 >stringi</link
1482 > teksti. <screen
1483 >message  "Cies alustas KTurtle'iga aastal 2003  ja ta töötab endiselt rõõmuga selle kallal!"
1484 </screen>
1485       </para
1486 ></listitem>
1487     </varlistentry>
1488   </variablelist>
1489   <variablelist>
1490     <anchor id="ask"/>
1491     <varlistentry
1492 > 
1493       <term
1494 >ask<indexterm
1495 ><primary
1496 >ask</primary
1497 ></indexterm
1498 ></term>
1499       <listitem
1500 ><para
1501 ><screen
1502 >ask X</screen>
1503 Käsk <userinput
1504 >ask</userinput
1505 > vajab sisendina <link linkend="string"
1506 >stringi</link
1507 >. See näitab hüpikdialoogi, mis sisaldab stringi nagu ka <link linkend="message"
1508 >message</link
1509 >. Kuid lisaks sellele on dialoogis ka sisendiväli. Selle abil saab kasutaja sisestada <link linkend="number"
1510 >arvu</link
1511 > või <link linkend="string"
1512 >stringi</link
1513 >, mis on võimalik salvestada <link linkend="assignment-of-variables"
1514 >muutujasse</link
1515 > või edastada argumendina <link linkend="commands"
1516 >käsule</link
1517 >. Näide: <screen>
1518 $in = ask "Kui vana sa oled?"
1519 $out = 2003 - $in
1520 print "Aastal 2003 olid sa " + $out + " aastat vana."
1521 </screen
1522 > Kui kasutaja sulgeb sisenddialoogi või ei sisesta midagi, on <link linkend="assignment-of-variables"
1523 >muutuja</link
1524 > tühi.</para
1525 ></listitem>
1526     </varlistentry>
1527   </variablelist>
1528 </sect2>
1529 
1530 </sect1>
1531 
1532 
1533 
1534 <sect1 id="assignment-of-variables">
1535 <title
1536 >Muutujate omistamine</title>
1537 <para
1538 >Kõigepealt vaatleme muutujaid, seejärel neile väärtuse omistamist. </para>
1539 
1540 <para
1541 >Muutujad on sõnad, mille alguses seisab <quote
1542 >$</quote
1543 >. <link linkend="the-editor"
1544 >Redaktoris</link
1545 > on nad <glossterm
1546 >esile tõstetud</glossterm
1547 > purpurse värviga.</para>
1548 
1549 <para
1550 >Muutujad võivad sisaldada suvalist <link linkend="number"
1551 >arvu</link
1552 >, <link linkend="string"
1553 >stringi</link
1554 > või <link linkend="boolean-value"
1555 >tõeväärtust</link
1556 >. Omistamise <userinput
1557 >=</userinput
1558 > abil antakse muutujale sisu. See sisu püsib seni, kuni programm lõpetab käskude täitmise või kuni muutujale pole omistatud midagi muud.</para>
1559 
1560 <para
1561 >Omistatud muutujaid saab seejärel kasutada vastavalt nende sisule. Võtame näiteks järgmise &turtlescript;i killukese: <screen>
1562 $x = 10
1563 $x = $x / 3
1564 print $x
1565 </screen
1566 > Kõigepealt omistatakse muutujale <userinput
1567 >$x</userinput
1568 > väärtus <userinput
1569 >10</userinput
1570 >. Seejärel omistatakse muutujale <userinput
1571 >$x</userinput
1572 > iseenda väärtus jagatud <userinput
1573 >3</userinput
1574 >-ga &mdash; see tähendab, et muutuja <userinput
1575 >$x</userinput
1576 > väärtuseks saab tehte <userinput
1577 >10 / 3</userinput
1578 > tulemus. Lõpuks <userinput
1579 >$x</userinput
1580 > näidatakse. Teisel ja kolmandal real on näha, et muutujat <userinput
1581 >$x</userinput
1582 > kasutatakse nagu arvu.</para>
1583 
1584 <para
1585 >Et muutujaid kasutada, tuleb neile väärtus omistada. Näide: <screen>
1586 print $n
1587 </screen
1588 > See ei näita mitte midagi ja annab vaid veateate.</para>
1589 
1590 <para
1591 >See oli lihtne, aga võtame kohe &turtlescript;i raskema näite: <screen>
1592 $a = 2004
1593 $b = 25
1594 
1595 # the next command prints "2029"
1596 print $a + $b
1597 backward 30
1598 # the next command prints "2004 plus 25 equals 2029"
1599 print $a + " plus " + $b + " equals " + ($a + $b)
1600 </screen
1601 > Esimesel kahel real määratakse muutujate <userinput
1602 >$a</userinput
1603 > ja <userinput
1604 >$b</userinput
1605 > väärtuseks 2004 ja 25. Ülejäänud osa näitest koosneb kahest käsust <userinput
1606 >print</userinput
1607 >, mida eraldab käsk <userinput
1608 >backward 30</userinput
1609 >. Kommentaarid selgitavad, mida käsud teevad. Käsk <userinput
1610 >backward 30</userinput
1611 > on selleks, et iga väljund oleks ikka uuel real. Toodud näites on ka näha, et muutujaid saab kasutada nende sisuga mis tahes <link linkend="operators"
1612 >tehete</link
1613 > sooritamiseks või sisendina, kui kutsuda välja mõni <link linkend="commands"
1614 >käsk</link
1615 >.</para>
1616 
1617 <para
1618 >Veel üks näide: <screen>
1619 $name = ask "What is your name?"
1620 print "Hi " + $name + "! Good luck while learning the art of programming..."
1621 </screen
1622 > Siin on kõik päris selge ning ka siin võib näha, et muutujat <userinput
1623 >$name</userinput
1624 > kasutatakse nagu stringi.</para>
1625 
1626 <para
1627 >Muutujate kasutamisel on suureks abiks <link linkend="the-inspector"
1628 >inspektor</link
1629 >. See näitab kõigi kasutusel olevate muutujate sisu.</para>
1630 </sect1>
1631 
1632 
1633 
1634 <sect1 id="controlling-execution">
1635 <title
1636 >Täitmise kontrollimine</title>
1637 <para
1638 >Täitmise kontrollerid lubavad &mdash; nagu nimetuski ütleb &mdash; kontrollida käsu täitmist.</para>
1639 <para
1640 >Täitmise kontrollimise käsud on <glossterm
1641 >esile tõstetud</glossterm
1642 > tumerohelise rasvase kirjaga. Looksulud, mida väga sageli koos täitmise kontrolleritega pruugitakse, on <glossterm
1643 >esile tõstetud</glossterm
1644 > musta värviga.</para>
1645 
1646 <sect2 id="wait">
1647 <title
1648 >Kilpkonna ootelejätmine</title>
1649 <para
1650 >Kui oled juba natuke &kturtle;'iga harjutanud, paned tähele, et kilpkonn võib päris kiiresti joonistada. See käsk muudab tema tegevuse aga veidi aeglasemaks.</para>
1651   <variablelist>
1652     <varlistentry>
1653       <term
1654 >wait<indexterm
1655 ><primary
1656 >wait</primary
1657 ></indexterm
1658 ></term>
1659       <listitem
1660 ><para
1661 ><screen
1662 >wait X</screen>
1663 <userinput
1664 >wait</userinput
1665 > paneb kilpkonna X sekundiks ootama. <screen>
1666 repeat 36 {
1667   forward 5
1668   turnright 10
1669   wait 0.5
1670 }
1671 </screen
1672 > Selle koodiga joonistatakse ringjoon, aga kilpkonn ootab igal sammul pool sekundit. See jätab mulje nii enam-vähem normaalse kiirusega liikuvast kilpkonnast - vähemalt kilpkonna kohta...</para
1673 ></listitem>
1674     </varlistentry>
1675   </variablelist>
1676 </sect2>
1677 
1678 <sect2 id="if">
1679 <title
1680 >Tingimuse "kui" (if) täitmine</title>
1681   <variablelist>
1682     <varlistentry>
1683       <term
1684 >if<indexterm
1685 ><primary
1686 >if</primary
1687 ></indexterm
1688 ></term>
1689       <listitem
1690 ><para
1691 ><screen
1692 >if <link linkend="boolean-value"
1693 >tõeväärtus</link
1694 > { ... }</screen>
1695 Kood, mis seisab sulgudes, täidetakse ainult siis, kui (<userinput
1696 >if</userinput
1697 >) <link linkend="boolean-value"
1698 >tõeväärtuse</link
1699 > väärtus on <quote
1700 >tõene</quote
1701 >. <screen>
1702 $x = 6
1703 if $x &gt; 5 {
1704   print "$x is greater than five!"
1705 }
1706 </screen
1707 > Esimesel real määratakse <userinput
1708 >$x</userinput
1709 > väärtuseks 6. Teisel real kasutatakse <link linkend="comparing-operators"
1710 >võrdlustehet</link
1711 > <userinput
1712 >$x &gt; 5</userinput
1713 > hindamiseks. Et hinnang on <quote
1714 >tõene</quote
1715 > ehk 6 on suurem kui 5, lubab täitmise kontroller <userinput
1716 >if</userinput
1717 > looksulgudes oleva koodi täita.</para
1718 ></listitem>
1719     </varlistentry>
1720   </variablelist>
1721 </sect2>
1722 
1723 <sect2 id="else">
1724 <title
1725 >Vastasel juhul ehk "else"</title>
1726   <variablelist>
1727     <varlistentry>
1728       <term
1729 >else<indexterm
1730 ><primary
1731 >else</primary
1732 ></indexterm
1733 ></term>
1734       <listitem
1735 ><para
1736 ><screen
1737 >if <link linkend="boolean-value"
1738 >tõeväärtus</link
1739 > { ... } else { ... }</screen>
1740 Kontrollerit <userinput
1741 >else</userinput
1742 > saab kasutada koos kontrolleriga <link linkend="if"
1743 ><userinput
1744 >if</userinput
1745 ></link
1746 >. Kood, mis seisab looksulgudes <userinput
1747 >else</userinput
1748 > järel, täidetakse ainult siis, kui <link linkend="boolean-value"
1749 >tõeväärtuse</link
1750 > väärtus on <quote
1751 >väär</quote
1752 >. <screen>
1753 reset
1754 $x = 4
1755 if $x &gt; 5 {
1756   print "$x is greater than five!"
1757 } else {
1758   print "$x is smaller than six!"
1759 }
1760 </screen
1761 > <link linkend="comparing-operators"
1762 >Võrdlustehe</link
1763 > hindab avaldist <userinput
1764 >$x &gt; 5</userinput
1765 >. Et 4 ei ole suurem kui 5, on väärtuseks <quote
1766 >väär</quote
1767 >. See tähendab, et täidetakse kood, mis seisab looksulgudes <userinput
1768 >else</userinput
1769 > järel.</para
1770 ></listitem>
1771     </varlistentry>
1772   </variablelist>
1773 </sect2>
1774 
1775 <sect2 id="while">
1776 <title
1777 >Silmus "while"</title>
1778   <variablelist>
1779     <varlistentry>
1780       <term
1781 >while<indexterm
1782 ><primary
1783 >while</primary
1784 ></indexterm
1785 ></term>
1786       <listitem
1787 ><para
1788 ><screen
1789 >while <link linkend="boolean-value"
1790 >tõeväärtus</link
1791 > { ... }</screen>
1792 Täitmise kontroller <userinput
1793 >while</userinput
1794 > on üsna sarnane kontrolleriga <link linkend="if"
1795 ><userinput
1796 >if</userinput
1797 ></link
1798 >. Nende peamine erinevus seisab selles, et <userinput
1799 >while</userinput
1800 > kordab looksulgudes olevat koodi seni, kuni vastus <link linkend="boolean-value"
1801 >tõeväärtus</link
1802 > on lõpuks <quote
1803 >väär</quote
1804 >. <screen>
1805 $x = 1
1806 while $x &lt; 5 {
1807   forward 10
1808   wait 1
1809   $x = $x + 1
1810 }
1811 </screen
1812 > Esimesel real määratakse <userinput
1813 >$x</userinput
1814 > väärtuseks 1. Teisel real hinnatakse avaldist <userinput
1815 >$x &lt; 5</userinput
1816 >. Et vastus sellele küsimusele on <quote
1817 >tõene</quote
1818 >, alustab täitmise kontroller <userinput
1819 >while</userinput
1820 > looksulgudes oleva koodi täitmist ja teeb seda seni, kuni <userinput
1821 >$x &lt; 5</userinput
1822 > on lõpuks <quote
1823 >väär</quote
1824 >. Antud juhul täidetakse looksulgudes olevat koodi neli korda, sest iga viienda rea täitmisega suureneb <userinput
1825 >$x</userinput
1826 > ühe võrra.</para
1827 ></listitem>
1828     </varlistentry>
1829   </variablelist>
1830 </sect2>
1831 
1832 <sect2 id="repeat">
1833 <title
1834 >Silmus "repeat"</title>
1835   <variablelist>
1836     <varlistentry>
1837       <term
1838 >repeat<indexterm
1839 ><primary
1840 >repeat</primary
1841 ></indexterm
1842 ></term>
1843       <listitem
1844 ><para
1845 ><screen
1846 >repeat <link linkend="number"
1847 >arv</link
1848 > { ... }</screen>
1849 Täitmise kontroller <userinput
1850 >repeat</userinput
1851 > on üpris sarnane kontrolleriga <link linkend="while"
1852 ><userinput
1853 >while</userinput
1854 ></link
1855 >. Erinevus seisab selles, et <userinput
1856 >repeat</userinput
1857 > kordab sulgudes olevat koodi määratud arv kordi.</para
1858 ></listitem>
1859     </varlistentry>
1860   </variablelist>
1861 </sect2>
1862 
1863 <sect2 id="for">
1864 <title
1865 >Arvestussilmus "for"</title>
1866   <variablelist>
1867     <varlistentry>
1868       <term
1869 >for<indexterm
1870 ><primary
1871 >for</primary
1872 ></indexterm
1873 ><indexterm
1874 ><primary
1875 >step</primary
1876 ></indexterm
1877 ></term>
1878       <listitem
1879 ><para
1880 ><screen
1881 >for <link linkend="assignment-of-variables"
1882 >muutuja</link
1883 > = <link linkend="number"
1884 >arv</link
1885 > to <link linkend="number"
1886 >arv</link
1887 > { ... }</screen>
1888 <userinput
1889 >for</userinput
1890 > on <quote
1891 >arvestussilmus</quote
1892 >, mis teeb midagi teatud arv kordi. Esimene arv määrab muutujale esimese silmuse väärtuse. Iga silmusega arv suureneb, kuni jõuab teise arvuni. <screen>
1893 for $x = 1 to 10 {
1894   print $x * 7
1895   forward 15
1896 }
1897 </screen
1898 > Igal looksulgudes oleva koodi täitmisel antakse <userinput
1899 >$x</userinput
1900 > väärtus ühe võrra suuremana, kuni <userinput
1901 >$x</userinput
1902 > võrdub lõpuks 10. Looksulgudes olev kood antud juhul kirjutab tehte '<userinput
1903 >$x</userinput
1904 > korda 7' tulemuse. Kui programm on töö lõpetanud, on tulemuseks lõuendil ilutsev numbri 7 korrutustabelike. </para>
1905      <para
1906 >Silmuse sammu vaikesuurus on 1, aga kasutada võib mis tahes väärtust. <screen
1907 >for <link linkend="assignment-of-variables"
1908 >muutuja</link
1909 > = <link linkend="number"
1910 >arv</link
1911 > to <link linkend="number"
1912 >arv</link
1913 > step <link linkend="number"
1914 >arv</link
1915 > { ... }</screen
1916 ></para
1917 ></listitem>
1918     </varlistentry>
1919   </variablelist>
1920 </sect2>
1921 
1922 <sect2 id="break">
1923 <title
1924 >Silmusest väljumine</title>
1925   <variablelist>
1926     <varlistentry>
1927       <term
1928 >break<indexterm
1929 ><primary
1930 >break</primary
1931 ></indexterm
1932 ></term>
1933       <listitem
1934 ><para
1935 ><screen
1936 >break</screen>
1937 Katkestab otsekohe aktiivse silmuse ning annab järje üle vahetult silmuse järel seisvale lausele.</para
1938 ></listitem>
1939     </varlistentry>
1940   </variablelist>
1941 </sect2>
1942 
1943 <sect2 id="exit">
1944 <title
1945 >Programmi täitmise peatamine</title>
1946   <variablelist>
1947     <varlistentry>
1948       <term
1949 >exit<indexterm
1950 ><primary
1951 >exit</primary
1952 ></indexterm
1953 ></term>
1954       <listitem
1955 ><para
1956 ><screen
1957 >exit</screen>
1958 Lõpetab programmi täitmise.</para
1959 ></listitem>
1960     </varlistentry>
1961   </variablelist>
1962 </sect2>
1963 
1964 <sect2 id="assert">
1965 <title
1966 >Eelduse kontrollimine käitusajal</title>
1967   <variablelist>
1968     <varlistentry>
1969       <term
1970 >assert<indexterm
1971 ><primary
1972 >assert</primary
1973 ></indexterm
1974 ></term>
1975       <listitem
1976 ><para
1977 ><screen
1978 >assert <link linkend="boolean-value"
1979 >tõeväärtus</link
1980 ></screen>
1981 Seda saab kasutada programmi või sisendi korrektsuse kontrollimiseks. <screen
1982 >$in = ask "Mis on sinu sünniaasta?"
1983 # aasta peab olema positiivne
1984 assert $in 
1985 > 0
1986 </screen
1987 ></para
1988 ></listitem>
1989     </varlistentry>
1990   </variablelist>
1991 </sect2>
1992 </sect1>
1993 
1994 
1995 <sect1 id="learn">
1996 
1997 
1998 <!--<sect2 id="name">
1999 <title
2000 >Names</title>
2001 <para
2002 >When using the &turtlescript; programming language you create new things. If you write a program you will often need <link linkend="containers"
2003 >containers</link
2004 > and in some cases you need <link linkend="learn"
2005 >learn</link
2006 > to create new commands. When making a new command with <link linkend="learn"
2007 >learn</link
2008 > you will have to specify a name.</para>
2009 <para
2010 >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"
2011 >forward</link
2012 >, since that name is already used for an internal command.
2013 <screen
2014 >
2015 # here forward is used as a new command, 
2016 # but it already has a meaning so 
2017 # this will produce an error:
2018 learn forward {
2019   print "this is invalid"
2020 }
2021 
2022 # this works:
2023 learn myforward {
2024   print "this is ok"
2025 }
2026 </screen>
2027 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 ($).
2028 <screen
2029 >
2030 # here forward is used as a container, 
2031 # starting with the $ prefix, so it does
2032 # not conflict with the forward command
2033 $forward = 20
2034 print $forward
2035 </screen>
2036 </para>
2037 <para
2038 >Containers are <glossterm
2039 >highlighted</glossterm
2040 > with bolded purple in the <link linkend="the-editor"
2041 >code editor</link
2042 >.</para>
2043 <para>
2044 Please read the documentation on <link linkend="containers"
2045 >containers</link
2046 > and the <link linkend="learn"
2047 >learn</link
2048 > command for a better explanation and more examples.
2049 </para>
2050 </sect2
2051 >-->
2052 
2053 
2054 
2055 
2056 
2057 <title
2058 >Omaenda käskude loomine käsuga <quote
2059 >learn</quote
2060 ></title>
2061 <para
2062 >Käsk <userinput
2063 >learn</userinput
2064 > on väga eriline, sest selle abil saab luua omaenda käske. Sinu loodud käsk võib kasutada nii <glossterm linkend="input-output"
2065 >sisendit</glossterm
2066 > kui anda <glossterm linkend="input-output"
2067 >väljundit</glossterm
2068 >. Vaatamegi nüüd, kuidas uus käsk luua. <screen>
2069 learn ringjoon $x {
2070   repeat 36 {
2071     forward $x
2072     turnleft 10
2073   }
2074 }
2075 </screen
2076 > Uus käsk kannab nime <userinput
2077 >ringjoon</userinput
2078 >. <userinput
2079 >ringjoon</userinput
2080 > kasutab <glossterm linkend="input-output"
2081 >sisendina</glossterm
2082 > argumenti, mis määrab ringjoone suuruse. <userinput
2083 >ringjoon</userinput
2084 > ei tagasta mingit <glossterm linkend="input-output"
2085 >väljundit</glossterm
2086 >. Nüüd võime käsku <userinput
2087 >ringjoon</userinput
2088 > kasutada täiesti tavalise käsuna, nagu selles näites: <screen
2089 >learn ringjoon $X {
2090   repeat 36 {
2091     forward $X 
2092     turnleft 10 
2093   }
2094 }
2095 
2096 go 200,200 
2097 ringjoon 20
2098 
2099 go 300,200 
2100 ringjoon 40  
2101 </screen>
2102 </para>
2103 <para
2104 >Järgmises näites aga loome väljundväärtusega käsu. <screen>
2105 learn faculty $x {
2106   $r = 1
2107   for $i = 1 to $x {
2108     $r = $r * $i
2109   }
2110   return $r
2111 }
2112 
2113 print faculty 5
2114 </screen
2115 > Selles näites on uue käsu nimeks <userinput
2116 >faculty</userinput
2117 >. Kui käsu sisend on on <userinput
2118 >5</userinput
2119 >, siis väljund on <userinput
2120 >5*4*3*2*1</userinput
2121 >. Käsk <userinput
2122 >return</userinput
2123 > määrab kindlaks väärtuse ning täitmisega tagastataksegi väljundväärtus.</para>
2124 <para
2125 >Käskudel võib olla enam kui üks <glossterm linkend="input-output"
2126 >sisend</glossterm
2127 >. Järgmises näites luuakse käsk, mis toob kaasa ristküliku joonistamise. <screen>
2128 learn box $x, $y {
2129   forward $y
2130   turnright 90
2131   forward $x
2132   turnright 90
2133   forward $y
2134   turnright 90
2135   forward $x
2136   turnright 90
2137 }
2138 </screen
2139 > Nüüd võid käivitada <userinput
2140 >box 50, 100</userinput
2141 > ning kilpkonn joonistab lõuendile ristküliku. </para>
2142   
2143 </sect1>
2144 
2145 </chapter>