*********************************************************************

                            LOGO v1.0

                       by MICHELE BERIONNE

                      Roma, 10 Gennaio 1996

*********************************************************************


INDICE:
     Introduzione
     Shareware?? S grazie!!
     Ringraziamenti
     Presentazione
     Elenco dei comandi del Logo
     Elenco dei comandi usabili solo nei programmi e nelle procedure
     Variabili
     Procedure
     Appendice A (Codici Ascii)
     Appendice B (Errori)
     Appendice C (SettaPreferenze)





                         INTRODUZIONE

Il Logo  il divertente e semplice linguaggio della tartaruga, poich
protagonista  di ogni azione,  di ogni  linea  tracciata ,  appunto,
questo animaletto, anche se schematizzato.
Il Logo  nacque negli anni '70 al MIT  ad opera di una equipe guidata
dal professor  Seymur Papert,  del cui libro ("Mindstorms") consiglio
vivamente  la  lettura,  poich  in  esso  spiega  la sua  "filosofia
informatica".  Il Logo:  un linguaggio da bambini,  secondo molti, ma
forse non da tutti   risaputo  che fu proprio questo ad adottare per
primo  la programmazione a procedure e che tutte  le routine grafiche
del Turbo Pascal sono state tratte da qui.
Molto tempo  passato da allora:  i computer non sono pi gli stessi:
la capacit  grafica si  evoluta  in modo esponenziale,  la velocit
di elaborazione  aumentata  ed esso  penetrato nelle case di tutti;
eppure  molto  si pu ancora  ritrovare  nella mia  versione  di quel
lontano primo Logo.
Innanzi  tutto,  sono  rimasti  uguali  i destinatari  dell'opera:  i
bambini.  Oggi, come allora, sono loro i veri protagonisti del Logo e
oggi,  come allora,  questo linguaggio  si propone  come mezzo per un
apprendimento  facile  e divertente  di una materia  utile, ma spesso
complicata, l'informatica.
Molti mi hanno chiesto: perch il Logo? Perch non il C, l'Assembler,
l'E, il Pascal o altri ancora? I linguaggi disponibili sono decine e,
da parte mia,  ho un profondo rispetto di tutti quanti, poich ognuno
ha, sicuramente, vantaggi e meriti,  ma credo anche che il Logo possa
trovare  dei  validi  motivi  per  essere  preferito.  La scelta  del
linguaggio da usare  sempre  determinata da ci che si vuol ottenere
e il Logo tra tutte  le possibili risulta  l'alternativa migliore per
l'apprendimento  della  programmazione.  Usare  il C,  l' Assembler o
anche  solo  il  Basic  pu  presentare, all' inizio,  insormontabili
difficolt,  tali da scoraggiare  spesso i bambini  e da allontanarli
dalla strada della programmazione.  A mio parere,  ci che oggi manca
ad  una  piattaforma  potente  e  diffusa  come  Amiga    proprio un
linguaggio di approccio, semplice,  studiato  proprio per chi inizia.
Ovviamente,  il Logo  non sar il linguaggio della vostra carriera: i
suoi limiti  sono molti e manifesti,  ma si sa,  una casa  con solide
fondamenta resiste di pi.
Quel che oggi voi imparate con il Logo, torner domani utile in altri
linguaggi  e  nella  vita:  imparerete  ad  affrontare  i problemi, a
risolverli,  a crearvene  di nuovi e a studiare  metodi per superarli
ancora,  e  cos via.   E se un giorno  ricever  una  lettera  di un
programmatore  affermato  che dice  di aver mosso  i primi passi  dal
magico  mondo  del  Logo, sar  per me  il pi bel  regalo possibile,
perch vorr dire che le mie idee sono esatte e che il mio lavoro non
 stato inutile.





                  SHAREWARE??  SI', GRAZIE!!

Il Logo   SHAREWARE:  ci cuol dire  che se ti piace, lo usi o vuoi,
semplicemente, contribuire al suo sviluppo, registrati, inviando lire
20.000  all'autore  (ovvero a me!!).  Per fare questo,  usa un vaglia
postale intestato a:

         MICHELE BERIONNE
         Via RUBICONE 42
         00198      ROMA

Riceverai l'ultima versione del Logo e il keyfile.
Cos' il keyfile?   Di certo,  hai notato  che caricando  il Logo, ti
appare, all'inizio, una scritta nella finestra dati che interrompe il
caricamento  per qualche istante.  Questo non influisce in alcun modo
sul funzionamento del Logo, ma serve solo a ricordare che stai usando
una versione  non registrata.  Inviandomi la quota  di registrazione,
invece, riceverai un piccolo file  personalizzato con il tuo nome che
ti permetter di evitare questo noioso ritardo. Per di pi, puoi cos
contribuire allo sviluppo del Logo!
ATTENZIONE:  Il keyfile  strettamente PERSONALE: in esso  contenuto
crittato il tuo nome ed  severamente vietato distribuirlo. In fondo,
perch altri dovrebbero beneficare di una cosa che TU hai pagato?
Grazie.

Registrarsi   un  DOVERE MORALE  che ti viene imposto  se il Logo ti
piace.  Ricordati  che  lo shareware  va aiutato:  poter  provare  un
programma prima di comprarlo (come accade per il Logo)  un vantaggio
offerto agli utenti: ricambiate la fiducia dell'autore!! Grazie.


ATTENZIONE:  L'autore  NON   in alcun modo responsabile di eventuali
danni o perdite di dati causate dal Logo.
Non  ti preoccupare  per quanto  hai appena letto in queste due righe
sopra:  , pi che altro, un modo di dire:  non succeder mai nulla a
causa del Logo!!

Per gli utenti di INTERNET:  Chi volesse contattarmi tramite il 'net,
il mio indirizzo  elettronico :  M.Berionne@agora.stm.it

Tutti i messaggi,  via email e via posta, saranno letti, apprezzati e
risposti!



                       RINGRAZIAMENTI:

Molte sono le persone  che devo ringraziare perch hanno contribuito,
in modo pi o meno incisivo,  alla realizzazione del Logo.  Ne faccio
qui una breve lista:

Seymur Papert     Mitico fondatore del Logo: grazie!
Black Legend      A loro lo spunto della mia idea.
Arturo Ortino     A quando la prossima versione di ITAL? :-)
Chris Hodges      AMCAF  sempre la migliore.
Ben Marty         Grazie, comunque, per la disponibilit. ;-)
Ben Wyatt         Ottimi suggerimenti...
Andy Church       Wow, l'Intuition, ma quanti bugs...
Michael Cox       La list  grande: anzi, mitica!
Francois Lionet   E che farei senza di te?
Fabio Chiechi     Studi troppo e programmi poco... ;-)


Se hai suggerimenti,  idee  o  anche solo  critiche,  segnalazioni di
errori da fare,  non indugiare:  contribuirai, cos, allo sviluppo di
questo linguaggio e sarai inserito anche tu nella list sovrastante!





                        PRESENTAZIONE

Lo schermo del Logo   sempre diviso in 3 parti distinte:  il foglio,
la linea testo  e  la  finestra dati.  Esso pu essere  schematizzato
cos:


     --------------------------------------------        Questo
     |                                          |          qui
     |                                          |          il
     |                                          |        FOGLIO
     |                      *                   |          su
     |                                          |         cui
     |                                          |          si
     |                                          |         muove
     |                                          |          la
     |                                          |       tartaruga
     |------------------------------------------|
     |                                          |      LINEA TESTO
     |------------------------------------------|
     |Logo>                                     | --->linea di input
     |                                          |     FINESTRA DATI
     |X= Y= Angolo= Colore= Penna s Tratteggio | --->linea dati
     --------------------------------------------

L'asterisco al centro del foglio rappresenta la tartaruga. Su di essa
 sempre presente un sottile trattino rosso che indica l'angolo verso
sui  rivolta; essa, inoltre,  sempre visibile (a parte quando viene
nascosta  con  il comando  Nasconditartaruga  o  quando   fuori  dal
foglio). Tutti i comandi si riferiscono alla tartaruga e al foglio su
cui disegna.
La linea testo , invece, utilizzabile attraverso il comando Pr.
La finestra dati  riservata al Logo: in essa vengono visualizzate le
coordinate del punto  dove  la tartaruga,  l'angolo verso cui essa 
rivolta,  il  colore  della  penna  impugnata,  e altri  dati.  Dalla
finestra dati, inoltre, si inseriscono i comandi da far eseguire.

I comandi possono  essere inviati  in due sistemi:  dal modo diretto,
ovvero digitandoli ad uno ad uno dalla finestra dati e premendo dopo,
ciascuno, il tasto Return;  in questo caso  il Logo esegue il comando
inviatogli  immediatamente  e poi  torna  ad attendere  che ne  venga
inserito un altro.  Oppure  attraverso i programmi,  ovvero scrivendo
tutti  i  comandi,  nell' ordine  desiderato,  in un  file  che viene
registrato  su  disco.  Inviando,  poi,  dal modo diretto  il comando
Carica, si pu scegliere  il programma,  precedentemente scritto,  da
eseguire;  in questo caso,   come  se i comandi  fossero inviati uno
dopo l'altro  in rapida successione.  Alla fine  del programma, viene
visualizzato  nella finestra dati il tempo impiegato.  Alcuni comandi
sono riservati  ai programmi e alle procedure e, quindi, utilizzabili
solo all'interno di questi.

Si pu anche far eseguire un programma subito dopo il caricamento del
Logo, avviando, per, questo da una Shell. In tal caso, digitare:
  Logo nome_del_programma.LOGO

Per uscire da un programma, premere in qualsiasi momento il taso Esc:
in tal modo, si ritorna direttamente al modo diretto.

Le regole del modo diretto e dei programmi sono uguali.  Per inserire
pi comandi  in una stessa linea, separarli  con il segno di `punto e
virgola' (;).  I comandi Pr e il segno  '  di commento  non ammettono
altri comandi dopo di loro,  neanche se viene  interposto un segno di
`punto e virgola'.

Inserendo i comandi dal modo diretto, si possono usare le frecce s e
gi per  poter riutilizzare dati gi immessi  senza doverli ribattere
di nuovo. Dal modo diretto inoltre, non  permesso iniziare i comandi
con alcuni caratteri (ovviamente con quelli vietati, tipo il segno di
dolaro,  i due punti,  etc...):  in questo modo,  il Logo  evita  che
facciate errori di distrazione.

Premendo  il tasto  `Help'  dal modo diretto,  viene visualizzata uno
schermo con varie  informazioni  sul Logo,  tra le quali si pu anche
vedere se,  ed eventualmente a chi,  la versione  al momento  usata 
registrata.





                      COMANDI del LOGO

Comando : ANGOLO
Sintassi: Angolo x
Testo   : Ruota  la tartaruga  verso l'angolo x,  espresso  in gradi.
          Nessun  segno  tracciato  sul foglio e la tartaruga non si
          sposta.
Note    : Valori  pi alti  di 360 gradi sono,  comunque, accettati e
          convertiti, secondo la formula x=x-(k*360).

Comando : INDIETRO
Sintassi: Indietro x
Testo   : Muove la tartaruga x passi indietro tracciando una linea se
          la penna  abbassata.
Note    :


Comando : LINEA
Sintassi: Linea x,y
Testo   : Traccia una linea  dalla posizione dove  la tartaruga fino
          al punto di coordinate x e y.  Anche la tartaruga si sposta
          al punto di destinazione; l'angolo non cambia.
Note    :


Comando : LINEAREL
Sintassi: Linearel x,y
Testo   : Muove la tartaruga di x passi  verso destra e y passi verso
          il basso  tracciando  una  linea  dal  punto di  partenza a
          quello di arrivo.  Se x   negativo  la  tartaruga si muove
          verso sinistra; se y  negativo, verso l'alto. L'angolo non
          cambia.
Note    :


Comando : AVANTI
Sintassi: Avanti x
Testo   : Muove  la tartaruga x passi avanti  tracciando una linea se
          la penna  abbassata.
Note    :


Comando : CASA
Sintassi: Casa
Testo   : Sposta  la  tartaruga alla sua "casa"  definita  tramite il
          comando  Definiscicasa.  L'angolo  non  cambia  e non viene
          tracciata alcuna linea.
Note    :


Comando : SINISTRA
Sintassi: Sinistra x
Testo   : Ruota  la  tartaruga  di x gradi  in senso  antiorario.  La
          tartaruga  non  si muove  e nessun  segno   tracciato  sul
          foglio.
Note    :


Comando : MUOVI
Sintassi: Muovi x,y
Testo   : Sposta  la  tartaruga  al  punto di coordinate x e y  senza
          tracciare alcuna linea sul foglio e senza cambiare l'angolo
          della tartaruga.
Note    :


Comando : MUOVIREL
Sintassi: Muovirel x,y
Testo   : Muove la tartaruga di x passi  verso destra e y passi verso
          sinistra senza  tracciare  alcuna linea  sul foglio. Se x 
          negativo  la  tartaruga  si  muove  verso sinistra;  se y 
          negativo, verso l'alto. L'angolo non cambia.
Note    :


Comando : RICORDAANGOLO
Sintassi: Ricordaangolo
Testo   : Ruota la tartaruga in direzione dell'angolo precedentemente
          memorizzato mediante il comando Memangolo. La tartaruga non
          si sposta e non viene tracciato alcun segno sul foglio.
Note    :


Comando : RICORDAX
Sintassi: Ricordax
Testo   : Sposta la tartaruga  orizzontalmente all' altezza del punto
          precedentemente  memorizzato con il comando Memx.  L'angolo
          non cambia e non viene tracciata nessuna linea sul foglio.
Note    :


Comando : RICORDAY
Sintassi: Ricorday
Testo   : Sposta  la tartaruga  verticalmente  all'altezza  del punto
          precedentemente memorizzato con Memy. L'angolo non cambia e
          non viene tracciata alcuna linea sul foglio.
Note    : Abbinando  i comandi  Ricordax  e Ricorday si pu riportare
          la tartaruga ad un punto precedentemente memorizzato.


Comando : PENNAGIU
Sintassi: Pennagiu
Testo   : Abbassa  la penna  della  tartaruga  sul foglio  in modo da
          permettere  alla  tartaruga  di tracciare  linee quando  si
          muove.
Note    : All'inizio la penna  sempre abbassata.


Comando : PENNASU
Sintassi: Pennasu
Testo   : Alza la penna della tartaruga dal foglio in modo da evitare
          che essa tracci alcuna linea su di esso.
Note    : Attenzione:  i comandi Punto, Cerchio, Semicerchio, Ellissi
          e Riempi non risentono del fatto  che la penna sia alzata o
          abbassata e funzionano regolarmente in ogni caso.


Comando : DESTRA
Sintassi: Destra x
Testo   : Ruota la tartaruga di x gradi in sendo orario. La tartaruga
          non si muove e nessun segno  tracciato sul foglio.
Note    :


Comando : MEMANGOLO
Sintassi: Memangolo
Testo   : Memorizza  l'attuale  angolo  della  tartaruga  in modo che
          possa essere riutilizzato  in qualunque momento  tramite il
          comando Ricordaangolo.
Note    : Ogni valore  precedentemente  memorizzato viene  cancellato
          per far posto al nuovo.


Comando : MEMX
Sintassi: Memx
Testo   : Memorizza  il valore  della  distanza della  tartaruga  dal
          margine  sinistro  del  foglio  in modo  che  possa  essere
          riutilizzata  in  qualunque  momento   tramite  il  comando
          Ricordax.
Note    : Ogni  valore  precedentemente  memorizzato viene cancellato
          per far posto al nuovo.


Comando : MEMY
Sintassi: Memy
Testo   : Memorizza la distanza della tartaruga dal margine superiore
          del  foglio  in  modo  che  possa  essere  riutilizzata  in
          qualunque momento tramite il comando Ricorday.
Note    : Ogni  valore  precedentemente  memorizzato viene cancellato
          per far posto al nuovo.


Comando : DEFINISCICASA
Sintassi: Definiscicasa x,y
Testo   : Posiziona la casa della tartaruga  al punto di coordinate x
          e y in modo  che vi possa essere  spostata con  il semplice
          comando Casa.
Note    : Ogni  valore  precedentemente  memorizzato viene cancellato
          per far posto  al nuovo.  Questo comando   particolarmente
          comodo per punti in cui  necessario spostare ripetutamente
          la tartaruga.


Comando : VOLGI
Sintassi: Volgi x,y
Testo   : Ruota la tartaruga  indirizzandola al punto di coordinate x
          e y.  Nessuna linea   tracciata  sul foglio e la tartaruga
          non si sposta.
Note    : Pu (bah?)  essere utile  in unione al comandi Distanza per
          muovere la tartaruga ad un determinato punto.


Comando : CARICA
Sintassi: Carica
Testo   : Carica  ed  esegue  un programma  per Logo  precedentemente
          scritto.  Dopo il suo invio, appare un requester che chiede
          quale si vuole eseguire. Per non caricarne nessuno, premere
          il tasto Cancel;  altrimenti  sufficiente  un doppio click
          sul nome  del programma  desiderato  per farlo  caricare ed
          eseguire.
Note    : Prima dell'esecuzione,  il Logo  controlla se non compaiono
          errori; in caso affermativo il programma non viene eseguito
          e uno specifico messaggio  spiegher la causa dell'arresto.
          Questo comando  NON pu essere inserito in un programma, ma
          deve sempre essere dato dal modo diretto.


Comando : FINE
Sintassi: Fine
Testo   : A seconda di come  dato,  pu avere  due diversi  effetti:
          se  inserito  dal modo diretto, indica che si vuole uscire
          dal Logo:  apparir un requester  di conferma e, in caso di
          risposta  positiva, il Logo  terminer;  se viene,  invece,
          trovato  all'interno  di un programma,  indica  la fine del
          programma stesso e che si deve tornare al modo diretto.
Note    : E' un comando importante, utile e necessario, ma attenzione
          al suo uso!


Comando : SCRIVI
Sintassi: Scrivi
Testo   : Serve  per  scrivere  nuovi  programmi  per il  Logo  o per
          rivederne e cambiarne altri gi in precedenza scritti. Dopo
          il suo invio appare un requester  che invita a scegliere il
          programma da scrivere.  Se il file scelto non esiste, viene
          creato:  si pu, cos, scrivere  un nuovo programma;  se il
          file, invece, gi esiste, si ha la possibilit di rivederlo
          e di cambiarlo; premere Cancel per rinunciare.
Note    : Per usare questo comando si deve aver settato correttamente
          tramite il programma  SettaPrefernze correttamente l'editor
          da usare.  Infatti il Logo non ne ha uno suo proprio, ma ne
          sfrutta uno qualsiasi esterno.  Per ulteriori  informazioni
          sull'uso dell'editor, vedere il suo relativo manuale.


Comando : DOMANDA
Sintassi: Domanda
Testo   : Visualizza  un punto interrogativo (?) nella finestra testo
          e aspetta che venga inserito un valore per memorizzarlo poi
          nella  variabile  di  sistema $d.  La presenza  di  lettere
          produce 0 come risultato, ma non provoca errori.
Note    : Finch  non viene  premuto il tasto <Return> il Logo appare
          come bloccato:  non pu, infatti,  continuare  finch non 
          terminato il comando Domanda.


Comando : SFONDO
Sintassi: Sfondo x
Testo   : Cambia  il colore del  foglio su cui si muove la tartaruga.
          Ci  che era  stato  precedentemente  disegnato  non  viene
          alterato in nessun modo. X pu assumere un qualsiasi valore
          tra 0 e 9: a ogni numero  assegnato un colore prestabilito
          del foglio.
Note    :


Comando : VOLTE
Sintassi: Volte x
Testo   : Fa in modo che ciascun  comando venga ripetuto di seguito x
          volte:  ha,  per,  effetto  solo  sui  comandi  in  cui la
          tartaruga  si muove o si gira  (Avanti,  Destra,  Indietro,
          Linearel, etc...)
Note    : All'inizio  assegnato il valore 1.


Comando : ASPETTA
Sintassi: Aspetta x
Testo   : Fa attendere  il tempo indicato in x;  durante  l'attesa il
          Logo appare come bloccato e non si pu fare nulla. X indica
          il numero di ventesimi di secondo che bisogna aspettare.
Note    : Attenzione a non usare  valori troppo alti di x, altrimenti
          rischiate di perdere la vostra pazienza!!


Comando : TRATTEGGIO
Sintassi: Tratteggio x
Testo   : Il Logo permette di utilizzare le linee oltre che continue,
          anche tratteggiate.  Esistono 3 tipi di tratteggio, diversi
          per la lunghezza dei singoli trattini: per x compreso tra 1
          e 3 viene adoperato uno di questi tratteggi;  se, invece, x
           uguale a 0, la linea torna ad essere continua.
Note    : Il valore del tratteggio  viene memorizzato nella variabile
          di sistema $t.  All'inizio  il Logo  utilizza  sempre linee
          continue.  Non  ha effetto  sui comandi  Cerchio,  Ellisse,
          Punto,  Riempi  e Semicerchio.  Se    attivo  un qualunque
          tratteggio,  ci  evidenziato da un'apposita scritta nella
          finestra dati.


Comando : NASCONDITARTARUGA
Sintassi: Nasconditartaruga
Testo   : Rende  la  tartaruga invisibile,  ma pur  sempre  presente.
          Tutto funziona  proprio come prima,  con l'unica differenza
          che la tartaruga non viene visualizzata.
Note    : Questo comando d un po' di velocit in pi al Logo!!


Comando : MOSTRATARTARUGA
Sintassi: Mostratartaruga
Testo   : Fa tornare la tartaruga sullo schermo,  se questa era stata
          precedentemente nascosta  con il comando Nasconditartaruga.
          Ovviamente,   la  tartaruga   viene  rimostrata  non  nella
          posizione  in cui  si trovava quando  era stata cancellata,
          ma in quella sua attuale.
Note    : Nasconditartaruga  e  Mostratartaruga  non sono cumulabili:
          se,  per esempio, invio  il comando Nasconditartaruga diece
          volte di seguito,  sar  sempre e comunque  sufficiente  un
          solo Mostratartaruga per farla tornare sullo schermo.


Comando : SUONA
Sintassi: Suona x
Testo   : Fa suonare  il Logo  in vario modo;  x indica  il suono  da
          emettere:  se x   uguale a 0, il Logo  simula il rumore di
          un'esplosione.  Per x che assume valori tra 1 e 5, si sente
          il suono di una campana di varia intensit  (dalla pi cupa
          alla pi acuta);  se, invece, x   un numero  tra 6 e 8, il
          Logo  esegue  uno  dei  tre  suoni  campionati  in  memoria
          (6=doppio pio; 7=rullo di tamburi; 8=doppio campanello)
Note    : Numeri maggiori di 8 vengono considerati come se fossero 8.


Comando : CASUALE
Sintassi: Casuale x
Testo   : Determina un numero  casuale  compreso tra 0 e x e lo, poi,
          memorizza nella variabile di sistema $5.  Il numero trovato
           sempre intero e positivo.
Note    : Attenzione:  a differenza  che in altri linguaggi, nel Logo
          Casuale  un comando e non una funzione: esso, dunque, deve
          essere eseguito  a parte e, solo in un secondo momento, pu
          essere letto il numero trovato.  Ogni precedente  valore in
          $5 viene cancellato per far posto al nuovo.


Comando : COLORE
Sintassi: Colore x
Testo   : Sceglie  la penna con cui  la tartaruga  deve disegnare.  I
          colori disponibili sono 7 (dall'1 al 7), mentre il colore 0
          indica  la gomma.  Valori pi alti  del 7 sono  accettati e
          convertiti secondo la tecnica della rotazione x=x-(k*8).
Note    : Questo comando  utile nei cicli dei programmi; altrimenti,
          per, usate  i comandi  specifici  dei colori (Nero, Verde,
          Rosso, Gomma, etc...) poich sono pi facili e comodi.


Comando : NASCONDIMOUSE
Sintassi: Nascondimouse
Testo   : Rende invisibile il puntatore del mouse; in tal caso, non 
          possibile  utilizzare  i   comandi  che  ne  richiedono  la
          posizione (Volgimouse, Lineamouse, Muovimouse). Comunque il
          puntatore riappare prima di ogni requester, per permetterne
          un facile uso, e riscompare di nuovo subito dopo.
Note    :


Comando : MOSTRAMOUSE
Sintassi: Mostramouse
Testo   : Mostra il puntatore del mouse sullo schermo,  se questo era
          stato precedentemente nascosto.
Note    : Sia Nascondimouse che Mostramouse  non sono cumulabili: se,
          per  esempio,  invio  diece  volte  di  seguito  il comando
          Nascondimouse,  sar sempre e comunque  sufficiente un solo
          Mostramouse per far tornare il puntatore sullo schermo.


Comando : VOLGIMOUSE
Sintassi: Volgimouse
Testo   : Ruota la tartaruga  verso la posizione dove  al momento il
          puntatore del mouse.  Nessun segno  tracciato sul foglio e
          la tartaruga non si muove.
Note    : Se il mouse non  visibile, non ha effetto.


Comando : MUOVIMOUSE
Sintassi: Muovimouse
Testo   : Sposta  la tartaruga  nella posizione  dove  al momento il
          puntatore del mouse,  senza tracciare  alcuna linea e senza
          modificare l'angolo.
Note    : Se il mouse non  visibile questo comando non ha effetto.


Comando : LINEAMOUSE
Sintassi: Lineamouse
Testo   : Traccia una linea dalla posizione della tartaruga fino alla
          posizione  attuale del mouse.  Anche la tartaruga si sposta
          fino al punto di destinazione, ma l'angolo non cambia.
Note    : Se il mouse non  visibile questo comando non ha effetto.


Comando : ?
Sintassi: ?
Testo   : Mostra uno schermo con informazioni generali sul programma,
          tra cui si pu anche vedere se la versione  registrata ed,
          eventualmente, a chi.  Ha lo stesso  effetto del tasto Help
          premuto  dal modo diretto.  Premendo  un tasto qualsiasi si
          ritorna alla situazione precedente.
Note    : Non pu essere usato all'interno dei programmi, ma solo dal
          modo diretto.


Comando : EFFETTOTESTO
Sintassi: Effettotesto x
Testo   : Permatte  di usare  le scritte  della linea testo  con vari
          stili. Se x  uguale a 0 sar  visualizzato normalmente; se
          x  uguale a 1,  apparir  sottolineato; se x  uguale a 2,
          ombreggiato.  Ogni stile  precedentemente  utilizzato viene
          rimosso per far posto al nuovo.
Note    : Attenzione:  non ha effetto sulla scritta  gi presente, ma
          solo  su quelle che  saranno visualizzate  successivamente.
          All'inizio lo stile del testo  normale.


Comando : ASPETTAMOUSE
Sintassi: Apettamouse x
Testo   : Attende  che venga premuto  un pulsante  del mouse:  se x 
          uguale  a 1 aspetta  il tasto sinistro;  se x  uguale a 2,
          quello destro.
Note    : Finch non viene premuto il pulsante giusto, il Logo appare
          come bloccato e non pu continuare:  attenzione, dunque, ad
          avvisare l'utente,  affinch non creda che sia un errore ad
          aver arrestato il programma!


Comando : APETTATASTO
Sintassi: Apettatasto
Testo   : Attende che  venga  premuto un tasto qualsiasi:  finch ci
          non accade,  il Logo appare  come  bloccato  poich non pu
          proseguire prima che questo comando sia terminato. Dopo che
          un tasto    stato premuto,  viene  memorizzato  il  valore
          relativo in $t.  Il tasto  Help, i tasti F,  gli Shift, gli
          Alt e i Commodore non hanno effetto.
Note    : Il valore che viene memorizzato  il codice Ascii del tasto
          premuto; per ulteriori informazioni vedi l'appendice A.


Comando : CANCELLA
Sintassi: Cancela
Testo   : Cancella dal disco un programma realizzato in Logo. Dopo il
          suo invio, appare un requester per la selezione del file da
          cancellare.  Premere  Cancel  se  non si  vuole  cancellare
          nulla,  altrimenti fare  un doppio click  sul nome del file
          scelto.  Questo comando  non pu essere  all'interno  di un
          programma, ma deve sempre essere dato dal modo diretto.
Note    : Attenzione ad essere perfettamente sicuri di ci che si fa:
          un programma cancellato NON pu pi essere recuperato!


Comando : UNDO
Sintassi: Undo
Testo   : Cancella l'ultima operazione  fatta sullo  schermo: se si 
          disegnata  una linea sbagliata  o uno  spostamento  errato,
          basta  inviare  Undo e  la  tartaruga  torner  allo  stato
          precedente.  Non  possibile usare Undo pi di una volta di
          seguito:  dopo la prima non avr effetto.  La posizione del
          mouse non risente del comando Undo
Note    : Non pu stare  all'interno  di un programma, ma deve sempre
          essere dato  dal modo diretto:  non pu essere dato neanche
          subito  dopo  un programma:  infatti,  ha effetto  solo sui
          comandi dati dal modo diretto o delle procedure.


Comando : ELLISSE
Sintassi: Ellisse x,y
Testo   : Disegna  un'ellissi  avente  il centro  nella tartaruga, il
          raggio  orizzontale  di  x  passi  di  tartaruga  e  quello
          verticale di y passi.  La tartaruga non si muove e l'angolo
          non cambia.
Note    : In effetti, l'ellissi  non ha un centro, ma due fuochi.  Il
          centro che  il Logo usa   considerato  come il punto medio
          tra i 2 fuochi reali.  Non importa se la penna  sollevata,
          ma l'ellisse  tracciata in ogni caso.


Comando : DISTANZA
Sintassi: Distanza x,y
Testo   : Calcola  quanti passi di tartaruga il punto di coordinate x
          e  y  dista  dal  posto  dove    la  tartaruga.  Il valore
          determinato   sempre un numero  intero e positivo, e viene
          memorizzato  nella  variabile  di  sistema $6.  Ogni valore
          precedentemente presente viene cancellato  per far posto al
          nuovo.
Note    : Pu essere usato  insieme a Volgi  per muovere la tartaruga
          ad un determinato punto.


Comando : RIEMPI
Sintassi: Riempi
Testo   : "Rovesciare" un barattolo di vernice proprio sopra al punto
          in cui si trova la tartaruga. In questo modo viene colorato
          ogni punto adiacente che sia dello  stesso colore di quello
          iniziale  del punto  in cui    la tartaruga.  Complicato a
          dirsi,  ma comodo  e molto usato  per riempire e colorare i
          disegni fatti.  La tartaruga  non  si muove e l'angolo  non
          cambia.
Note    :


Comando : PULISCI
Sintassi: Pulisci
Testo   : Produce un reset grafico: la tartaruga viene posizionata al
          centro  del foglio,  l'angolo  viene  posto uguale a 0,  la
          penna  abbassata,  quella impugnata  diventa la bianca e le
          linee sono selezionate continue.
Note    :


Comando : RESET
Sintassi: Reset
Testo   : E' identico a Pulisci,  ma  oltre  che  graficamente agisce
          anche sulle  variabili utente,  che vengono tutte azzerate.
Note    : Ogni volta che  si carica e si esegue un programma, il Logo
          provvede  automaticamente  a inserire  come prima linea  il
          comando Reset. Dunque, non  necessario che questo venga da
          voi inserito nei programmi.


Comando : CERCHIO
Sintassi: Cerchio x
Testo   : Disegna  un cerchio  avente  il centro  nel punto dove  la
          tartaruga e il raggio di x passi di tartaruga. La tartaruga
          non si muove e l'angolo non cambia.
Note    : Non  importa  se la penna  sollevata,  ma il cerchio viene
          tracciato in ogni caso.


Comando : PUNTO
Sintassi: Punto
Testo   : Disegnare  un punto  proprio dove  la tartaruga: ho dovuto
          aggiungere  questo  comando  perch  usando  Avanti  non  
          possibile tracciare  una linea  di un  solo  punto,  come a
          volte pu esser necessario, ma la lunghezza minima  di due
          punti.
Note    : Non importa  se la penna  sollevata e il punto  tracciato
          in ogni caso.


Comando : LIMITA
Sintassi: Limita x
Testo   : Permette  di decidere  se la tartaruga deve essere limitata
          al foglio visibile o pu uscire da esso.  Se x ha il valore
          di 0,  la tartaruga  viene limitata;  per tutti  gli  altri
          valori,  invece,  libera di uscire.  Se  limitata, questo
          appare  scritto  nella finestra dati.  Le  eventuali  linee
          tracciate  fuori  dal foglio  non possono  essere  viste in
          nessun modo.
Note    : Se la tartaruga  viene  limitata  mentre    gi  fuori dal
          foglio, essa torna  immediatamente all'interno di esso.  Il
          comando Limita  non    cumulabile:  se, per esempio, invio
          diece volte di seguito il comando per limitarla sar sempre
          e sufficiente una solo volta togliere la limitazione perch
          la tartaruga sia libera di uscire dal foglio. La condizione
          iniziale viene deciso tramite il programma SettaPreferenze


Comando : SALVASCHERMO
Sintassi: Salvaschermo
Testo   : Salva su disco il disegno presente sul foglio.  Dopo il suo
          invio,  appare  un requester  che chiede di  specificare il
          nome con cui si vuole salvare il foglio: premere Cancel per
          interrompere  l'operazione  o  digitare il nome  con cui si
          vuol salvare il disegno.  Il Logo adopera lo standard Amiga
          IFF: dunque, l'immagine , poi, utilizzabile e vedibile con
          qualunque programma di grafica.
Note    : Non pu essere  all'interno di un programma, ma deve essere
          dato dal modo diretto


Comando : GOMMA
Sintassi: Gomma
Testo   : Fa prendere alla tartaruga la gomma: ovunque, ora, passer,
          anzich tracciare linee,  canceller tutto  ci che  trova.
          Anche  i  comandi  Cerchio,  Punto,  Semicerchio,  Riempi e
          Ellisse provocheranno una cancellazione.
Note    : E' l'equivalente semplificato di Colore 0.


Comando : NERO
Sintassi: Nero
Testo   : Fa impugnare alla tartaruga la penna di colore nero.
Note    : E' l'equivalente semplificato di Colore 1


Comando : BIANCO
Sintassi: Bianco
Testo   : Fa impugnare alla tartaruga la penna di colore bianco.
Note    : E' l'equivalente semplificato di Colore 2


Comando : GIALLO
Sintassi: Giallo
Testo   : Fa impugnare alla tartaruga la penna di colore giallo.
Note    : E' l'equivalente semplificato di Colore 3


Comando : ROSSO
Sintassi: Rosso
Testo   : Fa impugnare alla tartaruga la penna di colore rosso.
Note    : E' l'equivalente semplificato di Colore 4


Comando : VERDE
Sintassi: Verde
Testo   : Fa impugnare alla tartaruga la penna di colore verde.
Note    : E' l'equivalente semplificato di Colore 5


Comando : BLU
Sintassi: Blu
Testo   : Fa impugnare alla tartaruga la penna di colore blu.
Note    : E' l'equivalente semplificato di Colore 6


Comando : VIOLA
Sintassi: Viola
Testo   : Fa impugnare alla tartaruga la penna di colore viola.
Note    : E' l'equivalente semplificato di Colore 7


Comando : PULISCITESTO
Sintassi: Puliscitesto
Testo   : Pulisce la finestra testo  da qualunque scritta presente in
          essa.
Note    : E' l'equivalente semplificato del solo PR.


Comando : WORKBENCH
Sintassi: Workbench
Testo   : Rende  il Logo  iconificato,  ovvero  porta  lo schermo del
          workbench davanti visibile  e  vi apre una piccola finestra
          con  su  scritto "LOGO".  Premendo,  con il puntatore su di
          essa,  il  tasto  sinistro del mouse  (attivandola) e, poi,
          quello  destro,  si  torna  al Logo  come  se  nulla  fosse
          accaduto.  In questo modo, si  pu interrompere il Logo per
          riprenderlo  pi tardi e dedicarsi, intanto, all'esecuzione
          di un altro programma.
Note    : Non pu essere all'interno  di un programma, ma deve essere
          sempre dato dal modo diretto


Comando : RICORDATUTTO
Sintassi: Ricordatutto
Testo   : E' equivalente alla successione dei  comandi Ricordaangolo,
          Ricordax e Ricorday inseriti uno dopo l'altro.
Note    :


Comando : MEMTUTTO
Sintassi: Memtutto
Testo   : E' equivalente alla successione dei comandi Memangolo, Memx
          e Memy inseriti uno dopo l'altro.
Note    :


Comando : COLORETESTO
Sintassi: Coloretesto x
Testo   : Permette di scegliere  con quale colore scrivere le scritte
          nella linea testo.
Note    : Attenzione:  non ha effetto  sulla scritta gi presente, ma
          solo  su  quelle che saranno immesse successivamente.  Allo
          inizio il testo viene stampato bianco.


Comando : SEMICERCHIO
Sintassi: Semicerchio r,g
Testo   : Disegna sul folgio  un pezzo di cerchio avente il raggio di
          r passi di tartaruga e l'ampiezza di g gradi.  Il tratto di
          cerchio viene disegnato a partire dall'angolo attuale della
          tartaruga, con centro la sua posizione, ruotando di g gradi
          in  senso orario.  Non sono ammessi  valori  negativi di g.
          L'angolo della tartaruga non cambia.
Note    : E', forse, uno dei comandi pi difficili  da utilizzare: ma
          fate delle prove e diventerete subito bravi a usarlo!!


Comando : STAMPA
Sintassi: Stampa
Testo   : Scrive su carta,  mediante  una  stampante,  il  listato di
          qualsiasi programma per Logo.  Dopo il suo invio  appare un
          requester  per  selezionare  il  file  desiderato:  premere
          Cancel  per rinunciare  o  fare un  doppio  click col tasto
          sinistro sul programma voluto per continuare.  Un ulteriore
          richiesta  di  conferma  permette,  poi,  di  preparare  la
          stampante:  premere  Return  per  continuare  e iniziare la
          stampa  o  Esc  per rinunciare.  Se non  si  dispone di una
          stampante, NON usare questo comando.
Note    : Il testo  stampato  pu  presentare, in alcune righe, delle
          "indentature", ovvero  delle rientranze sul bordo sinistro:
          non    assolutamente  un difetto del Logo,  ma, anzi,  una
          agevolazione;  presto  vedrete  come  queste facilitano  la
          lettura mettendo in risalto le zone all'interno dei Se-Stop
          e dei cicli.


Comando : PR
Sintassi: Prxxxx
Testo   : Scrive  testi  nella  linea  testo;  xxxx  rappresenta  una
          qualsiasi scritta, contenente ogni tipo di carattere:  sono
          possibili  numeri,  lettere,  segni  di  interpunzione,  di
          operazioni, etc..  Dunque, dopo Pr non si pu aggiungere un
          altro comando sulla stessa linea altrimenti il Logo penser
          che quello  fa parte  della scritta da stampare.  Ogni qual
          volta viene stampato  un nuovo testo,  viene  completamente
          cancellato quello precedente, anche se non si sovrappone ad
          esso.  Utilizzi speciali  del comando Pr  si possono  avere
          inserendo  un  particolare  carattere  che, ovviamente, non
          verr  stampato, alla fine del testo.  Se xxxx  termina con
          il segno `[', il Logo, anzich scriverlo nella linea testo,
          lo pronuncer, purtroppo, con un terribile accento inglese,
          purch, per,  sia  disponibile  il  narrator.device  e  la
          funzione  del  parlato sia stata  attivata con il programma
          SettaPreferenze.  Se xxxx termina, invece, con il carattere
          `|', allora la scritta  verr centrata  in mezzo alla linea
          testo. Se ancora, xxxx termina con il carattere `@', allora
          il  Logo  viene  informato  di  non  cancellare,  la  volta
          successiva, il testo presente.  Ci vuol dire che inserendo
          Prxxxx@,  cancello tutto  ci che era  nella finestra testo
          per scriverci xxxx,  ma la volta successiva  il nuovo testo
          sar  aggiunto  al precedente.  In questo modo   possibile
          ottenere testi  variopinti e con vari stili, alterando, tra
          un pezzo  di scritta e l'altro,  rispettivamente  il colore
          del testo e il suo stile.  Se, infine, xxxx  termina con il
          carattere  `]',  il testo  non sar  stampato  nella  linea
          testo,  ma sul foglio,  proprio a partire  dalla tartaruga,
          usando,  per  quanto  riguarda  il colore,  la penna  della
          tartaruga medesima.
Note    : Non  ammesso  pi di un carattere speciale alla fine della
          stringa:  se ne sono presenti  due, l'ultimo  assume la sua
          funzione, mentre  il penultimo viene considerato come parte
          della stringa.





        COMANDI USABILI SOLO NEI PROGRAMMI E NELLE PROCEDURE.

Questi comandi non possono essere inviati dal modo diretto, ma devono
essere,  obbligatoriamente,  all'interno  di  un  programma o  di una
procedura.


Comando : J
Sintassi: Jxxx
Testo   : Salta da una parte all'altra del programma; xxx rappresenta
          il nome  della label  a cui si deve  andare.  Le label sono
          costituite dal segno  di duepunti (:) seguito da una parola
          qualunque.  Il Logo  non  tiene  alcun  conto  delle  label
          durante  l'esecuzione  dei  programmi,  ma le usa  solo per
          sapere dove saltare. Per esempio:  `:ciao'  rappresenta una
          label di nome `ciao';  per saltare, dunque, ad essa si deve
          usare `Jciao'.
Note    : Non possono esistere in uno stesso  programma due label con
          lo stesso nome o si provocher  un errore all'inizio.  Se 
          presente un J ad una label  inesistente, un errore impedir
          l'esecuzione del programma.


Comando : CICLO
Sintassi: Ciclo
Testo   : Spesso  in un programma    necessario  ripetere  gruppi di
          istruzioni  pi  volte;   per  evitare,  dunque,  di  dover
          riscrivere le stesse linee sempre uguali, si deve ricorrere
          al comando  Ciclo,  da usare  sempre  insieme  a Chiudi: il
          comando Ciclo apre, appunto, un ciclo che termina, poi, con
          Chiudi.  Non ci  possono stare  pi di tre cicli uno dentro
          l'altro.  Il valore del numero  di volte che il ciclo  gi
          stato  eseguito  viene  memorizzato  in  una  variabile  di
          sistema:  il  ciclo  pi  esterno  in $ 1,  il secondo  (se
          presente) in $2, il terzo (se presente) in $3.
Note    : Il numero di Ciclo presenti deve essere uguale a quello dei
          Chiudi e i comandi Ciclo  devono sempre precedere i Chiudi,
          altrimenti si incorre in un errore,  prima che il programma
          inizi, che ne impedir l'esecuzione.


Comando : CHIUDI
Sintassi: Chiudi x
Testo   : Serve per chiudere un ciclo aperto.  X indica il numero  di
          volte che  i comandi  all'interno  del ciclo  devono essere
          ripetuti:  Chiudi  rimanda  al suo relativo  Ciclo  come il
          comando J per x volte;  dopo  di  che lascia  continuare il
          programma,  come  se  non ci fosse.  Se  x  uguale a 0 o 
          assente, i comandi compresi  all'interno del ciclo verranno
          ripetuti continuamente senza mai uscire. In questo caso, la
          struttura Ciclo-Chiudi, funziona  come un salto  effettuato
          con il comando J, ma il suo utilizzo  assai pi pratico ed
          elegante!
Note    : Il numero  di Chiudi  presenti deve essere  uguale a quello
          dei  Ciclo e i Ciclo  devono  sempre  precedere  i  Chiudi,
          altrimenti si incorre  in un errore, prima che il programma
          inizi, che ne impedir l'esecuzione.


Comando : AZZERA
Sintassi: Azzera x
Testo   : Se presente, deve  obbligatoriamente  essere immediatamente
          precedente al comando Ciclo a cui si riferisce,  altrimenti
          non  viene  considerato dal Logo.  Permette  di iniziare il
          ciclo con un valore  diverso da 1, ma a partire dal  numero
          x+1.
Note    : Prima di ogni ciclo, il Logo d automaticamente  il comando
          Azzera 0; dunque, non  necessario che lo facciate voi.


Comando : SE
Sintassi: Se x<=>y
Testo   : Permette  di far prendere  al Logo  delle decisioni:  se si
          verifica  una data  situazione, allora...  Dopo il Se  deve
          seguire  un' espressione  di  uguaglianza o disuguaglianza,
          semplice (#a>15 ; #b=$5) o composta (#a<>12 ; #b=>$5).  Nel
          caso  l' espressione  indicata  sia  vera,  allora  saranno
          eseguiti  tutti i comandi  presenti  tra la linea  del Se e
          quella del relativo Stop. Possono essere presenti anche pi
          Se uno dentro l'altro (funzione logica AND). Per esempio:
              Se #a=10
                 Avanti 50
              Stop
          Eseguir il comando Avanti solo se il valore in #a  uguale
          a 10. E ancora:
              Se #a>10
                Avanti 50
                Se #b>10
                  Suona 3
                Stop
              Stop
          Esegue il comando Avanti solo se il valore in #a  maggiore
          di 10, e il  comando  Suona  solo  se era vera  la prima e,
          inoltre, il valore in #b  maggiore a 10.
Note    : Il numero di Se presenti  deve essere uguale a quello degli
          Stop e i Se devono sempre precedere gli Stop, altrimenti si
          incorrer in un errore prima che il programma inizi. Appare
          complicato?  Imparatelo  bene:   ESSENZIALE  per una buona
          programmazione!!


Comando : STOP
Sintassi: Stop
Testo   : Questo comando  indica fin dove si estende la struttura Se.
          Tutti i comandi  compresi  tra  il Se  e  il relativo  Stop
          vengono  eseguiti  SOLO  se    vera  la condizone  del Se;
          altrimenti saranno  tutti saltati e il programma riprender
          dalla linea successiva allo Stop.
Note    : Il numero di Stop presenti deve essere  uguale a quello dei
          Se e gli Stop  devono  sempre seguire  i Se,  altrimenti si
          incorrer in un errore,  prima che  il programma inizi, che
          ne impedir l'esecuzione.


Comando : SE...ALLORA...
Sintassi: Se x<=>y Allora...
Testo   : E' identico  al  gruppo  Se-Stop,  ma  tutte  le istruzioni
          devono essere sulla stessa linea dopo Allora.
Note    : Non c' nessuna differenza tra le due forme, ma la scelta 
          puramente estetica. Da parte mia posso consigliare di usare
          questa nel caso  che a seguire  i comandi siano uno solol o
          al massimo due; mentre l'altra  assai pi comoda per liste
          piuttosto lunghe di comandi da effettuare.  La lettura (per
          l'utente e  non  per  il Logo) su una riga   pi  comoda e
          veloce: fate voi!!


Comando : ADDIO
Sintassi: Addio
Testo   : E' l'equivalente di Fine  dato dal modo diretto.  Quando il
          Logo  trova  questo  comando  all'interno  di un programma,
          interrompe  l'esecuzione  dello  stesso  e  termina,  senza
          chiedere alcuna ulteriore conferma.
Note    : Utile per uscire dopo un programma, ma attenzione a usarlo,
          pi che con Fine!!


Comando : `
Sintassi: `
Testo   : Questo simbolo  serve per poter  inserire all'interno di un
          programma dei commenti esplicativi che non servono ad altro
          che a rendere  pi  facile  la  lettura  del  programma:  i
          commenti  non vengono  presi neanche  in considerazione dal
          Logo.  Dopo questo segno, non possono essere presenti sulla
          stessa linea altri comandi o saranno scambiati per commenti
          e, quindi, non eseguiti.
Note    : Fate un buon uso dei vostri commenti: cambiare un programma
          non commentato dopo  molto tempo pu  risultare anche molto
          difficile.





                            VARIABILI

1- INTRODUZIONE

Le variabili sono uno degli elementi principali della programmazione;
senza di esse,  si possono  realizzare  solo semplici  disegni sempre
uguali,  ma con  il loro utilizzo,  le possibilit  del Logo  vengono
moltiplicate!  Ogni  variabile  pu  contenere  UN  SOLO  numero, sia
positivo che negativo, ma sempre intero.  Dunque, il Logo non ammette
valori  decimali:  quando   presente  la  virgola,  il numero  viene
arrotondato  alla pi vicina  unit.  Esistono  due  diversi  tipi di
variabili:  le variabili utente e quelle di sitema.  Entrambe possono
essere lette,  ma solo  quelle utente  possono essere scritte da voi,
mentre alle altre ci pensa il Logo stesso.


2- VARIABILI UTENTE

Come ho gi detto, queste variabili sono leggibili e scrivibili: esse
sono a vostra  completa disposizione!  La variablili utente sono 26 e
si indicano  con il segno `#'  seguito da una lettera  dell'alfebeto.
Non importa se la lettera  maiuscola o minuscola:  vengono, infatti,
considerate in modo uguale.   Per esempio #a, #C, etc...
Per scrivere in una variabile utente  sufficiente porre dopo di essa
il segno di uguale e poi ancora, il valore che si intende assegnarle.
Per esempio:
#a=100         Inserisce il valore 100 nella variabile #a.
#a=100+10      Inserisce il valore 110 (100+10) nella variabile #a.
#a=#b          Copia il valore della variabile #b nella variabile #a.
#a=100-#b      Inserisce il valore 100-#b nella variabile #a.
#a=2+4*3       Inserisce il valore 18 nella variabile #a.

ATTENZIONE:  Come si vede da quest'ultimo esempio, il Logo non usa le
priorit nelle operazioni. Solitamente, infatti, le moltiplicazioni e
le divisioni hanno la precedenza sulle addizioni e sulle sottrazioni;
nel Logo, invece,  le operazioni vengono  svolte procedendo sempre da
sinistra verso destra.
ATTENZIONE:  Non sono  ammesse parentesi:  il fatto, infatti, che non
esistano priorit determina la loro assoluta inutilit.


3- VARIABILI DI SISTEMA

Le variabili  di sistema sono 16 e  hanno  la caratteristica di poter
soltanto essere lette, mentre i valori in esse vengono esclusivamente
scritti  dal Logo  stesso.  Sono indicate  dal segno  di dollaro  ($)
seguito dal nome della variabile. Esse sono:

$0 -> PROCEDURE:  Indica il valore passato a una procedura attraverso
      il parametro.  Ha valore  diverso da 0 solo  all'interno di una
      procedura  in cui si  entrati  passando un paramentro;  appena
      si esce dalla procedura, riassume il valore 0.
$1 -> CICLO 1: Contiene il contatore del ciclo pi esterno, se esite.
      Il suo valore  sempre 0 fuori dal primo ciclo.
$2 -> CICLO 2:  Contiene il contatore del secondo ciclo, se esite. Il
      suo valore  sempre 0 fuori dal secondo ciclo.
$3 -> CICLO 3:  Contiene il contatore  del terzo ciclo, se esite.  Il
      suo valore  sempre 0 fuori dal terzo ciclo.
$4 -> ASCII: Contiene il valore di risposta del comando Aspettatasto.
      All'inizio il valore  0,  ma, dopo la prima volta, conserva il
      valore in essa memorizzato fino al seguente utilizzo.
$5 -> CASUALE:  Contiene il valore  di risposta  del comando Casuale.
      All'inizio il valore  0,  ma, dopo la prima volta, conserva il
      valore in essa memorizzato fino al seguente utilizzo.
$6 -> DISTANZA:  Contiene il valore di risposta del comando Distanza.
      All'inizio il valore  0,  ma, dopo la prima volta, conserva il
      valore in essa memorizzato fino al seguente utilizzo.
$j -> JOYSTICK: Indica lo stato attuale del Joystick. Se questo non 
      presente  o non  viene  usato,  il suo valore  0.  Altrimenti,
      contiene la somma dei valori dei movimenti attivati.
                       1
                     4 * 8    Fuoco=16
                       2
      Per esempio: 26 indica che il fuoco  premuto e che il Joystick
       spinto in diagonale verso il basso e destra (16+2+8=26).
$m -> MOUSE:  Indica  lo stato  attuale  dei pulsanti  del mouse:  se
      contiene 0,  vuol dire  che nessuno  di questi    premuto;  se
      contiene 1,  vuol dire che  il tasto sinistro  premuto;  se 2,
      quello destro; se 3, sia il sinistro che il destro.
$x -> X:  Indica la distanza  della tartaruga  dal bordo sinistro del
      foglio.  Se in essa  contenuto  un numero negativo,  vuol dire
      che la tartaruga   fuori  dal foglio.  Questa variabile  viene
      aggiornata dal Logo ogni volta che la tartaruga si muove.
$y -> Y:  Indica la distanza  della tartaruga  dal bordo  in alto del
      foglio.  Se in essa  contenuto  un numero negativo,  vuol dire
      che  la tartaruga   fuori dal foglio.  Questa variabile  viene
      aggiornata dal Logo ogni volta che la tartaruga si muove.
$a -> ANGOLO:  Indica l'angolo  verso cui  rivolta la tartaruga.  Il
      numero in essa contenuto   sempre compreso  tra 0 e 359 gradi.
      Questa variabile  viene aggiornata  dal Logo  ogni volta che la
      tartaruga si gira.
$p -> PENNA: Pu valere 1 o 0: nel primo caso, vuol dire che la penna
      della tartaruga  abbassata; nel secondo, invece, che  alzata.
$t -> TRATTEGGIO:  Indica quale tratteggio   attualmente utilizzato;
      il suo valore  sempre compreso tra 0 e 3;  se contiene 0, vuol
      dire che le linee sono continue.
$d -> DOMANDA:  Contiene il valore di risposta  del comando  Domanda.
      All'inizio il valore  0,  ma, dopo la prima volta, conserva il
      valore in essa memorizzato fino al seguente utilizzo.
$c -> COLORE: Indica quale penna  attualmente utilizzata.

Per quanto riguarda  il loro utilizzo, solo nella fase di lettura, si
comportano esattamente come le variabili utente.





                             PROCEDURE

1- INTRODUZIONE

Il Logo,  in linea  con i pi  potenti  linguaggi  degli ultimi anni,
permette  di scomporre i programmi in tanti piccoli sub-programmi, le
procedure, parti di codice brevi e di facile lettura, cos da evitare
la creazione  di lunghi files  poco  comprensibili.  In tal modo,  si
possono creare  addirittura nuovi comandi definiti dall'utente stesso
ed espandere il Logo con nuove istruzioni personalizzate, partendo da
quelle standard. Possiamo per esempio definire un comando `Triangolo'
con il compito di disegnare un triangolo:  tutte le volte che dovremo
tracciarne uno, non sar,  dunque, necessario fare tutte le linee, ma
solo chiamare questo nuovo comando! Facile, vero?
Le procedure  sono, a tutti  gli effetti,  dei programmi  per Logo e,
pertanto, devono rispettare tutte le regole di quest'ultimi: per, le
variabili in esse contenute sono indipendenti  e hanno valori diversi
da quelle del programma principale, e, inoltre, in esse possono anche
essere  presenti  label con  lo stesso  nome  di altre  del programma
principale.
Le procedure  vengono  salvate dal Logo su disco,  andando a formare,
cos,  un archivio richiamabile  in qualunque momento.  Una volta che
una procedura   stata definita,  questa non viene persa se si spenge
il computer!  Ma attenzione:  quando date a qualcuno un programma per
Logo, accertatevi di dargli anche le procedure necessarie.
Se una procedura  contiene  un errore  che ne impedisce  l'esecuzione
(vedi appendice B),  essa  non viene  eseguita,  ma nessun  messaggio
appare sullo schermo e il programma principale non si arresta.
E' anche possibile  chiamare una procedura  dall'interno  di un'altra
procedura, proprio come le bambole russe.
Ma analizziamo pi dettagliatamente il loro funzionamento.


2- SCRITTURA, MODIFICA e CANCELLAZIONE

Le procedure possono essere scritte solo dal modo diretto.  Per poter
scrivere  una procedura,  inviare il segno  di punto esclamativo  (!)
seguito  dal nome  della procedura.  Per esempio, il comando  `!ciao'
permette di scrivere la procedura di nome `ciao'. Se la procedura gi
esiste,  essa viene caricata per poter essere modificata,  altrimenti
viene  creata  nuova.  Sulla  finestra dati,  appare  l'editor per le
procedure;  usarlo   molto semplice,  ma bisogna  ricordare  qualche
particolarit.  Innanzi  tutto,  sappiate che  una procedura  pu, al
massimo,  essere  lunga  50 righe:  non  vi preoccupate,  sono sempre
sufficienti!  Premendo il tasto `Del', si cancella la riga che si sta
scrivendo;  premendo il tasto `Del'  in unione  con il tasto `Shift',
invece,  si cancella  tutta  la procedura;  per  uscire  dall'editor,
premere il tasto `Esc'. A questo punto il Logo provvede a memorizzare
la procedura scritta;  se essa  vuota, invece, viene  cancellata dal
disco.


3- LISTA
Per vedere quali procedure  sono disponibili, inviare,  solo dal modo
diretto, il simbolo di punto esclamativo  (!)  senza nulla dopo.  Uno
schermo viene aperto  con la lista  di tutte le procedure presenti su
disco. Premere un tasto qualunque per tornare al modo diretto.


4- ESECUZIONE
Per eseguire una procedura si deve digitare il suo nome preceduto dal
segno di asterisco (*).  In realt, si pu anche inserire il suo nome
semplicemente,  purch, per,  questo non possa  venir confuso con un
comando del Logo.  Per esempio,  la procedura di nome  `esempio', pu
essere eseguita sia inviando `*esempio', sia solo `esempio'. Per, la
procedura  di nome `prova',  deve  obbligatoriamente  essere eseguita
inviando `*prova',  altrimenti verr scritto sulla linea testo `ova',
essendo il comando scambiato con PR.
Un uso  particolare  pu essere  fatto facendo  seguire al nome della
procedura un altro simbolo di asterisco (*) e poi, ancora, un numero.
Infatti, le procedure  usano  valori  delle variabili  indipendenti e
diversi  dal  programma  principale e,  se questo   senza dubbio  un
merito,  potrebbe rivelarsi un problema  per trasmettere informazioni
alla procedura. In questo modo invece, il valore, chiamato parametro,
che segue l'asterisco  viene trasferito  nella procedura  ed inserito
nella variabile di sistema $0. Per esempio il comando `*triangolo*10'
o `traingolo*10'  esegue  la procedura  `triangolo' e permette di far
sapere a questa, per esempio,la lunghezza che deve avere il lato.





                      APPENDICE A: Codici Ascii

In questo appendice  ho inserito una ridotta tavola dei codici Ascii,
comodi  in unione con  il  comando  Aspettatasto  per sapere quale e'
stato premuto. In realta', dalla tavola completa, ho eliminato alcune
parti  che  non  sono utilizzabili  con il Logo,  lasciando,  invece,
quelle per voi adatte.
ATTENZIONE:  Non tutti i tasti  hanno un codice Ascii. I tasti F, gli
Shift,  gli Alt, il Control,  i Commodore, il Del e l'Help mancano di
un proprio codice: essi ritornano, dunque, come valore 0.
I numeri  del tastierino  numerico  (escluso  l'Amiga 600  che  ne e'
privo) hanno gli stessi codici Ascii di quelli sopra alle lettere.


Code Char     Code Char     Code Char     Code Char     Code Char
-----------   -----------   -----------   -----------   -----------
  8  Indietro   9  Tab       13  Return    27  Esc       28  Destra
 29  Sinistra  30  Alto      31  Basso     32  Spazio    33   !
 34   "        35   #        36   $        37   %        38   &
 39   '        40   (        41   )        42   *        43   +
 44   ,        45   -        46   .        47   /        48   0
 49   1        50   2        51   3        52   4        53   5
 54   6        55   7        56   8        57   9        58   :
 59   ;        60   <        61   =        62   >        63   ?
 64   @        65   A        66   B        67   C        68   D
 69   E        70   F        71   G        72   H        73   I
 74   J        75   K        76   L        77   M        78   N
 79   O        80   P        81   Q        82   R        83   S
 84   T        85   U        86   V        87   W        88   X
 89   Y        90   Z        91   [        92   \        93   ]
 94   ^        95   _        96   `        97   a        98   b
 99   c       100   d       101   e       102   f       103   g
104   h       105   i       106   j       107   k       108   l
109   m       110   n       111   o       112   p       113   q
114   r       115   s       116   t       117   u       118   v
119   w       120   x       121   y       122   z       123   {
124   |       125   }       126   ~


* Il codice 8  (Indietro)  si  riferisce  al tasto che si trova sopra
  quello di Return,  usato per cancellare il carattere immediatamente
  a sinistra.
* Il codice 9  (Tab) si riferisce al tasto  che si trova sopra quello
  Control, usato per inserire un numero di spazi prefissato.
* Il codice 13 (Return) si riferisce al tasto di Invio.
* Il codice 27 (Esc) si riferisce  al tasto in alto a sinistra con la
  scritta Esc.
* I codici 28 (Destra),  29 (Sinistra),  30 (Alto)  e  31 (Basso)  si
  riferiscono  alle  quattro  frecce  di  direzione  a  destra  della
  tastiera.
* Il codice 32 (Spazio) si riferisce alla barra spaziatrice.





                        APPENDICE B: Errori

Il Logo cerca di evitare i  messaggi di errore quanto  pi possibile,
corregendo, dove pu, i comandi  errati o non eseguendoli affatto. In
questo modo, si evitano noiose segnalazioni e si rende pi divertente
la programmazione.
Inserendo i comandi dal modo diretto NESSUN errore si pu verificare:
tutto viene controllato, corretto o, al limite, saltato. Cos se, per
esempio, in un comando  che prevede due numeri  ne viene inserito uno
solo,   il Logo provvede  automaticamente  ad  aggiungere il  secondo
(Muovi 30  diventa  Muovi 30,0).   Alcuni errori,  invece, si possono
verificare  all'inizio  dei programmi,  subito  dopo  il caricamento;
infatti, il Logo, appena letto il programma, provvede a controllarlo,
provando  a correggere ci che pu  e segnalando gli altri errori. E'
bene dire che uno qualsiasi  di questi messaggi  impedisce totalmente
al Logo l'esecuzione del programma che neanche inizia.

Si possono verificare 6 diversi errori:

1- Errore ne comando J(ump)
   J(ump) a una label inesistente

   Si verifiva  quando    presente  un comando J, ma non la relativa
   label. Nulla invece accade se   presente una label e nessun J che
   salta ad essa.

2- Sono presenti die label di nome uguale

   Si verifica  se due label hanno lo stesso nome: ci non  permesso
   perch il Logo non saprebbe a quale saltare.

3- Errore nei cicli Ciclo-Chiudi
   Numero di Ciclo diverso dal numero di Chiudi

   Ogni comando  Ciclo  deve  avere  un relativo  comando  Chiudi: si
   verifica,  dunque,  se ci non accade  e il numero  di Ciclo non 
   uguale a quello dei Chiudi.  Si pu anche verificare se il comando
   Chiudi precede il relativo Ciclo.

4- Errore nelle strutture Se-Stop
   Numero di Se diverso dal numero di Stop

   Ogni comando  Se deve avere un relativo Stop: si verifica, dunque,
   se ci  non accade e il numero di Se  non  uguale  a quello degli
   Stop. Le istruzioni Se...Allora  non influiscono su questo errore.
   Si pu anche verificare se il comando Stop precede il relativo Se.

5- Errore nel nome delle label
   Nome non valido

   Ci sono alcuni nome di label non validi e che, dunque, non possono
   essere usati. Essi sono: `:+1', `:@**END**' e `:->xxxx', dove xxxx
    una parola qualunque.  Non credo userete mai nomi del genere per
   le label, ma, in ogni caso, siete avvisati.

6- Errore nella chiamata di una procedura
   Procedura  inesistente

   Si verifica  se viene  chiamata una  procedura che non  esiste sul
   disco.  Controllate  meglio il  nome  e accertatevi  di non averla
   cancellata.





                   APPENDICE C: SettaPreferenze

Oltre al programma principale  (il Logo, ovviamente!),  ne  presente
anche un altro,  chiamato  SettaPreferenze:  come dice  il suo stesso
nome, serve  per ottimizzare l'uso del Logo e adattarlo alle esigenze
di ognuno.
Usando questo programma, vengono salvati su disco i parametri settati
in modo,  poi,  da essere  usati tutte  le volte  finch  non vengono
cambiati, sempre attraverso questo stesso programma.
SettaPreferenze  si presenta  su uno schermo  con due file di gadget,
alcuni a bottone, altri adattati per ricevere numeri e parole.
Analizziamoli in ordine,  partendo dalla colonna  di sinistra per poi
passare a quella destra, sempre procedendo dall'alto in basso.

Gadget: ICONE
Tipo  : A bottone
Testo : Serve  per determinare  se  i programmi  creati  con  il Logo
        devono o meno avere  una propria icona.  Nel caso che l'icona
        sia presente, sar possibile eseguire il programma anche solo
        facendo un doppio-click su di essa dal Workbench.
Note  : Il valore di default  disattivato.

Gadget: TARTARUGA LIMITATA SULLO SCHERMO
Tipo  : A bottone
Testo : Serve per determinare  se all'inizio la tartaruga deve o meno
        essere limitata sul folgio. Ovviamente, questo valore pu poi
        essere cambiato attraverso il comando Limita.
Note  : Il valore di default  attivato.

Gadget: TARTARUGA VISUALIZZATA
Tipo  : A bottone
Testo : Serve per determinare  se all'inizio la tartaruga deve o meno
        essere visibile sul foglio. Ovviamente, questo valore pu poi
        essere  cambiato  attraverso  i comandi  Nasconditartaruga  e
        Mostratartaruga.
Note  : Il valore di default  attivato.

Gadget: MOUSE VISUALIZZATO
Tipo  : A bottone
Testo : Serve  per determinare  se all'inizio  il puntatore del mouse
        deve o meno essere visibile sullo schermo. Ovviamente, questo
        valore pu, poi, essere cambiato con i comandi  Mostramouse e
        Nascondimouse.
Note  : Il valore di default  disattivato.

Gadget: POSSIBILITA' DI PARLARE
Tipo  : A bottone
Testo : Serve per determinare  se il Logo  pu o meno essere in grado
        di parlare.  Se questa funzione  attivata, ma non  presente
        il  narrator.device, il Logo non sar,  comunque, in grado di
        parlare. Ho inserito questa possibilit poich la capacit di
        parlare richiede  un tempo  di caricamento del Logo maggiore:
        pu, dunque,  tornare utile agli utenti che non dispongono di
        un hard-disk disattivare questa funzione.
Note  : Il valore di default  attivato.

Gadget: ANGOLO INIZIALE
Tipo  : Numero
Testo : Serve per determinare  l'angolo verso cui la tartaruga  all'
        inizio rivolta.
Note  : Il valore di default  0 (ovvero la tartaruga  rivolta verso
        l'alto).

Gadget: X COORD INIZIALE
Tipo  : Numero
Testo : Serve  per determinare  la distanza iniziale  della tartaruga
        dal bordo sinistro del foglio.
Note  : Il valore  di default   160  (questo punto  al centro dello
        schermo).

Gadget: Y COORD INIZIALE
Tipo  : Numero
Testo : Serve  per determinare  la distanza iniziale  della tartaruga
        dal bordo alto del foglio.
Note  : Il valore  di default   100  (questo punto  al centro dello
        schermo).

Gadget: COLORE
Tipo  : Numero
Testo : Serve  per determinare  quale penna  all'inizio  la tartaruga
        deve impugnare.
Note  : Il valore di default  2 (ovvero il colore bianco).

Gadget: EDITOR DA USARE
Tipo  : Stringa
Testo : Serve per scegliere l'editor da usare per scrivere programmi.
        Il Logo non ha (per mia scelta)  un suo proprio editor e cos
        ciascuno pu scegliere quello che preferisce. Se l'editor che
        voi scegliete non viene trovato sar usato quello di default.
Note  : Il valore di default   `c:ed' (questo  l'editor fornito con
        il Workbench e tutti lo dovreste avere).

Gadget: OPTIONI
Tipo  : Stringa
Testo : Alcuni editor richiedono, per funzionare correttamente, delle
        particolari opzioni e  queste possono  essere selezionate con
        questo  gadget.  Consultate bene  il manuale  dell'editor che
        volete utilizzare per trovare se ce ne sono e, eventualmente,
        quali  sono.  Per esempio: l' Ed  del Workbench  non richiede
        nessuna opzione,  mentre il Ced  vuole la stringa  `-keepio';
        altri necessitano la scritta `-sticky'.
Note  : Il valore di default  vuoto (ovvero senza opzioni).

Gadget: QUIT
Tipo  : A bottone
Testo : Serve per  uscire dal programma.  Un requester di conferma vi
        chieder se siete veramente sicuri.
Note  : ATTENZIONE:  Se uscite  senza aver salvato  la configurazione
        fatta, perderete tutto il lavoro.

Gadget: INFO...
Tipo  : A bottone
Testo : Visualizza delle informazioni sul programma:  molto semplici,
        ma simpatiche.  Dopo aver premuto questo gadget, un requester
        con  due bottoni  visualizzer le  informazioni;  premendo su
        quello  con  su scritto  `Continua'  vengono  mostrate  altre
        informazioni;  con  `Stop'  si ritorna  al programma  vero  e
        proprio.
Note  :

Gadget: SALVA
Tipo  : A bottone
Testo : Salva le opzioni  attuali su disco,  pronte per  essere usate
        dal Logo.
Note  : ATTENZIONE:  Tutti i valori  precedentemente  salvati vengono
        cancellati per far posto ai nuovi.

Gadget: DEFAULT
Tipo  : A bottone
Testo : Ripristina  tutti  i gadget  al  loro valore  di default;  la
        configurazione  che  viene  determinata  non  quella  da voi
        salvata in precedenza, ma quella da me ritenuta ottimale.
Note  :

Gadget: PROCEDURE
Tipo  : A bottone rotatorio
Testo : Premendo pi volte su questo gadget  vengono alternativamente
        visualizzate  le  scritte  `Disco'  e  `Memoria';  serve  per
        decidere  se le procedure  devono essere lette,  appunto, dal
        disco o dalla memoria.  In quest'ultimo caso, il Logo, quando
        viene  caricato,  copia  tutte  le procedure  dal disco  alla
        memoria,  cos che la loro lettura  pi veloce;  all'uscita,
        poi, dal Logo, le procedure vengono cancellate in modo da non
        occupare  la Ram dell'Amiga;  le eventuali  procedure scritte
        vengono  salvate sia  in memoria  che  su disco.  Se avete un
        hard-disk, consiglio di usare l'opzione `Disco',  ma se usate
        il Logo dal disk-drive,  conviene, allora, attivare l'opzione
        `Memoria':  risparmierete  molto tempo  nell'esecuzione delle
        procedure, rendendo, cos, pi veloce tutto il programma.
Note  : Il valore  di default   Disco.  L'suo delle procedure  resta
        comunque INALTERATO.
