********************************************************************* LOGO v1.3 by MICHELE BERIONNE Roma, 24 Gennaio 1996 ********************************************************************* INDICE: Introduzione Shareware?? Sì grazie!! Ringraziamenti Istallazione 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) Appendice D (Archivio) 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. La versione del Logo, senza il keyfile, è liberamente distribuibile purché da questa non si tragga un proprio guadagno. Questo manuale e tutti i programmi e gli esempi forniti in questo pacchetto (vedi Appendice D) devono essere sempre distribuiti con il Logo. Esorto tutti a contribuire a far conoscere e circolare il Logo. ATTENZIONE: L'autore NON è in alcun modo responsabile di eventuali danni o perdite di dati causate dal Logo. Non vi preoccupate per quanto si è 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 è: Michele_Berionne@amp.flashnet.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... ;-) Raffaele Frattarolo Il primo a trovare un bug, spero anche l'ultimo! John Kinsella Ottimo lavoro il tuo "finto" Workbench! 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! Il Logo è stato provato su: Amiga 1200 con Workbench 3.0 Amiga 500 con Workbench 1.3 Se lo usi con un altro computer, ti prego di farmi sapere se funziona correttamente così da poter aggiungere la tua configurazione a quelle già presenti nella lista soprastante. ISTALLAZIONE Il Logo non ha bisogno di nulla per funzionare correttamente. Attenzione: Il cassetto Logo-work deve essere nella stessa directory dove è posto il Logo; in caso contrario, esso verrà creato nuovo (ma, ovviamente, vuoto!). La versione del Logo da utilizzare dipende dal sistema operativo di cui la vostra macchian è dotata: utilizzare il Logo1.3 con gli Amiga forniti di sistema operativo 1.3 o inferiore; usare il Logo2.0+ con gli Amiga forniti di sistema operativo 2.0 o superiore. Queste due versioni sono praticamente identiche, con la sola differenza che la prima non ha il comando Workbench (vedi sotto). Ora siete pronti per avventurarvi nel Logo! ...che cosa aspettate a caricarlo? 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 bottone in basso a destra con un punto bianco al centro; 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 il bottone in basso a destra con un punto bianco nel suo centro 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 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 il tasto in basso a destra con un punto bianco al suo centro 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. Se non viene cambiato il cassetto dove si desidera registrare lo schermo, questo viene memorizzato in memoria (Ram:). 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 la versione attualmente usata del Logo. Chiudendo questa finestra (premendo il tasto sinistro del mouse con il puntatore sul quadratino in alto a sinistra), 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 Funziona solo nella versione del Logo per sistema operativo 2.0 o superiore; nell'altra non ha nessun effetto. 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 il bottone in basso a destra con un punto bianco al suo interno 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 ai programmi principali (le due versioni del 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 poter essere usati dal Logo tutte le volte, finché non vengono cambiati, sempre attraverso questo stesso programma. Gli inconvenienti delle versioni precedenti sono stati tutti risolti: ora questo programma funziona correttamente su ogni computer Amiga. SettaPreferenze si presenta su uno schermo con due file di gadget, alcuni a bottone, altri adattati per ricevere numeri o 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 mostrerà le informazioni; premendo su quello con 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 : Gruppo di bottoni Testo : Sotto questa scritta sono presenti due piccoli bottoni di cui uno solo è sempre attivo. Non si possono accendere entrambi allo stesso tempo: se si preme il tasto sinistro del mouse quando il puntatore è su quello spento, questo si attiverà causando la disattivazione dell'altro. Al bottone più in alto corrisponde la scritta `Disco'; all' altro `Memoria'. Se è attivo quest'ultimo, 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. Nell'altro caso, invece, il Logo accederà alle procedure direttamente dal disco dove sono memorizzate. Se avete un hard-disk, consiglio di usare l'opzione `Disco', ma se caricate il Logo da un disk-drive conviene allora attivare l'opzione `Memoria' che permette di risparmiare molto tempo nell'esecuzione delle procedure, rendendo, così, più veloce tutto il programma. Note : Il valore di default è Disco. L'suo delle procedure resta in entrambi i casi uguale e INALTERATO. APPENDICE D: Archivio Il presente archivio del Logo v1.3 è costituito dai seguenti files: Logo (dir) - Logo1.3 (Logo per sistema operativo 1.3 o inferiore) - Logo1.3.info (Icona del Logo1.3) - Logo2.0+ (Logo per sistema operativo 2.0 o superiore) - Logo2.0+.info (Icona per Logo2.0+) - SettaPreferenze (Programma per settaggio delle preferenze) - SettaPreferenze.info (Icona per SettaPreferenze) - docs (dir) - Logo_history.txt (Testo contenente l'evoluzione del Logo) - Logo_history.txt.info (Icona del Logo_history.txt) - Manuale_Logo.txt (Testo contenente il manuale del Logo) - Manuale_Logo.txt.info (Icona del Manuale_Logo.txt) - docs.info (Icona del cassetto docs) - Logo-work (dir) - cerchi_casuali.LOGO (esempio) - colour_box.LOGO (esempio) - concentrici.LOGO (esempio) - Infinite_lines.LOGO (esempio) - Joystick.LOGO (esempio) - opposti.LOGO (esempio) - quadrato.proc (procedura) - spiral.LOGO (esempio) - Stars.LOGO (esempio) - triangoli.LOGO (esempio) - tri_cerchi.LOGO (esempio) - Logo-work.info (Icona del cassetto Logo-work) Logo.info (Icona del cassetto Logo) Esso non può, in nessun modo, essere distribuito in modo parziale o alterato senza il consenso dell'autore.