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 > 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 < 10) and ($b == 5)) and ($a < $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 < 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 > 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 > $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 < $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 >= $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 <= $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 — 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 — nagu nimetuski ütleb — 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 > 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 > 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 > 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 > 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 < 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 < 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 < 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>