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

0001 <chapter id="reference">
0002 <title
0003 >Guida alla programmazione &turtlescript;</title>
0004 <para
0005 >Questa è la guida del linguaggio &turtlescript; di &kturtle;. La prima sezione di questo capitolo offre una carrellata di alcuni degli aspetti della <link linkend="grammar"
0006 >grammatica</link
0007 > dei programmi &turtlescript;. La seconda tratta esclusivamente di <link linkend="mathematical-operators"
0008 >operatori matematici</link
0009 >, di <link linkend="boolean-operators"
0010 >operatori booleani (vero/falso)</link
0011 > e di <link linkend="comparing-operators"
0012 >operatori di confronto</link
0013 >. La terza sezione fornisce invece una lunga lista di tutti i <link linkend="commands"
0014 >comandi</link
0015 >, spiegandoli uno per uno. La quarta spiega come <link linkend="assignment-of-variables"
0016 >assegnare</link
0017 > dei valori alle <link linkend="assignment-of-variables"
0018 >variabili</link
0019 >. Infine, nella quinta spieghiamo come organizzare l'esecuzione dei comandi usando <link linkend="controlling-execution"
0020 >le istruzioni di controllo dell'esecuzione</link
0021 >, infine, nella sesta sezione, come creare propri comandi usando <link linkend="learn"
0022 ><userinput
0023 >impara</userinput
0024 ></link
0025 >.</para>
0026 
0027 <sect1 id="grammar">
0028 <title
0029 >La grammatica &turtlescript;</title>
0030 <para
0031 >Come in ogni lingua, &turtlescript; ha diversi tipi di parole e simboli. In italiano distinguiamo tra verbi (come «camminare» o «cantare») e nomi (come «sorella» o «casa»), usati per scopi diversi. &turtlescript; è un linguaggio di programmazione, usato per dire a &kturtle; cosa fare.</para>
0032 <para
0033 >In questa sezione sono brevemente spiegati alcuni dei diversi tipi di parole e di simboli. Spieghiamo <link linkend="comment"
0034 >i commenti</link
0035 >, <link linkend="command"
0036 >i comandi</link
0037 > e i tre tipi di valori letterali: <link linkend="number"
0038 >i numeri</link
0039 >, <link linkend="string"
0040 >le stringhe</link
0041 > e <link linkend="boolean-value"
0042 >i valori booleani (vero/falso)</link
0043 >.</para>
0044 
0045 
0046 <sect2 id="comment">
0047 <title
0048 >Commenti</title>
0049 <para
0050 >Un programma è composto di istruzioni eseguite durante l'esecuzione del programma, e di commenti. I commenti non vengono eseguiti, &kturtle; semplicemente li ignora durante l'esecuzione dei programmi. I commenti aiutano gli altri programmatori a comprendere meglio i tuoi programmi. In &turtlescript;, tutti ciò che segue il carattere <userinput
0051 >#</userinput
0052 > viene considerato un commento. Per esempio, questo piccolo programma non fa nulla: <screen>
0053 # questo piccolo programma non fa nulla, è solo un commento!
0054 </screen
0055 > È un po' inutile, ma spiega bene il concetto.</para>
0056 <para
0057 >I commenti sono utili quando un programma diventa sempre più complesso. Può essere utile dare qualche indicazione ad altri programmatori. Nel programma seguente, puoi vedere commenti usati con il comando <link linkend="print"
0058 >stampa</link
0059 >. <screen>
0060 # questo programma è stato creato da Cies Breijs.
0061 scrivi "questo testo sarà scritto sull'area di disegno"
0062 # la riga precedente non è un commento, ma la riga seguente sì:
0063 # scrivi "questo testo non sarà scritto!"
0064 </screen
0065 > La prima riga descrive il programma. La seconda riga è eseguita da &kturtle;, e scrive <userinput
0066 >questo testo sarà scritto sull'area di disegno</userinput
0067 > sull'area di disegno. La terza riga è un commento. Infine, la quarta è un commento che contiene un'istruzione &turtlescript;; se dalla quarta riga venisse rimosso il carattere <userinput
0068 >#</userinput
0069 >, l'istruzione «scrivi» verrebbe eseguita da &kturtle;. I programmatori dicono: l'istruzione «scrivi» nella quarta riga è stata "commentata".</para>
0070 <para
0071 >Le linee commentate sono <glossterm
0072 >evidenziate</glossterm
0073 > con il grigio chiaro nell'<link linkend="the-editor"
0074 >editor</link
0075 >.</para>
0076 </sect2>
0077 
0078 <sect2 id="command">
0079 <title
0080 >Comandi</title>
0081 <para
0082 >Con i comandi puoi dire alla tartaruga o a &kturtle; di fare qualcosa. Alcuni comandi richiedono degli argomenti, alcuni restituiscono dei risultati. <screen>
0083 # «avanti» è un comando che richiede un argomento, in questo caso il numero 100:
0084 avanti 100
0085 </screen
0086 > La prima riga è un <link linkend="comment"
0087 >commento</link
0088 >. La seconda contiene il comando <userinput
0089 >avanti</userinput
0090 > e il <link linkend="number"
0091 >numero</link
0092 > <userinput
0093 >100</userinput
0094 >. Il numero non è parte di un comando, ma è considerato un "argomento" del comando.</para>
0095 <para
0096 >Alcuni comandi, &eg; <userinput
0097 >vai</userinput
0098 >, richiedono più di un argomento. Valori multipli devono essere separati usando il carattere <userinput
0099 >,</userinput
0100 > (virgola).</para>
0101 <para
0102 >Per una panoramica dettagliata di tutti i comandi che &kturtle; supporta, vai <link linkend="commands"
0103 >qui</link
0104 >. I comandi predefiniti sono <glossterm
0105 >evidenziati</glossterm
0106 > con il blu scuro.</para>
0107 </sect2>
0108 
0109 <sect2 id="number">
0110 <title
0111 >Numeri</title>
0112 <para
0113 >Molto probabilmente conosci già i numeri. Il modo in cui questi sono usati in &kturtle; non è molto diverso dalla lingua parlata o dalla matematica.</para>
0114 <para
0115 >Abbiamo i cosiddetti numeri naturali: <userinput
0116 >0</userinput
0117 >, <userinput
0118 >1</userinput
0119 >, <userinput
0120 >2</userinput
0121 >, <userinput
0122 >3</userinput
0123 >, <userinput
0124 >4</userinput
0125 >, <userinput
0126 >5</userinput
0127 >, &etc;. I numeri negativi: <userinput
0128 >-1</userinput
0129 >, <userinput
0130 >-2</userinput
0131 >, <userinput
0132 >-3</userinput
0133 >, &etc;. E i numeri decimali, o numeri con la virgola, per esempio: <userinput
0134 >0.1</userinput
0135 >, <userinput
0136 >3.14</userinput
0137 >, <userinput
0138 >33.3333</userinput
0139 >, <userinput
0140 >-5.05</userinput
0141 >, <userinput
0142 >-1.0</userinput
0143 >. Come separatore dei decimali viene usato il carattere <userinput
0144 >.</userinput
0145 > (punto). </para>
0146 <para
0147 >I numeri possono essere usati negli <link linkend="mathematical-operators"
0148 >operatori matematici</link
0149 > e negli <link linkend="comparing-operators"
0150 >operatori di confronto</link
0151 >. Possono anche essere memorizzati nelle <link linkend="assignment-of-variables"
0152 >variabili</link
0153 >. Sono <glossterm
0154 >evidenziati</glossterm
0155 > con il rosso scuro.</para>
0156 </sect2>
0157 
0158 <!-- constants like pi? -->
0159 
0160 <sect2 id="string">
0161 <title
0162 >Stringhe</title>
0163 <para
0164 >Prima un esempio: <screen>
0165 scrivi "Ciao, sono una stringa."
0166 </screen
0167 > In questo esempio <userinput
0168 >scrivi</userinput
0169 > è un comando, e <userinput
0170 >"Ciao, sono una stringa."</userinput
0171 > è una stringa. Le stringhe iniziano e finiscono con il carattere <userinput
0172 >"</userinput
0173 >: grazie a questi caratteri &kturtle; sa che è una stringa.</para>
0174 <para
0175 >Le stringhe possono essere memorizzate in <link linkend="assignment-of-variables"
0176 >variabili</link
0177 >, allo stesso modo dei <link linkend="number"
0178 >numeri</link
0179 >. A differenza dei numeri, però, le stringhe non possono essere usate con gli <link linkend="mathematical-operators"
0180 >operatori matematici</link
0181 > o con gli <link linkend="comparing-operators"
0182 >operatori di confronto</link
0183 >. Le stringhe sono <glossterm
0184 >evidenziate</glossterm
0185 > in rosso.</para>
0186 </sect2>
0187 
0188 <sect2 id="boolean-value">
0189 <title
0190 >Valori booleani (vero/falso)</title>
0191 <para
0192 >Ci sono solo due valori booleani: <userinput
0193 >vero</userinput
0194 ><indexterm
0195 ><primary
0196 >vero</primary
0197 ></indexterm
0198 > e <userinput
0199 >falso</userinput
0200 ><indexterm
0201 ><primary
0202 >falso</primary
0203 ></indexterm
0204 >, chiamati anche <quote
0205 ><userinput
0206 >on</userinput
0207 ></quote
0208 > e <quote
0209 ><userinput
0210 >off</userinput
0211 ></quote
0212 >, <quote
0213 ><userinput
0214 >sì</userinput
0215 ></quote
0216 > e <quote
0217 ><userinput
0218 >no</userinput
0219 ></quote
0220 >, <quote
0221 ><userinput
0222 >uno</userinput
0223 ></quote
0224 > e <quote
0225 ><userinput
0226 >zero</userinput
0227 ></quote
0228 >. Tuttavia, in &turtlescript; sono sempre chiamati <userinput
0229 >vero</userinput
0230 > e <userinput
0231 >falso</userinput
0232 >. Guarda questo frammento di codice &turtlescript;: <screen>
0233 $a = vero
0234 </screen
0235 > Se guardi l'<link linkend="the-inspector"
0236 >ispettore</link
0237 >, puoi vedere che la <link linkend="assignment-of-variables"
0238 >variabile</link
0239 > <userinput
0240 >$a</userinput
0241 > è impostata a <userinput
0242 >vero</userinput
0243 >, e che il suo tipo è booleano.</para>
0244 <para
0245 >Spesso i valori booleani sono il risultato di un <link linkend="comparing-operators"
0246 >operatore di confronto</link
0247 >, come nel seguente frammento di &turtlescript;: <screen>
0248 $risposta = 10 &gt; 3
0249 </screen
0250 > La <link linkend="assignment-of-variables"
0251 >variabile</link
0252 > <userinput
0253 >$risposta</userinput
0254 > è impostata a <userinput
0255 >vero</userinput
0256 >, dato che <userinput
0257 >10</userinput
0258 > è maggiore di <userinput
0259 >3</userinput
0260 >.</para>
0261 <para
0262 >I valori booleani, <userinput
0263 >vero</userinput
0264 > e <userinput
0265 >falso</userinput
0266 >, sono <glossterm
0267 >evidenziati</glossterm
0268 > con il rosso scuro.</para>
0269 </sect2>
0270 
0271 </sect1>
0272 
0273 
0274 
0275 <sect1 id="operators">
0276 <title
0277 >Operatori matematici, booleani e di confronto</title>
0278 <para
0279 >Il titolo di questa sezione può far pensare a qualcosa di estremamente complesso; tuttavia non è complicato come si potrebbe pensare.</para>
0280 
0281 <sect2 id="mathematical-operators">
0282 <title
0283 >Operatori matematici</title>
0284 <para
0285 >I simboli matematici di base sono: addizione (<userinput
0286 >+</userinput
0287 >), sottrazione (<userinput
0288 >-</userinput
0289 >), moltiplicazione (<userinput
0290 >*</userinput
0291 >), divisione (<userinput
0292 >/</userinput
0293 >) e potenza (<userinput
0294 >^</userinput
0295 >).</para>
0296 
0297 <para
0298 >Ecco un piccolo esempio con gli operatori matematici che puoi usare in &turtlescript;: <screen>
0299 $addizione       = 1 + 1
0300 $sottrazione     = 20 - 5
0301 $moltiplicazione = 15 * 2
0302 $divisione       = 30 / 30
0303 $potenza         = 2 ^ 2
0304 </screen
0305 > I valori risultanti dalle operazioni matematiche sono <link linkend="assignment-of-variables"
0306 >assegnati</link
0307 > alle varie <link linkend="assignment-of-variables"
0308 >variabili</link
0309 >. Usando <link linkend="the-inspector"
0310 >l'ispettore</link
0311 > puoi vederne i valori.</para>
0312 <para
0313 >Se vuoi eseguire un semplice calcolo, puoi scrivere qualcosa di simile a questo: <screen
0314 >scrivi 2010-12
0315 </screen
0316 ></para>
0317 <para
0318 >Ora un esempio con le parentesi: <screen>
0319 scrivi ( ( 20 - 5 ) * 2 / 30 ) + 1
0320 </screen
0321 > Ciò che si trova dentro le parentesi sarà calcolato prima. In questo esempio, sarà calcolato prima 20-5, quindi il risultato viene moltiplicato per 2, diviso per 30, e infine viene aggiunto 1 (ottenendo 2 come risultato). Le parentesi possono essere usate anche in altri casi.</para>
0322 <para
0323 >&kturtle; ha anche comandi matematici avanzati. Guarda i seguenti comandi, ricordando che sono operazioni avanzate: <link linkend="round"
0324 >round</link
0325 >, <link linkend="random"
0326 >numerocasuale</link
0327 >, <link linkend="sqrt"
0328 >sqrt</link
0329 >, <link linkend="pi"
0330 >pi</link
0331 >, <link linkend="sin"
0332 >sen</link
0333 >, <link linkend="cos"
0334 >cos</link
0335 >, <link linkend="tan"
0336 >tan</link
0337 >, <link linkend="arcsin"
0338 >arcsen</link
0339 >, <link linkend="arccos"
0340 >arccos</link
0341 >, <link linkend="arctan"
0342 >arctan</link
0343 >.</para>
0344 </sect2>
0345 
0346 <sect2 id="boolean-operators">
0347 <title
0348 >Operatori booleani (vero/falso)</title>
0349 <para
0350 >Se gli <link linkend="mathematical-operators"
0351 >operatori matematici</link
0352 > servono principalmente per i <link linkend="number"
0353 >numeri</link
0354 >, quelli booleani servono per i <link linkend="boolean-value"
0355 >valori booleani</link
0356 > (<userinput
0357 >vero</userinput
0358 > e <userinput
0359 >falso</userinput
0360 >). Ci sono solo tre operatori: <userinput
0361 >e</userinput
0362 ><indexterm
0363 ><primary
0364 >e</primary
0365 ></indexterm
0366 >, <userinput
0367 >o</userinput
0368 ><indexterm
0369 ><primary
0370 >o</primary
0371 ></indexterm
0372 >, e <userinput
0373 >non</userinput
0374 ><indexterm
0375 ><primary
0376 >non</primary
0377 ></indexterm
0378 >. Il seguente codice &turtlescript; mostra come usarli: <screen>
0379 $e_1_1 = vero e vero    # -> vero
0380 $e_1_0 = vero e falso   # -> falso
0381 $e_0_1 = falso e vero   # -> falso
0382 $e_0_0 = falso e falso  # -> falso
0383 
0384 $o_1_1 = vero o vero    # -> vero
0385 $o_1_0 = vero o falso   # -> vero
0386 $o_0_1 = falso o vero   # -> vero
0387 $o_0_0 = falso o falso  # -> falso
0388 
0389 $non_1 = non vero   # -> falso
0390 $non_0 = non falso  # -> vero
0391 </screen
0392 > Puoi vederne i valori usando l'<link linkend="the-inspector"
0393 >ispettore</link
0394 >, anche se i risultati sono forniti come commenti alla fine di ogni riga. <userinput
0395 >e</userinput
0396 > dà come risultato <userinput
0397 >vero</userinput
0398 > solo se entrambi i lati sono <userinput
0399 >vero</userinput
0400 >. <userinput
0401 >o</userinput
0402 > dà come risultato <userinput
0403 >vero</userinput
0404 > se almeno uno dei due lati è <userinput
0405 >vero</userinput
0406 >. Infine, <userinput
0407 >non</userinput
0408 > trasforma <userinput
0409 >vero</userinput
0410 > in <userinput
0411 >falso</userinput
0412 > e <userinput
0413 >falso</userinput
0414 > in <userinput
0415 >vero</userinput
0416 >.</para>
0417 <para
0418 >Gli operatori booleani sono <glossterm
0419 >evidenziati</glossterm
0420 > in rosa.</para>
0421 
0422 <sect3 id="boolean-operators-advanced-examples">
0423 <title
0424 >Alcuni esempi più complessi</title>
0425 <para
0426 >Consideriamo il seguente esempio con <userinput
0427 >e</userinput
0428 >: <screen>
0429 $a = 1
0430 $b = 5
0431 se (($a &lt; 10) e ($b == 5)) e ($a &lt; $b) {
0432   scrivi "ciao"
0433 }
0434 </screen
0435 > In questo frammento di codice &turtlescript;, i risultati di tre <link linkend="comparing-operators"
0436 >operatori di confronto</link
0437 > sono "uniti" usando gli operatori <userinput
0438 >e</userinput
0439 >. Ciò significa che per far stampare <quote
0440 >ciao</quote
0441 >, tutti e tre devono dare come risultato <quote
0442 >vero</quote
0443 >.</para>
0444 
0445 <para
0446 >Un esempio con <userinput
0447 >o</userinput
0448 >: <screen>
0449 $n = 1
0450 se ($n &lt; 10) o ($n == 2) {
0451   scrivi "ciao"
0452 }
0453 </screen
0454 > In questo frammento di codice &turtlescript;, il lato sinistro di <userinput
0455 >o</userinput
0456 > dà come risultato <quote
0457 >vero </quote
0458 >, quello destro <quote
0459 >falso</quote
0460 >. Dato che almeno uno dei due lati dell'operatore <userinput
0461 >o</userinput
0462 > è <quote
0463 >vero</quote
0464 >, l'operatore <userinput
0465 >o</userinput
0466 > dà come risultato <quote
0467 >vero</quote
0468 >. Ciò significa che viene stampato <quote
0469 >ciao</quote
0470 >.</para>
0471 
0472 <para
0473 >Infine, un esempio con <userinput
0474 >non</userinput
0475 >, che cambia il <quote
0476 >vero</quote
0477 > in <quote
0478 >falso</quote
0479 >, e il <quote
0480 >falso</quote
0481 > in <quote
0482 >vero</quote
0483 > Diamo un'occhiata: <screen
0484 >$n = 1
0485 se non ($n == 3) {
0486   scrivi "ciao"
0487 } altrimenti {
0488   scrivi "non ciao ;-)"
0489 }
0490 </screen
0491 ></para>
0492 </sect3>
0493 </sect2>
0494 
0495 <sect2 id="comparing-operators">
0496 <title
0497 >Operatori di confronto</title>
0498 <para
0499 >Consideriamo questo semplice confronto: <screen>
0500 $risposta = 10 &gt; 3
0501 </screen
0502 > Qui <userinput
0503 >10</userinput
0504 > è confrontato con <userinput
0505 >3</userinput
0506 > usando l'operatore <quote
0507 >maggiore di</quote
0508 >. Il risultato di questo confronto, il <link linkend="boolean-value"
0509 >valore booleano</link
0510 > <userinput
0511 >vero</userinput
0512 >, è memorizzato nella <link linkend="assignment-of-variables"
0513 >variabile</link
0514 > <userinput
0515 >$risposta</userinput
0516 >.</para>
0517 <para
0518 >Tutti i <link linkend="number"
0519 >numeri</link
0520 > e le <link linkend="assignment-of-variables"
0521 >variabili</link
0522 > (che contengono numeri) possono essere confrontate tra di loro usando gli operatori di confronto.</para>
0523 <para
0524 >Tutti gli operatori di confronto possibili sono: <table
0525 > <title
0526 >Tipi di domande</title
0527 > <tgroup cols="3"
0528 > <tbody
0529 > <row
0530 > <entry
0531 ><userinput
0532 >$A == $B</userinput
0533 ></entry
0534 > <entry
0535 >uguale</entry
0536 > <entry
0537 >la risposta è <quote
0538 >vero</quote
0539 > se <userinput
0540 >A</userinput
0541 > è uguale a <userinput
0542 >$B</userinput
0543 ></entry
0544 > </row
0545 > <row
0546 > <entry
0547 ><userinput
0548 >$A != $B</userinput
0549 ></entry
0550 > <entry
0551 >diverso</entry
0552 > <entry
0553 >la risposta è <quote
0554 >vero</quote
0555 > se <userinput
0556 >$A</userinput
0557 > è diverso da <userinput
0558 >$B</userinput
0559 ></entry
0560 > </row
0561 > <row
0562 > <entry
0563 ><userinput
0564 >$A &gt; $B</userinput
0565 ></entry
0566 > <entry
0567 >maggiore di</entry
0568 > <entry
0569 >la risposta è <quote
0570 >vero</quote
0571 > se <userinput
0572 >$A</userinput
0573 > è maggiore di <userinput
0574 >$B</userinput
0575 ></entry
0576 > </row
0577 > <row
0578 > <entry
0579 ><userinput
0580 >$A &lt; $B</userinput
0581 ></entry
0582 > <entry
0583 >minore di</entry
0584 > <entry
0585 >la risposta è <quote
0586 >vero</quote
0587 > se <userinput
0588 >$A</userinput
0589 > è minore di <userinput
0590 >B$</userinput
0591 ></entry
0592 > </row
0593 > <row
0594 > <entry
0595 ><userinput
0596 >$A &gt;= $B</userinput
0597 ></entry
0598 > <entry
0599 >maggiore o uguale a</entry
0600 > <entry
0601 >la risposta è <quote
0602 >vero</quote
0603 > se <userinput
0604 >$A</userinput
0605 > è maggiore o uguale a <userinput
0606 >$B</userinput
0607 ></entry
0608 > </row
0609 > <row
0610 > <entry
0611 ><userinput
0612 >$A &lt;= $B</userinput
0613 ></entry
0614 > <entry
0615 >minore o uguale</entry
0616 > <entry
0617 >la risposta è <quote
0618 >vero</quote
0619 > se <userinput
0620 >$A</userinput
0621 > è minore o uguale a <userinput
0622 >$B</userinput
0623 ></entry
0624 > </row
0625 > </tbody
0626 > </tgroup
0627 > </table
0628 > Nota che <userinput
0629 >$A</userinput
0630 > e <userinput
0631 >$B</userinput
0632 > devono essere <link linkend="number"
0633 >numeri</link
0634 > o <link linkend="assignment-of-variables"
0635 >variabili</link
0636 > che contengono numeri.</para>
0637 </sect2>
0638 
0639 
0640 </sect1>
0641 
0642 
0643 
0644 <sect1 id="commands">
0645 <title
0646 >Comandi</title>
0647 <para
0648 >Usando i comandi tu dici alla tartaruga o a &kturtle; di fare qualcosa. Alcuni comandi richiedono argomenti, alcuni restituiscono risultati. In questa sezione spieghiamo tutti i comandi incorporati in &kturtle;. In alternativa, puoi creare comandi personalizzati usando <link linkend="learn"
0649 ><userinput
0650 >impara</userinput
0651 ></link
0652 >. I comandi incorporati di cui parliamo qui sono <glossterm
0653 >evidenziati</glossterm
0654 > in blu scuro.</para>
0655 
0656 <sect2 id="moving-the-turtle">
0657 <title
0658 >Muovere la tartaruga</title>
0659 <para
0660 >Ci sono vari comandi per muovere la tartaruga nello schermo.</para>
0661 
0662   <variablelist>
0663     <anchor id="forward"/>
0664     <varlistentry
0665 > 
0666       <term
0667 >avanti (av)<indexterm
0668 ><primary
0669 >avanti (av)</primary
0670 ></indexterm
0671 ></term>
0672       <listitem
0673 ><para
0674 ><screen
0675 >avanti X</screen
0676 ><userinput
0677 >avanti</userinput
0678 > muove la tartaruga avanti di X pixel. Quando la penna è giù, la tartaruga lascerà un tratto. <userinput
0679 >avanti</userinput
0680 > può essere abbreviato in <userinput
0681 >av</userinput
0682 >.</para
0683 ></listitem>
0684     </varlistentry>
0685   </variablelist>
0686   <variablelist>
0687     <anchor id="backward"/>
0688     <varlistentry
0689 >  
0690       <term
0691 >indietro (in)<indexterm
0692 ><primary
0693 >indietro (in)</primary
0694 ></indexterm
0695 ></term>
0696       <listitem
0697 ><para
0698 ><screen
0699 >indietro X</screen
0700 ><userinput
0701 >indietro</userinput
0702 > muove la tartaruga indietro di X pixel. Quando la penna è giù, la tartaruga lascerà un tratto. <userinput
0703 >indietro</userinput
0704 > può essere abbreviato in <userinput
0705 >in</userinput
0706 >.</para
0707 ></listitem>
0708     </varlistentry>
0709   </variablelist>
0710   <variablelist>
0711     <anchor id="turnleft"/>
0712     <varlistentry
0713 > 
0714       <term
0715 >sinistra (sx)<indexterm
0716 ><primary
0717 >sinistra (sx)</primary
0718 ></indexterm
0719 ></term>
0720       <listitem
0721 ><para
0722 ><screen
0723 >sinistra X</screen
0724 ><userinput
0725 >sinistra</userinput
0726 > comanda alla tartaruga di girare X gradi a sinistra. <userinput
0727 >sinistra</userinput
0728 > può essere abbreviato in <userinput
0729 >sx</userinput
0730 >.</para
0731 ></listitem>
0732     </varlistentry>
0733   </variablelist>
0734   <variablelist>
0735     <anchor id="turnright"/>
0736     <varlistentry
0737 > 
0738       <term
0739 >destra (dx)<indexterm
0740 ><primary
0741 >destra (dx)</primary
0742 ></indexterm
0743 ></term>
0744       <listitem
0745 ><para
0746 ><screen
0747 >destra X</screen
0748 ><userinput
0749 >destra</userinput
0750 > comanda alla tartaruga di girare X gradi a destra. <userinput
0751 >destra</userinput
0752 > può essere abbreviato in <userinput
0753 >dx</userinput
0754 >.</para
0755 ></listitem>
0756     </varlistentry>
0757   </variablelist>
0758   <variablelist>
0759     <anchor id="direction"/>
0760     <varlistentry
0761 > 
0762       <term
0763 >direzione (dir)<indexterm
0764 ><primary
0765 >direzione (dir)</primary
0766 ></indexterm
0767 ></term>
0768       <listitem
0769 ><para
0770 ><screen
0771 >direzione X</screen
0772 ><userinput
0773 >direzione</userinput
0774 > imposta la direzione della tartaruga a X gradi partendo da zero, quindi non relativamente alla direzione precedente della tartaruga. <userinput
0775 >direzione</userinput
0776 > può essere abbreviato in <userinput
0777 >dir</userinput
0778 >.</para
0779 ></listitem>
0780     </varlistentry>
0781   </variablelist>
0782   <variablelist>
0783     <anchor id="getdirection"/>
0784     <varlistentry
0785 > 
0786       <term
0787 >valoredirezione<indexterm
0788 ><primary
0789 >valoredirezione</primary
0790 ></indexterm
0791 ></term>
0792       <listitem
0793 ><para
0794 ><screen
0795 >valoredirezione</screen
0796 ><userinput
0797 >valoredirezione</userinput
0798 > restituisce la direzione della tartaruga come un numero in gradi a partire da zero, dove lo zero è la direzione che la tartaruga ha quando è rivolta verso l'alto.</para
0799 ></listitem>
0800     </varlistentry>
0801   </variablelist>
0802   <variablelist>
0803     <anchor id="center"/>
0804     <varlistentry
0805 > 
0806       <term
0807 >centra<indexterm
0808 ><primary
0809 >centra</primary
0810 ></indexterm
0811 ></term>
0812       <listitem
0813 ><para
0814 ><screen
0815 >centra</screen
0816 ><userinput
0817 >centra</userinput
0818 > muove la tartaruga al centro dell'area di disegno.</para
0819 ></listitem>
0820     </varlistentry>
0821   </variablelist>
0822   <variablelist>
0823     <anchor id="go"/>
0824     <varlistentry
0825 > 
0826       <term
0827 >vai<indexterm
0828 ><primary
0829 >vai</primary
0830 ></indexterm
0831 ></term>
0832       <listitem
0833 ><para
0834 ><screen
0835 >vai X,Y</screen
0836 ><userinput
0837 >vai</userinput
0838 > comanda alla tartaruga di andare in un certo punto dell'area di disegno. Questo punto dista X <glossterm linkend="pixels"
0839 >pixel</glossterm
0840 > da sinistra, e Y <glossterm linkend="pixels"
0841 >pixel</glossterm
0842 > dall'alto dell'area di disegno.</para
0843 ></listitem>
0844     </varlistentry>
0845   </variablelist>
0846   <variablelist>
0847     <anchor id="gox"/>
0848     <varlistentry
0849 > 
0850       <term
0851 >vaix<indexterm
0852 ><primary
0853 >vaix (vx)</primary
0854 ></indexterm
0855 ></term>
0856       <listitem
0857 ><para
0858 ><screen
0859 >vaix X</screen
0860 ><userinput
0861 >vaix</userinput
0862 > usando questo comando la tartaruga si muoverà a X <glossterm linkend="pixels"
0863 >pixel</glossterm
0864 > dalla sinistra dell'area di disegno mantenendo la sua altezza. <userinput
0865 >vaix</userinput
0866 > può essere abbreviato in <userinput
0867 >vx</userinput
0868 >.</para
0869 ></listitem>
0870     </varlistentry>
0871   </variablelist>
0872   <variablelist>
0873     <anchor id="goy"/>
0874     <varlistentry
0875 > 
0876       <term
0877 >vaiy<indexterm
0878 ><primary
0879 >vaiy (vy)</primary
0880 ></indexterm
0881 ></term>
0882       <listitem
0883 ><para
0884 ><screen
0885 >vaiy Y</screen
0886 ><userinput
0887 >vaiy</userinput
0888 > usando questo comando la tartaruga si muoverà a Y <glossterm linkend="pixels"
0889 >pixel</glossterm
0890 > dall'alto dell'area di disegno mantenendosi alla stessa distanza dal bordo sinistro dell'area di disegno. <userinput
0891 >vaiy</userinput
0892 > può essere abbreviato in <userinput
0893 >vy</userinput
0894 >.</para
0895 ></listitem>
0896     </varlistentry>
0897   </variablelist>
0898   <note
0899 ><para
0900 >Usando i comandi <userinput
0901 >vai</userinput
0902 >, <userinput
0903 >vaix</userinput
0904 >, <userinput
0905 >vaiy</userinput
0906 > e <userinput
0907 >centra</userinput
0908 > la tartaruga non disegnerà una linea, non importa che la penna sia su o giù.</para>
0909   </note>
0910 </sect2>
0911 
0912 <sect2 id="locate-the-turtle">
0913 <title
0914 >Dove è la tartaruga?</title>
0915 <para
0916 >Ci sono due comandi che restituiscono la posizione della tartaruga nello schermo.</para>
0917 
0918   <variablelist>
0919     <anchor id="getx"/>
0920     <varlistentry
0921 > 
0922       <term
0923 >coordinatax<indexterm
0924 ><primary
0925 >coordinatax</primary
0926 ></indexterm
0927 ></term>
0928       <listitem
0929 ><para
0930 ><userinput
0931 >coordinatax</userinput
0932 > restituisce il numero di pixel dalla sinistra dell'area di disegno fino alla posizione corrente della tartaruga.</para
0933 ></listitem>
0934     </varlistentry>
0935   </variablelist>
0936   <variablelist>
0937     <anchor id="gety"/>
0938     <varlistentry
0939 > 
0940       <term
0941 >coordinatay<indexterm
0942 ><primary
0943 >coordinatay</primary
0944 ></indexterm
0945 ></term>
0946       <listitem
0947 ><para
0948 ><userinput
0949 >coordinatay</userinput
0950 > restituisce il numero di pixel dall'alto dell'area di disegno fino alla posizione corrente della tartaruga.</para
0951 ></listitem>
0952     </varlistentry>
0953   </variablelist>
0954 </sect2>
0955 
0956 <sect2 id="pen">
0957 <title
0958 >La tartaruga ha una penna</title>
0959 <para
0960 >La tartaruga ha una penna, che disegna una linea quando la tartaruga si muove. Ci sono alcuni comandi che controllano la penna. In questa sezione vengono spiegati.</para>
0961   <variablelist>
0962     <anchor id="penup"/>
0963     <varlistentry
0964 > 
0965       <term
0966 >pennasu (ps)<indexterm
0967 ><primary
0968 >pennasu (ps)</primary
0969 ></indexterm
0970 ></term>
0971       <listitem
0972 ><para
0973 ><screen
0974 >pennasu</screen
0975 ><userinput
0976 >pennasu</userinput
0977 > alza la penna dall'area di disegno. Quando la penna è <quote
0978 >su</quote
0979 >, non sarà disegnata alcuna linea mentre la tartaruga si muove. Vedi anche <userinput
0980 >pennagiu</userinput
0981 >. <userinput
0982 >pennasu</userinput
0983 > può essere abbreviato in <userinput
0984 >ps</userinput
0985 >.</para
0986 ></listitem>
0987     </varlistentry>
0988   </variablelist>
0989   <variablelist>
0990     <anchor id="pendown"/>
0991     <varlistentry
0992 > 
0993       <term
0994 >pennagiu (pg)<indexterm
0995 ><primary
0996 >pennagiu (pg)</primary
0997 ></indexterm
0998 ></term>
0999       <listitem
1000 ><para
1001 ><screen
1002 >pennagiu</screen
1003 ><userinput
1004 >pennagiu</userinput
1005 > abbassa la penna sull'area di disegno. Quando la penna è <quote
1006 >giù</quote
1007 >, verrà disegnata una linea sull'area di disegno mentre la tartaruga si muove. Vedi anche <userinput
1008 >pennasu</userinput
1009 >. <userinput
1010 >pennagiu</userinput
1011 > può essere abbreviato in <userinput
1012 >pg</userinput
1013 >.</para
1014 ></listitem>
1015     </varlistentry>
1016   </variablelist>
1017   <variablelist>
1018     <anchor id="setpenwidth"/>
1019     <varlistentry
1020 > 
1021       <term
1022 >spessorepenna (sp)<indexterm
1023 ><primary
1024 >spessorepenna (sp)</primary
1025 ></indexterm
1026 ></term>
1027       <listitem
1028 ><para
1029 ><screen
1030 >spessorepenna X</screen
1031 ><userinput
1032 >spessorepenna</userinput
1033 > imposta lo spessore della penna (lo spessore della linea) a X <glossterm linkend="pixels"
1034 >pixel</glossterm
1035 >. <userinput
1036 >spessorepenna</userinput
1037 > può essere abbreviato in <userinput
1038 >sp</userinput
1039 >.</para
1040 ></listitem>
1041     </varlistentry>
1042   </variablelist>
1043   <variablelist>
1044     <anchor id="setfgcolor"/>
1045     <varlistentry
1046 > 
1047       <term
1048 >colorepenna (cp)<indexterm
1049 ><primary
1050 >colorepenna (cp)</primary
1051 ></indexterm
1052 ></term>
1053       <listitem
1054 ><para
1055 ><screen
1056 >colorepenna R,G,B</screen
1057 ><userinput
1058 >colorepenna</userinput
1059 > imposta il colore della penna. <userinput
1060 >colorepenna</userinput
1061 > richiede una <glossterm linkend="rgb"
1062 >combinazione RGB</glossterm
1063 > come argomento. <userinput
1064 >colorepenna</userinput
1065 > può essere abbreviato in <userinput
1066 >cp</userinput
1067 >.</para
1068 ></listitem>
1069     </varlistentry>
1070   </variablelist>
1071 </sect2>
1072 
1073 <sect2 id="canvas">
1074 <title
1075 >Comandi per controllare l'area di disegno</title>
1076 <para
1077 >Ci sono vari comandi per controllare l'area di disegno.</para>
1078   <variablelist>
1079     <anchor id="resizecanvas"/>
1080     <varlistentry>
1081       <term
1082 >dimensionesfondo (ds)<indexterm
1083 ><primary
1084 >dimensionesfondo (ds)</primary
1085 ></indexterm
1086 ></term>
1087       <listitem
1088 ><para
1089 ><screen
1090 >dimensionesfondo X,Y</screen
1091 >Con il comando <userinput
1092 >dimensionesfondo</userinput
1093 > puoi impostare la dimensione dell'area di disegno. Prende X e Y come argomenti, dove X è la nuova larghezza in <glossterm linkend="pixels"
1094 >pixel</glossterm
1095 > dell'area di disegno, mentre Y è la nuova altezza in <glossterm linkend="pixels"
1096 >pixel</glossterm
1097 >. <userinput
1098 >dimensionesfondo</userinput
1099 > può essere abbreviato in <userinput
1100 >ds</userinput
1101 >.</para
1102 ></listitem>
1103     </varlistentry>
1104   </variablelist>
1105   <variablelist>
1106     <anchor id="setbgcolor"/>
1107     <varlistentry
1108 > 
1109       <term
1110 >coloresfondo (cs)<indexterm
1111 ><primary
1112 >coloresfondo (cs)</primary
1113 ></indexterm
1114 ></term>
1115       <listitem
1116 ><para
1117 ><screen
1118 >coloresfondo R,G,B</screen
1119 ><userinput
1120 >coloresfondo</userinput
1121 > imposta il colore dell'area di disegno. <userinput
1122 >coloresfondo</userinput
1123 > richiede una <glossterm linkend="rgb"
1124 >combinazione RGB</glossterm
1125 > come argomento. <userinput
1126 >coloresfondo</userinput
1127 > può essere abbreviato in <userinput
1128 >cs</userinput
1129 >.</para
1130 ></listitem>
1131     </varlistentry>
1132   </variablelist>
1133 </sect2>
1134 
1135 <sect2 id="clean">
1136 <title
1137 >Comandi per fare pulizia</title>
1138 <para
1139 >Ci sono due comandi per pulire l'area di disegno dopo che hai fatto confusione.</para>
1140   <variablelist>
1141     <anchor id="clear"/>
1142     <varlistentry
1143 > 
1144       <term
1145 >pulisci (cls)<indexterm
1146 ><primary
1147 >pulisci (cls)</primary
1148 ></indexterm
1149 ></term>
1150       <listitem
1151 ><para
1152 ><screen
1153 >pulisci</screen
1154 >Con <userinput
1155 >pulisci</userinput
1156 > puoi pulire tutti i disegni dall'area di disegno. Tutte le altre cose rimangono: la posizione e l'angolo della tartaruga, il colore dell'area di disegno, la visibilità della tartaruga e la dimensione dell'area di disegno.</para
1157 ></listitem>
1158     </varlistentry>
1159   </variablelist>
1160   <variablelist>
1161     <anchor id="reset"/>
1162     <varlistentry
1163 > 
1164       <term
1165 >ricomincia<indexterm
1166 ><primary
1167 >ricomincia</primary
1168 ></indexterm
1169 ></term>
1170       <listitem
1171 ><para
1172 ><screen
1173 >ricomincia</screen
1174 ><userinput
1175 >ricomincia</userinput
1176 > pulisce molto più accuratamente del comando <userinput
1177 >pulisci</userinput
1178 >. Dopo un comando <userinput
1179 >ricomincia</userinput
1180 >, tutto ritorna come era quando hai avviato &kturtle;. La tartaruga è posizionata al centro dello schermo, il colore dell'area di disegno è bianco, la tartaruga disegna linee nere sull'area di disegno e la dimensione dell'area di disegno è 400 x 400 pixel.</para
1181 ></listitem>
1182     </varlistentry>
1183   </variablelist>
1184 </sect2>
1185 
1186 <sect2 id="sprites">
1187 <title
1188 >La tartaruga è un folletto</title>
1189 <para
1190 >Prima una breve spiegazione di cosa sono i folletti: i folletti sono dei piccoli disegni che possono essere mossi in giro per lo schermo, cosa che spesso vediamo nei giochi per il computer. Anche la nostra tartaruga è un folletto. Per maggiori informazioni, vedi la voce di glossario sui <glossterm linkend="sprites"
1191 >folletti</glossterm
1192 >.</para>
1193 <para
1194 >Di seguito troverai una descrizione completa di tutti i comandi che lavorano con i folletti.</para>
1195 <note
1196 ><para
1197 >L'attuale versione di &kturtle; non supporta ancora l'uso di folletti diversi dalla tartaruga. Con le future versioni potrai cambiare la tartaruga in qualcos'altro creato da te.</para
1198 ></note>
1199   <variablelist>
1200     <anchor id="spriteshow"/>
1201     <varlistentry
1202 > 
1203       <term
1204 >mostra (ms)<indexterm
1205 ><primary
1206 >mostra (ms)</primary
1207 ></indexterm
1208 ></term>
1209       <listitem
1210 ><para
1211 ><screen
1212 >mostra</screen
1213 ><userinput
1214 >mostra</userinput
1215 > rende nuovamente visibile la tartaruga dopo che è stata nascosta. <userinput
1216 >mostra</userinput
1217 > può essere abbreviato in <userinput
1218 >ms</userinput
1219 >.</para
1220 ></listitem>
1221     </varlistentry>
1222   </variablelist>
1223   <variablelist>
1224     <anchor id="spritehide"/>
1225     <varlistentry
1226 > 
1227       <term
1228 >nascondi (ns)<indexterm
1229 ><primary
1230 >nascondi (ns)</primary
1231 ></indexterm
1232 ></term>
1233       <listitem
1234 ><para
1235 ><screen
1236 >nascondi</screen
1237 ><userinput
1238 >nascondi</userinput
1239 > nasconde la tartaruga. Ciò può essere usato se non conviene che la tartaruga appaia nel tuo disegno. <userinput
1240 >nascondi</userinput
1241 > può essere abbreviato in <userinput
1242 >ns</userinput
1243 >.</para
1244 ></listitem>
1245     </varlistentry>
1246   </variablelist>
1247 </sect2>
1248 
1249 <sect2 id="writing">
1250 <title
1251 >La tartaruga può scrivere del testo?</title>
1252 <para
1253 >La risposta è: <quote
1254 >sì</quote
1255 >. La tartaruga può scrivere: scrive tutto quello che tu le comandi di scrivere.</para>
1256   <variablelist>
1257     <anchor id="print"/>
1258     <varlistentry
1259 > 
1260       <term
1261 >scrivi<indexterm
1262 ><primary
1263 >scrivi</primary
1264 ></indexterm
1265 ></term>
1266       <listitem
1267 ><para
1268 ><screen
1269 >scrivi X</screen
1270 >Il comando <userinput
1271 >scrivi</userinput
1272 > viene usato per comandare alla tartaruga di scrivere qualcosa nell'area di disegno. <userinput
1273 >scrivi</userinput
1274 > accetta come argomenti numeri e stringhe. Puoi scrivere vari numeri e stringhe usando il simbolo <quote
1275 >+</quote
1276 >. Guarda qui un piccolo esempio: <screen
1277 >$anno = 2003
1278 $autore = "Cies"
1279 scrivi $autore + " ha iniziato il progetto KTurtle nel " + $anno + " e ancora si diverte a lavorarci!"
1280 </screen>
1281       </para
1282 ></listitem>
1283     </varlistentry>
1284   </variablelist>
1285   <variablelist>
1286     <anchor id="fontsize"/>
1287     <varlistentry
1288 > 
1289       <term
1290 >dimensionecarattere<indexterm
1291 ><primary
1292 >dimensionecarattere</primary
1293 ></indexterm
1294 ></term>
1295       <listitem
1296 ><para
1297 ><screen
1298 >dimensionecarattere X</screen
1299 ><userinput
1300 >dimensionecarattere</userinput
1301 > imposta la dimensione del carattere usato dal comando <userinput
1302 >scrivi</userinput
1303 >. <userinput
1304 >dimensionecarattere</userinput
1305 > richiede un argomento, che dovrebbe essere un numero. La dimensione è impostata in <glossterm linkend="pixels"
1306 >pixel</glossterm
1307 >.</para
1308 ></listitem>
1309     </varlistentry>
1310   </variablelist>
1311 </sect2>
1312 
1313 <sect2 id="math-commands">
1314 <title
1315 >Comandi matematici</title>
1316 <para
1317 >I comandi seguenti sono dei comandi matematici avanzati di &kturtle;.</para>
1318   <variablelist>
1319     <anchor id="round"/>
1320     <varlistentry>
1321       <term
1322 >round<indexterm
1323 ><primary
1324 >round</primary
1325 ></indexterm
1326 ></term>
1327       <listitem
1328 ><para
1329 ><screen
1330 >round(x)</screen
1331 ><userinput
1332 >round</userinput
1333 > arrotonda il numero dato all'intero più vicino. <screen>
1334 scrivi round(10.8)
1335 avanti 20
1336 scrivi round(10.3)
1337 </screen
1338 > Con questo codice la tartaruga scriverà i numeri 11 e 10.</para
1339 ></listitem>
1340     </varlistentry>
1341   </variablelist>
1342   <variablelist>
1343     <anchor id="random"/>
1344     <varlistentry
1345 > 
1346       <term
1347 >numerocasuale (casuale)<indexterm
1348 ><primary
1349 >numerocasuale (casuale)</primary
1350 ></indexterm
1351 ></term>
1352       <listitem
1353 ><para
1354 ><screen
1355 >numerocasuale X,Y</screen
1356 ><userinput
1357 >numerocasuale</userinput
1358 > è un comando che richiede degli argomenti e restituisce un valore. Come argomenti richiede due numeri, il primo (X) imposta il valore minimo restituito, il secondo (Y) imposta il massimo. Il valore restituito è un numero scelto casualmente, maggiore o uguale del minimo, e minore o uguale del massimo. Qui vi è un piccolo esempio: <screen>
1359 ripeti 500 {
1360   $x = numerocasuale 1,20
1361   avanti $x
1362   sinistra 10 - $x
1363 }
1364 </screen
1365 > Usando il comando <userinput
1366 >numerocasuale</userinput
1367 > puoi aggiungere un po' di caos al tuo programma.</para
1368 ></listitem>
1369     </varlistentry>
1370   </variablelist>
1371   <variablelist>
1372     <anchor id="mod"/>
1373     <varlistentry
1374 > 
1375       <term
1376 >mod<indexterm
1377 ><primary
1378 >mod</primary
1379 ></indexterm
1380 ></term>
1381       <listitem
1382 ><para
1383 ><screen
1384 >mod X,Y</screen
1385 >Il comando <userinput
1386 >mod</userinput
1387 > restituisce il resto della divisione del primo numero con il secondo..</para
1388 ></listitem>
1389     </varlistentry>
1390   </variablelist>
1391   <variablelist>
1392     <anchor id="sqrt"/>
1393     <varlistentry
1394 > 
1395       <term
1396 >sqrt<indexterm
1397 ><primary
1398 >sqrt</primary
1399 ></indexterm
1400 ></term>
1401       <listitem
1402 ><para
1403 ><screen
1404 >sqrt X</screen
1405 >Il comando <userinput
1406 >sqrt</userinput
1407 > è usato per calcolare la radice quadrata di un numero, X.</para
1408 ></listitem>
1409     </varlistentry>
1410   </variablelist>
1411 <!--
1412   <variablelist>
1413     <anchor id="exp"/>
1414     <varlistentry
1415 > 
1416       <term
1417 >exp<indexterm
1418 ><primary
1419 >exp</primary
1420 ></indexterm
1421 ></term>
1422       <listitem
1423 ><para
1424 ><screen
1425 >sqrt X</screen>
1426       </para
1427 ></listitem>
1428     </varlistentry>
1429   </variablelist>
1430 -->
1431   <variablelist>
1432     <anchor id="pi"/>
1433     <varlistentry
1434 > 
1435       <term
1436 >pi<indexterm
1437 ><primary
1438 >pi</primary
1439 ></indexterm
1440 ></term>
1441       <listitem
1442 ><para
1443 ><screen
1444 >pi</screen
1445 >Questo comando restituisce la costante Pi, <userinput
1446 >3.14159</userinput
1447 >.</para
1448 ></listitem>
1449     </varlistentry>
1450   </variablelist>
1451   <variablelist>
1452     <anchor id="sin"/>
1453     <anchor id="cos"/>
1454     <anchor id="tan"/>
1455     <varlistentry>
1456       <term
1457 >sen<indexterm
1458 ><primary
1459 >sen</primary
1460 ></indexterm
1461 >, cos<indexterm
1462 ><primary
1463 >cos</primary
1464 ></indexterm
1465 >, tan<indexterm
1466 ><primary
1467 >tan</primary
1468 ></indexterm
1469 ></term>
1470       <listitem
1471 ><para>
1472 <screen
1473 >sen X
1474 cos X
1475 tan X
1476 </screen
1477 >Questi tre comandi rappresentano le famose funzioni trigonometriche <userinput
1478 >sen</userinput
1479 >, <userinput
1480 >cos</userinput
1481 > e <userinput
1482 >tan</userinput
1483 >. L'argomento di questi comandi, X, è un <link linkend="number"
1484 >numero</link
1485 >.</para
1486 ></listitem>
1487     </varlistentry>
1488   </variablelist>
1489   <variablelist>
1490     <anchor id="arcsin"/>
1491     <anchor id="arccos"/>
1492     <anchor id="arctan"/>
1493     <varlistentry>
1494       <term
1495 >arcsen<indexterm
1496 ><primary
1497 >arcsen</primary
1498 ></indexterm
1499 >, arccos<indexterm
1500 ><primary
1501 >arccos</primary
1502 ></indexterm
1503 >, arctan<indexterm
1504 ><primary
1505 >arctan</primary
1506 ></indexterm
1507 ></term>
1508       <listitem
1509 ><para>
1510 <screen
1511 >arcsen X
1512 arccos X
1513 arctan X
1514 </screen
1515 >Questi comandi rappresentano le funzioni inverse di <link linkend="sin"
1516 >sen</link
1517 >, <link linkend="cos"
1518 >cos</link
1519 > e <link linkend="tan"
1520 >tan</link
1521 >. L'argomento di questi comandi, X, è un <link linkend="number"
1522 >numero</link
1523 >.</para
1524 ></listitem>
1525     </varlistentry>
1526   </variablelist>
1527 </sect2>
1528 
1529 <sect2 id="dialogs">
1530 <title
1531 >Inserire i dati e visualizzare i messaggi nelle finestre</title>
1532 <para
1533 >Una finestra è una piccola finestra a comparsa che mostra un messaggio oppure chiede di inserire qualcosa. &kturtle; ha due comandi per le finestre , chiamati: <userinput
1534 >messaggio</userinput
1535 > e <userinput
1536 >chiedi</userinput
1537 ></para>
1538   <variablelist>
1539     <anchor id="message"/>
1540     <varlistentry
1541 > 
1542       <term
1543 >messaggio<indexterm
1544 ><primary
1545 >messaggio</primary
1546 ></indexterm
1547 ></term>
1548       <listitem
1549 ><para
1550 ><screen
1551 >messaggio X</screen
1552 >Il comando <userinput
1553 >messaggio</userinput
1554 > richiede come argomento una <link linkend="string"
1555 >stringa</link
1556 >. Mostra una finestra a comparsa che contiene il testo della <link linkend="string"
1557 >stringa</link
1558 >. <screen
1559 >messaggio "Cies ha iniziato KTurtle nel 2003 e ancora si diverte a lavorarci!"
1560 </screen>
1561       </para
1562 ></listitem>
1563     </varlistentry>
1564   </variablelist>
1565   <variablelist>
1566     <anchor id="ask"/>
1567     <varlistentry
1568 > 
1569       <term
1570 >chiedi<indexterm
1571 ><primary
1572 >chiedi</primary
1573 ></indexterm
1574 ></term>
1575       <listitem
1576 ><para
1577 ><screen
1578 >chiedi X</screen
1579 ><userinput
1580 >chiedi</userinput
1581 > richiede come argomento una <link linkend="string"
1582 >stringa</link
1583 >. Mostra questa stringa in una finestra a comparsa (in modo simile a <link linkend="message"
1584 >messaggio</link
1585 >) che contiene anche un campo di inserimento testo. Dopo che l'utente ha inserito un <link linkend="number"
1586 >numero</link
1587 > o una <link linkend="string"
1588 >stringa</link
1589 >, il risultato può essere memorizzato in una <link linkend="assignment-of-variables"
1590 >variabile</link
1591 >, oppure passato come argomento ad un <link linkend="commands"
1592 >comando</link
1593 >. Per esempio: <screen>
1594 $in = chiedi "Qual è la tua età?"
1595 $out = 2003 - $in
1596 scrivi "Ad un certo punto del 2003 avevi " + $out + " anni."
1597 </screen
1598 > Se l'utente annulla la finestra , o non inserisce niente, la <link linkend="assignment-of-variables"
1599 >variabile</link
1600 > sarà vuota.</para
1601 ></listitem>
1602     </varlistentry>
1603   </variablelist>
1604 </sect2>
1605 
1606 </sect1>
1607 
1608 
1609 
1610 <sect1 id="assignment-of-variables">
1611 <title
1612 >Assegnamento di variabili</title>
1613 <para
1614 >Vediamo prima le variabili, poi come assegnare dei valori a queste variabili. </para>
1615 
1616 <para
1617 >Le variabili sono delle parole che iniziano per <quote
1618 >$</quote
1619 >, e nell'<link linkend="the-editor"
1620 >editor</link
1621 > sono <glossterm
1622 >evidenziate</glossterm
1623 > in viola.</para>
1624 
1625 <para
1626 >Le variabili possono contenere qualsiasi <link linkend="number"
1627 >numero</link
1628 >, una <link linkend="string"
1629 >stringa</link
1630 > o un<link linkend="boolean-value"
1631 >valore booleano (vero/falso)</link
1632 >. Usando l'assegnazione, <userinput
1633 >=</userinput
1634 >, è possibile impostare il contenuto di una variabile. Lo manterrà fino alla fine dell'esecuzione del programma, oppure fino a quando le viene assegnato qualcos'altro.</para>
1635 
1636 <para
1637 >Una volta assegnate, puoi usare le variabili come se fossero il loro contenuto. Per esempio, nel frammento seguente di codice &turtlescript;: <screen>
1638 $x = 10
1639 $x = $x / 3
1640 scrivi $x
1641 </screen
1642 > Prima, alla variabile <userinput
1643 >$x</userinput
1644 > viene assegnato <userinput
1645 >10</userinput
1646 >. Quindi, ad <userinput
1647 >$x</userinput
1648 > viene riassegnato il proprio valore diviso per <userinput
1649 >3</userinput
1650 > &mdash; ciò effettivamente significa che ad <userinput
1651 >$x</userinput
1652 > viene assegnato il risultato di <userinput
1653 >10 / 3</userinput
1654 >. Infine, <userinput
1655 >$x</userinput
1656 > viene stampata. Nelle righe due e tre puoi vedere che<userinput
1657 >$x</userinput
1658 > è usata come se fosse quello che in realtà contiene.</para>
1659 
1660 <para
1661 >Per poter usare le variabili, deve avergli assegnato qualcosa. Ad esempio: <screen>
1662 scrivi $n
1663 </screen
1664 > Avrà come risultato un messaggio d'errore.</para>
1665 
1666 <para
1667 >Osserviamo il seguente frammento di codice &turtlescript;: <screen>
1668 $a = 2004
1669 $b = 25
1670 
1671 # il comando seguente scrive "2029"
1672 scrivi $a + $b
1673 indietro 30
1674 # il comando seguente scrive "2004 più 25 = 2029"
1675 scrivi $a + " più " + $b " = " + ($a + $b)
1676 </screen
1677 > Nelle prime due righe le variabili <userinput
1678 >$a</userinput
1679 > e <userinput
1680 >$b</userinput
1681 > sono impostare a 2004 e 25. Quindi ci sono due comandi <userinput
1682 >scrivi</userinput
1683 > con <userinput
1684 >indietro 30</userinput
1685 > in mezzo. I commenti prima dei comandi <userinput
1686 >scrivi</userinput
1687 > spiegano cosa viene fatto. Il comando <userinput
1688 >indietro 30</userinput
1689 > è usato per scrivere ogni testo in una nuova riga. Come puoi vedere, le variabili possono essere usate come se fossero quello che contengono, e puoi usarle con qualsiasi tipo di <link linkend="operators"
1690 >operatore</link
1691 > oppure come argomento quando usi qualche <link linkend="commands"
1692 >comando</link
1693 >.</para>
1694 
1695 <para
1696 >Ancora un esempio: <screen>
1697 $nome = chiedi "Qual è il tuo nome?"
1698 scrivi "Ciao " + $nome + "! Buona fortuna per l'apprendimento dell'arte della programmazione..."
1699 </screen
1700 > Abbastanza semplice. Puoi nuovamente vedere come la variabile <userinput
1701 >$nome</userinput
1702 > è considerata come fosse una stringa di testo.</para>
1703 
1704 <para
1705 >Quando usi variabili, l'<link linkend="the-inspector"
1706 >ispettore</link
1707 > è molto utile. Mostra il contenuto di tutte le variabili attualmente usate.</para>
1708 </sect1>
1709 
1710 
1711 
1712 <sect1 id="controlling-execution">
1713 <title
1714 >Controllare l'esecuzione</title>
1715 <para
1716 >I comandi di controllo dell'esecuzione ti permettono &mdash; come dicono il loro nomi &mdash; di controllare l'esecuzione.</para>
1717 <para
1718 >I comandi di controllo dell'esecuzione sono <glossterm
1719 >evidenziati</glossterm
1720 > in verde scuro, e con un carattere grassetto. Le parentesi sono usate principalmente con i comandi di controllo dell'esecuzione, e sono <glossterm
1721 >evidenziate</glossterm
1722 > di nero.</para>
1723 
1724 <sect2 id="wait">
1725 <title
1726 >Far aspettare la tartaruga</title>
1727 <para
1728 >Se hai programmato in &kturtle;, potresti aver notato che la tartaruga può essere molto veloce a disegnare. Questo comando fa sì che la tartaruga attenda per un tempo specificato.</para>
1729   <variablelist>
1730     <varlistentry>
1731       <term
1732 >aspetta<indexterm
1733 ><primary
1734 >aspetta</primary
1735 ></indexterm
1736 ></term>
1737       <listitem
1738 ><para
1739 ><screen
1740 >aspetta X</screen
1741 ><userinput
1742 >aspetta</userinput
1743 > fa sì che la tartaruga attenda X secondi. <screen>
1744 ripeti 36 {
1745   avanti 5
1746   destra 10
1747   aspetta 0.5
1748 }
1749 </screen
1750 > Questo codice disegna un cerchio, ma la tartaruga attenderà mezzo secondo dopo ogni passo. Ciò dà l'impressione che la tartaruga si muova lentamente.</para
1751 ></listitem>
1752     </varlistentry>
1753   </variablelist>
1754 </sect2>
1755 
1756 <sect2 id="if">
1757 <title
1758 >Esegui <quote
1759 >se</quote
1760 ></title>
1761   <variablelist>
1762     <varlistentry>
1763       <term
1764 >se<indexterm
1765 ><primary
1766 >se</primary
1767 ></indexterm
1768 ></term>
1769       <listitem
1770 ><para
1771 ><screen
1772 >se <link linkend="boolean-value"
1773 >booleano</link
1774 > { ... }</screen
1775 >Il codice che si trova tra le parentesi sarà eseguito solo <userinput
1776 >se</userinput
1777 > il <link linkend="boolean-value"
1778 >valore booleano</link
1779 > dà come risultato <quote
1780 >vero</quote
1781 >. <screen>
1782 $x = 6
1783 se $x &gt; 5 {
1784   scrivi "x è più grande di cinque!"
1785 }
1786 </screen
1787 > Nella prima riga, <userinput
1788 >$x</userinput
1789 > è impostato a 6. Nella seconda viene usato un <link linkend="comparing-operators"
1790 >operatore di confronto</link
1791 > per produrre il risultato di <userinput
1792 >$x &gt; 5</userinput
1793 >. Dato che è <quote
1794 >vero</quote
1795 > (6 è più grande di 5), il comando di controllo dell'esecuzione <userinput
1796 >se</userinput
1797 > permetterà che il codice tra le parentesi venga eseguito.</para
1798 ></listitem>
1799     </varlistentry>
1800   </variablelist>
1801 </sect2>
1802 
1803 <sect2 id="else">
1804 <title
1805 >Se no, in altre parole: <quote
1806 >altrimenti</quote
1807 ></title>
1808   <variablelist>
1809     <varlistentry>
1810       <term
1811 >altrimenti<indexterm
1812 ><primary
1813 >altrimenti</primary
1814 ></indexterm
1815 ></term>
1816       <listitem
1817 ><para
1818 ><screen
1819 >se <link linkend="boolean-value"
1820 >booleano</link
1821 > { ... } altrimenti { ... }</screen
1822 ><userinput
1823 >altrimenti</userinput
1824 > può essere usato in aggiunta al comando di controllo dell'esecuzione <link linkend="if"
1825 ><userinput
1826 >se</userinput
1827 ></link
1828 >. Il codice tra le parentesi dopo <userinput
1829 >altrimenti</userinput
1830 > viene eseguito solo se il <link linkend="boolean-value"
1831 >valore booleano</link
1832 > vale <quote
1833 >falso</quote
1834 >. <screen>
1835 ricomincia
1836 $x = 4
1837 se $x &gt; 5 {
1838   scrivi "x è più grande di cinque!"
1839 } altrimenti {
1840   scrivi "x è più piccolo di cinque!"
1841 }
1842 </screen
1843 > L'<link linkend="comparing-operators"
1844 >operatore di confronto</link
1845 > valuta l'espressione <userinput
1846 >$x &gt; 5</userinput
1847 >. Dato che 4 non è maggiore di 5, l'espressione vale <quote
1848 >falso</quote
1849 >. Ciò significa che il codice tra le parentesi dopo <userinput
1850 >altrimenti</userinput
1851 > viene eseguito.</para
1852 ></listitem>
1853     </varlistentry>
1854   </variablelist>
1855 </sect2>
1856 
1857 <sect2 id="while">
1858 <title
1859 >Il ciclo <quote
1860 >mentre</quote
1861 ></title>
1862   <variablelist>
1863     <varlistentry>
1864       <term
1865 >mentre<indexterm
1866 ><primary
1867 >mentre</primary
1868 ></indexterm
1869 ></term>
1870       <listitem
1871 ><para
1872 ><screen
1873 >mentre <link linkend="boolean-value"
1874 >booleano</link
1875 > { ... }</screen
1876 >Il comando di controllo dell'esecuzione <userinput
1877 >mentre</userinput
1878 > è molto simile a <link linkend="if"
1879 ><userinput
1880 >se</userinput
1881 ></link
1882 >. La differenza è che <userinput
1883 >mentre</userinput
1884 > continua a ripetere (in modo ciclico) il codice tra le parentesi fino a quando il <link linkend="boolean-value"
1885 >valore booleano</link
1886 > è <quote
1887 >falso</quote
1888 >. <screen>
1889 $x = 1
1890 mentre $x &lt; 5 {
1891   avanti 10
1892   aspetta 1
1893   $x = $x + 1
1894 }
1895 </screen
1896 > Nella prima riga, <userinput
1897 >x</userinput
1898 > è impostato a 1. Nella seconda viene valutato <userinput
1899 >x &lt; 5</userinput
1900 >. Dato che la risposta a questa domanda è <quote
1901 >vero</quote
1902 >, il comando di controllo dell'esecuzione <userinput
1903 >mentre</userinput
1904 > inizia ad eseguire il codice tra le parentesi fino a quando <userinput
1905 >$x &lt; 5</userinput
1906 > dà come risultato <quote
1907 >falso</quote
1908 >. In questo caso il codice tra le parentesi verrà eseguito 4 volte, dato che ogni volta che viene eseguita la quinta riga <userinput
1909 >$x</userinput
1910 > viene incrementato di 1.</para
1911 ></listitem>
1912     </varlistentry>
1913   </variablelist>
1914 </sect2>
1915 
1916 <sect2 id="repeat">
1917 <title
1918 >Il ciclo <quote
1919 >ripeti</quote
1920 ></title>
1921   <variablelist>
1922     <varlistentry>
1923       <term
1924 >ripeti<indexterm
1925 ><primary
1926 >ripeti</primary
1927 ></indexterm
1928 ></term>
1929       <listitem
1930 ><para
1931 ><screen
1932 >ripeti <link linkend="number"
1933 >numero</link
1934 > { ... }</screen
1935 >Il comando di controllo dell'esecuzione <userinput
1936 >ripeti</userinput
1937 > è molto simile a <link linkend="while"
1938 ><userinput
1939 >mentre</userinput
1940 ></link
1941 >. La differenza è che <userinput
1942 >ripeti</userinput
1943 > continua a ripetere (iterare) il codice tra le parentesi per il numero di volte specificato.</para
1944 ></listitem>
1945     </varlistentry>
1946   </variablelist>
1947 </sect2>
1948 
1949 <sect2 id="for">
1950 <title
1951 >Il ciclo <quote
1952 >per</quote
1953 >, un ciclo contato</title>
1954   <variablelist>
1955     <varlistentry>
1956       <term
1957 >per<indexterm
1958 ><primary
1959 >per</primary
1960 ></indexterm
1961 ><indexterm
1962 ><primary
1963 >a</primary
1964 ></indexterm
1965 ><indexterm
1966 ><primary
1967 >passo</primary
1968 ></indexterm
1969 ></term>
1970       <listitem
1971 ><para
1972 ><screen
1973 >per <link linkend="assignment-of-variables"
1974 >variabile</link
1975 > = <link linkend="number"
1976 >numero</link
1977 > finoa <link linkend="number"
1978 >numero</link
1979 > { ... }</screen
1980 >Il ciclo <userinput
1981 >per</userinput
1982 > è un <quote
1983 >ciclo contato</quote
1984 >, &ie; conta per te. Il primo numero imposta nel primo ciclo la variabile al valore. Ad ogni ciclo il numero è incrementato fino a quando diventa uguale al secondo numero. <screen>
1985 per $x = 1 finoa 10 {
1986   scrivi $x * 7
1987   avanti 15
1988 }
1989 </screen
1990 > Ogni volta che viene eseguito il codice tra le parentesi, <userinput
1991 >$x</userinput
1992 > viene incrementato di 1, fino a quando <userinput
1993 >$x</userinput
1994 > raggiunge il valore di 10. Il codice tra le parentesi scrive il valore di <userinput
1995 >$x</userinput
1996 > moltiplicato per 7. Alla fine dell'esecuzione di questo programma vedrai scritta sull'area di disegno la tabellina del 7. </para>
1997      <para
1998 >Il passo predefinito di un ciclo è 1, puoi usare un altro valore con <screen
1999 >per <link linkend="assignment-of-variables"
2000 >variabile</link
2001 > = <link linkend="number"
2002 >numero</link
2003 > finoa <link linkend="number"
2004 >numero</link
2005 > passo <link linkend="number"
2006 >numero</link
2007 > { ... }</screen
2008 ></para
2009 ></listitem>
2010     </varlistentry>
2011   </variablelist>
2012 </sect2>
2013 
2014 <sect2 id="break">
2015 <title
2016 >Lasciare un ciclo</title>
2017   <variablelist>
2018     <varlistentry>
2019       <term
2020 >interrompi<indexterm
2021 ><primary
2022 >interrompi</primary
2023 ></indexterm
2024 ></term>
2025       <listitem
2026 ><para
2027 ><screen
2028 >interrompi</screen
2029 >Interrompe immediatamente il ciclo corrente, e trasferisce il controllo all'istruzione che si trova subito a dopo quel ciclo.</para
2030 ></listitem>
2031     </varlistentry>
2032   </variablelist>
2033 </sect2>
2034 
2035 <sect2 id="exit">
2036 <title
2037 >Interrompere l'esecuzione dei programmi</title>
2038   <variablelist>
2039     <varlistentry>
2040       <term
2041 >esci<indexterm
2042 ><primary
2043 >esci</primary
2044 ></indexterm
2045 ></term>
2046       <listitem
2047 ><para
2048 ><screen
2049 >esci</screen
2050 >Termina l'esecuzione del programma.</para
2051 ></listitem>
2052     </varlistentry>
2053   </variablelist>
2054 </sect2>
2055 
2056 <sect2 id="assert">
2057 <title
2058 >Controllare le asserzioni durante l'esecuzione</title>
2059   <variablelist>
2060     <varlistentry>
2061       <term
2062 >asserisci<indexterm
2063 ><primary
2064 >asserisci</primary
2065 ></indexterm
2066 ></term>
2067       <listitem
2068 ><para
2069 ><screen
2070 >asserisci <link linkend="boolean-value"
2071 >booleano</link
2072 ></screen
2073 >Può essere usato per assicurarsi della validità del programma o dei dati inseriti. <screen
2074 >$in = chiedi "Qual è il tuo anno di nascita?"
2075 # l'anno deve essere un valore maggiore di zero
2076 asserisci $in 
2077 > 0
2078 </screen
2079 ></para
2080 ></listitem>
2081     </varlistentry>
2082   </variablelist>
2083 </sect2>
2084 </sect1>
2085 
2086 
2087 <sect1 id="learn">
2088 
2089 <title
2090 >Crea i tuoi comandi con <quote
2091 >impara</quote
2092 ></title>
2093 <para
2094 ><userinput
2095 >impara</userinput
2096 ><indexterm
2097 ><primary
2098 >impara</primary
2099 ></indexterm
2100 > è un comando speciale, usato per creare comandi personalizzati. Il comando che crei può richiedere degli <glossterm linkend="input-output"
2101 >argomenti</glossterm
2102 > e restituire dei <glossterm linkend="input-output"
2103 >valori</glossterm
2104 >. Diamo un'occhiata a come creare un nuovo comando: <screen>
2105 impara cerchio $x {
2106   ripeti 36 {
2107     avanti $x
2108     sinistra 10
2109   }
2110 }
2111 </screen
2112 > Il nuovo comando è chiamato <userinput
2113 >cerchio</userinput
2114 >. <userinput
2115 >cerchio</userinput
2116 > richiede un <glossterm linkend="input-output"
2117 >argomento</glossterm
2118 > per impostare la dimensione del cerchio. <userinput
2119 >cerchio</userinput
2120 > non restituisce dei <glossterm linkend="input-output"
2121 >valori</glossterm
2122 >. Il comando <userinput
2123 >cerchio</userinput
2124 > può essere ora usato nel resto del codice come un normale comando. Guarda questo esempio: <screen
2125 >impara cerchio $X {
2126   ripeti 36 {
2127     avanti $X 
2128     sinistra 10 
2129   }
2130 }
2131 
2132 vai 200,200 
2133 cerchio 20
2134 
2135 vai 300,200 
2136 cerchio 40  
2137 </screen>
2138 </para>
2139 <para
2140 >Nell'esempio seguente viene creato un comando con un valore restituito<indexterm
2141 ><primary
2142 >restituisci</primary
2143 ></indexterm
2144 >. <screen>
2145 impara esempio $x {
2146   $r = 1
2147   per $i = 1 finoa $x {
2148     $r = $r * $i
2149   }
2150   restituisci $r
2151 }
2152 
2153 scrivi esempio 5
2154 </screen
2155 > In questo esempio viene creato un nuovo comando chiamato <userinput
2156 >esempio</userinput
2157 >. Se l'argomento di questo comando è <userinput
2158 >5</userinput
2159 >, il risultato è <userinput
2160 >5*4*3*2*1</userinput
2161 >. Usando <userinput
2162 >restituisci</userinput
2163 > viene specificato il <glossterm linkend="input-output"
2164 >valore restituito</glossterm
2165 > è l'esecuzione del comando termina.</para>
2166 <para
2167 >I comandi possono avere più di un <glossterm linkend="input-output"
2168 >argomento</glossterm
2169 >. Nell'esempio che segue, viene creato un comando che disegna un rettangolo. <screen>
2170 impara scatola $x, $y {
2171   avanti $y
2172   destra 90
2173   avanti $x
2174   destra 90
2175   avanti $y
2176   destra 90
2177   avanti $x
2178   destra 90
2179 }
2180 </screen
2181 > Adesso puoi eseguire <userinput
2182 >scatola 50, 100</userinput
2183 >, e la tartaruga disegnerà un rettangolo nell'area di disegno. </para>
2184   
2185 </sect1>
2186 
2187 </chapter>