You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-i18n/tde-i18n-it/docs/tdeedu/kturtle/programming-reference.docbook

747 lines
41 KiB

<!--Dear translator: please NEVER translate the id or anything inside the tags as they are needed in english by the application
Thanks a lot in advance.-->
<chapter id="reference">
<title>Guida di &kturtle; alla programmazione &logo;</title>
<para>Questa è la guida del &logo; di &kturtle;. In questo capitolo accenniamo brevemente a tutti i <link linkend="different-instructions">diversi tipi di istruzioni</link>. Quindi vengono spiegati uno ad uno i <link linkend="commands">comandi</link>. Poi vengono spiegati i <link linkend="containers">contenitori</link>, la <link linkend="math">matematica</link>, le <link linkend="questions">domande</link> e le <link linkend="controlling-execution">istruzioni di controllo dell'esecuzione</link>. Infine ti viene mostrato come creare i tuoi comandi con <link linkend="learn">impara</link>.</para>
<sect1 id="different-instructions">
<title>Differenti tipi di istruzioni</title>
<para>Come in qualsiasi altro linguaggio, il LOGO ha differenti tipi di parole e di simboli. Qui vengono brevemente spiegate le differenze tra i tipi.</para>
<sect2 id="command">
<title>Comandi</title>
<para>Usando i comandi tu dici alla tartaruga o a &kturtle; di fare qualcosa. Alcuni comandi richiedono argomenti, alcuni restituiscono risultati. <screen># avanti è un comando che richiede un argomento, in questo caso il numero 100:
avanti 100
</screen>
</para>
<para>Per una panoramica dettagliata di tutti i comandi che &kturtle; supporta vai <link linkend="commands">qui</link>.</para>
</sect2>
<sect2 id="number">
<title>Numeri</title>
<para>Molto probabilmente conosci già i numeri. Il modo in cui i numeri sono usati in &kturtle; non è molto differente dalla lingua parlata o dalla matematica. </para>
<para>Abbiamo i cosiddetti numeri naturali: <userinput>0</userinput>, <userinput>1</userinput>, <userinput>2</userinput>, <userinput>3</userinput>, <userinput>4</userinput>, <userinput>5</userinput>, ecc. I numeri negativi: <userinput>-1</userinput>, <userinput>-2</userinput>, <userinput>-3</userinput>, ecc. E i numeri decimali, o numeri con la virgola, per esempio: <userinput>0.1</userinput>, <userinput>3.14</userinput>, <userinput>33.3333</userinput>, <userinput>-5.05</userinput>, <userinput>-1.0</userinput>. </para>
<para>I numeri possono essere usati in <link linkend="math">calcoli matematici</link> e in <link linkend="questions">domande</link>. Possono anche essere inseriti in <link linkend="containers">contenitori</link>.</para>
<para>I numeri sono <glossterm>evidenziati</glossterm> con il blu nell'<link linkend="the-code-editor">editor del codice</link>.</para>
</sect2>
<sect2 id="string">
<title>Stringhe</title>
<para>Prima un esempio: <screen>
scrivi "Ciao, sono una stringa."
</screen> In questo esempio <userinput>scrivi</userinput> è un comando dove <userinput>"Ciao, sono una stringa."</userinput> è una stringa. Le stringhe iniziano e finiscono con il carattere <userinput>"</userinput>, e grazie a questi caratteri &kturtle; sa che è una stringa.</para>
<para>Le stringhe possono essere inserite in <link linkend="containers">contenitori</link>. Tuttavia non possono essere usate in <link linkend="math">calcoli matematici</link> e <link linkend="questions">domande</link>.</para>
<para>Le stringhe sono <glossterm>evidenziate</glossterm> con il rosso scuro nell'<link linkend="the-code-editor">editor del codice</link>.</para>
</sect2>
<sect2 id="name">
<title>Nomi</title>
<para>Quando usi il linguaggio di programmazione &logo; crei nuove cose. Se scrivi un programma spesso avrai bisogno di <link linkend="containers">contenitori</link> e, in alcuni casi, di <link linkend="learn">impara</link> per creare nuovi comandi. Quando crei un <link linkend="containers">contenitore</link> o un nuovo comando con <link linkend="learn">impara</link> dovrai specificare un nome.</para>
<para>Puoi scegliere qualsiasi nome, a meno che non abbia già un significato. Per esempio non puoi chiamare <link linkend="forward">avanti</link> un contenitore, dato che quel nome è già usato per un comando, e per questo ha un significato. <screen>
# qui avanti è usato come contenitore, ma ha già un significato
# così questa riga genererà un errore:
avanti = 20
# questa funziona:
avanti 20
</screen> I nomi possono contenere solo lettere, numeri e trattini bassi (_). Devono tuttavia iniziare con una lettera. </para>
<para>Per una spiegazione più esauriente e per vedere più esempi leggi la documentazione sui <link linkend="containers">contenitori</link> e sul comando <link linkend="learn">impara</link>. </para>
</sect2>
<sect2 id="assignment">
<title>Assegnamenti</title>
<para>Un assegnamento viene effettuato con il simbolo <userinput>=</userinput>. Nei linguaggi di programmazione è meglio leggere il singolo <userinput>=</userinput> non come "uguale" ma come "diventa". La parola "uguale" è più appropriata per <userinput>==</userinput> che è una <link linkend="questions">domanda</link>.</para>
<para>Gli assegnamenti sono usati generalmente per due motivi, (1) per aggiungere <link linkend="containers">contenitori</link> e (2) per modificare il contenuto di un contenitore. Per esempio: <screen>x = 10
# il contenitore x ora contiene il numero 10
W = "La mia età è: "
# il contenitore W ora contiene la stringa "La mia età è: "
# questa riga scrive il contenuto dei contenitori 'W' e 'x' sull'area di disegno
scrivi W + x
</screen>
</para>
<para>Per vedere più esempi leggi la sezioni che spiega i <link linkend="containers">contenitori</link>.</para>
</sect2>
<sect2 id="math-symbols">
<title>Simboli matematici</title>
<para>&kturtle; supporta tutti i simboli matematici base: addizione (<userinput>+</userinput>), sottrazione (<userinput>-</userinput>), moltiplicazione (<userinput>*</userinput>), divisione (<userinput>/</userinput>) e le parentesi <userinput>(</userinput> e <userinput>)</userinput>.</para>
<para>Per una spiegazione più esauriente e per vedere più esempi leggi la sezione sulla <link linkend="math">matematica</link>.</para>
</sect2>
<sect2 id="question">
<title>Domande</title>
<para>Possiamo chiedere semplici domande la cui risposta sarà "vero" o "falso".</para>
<para>L'uso delle domande è ampiamente spiegato nella sezione sulle <link linkend="questions">domande</link>.</para>
</sect2>
<sect2 id="questions-glue">
<title>I "collanti" delle domande</title>
<para>Le domande posso essere unite assieme con i cosiddetti "collanti delle domande". Le parole "collanti" sono <userinput>e</userinput> <userinput>o</userinput>, e un "collante" speciale: <userinput>non</userinput>.</para>
<para>L'uso dei "collanti" delle domande è spiegato nella sezione <link linkend="question-glue">I "collanti" delle domande</link>.</para>
</sect2>
<sect2 id="comment">
<title>Commenti</title>
<para>I commenti sono linee che iniziano con <userinput>#</userinput>. Per esempio: <screen>
# questo è un commento!
scrivi "questo non è un commento"
# la linea precedente non è un commento, ma la linea successiva sì:
# scrivi "questo non è un commento"
</screen> Noi possiamo aggiungere commenti al codice, affinché lo leggiamo noi stessi o lo leggano altri. I commenti sono usati per: (1) aggiungere una piccola descrizione al programma, (2) spiegare come funziona un pezzo di codice nel caso sia un po' complesso, e (3) per "commentare via" linee di codice che dovrebbero essere (temporaneamente) ignorate (guarda l'ultima linea dell'esempio).</para>
<para>Le linee commentate sono <glossterm>evidenziate</glossterm> con il giallo scuro nell'<link linkend="the-code-editor">editor del codice</link>.</para>
</sect2>
</sect1>
<sect1 id="commands">
<title>Comandi</title>
<para>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 che possono essere usati in &kturtle;. Nota che tutti i comandi predefiniti di cui discutiamo qui sono <glossterm>evidenziati</glossterm> con il verde scuro nell'<link linkend="the-code-editor">editor del codice</link>, ciò può aiutarti a distinguerli.</para>
<sect2 id="moving-the-turtle">
<title>Muovere la tartaruga</title>
<para>Ci sono vari comandi per muovere la tartaruga sullo schermo.</para>
<sect3 id="forward">
<title>avanti (av)</title>
<variablelist>
<varlistentry>
<term>avanti</term>
<listitem><para><screen>avanti X</screen>
<userinput>avanti</userinput> muove la tartaruga avanti di X pixel. Quando la penna è giù la tartaruga lascerà un tratto. <userinput>avanti</userinput> può essere abbreviato in <userinput>av</userinput></para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="backward">
<title>indietro (in)</title>
<variablelist>
<varlistentry>
<term>indietro</term>
<listitem><para><screen>indietro X</screen>
<userinput>indietro</userinput> muove la tartaruga indietro di X pixel. Quando la penna è giù la tartaruga lascerà un tratto. <userinput>indietro</userinput> può essere abbreviato in <userinput>in</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="turnleft">
<title>sinistra (sx)</title>
<variablelist>
<varlistentry>
<term>sinistra</term>
<listitem><para><screen>sinistra X</screen>
<userinput>sinistra</userinput> comanda alla tartaruga di girare X gradi a sinistra. <userinput>sinistra</userinput> può essere abbreviato in <userinput>sx</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="turnright">
<title>destra (dx)</title>
<variablelist>
<varlistentry>
<term>destra</term>
<listitem><para><screen>destra X</screen>
<userinput>destra</userinput> comanda alla tartaruga di girare X gradi a destra. <userinput>destra</userinput> può essere abbreviato in <userinput>dx</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="direction">
<title>direzione (dir)</title>
<variablelist>
<varlistentry>
<term>direzione</term>
<listitem><para><screen>direzione X</screen>
<userinput>direzione</userinput> imposta la direzione della tartaruga a X gradi partendo da zero, e così non è relativo alla precedente direzione della tartaruga. <userinput>direzione</userinput> può essere abbreviato in <userinput>dir</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="center">
<title>centro</title>
<variablelist>
<varlistentry>
<term>centro</term>
<listitem><para><screen>centro</screen>
<userinput>centro</userinput> muove la tartaruga al centro dell'area di disegno.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="go">
<title>vai</title>
<variablelist>
<varlistentry>
<term>vai</term>
<listitem><para><screen>vai X,Y</screen>
<userinput>vai</userinput> comanda alla tartaruga di andare in un certo punto dell'area di disegno. Questo punto dista X <glossterm linkend="pixels">pixel</glossterm> da sinistra e Y <glossterm linkend="pixels">pixel</glossterm> dall'alto dell'area di disegno. Nota che usando il comando <userinput>vai</userinput> la tartaruga non disegnerà una linea.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="gox">
<title>vaix</title>
<variablelist>
<varlistentry>
<term>vaix</term>
<listitem><para><screen>vaix X</screen>
<userinput>vaix</userinput> usando questo comando la tartaruga si muoverà a X <glossterm linkend="pixels">pixel</glossterm> dalla sinistra dell'area di disegno mantenendo la sua altezza.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="goy">
<title>vaiy</title>
<variablelist>
<varlistentry>
<term>vaiy</term>
<listitem><para><screen>vaiy Y</screen>
<userinput>vaiy</userinput> usando questo comando la tartaruga si muoverà a Y <glossterm linkend="pixels">pixel</glossterm> dall'alto dell'area di disegno mantenendosi alla stessa distanza dal bordo sinistro dell'area di disegno.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="pen">
<title>La tartaruga ha una penna</title>
<para>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 questi comandi.</para>
<sect3 id="penup">
<title>pennasu (ps)</title>
<variablelist>
<varlistentry>
<term>pennasu</term>
<listitem><para><screen>pennasu</screen>
<userinput>pennasu</userinput> alza la penna dall'area di disegno. Quando la penna è <quote>su</quote> non sarà disegnata alcuna linea quando la tartaruga si muove. Vedi anche <userinput>pennagiu</userinput>. <userinput>pennasu</userinput> può essere abbreviato in <userinput>ps</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="pendown">
<title>pennagiu (pg)</title>
<variablelist>
<varlistentry>
<term>pennagiu</term>
<listitem><para><screen>pennagiu</screen>
<userinput>pennagiu</userinput> abbassa la penna sull'area di disegno. Quando la penna è <quote>giù</quote> sull'area di disegno sarà disegnata una linea quando la tartaruga si muove. Vedi anche <userinput>pennasu</userinput>. <userinput>pennagiu</userinput> può essere abbreviato in <userinput>pg</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="setpenwidth">
<title>spessorepenna (sp)</title>
<variablelist>
<varlistentry>
<term>spessorepenna</term>
<listitem><para><screen>spessorepenna X</screen>
<userinput>spessorepenna</userinput> imposta lo spessore della penna (lo spessore della linea) a X <glossterm linkend="pixels">pixel</glossterm>. <userinput>spessorepenna</userinput> può essere abbreviato in <userinput>sp</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="setfgcolor">
<title>colorepenna (cp)</title>
<variablelist>
<varlistentry>
<term>colorepenna</term>
<listitem><para><screen>colorepenna R,G,B</screen>
<userinput>colorepenna</userinput> imposta il colore della penna. <userinput>colorepenna</userinput> richiede una <glossterm linkend="rgb">combinazione RGB</glossterm> come argomento. <userinput>colorepenna</userinput> può essere abbreviato in <userinput>cp</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="canvas">
<title>Comandi per controllare l'area di disegno</title>
<para>Ci sono vari comandi per controllare l'area di disegno.</para>
<sect3 id="resizecanvas">
<title>dimensionesfondo (ds)</title>
<variablelist>
<varlistentry>
<term>dimensionesfondo</term>
<listitem><para><screen>dimensionesfondo X,Y</screen>
Con il comando <userinput>dimensionesfondo</userinput> puoi impostare la dimensione dell'area di disegno. Richiede X e Y come argomenti, dove X è la nuova larghezza dell'area di disegno in <glossterm linkend="pixels">pixel</glossterm>, e Y è la nuova altezza dell'area di disegno in <glossterm linkend="pixels">pixel</glossterm>. <userinput>dimensionesfondo</userinput> può essere abbreviato in <userinput>ds</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="setbgcolor">
<title>coloresfondo (cs)</title>
<variablelist>
<varlistentry>
<term>coloresfondo</term>
<listitem><para><screen>coloresfondo R,G,B</screen>
<userinput>coloresfondo</userinput> imposta il colore dell'area di disegno. <userinput>coloresfondo</userinput> richiede una <glossterm linkend="rgb">combinazione RGB</glossterm> come argomento. <userinput>coloresfondo</userinput> può essere abbreviato in <userinput>cs</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="wrapon">
<title>attorno</title>
<variablelist>
<varlistentry>
<term>attorno</term>
<listitem><para><screen>attorno</screen>
Con il comando <userinput>attorno</userinput> puoi attivare l'<glossterm linkend="wrapping">avvolgimento</glossterm> per l'area di disegno. Consulta il glossario se vuoi sapere cosa è <glossterm linkend="wrapping">l'<quote>avvolgimento</quote></glossterm>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="wrapoff">
<title>muro</title>
<variablelist>
<varlistentry>
<term>muro</term>
<listitem><para><screen>muro</screen>
Con il comando <userinput>muro</userinput> puoi disattivare l'<glossterm linkend="wrapping">avvolgimento</glossterm> per l'area di disegno: ciò significa che la tartaruga può muoversi al di fuori dell'area di disegno e <quote>perdersi</quote>. Consulta il glossario se vuoi sapere cosa è <glossterm linkend="wrapping">l'<quote>avvolgimento</quote></glossterm>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="clean">
<title>Comandi per fare pulizia</title>
<para>Ci sono due comandi per pulire l'area di disegno dopo che hai fatto confusione.</para>
<sect3 id="clear">
<title>pulisci (cls)</title>
<variablelist>
<varlistentry>
<term>pulisci</term>
<listitem><para><screen>pulisci</screen>
Con <userinput>pulisci</userinput> 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. <userinput>pulisci</userinput> può essere abbreviato in <userinput>cls</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="reset">
<title>ricomincia</title>
<variablelist>
<varlistentry>
<term>ricomincia</term>
<listitem><para><screen>ricomincia</screen>
<userinput>ricomincia</userinput> pulisce molto più accuratamente del comando <userinput>pulisci</userinput>. Dopo un comando <userinput>ricomincia</userinput> tutto ritorna come era quando hai avviato &kturtle;. La tartaruga è posizionata al centro dello schermo, il colore dell'area di disegno è bianco e la tartaruga disegna linee nere sull'area di disegno.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="sprites">
<title>La tartaruga è un folletto</title>
<para>Prima una breve spiegazione di cosa sono i folletti: i folletti sono piccoli disegni che possono essere mossi in giro per lo schermo, come 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">folletti</glossterm>. </para>
<para>Di seguito troverai una descrizione completa di tutti i comandi che lavorano con i folletti.</para>
<para>[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>
<sect3 id="spriteshow">
<title>mostra</title>
<variablelist>
<varlistentry>
<term>mostra (ms)</term>
<listitem><para><screen>mostra</screen>
<userinput>mostra</userinput> rende nuovamente visibile la tartaruga dopo che è stata nascosta. <userinput>mostra</userinput> può essere abbreviato in <userinput>ms</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="spritehide">
<title>nascondi (ns)</title>
<variablelist>
<varlistentry>
<term>nascondi</term>
<listitem><para><screen>nascondi</screen>
<userinput>nascondi</userinput> nasconde la tartaruga. Ciò può essere usato se non conviene che la tartaruga appaia nel tuo disegno. <userinput>nascondi</userinput> può essere abbreviato in <userinput>ns</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="writing">
<title>Possono le tartarughe scrivere del testo?</title>
<para>La risposta è: <quote>sì</quote>. La tartaruga può scrivere: scrive tutto quello che tu le comandi di scrivere.</para>
<sect3 id="print">
<title>scrivi</title>
<variablelist>
<varlistentry>
<term>scrivi</term>
<listitem><para><screen>scrivi X</screen>
Il comando <userinput>scrivi</userinput> è usato per comandare alla tartaruga di scrivere qualcosa sull'area di disegno. <userinput>scrivi</userinput> accetta numeri e stringhe come parametri. Puoi scrivere vari numeri e stringhe usando il simbolo <quote>+</quote>. Guarda qui un piccolo esempio: <screen>anno = 2003
autore = "Cies"
scrivi autore + " ha iniziato il progetto KTurtle nel " + anno + " e ancora si diverte a lavorarci!"
</screen>
</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="fontsize">
<title>dimensionecarattere</title>
<variablelist>
<varlistentry>
<term>dimensionecarattere</term>
<listitem><para><screen>dimensionecarattere X</screen>
<userinput>dimensionecarattere</userinput> imposta la dimensione del tipo di carattere usato dal comando <userinput>scrivi</userinput>. <userinput>dimensionecarattere</userinput> richiede un argomento che dovrebbe essere un numero. La dimensione è impostata in <glossterm linkend="pixels">pixel</glossterm>.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="random">
<title>Un comando che lancia dadi per te</title>
<para>C'è comando che lancia un dado per te, ed è chiamato <userinput>casuale</userinput>, ed è molto utile per avere "risultati inattesi".</para>
<variablelist>
<varlistentry>
<term>casuale</term>
<listitem><para><screen>casuale X,Y</screen>
<userinput>casuale</userinput> è un comando che richiede parametri e restituisce un valore. Come parametri 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>
ripeti 500 [
x = casuale 1,20
avanti x
sinistra 10 - x
]
</screen> Usando il comando <userinput>casuale</userinput> puoi aggiungere un po' di caos al tuo programma.</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="dialogs">
<title>Inserire dati e visualizzare messaggi con finestre di dialogo</title>
<para>Una finestra di dialogo è una piccola finestra a comparsa che mostra un messaggio o chiede di inserire qualcosa. &kturtle; ha due comandi per le finestre di dialogo, chiamati: <userinput>messaggio</userinput> e <userinput>finestrainserimento</userinput></para>
<sect3 id="message">
<title>messaggio</title>
<variablelist>
<varlistentry>
<term>messaggio</term>
<listitem><para><screen>messaggio X</screen>
Il comando <userinput>messaggio</userinput> richiede una <link linkend="string">stringa</link> come argomento. Mostra una finestra a comparsa che contiene il testo della <link linkend="string">stringa</link>. <screen>anno = 2003
autore = "Cies"
scrivi autore + " ha iniziato il progetto KTurtle nel " + anno + " e ancora si diverte a lavorarci!"
</screen>
</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="inputwindow">
<title>finestrainserimento</title>
<variablelist>
<varlistentry>
<term>finestrainserimento</term>
<listitem><para><screen>finestrainserimento X</screen>
<userinput>finestrainserimento</userinput> richiede una <link linkend="string">stringa</link> come argomento. Mostra una finestra a comparsa che contiene il testo della stringa, allo stesso modo di <link linkend="message">messaggio</link>. Ma in più vi è un campo di inserimento nella finestra di dialogo. Attraverso questo campo di inserimento l'utente può inserire un <link linkend="number">numero</link> o una <link linkend="string">stringa</link> che può essere memorizzata in un <link linkend="containers">contenitore</link>. Per esempio <screen>
in = finestrainserimento "Qual è la tua età?"
diff = 2003 - in
scrivi "Ad un certo punto del 2003 avevi " + diff + " anni."
</screen> Quando un utente annulla la finestra di dialogo, o non inserisce niente, il <link linkend="containers">contenitore</link> è svuotato.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
</sect1>
<sect1 id="containers">
<title>Contenitori</title>
<para>I contenitori sono lettere o parole che possono essere usate dal programmatore per memorizzare un numero o del testo. I contenitori che contengono un numero sono chiamati <link linkend="variables">variabili</link>, quelli che possono contenere del testo sono chiamati <link linkend="strings">stringhe</link>.</para>
<para>I contenitori che non sono usati non contengono nulla. Un esempio: <screen>
scrivi N
</screen> Questo non scriverà niente. Se proviamo ad eseguire dei <link linkend="math">calcoli matematici</link> con contenitori vuoti otterremo degli errori. </para>
<sect2 id="variables">
<title>Variabili: contenitori numerici</title>
<para>Iniziamo con un esempio: <screen>
x = 3
scrivi x
</screen> Nella prima linea la lettera <userinput>x</userinput> è trasformata in una variabile (contenitore numerico). Come vedi il valore della variabile <userinput>x</userinput> è impostato a 3. Nella seconda linea viene stampato a video il valore.</para>
<para>Nota che se volevamo scrivere una <quote>x</quote> avremmo dovuto scrivere <screen>scrivi "x"
</screen>
</para>
<para>Quello era semplice, vediamo ora un esempio un po' più complesso: <screen>
A = 2004
B = 25
C = A + B
# il comando seguente scrive "2029"
scrivi C
indietro 30
# il comando seguente scrive "2004 più 25"
scrivi A + " più " + B
indietro 30
# il comando seguente scrive "1979"
scrivi A - B
</screen> nelle prime due righe le variabili <userinput>A</userinput> e <userinput>B</userinput> sono impostare a 2004 e 25. Nella terza riga la variabile <userinput>C</userinput> è impostata ad <userinput>A + B</userinput>, che è 2029. Il resto dell'esempio è costituito da 3 comandi <userinput>scrivi</userinput> con <userinput>indietro 30</userinput> in mezzo. Il comando <userinput>indietro 30</userinput> ci assicura che ogni testo è scritto in una nuova riga. In questo esempio puoi anche vedere che le variabili possono essere usate nei <link linkend="math">calcoli matematici</link>.</para>
</sect2>
<sect2 id="strings">
<title>Contenitori che contengono testo (stringhe)</title>
<para>Nel codice della programmazione il testo regolare di solito inizia e finisce con le virgolette doppie. Come abbiamo già visto: <screen>
scrivi "Ciao programmatore!"
</screen> Il testo regolare è delimitato dalle virgolette doppie. Chiamiamo questi pezzi di testo regolare <link linkend="strings">stringhe</link>.</para>
<para>Le stringhe possono essere memorizzate in <link linkend="containers">contenitori</link> allo stesso modo dei <link linkend="number">numeri</link>. Le stringhe sono molto simili alle variabili. La più grande differenza è che le stringhe contengono testo invece che numeri. Per questo motivo le stringhe non possono essere usate in <link linkend="math">calcoli matematici</link> e <link linkend="questions">domande</link>. Un esempio di uso di stringhe: <screen>
x = "Ciao "
nome = finestrainserimento "Inserisci il tuo nome..."
scrivi x + nome + ", come va?"
</screen> Nella prima riga la stringa <userinput>x</userinput> è impostata a <quote>Ciao </quote>. Nella seconda riga la stringa <userinput>nome</userinput> è impostata al risultato del comando <userinput>finestrainserimento</userinput>. Nella terza riga il programma scrive nell'area di disegno una stringa composta da tre stringhe.</para>
<para>Questo programma ti chiede di inserire il tuo nome. Quando inserisci, per esempio, il nome <quote>Paolo</quote>, il programma scrive <quote>Ciao Paolo, come va?</quote>. Nota che il segno più (+) è l'unico segno matematico che puoi usare con le stringhe.</para>
</sect2>
</sect1>
<sect1 id="math">
<title>Può la tartaruga eseguire calcoli?</title>
<para>Sì, &kturtle; farà la matematica per te. Puoi aggiungere (+), sottrarre (-), moltiplicare (*) e dividere (/). Ecco qui un esempio nel quale usiamo tutte le operazioni: <screen>
a = 20 - 5
b = 15 * 2
c = 30 / 30
d = 1 + 1
scrivi "a: "+a+", b: "+b+", c: "+c+", d: "+d
</screen> Lo sai che valori hanno a, b, c e d? Nota l'uso del simbolo di <link linkend="assignment">assegnamento</link> <userinput>=</userinput>.</para>
<para>Se vuoi eseguire un semplice calcolo puoi scrivere qualcosa di simile a questo: <screen>scrivi 2004-12
</screen></para>
<para>Ora un esempio con le parentesi: <screen>
scrivi ( ( 20 - 5 ) * 2 / 30 ) + 1
</screen> Ciò che si trova dentro le parentesi sarà calcolato prima. In questo esempio, sarà calcolato 20-5, quindi moltiplicato per 2, diviso per 30, e viene infine aggiunto 1 (avendo 2 come risultato).</para>
</sect1>
<sect1 id="questions">
<title>Chiedere domande, avere risposte...</title>
<para><link linkend="if"><userinput>se</userinput></link> e <link linkend="while"><userinput>mentre</userinput></link> sono <link linkend="controlling-execution">comandi di controllo dell'esecuzione</link> di cui parleremo nella prossima sezione. In questa sezione usiamo il comando <link linkend="if"><userinput>se</userinput></link> per spiegare le domande.</para>
<sect2 id="q">
<title>Domande</title>
<para>Un semplice esempio di domanda: <screen>
x = 6
se x &gt; 5 [
scrivi "ciao"
]
</screen> In questo esempio la domanda è costituita da <userinput>x &gt; 5</userinput>. Se la risposta a questa domanda è "vero", sarà eseguito il codice tra le parentesi quadre. Le domande sono una parte molto importante della programmazione e sono spesso usate insieme ai <link linkend="controlling-execution">comandi di controllo dell'esecuzione</link>, come <link linkend="if"><userinput>se</userinput></link>. Tutti i numeri e le <link linkend="variables">variabili</link> (contenitori numerici) possono essere confrontati l'un l'altro con le domande.</para>
<para>Qui vi sono tutte le possibili domande: <table>
<title>Tipi di domande</title>
<tgroup cols="3">
<tbody>
<row>
<entry><userinput>a == b</userinput></entry>
<entry>uguale</entry>
<entry>la risposta è <quote>vero</quote> se <userinput>a</userinput> è uguale a <userinput>b</userinput></entry>
</row>
<row>
<entry><userinput>a != b</userinput></entry>
<entry>non uguale</entry>
<entry>la risposta è <quote>vero</quote> se <userinput>a</userinput> non è uguale a <userinput>b</userinput></entry>
</row>
<row>
<entry><userinput>a &gt; b</userinput></entry>
<entry>maggiore</entry>
<entry>la risposta è <quote>vero</quote> se <userinput>a</userinput> è maggiore di <userinput>b</userinput></entry>
</row>
<row>
<entry><userinput>a &lt; b</userinput></entry>
<entry>minore</entry>
<entry>la risposta è <quote>vero</quote> se <userinput>a</userinput> è minore di <userinput>b</userinput></entry>
</row>
<row>
<entry><userinput>a &gt;= b</userinput></entry>
<entry>maggiore o uguale</entry>
<entry>la risposta è <quote>vero</quote> se <userinput>a</userinput> è maggiore o uguale a <userinput>b</userinput></entry>
</row>
<row>
<entry><userinput>a &lt;= b</userinput></entry>
<entry>minore o uguale</entry>
<entry>la risposta è <quote>vero</quote> se <userinput>a</userinput> è minore o uguale a <userinput>b</userinput></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>Le domande sono <glossterm>evidenziate</glossterm> con il blu chiaro nell'<link linkend="the-code-editor">editor del codice</link>.</para>
</sect2>
<sect2 id="question-glue">
<title>I "collanti" delle domande</title>
<para>I "collanti" delle domande ci permettono di unire più domande in una domanda più grande. <screen>
a = 1
b = 5
se (a &lt; 5) e (b == 5) [
scrivi "ciao"
]
</screen> In questo esempio è usato il "collante" <userinput>e</userinput> per unire insieme due domande (<userinput>a &lt; 5</userinput>, <userinput>b == 5</userinput>). Se un lato di <userinput>e</userinput> avrà come risposta <quote>falso</quote>, l'intera domanda avrà come risposta <quote>falso</quote>, poiché con il "collante" <userinput>e</userinput> entrambi i lati devono essere <quote>vero</quote> per poter rispondere <quote>vero</quote>. Non ti dimenticare di usare le parentesi attorno ad ogni domanda!</para>
<para>Qui vi è una descrizione schematica; sotto segue una spiegazione più dettagliata: <table>
<title>I "collanti" delle domande</title>
<tgroup cols="2">
<tbody>
<row>
<entry><userinput>e</userinput></entry>
<entry>Entrambi i lati devono essere "vero" per poter rispondere "vero"</entry>
</row>
<row>
<entry><userinput>o</userinput></entry>
<entry>Se uno dei lati è "vero" la risposta è "vero"</entry>
</row>
<row>
<entry><userinput>non</userinput></entry>
<entry>Caso speciale: funziona solo con una domanda! Cambia "vero" in "falso" e "falso" in "vero".</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>I "collanti" delle domande sono <glossterm>evidenziati</glossterm> con il viola nell'<link linkend="the-code-editor">editor del codice</link>.</para>
<sect3 id="and">
<title>e</title>
<para>Quando due domande sono incollate l'un l'altra con <userinput>e</userinput>, entrambi i lati di <userinput>e</userinput> devono essere "vero" per poter dare come risultato "vero". Un esempio: <screen>
a = 1
b = 5
se ((a &lt; 10) e (b == 5)) e (a &lt; b) [
scrivi "ciao"
]
</screen> In questo esempio puoi vedere una domanda incollata, unita ad un'altra domanda.</para>
</sect3>
<sect3 id="or">
<title>o</title>
<para>Se una delle due domande unite assieme con <userinput>o</userinput> è "vera", il risultato sarà "vero". Un esempio: <screen>
a = 1
b = 5
se ((a &lt; 10) o (b == 10)) o (a == 0) [
scrivi "ciao"
]
</screen> In questo esempio puoi vedere una domanda incollata, unita ad un'altra domanda.</para>
</sect3>
<sect3 id="not">
<title>non</title>
<para><userinput>non</userinput> è uno speciale "collante" delle domande poiché funziona solo con una domanda alla volta. <userinput>non</userinput> cambia "vero" in "falso" e "falso" in "vero". Un esempio: <screen>
a = 1
b = 5
se non ((a &lt; 10) e (b == 5)) [
scrivi "ciao"
]
altrimenti
[
scrivi "non ciao ;-)"
]
</screen> In questo esempio la domanda "incollata" è "vera", tuttavia <userinput>non</userinput> la cambia in "falsa". Così alla fine viene scritto <userinput>"non ciao ;-)"</userinput> sull'<link linkend="the-canvas">area di disegno</link>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="controlling-execution">
<title>Controllare l'esecuzione</title>
<para>I comandi di controllo dell'esecuzione ti permettono &mdash; come dicono il loro nomi &mdash; di controllare l'esecuzione.</para>
<para>I comandi di controllo dell'esecuzione sono <glossterm>evidenziati</glossterm> di verde scuro con un tipo di carattere grassetto. Le parentesi quadre usate principalmente con i comandi di controllo dell'esecuzione e sono <glossterm>evidenziate</glossterm> di verde chiaro.</para>
<sect2 id="wait">
<title>Far aspettare la tartaruga</title>
<para>Se hai programmato in &kturtle; devi aver notato che la tartaruga può essere molto veloce a disegnare. Questo comando fa sì che la tartaruga attenda per un tempo specificato.</para>
<variablelist>
<varlistentry>
<term>attendi</term>
<listitem><para><screen>attendi X</screen>
<userinput>attendi</userinput> fa sì che la tartaruga attenda X secondi. <screen>
ripeti 36 [
avanti 5
destra 10
attendi 0.5
]
</screen> Questo codice disegna un cerchio, ma la tartaruga attenderà mezzo secondo dopo ogni passo. Ciò da' l'impressione di una tartaruga che si muove lentamente.</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="if">
<title>Eseguire "se"</title>
<variablelist>
<varlistentry>
<term>se</term>
<listitem><para><screen>se <link linkend="questions">domanda</link> [ ... ]</screen>
Il codice che si trova tra le parentesi quadre sarà eseguito solo <userinput>se</userinput> la risposta alla <link linkend="questions">domanda</link> è <quote>vero</quote>. Per maggiori informazioni leggi sulle <link linkend="questions">domande</link> nella <link linkend="questions">sezione sulle domande</link>. <screen>
x = 6
se x &gt; 5 [
scrivi "x è più grande di cinque!"
]
</screen> Nella prima linea <userinput>x</userinput> è impostato a 6. Nella seconda linea è chiesta la <link linkend="questions">domanda</link> <userinput>x &gt; 5</userinput>. Dato che la risposta a questa domanda è <quote>vero</quote> il comando di controllo dell'esecuzione <userinput>se</userinput> permetterà che venga eseguito il codice tra le parentesi quadre</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="while">
<title>Il ciclo "mentre"</title>
<variablelist>
<varlistentry>
<term>mentre</term>
<listitem><para><screen>mentre <link linkend="questions">domanda</link> [ ... ]</screen>
Il comando di controllo dell'esecuzione <userinput>mentre</userinput> è molto simile a <link linkend="if"><userinput>se</userinput></link>. La differenza è che <userinput>mentre</userinput> continua a ripetere (in modo ciclico) il codice tra le parentesi quadre fino a quando la risposta alla <link linkend="questions">domanda</link> è <quote>falso</quote>. <screen>
x = 1
mentre x &lt; 5 [
avanti 10
attendi 1
x = x + 1
]
</screen> Nella prima linea <userinput>x</userinput> è impostato a 1. Nella seconda linea viene chiesta la <link linkend="questions">domanda</link> <userinput>x &lt; 5</userinput>. Dato che la risposta a questa domanda è <quote>vero</quote> il comando di controllo dell'esecuzione <userinput>mentre</userinput> inizia ad eseguire il codice tra le parentesi quadre fino a quando la risposta alla <link linkend="questions">domanda</link> è <quote>falso</quote>. In questo caso il codice tra le parentesi quadre sarà eseguito 4 volte, dato che ogni volta che viene eseguita la quinta linea <userinput>x</userinput> è incrementato di 1.</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="else">
<title>Se no, in altre parole: "altrimenti"</title>
<variablelist>
<varlistentry>
<term>altrimenti</term>
<listitem><para><screen>se domanda [ ... ] altrimenti [ ... ]</screen>
<userinput>altrimenti</userinput> può essere usato in aggiunta al comando di controllo dell'esecuzione <link linkend="if"><userinput>se</userinput></link>. Il codice tra le parentesi quadre dopo <userinput>altrimenti</userinput> è eseguito solo se la risposta alla <link linkend="questions">domanda</link> chiesta è <quote>falso</quote>. <screen>
ricomincia
x = 4
se x &gt; 5 [
scrivi "x è più grande di cinque!"
]
altrimenti
[
scrivi "x è più piccolo di cinque!"
]
</screen> La <link linkend="questions">domanda</link> chiede se <userinput>x</userinput> è più grande di 5. Dato che <userinput>x</userinput> è stato impostato a 4 nella prima linea, la risposta alla domanda è <quote>falso</quote>. Ciò significa che viene eseguito il codice tra le parentesi dopo <userinput>altrimenti</userinput>.</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="for">
<title>Il ciclo "per", un ciclo <quote>contato</quote></title>
<variablelist>
<varlistentry>
<term>per</term>
<listitem><para><screen>per <userinput>punto di partenza</userinput> finoa <userinput>punto di arrivo</userinput> [ ... ]</screen>
Il ciclo <userinput>per</userinput> è un <quote>ciclo contato</quote>, &ie; conta per te. <screen>
per x = 1 finoa 10 [
scrivi x * 7
avanti 15
]
</screen> Ogni volta che viene eseguito il codice tra le parentesi quadre, <userinput>x</userinput> viene incrementato di 1, fino a quando <userinput>x</userinput> raggiunge il valore di 10. Il codice tra le parentesi quadre scrive il valore di <userinput>x</userinput> moltiplicato per 7. Alla fine dell'esecuzione di questo programma vedrai scritta sull'area di disegno la tabellina del 7.</para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<sect1 id="learn">
<title>Crea i tuoi comandi con <quote>impara</quote></title>
<para><userinput>impara</userinput> è un comando molto particolare, dato che è usato per creare comandi personalizzati. Il comando che crei può richiedere <glossterm linkend="input-output">parametri</glossterm> e restituire <glossterm linkend="input-output">valori</glossterm>. Diamo un'occhiata a come creare un nuovo comando: <screen>
impara cerchio x [
ripeti 36 [
avanti x
sinistra 10
]
]
</screen> Il nuovo comando è chiamato <userinput>cerchio</userinput>. <userinput>cerchio</userinput> richiede un <glossterm linkend="input-output">parametro</glossterm>, un numero, per impostare la dimensione del cerchio. <userinput>cerchio</userinput> non restituisce <glossterm linkend="input-output">valori</glossterm>. Il comando <userinput>cerchio</userinput> può essere ora usato nel resto del codice come un normale comando. Guarda questo esempio: <screen>impara cerchio X [
ripeti 36 [
avanti X
sinistra 10
]
]
vai 30,30
cerchio 20
vai 40,40
cerchio 50
</screen>
</para>
<para>Nell'esempio seguente viene creato un comando con un valore restituito. <screen>
ricomincia
impara moltiplicatoPerSeStesso n [
r = n * 1
r = n * n
restituisci r
]
i = finestrainserimento "Inserisci un numero e premi OK"
scrivi i + " moltiplicato per se stesso è: " + moltiplicatoPerSeStesso i
</screen> In questo esempio viene creato un nuovo comando chiamato <userinput>moltiplicatoPerSeStesso</userinput>. Il parametro di questo comando è moltiplicato per se stesso e quindi restituito, usando il comando <anchor id="return"/><userinput>restituisci</userinput>. Il comando <userinput>restituisci</userinput> è il modo per restituire un valore da una funzione che hai creato. </para>
</sect1>
</chapter>