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

0001 <chapter id="reference">
0002 <title
0003 >Programmeringsreferens för &kturtle;s språk</title>
0004 <para
0005 >Det här är referensen för &kturtle;s språk. I kapitlets första avsnitt, kan du ta en titt på vissa aspekter hos <link linkend="grammar"
0006 >grammatiken</link
0007 > i &kturtle;s språk. Det andra avsnittet handlar enbart om <link linkend="mathematical-operators"
0008 >matematiska operatorer</link
0009 >, <link linkend="boolean-operators"
0010 >Booleska operatorer (sann eller falsk)</link
0011 > och <link linkend="comparing-operators"
0012 >jämförelseoperatorer</link
0013 >. Det tredje avsnittet är egentlingen en enorm lista med alla <link linkend="commands"
0014 >kommandon</link
0015 > som förklaras ett i taget. Avsnitt fyra förklarar hur värden <link linkend="assignment-of-variables"
0016 >tilldelas</link
0017 > till <link linkend="assignment-of-variables"
0018 >variabler</link
0019 >. Till sist förklarar vi hur körning av kommandon arrangeras med <link linkend="controlling-execution"
0020 >kommandon för styrning av körningen</link
0021 > i avsnitt fem, och hur egna kommandon kan skapas med <link linkend="learn"
0022 ><userinput
0023 >lär</userinput
0024 ></link
0025 > i avsnitt sex.</para>
0026 
0027 <sect1 id="grammar">
0028 <title
0029 >Grammatiken för &kturtle;s språk</title>
0030 <para
0031 >Som med alla språk, har &kturtle;s språk olika typer av ord och symboler. På svenska skiljer vi på verb (som 'att gå' eller 'att sjunga') och substantiv (som 'syster' eller 'hus'), eftersom de används för olika syften. &kturtle;s språk är ett programspråk, och används för att tala om för &kturtle; vad som ska göras.</para>
0032 <para
0033 >I det här avsnittet förklaras vissa av de olika typerna av ord och symboler &kturtle;s språk kortfattat. Vi förklarar <link linkend="comment"
0034 >kommentarer</link
0035 >, <link linkend="command"
0036 >kommandon</link
0037 > och de tre olika typerna av litteraler: <link linkend="number"
0038 >tal</link
0039 >, <link linkend="string"
0040 >strängar</link
0041 > och <link linkend="boolean-value"
0042 >Booleska värden (sann eller falsk)</link
0043 >.</para>
0044 
0045 
0046 <sect2 id="comment">
0047 <title
0048 >Kommentarer</title>
0049 <para
0050 >Ett program består av instruktioner som utförs när programmet körs, och så kallade kommentarer. Kommentarer utförs inte. &kturtle; ignorerar helt enkelt dem när programmet körs. Kommentarer finns till för andra programmerare, för att få dem att förstå programmet bättre. Allt som följer symbolen <userinput
0051 >#</userinput
0052 > anses vara en kommentar i &kturtle;s språk. Exempelvis gör det här lilla programmet ingenting: <screen>
0053 # det här lilla programmet gör ingenting, det är bara en kommentar!
0054 </screen
0055 > Det är inte särskilt användbart, men förklarar saken bra.</para>
0056 <para
0057 >Kommentarer är mycket användbara när programmen blir lite mer komplicerade. De kan hjälpa till med att ge råd till andra programmerare. I följande program ser du kommentarer som används tillsammans med kommandot <link linkend="print"
0058 >skriv</link
0059 >. <screen>
0060 # Programmet är skapat av Cies Breijs.
0061 skriv "Den här texten skrivs ut på duken"
0062 # Den föregående raden är inte en kommentar, men nästa rad är det:
0063 # skriv "Den här texten kommer inte att skrivas ut."
0064 </screen
0065 > Den första raden beskriver programmet. Den andra raden utförs av &kturtle; och skriver ut <userinput
0066 >Den här texten skrivs ut på duken</userinput
0067 > på duken. Den tredje raden är en kommentar, och den fjärde raden är en kommentar som innehåller kod på &kturtle;s språk. Om symbolen <userinput
0068 >#</userinput
0069 > skulle tas bort från den fjärde raden, skulle utskriften utföras av &kturtle;. Programmerare säger: utskriften på fjärde raden är 'bortkommenterad'.</para>
0070 <para
0071 >Kommentarrader är <glossterm
0072 >färglagda</glossterm
0073 > med ljusgrått i <link linkend="the-editor"
0074 >editorn</link
0075 >.</para>
0076 </sect2>
0077 
0078 <sect2 id="command">
0079 <title
0080 >Kommandon</title>
0081 <para
0082 >Genom att använda kommentarer kan du tala om för sköldpaddan eller &kturtle; att göra någonting. Vissa kommandon behöver indata, vissa ger utdata. <screen>
0083 # framåt är ett kommando som behöver indata, i detta fall talet 100:
0084 framåt 100
0085 </screen
0086 > Den första raden är en <link linkend="comment"
0087 >kommentar</link
0088 >. Den andra raden innehåller kommandot <userinput
0089 >framåt</userinput
0090 > och <link linkend="number"
0091 >talet</link
0092 > <userinput
0093 >100</userinput
0094 >. Talet är inte en del av kommandot, utan anses vara 'indata' till kommandot.</para>
0095 <para
0096 >Vissa kommandon, som t.ex. <userinput
0097 >gå</userinput
0098 > behöver mer än ett indatavärde. Flera värden måste skiljas åt med ett kommatecken: <userinput
0099 >,</userinput
0100 >.</para>
0101 <para
0102 >För en detaljerad översikt av alla kommandon som &kturtle; stöder, titta <link linkend="commands"
0103 >här</link
0104 >. Inbyggda kommandon är <glossterm
0105 >färglagda</glossterm
0106 > med mörkblått.</para>
0107 </sect2>
0108 
0109 <sect2 id="number">
0110 <title
0111 >Tal</title>
0112 <para
0113 >Troligen kan du redan en hel del om tal. Sättet som tal används i &kturtle; är inte särskilt annorlunda än ett talat språk eller matematik.</para>
0114 <para
0115 >Vi har de så kallade naturliga talen: <userinput
0116 >0</userinput
0117 >, <userinput
0118 >1</userinput
0119 >, <userinput
0120 >2</userinput
0121 >, <userinput
0122 >3</userinput
0123 >, <userinput
0124 >4</userinput
0125 >, <userinput
0126 >5</userinput
0127 >, etc. De negativa talen: <userinput
0128 >-1</userinput
0129 >, <userinput
0130 >-2</userinput
0131 >, <userinput
0132 >-3</userinput
0133 >, etc. Och talen med decimaler eller decimaltalen, till exempel: <userinput
0134 >0.1</userinput
0135 >, <userinput
0136 >3.14</userinput
0137 >, <userinput
0138 >33.3333</userinput
0139 >, <userinput
0140 >-5.05</userinput
0141 >, <userinput
0142 >-1.0</userinput
0143 >. Tecknet <userinput
0144 >.</userinput
0145 > (punkt) används som decimaltecken. </para>
0146 <para
0147 >Tal kan användas i <link linkend="mathematical-operators"
0148 >matematiska beräkningar</link
0149 > och <link linkend="comparing-operators"
0150 >jämförelser</link
0151 >. De kan också placeras i <link linkend="assignment-of-variables"
0152 >variabler</link
0153 >. Tal <glossterm
0154 >färgläggs</glossterm
0155 > i mörkrött.</para>
0156 </sect2>
0157 
0158 <!-- constants like pi? -->
0159 
0160 <sect2 id="string">
0161 <title
0162 >Strängar</title>
0163 <para
0164 >Först ett exempel: <screen>
0165 skriv "Hej, jag är en sträng."
0166 </screen
0167 > I det här exemplet är <userinput
0168 >skriv</userinput
0169 > ett kommando, medan <userinput
0170 >"Hej, jag är en sträng."</userinput
0171 > är en sträng. Strängar börjar och slutar med tecknet <userinput
0172 >"</userinput
0173 >. Det är dessa tecken som gör att &kturtle; vet att det är en sträng.</para>
0174 <para
0175 >Strängar kan tilldelas till <link linkend="assignment-of-variables"
0176 >variabler</link
0177 > precis som <link linkend="number"
0178 >tal</link
0179 >. Ändå, i motsats till tal, kan inte strängar användas med <link linkend="mathematical-operators"
0180 >matematiska operatorer</link
0181 > eller <link linkend="comparing-operators"
0182 >jämförelseoperatorer</link
0183 >. Strängar <glossterm
0184 >färgläggs</glossterm
0185 > med rött.</para>
0186 </sect2>
0187 
0188 <sect2 id="boolean-value">
0189 <title
0190 >Booleska värden (sann eller falsk)</title>
0191 <para
0192 >Det finns bara två Booleska värden: <userinput
0193 >sann</userinput
0194 ><indexterm
0195 ><primary
0196 >sann</primary
0197 ></indexterm
0198 > och <userinput
0199 >falsk</userinput
0200 ><indexterm
0201 ><primary
0202 >falsk</primary
0203 ></indexterm
0204 >. Ibland kallas de också <quote
0205 ><userinput
0206 >på</userinput
0207 ></quote
0208 > och <quote
0209 ><userinput
0210 >av</userinput
0211 ></quote
0212 >, <quote
0213 ><userinput
0214 >ja</userinput
0215 ></quote
0216 > och <quote
0217 ><userinput
0218 >nej</userinput
0219 ></quote
0220 >, <quote
0221 ><userinput
0222 >ett</userinput
0223 ></quote
0224 > och <quote
0225 ><userinput
0226 >noll</userinput
0227 ></quote
0228 >. Men i &kturtle;s språk kallar vi dem alltid <userinput
0229 >sann</userinput
0230 > och <userinput
0231 >falsk</userinput
0232 >. Ta en titt på följande kod i &kturtle;s språk: <screen>
0233 a = sann
0234 </screen
0235 > Om du tittar i <link linkend="the-inspector"
0236 >inspektören</link
0237 > kan du se att <link linkend="assignment-of-variables"
0238 >variabeln</link
0239 > <userinput
0240 >$a</userinput
0241 > har värdet <userinput
0242 >sann</userinput
0243 >, och typen Boolean.</para>
0244 <para
0245 >Ofta är Booleska värden resultat av en <link linkend="comparing-operators"
0246 >jämförelseoperator</link
0247 >, som i följande kod på &kturtle;s språk: <screen>
0248 $svar = 10 &gt; 3
0249 </screen
0250 > <link linkend="assignment-of-variables"
0251 >Variabeln</link
0252 > <userinput
0253 >$svar</userinput
0254 > tilldelas <userinput
0255 >sann</userinput
0256 > eftersom <userinput
0257 >10</userinput
0258 > är större än <userinput
0259 >3</userinput
0260 >.</para>
0261 <para
0262 >Booleska värden, <userinput
0263 >sann</userinput
0264 > och <userinput
0265 >falsk</userinput
0266 >, <glossterm
0267 >färgläggs</glossterm
0268 > med mörkrött.</para>
0269 </sect2>
0270 
0271 </sect1>
0272 
0273 
0274 
0275 <sect1 id="operators">
0276 <title
0277 >Matematiska, Booleska och jämförelseoperatorer</title>
0278 <para
0279 >Det här avsnittets titel kan låta mycket svår, men det är inte så svårt som det låter.</para>
0280 
0281 <sect2 id="mathematical-operators">
0282 <title
0283 >Matematiska operatorer</title>
0284 <para
0285 >Det här är de grundläggande matematiska symbolerna: addera (<userinput
0286 >+</userinput
0287 >), subtrahera (<userinput
0288 >-</userinput
0289 >), multiplicera (<userinput
0290 >*</userinput
0291 >), dividera (<userinput
0292 >/</userinput
0293 >) och upphöjt till (<userinput
0294 >^</userinput
0295 >).</para>
0296 
0297 <para
0298 >Här är ett litet exempel på de matematiska operatorerna du kan använda med &kturtle;s språk: <screen>
0299 $addera       = 1 + 1
0300 $subtrahera   = 20 - 5
0301 $multiplicera = 15 * 2
0302 $dividera     = 30 / 30
0303 $upphöja      = 2 ^ 2
0304 </screen
0305 > Värden som är resultatet av matematiska operationer <link linkend="assignment-of-variables"
0306 >tilldelas</link
0307 > till diverse <link linkend="assignment-of-variables"
0308 >variabler</link
0309 >. Genom att använda <link linkend="the-inspector"
0310 >inspektören</link
0311 > kan du se värdena.</para>
0312 <para
0313 >Om du bara vill göra en enkel beräkning kan du skriva något som liknar detta: <screen
0314 >skriv 2010-12
0315 </screen
0316 ></para>
0317 <para
0318 >Nu ett exempel med parenteser: <screen>
0319 skriv ( ( 20 - 5 ) * 2 / 30 ) + 1
0320 </screen
0321 > Uttrycken inne i parenteserna räknas ut först. I det här exemplet beräknas 20-5, och därefter multipliceras det med 2, divideras med 30 och därefter läggs 1 till (vilket ger 2). Parenteser kan också användas i andra fall.</para>
0322 <para
0323 >&kturtle; har också mer avancerade matematiska funktioner i form av kommandon. Ta en titt på följande kommandon, men var medveten om att det gäller avancerade operationer: <link linkend="round"
0324 >avrunda</link
0325 >, <link linkend="random"
0326 >slump</link
0327 >, <link linkend="sqrt"
0328 >kvadratrot</link
0329 >, <link linkend="pi"
0330 >pi</link
0331 >, <link linkend="sin"
0332 >sin</link
0333 >, <link linkend="cos"
0334 >cos</link
0335 >, <link linkend="tan"
0336 >tan</link
0337 >, <link linkend="arcsin"
0338 >arcsin</link
0339 >, <link linkend="arccos"
0340 >arccos</link
0341 >, <link linkend="arctan"
0342 >arctan</link
0343 >.</para>
0344 </sect2>
0345 
0346 <sect2 id="boolean-operators">
0347 <title
0348 >Booleska operatorer (sann eller falsk)</title>
0349 <para
0350 >Medan <link linkend="mathematical-operators"
0351 >matematiska operatorer</link
0352 > i huvudsak är till för <link linkend="number"
0353 >tal</link
0354 >, är Booleska operatorer till för <link linkend="boolean-value"
0355 >Booleska värden</link
0356 > (<userinput
0357 >sann</userinput
0358 > och <userinput
0359 >falsk</userinput
0360 >). Det finns bara tre booleska operatorer, nämligen: <userinput
0361 >och</userinput
0362 ><indexterm
0363 ><primary
0364 >och</primary
0365 ></indexterm
0366 >, <userinput
0367 >eller</userinput
0368 ><indexterm
0369 ><primary
0370 >eller</primary
0371 ></indexterm
0372 > och <userinput
0373 >inte</userinput
0374 ><indexterm
0375 ><primary
0376 >inte</primary
0377 ></indexterm
0378 >. Följande kod på &kturtle;s språk visar hur de används: <screen>
0379 $och_1_1 = sann  och sann   # -> sann
0380 $och_1_0 = sann  och falsk  # -> falsk
0381 $och_0_1 = falsk och sann   # -> falsk
0382 $och_0_0 = falsk och falsk  # -> falsk
0383 
0384 $eller_1_1 = sann  eller sann    # -> sann
0385 $eller_1_0 = sann  eller falsk   # -> sann
0386 $eller_0_1 = falsk eller sann    # -> sann
0387 $eller_0_0 = falsk eller falsk   # -> falsk
0388 
0389 $inte_1 = inte sann   # -> falsk
0390 $inte_0 = inte falsk  # -> sann
0391 </screen
0392 > Genom att använda <link linkend="the-inspector"
0393 >inspektören</link
0394 > kan du se värdena, men vi tillhandahåller också resultaten som små kommentarer i slutet av raderna. <userinput
0395 >och</userinput
0396 > utvärderas bara som <userinput
0397 >sann</userinput
0398 > om båda sidorna är <userinput
0399 >sann</userinput
0400 >. <userinput
0401 >eller</userinput
0402 > utvärderas som <userinput
0403 >sann</userinput
0404 > om någon av sidorna är <userinput
0405 >sann</userinput
0406 >. Och <userinput
0407 >inte</userinput
0408 > omvandlar <userinput
0409 >sann</userinput
0410 > till <userinput
0411 >falsk</userinput
0412 >, och <userinput
0413 >falsk</userinput
0414 > till <userinput
0415 >sann</userinput
0416 >.</para>
0417 <para
0418 >Booleska operatorer <glossterm
0419 >färgläggs</glossterm
0420 > med rosa.</para>
0421 
0422 <sect3 id="boolean-operators-advanced-examples">
0423 <title
0424 >Några mer avancerade exempel</title>
0425 <para
0426 >Betrakta följande exempel med <userinput
0427 >och</userinput
0428 >: <screen
0429 >$a = 1
0430 $b = 5
0431 om (($a &lt; 10) och ($b == 5)) och ($a &lt; $b) {
0432   skriv "hej"
0433 }
0434 </screen
0435 > I denna kod på &kturtle;s språk, sammanfogas resultatet av tre <link linkend="comparing-operators"
0436 >jämförelseoperatorer</link
0437 > med operatorn <userinput
0438 >och</userinput
0439 >. Det betyder att alla tre måste utvärderas till <quote
0440 >sann</quote
0441 >, för att <quote
0442 >hej</quote
0443 > ska skrivas ut.</para>
0444 
0445 <para
0446 >Ett exempel med <userinput
0447 >eller</userinput
0448 >: <screen>
0449 $n = 1
0450 om ($n &lt; 10) eller ($n == 2) {
0451   skriv "hej"
0452 }
0453 </screen
0454 > I denna kod på &kturtle;s språk, utvärderas vänster sida av <userinput
0455 >eller</userinput
0456 > till <quote
0457 >sann</quote
0458 >, och höger sida till <quote
0459 >falsk</quote
0460 >. Eftersom en av de två sidorna av operatorn <userinput
0461 >eller</userinput
0462 > är sann, utvärderas operatorn <userinput
0463 >eller</userinput
0464 > till <quote
0465 >sann</quote
0466 >. Det betyder att <quote
0467 >hej</quote
0468 > skrivs ut.</para>
0469 
0470 <para
0471 >Och till sist ett exempel med <userinput
0472 >inte</userinput
0473 > som ändrar <quote
0474 >sann</quote
0475 > till <quote
0476 >falsk</quote
0477 > och <quote
0478 >falsk</quote
0479 > till <quote
0480 >sann</quote
0481 >. Ta en titt: <screen
0482 >$n = 1
0483 om inte ($n == 3) {
0484   skriv "hej"
0485 } annars {
0486   skriv "inte hej ;-)"
0487 }
0488 </screen
0489 ></para>
0490 </sect3>
0491 </sect2>
0492 
0493 <sect2 id="comparing-operators">
0494 <title
0495 >Jämförelseoperatorer</title>
0496 <para
0497 >Betrakta följande enkla jämförelse: <screen>
0498 $svar = 10 &gt; 3
0499 </screen
0500 > Här jämförs <userinput
0501 >10</userinput
0502 > med <userinput
0503 >3</userinput
0504 > med operatorn <quote
0505 >större än</quote
0506 >. Resultatet av jämförelsen, det <link linkend="boolean-value"
0507 >Booleska värdet</link
0508 > <userinput
0509 >sann</userinput
0510 > lagras i <link linkend="assignment-of-variables"
0511 >variabeln</link
0512 > <userinput
0513 >$svar</userinput
0514 >.</para>
0515 <para
0516 >Alla <link linkend="number"
0517 >tal</link
0518 > och <link linkend="assignment-of-variables"
0519 >variabler</link
0520 > (som innehåller tal) kan jämföras med varandra med jämförelseoperatorer.</para>
0521 <para
0522 >Här är alla tillgängliga jämförelseopratorer: <table
0523 > <title
0524 >Frågetyper</title
0525 > <tgroup cols="3"
0526 > <tbody
0527 > <row
0528 > <entry
0529 ><userinput
0530 >$A == $B</userinput
0531 ></entry
0532 > <entry
0533 >lika med</entry
0534 > <entry
0535 >svaret är <quote
0536 >sann</quote
0537 > om <userinput
0538 >$A</userinput
0539 > är lika med <userinput
0540 >$B</userinput
0541 ></entry
0542 > </row
0543 > <row
0544 > <entry
0545 ><userinput
0546 >$A != $B</userinput
0547 ></entry
0548 > <entry
0549 >inte lika med</entry
0550 > <entry
0551 >svaret är <quote
0552 >sann</quote
0553 > om <userinput
0554 >$A</userinput
0555 > inte är lika med <userinput
0556 >$B</userinput
0557 ></entry
0558 > </row
0559 > <row
0560 > <entry
0561 ><userinput
0562 >$A &gt; $B</userinput
0563 ></entry
0564 > <entry
0565 >större än</entry
0566 > <entry
0567 >svaret är <quote
0568 >sann</quote
0569 > om <userinput
0570 >$A</userinput
0571 > är större än <userinput
0572 >B</userinput
0573 ></entry
0574 > </row
0575 > <row
0576 ><entry
0577 ><userinput
0578 >$A &lt; $B</userinput
0579 ></entry
0580 > <entry
0581 >mindre än</entry
0582 > <entry
0583 >svaret är <quote
0584 >sann</quote
0585 > om <userinput
0586 >$A</userinput
0587 > är mindre än ' <userinput
0588 >$B</userinput
0589 ></entry
0590 > </row
0591 > <row
0592 > <entry
0593 ><userinput
0594 >A &gt;= B</userinput
0595 ></entry
0596 > <entry
0597 >större än eller lika med</entry
0598 > <entry
0599 >svaret är <quote
0600 >sann</quote
0601 > om <userinput
0602 >$A</userinput
0603 > är större än eller lika med <userinput
0604 >$B</userinput
0605 ></entry
0606 > </row
0607 > <row
0608 > <entry
0609 ><userinput
0610 >$A &lt;= $B</userinput
0611 ></entry
0612 > <entry
0613 >mindre än eller lika med</entry
0614 > <entry
0615 >svaret är <quote
0616 >sann</quote
0617 > om <userinput
0618 >$A</userinput
0619 > är mindre än eller lika med <userinput
0620 >$B</userinput
0621 ></entry
0622 > </row
0623 > </tbody
0624 > </tgroup
0625 > </table
0626 > Observera att <userinput
0627 >$A</userinput
0628 > och <userinput
0629 >$B</userinput
0630 > måste vara <link linkend="number"
0631 >tal</link
0632 > och <link linkend="assignment-of-variables"
0633 >variabler</link
0634 > som innehåller tal.</para>
0635 </sect2>
0636 
0637 
0638 </sect1>
0639 
0640 
0641 
0642 <sect1 id="commands">
0643 <title
0644 >Kommandon</title>
0645 <para
0646 >Du talar om för sköldpaddan eller &kturtle; att göra något med kommandon. Vissa kommandon behöver indata, andra ger utdata. I det här avsnittet förklarar vi alla inbyggda kommandon i &kturtle;. Som alternativ, kan du skapa dina egna kommandon genom att använda <link linkend="learn"
0647 ><userinput
0648 >lär</userinput
0649 ></link
0650 >. Inbyggda kommandon som vi beskriver här är <glossterm
0651 >färglagda</glossterm
0652 > med mörkblått.</para>
0653 
0654 <sect2 id="moving-the-turtle">
0655 <title
0656 >Flytta sköldpaddan</title>
0657 <para
0658 >Det finns flera kommandon för att flytta sköldpaddan över skärmen.</para>
0659 
0660   <variablelist>
0661     <anchor id="forward"/>
0662     <varlistentry
0663 > 
0664       <term
0665 >framåt (fr)<indexterm
0666 ><primary
0667 >framåt (fr)</primary
0668 ></indexterm
0669 ></term>
0670       <listitem
0671 ><para
0672 ><screen
0673 >framåt X</screen
0674 ><userinput
0675 >framåt</userinput
0676 > flyttar sköldpaddan framåt X bildpunkter. När pennan är sänkt lämnar sköldpaddan ett spår. <userinput
0677 >framåt</userinput
0678 > kan förkortas <userinput
0679 >fr</userinput
0680 >.</para
0681 ></listitem>
0682     </varlistentry>
0683   </variablelist>
0684   <variablelist>
0685     <anchor id="backward"/>
0686     <varlistentry
0687 >  
0688       <term
0689 >bakåt (ba)<indexterm
0690 ><primary
0691 >bakåt (ba)</primary
0692 ></indexterm
0693 ></term>
0694       <listitem
0695 ><para
0696 ><screen
0697 >bakåt X</screen
0698 ><userinput
0699 >bakåt</userinput
0700 > flyttar sköldpaddan bakåt X bildpunkter. När pennan är sänkt lämnar sköldpaddan ett spår. <userinput
0701 >bakåt</userinput
0702 > kan förkortas <userinput
0703 >ba</userinput
0704 >.</para
0705 ></listitem>
0706     </varlistentry>
0707   </variablelist>
0708   <variablelist>
0709     <anchor id="turnleft"/>
0710     <varlistentry
0711 > 
0712       <term
0713 >svängvänster (sv)<indexterm
0714 ><primary
0715 >svängvänster (sv)</primary
0716 ></indexterm
0717 ></term>
0718       <listitem
0719 ><para
0720 ><screen
0721 >svängvänster X</screen
0722 ><userinput
0723 >svängvänster</userinput
0724 > talar om för sköldpaddan att svänga X grader åt vänster. <userinput
0725 >svängvänster</userinput
0726 > kan förkortas till <userinput
0727 >sv</userinput
0728 >.</para
0729 ></listitem>
0730     </varlistentry>
0731   </variablelist>
0732   <variablelist>
0733     <anchor id="turnright"/>
0734     <varlistentry
0735 > 
0736       <term
0737 >svänghöger (sh)<indexterm
0738 ><primary
0739 >svänghöger (sh)</primary
0740 ></indexterm
0741 ></term>
0742       <listitem
0743 ><para
0744 ><screen
0745 >svänghöger X</screen
0746 ><userinput
0747 >svänghöger</userinput
0748 > talar om för sköldpaddan att svänga X grader åt höger. <userinput
0749 >svänghöger</userinput
0750 > kan förkortas till <userinput
0751 >sh</userinput
0752 >.</para
0753 ></listitem>
0754     </varlistentry>
0755   </variablelist>
0756   <variablelist>
0757     <anchor id="direction"/>
0758     <varlistentry
0759 > 
0760       <term
0761 >riktning (ri)<indexterm
0762 ><primary
0763 >riktning (ri)</primary
0764 ></indexterm
0765 ></term>
0766       <listitem
0767 ><para
0768 ><screen
0769 >riktning X</screen
0770 ><userinput
0771 >riktning</userinput
0772 > ställer in sköldpaddans riktning till X grader från noll, och är på så sätt inte relativ till sköldpaddans tidigare riktning. <userinput
0773 >riktning</userinput
0774 > kan förkortas till <userinput
0775 >ri</userinput
0776 >.</para
0777 ></listitem>
0778     </varlistentry>
0779   </variablelist>
0780   <variablelist>
0781     <anchor id="getdirection"/>
0782     <varlistentry
0783 > 
0784       <term
0785 >hämtariktning<indexterm
0786 ><primary
0787 >hämtariktning</primary
0788 ></indexterm
0789 ></term>
0790       <listitem
0791 ><para
0792 ><screen
0793 >hämtariktning</screen
0794 ><userinput
0795 >hämtariktning</userinput
0796 > returnerar sköldpaddans riktning som ett gradantal räknat från noll, där noll är riktningen då sköldpaddan pekar uppåt.</para
0797 ></listitem>
0798     </varlistentry>
0799   </variablelist>
0800   <variablelist>
0801     <anchor id="center"/>
0802     <varlistentry
0803 > 
0804       <term
0805 >mitten<indexterm
0806 ><primary
0807 >mitten</primary
0808 ></indexterm
0809 ></term>
0810       <listitem
0811 ><para
0812 ><screen
0813 >mitten</screen
0814 ><userinput
0815 >mitten</userinput
0816 > flyttar sköldpaddan till dukens mitt.</para
0817 ></listitem>
0818     </varlistentry>
0819   </variablelist>
0820   <variablelist>
0821     <anchor id="go"/>
0822     <varlistentry
0823 > 
0824       <term
0825 >gå<indexterm
0826 ><primary
0827 >gå</primary
0828 ></indexterm
0829 ></term>
0830       <listitem
0831 ><para
0832 ><screen
0833 >gå X,Y</screen
0834 ><userinput
0835 >gå</userinput
0836 > talar om för sköldpaddan att gå till en viss plats på duken. Den platsen är X <glossterm linkend="pixels"
0837 >bildpunkter</glossterm
0838 > från dukens vänsterkant och Y <glossterm linkend="pixels"
0839 >bildpunkter</glossterm
0840 > från dukens överkant.</para
0841 ></listitem>
0842     </varlistentry>
0843   </variablelist>
0844   <variablelist>
0845     <anchor id="gox"/>
0846     <varlistentry
0847 > 
0848       <term
0849 >gåx<indexterm
0850 ><primary
0851 >gåx (gx)</primary
0852 ></indexterm
0853 ></term>
0854       <listitem
0855 ><para
0856 ><screen
0857 >gåx X</screen
0858 ><userinput
0859 >gåx</userinput
0860 > gör att sköldpaddan flyttas till X <glossterm linkend="pixels"
0861 >bildpunkter</glossterm
0862 > från dukens vänsterkant, medan den bibehåller samma höjd. <userinput
0863 >gåx</userinput
0864 > kan förkortas till <userinput
0865 >gx</userinput
0866 >.</para
0867 ></listitem>
0868     </varlistentry>
0869   </variablelist>
0870   <variablelist>
0871     <anchor id="goy"/>
0872     <varlistentry
0873 > 
0874       <term
0875 >gåy<indexterm
0876 ><primary
0877 >gåy (gy)</primary
0878 ></indexterm
0879 ></term>
0880       <listitem
0881 ><para
0882 ><screen
0883 >gåy Y</screen
0884 ><userinput
0885 >gåy</userinput
0886 > gör att sköldpaddan flyttas till Y <glossterm linkend="pixels"
0887 >bildpunkter</glossterm
0888 > från dukens överkant, medan den behåller samma avstånd från dukens vänsterkant. <userinput
0889 >gåy</userinput
0890 > kan förkortas till <userinput
0891 >gy</userinput
0892 >.</para
0893 ></listitem>
0894     </varlistentry>
0895   </variablelist>
0896   <note
0897 ><para
0898 >När kommandona <userinput
0899 >gå</userinput
0900 >, <userinput
0901 >gåx</userinput
0902 >, <userinput
0903 >gåy</userinput
0904 > och <userinput
0905 >mitten</userinput
0906 > används ritar sköldpaddan inte någon linje oberoende av om pennan är uppe eller nere.</para>
0907   </note>
0908 </sect2>
0909 
0910 <sect2 id="locate-the-turtle">
0911 <title
0912 >Var är sköldpaddan?</title>
0913 <para
0914 >Det finns två kommandon som returnerar sköldpaddans position på skärmen.</para>
0915 
0916   <variablelist>
0917     <anchor id="getx"/>
0918     <varlistentry
0919 > 
0920       <term
0921 >hämtax<indexterm
0922 ><primary
0923 >hämtax</primary
0924 ></indexterm
0925 ></term>
0926       <listitem
0927 ><para
0928 ><userinput
0929 >hämtax</userinput
0930 > returnerar antal bildpunkter från dukens vänsterkant till sköldpaddans nuvarande position.</para
0931 ></listitem>
0932     </varlistentry>
0933   </variablelist>
0934   <variablelist>
0935     <anchor id="gety"/>
0936     <varlistentry
0937 > 
0938       <term
0939 >hämtay<indexterm
0940 ><primary
0941 >hämtay</primary
0942 ></indexterm
0943 ></term>
0944       <listitem
0945 ><para
0946 ><userinput
0947 >hämtay</userinput
0948 > returnerar antal bildpunkter från dukens överkant till sköldpaddans nuvarande position.</para
0949 ></listitem>
0950     </varlistentry>
0951   </variablelist>
0952 </sect2>
0953 
0954 <sect2 id="pen">
0955 <title
0956 >Sköldpaddan har en penna</title>
0957 <para
0958 >Sköldpaddan har en penna som ritar en linje medan sköldpaddan rör sig. Det finns några få kommandon att styra pennan. I det här avsnittet förklarar vi dessa kommandon.</para>
0959   <variablelist>
0960     <anchor id="penup"/>
0961     <varlistentry
0962 > 
0963       <term
0964 >höjpenna (hp)<indexterm
0965 ><primary
0966 >höjpenna (hp)</primary
0967 ></indexterm
0968 ></term>
0969       <listitem
0970 ><para
0971 ><screen
0972 >höjpenna</screen
0973 ><userinput
0974 >höjpenna</userinput
0975 > lyfter pennan från duken. När pennan är <quote
0976 >höjd</quote
0977 >, ritas ingen linje när sköldpaddan rör sig. Se också <userinput
0978 >sänkpenna</userinput
0979 >. <userinput
0980 >höjpenna</userinput
0981 > kan förkortas till <userinput
0982 >hp</userinput
0983 >.</para
0984 ></listitem>
0985     </varlistentry>
0986   </variablelist>
0987   <variablelist>
0988     <anchor id="pendown"/>
0989     <varlistentry
0990 > 
0991       <term
0992 >sänkpenna (sp)<indexterm
0993 ><primary
0994 >sänkpenna (sp)</primary
0995 ></indexterm
0996 ></term>
0997       <listitem
0998 ><para
0999 ><screen
1000 >sänkpenna</screen
1001 ><userinput
1002 >sänkpenna</userinput
1003 > sänker ner pennan på duken. När pennan är <quote
1004 >sänkt</quote
1005 >, ritas en linje när sköldpaddan rör sig. Se också <userinput
1006 >höjpenna</userinput
1007 >. <userinput
1008 >sänkpenna</userinput
1009 > kan förkortas till <userinput
1010 >sp</userinput
1011 >.</para
1012 ></listitem>
1013     </varlistentry>
1014   </variablelist>
1015   <variablelist>
1016     <anchor id="setpenwidth"/>
1017     <varlistentry
1018 > 
1019       <term
1020 >pennbredd (pb)<indexterm
1021 ><primary
1022 >pennbredd (pb)</primary
1023 ></indexterm
1024 ></term>
1025       <listitem
1026 ><para
1027 ><screen
1028 >pennbredd X</screen
1029 ><userinput
1030 >pennbredd</userinput
1031 > ställer in pennans bredd (linjebredden) till X <glossterm linkend="pixels"
1032 >bildpunkter</glossterm
1033 >. <userinput
1034 >pennbredd</userinput
1035 > kan förkortas till <userinput
1036 >pb</userinput
1037 >.</para
1038 ></listitem>
1039     </varlistentry>
1040   </variablelist>
1041   <variablelist>
1042     <anchor id="setfgcolor"/>
1043     <varlistentry
1044 > 
1045       <term
1046 >pennfärg (pf)<indexterm
1047 ><primary
1048 >pennfärg (pf)</primary
1049 ></indexterm
1050 ></term>
1051       <listitem
1052 ><para
1053 ><screen
1054 >pennfärg R,G,B</screen
1055 ><userinput
1056 >pennfärg</userinput
1057 > ställer in pennans färg. <userinput
1058 >pennfärg</userinput
1059 > behöver en <glossterm linkend="rgb"
1060 >RGB-kombination</glossterm
1061 > som indata. <userinput
1062 >pennfärg</userinput
1063 > kan förkortas till <userinput
1064 >pf</userinput
1065 >.</para
1066 ></listitem>
1067     </varlistentry>
1068   </variablelist>
1069 </sect2>
1070 
1071 <sect2 id="canvas">
1072 <title
1073 >Kommandon för att kontrollera duken</title>
1074 <para
1075 >Det finns flera kommandon för att kontrollera duken.</para>
1076   <variablelist>
1077     <anchor id="resizecanvas"/>
1078     <varlistentry>
1079       <term
1080 >dukstorlek (ds)<indexterm
1081 ><primary
1082 >dukstorlek (ds)</primary
1083 ></indexterm
1084 ></term>
1085       <listitem
1086 ><para
1087 ><screen
1088 >dukstorlek X,Y</screen
1089 >Med kommandot <userinput
1090 >dukstorlek</userinput
1091 > kan du ställa in dukens storlek. Den har X och Y som indata, där X är den nya dukbredden i <glossterm linkend="pixels"
1092 >bildpunkter</glossterm
1093 >, och Y är den nya höjden av duken i <glossterm linkend="pixels"
1094 >bildpunkter</glossterm
1095 >. <userinput
1096 >dukstorlek</userinput
1097 > kan förkortas till <userinput
1098 >ds</userinput
1099 >.</para
1100 ></listitem>
1101     </varlistentry>
1102   </variablelist>
1103   <variablelist>
1104     <anchor id="setbgcolor"/>
1105     <varlistentry
1106 > 
1107       <term
1108 >dukfärg (df)<indexterm
1109 ><primary
1110 >dukfärg (df)</primary
1111 ></indexterm
1112 ></term>
1113       <listitem
1114 ><para
1115 ><screen
1116 >dukfärg R,G,B</screen
1117 ><userinput
1118 >dukfärg</userinput
1119 > ställer in dukens färg. <userinput
1120 >dukfärg</userinput
1121 > behöver en <glossterm linkend="rgb"
1122 >RGB-kombination</glossterm
1123 > som indata. <userinput
1124 >dukfärg</userinput
1125 > kan förkortas till <userinput
1126 >df</userinput
1127 >.</para
1128 ></listitem>
1129     </varlistentry>
1130   </variablelist>
1131 </sect2>
1132 
1133 <sect2 id="clean">
1134 <title
1135 >Kommandon för att städa</title>
1136 <para
1137 >Det finns två kommandon för att städa duken efter du har ställt till den.</para>
1138   <variablelist>
1139     <anchor id="clear"/>
1140     <varlistentry
1141 > 
1142       <term
1143 >rensa (ren)<indexterm
1144 ><primary
1145 >rensa (ren)</primary
1146 ></indexterm
1147 ></term>
1148       <listitem
1149 ><para
1150 ><screen
1151 >rensa</screen
1152 >Med <userinput
1153 >rensa</userinput
1154 > suddar du allt som ritats på duken. Allt annat blir kvar: sköldpaddans position och vinkel, dukfärgen, sköldpaddans synlighet och dukstorleken.</para
1155 ></listitem>
1156     </varlistentry>
1157   </variablelist>
1158   <variablelist>
1159     <anchor id="reset"/>
1160     <varlistentry
1161 > 
1162       <term
1163 >återställ<indexterm
1164 ><primary
1165 >återställ</primary
1166 ></indexterm
1167 ></term>
1168       <listitem
1169 ><para
1170 ><screen
1171 >återställ</screen
1172 ><userinput
1173 >återställ</userinput
1174 > städar mycket noggrannare än kommandot <userinput
1175 >rensa</userinput
1176 >. Efter kommandot <userinput
1177 >återställ</userinput
1178 > är allt som det var precis när du startat &kturtle;. Sköldpaddan är placerad i mitten av skärmen, dukfärgen är vit, sköldpaddan ritar en svart linje på duken och dukstorleken är inställd till 400 x 400 bildpunkter.</para
1179 ></listitem>
1180     </varlistentry>
1181   </variablelist>
1182 </sect2>
1183 
1184 <sect2 id="sprites">
1185 <title
1186 >Sköldpaddan är en sprite</title>
1187 <para
1188 >Först en kort förklaring av vad en sprite är: En sprite är en liten bild som kan flyttas omkring på skärmen, som vi ofta ser i datorspel. Vår sköldpadda är alltså en sprite. För ytterligare information se ordförklaringen av <glossterm linkend="sprites"
1189 >sprite</glossterm
1190 >.</para>
1191 <para
1192 >Härnäst hittar du en fullständig översikt av alla kommandon som arbetar med en sprite.</para>
1193 <note
1194 ><para
1195 >Nuvarande version av &kturtle; stöder ännu inte användning av någon annan sprite än sköldpaddan. I framtida versioner kommer du att kunna ändra sköldpaddan till något som du själv skapat.</para
1196 ></note>
1197   <variablelist>
1198     <anchor id="spriteshow"/>
1199     <varlistentry
1200 > 
1201       <term
1202 >visa (vi)<indexterm
1203 ><primary
1204 >visa (vi)</primary
1205 ></indexterm
1206 ></term>
1207       <listitem
1208 ><para
1209 ><screen
1210 >visa</screen
1211 ><userinput
1212 >visa</userinput
1213 > gör sköldpaddan synlig igen efter den har gömts. <userinput
1214 >visa</userinput
1215 > kan förkortas till <userinput
1216 >vi</userinput
1217 >.</para
1218 ></listitem>
1219     </varlistentry>
1220   </variablelist>
1221   <variablelist>
1222     <anchor id="spritehide"/>
1223     <varlistentry
1224 > 
1225       <term
1226 >göm<indexterm
1227 ><primary
1228 >göm</primary
1229 ></indexterm
1230 ></term>
1231       <listitem
1232 ><para
1233 ><screen
1234 >göm</screen
1235 ><userinput
1236 >göm</userinput
1237 > gömmer sköldpaddan. Det kan användas om sköldpaddan inte passar in i bilden. <userinput
1238 >göm</userinput
1239 > kan förkortas <userinput
1240 >gö</userinput
1241 >.</para
1242 ></listitem>
1243     </varlistentry>
1244   </variablelist>
1245 </sect2>
1246 
1247 <sect2 id="writing">
1248 <title
1249 >Kan sköldpaddan skriva?</title>
1250 <para
1251 >Svaret är <quote
1252 >ja</quote
1253 >. Sköldpaddan kan skriva. Den skriver nästan vad som helst som du talar om för den att skriva.</para>
1254   <variablelist>
1255     <anchor id="print"/>
1256     <varlistentry
1257 > 
1258       <term
1259 >skriv<indexterm
1260 ><primary
1261 >skriv</primary
1262 ></indexterm
1263 ></term>
1264       <listitem
1265 ><para
1266 ><screen
1267 >skriv X</screen
1268 >Kommandot <userinput
1269 >skriv</userinput
1270 > används för att tala om för sköldpaddan att skriva någonting på duken. <userinput
1271 >skriv</userinput
1272 > behöver tal och strängar som indata. Du kan använda <userinput
1273 >skriv</userinput
1274 > för att skriva ut olika tal och strängar med symbolen '+'. Här är ett litet exempel: <screen
1275 >$år = 2003
1276 $upphovsman = "Cies"
1277 skriv $upphovsman + " startade projektet Kturtle " + $år + " och gillar ännu att jobba med det!"
1278 </screen>
1279       </para
1280 ></listitem>
1281     </varlistentry>
1282   </variablelist>
1283   <variablelist>
1284     <anchor id="fontsize"/>
1285     <varlistentry
1286 > 
1287       <term
1288 >teckenstorlek<indexterm
1289 ><primary
1290 >teckenstorlek</primary
1291 ></indexterm
1292 ></term>
1293       <listitem
1294 ><para
1295 ><screen
1296 >teckenstorlek X</screen
1297 ><userinput
1298 >teckenstorlek</userinput
1299 > anger storlek på teckensnittet som används av <userinput
1300 >skriv</userinput
1301 >. <userinput
1302 >teckenstorlek</userinput
1303 > behöver indata som ska vara ett tal. Storleken ställs in i <glossterm linkend="pixels"
1304 >bildpunkter</glossterm
1305 >.</para
1306 ></listitem>
1307     </varlistentry>
1308   </variablelist>
1309 </sect2>
1310 
1311 <sect2 id="math-commands">
1312 <title
1313 >Matematiska kommandon</title>
1314 <para
1315 >Följande kommandon är &kturtle;s mer avancerade matematiska kommandon.</para>
1316   <variablelist>
1317     <anchor id="round"/>
1318     <varlistentry>
1319       <term
1320 >avrunda<indexterm
1321 ><primary
1322 >avrunda</primary
1323 ></indexterm
1324 ></term>
1325       <listitem
1326 ><para
1327 ><screen
1328 >avrunda(x)</screen
1329 ><userinput
1330 >avrunda</userinput
1331 > det givna talet till närmaste heltal. <screen>
1332 skriv avrunda(10,8)
1333 framåt 20
1334 skriv avrunda(10,3)
1335 </screen
1336 > Sköldpaddan skriver ut talen 11 och 10 med den här koden.</para
1337 ></listitem>
1338     </varlistentry>
1339   </variablelist>
1340   <variablelist>
1341     <anchor id="random"/>
1342     <varlistentry
1343 > 
1344       <term
1345 >slump (slu)<indexterm
1346 ><primary
1347 >slump (slu)</primary
1348 ></indexterm
1349 ></term>
1350       <listitem
1351 ><para
1352 ><screen
1353 >slump X,Y</screen
1354 ><userinput
1355 >slump</userinput
1356 > är ett kommando som kräver indata och ger utdata. Två tal krävs som indata, det första (X) anger minimal utdata och det andra (Y) anger maximal. Utdata är ett slumpmässigt valt tal som är större än eller lika med minimum och mindre än eller lika med maximum. Här är ett litet exempel: <screen>
1357 upprepa 500 {
1358   $x = slump 1,20
1359   framåt $x
1360   svängvänster 10 - $x
1361 }
1362 </screen
1363 > Med kommandot <userinput
1364 >slump</userinput
1365 > kan du lägga till en viss mängd kaos i programmet.</para
1366 ></listitem>
1367     </varlistentry>
1368   </variablelist>
1369   <variablelist>
1370     <anchor id="mod"/>
1371     <varlistentry
1372 > 
1373       <term
1374 >mod<indexterm
1375 ><primary
1376 >mod</primary
1377 ></indexterm
1378 ></term>
1379       <listitem
1380 ><para
1381 ><screen
1382 >mod X,Y</screen
1383 >Kommandot <userinput
1384 >mod</userinput
1385 > returnerar resten vid division av det första talet med det andra.</para
1386 ></listitem>
1387     </varlistentry>
1388   </variablelist>
1389   <variablelist>
1390     <anchor id="sqrt"/>
1391     <varlistentry
1392 > 
1393       <term
1394 >kvadratrot<indexterm
1395 ><primary
1396 >kvadratrot</primary
1397 ></indexterm
1398 ></term>
1399       <listitem
1400 ><para
1401 ><screen
1402 >kvadratrot X</screen
1403 >Kommandot <userinput
1404 >kvadratrot</userinput
1405 > används för att beräkna kvadratroten av ett tal, X.</para
1406 ></listitem>
1407     </varlistentry>
1408   </variablelist>
1409 <!--
1410   <variablelist>
1411     <anchor id="exp"/>
1412     <varlistentry
1413 > 
1414       <term
1415 >exp<indexterm
1416 ><primary
1417 >exp</primary
1418 ></indexterm
1419 ></term>
1420       <listitem
1421 ><para
1422 ><screen
1423 >sqrt X</screen>
1424       </para
1425 ></listitem>
1426     </varlistentry>
1427   </variablelist>
1428 -->
1429   <variablelist>
1430     <anchor id="pi"/>
1431     <varlistentry
1432 > 
1433       <term
1434 >pi<indexterm
1435 ><primary
1436 >pi</primary
1437 ></indexterm
1438 ></term>
1439       <listitem
1440 ><para
1441 ><screen
1442 >pi</screen
1443 >Kommandot returnerar konstanten π (pi), <userinput
1444 >3.14159</userinput
1445 >.</para
1446 ></listitem>
1447     </varlistentry>
1448   </variablelist>
1449   <variablelist>
1450     <anchor id="sin"/>
1451     <anchor id="cos"/>
1452     <anchor id="tan"/>
1453     <varlistentry>
1454       <term
1455 >sin<indexterm
1456 ><primary
1457 >sin</primary
1458 ></indexterm
1459 >, cos<indexterm
1460 ><primary
1461 >cos</primary
1462 ></indexterm
1463 >, tan<indexterm
1464 ><primary
1465 >tan</primary
1466 ></indexterm
1467 ></term>
1468       <listitem
1469 ><para>
1470 <screen
1471 >sin X
1472 cos X
1473 tan X
1474 </screen
1475 >De här tre kommandona representerar de världsberömda trigonometriska funktionerna <userinput
1476 >sin</userinput
1477 >, <userinput
1478 >cos</userinput
1479 > och <userinput
1480 >tan</userinput
1481 >. Indata till kommandona, X, är ett <link linkend="number"
1482 >tal</link
1483 >.</para
1484 ></listitem>
1485     </varlistentry>
1486   </variablelist>
1487   <variablelist>
1488     <anchor id="arcsin"/>
1489     <anchor id="arccos"/>
1490     <anchor id="arctan"/>
1491     <varlistentry>
1492       <term
1493 >arcsin<indexterm
1494 ><primary
1495 >arcsin</primary
1496 ></indexterm
1497 >, arccos<indexterm
1498 ><primary
1499 >arccos</primary
1500 ></indexterm
1501 >, arctan<indexterm
1502 ><primary
1503 >arctan</primary
1504 ></indexterm
1505 ></term>
1506       <listitem
1507 ><para>
1508 <screen
1509 >arcsin X
1510 arccos X
1511 arctan X
1512 </screen
1513 >De här kommandona är de inversa funktionerna för <userinput
1514 >sin</userinput
1515 >, <userinput
1516 >cos</userinput
1517 > och <userinput
1518 >tan</userinput
1519 >. Indata till kommandona, X, är ett <link linkend="number"
1520 >tal</link
1521 >.</para
1522 ></listitem>
1523     </varlistentry>
1524   </variablelist>
1525 </sect2>
1526 
1527 <sect2 id="dialogs">
1528 <title
1529 >Inmatning och återmatning via dialogrutor</title>
1530 <para
1531 >En dialogruta är ett litet fönster som dyker upp och tillhandahåller återmatning eller frågar efter inmatning. &kturtle; har två kommandon för dialogrutor, närmare bestämt <userinput
1532 >meddelande</userinput
1533 > och <userinput
1534 >fråga</userinput
1535 >.</para>
1536   <variablelist>
1537     <anchor id="message"/>
1538     <varlistentry
1539 > 
1540       <term
1541 >meddelande<indexterm
1542 ><primary
1543 >meddelande</primary
1544 ></indexterm
1545 ></term>
1546       <listitem
1547 ><para
1548 ><screen
1549 >meddelande X</screen
1550 >Kommandot <userinput
1551 >meddelande</userinput
1552 > har en <link linkend="string"
1553 >sträng</link
1554 > som indata. Det visar en dialogruta som innehåller texten från <link linkend="string"
1555 >strängen</link
1556 >. <screen
1557 >skriv "Cies startade Kturtle 2003 och gillar fortfarande att jobba med det!"
1558 </screen>
1559       </para
1560 ></listitem>
1561     </varlistentry>
1562   </variablelist>
1563   <variablelist>
1564     <anchor id="ask"/>
1565     <varlistentry
1566 > 
1567       <term
1568 >fråga<indexterm
1569 ><primary
1570 >fråga</primary
1571 ></indexterm
1572 ></term>
1573       <listitem
1574 ><para
1575 ><screen
1576 >fråga X</screen
1577 >Kommandot <userinput
1578 >fråga</userinput
1579 > har en <link linkend="string"
1580 >sträng</link
1581 > som indata. Det visar strängen i en dialogruta (på likande sätt som <link linkend="message"
1582 >meddelande</link
1583 >), tillsammans med ett inmatningsfält. Efter användaren har skrivit in ett  <link linkend="number"
1584 >tal</link
1585 > eller en <link linkend="string"
1586 >sträng</link
1587 >, kan resultatet lagras i en <link linkend="assignment-of-variables"
1588 >variabel</link
1589 > eller skickas som ett argument till ett <link linkend="commands"
1590 >kommando</link
1591 >. Till exempel <screen>
1592 $in = fråga "Hur gammal är du?"
1593 $ut = 2003 - $in
1594 skriv "År 2003 var du " + $ut + " år gammal vid något tillfälle."
1595 </screen
1596 > Om användaren avbryter inmatningsdialogrutan, eller inte skriver in någonting alls, blir <link linkend="assignment-of-variables"
1597 >variabeln</link
1598 > tom.</para
1599 ></listitem>
1600     </varlistentry>
1601   </variablelist>
1602 </sect2>
1603 
1604 </sect1>
1605 
1606 
1607 
1608 <sect1 id="assignment-of-variables">
1609 <title
1610 >Tilldelning av variabler</title>
1611 <para
1612 >Först tar vi en titt på variabler, därefter tittar vi på tilldelning av värden till variablerna. </para>
1613 
1614 <para
1615 >Variabler är ord som börjar med <quote
1616 >$</quote
1617 >, i <link linkend="the-editor"
1618 >editorn</link
1619 > <glossterm
1620 >färgläggs</glossterm
1621 > de med violett.</para>
1622 
1623 <para
1624 >Variabler kan använda vilket <link linkend="number"
1625 >tal</link
1626 >, vilken <link linkend="string"
1627 >sträng</link
1628 > eller vilket <link linkend="boolean-value"
1629 >Booleskt värde (sann eller falsk)</link
1630 > som helst. Genom att använda en tilldelning, <userinput
1631 >=</userinput
1632 >, får en variabel sitt innehåll. Den behåller det innehållet till programmet har kört klart, eller till variabeln tilldelas någonting annat.</para>
1633 
1634 <para
1635 >När variabler väl har tilldelats någonting, kan de användas precis som om de vore innehållet. Titta exempelvis på följande kod i &kturtle;s språk: <screen>
1636 $x = 10
1637 $x = $x / 3
1638 skriv $x
1639 </screen
1640 > Först tilldelas variabeln <userinput
1641 >$x</userinput
1642 > värdet <userinput
1643 >10</userinput
1644 >. Därefter tilldelas <userinput
1645 >$x</userinput
1646 > värdet av sig själv dividerat med <userinput
1647 >3</userinput
1648 >. Det betyder alltså att <userinput
1649 >$x</userinput
1650 > tilldelas resultatet av <userinput
1651 >10 / 3</userinput
1652 >. Till sist skrivs <userinput
1653 >$x</userinput
1654 > ut. På den andra och tredje raden ser du att <userinput
1655 >$x</userinput
1656 > används som sitt innehåll.</para>
1657 
1658 <para
1659 >Variabler måste tilldelas för att kunna användas. Ett exempel: <screen>
1660 skriv $n
1661 </screen
1662 > Ger ett felmeddelande.</para>
1663 
1664 <para
1665 >Betrakta följande kod på &kturtle;s språk: <screen>
1666 $a = 2004
1667 $b = 25
1668 
1669 # nästa kommando skriver "2029"
1670 skriv $a + $b
1671 bakåt 30
1672 # nästa kommando skriver "2004 plus 25 är lika med 2029"
1673 skriv $a + " plus " + $b + " är lika med " + ($a + $b)
1674 </screen
1675 > På de första två raderna sätts variablerna <userinput
1676 >$a</userinput
1677 > och <userinput
1678 >$b</userinput
1679 > till 2004 och 25. Därefter följer två <userinput
1680 >skrivkommandon</userinput
1681 > med <userinput
1682 >bakåt 30</userinput
1683 > mellan. Kommentarerna innan <userinput
1684 >skrivkommandona</userinput
1685 > förklarar vad de gör. Som du ser kan variabler användas precis som det de innehåller, och man kan kan använda dem med alla sorters <link linkend="operators"
1686 >operatorer</link
1687 > eller använda dem som indata när <link linkend="commands"
1688 >kommandon</link
1689 > utförs.</para>
1690 
1691 <para
1692 >Ett exempel till: <screen>
1693 $namn = fråga "Vad heter du?"
1694 skriv "Hej " + $namn + "! Lycka till med att lära dig programmeringens konst ..."
1695 </screen
1696 > Ganska enkelt. Återigen kan du se att variabeln <userinput
1697 >$namn</userinput
1698 > behandlas precis som en sträng.</para>
1699 
1700 <para
1701 >När variabler används är <link linkend="the-inspector"
1702 >inspektören</link
1703 > till stor hjälp. Den visar innehållet i alla variabler som för närvarande används.</para>
1704 </sect1>
1705 
1706 
1707 
1708 <sect1 id="controlling-execution">
1709 <title
1710 >Styra körning</title>
1711 <para
1712 >Styrning av körningen gör det möjligt för dig att styra körningen, precis som namnet anger.</para>
1713 <para
1714 >Kommandon för att styra körningen <glossterm
1715 >färgläggs</glossterm
1716 > med mörkgrönt och fetstil. Hakparenteserna som oftast används tillsammans med kommandon för att styra körningen <glossterm
1717 >färgläggs</glossterm
1718 > med svart.</para>
1719 
1720 <sect2 id="wait">
1721 <title
1722 >Låta sköldpaddan vänta</title>
1723 <para
1724 >Om du försökt programmera en del med &kturtle; kanske du märker att sköldpaddan kan vara mycket snabb när den ritar. Det här kommandot gör att sköldpaddan väntar en angiven tid.</para>
1725   <variablelist>
1726     <varlistentry>
1727       <term
1728 >vänta<indexterm
1729 ><primary
1730 >vänta</primary
1731 ></indexterm
1732 ></term>
1733       <listitem
1734 ><para
1735 ><screen
1736 >vänta X</screen
1737 ><userinput
1738 >vänta</userinput
1739 > låter sköldpaddan vänta X sekunder. <screen>
1740 upprepa 36 {
1741   framåt 5
1742   svänghöger 10
1743   vänta 0.5
1744 }
1745 </screen
1746 > Den här koden ritar en cirkel, men sköldpaddan väntar en halv sekund mellan varje steg. Det ger intrycket av en sköldpadda som rör sig långsamt.</para
1747 ></listitem>
1748     </varlistentry>
1749   </variablelist>
1750 </sect2>
1751 
1752 <sect2 id="if">
1753 <title
1754 >Kör <quote
1755 >om</quote
1756 ></title>
1757   <variablelist>
1758     <varlistentry>
1759       <term
1760 >om<indexterm
1761 ><primary
1762 >om</primary
1763 ></indexterm
1764 ></term>
1765       <listitem
1766 ><para
1767 ><screen
1768 >om <link linkend="boolean-value"
1769 >Boolean</link
1770 > { ... }</screen
1771 >Koden som placeras mellan krullparenteserna utförs bara <userinput
1772 >om</userinput
1773 > det <link linkend="boolean-value"
1774 >Booleska värdet</link
1775 > utvärderas till <quote
1776 >sann</quote
1777 >. <screen>
1778 $x = 6
1779 om $x &gt; 5 {
1780   skriv "$x är större än fem!"
1781 }
1782 </screen
1783 > På första raden tilldelas <userinput
1784 >$x</userinput
1785 > värdet 6. På den andra raden används en <link linkend="comparing-operators"
1786 >jämförelseoperator</link
1787 > för att utvärdera <userinput
1788 >$x &gt; 5</userinput
1789 >. Eftersom det utvärderas till <quote
1790 >sann</quote
1791 >, 6 är större än 5, tillåter kommandot för styrning av körningen <userinput
1792 >om</userinput
1793 > att koden mellan krullparenteserna utförs.</para
1794 ></listitem>
1795     </varlistentry>
1796   </variablelist>
1797 </sect2>
1798 
1799 <sect2 id="else">
1800 <title
1801 >Om inte, med andra ord <quote
1802 >annars</quote
1803 ></title>
1804   <variablelist>
1805     <varlistentry>
1806       <term
1807 >annars<indexterm
1808 ><primary
1809 >annars</primary
1810 ></indexterm
1811 ></term>
1812       <listitem
1813 ><para
1814 ><screen
1815 >om <link linkend="boolean-value"
1816 >Boolean</link
1817 > { ... } annars { ... }</screen
1818 ><userinput
1819 >annars</userinput
1820 > kan användas som tillägg till kommandot för styrning av körningen <link linkend="if"
1821 ><userinput
1822 >om</userinput
1823 ></link
1824 >. Koden mellan krullparenteserna efter <userinput
1825 >annars</userinput
1826 > utförs bara om det <link linkend="boolean-value"
1827 >Booleska värdet</link
1828 > utvärderas till <quote
1829 >falsk</quote
1830 >. <screen>
1831 $x = 4
1832 om $x &gt; 5 {
1833   skriv "x är större än fem!"
1834 } annars {
1835   skriv "x är mindre än sex!"
1836 }
1837 </screen
1838 > <link linkend="comparing-operators"
1839 >Jämförelseoperatorn</link
1840 > utvärderar uttrycket <userinput
1841 >$x &gt; 5</userinput
1842 >. Eftersom 4 inte är större än 5, utvärderas uttrycket till <quote
1843 >falsk</quote
1844 >. Det betyder att koden mellan krullparenteserna efter <userinput
1845 >annars</userinput
1846 > utförs.</para
1847 ></listitem>
1848     </varlistentry>
1849   </variablelist>
1850 </sect2>
1851 
1852 <sect2 id="while">
1853 <title
1854 >En <quote
1855 >medan</quote
1856 > snurra</title>
1857   <variablelist>
1858     <varlistentry>
1859       <term
1860 >medan<indexterm
1861 ><primary
1862 >medan</primary
1863 ></indexterm
1864 ></term>
1865       <listitem
1866 ><para
1867 ><screen
1868 >medan <link linkend="boolean-value"
1869 >Boolean</link
1870 > { ... }</screen
1871 >Kommandot för styrning av körningen <userinput
1872 >medan</userinput
1873 > liknar <link linkend="if"
1874 ><userinput
1875 >om</userinput
1876 ></link
1877 > en hel del. Skillnaden är att <userinput
1878 >medan</userinput
1879 > fortsätter upprepa (snurra i) koden mellan krullparenteserna, ända till det <link linkend="boolean-value"
1880 >Booleska värdet</link
1881 > utvärderas till <quote
1882 >falsk</quote
1883 >. <screen>
1884 $x = 1
1885 medan $x &lt; 5 {
1886   framåt 10
1887   vänta 1
1888   $x = $x + 1
1889 }
1890 </screen
1891 > På den första raden sätts <userinput
1892 >x</userinput
1893 > till 1. På den andra raden utvärderas <userinput
1894 >x &lt; 5</userinput
1895 >. Eftersom svaret på frågan är <quote
1896 >sann</quote
1897 > utför kommandot <userinput
1898 >medan</userinput
1899 > för styrning av körningen koden mellan krullparenteserna, ända till <userinput
1900 >$x &lt; 5</userinput
1901 > utvärderas till <quote
1902 >falsk</quote
1903 >. I det här fallet utförs koden mellan hakparenteserna fyra gånger, eftersom varje gång den femte raden utförs ökas <userinput
1904 >x</userinput
1905 > med ett.</para
1906 ></listitem>
1907     </varlistentry>
1908   </variablelist>
1909 </sect2>
1910 
1911 <sect2 id="repeat">
1912 <title
1913 >En <quote
1914 >upprepa</quote
1915 > snurra</title>
1916   <variablelist>
1917     <varlistentry>
1918       <term
1919 >upprepa<indexterm
1920 ><primary
1921 >upprepa</primary
1922 ></indexterm
1923 ></term>
1924       <listitem
1925 ><para
1926 ><screen
1927 >upprepa <link linkend="number"
1928 >tal</link
1929 > { ... }</screen
1930 >Kommandot för att styra körningen <userinput
1931 >upprepa</userinput
1932 > är mycket likt <link linkend="while"
1933 ><userinput
1934 >medan</userinput
1935 ></link
1936 >. Skillnaden är att <userinput
1937 >upprepa</userinput
1938 > fortsätter upprepa (snurra i) koden mellan krullparenteserna lika många gånger som det angivna talet.</para
1939 ></listitem>
1940     </varlistentry>
1941   </variablelist>
1942 </sect2>
1943 
1944 <sect2 id="for">
1945 <title
1946 >En <quote
1947 >för</quote
1948 > snurra, en räknande snurra</title>
1949   <variablelist>
1950     <varlistentry>
1951       <term
1952 >för<indexterm
1953 ><primary
1954 >för</primary
1955 ></indexterm
1956 ><indexterm
1957 ><primary
1958 >till</primary
1959 ></indexterm
1960 ><indexterm
1961 ><primary
1962 >steg</primary
1963 ></indexterm
1964 ></term>
1965       <listitem
1966 ><para
1967 ><screen
1968 >för <link linkend="assignment-of-variables"
1969 >variabel</link
1970 > = <link linkend="number"
1971 >tal</link
1972 > till <link linkend="number"
1973 >tal</link
1974 > { ... }</screen
1975 >Snurran <userinput
1976 >för</userinput
1977 > är en <quote
1978 >räknande snurra</quote
1979 >, dvs. den håller räkning åt dig. <screen>
1980 för $x = 1 till 10 {
1981   skriv $x * 7
1982   framåt 15
1983 }
1984 </screen
1985 > Varje gång koden mellan krullparenteserna utförs ökas <userinput
1986 >$x</userinput
1987 > med ett, till <userinput
1988 >$x</userinput
1989 > når värdet 10. Koden mellan krullparenteserna skriver ut <userinput
1990 >$x</userinput
1991 > multiplicerat med 7. När programmet har kört färdigt, ser du sjuans multiplikationstabell på duken. </para>
1992      <para
1993 >Den förvalda stegstorleken i en snurra är 1, du kan använda ett annat värde med: <screen
1994 >för <link linkend="assignment-of-variables"
1995 >variabel</link
1996 > = <link linkend="number"
1997 >tal</link
1998 > till <link linkend="number"
1999 >tal</link
2000 > steg <link linkend="number"
2001 >tal</link
2002 > { ... }</screen
2003 ></para
2004 ></listitem>
2005     </varlistentry>
2006   </variablelist>
2007 </sect2>
2008 
2009 <sect2 id="break">
2010 <title
2011 >Lämna en snurra</title>
2012   <variablelist>
2013     <varlistentry>
2014       <term
2015 >avbryt<indexterm
2016 ><primary
2017 >avbryt</primary
2018 ></indexterm
2019 ></term>
2020       <listitem
2021 ><para
2022 ><screen
2023 >avbryt</screen
2024 >Avbryter omedelbart nuvarande snurra och överför kontroll till satsen som kommer direkt efter snurran.</para
2025 ></listitem>
2026     </varlistentry>
2027   </variablelist>
2028 </sect2>
2029 
2030 <sect2 id="exit">
2031 <title
2032 >Stoppa körning av programmet</title>
2033   <variablelist>
2034     <varlistentry>
2035       <term
2036 >avsluta<indexterm
2037 ><primary
2038 >avsluta</primary
2039 ></indexterm
2040 ></term>
2041       <listitem
2042 ><para
2043 ><screen
2044 >avsluta</screen
2045 >Avslutar körningen av programmet.</para
2046 ></listitem>
2047     </varlistentry>
2048   </variablelist>
2049 </sect2>
2050 
2051 <sect2 id="assert">
2052 <title
2053 >Kontrollera påståenden under körning</title>
2054   <variablelist>
2055     <varlistentry>
2056       <term
2057 >påstå<indexterm
2058 ><primary
2059 >påstå</primary
2060 ></indexterm
2061 ></term>
2062       <listitem
2063 ><para
2064 ><screen
2065 >påstå <link linkend="boolean-value"
2066 >Boolean</link
2067 ></screen
2068 >Kan användas för att resonera om programmets eller indatas riktighet. <screen
2069 >$in = fråga "När fyller du år?"
2070 # året måste vara positivt
2071 påstå $in 
2072 > 0
2073 </screen
2074 ></para
2075 ></listitem>
2076     </varlistentry>
2077   </variablelist>
2078 </sect2>
2079 </sect1>
2080 
2081 
2082 <sect1 id="learn">
2083 
2084 <title
2085 >Skapa dina egna kommandon med <quote
2086 >lär</quote
2087 ></title>
2088 <para
2089 ><userinput
2090 >lär</userinput
2091 ><indexterm
2092 ><primary
2093 >lär</primary
2094 ></indexterm
2095 > är speciellt eftersom det används för att skapa dina egna kommandon. Kommandot som du skapar kan ha <glossterm linkend="input-output"
2096 >indata</glossterm
2097 > och returnera <glossterm linkend="input-output"
2098 >utdata</glossterm
2099 >. Låt oss ta en titt på hur ett nytt kommando skapas: <screen>
2100 lär cirkel $x {
2101   upprepa 36 {
2102     framåt $x
2103     svängvänster 10
2104   }
2105 }
2106 </screen
2107 > Det nya kommandot kallas <userinput
2108 >cirkel</userinput
2109 >. <userinput
2110 >cirkel</userinput
2111 > har <glossterm linkend="input-output"
2112 >indata</glossterm
2113 >, som anger cirkelns storlek. <userinput
2114 >cirkel</userinput
2115 > returnerar ingen <glossterm linkend="input-output"
2116 >utdata</glossterm
2117 >. Kommandot <userinput
2118 >cirkel</userinput
2119 > kan nu användas som ett vanligt kommando i resten av koden. Se följande exempel: <screen
2120 >lär cirkel $x {
2121   upprepa 36 {
2122     framåt $x 
2123     svängvänster 10 
2124   }
2125 }
2126 
2127 gå 200,200 
2128 cirkel 20
2129 
2130 gå 300,200 
2131 cirkel 40  
2132 </screen>
2133 </para>
2134 <para
2135 >I nästa exempel skapas ett kommando som returnerar ett värde med <indexterm
2136 ><primary
2137 >returnera</primary
2138 ></indexterm
2139 >. <screen>
2140 lär fakultet $x {
2141   $r = 1
2142   för$i = 1 till $x {
2143     $r = $n * $i
2144   }
2145   returnera $r
2146 }
2147 
2148 skriv fakultet 5
2149 </screen
2150 > I det här exemplet skapas ett nytt kommando som heter <userinput
2151 >fakultet</userinput
2152 >. Om indata till kommandot är <userinput
2153 >5</userinput
2154 > är utdata <userinput
2155 >5*4*3*2*1</userinput
2156 >. Genom att använda <userinput
2157 >returnera</userinput
2158 > anges <glossterm linkend="input-output"
2159 >utdata</glossterm
2160 > och körningen returnerar.</para>
2161 <para
2162 >Kommandon kan ha mer än ett <glossterm linkend="input-output"
2163 >indatavärde</glossterm
2164 >. I nästa exempel, skapas ett kommando som ritar en fyrkant: <screen>
2165 lär fyrkant $x, $y {
2166   framåt $y
2167   svänghöger 90
2168   framåt $x
2169   svänghöger 90
2170   framåt $y
2171   svänghöger 90
2172   framåt $x
2173   svänghöger 90
2174 }
2175 </screen
2176 > Nu kan du köra <userinput
2177 >fyrkant 50, 100</userinput
2178 > så ritar sköldpaddan en rektangel på duken. </para>
2179   
2180 </sect1>
2181 
2182 </chapter>