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 > 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 < 10) och ($b == 5)) och ($a < $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 < 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 > 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 > $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 < $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 >= 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 <= $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 > 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 > 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 > 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 > 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 < 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 < 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 < 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>