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

0001 <chapter id="reference">
0002 <title
0003 >Referència de programació de &turtlescript;</title>
0004 <para
0005 >Aquesta és la referència per a &turtlescript; del &kturtle;. En la primera secció d'aquest capítol es fa un repàs a alguns aspectes de la <link linkend="grammar"
0006 >gramàtica</link
0007 > dels programes en &turtlescript;. La segona secció es refereix exclusivament als <link linkend="mathematical-operators"
0008 >operadors matemàtics</link
0009 >, els <link linkend="boolean-operators"
0010 >operadors booleans (true/false -cert/fals-)</link
0011 > i els <link linkend="comparing-operators"
0012 >operadors de comparació</link
0013 >. La tercera secció bàsicament és una llista gegant explicant totes les <link linkend="commands"
0014 >ordres</link
0015 > instrucció a instrucció. La quarta secció explica com <link linkend="assignment-of-variables"
0016 >assignar</link
0017 > valors a les <link linkend="assignment-of-variables"
0018 >variables</link
0019 >. Per a finalitzar, en la cinquena secció s'explica la forma d'organitzar l'execució d'ordres amb les <link linkend="controlling-execution"
0020 >sentències de control de l'execució</link
0021 > i en la sisena secció com crear les vostres pròpies ordres amb <link linkend="learn"
0022 ><userinput
0023 >learn -aprèn-</userinput
0024 ></link
0025 >.</para>
0026 
0027 <sect1 id="grammar">
0028 <title
0029 >La gramàtica de &turtlescript;</title>
0030 <para
0031 >Igual que en qualsevol llenguatge, el &turtlescript; té diferents tipus de paraules i símbols. En anglès es distingeixen els verbs (com «to walk» -caminar- o «to sing» -cantar-) i noms (com «sister» -germana- o «house» -casa-), que s'utilitzen per a diferents finalitats. El &turtlescript; és un llenguatge de programació, el qual s'utilitza per a indicar el que ha de fer el &kturtle;.</para>
0032 <para
0033 >En aquesta secció s'expliquen amb brevetat alguns dels diferents tipus de paraules i símbols de &turtlescript;. Expliquem els <link linkend="comment"
0034 >comentaris</link
0035 >, les <link linkend="command"
0036 >ordres</link
0037 > i els tres tipus diferents de literals: <link linkend="number"
0038 >nombres</link
0039 >, <link linkend="string"
0040 >cadenes</link
0041 > i <link linkend="boolean-value"
0042 >valors booleans («true/false» -cert/fals-)</link
0043 >.</para>
0044 
0045 
0046 <sect2 id="comment">
0047 <title
0048 >Comentaris</title>
0049 <para
0050 >Un programa consisteix en les instruccions que s'executen en executar-lo i els anomenats comentaris. Els comentaris no s'executen, el &kturtle; simplement els ignora en executar el vostre programa. Els comentaris hi són perquè altres programadors entenguin millor el vostre programa. Tot el que segueix a un símbol <userinput
0051 >#</userinput
0052 > és considerat un comentari de &turtlescript;. Per exemple, aquest petit programa que no fa res: <screen>
0053 # Aquest petit programa no fa res. Només és un comentari!
0054 </screen
0055 > És un xic inútil, però plasma molt bé l'assumpte.</para>
0056 <para
0057 >Els comentaris són molt útils quan el programa es fa més complex. Poden ajudar a donar un consell als altres programadors. En el següent programa veureu que els comentaris s'utilitzen juntament amb l'ordre <link linkend="print"
0058 >print</link
0059 >. <screen>
0060 # Aquest programa ha estat realitzat per en Cies Breijs.
0061 print "Aquest text serà imprès en el llenç"
0062 # La línia anterior no és un comentari, però sí la línia següent:
0063 # print "Aquest text no s'imprimirà!"
0064 </screen
0065 > La primera línia descriu el programa. La segona línia és executada pel &kturtle; i imprimeix <userinput
0066 >Aquest text serà imprès en el llenç</userinput
0067 >. La tercera línia és un comentari. I la quarta línia és un comentari que conté un fragment de &turtlescript;, si s'elimina el símbol <userinput
0068 >#</userinput
0069 > en la quarta línia, la declaració d'impressió serà executada pel &kturtle;. Els programadors diuen: La sentència d'impressió en la quarta línia és un comentari (commented out).</para>
0070 <para
0071 >Les línies comentades es <glossterm
0072 >ressalten</glossterm
0073 > en color gris clar en l'<link linkend="the-editor"
0074 >editor de codi</link
0075 >.</para>
0076 </sect2>
0077 
0078 <sect2 id="command">
0079 <title
0080 >Ordres</title>
0081 <para
0082 >L'ús d'ordres, li indiquen a la tortuga o al &kturtle; que faci quelcom. Algunes ordres necessiten alguna entrada, alguna sortida. <screen>
0083 # «forward» és una ordre que necessita una entrada, en aquest cas el número 100:
0084 forward 100
0085 </screen
0086 > La primera línia és un <link linkend="comment"
0087 >comentari</link
0088 >. La segona línia conté l'ordre «<userinput
0089 >forward</userinput
0090 >» i el número 100. El nombre no forma part de l'ordre, es considera l'«entrada» d'aquesta.</para>
0091 <para
0092 >Algunes ordres, com ara <userinput
0093 >go</userinput
0094 > (<userinput
0095 >vesa</userinput
0096 >) necessiten alguna cosa més que un valor d'entrada. Múltiples valors s'han de separar utilitzant el caràcter <userinput
0097 >,</userinput
0098 > (coma).</para>
0099 <para
0100 >Per a una descripció detallada de totes les ordres que admet el &kturtle; aneu <link linkend="commands"
0101 >aquí</link
0102 >. Les ordres integrades es <glossterm
0103 >ressalten</glossterm
0104 > en color blau fosc.</para>
0105 </sect2>
0106 
0107 <sect2 id="number">
0108 <title
0109 >Nombres</title>
0110 <para
0111 >El més probable és que ja sabeu quelcom sobre els nombres. La manera com s'utilitzen en el &kturtle; no és gaire diferent del llenguatge parlat, o les matemàtiques.</para>
0112 <para
0113 >Tenim els anomenats nombres naturals: <userinput
0114 >0</userinput
0115 >, <userinput
0116 >1</userinput
0117 >, <userinput
0118 >2</userinput
0119 >, <userinput
0120 >3</userinput
0121 >, <userinput
0122 >4</userinput
0123 >, <userinput
0124 >5</userinput
0125 >, &etc; Els nombres negatius: <userinput
0126 >-1</userinput
0127 >, <userinput
0128 >-2</userinput
0129 >, <userinput
0130 >-3</userinput
0131 >, &etc; I els nombres amb decimals, per exemple: <userinput
0132 >0.1</userinput
0133 >, <userinput
0134 >3.4</userinput
0135 >, <userinput
0136 >33.3333</userinput
0137 >, <userinput
0138 >-5.05</userinput
0139 >, <userinput
0140 >-1.0</userinput
0141 >. El caràcter <userinput
0142 >.</userinput
0143 > (punt) s'utilitza com a separador de decimals. </para>
0144 <para
0145 >Els nombres es poden utilitzar en <link linkend="mathematical-operators"
0146 >operacions matemàtiques</link
0147 > i <link linkend="comparing-operators"
0148 >operadors de comparació</link
0149 >. També es poden desar en les <link linkend="assignment-of-variables"
0150 >variables</link
0151 >. Els nombres són <glossterm
0152 >ressaltats</glossterm
0153 > en color vermell fosc.</para>
0154 </sect2>
0155 
0156 <!-- constants like pi? -->
0157 
0158 <sect2 id="string">
0159 <title
0160 >Cadenes</title>
0161 <para
0162 >Primer un exemple: <screen>
0163 print "Hola, soc una cadena."
0164 </screen
0165 > En aquest exemple <userinput
0166 >print</userinput
0167 > és una ordre i on <userinput
0168 >"Hola, soc una cadena."</userinput
0169 > és una cadena. Les cadenes comencen i acaben amb la marca <userinput
0170 >"</userinput
0171 >, amb aquestes marques el &kturtle; sabrà que és una cadena.</para>
0172 <para
0173 >Les cadenes es poden posar en les <link linkend="assignment-of-variables"
0174 >variables</link
0175 >, igual que els <link linkend="number"
0176 >nombres</link
0177 >. No obstant això, a diferència dels nombres, les cadenes no es poden utilitzar en els <link linkend="mathematical-operators"
0178 >operadors matemàtics</link
0179 > o els <link linkend="comparing-operators"
0180 >operadors de comparació</link
0181 >. Les cadenes es <glossterm
0182 >ressalten</glossterm
0183 > en color vermell.</para>
0184 </sect2>
0185 
0186 <sect2 id="boolean-value">
0187 <title
0188 >Els valors booleans («true/false» -cert/fals-)</title>
0189 <para
0190 >Només hi ha dos valors booleans: <userinput
0191 >true</userinput
0192 ><indexterm
0193 ><primary
0194 >true</primary
0195 ></indexterm
0196 > (<userinput
0197 >cert</userinput
0198 >) i <userinput
0199 >false</userinput
0200 ><indexterm
0201 ><primary
0202 >false</primary
0203 ></indexterm
0204 > (<userinput
0205 >fals</userinput
0206 >). De vegades també se'ls crida: «<userinput
0207 >on</userinput
0208 >» i «<userinput
0209 >off</userinput
0210 >», «<userinput
0211 >yes</userinput
0212 >» i «<userinput
0213 >no</userinput
0214 >», «<userinput
0215 >one</userinput
0216 >» i «<userinput
0217 >zero</userinput
0218 >». Però en el &turtlescript; sempre se'ls crida, <userinput
0219 >true</userinput
0220 > i <userinput
0221 >false</userinput
0222 >. Doneu una ullada a aquest fragment de &turtlescript;: <screen>
0223 $a = true
0224 </screen
0225 > Si ens fixem en l'<link linkend="the-inspector"
0226 >inspector</link
0227 >, veurem que la <link linkend="assignment-of-variables"
0228 >variable</link
0229 > <userinput
0230 >$a</userinput
0231 > s'estableix a <userinput
0232 >true</userinput
0233 > i té el tipus booleà.</para>
0234 <para
0235 >Els valors booleans sovint són el resultat d'un <link linkend="comparing-operators"
0236 >operador de comparació</link
0237 >, com en el següent fragment de &turtlescript;: <screen>
0238 $answer = 10 &gt; 3
0239 </screen
0240 > La <link linkend="assignment-of-variables"
0241 >variable</link
0242 > <userinput
0243 >$answer</userinput
0244 > està establerta a <userinput
0245 >true</userinput
0246 >, perquè <userinput
0247 >10</userinput
0248 > és més gran que <userinput
0249 >3</userinput
0250 >.</para>
0251 <para
0252 >Els valors booleans, <userinput
0253 >true</userinput
0254 > i <userinput
0255 >false</userinput
0256 >, es <glossterm
0257 >ressalten</glossterm
0258 > en color vermell fosc.</para>
0259 </sect2>
0260 
0261 </sect1>
0262 
0263 
0264 
0265 <sect1 id="operators">
0266 <title
0267 >Els operadors matemàtics, booleans i de comparació</title>
0268 <para
0269 >El títol d'aquesta secció pot reservar una certa dificultat, però, no és tan difícil com sona.</para>
0270 
0271 <sect2 id="mathematical-operators">
0272 <title
0273 >Els operadors matemàtics</title>
0274 <para
0275 >Aquests són els símbols matemàtics bàsics coneguts com: add «suma» (<userinput
0276 >+</userinput
0277 >), subtract «resta» (<userinput
0278 >-</userinput
0279 >), multiply «multiplicació» (<userinput
0280 >*</userinput
0281 >), divide «divisió» (<userinput
0282 >/</userinput
0283 >) i power «potència» (<userinput
0284 >^</userinput
0285 >).</para>
0286 
0287 <para
0288 >Aquí teniu un petit exemple dels operadors matemàtics que podeu utilitzar en &turtlescript;: <screen>
0289 $add      = 1 + 1
0290 $subtract = 20 - 5
0291 $multiply = 15 * 2
0292 $divide   = 30 / 30
0293 $power    = 2 ^ 2
0294 </screen
0295 > Els valors resultants de les operacions matemàtiques són <link linkend="assignment-of-variables"
0296 >assignats</link
0297 > a diverses <link linkend="assignment-of-variables"
0298 >variables</link
0299 >. Utilitzant l'<link linkend="the-inspector"
0300 >inspector</link
0301 > podeu veure els valors.</para>
0302 <para
0303 >Si el que voleu és fer un càlcul senzill, podeu fer quelcom com això: <screen
0304 >print 2010-12
0305 </screen
0306 ></para>
0307 <para
0308 >Ara veurem un exemple amb parèntesis: <screen>
0309 print ( ( 20 - 5 ) * 2 / 30 ) + 1
0310 </screen
0311 > Les expressions entre parèntesis es calculen primer. En aquest exemple, es calcula 20 menys 5, després es multiplica per dos, es divideix per 30 i després se suma 1 (el qual ens dona 2). Els parèntesis també es poden utilitzar en altres casos.</para>
0312 <para
0313 >El &kturtle; també té funcions matemàtiques més avançades en forma d'ordres. Doneu una ullada a les següents ordres, però cal tenir present que es tracten d'operacions avançades: <link linkend="round"
0314 >round</link
0315 >, <link linkend="random"
0316 >random</link
0317 >, <link linkend="sqrt"
0318 >sqrt</link
0319 >, <link linkend="pi"
0320 >pi</link
0321 >, <link linkend="sin"
0322 >sin</link
0323 >, <link linkend="cos"
0324 >cos</link
0325 >, <link linkend="tan"
0326 >tan</link
0327 >, <link linkend="arcsin"
0328 >arcsin</link
0329 >, <link linkend="arccos"
0330 >arccos</link
0331 >, <link linkend="arctan"
0332 >arctan</link
0333 >.</para>
0334 </sect2>
0335 
0336 <sect2 id="boolean-operators">
0337 <title
0338 >Els operadors booleans («true/false» -cert/fals-)</title>
0339 <para
0340 >On els <link linkend="mathematical-operators"
0341 >operadors matemàtics</link
0342 > són principalment per als <link linkend="number"
0343 >nombres</link
0344 >, els operadors booleans són per als <link linkend="boolean-value"
0345 >valors booleans</link
0346 > (<userinput
0347 >true</userinput
0348 > i <userinput
0349 >false</userinput
0350 >). Només hi ha tres operadors booleans, anomenats: <userinput
0351 >and</userinput
0352 ><indexterm
0353 ><primary
0354 >and</primary
0355 ></indexterm
0356 >, <userinput
0357 >or</userinput
0358 ><indexterm
0359 ><primary
0360 >or</primary
0361 ></indexterm
0362 > i <userinput
0363 >not</userinput
0364 ><indexterm
0365 ><primary
0366 >not</primary
0367 ></indexterm
0368 >. El següent fragment de &turtlescript; ens mostra com emprar-los: <screen>
0369 $and_1_1 = true and true    # -> true
0370 $and_1_0 = true and false   # -> false
0371 $and_0_1 = false and true   # -> false
0372 $and_0_0 = false and false  # -> false
0373 
0374 $or_1_1 = true or true    # -> true
0375 $or_1_0 = true or false   # -> true
0376 $or_0_1 = false or true   # -> true
0377 $or_0_0 = false or false  # -> false
0378 
0379 $not_1 = not true   # -> false
0380 $not_0 = not false  # -> true
0381 </screen
0382 > Utilitzant l'<link linkend="the-inspector"
0383 >inspector</link
0384 > podreu veure els valors, però també oferim aquests resultats com a petits comentaris al final de les línies. <userinput
0385 >and</userinput
0386 > avalua <userinput
0387 >true</userinput
0388 > només si ambdues parts són <userinput
0389 >true</userinput
0390 >. <userinput
0391 >or</userinput
0392 > avalua <userinput
0393 >true</userinput
0394 > si una part i l'altra són <userinput
0395 >true</userinput
0396 >. I <userinput
0397 >not</userinput
0398 > retorna un <userinput
0399 >true</userinput
0400 > a dintre de <userinput
0401 >false</userinput
0402 > i <userinput
0403 >false</userinput
0404 > a dintre de <userinput
0405 >true</userinput
0406 >.</para>
0407 <para
0408 >Els operadors booleans es <glossterm
0409 >ressalten</glossterm
0410 > en color rosa.</para>
0411 
0412 <sect3 id="boolean-operators-advanced-examples">
0413 <title
0414 >Alguns exemples més avançats</title>
0415 <para
0416 >Considerem el següent exemple amb <userinput
0417 >and</userinput
0418 >: <screen>
0419  $a = 1
0420 $b = 5
0421 if (($a &lt; 10) and ($b == 5)) and ($a &lt; $b) {
0422   print "hola"
0423 }
0424 </screen
0425 > En aquest fragment de &turtlescript; el resultat de tres <link linkend="comparing-operators"
0426 >operadors de comparació</link
0427 > es fusionen utilitzant els operadors <userinput
0428 >and</userinput
0429 >. Això significa que els tres han d'avaluar «true» perquè s'imprimeixi «hola».</para>
0430 
0431 <para
0432 >Un exemple amb <userinput
0433 >or</userinput
0434 >: <screen>
0435 $n = 1
0436 if ($n &lt; 10) or ($n == 2) {
0437   print "hola"
0438 }
0439 </screen
0440 > En aquest fragment de &turtlescript; la part esquerra de <userinput
0441 >or</userinput
0442 > està avaluant a «true», el costat dret a «false». Atès que un dels dos costats de l'operador <userinput
0443 >or</userinput
0444 > és «true», l'operador <userinput
0445 >or</userinput
0446 > avaluarà com a «true». El qual vol dir que s'imprimirà «hola».</para>
0447 
0448 <para
0449 >I, finalment, un exemple amb <userinput
0450 >not</userinput
0451 > que canvia de «true» a «false» i de «false» a «true». Doneu un cop d'ull: <screen
0452 >$n = 1
0453 if not ($n == 3) {
0454   print "hola"
0455 } else {
0456   print "sense hola ;-)"
0457 }
0458 </screen
0459 ></para>
0460 </sect3>
0461 </sect2>
0462 
0463 <sect2 id="comparing-operators">
0464 <title
0465 >Els operadors de comparació</title>
0466 <para
0467 >Considereu en la possibilitat d'aquesta simple comparació: <screen>
0468 $answer = 10 &gt; 3
0469 </screen
0470 > Aquí <userinput
0471 >10</userinput
0472 > és comparat amb <userinput
0473 >3</userinput
0474 > amb l'operador «més gran que». El resultat d'aquesta comparació, el <link linkend="boolean-value"
0475 >​valor booleà</link
0476 > <userinput
0477 >true</userinput
0478 > es desa a la <link linkend="assignment-of-variables"
0479 >variable</link
0480 > <userinput
0481 >$answer</userinput
0482 >.</para>
0483 <para
0484 >Tots els <link linkend="number"
0485 >nombres</link
0486 > i les <link linkend="assignment-of-variables"
0487 >variables</link
0488 > (que contenen nombres) es poden comparar entre si amb els operadors de comparació.</para>
0489 <para
0490 >Aquí hi ha tots els possibles operadors de comparació: <table
0491 > <title
0492 >Tipus de preguntes</title
0493 > <tgroup cols="3"
0494 > <tbody
0495 > <row
0496 > <entry
0497 ><userinput
0498 >$A == $B</userinput
0499 ></entry
0500 > <entry
0501 >igual que</entry
0502 > <entry
0503 >respon «true» si <userinput
0504 >$A</userinput
0505 > és igual que <userinput
0506 >$B</userinput
0507 ></entry
0508 > </row
0509 > <row
0510 > <entry
0511 ><userinput
0512 >$A != $B</userinput
0513 ></entry
0514 > <entry
0515 >no igual que</entry
0516 > <entry
0517 >respon «true» si <userinput
0518 >$A</userinput
0519 > no és igual que <userinput
0520 >$B</userinput
0521 ></entry
0522 > </row
0523 > <row
0524 > <entry
0525 ><userinput
0526 >$A &gt; $B</userinput
0527 ></entry
0528 > <entry
0529 >més gran que</entry
0530 > <entry
0531 >respon «true» si <userinput
0532 >$A</userinput
0533 > és més gran que <userinput
0534 >$B</userinput
0535 ></entry
0536 > </row
0537 > <row
0538 > <entry
0539 ><userinput
0540 >$A &lt; $B</userinput
0541 ></entry
0542 > <entry
0543 >més petit que</entry
0544 > <entry
0545 >respon «true» si <userinput
0546 >$A</userinput
0547 > és més petit que <userinput
0548 >$B</userinput
0549 ></entry
0550 > </row
0551 > <row
0552 > <entry
0553 ><userinput
0554 >$A &gt;= $B</userinput
0555 ></entry
0556 > <entry
0557 >més gran o igual que</entry
0558 > <entry
0559 >respon «true» si <userinput
0560 >$A</userinput
0561 > és més gran o igual que <userinput
0562 >$B</userinput
0563 ></entry
0564 > </row
0565 > <row
0566 > <entry
0567 ><userinput
0568 >$A &lt;= $B</userinput
0569 ></entry
0570 > <entry
0571 >més petit o igual que</entry
0572 > <entry
0573 >respon «true» si <userinput
0574 >$A</userinput
0575 > és més petit o igual que <userinput
0576 >$B</userinput
0577 ></entry
0578 > </row
0579 > </tbody
0580 > </tgroup
0581 > </table
0582 > Cal tenir en compte que <userinput
0583 >$A</userinput
0584 > i <userinput
0585 >$B</userinput
0586 > han de ser <link linkend="number"
0587 >nombres</link
0588 > o <link linkend="assignment-of-variables"
0589 >variables</link
0590 > que contenen nombres.</para>
0591 </sect2>
0592 
0593 
0594 </sect1>
0595 
0596 
0597 
0598 <sect1 id="commands">
0599 <title
0600 >Ordres</title>
0601 <para
0602 >Utilitzant ordres li indicareu a la tortuga o al &kturtle; que faci quelcom. Algunes ordres necessiten alguna entrada o sortida. En aquesta secció explicarem totes les ordres integrades del &kturtle;. D'altra banda, utilitzant <link linkend="learn"
0603 ><userinput
0604 >learn (aprèn)</userinput
0605 ></link
0606 >, podreu crear les vostres pròpies ordres. Les ordres integrades que es debaten aquí es <glossterm
0607 >ressalten</glossterm
0608 > amb color blau fosc.</para>
0609 
0610 <sect2 id="moving-the-turtle">
0611 <title
0612 >Moure la tortuga</title>
0613 <para
0614 >Hi ha diverses ordres per a moure la tortuga sobre la pantalla.</para>
0615 
0616   <variablelist>
0617     <anchor id="forward"/>
0618     <varlistentry
0619 > 
0620       <term
0621 >forward -fw- (avança -av-)<indexterm
0622 ><primary
0623 >forward -fw- (avança -av-)</primary
0624 ></indexterm
0625 ></term>
0626       <listitem
0627 ><para
0628 ><screen
0629 >forward X</screen
0630 ><userinput
0631 >forward</userinput
0632 > mou la tortuga cap endavant la quantitat de X píxels. Quan el llapis està sota la tortuga aquesta deixa un rastre. <userinput
0633 >forward</userinput
0634 > pot abreujar-se com <userinput
0635 >fw</userinput
0636 >.</para
0637 ></listitem>
0638     </varlistentry>
0639   </variablelist>
0640   <variablelist>
0641     <anchor id="backward"/>
0642     <varlistentry
0643 >  
0644       <term
0645 >backward -bw- (recula -re-)<indexterm
0646 ><primary
0647 >backward -bw- (recula -re-)</primary
0648 ></indexterm
0649 ></term>
0650       <listitem
0651 ><para
0652 ><screen
0653 >backward X</screen
0654 ><userinput
0655 >backward</userinput
0656 > mou la tortuga cap enrere la quantitat de X píxels. Quan el llapis està avall la tortuga deixa un rastre. <userinput
0657 >backward</userinput
0658 > pot abreujar-se com <userinput
0659 >bw</userinput
0660 >.</para
0661 ></listitem>
0662     </varlistentry>
0663   </variablelist>
0664   <variablelist>
0665     <anchor id="turnleft"/>
0666     <varlistentry
0667 > 
0668       <term
0669 >turnleft -tl- (giraesquerra -ge-)<indexterm
0670 ><primary
0671 >turnleft -tl- (giraesquerra -ge-)</primary
0672 ></indexterm
0673 ></term>
0674       <listitem
0675 ><para
0676 ><screen
0677 >turnleft X</screen
0678 ><userinput
0679 >turnleft</userinput
0680 > ordena a la tortuga tornar una quantitat de X graus cap a l'esquerra. <userinput
0681 >turnleft</userinput
0682 > pot abreujar-se com <userinput
0683 >tl</userinput
0684 >.</para
0685 ></listitem>
0686     </varlistentry>
0687   </variablelist>
0688   <variablelist>
0689     <anchor id="turnright"/>
0690     <varlistentry
0691 > 
0692       <term
0693 >turnright -tr- (giradreta -gd-)<indexterm
0694 ><primary
0695 >turnright -tr- (giradreta -gd-)</primary
0696 ></indexterm
0697 ></term>
0698       <listitem
0699 ><para
0700 ><screen
0701 >turnright X</screen
0702 ><userinput
0703 >turnright</userinput
0704 > ordena a la tortuga tornar una quantitat de X graus cap a la dreta. <userinput
0705 >turnright</userinput
0706 > pot abreujar-se com <userinput
0707 >tr</userinput
0708 >.</para
0709 ></listitem>
0710     </varlistentry>
0711   </variablelist>
0712   <variablelist>
0713     <anchor id="direction"/>
0714     <varlistentry
0715 > 
0716       <term
0717 >direction -dir- (direcció -dir-)<indexterm
0718 ><primary
0719 >direction -dir- (direcció -dir-)</primary
0720 ></indexterm
0721 ></term>
0722       <listitem
0723 ><para
0724 ><screen
0725 >direction X</screen
0726 ><userinput
0727 >direction</userinput
0728 > estableix la direcció de la tortuga a una quantitat de X graus X comptant des de zero, i per tant no és relativa a la direcció anterior de la tortuga. <userinput
0729 >direction</userinput
0730 > pot abreujar-se com <userinput
0731 >dir</userinput
0732 >.</para
0733 ></listitem>
0734     </varlistentry>
0735   </variablelist>
0736   <variablelist>
0737     <anchor id="getdirection"/>
0738     <varlistentry
0739 > 
0740       <term
0741 >getdirection (obtinguesdireccio)<indexterm
0742 ><primary
0743 >getdirection (obtinguesdireccio)</primary
0744 ></indexterm
0745 ></term>
0746       <listitem
0747 ><para
0748 ><screen
0749 >getdirection (obtinguesdireccio)</screen
0750 ><userinput
0751 >getdirection</userinput
0752 > retorna la direcció de la tortuga a una quantitat de graus comptant des de zero, on zero és la direcció quan la tortuga està apuntant cap amunt.</para
0753 ></listitem>
0754     </varlistentry>
0755   </variablelist>
0756   <variablelist>
0757     <anchor id="center"/>
0758     <varlistentry
0759 > 
0760       <term
0761 >center (centra)<indexterm
0762 ><primary
0763 >center (centra)</primary
0764 ></indexterm
0765 ></term>
0766       <listitem
0767 ><para
0768 ><screen
0769 >center</screen
0770 ><userinput
0771 >center</userinput
0772 > mourà la tortuga cap al centre sobre el llenç.</para
0773 ></listitem>
0774     </varlistentry>
0775   </variablelist>
0776   <variablelist>
0777     <anchor id="go"/>
0778     <varlistentry
0779 > 
0780       <term
0781 >go (vesa)<indexterm
0782 ><primary
0783 >go (vesa)</primary
0784 ></indexterm
0785 ></term>
0786       <listitem
0787 ><para
0788 ><screen
0789 >go X,Y</screen
0790 ><userinput
0791 >go</userinput
0792 > ordena a la tortuga anar cap a un lloc determinat en el llenç. Aquest lloc és X <glossterm linkend="pixels"
0793 >píxels</glossterm
0794 > des de l'esquerra del llenç, i Y <glossterm linkend="pixels"
0795 >píxels</glossterm
0796 > des de la part superior del llenç.</para
0797 ></listitem>
0798     </varlistentry>
0799   </variablelist>
0800   <variablelist>
0801     <anchor id="gox"/>
0802     <varlistentry
0803 > 
0804       <term
0805 >gox (vesax)<indexterm
0806 ><primary
0807 >gox (gx)</primary
0808 ></indexterm
0809 ></term>
0810       <listitem
0811 ><para
0812 ><screen
0813 >gox X</screen
0814 ><userinput
0815 >gox</userinput
0816 > ordena a la tortuga que es desplaci X <glossterm linkend="pixels"
0817 >píxels</glossterm
0818 > des de l'esquerra del llenç mantenint la seva estada a la mateixa alçada. <userinput
0819 >gox</userinput
0820 > pot abreujar-se com <userinput
0821 >gx</userinput
0822 >.</para
0823 ></listitem>
0824     </varlistentry>
0825   </variablelist>
0826   <variablelist>
0827     <anchor id="goy"/>
0828     <varlistentry
0829 > 
0830       <term
0831 >goy (vesay)<indexterm
0832 ><primary
0833 >goy (gy)</primary
0834 ></indexterm
0835 ></term>
0836       <listitem
0837 ><para
0838 ><screen
0839 >goy Y</screen
0840 ><userinput
0841 >goy</userinput
0842 > ordena a la tortuga que es desplaci Y <glossterm linkend="pixels"
0843 >píxels</glossterm
0844 > des de la part superior del llenç mantenint la seva estada a la mateixa distància de la vora esquerra del llenç. <userinput
0845 >goy</userinput
0846 > pot abreujar-se com <userinput
0847 >gy</userinput
0848 >.</para
0849 ></listitem>
0850     </varlistentry>
0851   </variablelist>
0852   <note
0853 ><para
0854 >Utilitzant les ordres <userinput
0855 >go</userinput
0856 >, <userinput
0857 >gox</userinput
0858 >, <userinput
0859 >goy</userinput
0860 > i <userinput
0861 >center</userinput
0862 > la tortuga no dibuixarà una línia, tant se val si el llapis és cap amunt o cap avall.</para>
0863   </note>
0864 </sect2>
0865 
0866 <sect2 id="locate-the-turtle">
0867 <title
0868 >On està la tortuga?</title>
0869 <para
0870 >Hi ha dues ordres que retornen la posició de la tortuga sobre la pantalla.</para>
0871 
0872   <variablelist>
0873     <anchor id="getx"/>
0874     <varlistentry
0875 > 
0876       <term
0877 >getx (obtinguesx)<indexterm
0878 ><primary
0879 >getx (obtinguesx)</primary
0880 ></indexterm
0881 ></term>
0882       <listitem
0883 ><para
0884 ><userinput
0885 >getx</userinput
0886 > retorna el nombre de píxels des de l'esquerra del llenç cap a la posició actual de la tortuga.</para
0887 ></listitem>
0888     </varlistentry>
0889   </variablelist>
0890   <variablelist>
0891     <anchor id="gety"/>
0892     <varlistentry
0893 > 
0894       <term
0895 >gety (obtinguesy)<indexterm
0896 ><primary
0897 >gety (obtinguesy)</primary
0898 ></indexterm
0899 ></term>
0900       <listitem
0901 ><para
0902 ><userinput
0903 >gety</userinput
0904 > retorna el nombre de píxels des de la part superior del llenç cap a la posició actual de la tortuga.</para
0905 ></listitem>
0906     </varlistentry>
0907   </variablelist>
0908 </sect2>
0909 
0910 <sect2 id="pen">
0911 <title
0912 >La tortuga té un llapis</title>
0913 <para
0914 >La tortuga té un llapis que traça una línia quan aquesta es mou. Hi ha unes quantes ordres per a controlar el llapis. S'expliquen en aquesta secció.</para>
0915   <variablelist>
0916     <anchor id="penup"/>
0917     <varlistentry
0918 > 
0919       <term
0920 >penup -pu- (aixecallapis -al-)<indexterm
0921 ><primary
0922 >penup -pu- (aixecallapis -al-)</primary
0923 ></indexterm
0924 ></term>
0925       <listitem
0926 ><para
0927 ><screen
0928 >penup</screen
0929 ><userinput
0930 >penup</userinput
0931 > aixeca el llapis del llenç. Quan el llapis està «amunt» no es dibuixarà cap línia quan es mogui la tortuga. Vegeu també <userinput
0932 >pendown</userinput
0933 >. <userinput
0934 >penup</userinput
0935 > pot abreujar-se com <userinput
0936 >pu</userinput
0937 >.</para
0938 ></listitem>
0939     </varlistentry>
0940   </variablelist>
0941   <variablelist>
0942     <anchor id="pendown"/>
0943     <varlistentry
0944 > 
0945       <term
0946 >pendown -pd- (baixallapis -bl-)<indexterm
0947 ><primary
0948 >pendown -pd- (baixallapis -bl-)</primary
0949 ></indexterm
0950 ></term>
0951       <listitem
0952 ><para
0953 ><screen
0954 >pendown</screen
0955 ><userinput
0956 >penup</userinput
0957 > pressiona el llapis sobre el llenç. Quan el llapis està «abaixat» es dibuixarà una línia quan es mogui la tortuga. Vegeu també <userinput
0958 >penup</userinput
0959 >. <userinput
0960 >pendown</userinput
0961 > pot abreujar-se com <userinput
0962 >pd</userinput
0963 >.</para
0964 ></listitem>
0965     </varlistentry>
0966   </variablelist>
0967   <variablelist>
0968     <anchor id="setpenwidth"/>
0969     <varlistentry
0970 > 
0971       <term
0972 >penwidth -pw- (gruixllapis -gl-)<indexterm
0973 ><primary
0974 >penwidth -pw- (gruixllapis -gl-)</primary
0975 ></indexterm
0976 ></term>
0977       <listitem
0978 ><para
0979 ><screen
0980 >penwidth X</screen
0981 ><userinput
0982 >penwidth</userinput
0983 > estableix l'amplada del traç del llapis (l'amplada de la línia) per una quantitat de X <glossterm linkend="pixels"
0984 >píxels</glossterm
0985 >. <userinput
0986 >penwidth</userinput
0987 > pot abreujar-se com <userinput
0988 >pw</userinput
0989 >.</para
0990 ></listitem>
0991     </varlistentry>
0992   </variablelist>
0993   <variablelist>
0994     <anchor id="setfgcolor"/>
0995     <varlistentry
0996 > 
0997       <term
0998 >pencolor -pc- (colorllapis -cl-)<indexterm
0999 ><primary
1000 >pencolor -pc- (colorllapis -cl-)</primary
1001 ></indexterm
1002 ></term>
1003       <listitem
1004 ><para
1005 ><screen
1006 >pencolor R,G,B</screen
1007 ><userinput
1008 >pencolor</userinput
1009 > estableix el color del llapis. <userinput
1010 >pencolor</userinput
1011 > pren una <glossterm linkend="rgb"
1012 >combinació RGB</glossterm
1013 > com a entrada. <userinput
1014 >pencolor</userinput
1015 > pot abreujar-se com <userinput
1016 >pc</userinput
1017 >.</para
1018 ></listitem>
1019     </varlistentry>
1020   </variablelist>
1021 </sect2>
1022 
1023 <sect2 id="canvas">
1024 <title
1025 >Ordres per a controlar el llenç</title>
1026 <para
1027 >Hi ha diverses ordres per a controlar el llenç.</para>
1028   <variablelist>
1029     <anchor id="resizecanvas"/>
1030     <varlistentry>
1031       <term
1032 >canvassize -cs- (midapaper -mp-)<indexterm
1033 ><primary
1034 >canvassize -cs- (midapaper -mp-)</primary
1035 ></indexterm
1036 ></term>
1037       <listitem
1038 ><para
1039 ><screen
1040 >canvassize X,Y</screen
1041 >Amb l'ordre <userinput
1042 >canvassize</userinput
1043 > podreu establir la mida del llenç. Agafa X i Y com a entrada, on X és l'amplada del llenç nou en <glossterm linkend="pixels"
1044 >píxels</glossterm
1045 >, i Y és l'alçada del llenç nou en <glossterm linkend="pixels"
1046 >píxels</glossterm
1047 >. <userinput
1048 >canvassize</userinput
1049 > pot abreujar-se com <userinput
1050 >cs</userinput
1051 >.</para
1052 ></listitem>
1053     </varlistentry>
1054   </variablelist>
1055   <variablelist>
1056     <anchor id="setbgcolor"/>
1057     <varlistentry
1058 > 
1059       <term
1060 >canvascolor -cc- (colorpaper -cp-)<indexterm
1061 ><primary
1062 >canvascolor -cc- (colorpaper -cp-)</primary
1063 ></indexterm
1064 ></term>
1065       <listitem
1066 ><para
1067 ><screen
1068 >canvascolor R,G,B</screen
1069 ><userinput
1070 >canvascolor</userinput
1071 > estableix el color del llenç. <userinput
1072 >canvascolor</userinput
1073 > pren una <glossterm linkend="rgb"
1074 >combinació RGB</glossterm
1075 > com a entrada. <userinput
1076 >canvascolor</userinput
1077 > pot abreujar-se com <userinput
1078 >cc</userinput
1079 >.</para
1080 ></listitem>
1081     </varlistentry>
1082   </variablelist>
1083 </sect2>
1084 
1085 <sect2 id="clean">
1086 <title
1087 >Ordres per a netejar</title>
1088 <para
1089 >Hi ha dues ordres per a netejar el llenç després d'haver fet un embolic.</para>
1090   <variablelist>
1091     <anchor id="clear"/>
1092     <varlistentry
1093 > 
1094       <term
1095 >clear -ccl- (neteja -net-)<indexterm
1096 ><primary
1097 >clear -ccl- (neteja -net-)</primary
1098 ></indexterm
1099 ></term>
1100       <listitem
1101 ><para
1102 ><screen
1103 >clear</screen
1104 >Amb <userinput
1105 >clear</userinput
1106 > podreu netejar tots els dibuixos del llenç. Totes les altres coses hi romandran: La posició i l'angle de la tortuga, el color del llenç, la visibilitat de la tortuga i la mida del llenç.</para
1107 ></listitem>
1108     </varlistentry>
1109   </variablelist>
1110   <variablelist>
1111     <anchor id="reset"/>
1112     <varlistentry
1113 > 
1114       <term
1115 >reset (restableix)<indexterm
1116 ><primary
1117 >reset (restableix)</primary
1118 ></indexterm
1119 ></term>
1120       <listitem
1121 ><para
1122 ><screen
1123 >reset</screen
1124 ><userinput
1125 >reset</userinput
1126 > neteja molt més a fons que l'ordre <userinput
1127 >clear</userinput
1128 >. Després d'una ordre <userinput
1129 >reset</userinput
1130 > tot quedarà com en iniciar el &kturtle;. La tortuga es col·loca al centre de la pantalla, el color del llenç és blanc, la tortuga dibuixa un traç negre sobre el llenç i la mida del llenç s'estableix a 400 x 400 píxels.</para
1131 ></listitem>
1132     </varlistentry>
1133   </variablelist>
1134 </sect2>
1135 
1136 <sect2 id="sprites">
1137 <title
1138 >La tortuga és un sprite</title>
1139 <para
1140 >En primer lloc, una breu explicació del que són els sprites: Els sprites són imatges petites que es poden moure per la pantalla, com veiem sovint en els jocs d'ordinador. La nostra tortuga és un sprite. Per a més informació, vegeu el glossari quant a <glossterm linkend="sprites"
1141 >sprites</glossterm
1142 >.</para>
1143 <para
1144 >A continuació trobareu una descripció completa de totes les ordres per a treballar amb sprites.</para>
1145 <note
1146 ><para
1147 >La versió actual del &kturtle; encara no admet l'ús de sprites que no sigui la tortuga. Amb les futures versions es podrà canviar la tortuga per alguna cosa del vostre propi disseny.</para
1148 ></note>
1149   <variablelist>
1150     <anchor id="spriteshow"/>
1151     <varlistentry
1152 > 
1153       <term
1154 >spriteshow -ss- (mostra -mo-)<indexterm
1155 ><primary
1156 >spriteshow -ss- (mostra -mo-)</primary
1157 ></indexterm
1158 ></term>
1159       <listitem
1160 ><para
1161 ><screen
1162 >spriteshow</screen
1163 ><userinput
1164 >spriteshow</userinput
1165 > fa la tortuga visible de nou després d'haver-la ocultat. <userinput
1166 >spriteshow</userinput
1167 > pot abreujar-se com <userinput
1168 >ss</userinput
1169 >.</para
1170 ></listitem>
1171     </varlistentry>
1172   </variablelist>
1173   <variablelist>
1174     <anchor id="spritehide"/>
1175     <varlistentry
1176 > 
1177       <term
1178 >spritehide -sh- (oculta -oc-)<indexterm
1179 ><primary
1180 >spritehide -sh- (oculta -oc-)</primary
1181 ></indexterm
1182 ></term>
1183       <listitem
1184 ><para
1185 ><screen
1186 >spritehide</screen
1187 ><userinput
1188 >spritehide</userinput
1189 > oculta la tortuga. Es pot utilitzar si la tortuga no s'ajusta al vostre dibuix. <userinput
1190 >spritehide</userinput
1191 > pot abreujar-se com <userinput
1192 >sh</userinput
1193 >.</para
1194 ></listitem>
1195     </varlistentry>
1196   </variablelist>
1197 </sect2>
1198 
1199 <sect2 id="writing">
1200 <title
1201 >Pot escriure la tortuga?</title>
1202 <para
1203 >La resposta és: «Sí». La tortuga pot escriure: Escriu gairebé tot el que se li ordena.</para>
1204   <variablelist>
1205     <anchor id="print"/>
1206     <varlistentry
1207 > 
1208       <term
1209 >print (imprimeix)<indexterm
1210 ><primary
1211 >print (imprimeix)</primary
1212 ></indexterm
1213 ></term>
1214       <listitem
1215 ><para
1216 ><screen
1217 >print X</screen
1218 >L'ordre <userinput
1219 >print</userinput
1220 > s'utilitza per a ordenar a la tortuga que escrigui quelcom en el llenç. <userinput
1221 >print</userinput
1222 > pren els números i cadenes com a entrada. Podeu imprimir diversos nombres i cadenes mitjançant el símbol «+». Vegeu aquest petit exemple: <screen
1223 >$year = 2003
1224 $author = "Joan"
1225 print "En " + $author + " va començar el projecte KTurtle al " + $year + " i encara gaudeix treballant-hi!"
1226 </screen>
1227       </para
1228 ></listitem>
1229     </varlistentry>
1230   </variablelist>
1231   <variablelist>
1232     <anchor id="fontsize"/>
1233     <varlistentry
1234 > 
1235       <term
1236 >fontsize (midalletra)<indexterm
1237 ><primary
1238 >fontsize (midalletra)</primary
1239 ></indexterm
1240 ></term>
1241       <listitem
1242 ><para
1243 ><screen
1244 >fontsize X</screen
1245 ><userinput
1246 >fontsize</userinput
1247 > estableix la mida de la lletra utilitzada per <userinput
1248 >print</userinput
1249 >. <userinput
1250 >fontsize</userinput
1251 > pren una entrada que ha de ser un nombre. La mida s'estableix en <glossterm linkend="pixels"
1252 >píxels</glossterm
1253 >.</para
1254 ></listitem>
1255     </varlistentry>
1256   </variablelist>
1257 </sect2>
1258 
1259 <sect2 id="math-commands">
1260 <title
1261 >Ordres matemàtiques</title>
1262 <para
1263 >Les següents ordres són les ordres matemàtiques més avançades del &kturtle;.</para>
1264   <variablelist>
1265     <anchor id="round"/>
1266     <varlistentry>
1267       <term
1268 >round (arrod)<indexterm
1269 ><primary
1270 >round (arrod)</primary
1271 ></indexterm
1272 ></term>
1273       <listitem
1274 ><para
1275 ><screen
1276 >round(x)</screen
1277 ><userinput
1278 >round</userinput
1279 > arrodoneix el nombre indicat a l'enter més proper. <screen>
1280 print round(10,8)
1281 forward 20
1282 print round(10,3)
1283 </screen
1284 > Amb aquest codi la tortuga imprimirà els nombres 11 i 10.</para
1285 ></listitem>
1286     </varlistentry>
1287   </variablelist>
1288   <variablelist>
1289     <anchor id="random"/>
1290     <varlistentry
1291 > 
1292       <term
1293 >random -rnd- (aleatori -ale-)<indexterm
1294 ><primary
1295 >random -rnd- (aleatori -ale-)</primary
1296 ></indexterm
1297 ></term>
1298       <listitem
1299 ><para
1300 ><screen
1301 >random X,Y</screen
1302 ><userinput
1303 >random</userinput
1304 > és una ordre que pren l'entrada i dona una sortida. Com entrada requereix dos nombres, el primer (X) estableix el mínim de la sortida, el segon (Y) estableix el màxim. La sortida és un nombre escollit a l'atzar que és igual o superior al mínim i igual o inferior que el màxim. Aquí hi ha un petit exemple: <screen>
1305 repeat 500 {
1306   $x = random 1,20
1307   forward $x
1308   turnleft 10 - $x
1309 }
1310 </screen
1311 > Utilitzant l'ordre <userinput
1312 >random</userinput
1313 > podeu afegir una mica de caos al vostre programa.</para
1314 ></listitem>
1315     </varlistentry>
1316   </variablelist>
1317   <variablelist>
1318     <anchor id="mod"/>
1319     <varlistentry
1320 > 
1321       <term
1322 >mod<indexterm
1323 ><primary
1324 >mod</primary
1325 ></indexterm
1326 ></term>
1327       <listitem
1328 ><para
1329 ><screen
1330 >mod X,Y</screen
1331 >L'ordre <userinput
1332 >mod</userinput
1333 > retorna la resta de la divisió del primer número pel segon número.</para
1334 ></listitem>
1335     </varlistentry>
1336   </variablelist>
1337   <variablelist>
1338     <anchor id="sqrt"/>
1339     <varlistentry
1340 > 
1341       <term
1342 >sqrt (arrel)<indexterm
1343 ><primary
1344 >sqrt (arrel)</primary
1345 ></indexterm
1346 ></term>
1347       <listitem
1348 ><para
1349 ><screen
1350 >sqrt X</screen
1351 >L'ordre <userinput
1352 >sqrt</userinput
1353 > és un requisit per a trobar l'arrel quadrada d'un número, X.</para
1354 ></listitem>
1355     </varlistentry>
1356   </variablelist>
1357 <!--
1358   <variablelist>
1359     <anchor id="exp"/>
1360     <varlistentry
1361 > 
1362       <term
1363 >exp<indexterm
1364 ><primary
1365 >exp</primary
1366 ></indexterm
1367 ></term>
1368       <listitem
1369 ><para
1370 ><screen
1371 >sqrt X</screen>
1372       </para
1373 ></listitem>
1374     </varlistentry>
1375   </variablelist>
1376 -->
1377   <variablelist>
1378     <anchor id="pi"/>
1379     <varlistentry
1380 > 
1381       <term
1382 >pi<indexterm
1383 ><primary
1384 >pi</primary
1385 ></indexterm
1386 ></term>
1387       <listitem
1388 ><para
1389 ><screen
1390 >pi</screen
1391 >Aquesta ordre retorna la constant Pi, <userinput
1392 >3,14159</userinput
1393 >.</para
1394 ></listitem>
1395     </varlistentry>
1396   </variablelist>
1397   <variablelist>
1398     <anchor id="sin"/>
1399     <anchor id="cos"/>
1400     <anchor id="tan"/>
1401     <varlistentry>
1402       <term
1403 >sin<indexterm
1404 ><primary
1405 >sin</primary
1406 ></indexterm
1407 >, cos<indexterm
1408 ><primary
1409 >cos</primary
1410 ></indexterm
1411 >, tan<indexterm
1412 ><primary
1413 >tan</primary
1414 ></indexterm
1415 ></term>
1416       <listitem
1417 ><para>
1418 <screen
1419 >sin X
1420 cos X
1421 tan X
1422 </screen
1423 >Aquestes tres ordres representen les famoses funcions trigonomètriques <userinput
1424 >sin</userinput
1425 >, <userinput
1426 >cos</userinput
1427 > i <userinput
1428 >tan</userinput
1429 >. L'argument d'entrada d'aquestes ordres, X, és un <link linkend="number"
1430 >nombre</link
1431 >.</para
1432 ></listitem>
1433     </varlistentry>
1434   </variablelist>
1435   <variablelist>
1436     <anchor id="arcsin"/>
1437     <anchor id="arccos"/>
1438     <anchor id="arctan"/>
1439     <varlistentry>
1440       <term
1441 >arcsin<indexterm
1442 ><primary
1443 >arcsin</primary
1444 ></indexterm
1445 >, arccos<indexterm
1446 ><primary
1447 >arccos</primary
1448 ></indexterm
1449 >, arctan<indexterm
1450 ><primary
1451 >arctan</primary
1452 ></indexterm
1453 ></term>
1454       <listitem
1455 ><para>
1456 <screen
1457 >arcsin X
1458 arccos X
1459 arctan X
1460 </screen
1461 >Aquestes ordres són les funcions inverses de <link linkend="sin"
1462 >sin</link
1463 >, <link linkend="cos"
1464 >cos</link
1465 > i <link linkend="tan"
1466 >tan</link
1467 >. L'argument d'entrada d'aquestes ordres, X, és un <link linkend="number"
1468 >nombre</link
1469 >.</para
1470 ></listitem>
1471     </varlistentry>
1472   </variablelist>
1473 </sect2>
1474 
1475 <sect2 id="dialogs">
1476 <title
1477 >Aportacions i comentaris a través dels diàlegs</title>
1478 <para
1479 >Un diàleg és una petita finestra emergent que proporciona alguna informació o us demana alguna entrada. El &kturtle; té dos ordres per als diàlegs, anomenades: <userinput
1480 >message</userinput
1481 > i <userinput
1482 >ask</userinput
1483 ></para>
1484   <variablelist>
1485     <anchor id="message"/>
1486     <varlistentry
1487 > 
1488       <term
1489 >message (missatge)<indexterm
1490 ><primary
1491 >message (missatge)</primary
1492 ></indexterm
1493 ></term>
1494       <listitem
1495 ><para
1496 ><screen
1497 >message X</screen
1498 >L'ordre <userinput
1499 >message</userinput
1500 > pren una <link linkend="string"
1501 >cadena</link
1502 > com a entrada. Mostra un diàleg emergent que conté el text de la <link linkend="string"
1503 >cadena</link
1504 >. <screen
1505 >message "En Joan va començar el projecte KTurtle el 2003 i encara gaudeix treballant-hi!"
1506 </screen>
1507       </para
1508 ></listitem>
1509     </varlistentry>
1510   </variablelist>
1511   <variablelist>
1512     <anchor id="ask"/>
1513     <varlistentry
1514 > 
1515       <term
1516 >ask (pregunta)<indexterm
1517 ><primary
1518 >ask (pregunta)</primary
1519 ></indexterm
1520 ></term>
1521       <listitem
1522 ><para
1523 ><screen
1524 >ask X</screen
1525 ><userinput
1526 >ask</userinput
1527 > pren una cadena com a entrada. La mostra en un diàleg emergent (similar a <link linkend="string"
1528 >message</link
1529 >), juntament amb un camp d'entrada. Després que l'usuari ha introduït un nombre o una cadena, el resultat es pot desar en una variable o passar-lo com a argument a una ordre. Per exemple: <screen>
1530 $in = ask "Quina és la vostra data de naixement?"
1531 $out = 2003 - $in
1532 print "L'any 2003 vàreu tenir " + $out + " anys d'edat en algun moment."
1533 </screen
1534 > Si l'usuari cancel·la el diàleg d'entrada, o no introdueix res, la variable quedarà buida.</para
1535 ></listitem>
1536     </varlistentry>
1537   </variablelist>
1538 </sect2>
1539 
1540 </sect1>
1541 
1542 
1543 
1544 <sect1 id="assignment-of-variables">
1545 <title
1546 >Assignar les variables</title>
1547 <para
1548 >En primer lloc, donarem una ullada a les variables, llavors ens centrarem en l'assignació de valors a aquestes variables. </para>
1549 
1550 <para
1551 >Les variables són paraules que comencen amb un «$», en l'<link linkend="the-editor"
1552 >editor</link
1553 > es <glossterm
1554 >ressalten</glossterm
1555 > amb color porpra.</para>
1556 
1557 <para
1558 >Les variables poden contenir qualsevol <link linkend="number"
1559 >nombre</link
1560 >, <link linkend="string"
1561 >cadena</link
1562 > o <link linkend="boolean-value"
1563 >valor booleà (true/false -cert/fals-)</link
1564 >. Utilitzant l'assignació, <userinput
1565 >=</userinput
1566 >, una variable pren el seu contingut. La qual mantindrà el contingut fins que el programa s'acabi d'executar o fins que la variable es torni a assignar a quelcom altre.</para>
1567 
1568 <para
1569 >Podeu utilitzar variables, un cop assignades, simplement mantenen el seu contingut. Per exemple, en el següent fragment de &turtlescript;: <screen>
1570 $x = 10
1571 $x = $x / 3
1572 print $x
1573 </screen
1574 > Primer a la variable <userinput
1575 >$x</userinput
1576 > se li assigna <userinput
1577 >10</userinput
1578 >. Llavors a <userinput
1579 >$x</userinput
1580 > es torna a assignar a la seva divisió per <userinput
1581 >3</userinput
1582 > -això significa que <userinput
1583 >$x</userinput
1584 > es torna a assignar al producte de <userinput
1585 >10 / 3</userinput
1586 >. Finalment s'imprimeix <userinput
1587 >$x</userinput
1588 >. En la línia dos i tres veureu que <userinput
1589 >$x</userinput
1590 > s'utilitza com si fos el seu contingut.</para>
1591 
1592 <para
1593 >Les variables s'han d'assignar per tal de ser utilitzades. Per exemple: <screen>
1594 print $n
1595 </screen
1596 > Donarà com a resultat un missatge d'error.</para>
1597 
1598 <para
1599 >Observem el següent fragment de &turtlescript;: <screen>
1600 $a = 2004
1601 $b = 25
1602 
1603 # Les següents ordres imprimeixen «2029»
1604 print $a + $b
1605 backward 30
1606 # La següent ordre imprimeix «2004 més 25 és igual que 2029»
1607 print $a + " més " + $b + " és igual que " + ($a + $b)
1608 </screen
1609 > En les dues primeres línies les variables <userinput
1610 >$a</userinput
1611 > i <userinput
1612 >$b</userinput
1613 > s'estableixen a 2004 i 25. Després s'executen dues ordres <userinput
1614 >print</userinput
1615 > amb una <userinput
1616 >backward 30</userinput
1617 > al mig. Els comentaris abans de l'ordre <userinput
1618 >print</userinput
1619 > expliquen el que faran. L'ordre <userinput
1620 >backward 30</userinput
1621 > hi és per a assegurar que cada sortida és una nova línia. Com podeu veure les variables es poden utilitzar com si fossin el que contenen, es poden utilitzar amb qualsevol mena d'<link linkend="operators"
1622 >operador</link
1623 > o com a entrada en utilitzar altres <link linkend="commands"
1624 >ordres</link
1625 >.</para>
1626 
1627 <para
1628 >Un exemple més: <screen>
1629 $name = ask "Quin és el teu nom?"
1630 print "Hola " + $name + "! Bona sort mentre apreneu l'art de la programació..."
1631 </screen
1632 > Força simple. Una vegada més podeu veure com la variable <userinput
1633 >$name</userinput
1634 >, és tractada com una cadena.</para>
1635 
1636 <para
1637 >En utilitzar variables l'<link linkend="the-inspector"
1638 >inspector</link
1639 > resulta molt útil. Mostra el contingut de totes les variables que estan actualment en ús.</para>
1640 </sect1>
1641 
1642 
1643 
1644 <sect1 id="controlling-execution">
1645 <title
1646 >Controlar l'execució</title>
1647 <para
1648 >Els controladors de l'execució us permeten -tal com el seu nom indica- controlar l'execució.</para>
1649 <para
1650 >Els controladors de l'execució es <glossterm
1651 >ressalten</glossterm
1652 > amb color verd fosc en una lletra en negreta. Els parèntesis s'utilitzen juntament amb els controladors de l'execució i es ressalten amb color negre.</para>
1653 
1654 <sect2 id="wait">
1655 <title
1656 >Fer que la tortuga esperi</title>
1657 <para
1658 >Si heu fet alguna cosa de programació en el &kturtle;, us haureu adonat que la tortuga pot ser molt ràpida dibuixant. Aquesta ordre farà que la tortuga esperi un període de temps determinat.</para>
1659   <variablelist>
1660     <varlistentry>
1661       <term
1662 >wait (espera)<indexterm
1663 ><primary
1664 >wait (espera)</primary
1665 ></indexterm
1666 ></term>
1667       <listitem
1668 ><para
1669 ><screen
1670 >wait X</screen
1671 ><userinput
1672 >wait</userinput
1673 > fa que la tortuga esperi durant X segons. <screen>
1674 repeat 36 {
1675   forward 5
1676   turnright 10
1677   wait 0.5
1678 }
1679 </screen
1680 > Aquest codi dibuixa un cercle, però la tortuga esperarà mig segon després de cada pas. Això fa l'efecte d'una tortuga lenta.</para
1681 ></listitem>
1682     </varlistentry>
1683   </variablelist>
1684 </sect2>
1685 
1686 <sect2 id="if">
1687 <title
1688 >Executa «if -si-»</title>
1689   <variablelist>
1690     <varlistentry>
1691       <term
1692 >if (si)<indexterm
1693 ><primary
1694 >if (si)</primary
1695 ></indexterm
1696 ></term>
1697       <listitem
1698 ><para
1699 ><screen
1700 >if <link linkend="boolean-value"
1701 >booleà</link
1702 > { ... }</screen
1703 >El codi que es col·loca entre els claudàtors només s'executarà si el <link linkend="boolean-value"
1704 >valor booleà</link
1705 > avalua «true». <screen>
1706 $x = 6
1707 if $x &gt; 5 {
1708   print "$x és més gran que cinc!"
1709 }
1710 </screen
1711 > A la primera línia <userinput
1712 >$x</userinput
1713 > està establert a 6. En la segona línia s'utilitza un <link linkend="boolean-value"
1714 >operador de comparació</link
1715 > per a avaluar $x &gt; 5. Atès que aquest avalua «true», 6 és més gran que 5, el controlador de l'execució <userinput
1716 >if</userinput
1717 > permet executar el codi entre els claudàtors.</para
1718 ></listitem>
1719     </varlistentry>
1720   </variablelist>
1721 </sect2>
1722 
1723 <sect2 id="else">
1724 <title
1725 >Si no, en altres paraules: «else -altrament-»</title>
1726   <variablelist>
1727     <varlistentry>
1728       <term
1729 >else (altrament)<indexterm
1730 ><primary
1731 >else (altrament)</primary
1732 ></indexterm
1733 ></term>
1734       <listitem
1735 ><para
1736 ><screen
1737 >if <link linkend="boolean-value"
1738 >booleà</link
1739 > { ... } else { ... }</screen
1740 ><userinput
1741 >else</userinput
1742 > es pot utilitzar a més del controlador de l'execució <link linkend="if"
1743 ><userinput
1744 >if</userinput
1745 ></link
1746 >. El codi entre claudàtors després de <userinput
1747 >else</userinput
1748 > només s'executa si el <link linkend="boolean-value"
1749 >booleà</link
1750 > avalua «false». <screen>
1751 reset
1752 $x = 4
1753 if $x &gt; 5 {
1754   print "$x és més gran que cinc!"
1755 } else {
1756   print "$x és més petit que sis!"
1757 }
1758 </screen
1759 > L'<link linkend="comparing-operators"
1760 >operador de comparació</link
1761 > avalua l'expressió <userinput
1762 >$x &gt; 5</userinput
1763 >. Donat que 4 no és més gran que 5, l'expressió s'avalua com «fals». Això significa que el codi entre claudàtors després de <userinput
1764 >else</userinput
1765 > serà executat.</para
1766 ></listitem>
1767     </varlistentry>
1768   </variablelist>
1769 </sect2>
1770 
1771 <sect2 id="while">
1772 <title
1773 >El bucle «while -mentre-»</title>
1774   <variablelist>
1775     <varlistentry>
1776       <term
1777 >while (mentre)<indexterm
1778 ><primary
1779 >while (mentre)</primary
1780 ></indexterm
1781 ></term>
1782       <listitem
1783 ><para
1784 ><screen
1785 >while <link linkend="boolean-value"
1786 >booleà</link
1787 > { ... }</screen
1788 >El controlador de l'execució <userinput
1789 >while</userinput
1790 > s'assembla molt a <link linkend="if"
1791 ><userinput
1792 >if</userinput
1793 ></link
1794 >. La diferència és que <userinput
1795 >while</userinput
1796 > no deixa de repetir (en bucle) el codi entre claudàtors fins que el <link linkend="boolean-value"
1797 >booleà</link
1798 > avalua «false». <screen>
1799 $x = 1
1800 while $x &lt; 5 {
1801   forward 10
1802   wait 1
1803   $x = $x + 1
1804 }
1805 </screen
1806 > En la primera línia <userinput
1807 >$x</userinput
1808 > s'estableix a 1. En la segona línia s'avalua <userinput
1809 >$x &lt; 5</userinput
1810 >. Atès que la resposta a aquesta pregunta és «true» el controlador de l'execució while començarà a executar el codi entre claudàtors fins que <userinput
1811 >$x &lt; 5</userinput
1812 > avaluï «false». En aquest cas el codi entre els claudàtors s'executarà quatre vegades, perquè cada vegada que s'executa la cinquena línia <userinput
1813 >$x</userinput
1814 > s'incrementa en 1.</para
1815 ></listitem>
1816     </varlistentry>
1817   </variablelist>
1818 </sect2>
1819 
1820 <sect2 id="repeat">
1821 <title
1822 >El bucle «repeat -repeteix-»</title>
1823   <variablelist>
1824     <varlistentry>
1825       <term
1826 >repeat (repeteix)<indexterm
1827 ><primary
1828 >repeat (repeteix)</primary
1829 ></indexterm
1830 ></term>
1831       <listitem
1832 ><para
1833 ><screen
1834 >repeat <link linkend="number"
1835 >nombre</link
1836 > { ... }</screen
1837 >El controlador de l'execució <userinput
1838 >repeat</userinput
1839 > és molt similar <link linkend="while"
1840 ><userinput
1841 >while</userinput
1842 ></link
1843 >. La diferència és que <userinput
1844 >repeat</userinput
1845 > no deixa de repetir (en bucle) el codi entre els claudàtors tantes vegades com indica el nombre.</para
1846 ></listitem>
1847     </varlistentry>
1848   </variablelist>
1849 </sect2>
1850 
1851 <sect2 id="for">
1852 <title
1853 >El bucle «for -per-», un bucle de comptatge</title>
1854   <variablelist>
1855     <varlistentry>
1856       <term
1857 >for (per)<indexterm
1858 ><primary
1859 >for (per)</primary
1860 ></indexterm
1861 ><indexterm
1862 ><primary
1863 >to (finsa)</primary
1864 ></indexterm
1865 ><indexterm
1866 ><primary
1867 >step (pas)</primary
1868 ></indexterm
1869 ></term>
1870       <listitem
1871 ><para
1872 ><screen
1873 >for <link linkend="assignment-of-variables"
1874 >variable</link
1875 > = <link linkend="number"
1876 >nombre</link
1877 > to <link linkend="number"
1878 >nombre</link
1879 > { ... }</screen
1880 >El bucle <userinput
1881 >for</userinput
1882 > és un «bucle de comptatge», &ead;, que porta el compte per a vós. El primer nombre estableix la variable amb el valor en el primer bucle. Cada bucle incrementa aquest nombre fins que s'assoleix el segon nombre. <screen>
1883 for $x = 1 to 10 {
1884   print $x * 7
1885   forward 15
1886 }
1887 </screen
1888 > Cada vegada que s'executa el codi entre claudàtors <userinput
1889 >$x</userinput
1890 > s'incrementa en 1, fins que <userinput
1891 >$x</userinput
1892 > assoleix al valor de 10. El codi entre claudàtors imprimeix <userinput
1893 >$x</userinput
1894 > multiplicat per 7. Després que aquest programa acaba la seva execució veureu la taula de temps de 7 en el llenç. </para>
1895      <para
1896 >L'increment predeterminat d'un bucle és 1, podeu utilitzar un altre valor amb <screen
1897 >for <link linkend="assignment-of-variables"
1898 >variable</link
1899 > = <link linkend="number"
1900 >nombre</link
1901 > to <link linkend="number"
1902 >nombre</link
1903 > step <link linkend="number"
1904 >nombre</link
1905 > { ... }</screen
1906 ></para
1907 ></listitem>
1908     </varlistentry>
1909   </variablelist>
1910 </sect2>
1911 
1912 <sect2 id="break">
1913 <title
1914 >Deixar un bucle</title>
1915   <variablelist>
1916     <varlistentry>
1917       <term
1918 >break (trenca)<indexterm
1919 ><primary
1920 >break (trenca)</primary
1921 ></indexterm
1922 ></term>
1923       <listitem
1924 ><para
1925 ><screen
1926 >break</screen
1927 >Finalitza el bucle actual immediatament i transfereix el control a la sentència immediatament següent a aquest bucle.</para
1928 ></listitem>
1929     </varlistentry>
1930   </variablelist>
1931 </sect2>
1932 
1933 <sect2 id="exit">
1934 <title
1935 >Aturar l'execució del vostre programa</title>
1936   <variablelist>
1937     <varlistentry>
1938       <term
1939 >exit (surt)<indexterm
1940 ><primary
1941 >exit (surt)</primary
1942 ></indexterm
1943 ></term>
1944       <listitem
1945 ><para
1946 ><screen
1947 >exit</screen
1948 >Finalitza l'execució del vostre programa.</para
1949 ></listitem>
1950     </varlistentry>
1951   </variablelist>
1952 </sect2>
1953 
1954 <sect2 id="assert">
1955 <title
1956 >Comprovar les declaracions en temps d'execució</title>
1957   <variablelist>
1958     <varlistentry>
1959       <term
1960 >assert (declara)<indexterm
1961 ><primary
1962 >assert (declara)</primary
1963 ></indexterm
1964 ></term>
1965       <listitem
1966 ><para
1967 ><screen
1968 >assert <link linkend="boolean-value"
1969 >booleà</link
1970 ></screen
1971 >Es pot utilitzar per a raonar sobre la correcció del programa o de l'entrada. <screen
1972 >$in = ask "Quina és la vostra data de naixement?"
1973 # l'any ha de ser un nombre positiu
1974 assert $in 
1975 > 0
1976 </screen
1977 ></para
1978 ></listitem>
1979     </varlistentry>
1980   </variablelist>
1981 </sect2>
1982 </sect1>
1983 
1984 
1985 <sect1 id="learn">
1986 
1987 <title
1988 >Crear les vostres pròpies ordres amb «learn -aprèn-»</title>
1989 <para
1990 ><userinput
1991 >learn</userinput
1992 ><indexterm
1993 ><primary
1994 >learn</primary
1995 ></indexterm
1996 > és especial, ja que s'utilitza per a crear les vostres pròpies ordres. Les ordres que creeu poden agafar una <glossterm linkend="input-output"
1997 >entrada</glossterm
1998 > i retornar una <glossterm linkend="input-output"
1999 >sortida</glossterm
2000 >. Donem una ullada a com es crea una ordre nova: <screen>
2001 learn circle $x {
2002   repeat 36 {
2003     forward $x
2004     turnleft 10
2005   }
2006 }
2007 </screen
2008 > La nova ordre s'anomena <userinput
2009 >circle</userinput
2010 >. <userinput
2011 >circle</userinput
2012 > té una <glossterm linkend="input-output"
2013 >entrada</glossterm
2014 > com argument, per a establir la mida del cercle. <userinput
2015 >circle</userinput
2016 > no torna cap <glossterm linkend="input-output"
2017 >sortida</glossterm
2018 >. Ara podeu utilitzar l'ordre <userinput
2019 >circle</userinput
2020 > com una ordre normal a la resta del codi. Vegeu aquest exemple: <screen
2021 >learn circle $X {
2022   repeat 36 {
2023     forward $X 
2024     turnleft 10 
2025   }
2026 }
2027 
2028 go 200,200 
2029 circle 20
2030 
2031 go 300,200 
2032 circle 40  
2033 </screen>
2034 </para>
2035 <para
2036 >En el següent exemple, es crea una ordre amb un valor de retorn<indexterm
2037 ><primary
2038 >return</primary
2039 ></indexterm
2040 >. <screen>
2041 learn faculty $x {
2042   $r = 1
2043   for $i = 1 to $x {
2044     $r = $r * $i
2045   }
2046   return $r
2047 }
2048 
2049 print faculty 5
2050 </screen
2051 >En aquest exemple es crea una ordre nova anomenada <userinput
2052 >faculty</userinput
2053 >. Si l'entrada d'aquesta ordre és <userinput
2054 >5</userinput
2055 >, la sortida serà <userinput
2056 >5*4*3*2*1</userinput
2057 >. Mitjançant l'ús de <userinput
2058 >return</userinput
2059 > s'especificarà el valor de la <glossterm linkend="input-output"
2060 >sortida</glossterm
2061 > i es retornarà la fi de l'execució.</para>
2062 <para
2063 >Les ordres poden tenir més d'una <glossterm linkend="input-output"
2064 >entrada</glossterm
2065 >. En el següent exemple, es crea una ordre que dibuixa un rectangle: <screen>
2066 learn box $x, $y {
2067   forward $y
2068   turnright 90
2069   forward $x
2070   turnright 90
2071   forward $y
2072   turnright 90
2073   forward $x
2074   turnright 90
2075 }
2076 </screen
2077 > Ara podeu executar <userinput
2078 >box 50, 100</userinput
2079 > i la tortuga dibuixarà un rectangle en el llenç. </para>
2080   
2081 </sect1>
2082 
2083 </chapter>