1
<chapter id="reference">
3
>Referència de programació de &turtlescript;</title>
5
>Aquesta és la referència per a &turtlescript; de &kturtle;. En la primera secció d'aquest capítol es fa un repàs a alguns aspectes de la <link linkend="grammar"
7
> dels programes de &turtlescript;. La segona secció es refereix exclusivament a els <link linkend="mathematical-operators"
8
>operadors matemàtics</link
9
>, els <link linkend="boolean-operators"
10
>operadors booleans (true/false -cert/fals-)</link
11
> i els <link linkend="comparing-operators"
12
>operadors de comparació</link
13
>. La tercera secció bàsicament és una llista gegant explicant de totes les <link linkend="commands"
15
> instrucció a instrucció. La quarta secció explica com <link linkend="assignment-of-variables"
17
> valors a les <link linkend="assignment-of-variables"
19
>. Per finalitzar s'explica la forma d'organitzar l'execució d'ordres amb les <link linkend="controlling-execution"
20
>sentències de control de l'execució</link
21
> en la cinquena secció i com crear les vostres pròpies ordres amb <link linkend="learn"
23
> en la sisena secció.</para>
27
>La gramàtica de &turtlescript;</title>
29
>Igual que en qualsevol llenguatge, &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 propòsits. &turtlescript; és un llenguatge de programació, que s'utilitza per indicar el que ha de fer &kturtle;.</para>
31
>En aquesta secció s'expliquen amb brevetat alguns dels diferents tipus de paraules i símbols de &turtlescript;. Expliquem els <link linkend="comment"
33
>, les <link linkend="command"
35
> i els tres diferents tipus de literals: <link linkend="number"
37
>, <link linkend="string"
39
> i <link linkend="boolean-value"
40
>valors booleans («true/false» -cert/fals-)</link
48
>Un programa consisteix en les instruccions que s'executen quan s'executa el programa i els anomenats comentaris. Els comentaris no s'executen, &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
50
> és considerat un comentari de &turtlescript;. Per exemple, aquest petit programa que no fa res: <screen>
51
# aquest petit programa no fa res. Només és un comentari!
53
> És un xic inútil, però plasma molt bé l'assumpte.</para>
55
>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"
58
# Aquest programa ha estat realitzat per Cies Breijs.
59
print "Aquest text serà imprès en el llenç"
60
# La línia anterior no és un comentari, però sí la línia següent:
61
# print "Aquest text no s'imprimirà!"
63
> La primera línia descriu el programa. La segona línia és executada per &kturtle; i imprimeix <userinput
64
>Aquest text serà imprès en el llenç</userinput
65
>. La tercera línia és un comentari. I la quarta línia és un comentari que conté un tros de &turtlescript;, si s'elimina el símbol <userinput
67
> en la quarta línia, la declaració d'impressió serà executada per &kturtle;. Els programadors diuen: La sentència d'impressió en la quarta línia és un comentat (commented out).</para>
69
>Les línies comentades es <glossterm
71
> en color gris clar en l'<link linkend="the-editor"
80
>L'ús d'odres li diuen a la tortuga o &kturtle; que faci quelcom. Algunes ordres necessiten alguna entrada, alguna sortida. <screen>
81
# «forward» és una ordre que necessita una entrada, en aquest cas el número 100:
84
> La primera línia és un <link linkend="comment"
86
>. La segona línia conté l'ordre «<userinput
88
>» i el nombre 100. El nombre no forma part de l'ordre, es considera l'«entrada» d'aquesta.</para>
90
>Per a una descripció detallada de totes les ordres que suporta &kturtle; aneu <link linkend="commands"
92
>. Les ordres encastades es <glossterm
94
> en color blau fosc.</para>
101
>El més probable és que ja sabeu quelcom sobre els números. La manera com s'utilitzen en &kturtle; no és gaire diferent del llenguatge parlat, o les matemàtiques. </para>
103
>Tenim els anomenats nombres naturals: <userinput
115
>, &etc; Els nombres negatius: <userinput
121
>,&etc; I els nombres amb decimals, per exemple: <userinput
133
>Els nombres es poden utilitzar en <link linkend="mathematical-operators"
134
>operacions matemàtiques</link
135
> i <link linkend="comparing-operators"
136
>operadors de comparació</link
137
>. També es poden desar en les <link linkend="assignment-of-variables"
139
>. Els números són <glossterm
140
>ressaltats</glossterm
141
> en color vermell fosc.</para>
144
<!-- constants like pi? -->
150
>Primer un exemple: <screen>
151
print "Hola, sóc una cadena."
153
> En aquest exemple <userinput
155
> és una ordre i on <userinput
156
>"Hola, sóc una cadena."</userinput
157
> és una cadena. Les cadenes comencen i acaben amb la marca <userinput
159
>, per aquestes marques &kturtle; sabrà que és una cadena.</para>
161
>Les cadenes es poden posar en les <link linkend="assignment-of-variables"
163
>, igual que els <link linkend="number"
165
>. No obstant, a diferència dels nombres, les cadenes no es poden utilitzar en els <link linkend="mathematical-operators"
166
>operadors matemàtics</link
167
> o els <link linkend="comparing-operators"
168
>operadors de comparació</link
169
>. Les cadenes es <glossterm
170
>ressalten</glossterm
171
> en color vermell.</para>
174
<sect2 id="boolean-value">
176
>Els valors booleans («true/false» -cert/fals-)</title>
178
>Només hi ha dos valors booleans: <userinput
186
>). De vegades també se'ls crida: «on» i «off», «1» i «0». Però en &turtlescript; sempre se'ls crida, <userinput
190
>. Feu una ullada a aquest tros de &turtlescript;: <screen>
193
> Si ens fixem en l'<link linkend="the-inspector"
195
> podeu veure que la <link linkend="assignment-of-variables"
199
> s'estableix a <userinput
201
>, i té el tipus booleà.</para>
203
>Els valors booleans sovint són el resultat d'un <link linkend="comparing-operators"
204
>operador de comparació</link
205
>, com en el següent fragment de &turtlescript;: <screen>
208
> La <link linkend="assignment-of-variables"
212
> està establerta a <userinput
216
> és més gran que <userinput
220
>Els valors booleans, <userinput
225
>ressalten</glossterm
226
> en color vermell fosc.</para>
233
<sect1 id="operators">
235
>Els operadors matemàtics, booleans i de comparació</title>
237
>El títol d'aquesta secció pot reservar una certa dificultat, però, no és tan difícil com sona.</para>
239
<sect2 id="mathematical-operators">
241
>Els operadors matemàtics</title>
243
>Aquests són els símbols matemàtics bàsics coneguts com: add «suma» (<userinput
245
>), subtract «resta» (<userinput
247
>), multiply «multiplicació» (<userinput
249
>), divide «divisió» (<userinput
251
>) i power «potència» (<userinput
256
>Aquí teniu un petit exemple dels operadors matemàtics que podeu utilitzar en &turtlescript;: <screen>
263
> Els valors resultants de les operacions matemàtiques són <link linkend="assignment-of-variables"
265
> a diverses <link linkend="assignment-of-variables"
267
>. Utilitzant l'<link linkend="the-inspector"
269
> podeu veure els valors.</para>
271
>Si el que voleu és fer un càlcul senzill podeu fer quelcom com això: <screen
276
>Ara veurem un exemple amb parèntesis: <screen>
277
print ( ( 20 - 5 ) * 2 / 30 ) + 1
279
> Les expressions entre parèntesis es calculen primer. En aquest exemple, es calcula 20-5, després es multiplica per dos, dividit per 30, i després es suma 1 (el qual ens dóna 2). Els parèntesis també es poden utilitzar en altres casos.</para>
281
>&kturtle; també té funcions matemàtiques més avançades en forma d'ordres. Feu una ullada a les següents ordres, però penseu que es tracten d'operacions avançades: <link linkend="round"
283
>, <link linkend="random"
285
>, <link linkend="sqrt"
287
>, <link linkend="pi"
289
>, <link linkend="sin"
291
>, <link linkend="cos"
293
>, <link linkend="tan"
295
>, <link linkend="arcsin"
297
>, <link linkend="arccos"
299
>, <link linkend="arctan"
304
<sect2 id="boolean-operators">
306
>Els operadors booleans («true/false» -cert/fals-)</title>
308
>On els <link linkend="mathematical-operators"
309
>operadors matemàtics</link
310
> són principalment per els <link linkend="number"
312
>, els operadors booleans són per els <link linkend="boolean-value"
313
>valors booleans</link
318
>). Només hi ha tres operadors booleans, anomenats: <userinput
324
>. El següent fragment de &turtlescript; mostra com usar-los: <screen>
325
$and_1_1 = true and true # -> true
326
$and_1_0 = true and false # -> false
327
$and_0_1 = false and true # -> false
328
$and_0_0 = false and false # -> false
330
$or_1_1 = true or true # -> true
331
$or_1_0 = true or false # -> true
332
$or_0_1 = false or true # -> true
333
$or_0_0 = false or false # -> false
335
$not_1 = not true # -> false
336
$not_0 = not false # -> true
338
> Utilitzant l'<link linkend="the-inspector"
340
> podreu veure els valors, però també oferim aquests resultats com petits comentaris al final de les línies. <userinput
344
> només si ambdues parts són <userinput
350
> si una i altra part són <userinput
354
> torna un <userinput
364
>Els operadors booleans es <glossterm
365
>ressalten</glossterm
366
> en color rosa.</para>
368
<sect3 id="boolean-operators-advanced-examples">
370
>Alguns exemples més avançats</title>
372
>Considerem el següent exemple amb <userinput
377
if (($a < 10) and ($b == 5)) and ($a < $b) {
381
> En aquest fragment de &turtlescript; el resultat de tres <link linkend="comparing-operators"
382
>operadors de comparació</link
383
> es fusionen utilitzant els operadors <userinput
385
>. Això significa que els tres han d'avaluar «true» per a que s'imprimeixi «hola».</para>
388
>Un exemple amb <userinput
392
if ($n < 10) or ($n == 2) {
396
> En aquest fragment de &turtlescript; la part esquerra de <userinput
398
> està avaluant a «true», el costat dret de «false». Atès que un dels dos costats de l'operador <userinput
400
> és «true», l'operador <userinput
402
> avaluarà «true». El qual vol dir que s'imprimirà «hola».</para>
405
>I, finalment, un exemple amb <userinput
407
> que els canvis de «true» a «fals» i de «fals» a «true». Feu un cop d'ull: <screen
412
print "sense hola ;-)"
419
<sect2 id="comparing-operators">
421
>Els operadors de comparació</title>
423
>Considereu en la possibilitat d'aquesta simple comparació: <screen>
428
> és comparat amb <userinput
430
> amb l'operador «major que». El resultat d'aquesta comparació, el <link linkend="boolean-value"
434
> es desa a la <link linkend="assignment-of-variables"
440
>Tots els <link linkend="number"
442
> i les <link linkend="assignment-of-variables"
444
> (que contenen nombres) es poden comparar entre si amb els operadors de comparació.</para>
446
>Aquí hi ha tots els possibles operadors de comparació: <table
448
>Tipus de preguntes</title
463
> és igual que <userinput
479
> no és igual que <userinput
486
>$A > $B</userinput
495
> és major que <userinput
502
>$A < $B</userinput
511
> és menor que <userinput
518
>$A >= $B</userinput
521
>major o igual que</entry
527
> és major o igual que <userinput
534
>$A <= $B</userinput
537
>menor o igual que</entry
543
> és menor o igual que <userinput
550
> Tingueu en compte que $A i $B han de ser <link linkend="number"
552
> o <link linkend="assignment-of-variables"
554
> que contenen nombres.</para>
562
<sect1 id="commands">
566
>Utilitzant ordres li direu a la tortuga o &kturtle; que faci quelcom. Algunes ordres necessiten alguna entrada o sortida. En aquesta secció explicarem totes els ordres integrades de &kturtle;. D'altra banda, utilitzant <link linkend="learn"
568
>, podreu crear les vostres pròpies ordres. Les ordres integrades que es debaten aquí es <glossterm
569
>ressalten</glossterm
570
> amb color blau fosc.</para>
572
<sect2 id="moving-the-turtle">
574
>Moure la tortuga</title>
576
>Hi ha diverses ordres per moure la tortuga sobre la pantalla.</para>
579
<anchor id="forward"/>
583
>forward -fw- (avança -av-)<indexterm
585
>forward -fw- (avança -av-)</primary
594
> mou la tortuga cap endavant la quantitat de X píxels. Quan el llapis està sota la tortuga aquesta deixa un rastre. <userinput
596
> pot abreujar-se com <userinput
603
<anchor id="backward"/>
607
>backward -bw- (recula -re-)<indexterm
609
>backward -bw- (recula -re-)</primary
618
> mou la tortuga cap enrere la quantitat de X píxels. Quan el llapis està sota la tortuga deixa un rastre. <userinput
620
> pot abreujar-se com <userinput
627
<anchor id="turnleft"/>
631
>turnleft -tl- (giraesquerra -ge-)<indexterm
633
>turnleft -tl- (giraesquerra -ge-)</primary
642
> ordena a la tortuga tornar una quantitat de X graus cap a l'esquerra. <userinput
644
> pot abreujar-se com <userinput
651
<anchor id="turnright"/>
655
>turnright -tr- (giradreta -gd-)<indexterm
657
>turnright -tr- (giradreta -gd-)</primary
663
>turnright X</screen>
665
>turnright</userinput
666
> ordena a la tortuga tornar una quantitat de X graus cap a la dreta. <userinput
667
>turnright</userinput
668
> pot abreujar-se com <userinput
675
<anchor id="direction"/>
679
>direction -dir- (direcció -dir-)<indexterm
681
>direction -dir- (direcció -dir-)</primary
687
>direction X</screen>
689
>direction</userinput
690
> 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
691
>direction</userinput
692
> pot abreujar-se com <userinput
699
<anchor id="center"/>
703
>center (centra)<indexterm
705
>center (centra)</primary
714
> mourà la tortuga cap al centre sobre el llenç.</para
734
> ordena a la tortuga anar cap a un lloc determinat en el llenç. Aquest lloc és X <glossterm linkend="pixels"
736
> des de l'esquerra del llenç, i Y <glossterm linkend="pixels"
738
> des de la part superior del llenç. </para
747
>gox (vésax)<indexterm
749
>gox (vésax)</primary
758
> ordena a la tortuga que es desplaci X <glossterm linkend="pixels"
760
> des de l'esquerra del llenç mantenint la seva estada a la mateixa alçada.</para
769
>goy (vésay)<indexterm
771
>goy (vésay)</primary
780
> ordena a la tortuga que es desplaci Y <glossterm linkend="pixels"
782
> des de la part superior del llenç mantenint la seva estada a la mateixa distància de la vora esquerra del llenç.</para
788
>Utilitzant les ordres <userinput
796
> la tortuga no dibuixarà una línia, tant se val si el llapis és cap amunt o cap avall.</para>
800
<sect2 id="locate-the-turtle">
802
>On és la tortuga?</title>
804
>Hi ha dues ordres que retornen la posició de la tortuga sobre la pantalla.</para>
811
>getx (obtinguesx)<indexterm
813
>getx (obtinguesx)</primary
820
> retorna el nombre de píxels des de l'esquerra del llenç cap a la posició actual de la tortuga.</para
829
>gety (obtinguesy)<indexterm
831
>gety (obtinguesy)</primary
838
> retorna el nombre de píxels des de la part superior del llenç cap a la posició actual de la tortuga.</para
846
>La tortuga té un llapis</title>
848
>La tortuga té un llapis que traça una línia quan aquesta es mou. Hi ha unes quantes ordres per controlar el llapis. S'expliquen en aquesta secció.</para>
854
>penup -pu- (aixecallapis -al-)<indexterm
856
>penup -pu- (aixecallapis -al-)</primary
865
> aixeca el llapis del llenç. Quan el llapis està <quote
867
> no es dibuixarà cap línia quan es mogui la tortuga. Veure també <userinput
871
> pot abreujar-se com <userinput
878
<anchor id="pendown"/>
882
>pendown -pd- (baixallapis -bl-)<indexterm
884
>pendown -pd- (baixallapis -bl-)</primary
893
> pressiona el llapis sobre el llenç. Quan el llapis està <quote
895
> es dibuixarà una línia quan es mogui la tortuga. Veure també <userinput
899
> pot abreujar-se com <userinput
906
<anchor id="setpenwidth"/>
910
>penwidth -pw- (gruixllapis -gl-)<indexterm
912
>penwidth -pw- (gruixllapis -gl-)</primary
921
> estableix l'amplada del traç del llapis (l'amplada de la línia) per una quantitat de X <glossterm linkend="pixels"
925
> pot abreujar-se com <userinput
932
<anchor id="setfgcolor"/>
936
>pencolor -pc- (colorllapis -cl-)<indexterm
938
>pencolor -pc- (colorllapis -cl-)</primary
944
>pencolor R,G,B</screen>
947
> estableix el color del llapis. <userinput
949
> pren una <glossterm linkend="rgb"
950
>combinació RGB</glossterm
951
> com a entrada. <userinput
953
> pot abreujar-se com <userinput
963
>Ordres per controlar el llenç</title>
965
>Hi ha diverses odres per controlar el llenç.</para>
967
<anchor id="resizecanvas"/>
970
>canvassize -cs- (midapaper -mp-)<indexterm
972
>canvassize -cs- (midapaper -mp-)</primary
978
>canvassize X,Y</screen>
979
Amb l'ordre <userinput
980
>canvassize</userinput
981
> podreu establir la mida del llenç. Agafa X i Y com a entrada, on X és l'amplada del nou llenç en <glossterm linkend="pixels"
983
>, i Y és l'alçada del nou llenç en <glossterm linkend="pixels"
986
>canvassize</userinput
987
> pot abreujar-se com <userinput
994
<anchor id="setbgcolor"/>
998
>canvascolor -cc- (colorpaper -cp-)<indexterm
1000
>canvascolor -cc- (colorpaper -cp-)</primary
1006
>canvascolor R,G,B</screen>
1008
>canvascolor</userinput
1009
> estableix el color del llenç. <userinput
1010
>canvascolor</userinput
1011
> pren una <glossterm linkend="rgb"
1012
>combinació RGB</glossterm
1013
> com a entrada. <userinput
1014
>canvascolor</userinput
1015
> pot abreujar-se com <userinput
1025
>Ordres per netejar</title>
1027
>Hi ha dues ordres per netejar el llenç després d'haver fet un embolic.</para>
1029
<anchor id="clear"/>
1033
>clear -ccl- (neteja -net-)<indexterm
1035
>clear -ccl- (neteja -net-)</primary
1044
> 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
1049
<anchor id="reset"/>
1053
>reset (inicialitza)<indexterm
1055
>reset (inicialitza)</primary
1064
> neteja molt més a fons que l'ordre <userinput
1066
>. Després d'una ordre <userinput
1068
> tot quedarà com en iniciar &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
1074
<sect2 id="sprites">
1076
>La tortuga és un sprite</title>
1078
>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ó veure el glossari quant a <glossterm linkend="sprites"
1082
>A continuació trobareu una descripció completa de totes les ordres per a treballar amb sprites.</para>
1084
>[La versió actual de &kturtle; encara no suporta l'ús d'sprites que no sigui la tortuga. Amb les futures versions es podrà canviar la tortuga per alguna cosa del vostre propi disseny.]</para>
1086
<anchor id="spriteshow"/>
1090
>spriteshow -ss- (mostra -mo-)<indexterm
1092
>spriteshow -ss- (mostra -mo-)</primary
1098
>spriteshow</screen>
1100
>spriteshow</userinput
1101
> fa la tortuga visible de nou després d'haver-la ocultat. <userinput
1102
>spriteshow</userinput
1103
> pot abreujar-se com <userinput
1110
<anchor id="spritehide"/>
1114
>spritehide -sh- (oculta -oc-)<indexterm
1116
>spritehide -sh- (oculta -oc-)</primary
1122
>spritehide</screen>
1124
>spritehide</userinput
1125
> oculta la tortuga. Es pot utilitzar si la tortuga no s'ajusta al vostre dibuix. <userinput
1126
>spritehide</userinput
1127
> pot abreujar-se com <userinput
1135
<sect2 id="writing">
1137
>Pot escriure la tortuga?</title>
1139
>La resposta és: <quote
1141
>. La tortuga pot escriure: Escriu gairebé tot el que se li ordena.</para>
1143
<anchor id="print"/>
1147
>print (imprimeix)<indexterm
1149
>print (imprimeix)</primary
1158
> s'utilitza per ordenar a la tortuga per escrigui quelcom en el llenç. <userinput
1160
> pren els números i cadenes com a entrada. Podeu imprimir diversos nombres i cadenes mitjançant el símbol <quote
1162
>. Veure aquest petit exemple: <screen
1165
print "En " + $author + " va començar el projecte KTurtle al " + $year + " i encara gaudeix treballant-hi!"
1172
<anchor id="fontsize"/>
1176
>fontsize (midalletra)<indexterm
1178
>fontsize (midalletra)</primary
1184
>fontsize X</screen>
1186
>fontsize</userinput
1187
> estableix la mida del tipus de lletra utilitza per <userinput
1190
>fontsize</userinput
1191
> pren una entrada que ha de ser un nombre. La mida s'estableix en <glossterm linkend="pixels"
1199
<sect2 id="math-commands">
1201
>Ordres matemàtiques</title>
1203
>Les següents ordres són les ordres matemàtiques més avançades de &kturtle;.</para>
1205
<anchor id="round"/>
1208
>round (arrod)<indexterm
1210
>round (arrod)</primary
1219
> arrodoneix el nombre indicat a l'enter més proper. <screen>
1224
> Amb aquest codi la tortuga imprimirà els nombres 11 i 10.</para
1229
<anchor id="random"/>
1233
>random -rnd- (aleatori -ale-)<indexterm
1235
>random -rnd- (aleatori -ale-)</primary
1241
>random X,Y</screen>
1244
> és una ordre que pren l'entrada i dóna 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 menor que el màxim. Aquí hi ha un petit exemple: <screen>
1251
> Utilitzant l'ordre <userinput
1253
> podeu afegir una mica de caos al vostre programa.</para
1262
>sqrt (arrel)<indexterm
1264
>sqrt (arrel)</primary
1273
> és un requeriment per trobar l'arrel quadrada d'un nombre, X.</para
1311
Aquesta ordre retorna la constant Pi, <userinput
1343
Aquestes tres ordres representen les famoses funcions trigonomètriques <userinput
1349
>. L'argument d'entrada d'aquestes ordres, X, és un <link linkend="number"
1356
<anchor id="arcsin"/>
1357
<anchor id="arccos"/>
1358
<anchor id="arctan"/>
1381
Aquestes ordres són les funcions inverses de <link linkend="sin"
1383
>, <link linkend="cos"
1385
> i <link linkend="tan"
1387
>. L'argument d'entrada d'aquestes ordres, X, és un <link linkend="number"
1395
<sect2 id="dialogs">
1397
>Aportacions i comentaris amb els diàlegs</title>
1399
>Un diàleg és una petita finestra emergent que proporciona alguna informació o us demana alguna entrada. &kturtle; té dos ordres per als diàlegs, anomenades: <userinput
1405
<anchor id="message"/>
1409
>message (missatge)<indexterm
1411
>message (missatge)</primary
1420
> pren una <link linkend="string"
1422
> com a entrada. Mostra un diàleg emergent que conté el text de la <link linkend="string"
1425
>message "En Joan va començar el projecte KTurtle al 2003 i encara gaudeix treballant-hi!"
1436
>ask (pregunta)<indexterm
1438
>ask (pregunta)</primary
1447
> pren una cadena com a entrada. La mostra en un diàleg emergent (similar a <link linkend="string"
1449
>), 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>
1450
$in = ask "Quina és la vostra data de naixement?"
1452
print "L'any 2003 que van ser " + $out + " anys d'edat en algun moment."
1454
> Si l'usuari cancel·la el diàleg d'entrada, o no entra res, la variable quedarà buida.</para
1464
<sect1 id="assignment-of-variables">
1466
>Assignar les variables</title>
1468
>En primer lloc farem una ullada a les variables, llavors ens centrarem en l'assignació de valors a aquestes variables. </para>
1471
>Les variables són paraules que comencen amb un <quote
1473
>, en l'<link linkend="the-editor"
1475
> es ressalten amb color <glossterm
1480
>Les variables poden contenir qualsevol <link linkend="number"
1482
>, <link linkend="string"
1484
> o <link linkend="boolean-value"
1485
>valor booleà (true/false -cert/fals-)</link
1486
>. Utilitzant l'assignació, <userinput
1488
>, 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>
1491
>Podeu utilitzar variables, un cop assignades, simplement mantenen el seu contingut. Per exemple, en el següent fragment de &turtlescript;: <screen>
1496
> Primer a la variable <userinput
1498
> se li assigna <userinput
1500
>. Llavors a <userinput
1502
> es torna a assignar a la seva divisió per <userinput
1504
> -això significa que <userinput
1506
> es torna assignar al producte de <userinput
1508
>. Finalment imprimeix <userinput
1510
>. En la línia dos i tres veureu que <userinput
1512
> s'utilitza com si fos el seu contingut.</para>
1515
>Les variables han de ser assignades per tal de ser utilitzades. Per exemple: <screen>
1518
> Donarà com a resultat un missatge d'error.</para>
1521
>Observem el següent fragment de &turtlescript;: <screen>
1525
# Les següents ordres imprimeixen «2029»
1528
# La següent ordre imprimeix «2004 més 25 és igual que 2029»
1529
print $a + " més " + $b + " és igual que " + ($a + $b)
1531
> En les dues primeres línies les variables <userinput
1535
> s'estableixen a 2004 i 25. Després s'executen dues ordres <userinput
1537
> amb una <userinput
1538
>backward 30</userinput
1539
> al mig. Els comentaris abans de l'ordre <userinput
1541
> expliquen el que faran. L'ordre <userinput
1542
>backward 30</userinput
1543
> hi és per 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 tipus d'<link linkend="operators"
1545
> o com a entrada en utilitzar altres <link linkend="commands"
1550
>Un exemple més: <screen>
1551
$name = ask "Quin és el teu nom?"
1552
print "Hola " + $name + "! Bona sort mentre apreneu l'art de la programació..."
1554
> Força simple. Una vegada més podeu veure com la variable <userinput
1556
>, és tractada com una cadena.</para>
1559
>En utilitzar variables l'<link linkend="the-inspector"
1561
> resulta molt útil. Mostra el contingut de totes les variables que estan actualment en ús.</para>
1566
<sect1 id="controlling-execution">
1568
>Controlar l'execució</title>
1570
>Els controladors de l'execució us permeten -tal com el seu nom indica- controlar l'execució.</para>
1572
>Els controladors de l'execució es <glossterm
1573
>ressalten</glossterm
1574
> amb color verd fosc en un tipus de lletra en negreta. Els parèntesis s'utilitzen juntament amb els controladors de l'execució i es ressalten amb color negre.</para>
1578
>Fer que la tortuga esperi</title>
1580
>Si heu fet quelcom de programació en &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>
1584
>wait (espera)<indexterm
1586
>wait (espera)</primary
1595
> fa que la tortuga esperi durant X segons. <screen>
1602
> 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
1610
>Executa «if -si-»</title>
1622
>if <link linkend="boolean-value"
1625
El codi que es col·loca entre els claudàtors només s'executarà si el <link linkend="boolean-value"
1632
print "$x és major que quatre!"
1635
> A la primera línia <userinput
1637
> està establert a 6. En la segona línia s'utilitza un <link linkend="boolean-value"
1638
>operador de comparació</link
1639
> per avaluar $x > 5. Atès que aquest avalua <quote
1641
>, 6 és més gran que 5, el controlador de l'execució <userinput
1643
> permet executar el codi entre els claudàtors.</para
1651
>Si no, en altres paraules: «else -altrament-»</title>
1655
>else (altrament)<indexterm
1657
>else (altrament)</primary
1663
>if <link linkend="boolean-value"
1665
> { ... } else { ... }</screen>
1668
> es pot utilitzar a més del controlador de l'execució <link linkend="if"
1672
>. El codi entre claudàtors després de <userinput
1674
> només s'executa si el <link linkend="boolean-value"
1682
print "$x és major que cinc!"
1684
print "$x és menor que sis!"
1687
> L'<link linkend="comparing-operators"
1688
>operador de comparació</link
1689
> avalua l'expressió <userinput
1690
>$x > 5</userinput
1691
>. Donat que 4 no és més gran que 5, l'expressió s'avalua com <quote
1693
>. Això significa que el codi entre claudàtors després de <userinput
1695
> serà executat.</para
1703
>El bucle «while -mentre-»</title>
1707
>while (mentre)<indexterm
1709
>while (mentre)</primary
1715
>while <link linkend="boolean-value"
1718
El controlador de l'execució <userinput
1720
> s'assembla molt a <link linkend="if"
1724
>. La diferència és que <userinput
1726
> no deixa de repetir (en bucle) el codi entre claudàtors fins que el <link linkend="boolean-value"
1738
> En la primera línia <userinput
1740
> s'estableix a 1. En la segona línia s'avalua <userinput
1741
>$x < 5</userinput
1742
>. Atès que la resposta a aquesta pregunta és <quote
1744
> el controlador de l'execució while començarà a executar el codi entre claudàtors fins que <userinput
1745
>$x < 5</userinput
1748
>. En aquest cas el codi entre els claudàtors s'executarà quatre vegades, perquè cada vegada que s'executa la cinquena línia <userinput
1750
> s'incrementa en 1.</para
1758
>El bucle «repeat -repeteix-»</title>
1762
>repeat (repeteix)<indexterm
1764
>repeat (repeteix)</primary
1770
>repeat <link linkend="number"
1773
El controlador de l'execució <userinput
1775
> és molt similar <link linkend="while"
1779
>. La diferència és que <userinput
1781
> no deixa de repetir (en bucle) el codi entre els claudàtors fins abastar les vegades que el nombre indica.</para
1789
>El bucle «for -per-», un bucle de comptatge</title>
1793
>for (per)<indexterm
1799
>step (pas)</primary
1805
>for <link linkend="assignment-of-variables"
1807
> = <link linkend="number"
1809
> to <link linkend="number"
1815
>bucle de comptatge</quote
1816
>, &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>
1822
> Cada vegada que s'executa el codi entre claudàtors <userinput
1824
> s'incrementa en 1, fins que <userinput
1826
> assoleix al valor de 10. El codi entre claudàtors imprimeix <userinput
1828
> multiplicat per 7. Després que aquest programa acaba la seva execució veureu la taula de temps de 7 en el llenç. </para>
1830
>L'increment per omissió d'un bucle és 1, podeu utilitzar un altre valor amb <screen
1831
>for <link linkend="assignment-of-variables"
1833
> = <link linkend="number"
1835
> to <link linkend="number"
1837
> step <link linkend="number"
1848
>Deixar un bucle</title>
1852
>break (trenca)<indexterm
1854
>break (trenca)</primary
1861
Finalitza el bucle actual immediatament i transfereix el control a la sentència immediatament següent a aquest bucle.</para
1869
>Aturar l'execució del vostre programa</title>
1873
>exit (surt)<indexterm
1875
>exit (surt)</primary
1882
Finalitza l'execució del vostre programa.</para
1893
<!--<sect2 id="name">
1897
>When using the &turtlescript; programming language you create new things. If you write a program you will often need <link linkend="containers"
1899
> and in some cases you need <link linkend="learn"
1901
> to create new commands. When making a new command with <link linkend="learn"
1903
> you will have to specify a name.</para>
1905
>You can choose any name, as long as it does not already have a meaning. For instance you cannot name a function <link linkend="forward"
1907
>, since that name is already used for an internal command.
1910
# here forward is used as a new command,
1911
# but it already has a meaning so
1912
# this will produce an error:
1914
print "this is invalid"
1922
Names can contain only letters, numbers and underscores (_). Yet they have to start with a letter. Container names have to start with the container prefix ($).
1925
# here forward is used as a container,
1926
# starting with the $ prefix, so it does
1927
# not conflict with the forward command
1933
>Containers are <glossterm
1934
>highlighted</glossterm
1935
> with bolded purple in the <link linkend="the-editor"
1939
Please read the documentation on <link linkend="containers"
1941
> and the <link linkend="learn"
1943
> command for a better explanation and more examples.
1953
>Crear les vostres pròpies ordres amb <quote
1954
>learn -aprèn-</quote
1959
> és especial, ja que s'utilitza per crear els vostres pròpies ordres. Les ordres que creeu poden agafar una <glossterm linkend="input-output"
1961
> i retornar una <glossterm linkend="input-output"
1963
>. Fem una ullada a com es crea un nova ordre: <screen>
1971
> La nova ordre s'anomena <userinput
1975
> té una <glossterm linkend="input-output"
1977
> com argument, per establir la mida del cercle. <userinput
1979
> no torna cap <glossterm linkend="input-output"
1981
>. Ara podeu utilitzar l'ordre <userinput
1983
> com una ordre normal a la resta del codi. Veure aquest exemple: <screen
1999
>En el següent exemple, es crea una ordre amb un valor de retorn. <screen>
2010
>En aquest exemple es crea un nova ordre anomenada <userinput
2012
>. Si l'entrada d'aquesta ordre és <userinput
2014
>, la sortida serà <userinput
2015
>5*4*3*2*1</userinput
2016
>. Mitjançant l'ús de <userinput
2018
> s'especificarà el valor de la <glossterm linkend="input-output"
2020
> i es retornarà la fi de l'execució.</para>
2022
>Les ordres poden tenir més d'una <glossterm linkend="input-output"
2024
>. En el següent exemple, es crea una ordre que dibuixa un rectangle: <screen>
2036
> Ara podeu executar <userinput
2037
>box 50, 100</userinput
2038
> i la tortuga dibuixarà un rectangle en el llenç. </para>