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